﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-code loser-随笔分类-其它</title><link>http://www.blogjava.net/wenhl5656/category/31891.html</link><description>想起和老肖研究中断的日子，倍觉温馨</description><language>zh-cn</language><lastBuildDate>Thu, 24 Dec 2009 06:17:20 GMT</lastBuildDate><pubDate>Thu, 24 Dec 2009 06:17:20 GMT</pubDate><ttl>60</ttl><item><title>网络爬虫的一些功能要求整理（转）</title><link>http://www.blogjava.net/wenhl5656/archive/2009/06/04/280075.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Thu, 04 Jun 2009 13:07:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2009/06/04/280075.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/280075.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2009/06/04/280075.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/280075.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/280075.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 摘要：一，一个大容量的页面文件容器；二、一个高效的HTTP下载器；三、一个完善的URL提取器；四、一个便利的结构化数据提取器&nbsp;&nbsp;<a href='http://www.blogjava.net/wenhl5656/archive/2009/06/04/280075.html'>阅读全文</a><img src ="http://www.blogjava.net/wenhl5656/aggbug/280075.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2009-06-04 21:07 <a href="http://www.blogjava.net/wenhl5656/archive/2009/06/04/280075.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我的2008，我的未来</title><link>http://www.blogjava.net/wenhl5656/archive/2009/01/01/249492.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Thu, 01 Jan 2009 15:22:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2009/01/01/249492.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/249492.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2009/01/01/249492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/249492.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/249492.html</trackback:ping><description><![CDATA[2008，见证了太多太多。大雪纷飞，千里冰封。藏疆势僵，两川地震。激情奥运，全球危机。充满希望的一年，却在惴惴不安中度过。<br />
2008，经历离别。2008，迎来新环境。<br />
没有得到的，很多。失去的，很多。明白的，很多。很多很多。<br />
有些事已经做过了，但一直重复在做。<br />
有些事该做了，但一直未做。<br />
管不住自己。<br />
手很冷，心很烫，交接相下，还是手赢了，不写了。<br />
总之，我仍是个学生。令人羡慕的学生。让人瞧不起的学生。<br />
很多事看得清楚，想的明白。就是，勉强不来。<br />
<br />
<br />
期待。<br />
不是期待来年，时间不会带来改变。<br />
只有努力改变自己，才能改变时间，改变未来。<br />
<img src ="http://www.blogjava.net/wenhl5656/aggbug/249492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2009-01-01 23:22 <a href="http://www.blogjava.net/wenhl5656/archive/2009/01/01/249492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>python学习之旅 － python tutorial, divide into python </title><link>http://www.blogjava.net/wenhl5656/archive/2008/12/31/249378.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Wed, 31 Dec 2008 15:04:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/12/31/249378.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/249378.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/12/31/249378.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/249378.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/249378.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 至此2008年的最后一天，在java的blog上记录一下我学习python的点滴。分享python学习时，获得的帮助。&nbsp;&nbsp;<a href='http://www.blogjava.net/wenhl5656/archive/2008/12/31/249378.html'>阅读全文</a><img src ="http://www.blogjava.net/wenhl5656/aggbug/249378.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-12-31 23:04 <a href="http://www.blogjava.net/wenhl5656/archive/2008/12/31/249378.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在opensuse linux11。1上玩耍...</title><link>http://www.blogjava.net/wenhl5656/archive/2008/12/27/248695.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Sat, 27 Dec 2008 15:27:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/12/27/248695.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/248695.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/12/27/248695.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/248695.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/248695.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 从昨晚到现在一直都在摆弄open suse11.1，从安装到配置到使用...期间遇到无数问题和困难，但在强大的互联网和强大的Google面前，这些问题都得到了解决，让我着实在suse耍了一把。&nbsp;&nbsp;<a href='http://www.blogjava.net/wenhl5656/archive/2008/12/27/248695.html'>阅读全文</a><img src ="http://www.blogjava.net/wenhl5656/aggbug/248695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-12-27 23:27 <a href="http://www.blogjava.net/wenhl5656/archive/2008/12/27/248695.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>MFC中鼠标绘图的一些收获</title><link>http://www.blogjava.net/wenhl5656/archive/2008/10/03/232270.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Fri, 03 Oct 2008 15:38:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/10/03/232270.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/232270.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/10/03/232270.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/232270.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/232270.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天试学着在MFC中用鼠标绘图，虽然是简单的画一些直线，但也收获不小。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先对按下鼠标的点进行记录，因此在<span><strong>WM_LBUTTONDOWN</strong>消息添加代码：</span>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 9pt; color: blue; font-family: 新宋体">&nbsp;&nbsp;&nbsp;&nbsp; </p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CDrawView::OnLButtonDown(UINT&nbsp;nFlags,&nbsp;CPoint&nbsp;point)<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_57_122_Open_Image" onclick="this.style.display='none'; Codehighlighter1_57_122_Open_Text.style.display='none'; Codehighlighter1_57_122_Closed_Image.style.display='inline'; Codehighlighter1_57_122_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_57_122_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_57_122_Closed_Text.style.display='none'; Codehighlighter1_57_122_Open_Image.style.display='inline'; Codehighlighter1_57_122_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_57_122_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_57_122_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;m_ptOrigin</span><span style="color: #000000">=</span><span style="color: #000000">point;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SetCapture();<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CView::OnLButtonDown(nFlags,&nbsp;point);<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left"></span></p>
<p style="margin: 0cm 0cm 0pt; text-align: left" align="left">&nbsp;&nbsp;&nbsp;&nbsp;然后，在鼠标弹起时，响应&nbsp;<span><strong>WM_LBUTTONUP</strong>消息，因此添加</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CDrawView::OnLButtonUp(UINT&nbsp;nFlags,&nbsp;CPoint&nbsp;point)<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_55_152_Open_Image" onclick="this.style.display='none'; Codehighlighter1_55_152_Open_Text.style.display='none'; Codehighlighter1_55_152_Closed_Image.style.display='inline'; Codehighlighter1_55_152_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_55_152_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_55_152_Closed_Text.style.display='none'; Codehighlighter1_55_152_Open_Image.style.display='inline'; Codehighlighter1_55_152_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_55_152_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_55_152_Open_Text"><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (GetCapture() != this)&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;return; <br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CDC&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">MoveTo(m_ptOrigin);<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">LineTo(point);<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(pDC);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReleaseCapture();<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">8</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /></span></div>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left">&nbsp;&nbsp;&nbsp;&nbsp; 这样便在客户区绘出了一条直线。但是有个缺陷，就是在鼠标移动的过程中，屏幕上没有任何显示。而我们希望在按下鼠标后，随着鼠标拖动，可以看到一条直线随之移动，在鼠标弹起时，这条直线也确定下来。因此，试着添加<span>WM_MOUSEMOVE消息响应函数<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">1</span><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top" /><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CDrawView::OnMouseMove(UNIT&nbsp;nFlags,&nbsp;CPoint&nbsp;point)<br />
</span><span style="color: #008080">2</span><span style="color: #000000"><img id="Codehighlighter1_55_152_Open_Image" onclick="this.style.display='none'; Codehighlighter1_55_152_Open_Text.style.display='none'; Codehighlighter1_55_152_Closed_Image.style.display='inline'; Codehighlighter1_55_152_Closed_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_55_152_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_55_152_Closed_Text.style.display='none'; Codehighlighter1_55_152_Open_Image.style.display='inline'; Codehighlighter1_55_152_Open_Text.style.display='inline';" alt="" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top" /></span><span id="Codehighlighter1_55_152_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_55_152_Open_Text"><span style="color: #000000">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (GetCapture() != this)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return; <br />
</span><span style="color: #008080">3</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;CDC&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">4</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">MoveTo(m_ptPrev);&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">5</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">LineTo(point);<br />
</span><span style="color: #008080">6</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(pDC);<br />
</span><span style="color: #008080">7</span><span style="color: #000000"><img alt="" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span></span></div>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 添加之后，在鼠标移动时，确实有直线绘出，但更大的问题出现了，只见屏幕是都是直线。为解决此问题，google良久，终于找到一个解决办法——在鼠标移动时，用异或笔模式绘图，即以与屏幕相反的颜色绘图(Pixel is the inverse of the screen color——MSDN)。具体做法是：记录鼠标移动的上一个点坐标，在鼠标移动时，设置异或绘图模式，绘制原来的直线，再绘制新直线。具体代码如下：<br />
</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">在CDrawView中定义：<br />
</span><span style="color: #008080">&nbsp;2</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;CPoint&nbsp;&nbsp;&nbsp;&nbsp;m_ptPrev;<br />
</span><span style="color: #008080">&nbsp;3</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;CPoint&nbsp;&nbsp;&nbsp;&nbsp;m_ptOld;</span><span style="color: #008000"><br />
</span><span style="color: #008080">&nbsp;4</span><span style="color: #008000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000"><br />
</span><span style="color: #008080">&nbsp;5</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CDrawView::OnLButtonDown(UINT&nbsp;nFlags,&nbsp;CPoint&nbsp;point)&nbsp;<br />
</span><span style="color: #008080">&nbsp;6</span><span style="color: #000000"><img id="Codehighlighter1_121_215_Open_Image" onclick="this.style.display='none'; Codehighlighter1_121_215_Open_Text.style.display='none'; Codehighlighter1_121_215_Closed_Image.style.display='inline'; Codehighlighter1_121_215_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_121_215_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_121_215_Closed_Text.style.display='none'; Codehighlighter1_121_215_Open_Image.style.display='inline'; Codehighlighter1_121_215_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_121_215_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_121_215_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">&nbsp;7</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;m_ptPrev&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;point;<br />
</span><span style="color: #008080">&nbsp;8</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;m_ptOld&nbsp;&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;point;<br />
</span><span style="color: #008080">&nbsp;9</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;SetCapture();&nbsp;<br />
</span><span style="color: #008080">10</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CView::OnLButtonDown(nFlags,&nbsp;point);<br />
</span><span style="color: #008080">11</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">12</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">13</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CDrawView::OnLButtonUp(UINT&nbsp;nFlags,&nbsp;CPoint&nbsp;point)&nbsp;<br />
</span><span style="color: #008080">14</span><span style="color: #000000"><img id="Codehighlighter1_274_416_Open_Image" onclick="this.style.display='none'; Codehighlighter1_274_416_Open_Text.style.display='none'; Codehighlighter1_274_416_Closed_Image.style.display='inline'; Codehighlighter1_274_416_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_274_416_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_274_416_Closed_Text.style.display='none'; Codehighlighter1_274_416_Open_Image.style.display='inline'; Codehighlighter1_274_416_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_274_416_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_274_416_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">15</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(GetCapture()&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">)<br />
</span><span style="color: #008080">16</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">17</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CDC&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">18</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">MoveTo(m_ptPrev);&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">19</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">LineTo(point);<br />
</span><span style="color: #008080">20</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(pDC);<br />
</span><span style="color: #008080">21</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ReleaseCapture();<br />
</span><span style="color: #008080">22</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span><span style="color: #000000"><br />
</span><span style="color: #008080">23</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">24</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;CDrawView::OnMouseMove(UINT&nbsp;nFlags,&nbsp;CPoint&nbsp;point)&nbsp;<br />
</span><span style="color: #008080">25</span><span style="color: #000000"><img id="Codehighlighter1_475_754_Open_Image" onclick="this.style.display='none'; Codehighlighter1_475_754_Open_Text.style.display='none'; Codehighlighter1_475_754_Closed_Image.style.display='inline'; Codehighlighter1_475_754_Closed_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif" align="top"  alt="" /><img id="Codehighlighter1_475_754_Closed_Image" style="display: none" onclick="this.style.display='none'; Codehighlighter1_475_754_Closed_Text.style.display='none'; Codehighlighter1_475_754_Open_Image.style.display='inline'; Codehighlighter1_475_754_Open_Text.style.display='inline';" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif" align="top"  alt="" /></span><span id="Codehighlighter1_475_754_Closed_Text" style="border-right: #808080 1px solid; border-top: #808080 1px solid; display: none; border-left: #808080 1px solid; border-bottom: #808080 1px solid; background-color: #ffffff"><img src="http://www.blogjava.net/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_475_754_Open_Text"><span style="color: #000000">{<br />
</span><span style="color: #008080">26</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(GetCapture()&nbsp;</span><span style="color: #000000">!=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">this</span><span style="color: #000000">)<br />
</span><span style="color: #008080">27</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">;&nbsp;<br />
</span><span style="color: #008080">28</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;oldMode;<br />
</span><span style="color: #008080">29</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;CDC&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">pDC</span><span style="color: #000000">=</span><span style="color: #000000">GetDC();<br />
</span><span style="color: #008080">30</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;oldMode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">GetROP2();<br />
</span><span style="color: #008080">31</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">SetROP2(R2_NOT);&nbsp;&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">32</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">MoveTo(m_ptPrev);<br />
</span><span style="color: #008080">33</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">LineTo(m_ptOld);<br />
</span><span style="color: #008080">34</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" /><br />
</span><span style="color: #008080">35</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">MoveTo(m_ptPrev);<br />
</span><span style="color: #008080">36</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">LineTo(point);<br />
</span><span style="color: #008080">37</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;pDC</span><span style="color: #000000">-&gt;</span><span style="color: #000000">SetROP2(oldMode);&nbsp;&nbsp;&nbsp;<br />
</span><span style="color: #008080">38</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;m_ptOld&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;point;<br />
</span><span style="color: #008080">39</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" align="top"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ReleaseDC(pDC);<br />
</span><span style="color: #008080">40</span><span style="color: #000000"><img src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" align="top"  alt="" />}</span></span></div>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none" align="left">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这样，绘制直线的效果就和windows自带的绘图程序效果差不多了。<br />
</span>&nbsp;</p>
</span>
<img src ="http://www.blogjava.net/wenhl5656/aggbug/232270.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-10-03 23:38 <a href="http://www.blogjava.net/wenhl5656/archive/2008/10/03/232270.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>BatchImageFetch</title><link>http://www.blogjava.net/wenhl5656/archive/2008/09/23/230697.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Tue, 23 Sep 2008 08:14:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/09/23/230697.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/230697.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/09/23/230697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/230697.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/230697.html</trackback:ping><description><![CDATA[<a href="/Files/wenhl5656/BatchImageFetch.rar"><br />
批量下载图片<br />
<br />
/Files/wenhl5656/BatchImageFetch.rar</a>
<img src ="http://www.blogjava.net/wenhl5656/aggbug/230697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-09-23 16:14 <a href="http://www.blogjava.net/wenhl5656/archive/2008/09/23/230697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>facedetect心得</title><link>http://www.blogjava.net/wenhl5656/archive/2008/09/10/228216.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Wed, 10 Sep 2008 13:23:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/09/10/228216.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/228216.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/09/10/228216.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/228216.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/228216.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这两天写了一些读取jpg和bmp文件的代码。调试的非常痛苦。不过也学到这两种图片格式的许多知识。而且发现自己在做完一个程序之后，总喜欢话时间写一点批处理文件来测试和运行程序。因此现在对bat文件也熟悉了不少，同时还解决了许多难题。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在写这些代码时，参考了网上很多例子。但程序要在嵌入式系统上运行，因此可用的库就受到很大限制，很多功能都需要自己编码实现，比如jpg的解码，文件的读入和写出。从中我学到了如何将jpg解码成24位的bmp图，如何将24位的bmp转换为灰度图，也学到了bmp图数据布局是从底左方向开始的。一开始没有发现这一点，导致保存的图片全是颠倒的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 另外，lineBytes或widthStep(openCV)这个参数很重要，是指每一行数据的字节数。刚开始没有处理好，导致保存的图片是歪的。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有其他的，比如Gray&nbsp; = (BYTE)(Red*0.299+Green*0.587+(Blue&nbsp; + 0.5)*0.114); 这是真彩图转换为灰度图的一个公式，效果挺好的，在网上查了很久才找到(没学图像处理就是亏啊)。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 人脸检测的算法是基于AdaBoost的，不过检测大图片稍稍有些慢，还需要试试优化一下。而且代码修改过后，检测结果有点问题，很多像人脸的景物也会被误认为人脸了 :-(。<br />
 <img src ="http://www.blogjava.net/wenhl5656/aggbug/228216.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-09-10 21:23 <a href="http://www.blogjava.net/wenhl5656/archive/2008/09/10/228216.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Google牛人集</title><link>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205791.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Wed, 04 Jun 2008 06:05:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205791.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/205791.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205791.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/205791.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/205791.html</trackback:ping><description><![CDATA[1 Vinton Cerf ：号称互联网之父，TCIP/IP协议和互联网架构的合作设计者。他05年10月3日开始正式为google工作，职位为&#8220;首席互联网传布官&#8221;。<br />
<br />
2 Joshua Bloch ：号称java教父，《Effective Java》的作者，JSR175标准的leader，J2SE 1.5的主要开发人员之一。<br />
<br />
3 Guido Van Rossum： Python之父。Google把python用的炉火纯青，有了python之父的加盟，肯定如虎添翼了。<br />
<br />
4 Andrew Morton： linux的二号人物。其在google的工作仍是继续维护linux2.6内核<br />
<br />
5 Mark Lucovsky： Windows核心设计师。不晓得碰到了Morton会不会吵起来（-：<br />
<br />
6 Bram Moolenaar：Vim的作者<br />
<br />
7 Darin Fisher ：Mozilla项目主力开发者<br />
<br />
8 Sean Egan： Gaim开发团队的leader<br />
<br />
9 Greg Stein： Apache项目主要开发者，Apache基金会主席<br />
<br />
10 Udi Manber： Amazon的A9搜索团队总监<br />
<br />
11 Rob Pike，Plan 9 OS主力开发者<br />
<br />
12 Adam Bosworth： BEA的首席架构师<br />
<br />
13 Larry Brilliant： 网络先驱大慈善家，负责google.org<br />
<br />
14 Andy Hertzfeld：曾经是Macintosh研发团队核心成员<br />
<br />
15 Louis Monier：Internet搜索的发明者，eBay的前开发总监<br />
<br />
16 Adndrew W Moore ：卡内基美隆大学资讯与机器人工程学的教授，他将负责Google在匹兹堡新创立的实验室<br />
<br />
17 Alan Davidson：Centre for Democracy &amp; Technology的协理，他负责处理处理google与美国政府的关系<br />
<br />
18 Ben Goodger：Firefox的主要设计者<br />
<br />
Google高层管理团队<br />
<br />
Eric Schmidt 博士，董事长兼首席执行官 <br />
在就职于 Novell 公司之前，Eric 曾任 Sun Microsystems, Inc.的首席技术官和公司行政主管。在此期间，他负责开发了 Sun 独立于平台的编程技术 Java，并确立了 Sun 的互联网软件战略。在 1983 年加入 Sun 之前，Eric 是施乐帕洛阿图研究中心 (Xerox Palo Alto Research Center, PARC) 计算机科学实验室的研究员，并曾在贝尔实验室和 Zilog 任职。Eric 在普林斯顿大学获电气工程专业的理学学士学位，并在加州大学伯克莱分校获计算机专业硕士和博士学位。2006 年，Eric 因推动全球最成功的互联网搜索引擎公司的战略发展而获得认可，入选国家工程学院。 <br />
<br />
Larry Page，创始人兼产品总裁 <br />
Sergey Brin，创始人兼技术总裁 <br />
Shona Brown，业务运营高级副总裁 <br />
W. M. Coughran, Jr.，工程事务副总裁 <br />
在 20 余年的计算机职业生涯中，Bill 曾从事过网络系统内置软件、安全系统产品以及计算机科学和工程等方面的工作。在加入 Google 之前， Bill 在硅谷创建了 Entrisphere 公司，并担任首席执行官和其他一些行政职务。此前，他是贝尔实验室成员，是计算科学研究中心 (Computing Sciences Research Center) 的领导人，开发了 C、C++、Unix、Plan 9 以及 Inferno。他在计算机科学和分布式系统方面，做出了卓越贡献。<br />
<br />
David C. Drummond，公司发展事务高级副总裁 <br />
Alan Eustace，工程与研究高级副总裁 <br />
Alan Eustace 任 Google 公司工程部副总裁，全面负责公司产品研究和发展事务。Alan 于 2002 年夏加入 Google 公司。此前，他在 Digital/Compaq/HP 的西方研究实验室 (Western Research Laboratory, WRL) 工作了15年，进行了多种芯片设计和结构项目的研究， 包括 MicroTitan Floating Point 单元、BIPS &#8211;－ 当时速度最快的微处理器。Alan 还与 Amitabh Srivastava 一起从事 ATOM 方面的工作，即二进制编码仪器系统，为多种程序分析以及计算机结构分析工具奠定了基础。这些工具对于 EV5、 EV6和 EV7 芯片设计来说，具有极其深远的影响。1999 年，Alan 升任西方研究实验室 (Western Research Laboratory, WRL) 董事。WRL 积极进行袖珍式计算机，芯片多元化处理器，功率和能量管理，互联网性能以及频率和电压缩放比例等项目的研究。<br />
<br />
Urs H&#246;lzle，运营高级副总裁兼 Google Fellow <br />
作为动态编译（也称为&#8220;即时编译&#8221;）的先导之一，Urs 发明了今天大多数先进 Java 编译器仍在使用的基础技术。在加入 Google 前，Urs 是 Animorphic Systems 的创始人之一，该公司开发了 Smalltalk 和 Java 的编译器。Sun Microsystems 于 1997 年收购 Animorphic Systems 后，他协助开发了 Javasoft 的高性能 Hotspot Java 编译器。<br />
<br />
Jeff Huber，工程事务副总裁 <br />
加入 Google 之前，Jeff 是 eBay 公司的结构与系统开发事务副总裁。在此期间，他成功完成了产品搜索基础结构的开发和平台 API 程序的扩展。就职于 eBay 公司之前，Jeff 是 Excite@Home 公司的高级工程副总裁，主管为最大的宽带服务提供商开发消费者产品以及基础设施建设。<br />
<br />
Omid Kordestani，全球销售及业务拓展高级副总裁 <br />
George Reyes，高级副总裁兼首席财务官 <br />
Jonathan Rosenberg，产品管理事务高级副总裁 <br />
Elliot Schrage，全球通联及公共事务副总裁 <br />
<br />
Google 管理团队<br />
<br />
Tim Armstrong, 广告销售事务副总裁 <br />
Nikesh Arora，欧洲运营副总裁。 <br />
Sukhinder Singh Cassidy，亚太和拉丁美洲地区运营副总裁 <br />
Vinton G. Cerf，副总裁兼首席互联网顾问 <br />
Vinton G. Cerf 是 Google 的副总裁兼首席互联网顾问他负责为公司在互联网及其他平台上确定新的可行技术和应用程序。<br />
<br />
作为闻名遐迩的&#8220;互联网之父&#8221;，Vint 和 Robert Kahn 合作设计了 TCP/IP 协议及互联网的基础体系结构。为了表示对其工作的认可，克林顿总统于 1997 年向他们授予美国国家科技奖章。2005 年，Vint 和 Bob 荣获美国非军人最高荣誉勋章 — 总统自由勋章。这证明，他们在用于互联网内数据传输的软件代码方面的工作已将他们推上&#8220;改变了全球商务、通信和娱乐状况的数字革命的最前沿&#8221;。<br />
<br />
从 1994 年到 2005 年，Vint 一直在 MCI 担任高级副总裁；此前，他担任美国国家研究推进机构 (CNRI, Corporation for National Research Initiatives) 的副总裁；在 1982 年至 1986 年间，他担任 MCI 副总裁；从 1976 年到 1982 年，在任职美国国防部高级研究项目机构 (DARPA, U.S. Department of Defense's Advanced Research Projects Agency) 期间，Vint 领导了互联网及与互联网相关的数据包技术和安全技术的开发工作，在其中发挥了关键作用。<br />
<br />
从 2000 年开始，Vint 担任了互联网名称与数字地址分配机构 (ICANN, Internet Corporation for Assigned Names and Numbers) 董事长，并于 1998 年成为喷气推进技术实验室 (Jet Propulsion Laboratory) 的访问学者。1992 年至 1995 年，作为机构的创始人，他担任互联网协会 (ISOC, Internet Society) 总裁，并在 2000 年之前一直任 ISOC 理事会成员。Vint 同时也是 IEEE、ACM、AAAS、美国文理科学院 (American Academy of Arts and Sciences)、国际工程联合会 (International Engineering Consortium)、美国计算机历史博物馆 (Computer History Museum) 和美国国家工程院 (National Academy of Engineering) 成员。<br />
<br />
<br />
Vint 获得过无数同互联网工作相关的奖项和荣誉，包括马可尼奖 (Marconi Fellowship)、美国国家工程院颁发的 Charles Stark Draper 奖、科学技术 Prince of Asturias 奖、Alexander Graham Bell Association for the Deaf 颁发的 Alexander Graham Bell 奖、美国计算机机械协会 (Association for Computer Machinery) 颁发的图灵奖 (A.M. Turing Award)、国际电信联盟 (International Telecommunications Union) 银奖和 IEEE Alexander Graham Bell 奖章等等。<br />
<br />
Vint 拥有美国加州大学洛杉矶分校 (UCLA) 计算机科学博士学位及十余个名誉学位。<br />
<br />
Salar Kamangar，产品管理副总裁 <br />
Marissa Mayer，搜索产品与用户体验副总裁 <br />
Norio Murakami，Google 日本副总裁兼总经理 <br />
Miriam Rivera，副总裁兼代理总法律顾问 <br />
Sheryl Sandberg，全球在线销售和运营副总裁 <br />
Susan Wojcicki，产品管理副总裁 <br />
董事会<br />
<br />
Eric Schmidt 博士，Google Inc. <br />
Sergey Brin，Google Inc. <br />
Larry Page，Google Inc. <br />
John Doerr，Kleiner Perkins Caufield &amp; Byers 公司 <br />
Michael Moritz，Sequoia Capital 公司 <br />
Ram Shriram，Sherpalo 公司 <br />
John Hennessy，斯坦福大学 <br />
Arthur Levinson，Genentech <br />
Paul Otellini，Intel <br />
Shirley M. Tilghman，普林斯顿大学 <br />
Ann Mather <br />
<br />
王怀南&nbsp;&nbsp;Google中文名谷歌创造人&nbsp;&nbsp;亚太市场总监&nbsp;&nbsp;已离职<br />
<img src ="http://www.blogjava.net/wenhl5656/aggbug/205791.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-06-04 14:05 <a href="http://www.blogjava.net/wenhl5656/archive/2008/06/04/205791.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我需要精通掌握的软件技术</title><link>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205783.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Wed, 04 Jun 2008 05:58:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205783.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/205783.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205783.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/205783.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/205783.html</trackback:ping><description><![CDATA[<span style="color: red"><strong>1. XML</strong></span><br />
<br />
　　首先，你要了解XML。我不是说仅仅是XML规格本身，还包括一系列相关的基于XML的语言：最重要的是 XHTML、XSLT、XSL、DTDs、XML Schema (XSD)、XPath、XQuery和SOAP。那些在过去5年内从未碰过键盘的人，可能不知道XML为何物。XML是一种文本文件，使用与HTML类似的标记。XML能定义一个树状结构，并能描述所含的数据。<br />
<br />
　　XML最好的一点是既能存结构化数据也能存非结构化数据。它既能存贮和描述&#8220;规格的&#8221;(regular)表格数据，也能容纳和描述&#8220;粗糙的&#8221;(ragged)文件数据。<br />
<br />
　　XHTML是现今写HTML的首选方法。因为它是形式完好（well formed）的XML，比起古老的、通常是畸形（malformed）的HTML文件，XHTML格式的文件更容易处理。<br />
<br />
　　XSLT和XSL是用于把XML文件转成其它格式的语言。可转换的格式包括：文本文件、PDF文件、HTML、以逗号为分隔符的文件，或其它XML文件。 DTD和XML Schema描述XML文件所能包含的内容的类型，并让你&#8220;验证&#8221;XML文件内容的合理性，而不用写特殊代码以确保内容符合规则要求。<br />
<br />
　　XPath和XQuery是用于从XML文件中抽取单个项目或一组项目的查询语言。XQuery扩展了XPath，因而更重要。XQuery与XML的关系正像SQL与关系数据库的关系。<br />
<br />
　　SOAP是Web服务之间的一个标准通讯协议。尽管你不需要对SOAP标准一清二楚，你应该熟悉一般的schema和它的工作原理，以便能应用这门技术。<br />
<br />
　　2. Web服务<br />
<br />
　　Web服务是XML流行后的一个直接产物。因为你能用XML描述数据和物件，因为你能用schema确保XML文件内容的合理性，因为XML是基于文本的规范，XML为跨平台通讯标准提供了一个极其方便的基本格式。如果你还从来没碰到Web服务，你可能很快就会碰到，在未来5年内，你几乎肯定会碰到。熟悉Web服务十分重要，因为它是目前所有跨不同机器、不同语言、不同平台和不同地点的通讯协议中最简单的一个。不管你需要与否，Web服务是迈向互用性的重要一步。<br />
<br />
　　XML工作组主席John Bosak曾说XML&#8220;给Java一些事做&#8221;。实际上，Web服务让所有语言都有了一些事做。Web服务让在大型机上运行的COBOL应用软件能调用在手持设备上运行的Java应用程序、能让Java applet与.NET服务器交谈、能让微机软件与Web服务器无缝连接，并提供了一个相对容易的方法，让企业不光能向外界提供数据，还能提供功能，而且是一种与语言、平台和位置都独立的方法。<br />
<br />
　3. 面向对象的编程<br />
<br />
　　很多程序员仍认为OOP是象牙塔里的技术。但如果你想一下是什么语言在过去的10年里占主导地位，你就会理解OOP不是象牙塔里的技术。OOP从Smalltalk开始，传到C++和Pascal (Delphi)。Java使OOP大踏步地迈向主流，几年后的VB.NET和C#则完全确立了OOP的优势地位。尽管这些语言中的多数并不要求你必须会 OOP，但我觉得如果你不了解OOP的基本概念也不知道如何应用这些概念，你能找到的编程工作将越来越少。<br />
<br />
　　4. <strong style="color: red">Java</strong>、C++、C#和VB.NET<br />
<br />
　　我把这些语言列在一起，并不是建议你成为每一种语言的专家。我的理由是：学习编程最有效的方法之一是看代码，而你能看到的大量的代码很可能不是用你所喜爱的语言编写的。<br />
<br />
　　在过去几年，各语言的能力越来越接近。现在，你可以用VB.NET写Windows服务、Web应用程序或命令行程序。即使你只使用一种语言，你也应该学一些其它语言，以便能看懂那些样例，并将其翻译到你所用的语言。这4种语言是基本核心，还有其它一些满足不同需要、颇具用途的语言，如FORTRAN、 COBOL、APL、ADA、Perl和Lisp。<br />
<br />
　　5. JavaScript<br />
<br />
　　尽管名字有些相像，但Java 与JavaScript并无关联。为什么一个脚本语言会如此重要呢？因为所有主流浏览器都用JavaScript。如果你需要写Web应用程序，你就有足够的理由学JavaScript。JavaScript可以用作ASP或ASP.NET的服务器语言，也可以当做用于扩展XSLT的功能语言 (functional language)。JavaScript是Mozilla/Netscape中用于激活基于XUL的程序接口的首选语言。JavaScript的一个变种ActionScript是Flash MX的编程语言。将来，JavaScript很可能成为新设备的编程语言，以及大型应用软件中的宏语言。<br />
<br />
　　与JavaScript相对照的是VBScript。尽管Microsoft的软件对VBScript有良好的支持，但VBScript在未来的开发工作中很可能是一个糟糕的选择。就是Microsoft也倾向于用JavaScript（或Microsoft自己的变种：JScript）写客户端程序。在选择脚本语言时，请选择JavaScript。<br />
<br />
　　<strong><span style="color: red"><strong>6. 正则表达式（Regular Expressions）</strong></span><br />
</strong><br />
　　查寻关系数据库可以用SQL，查询XML可以用XPath和XQuery，查询纯文本文件则可以用正则表达式。例如，你可以用一个命令从一个HTML文件中查找并删除所有的注释。各种开发语言内置的一些简单的文本查询功能，如"IndexOf"函数或VB中经典的"InStr"函数或"Like"操作符，根本不能与正则表达式相提并论。现在，各种主要的开发语言都提供使用正则表达式的途径。尽管正则表达式本身既难懂更难读（是回到早期计算机时代的一种倒退），但它却是一个功能强大而且未被充分利用的工具。<br />
<br />
<strong>　<span style="color: red">　7. 设计模式<br />
</span></strong><br />
　　正像OOP通过把对象分类以简化编程一样，设计模式对一些普遍的对象之间的交互进行分类，并赋予一个恰当的名称。OOP用得越多，设计模式就越有用。一些最常用的模式的名称已经变成了软件开发领域共同使用的术语，所以要跟上信息的主流，你就要对设计模式有相当的理解。<br />
<br />
　　<br />
　　9. Linux/Windows<br />
<br />
　　熟悉Linux。在一台旧机器或新机器上安装Linux。下载图形用户界面，在其基础上写一些程序。安装Apache，写一个Web应用程序。这个世界不再仅仅是属于Windows，这种趋势可能还会持续下去。如果你是一名中坚的Linux开发人员，那就抛弃你对Windows的憎恶，看看你能否做一些 Windows编程。Windows能继续在台式电脑上称王是有其原因的，这不仅仅是因为Microsoft控制了这个市场。<br />
<br />
　　没人知道你们公司会在什么时候决定从Linux转向Windows（或从Windows转向Linux），或者你想跳到一家用另一种平台的公司，或者你想出了开发一个杀手软件的好主意，所以你要争取拥有在不同操作系统上的编程经验。<br />
<br />
　　<strong>10. SQL<br />
</strong><br />
　　尽管SQL不像本文讨论的其它技术那样新，而且SQL的重要性在未来10年内很可能降低，但它仍然是一项基本技能。很多开发人员还没有掌握这门技术，或掌握得不够，不足以有效率地使用它。不要依赖具有图形用户界面的SQL生成器替你做事情，你要自己手工地写查询命令，直到你熟悉基本的SQL语法为止。了解SQL不仅能帮助你日后学习XQuery，你还有可能马上发现能简化或改进目前项目的方法。<br />
<br />
　　培养好奇心<br />
　　最后，（对，我意识到这是第11门技术），好奇心是你最重要的技能。要去尝试各种东西。新语言或新技术对你当前或将来的工作可能有用，也可能没用，但并不是你所学的每一件事都是为了工作。不要害怕失败，万事开头难，学新技术也是如此。大多数失败是因为人们希望太快地学到太多的东西。要对每一点进步感到满意，不要让时间（或缺乏时间）妨碍你。相反，你要安排时间留心、研究、试验新的开发技术和工具。<br />
<br />
　　你可能永远也没有必要成为这些技术的专家，而且我的选择可能根本不适合你的特殊情况，但通过培养好奇心，你将会发现你应该了解的东西。 <br />
 <img src ="http://www.blogjava.net/wenhl5656/aggbug/205783.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-06-04 13:58 <a href="http://www.blogjava.net/wenhl5656/archive/2008/06/04/205783.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle埃里森的演讲——历史上最牛的演讲（ZZ）</title><link>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205781.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Wed, 04 Jun 2008 05:54:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205781.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/205781.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205781.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/205781.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/205781.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 这是甲骨文公司总裁Larry Ellison (Oracle CEO) 在耶鲁大学Yale University 给2000级毕业生the graduating class of 2000所作的演讲全文，由于他句句惊人，很冷，最后被耶鲁大学保安请下讲台。该演讲号称历史最牛之演讲，但是否classic则不得而知，美国出版的一本大学经典演讲集未将其收入其中。 <br><br>历史上最牛的演讲———甲骨文总裁拉里埃里森在耶鲁大学的演讲<br><br>耶鲁的毕业生们，我很抱歉---如果你们不喜欢这样的开场白。我想请你们为我做一件 事。请你---好好看一看周围，看一看站在你左边的同学，看一看站在你右边的同学。 请你设想这样的情况：从现在起5年之后，10年之后，或30年之后，今天站在你左边的 这个人会是一个失败者；右边的这个人，同样，也是个失败者。而你，站在中间的家伙， 你以为会怎样？ 一样是失败者。失败的经历。失败的优等生。&nbsp;&nbsp;<a href='http://www.blogjava.net/wenhl5656/archive/2008/06/04/205781.html'>阅读全文</a><img src ="http://www.blogjava.net/wenhl5656/aggbug/205781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-06-04 13:54 <a href="http://www.blogjava.net/wenhl5656/archive/2008/06/04/205781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>传奇编程高手(zz转)</title><link>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205780.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Wed, 04 Jun 2008 05:52:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205780.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/205780.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/06/04/205780.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/205780.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/205780.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Bill Joy MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder, and why?”。我觉得挺有意思的，也来凑个热闹。排名不分先后。 <br><br>传奇编程高手：<br>Bill Joy<br>John Carmack <br>David Cutler <br>Donald E. Knuth <br>Ken Thompson <br>Rob Pike <br>Dennis M. Ritchie <br>Edsger Wybe Dijkstra <br>Anders Hejlsberg <br>&nbsp;&nbsp;<a href='http://www.blogjava.net/wenhl5656/archive/2008/06/04/205780.html'>阅读全文</a><img src ="http://www.blogjava.net/wenhl5656/aggbug/205780.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-06-04 13:52 <a href="http://www.blogjava.net/wenhl5656/archive/2008/06/04/205780.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Windows XP的启动过程</title><link>http://www.blogjava.net/wenhl5656/archive/2008/06/01/205198.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Sun, 01 Jun 2008 12:20:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/06/01/205198.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/205198.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/06/01/205198.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/205198.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/205198.html</trackback:ping><description><![CDATA[<p>从按下计算机开关启动计算机，到登入到桌面完成启动，一共经过了以下几个阶段：</p>
<p>　　1. 预引导（Pre-Boot）阶段；<br />
　　2. 引导阶段；</p>
<p>　　3. 加载内核阶段；<br />
　　4. 初始化内核阶段；<br />
　　5. 登陆。</p>
<p>　　每个启动阶段的详细介绍</p>
<p>　　a） 预引导阶段</p>
<p>　　在按下计算机电源使计算机启动，并且在Windows XP专业版操作系统启动之前这段时<br />
间，我们称之为预引导（Pre-Boot）阶段，在这个阶段里，计算机首先运行Power On Sel<br />
f Test（POST），POST检测系统的总内存以及其他硬件设备的现状。如果计算机系统的BI<br />
OS（基础输入/输出系统）是即插即用的，那么计算机硬件设备将经过检验以及完成配置。<br />
计算机的基础输入/输出系统（BIOS）定位计算机的引导设备，然后MBR（Master Boot Re<br />
cord）被加载并运行。在预引导阶段，计算机要加载Windows XP的NTLDR文件。</p>
<p>　　b） 引导阶段</p>
<p>　　Windows XP Professional引导阶段包含4个小的阶段。</p>
<p>　　首先，计算机要经过初始引导加载器阶段（Initial Boot Loader），在这个阶段里，<br />
NTLDR将计算机微处理器从实模式转换为32位平面内存模式。在实模式中，系统为MS-DOS保<br />
留640kb内存，其余内存视为扩展内存，而在32位平面内存模式中，系统（Windows XP Pr<br />
ofessional）视所有内存为可用内存。接着，NTLDR启动内建的mini-file system driver<br />
s，通过这个步骤，使NTLDR可以识别每一个用NTFS或者FAT文件系统格式化的分区，以便发<br />
现以及加载Windows XP Professional，到这里，初始引导加载器阶段就结束了。</p>
<p>　　接着系统来到了操作系统选择阶段，如果计算机安装了不止一个操作系统（也就是多<br />
系统），而且正确设置了boot.ini使系统提供操作系统选择的条件下，计算机显示器会显<br />
示一个操作系统选单，这是NTLDR读取boot.ini的结果。（至于操作系统选单，由于暂时条<br />
件不够，没办法截图，但是笔者模拟了一个）</p>
<p>　　在boot.ini中，主要包含以下内容：</p>
<p>　　[boot loader]<br />
　　timeout=30<br />
　　default=multi（0）disk（0）rdisk（0）partition（1）\WINDOWS</p>
<p>　　[operating systems]</p>
<p>　　multi（0）disk（0）rdisk（0）partition（1）\WINDOWS="Microsoft Windows XP <br />
Professional" /fastdetect</p>
<p>　　multi（0）disk（0）rdisk（0）partition（2）\WINNT="Windows Windows 2000 Pr<br />
ofessional"</p>
<p>　　其中，multi（0）表示磁盘控制器，disk（0）rdisk（0）表示磁盘，partition（x）<br />
表示分区。NTLDR就是从这里查找Windows XP Professional的系统文件的位置的。（*本文<br />
不会更详细地讲解boot.ini的组成结构，因为其与本主题关系不大，如果想了解，可以到<br />
一些专门的网站处查询相关信息。）如果在boot.ini中只有一个操作系统选项，或者把ti<br />
meout值设为0，则系统不出现操作系统选择菜单，直接引导到那个唯一的系统或者默认的<br />
系统。在选择启动Windows XP Professional后，操作系统选择阶段结束，硬件检测阶段开<br />
始。</p>
<p>　　在硬件检测阶段中，ntdetect.com将收集计算机硬件信息列表并将列表返回到NTLDR，<br />
这样做的目的是便于以后将这些硬件信息加入到注册表HKEY_LOCAL_MACHINE下的hardware<br />
中。<br />
　　硬件检测完成后，进入配置选择阶段。如果计算机含有多个硬件配置文件列表，可以<br />
通过按上下按钮来选择。如果只有一个硬件配置文件，计算机不显示此屏幕而直接使用默<br />
认的配置文件加载Windows XP专业版。</p>
<p>　　引导阶段结束。在引导阶段，系统要用到的文件一共有：NTLDR，Boot.ini，ntdetec<br />
t.com，ntokrnl.exe，Ntbootdd.sys，bootsect.dos（可选的）。</p>
<p>　　c） 加载内核阶段</p>
<p>　　在加载内核阶段，ntldr加载称为Windows XP内核的ntokrnl.exe。系统加载了Window<br />
s XP内核但是没有将它初始化。接着ntldr加载硬件抽象层（HAL，hal.dll），然后，系统<br />
继续加载HKEY_LOCAL_MACHINE\system键，NTLDR读取select键来决定哪一个Control Set将<br />
被加载。控制集中包含设备的驱动程序以及需要加载的服务。NTLDR加载HKEY_LOCAL_MACH<br />
INE\system\service\&#8230;下start键值为0的最底层设备驱动。当作为Control Set的镜像的<br />
Current Control Set被加载时，ntldr传递控制给内核，初始化内核阶段就开始了。 </p>
<p>　　d） 初始化内核阶段</p>
<p>　　在初始化内核阶段开始的时候，彩色的Windows XP的logo以及进度条显示在屏幕中央<br />
，在这个阶段，系统完成了启动的4项任务：</p>
<p>　　内核使用在硬件检测时收集到的数据来创建了HKEY_LOCAL_MACHINE\HARDWARE键。<br />
　　内核通过引用HKEY_LOCAL_MACHINE\system\Current的默认值复制Control Set来创建<br />
了Clone Control Set。Clone Control Set配置是计算机数据的备份，不包括启动中的改<br />
变，也不会被修改。</p>
<p>　　系统完成初始化以及加载设备驱动程序，内核初始化那些在加载内核阶段被加载的底<br />
层驱动程序，然后内核扫描HKEY_LOCAL_MACHINE\system\CurrentControlSet\service\&#8230;<br />
下start键值为1的设备驱动程序。这些设备驱动程序在加载的时候便完成初始化，如果有<br />
错误发生，内核使用ErrorControl键值来决定如何处理，值为3时，错误标志为危机/关键<br />
，系统初次遇到错误会以LastKnownGood Control Set重新启动，如果使用LastKnownGood<br />
&nbsp;Control Set启动仍然产生错误，系统报告启动失败，错误信息将被显示，系统停止启动<br />
；值为2时错误情况为严重，系统启动失败并且以LastKnownGood Control Set重新启动，<br />
如果系统启动已经在使用LastKnownGood值，它会忽略错误并且继续启动；当值是1的时候<br />
错误为普通，系统会产生一个错误信息，但是仍然会忽略这个错误并且继续启动；当值是<br />
0的时候忽略，系统不会显示任何错误信息而继续运行</p>
<p>　　Session Manager启动了Windows XP高级子系统以及服务，Session Manager启动控制<br />
所有输入、输出设备以及访问显示器屏幕的Win32子系统以及Winlogon进程，初始化内核完<br />
毕。</p>
<p>&nbsp;基于x86 系统上 Windows XP Professional 的启动文件</p>
<p>文件名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文件所处位置&nbsp;&nbsp;&nbsp; 描述 <br />
Ntldr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系统分区根目录&nbsp; 操作系统装载器 </p>
<p>Boot.ini&nbsp;&nbsp;&nbsp;&nbsp; 系统分区根目录&nbsp; 该文件指定 Windows XP Professional 的安装路径。对<br />
于多引导系统 Boot.ini 包含一个显示在启动菜单上的操作系统选择菜单。</p>
<p>Bootsect.dos (仅适用于多引导系统) 系统分区根目录&nbsp; Ntldr 将会装载此文件，以读取<br />
可能包含 MS-DOS, Windows 95, Windows 98, or Windows Me 等OS的Windows Xrofessio<br />
nal 多引导系统设定。 Bootsect.dos 包含这些操作系统的引导扇区，文件属性为系统、<br />
隐藏。 </p>
<p>Ntdetect.com&nbsp;&nbsp; 系统分区根目录&nbsp; 此文件将扫描硬件设置信息，并传递给 Ntldr </p>
<p>Ntbootdd.sys&nbsp;&nbsp; 系统分区根目录 (SCSI 或者ATA 等固件本身禁用或者不支持 INT-13 中<br />
断扩展调用的设备需要此文件).&nbsp; 该驱动程序用于访问不使用 BIOS，而连接到 SCSI 或者<br />
&nbsp;ATA 的硬盘驱动器， The contents of this file depend on the startup controller<br />
&nbsp;used. </p>
<p>Ntoskrnl.exe systemroot\System32&nbsp; Windows XP Professional操作系统的核心 (也被叫<br />
做 kernel) 。作为 kernel的一部分，运行在处理器特权模式下的代码，允许直接访问系<br />
统数据和硬件。 <br />
&nbsp;在安装Windows XP Professional 操作系统期间，如果是单处理器系统，setup程序从操<br />
作系统光盘上复制 Ntoskrnl.exe 文件，如果是多处理器系统，Setup 从安装光盘上复制<br />
&nbsp;Ntoskrnlmp.exe 并将它重命名为Ntoskrnl.exe. </p>
<p>Hal.dll systemroot\System32&nbsp; 硬件抽象层动态(HAL)链接库文件。HAL abstracts 从操<br />
作系统提取底层硬件信息，并给相同类型的设备，提供公用编程接口。 <br />
&nbsp;Microsoft&amp;reg; Windows&amp;reg; XP Professional 操作系统光盘包含若干 Hal 文件，Se<br />
tup 将适合您系统硬件设置的文件复制到您的计算机，并重命名为 Hal.dll. </p>
<p>System registry file systemroot\System32\Config\System&nbsp; 此注册表文件包含创建HK<br />
EY_LOCAL_MACHINE\SYSTEM 注册表键值所需要的数据。该键值包含了操作系统启动设备和<br />
系统服务所需要的信息。 </p>
<p>Device drivers systemroot\System32\Drivers&nbsp; 一些硬件设备的驱动程序文件，比如键<br />
盘、鼠标、显卡。 </p>
<p>&nbsp;&nbsp; systemroot是众多环境变量之一，用于将象文件和文件路径这样的字符串关联到变量，<br />
以便 Windows XP Professional应用程序和服务使用。例如，通过使用环境变量，<br />
脚本不同修改就可以运行在不同环境设置的计算机上。您可以通过在命令行执行 <br />
&nbsp;set 命令查看环境变量列表</p>
<p>检测硬件和硬件配置文件<br />
&nbsp;&nbsp;&nbsp; 进入此阶段，Ntldr 启动Ntdetect.com, 后者将执行基础硬件扫描。随后 Ntldr 扫描<br />
&nbsp;Boot.ini 信息，以及保存在注册表中的硬件和软件信息，传送给 Ntoskrnl.exe。Ntdet<br />
ect.com 检测硬件配置信息 (比如 便携计算机上接驳或未接驳设置) 和保存在 Advanced<br />
&nbsp;Configuration and Power Interface (ACPI) 表中的信息。 ACPI 兼容固件允许Window<br />
s XP Professional 检测设备电源管理功能和设备资源需求。</p>
<p>&nbsp;&nbsp;&nbsp; 检测、设置硬件阶段在读取 Boot.ini 并完成其任务后， Ntldr 启动 Ntdetect.com<br />
。在 x86 系统上 Ntdetect.com 调用系统例行程序收集已经安装的硬件信息，并将收集的<br />
信息返回给Ntldr，Ntldr 将这些信息收集后存入内部数据库 ，然后启动 Ntoskrnl.exe <br />
并将信息传递给它。</p>
<p>Ntdetect.com 所收集的硬件设备的信息如下：</p>
<p>信息固件信息，比如日期和时间 <br />
总线和板卡类型 <br />
显卡 <br />
键盘 <br />
通讯端口 <br />
硬盘 <br />
软盘 <br />
输入设备 (比如鼠标) <br />
并行端口 <br />
安装在Industry Standard Architecture (ISA) 总线上的设备<br />
&nbsp;&nbsp; Ntdetect.com 在非ACPI兼容计算机的设备扫描中扮演了重要的角色。因为在这些类型<br />
的计算机上，固件而不是操作系统决定了分配给设备的资源，对于使用ACPI固件的计算机<br />
，Windows XP Professional 对硬件设备分配资源。在这个阶段，Ntdetect.com 收集硬件<br />
信息， Windows XP Professional 为桌面计算机创建一个单独的默认硬件配置文件，而为<br />
便携计算机创建两个缺省的配置文件。对于便携计算机，操作系统基于当前计算机上硬件<br />
状态选择适当的配置文件。</p>
<p>桌面型计算机. Profile 1 <br />
便携式计算机. <br />
Docked Profile <br />
Undocked Profile<br />
硬件配置文件对于便携式计算机是非常有用的，因为这些计算机的硬件状态通常都不是静<br />
态的，启动的时候，没有列表在特定的硬件配置文件中的设备驱动是不会被加载的。<br />
&nbsp;&nbsp; 关于创建和使用硬件配置文件的信息，请参考Windows XP Professional 帮助和支持中<br />
心，也可以参考知识库文档 225810, "How to Create Hardware Profiles on Windows 2<br />
000?Based Mobile Computers," 查找此文档，请查询Web Resources 页面 http://www.m<br />
icrosoft.com/windows/reskits/webresources 上的知识库链接，同时您也可以查看"Man<br />
aging Devices" 和 "Supporting Mobile Users" <br />
&nbsp;&nbsp; 核心装载阶段Ntldr 负责将 Windows 核心层 (Ntoskrnl.exe) 和硬件抽象层 (HAL) 装<br />
载到内存。您的系统所使用的 Hal.dll 文件是可以发生变化的。在安装期间，Windows X<br />
P Professional 安装程序从若干 HAL 文件中选择一个复制到系统，(请参看表28.2 关于<br />
这些文件的列表) 并重名为Hal.dll。</p>
<p>在设备管理器中查看计算机描述 </p>
<p>在运行对话框，输入 devmgmt.msc，点击确定。 <br />
在设备管理器展开计算机察看您计算机的描述。 <br />
通过比较设备管理器中的描述和下面表 28.2中的描述, 您可以确定从 Windows XP Profe<br />
ssional 操作系统光盘复制到您系统中的HAL文件</p>
<p>Table 28.2&nbsp;&nbsp; 关于不同 Hal.dll 文件的描述</p>
<p>设备管理器中计算机的描述&nbsp; 复制的HAL文件 <br />
ACPI 多处理器 PC Halmacpi.dll <br />
ACPI 单处理器 PC Halaacpi.dll <br />
Advanced Configuration and Power Interface (ACPI) PC Halacpi.dll <br />
MPS 多处理器 PC Halmps.dll <br />
MPS 单处理器 PC Halapic.dll <br />
标准 PC Hal.dll <br />
Compaq SystemPro 多处理器或者完全兼容 Halsp.dll </p>
<p><br />
核心层kernel 和硬件抽象层HAL 初始化一组软件组件，他们统称为windows 执行体。Win<br />
dows 执行体扫描储存在注册表control sets中的信息，并启动服务和驱动程序。 </p>
<p>关于Windows executive services, 请查看 "Common Stop Messages for Troubleshooti<br />
ng" </p>
<p>控制集Control Sets<br />
Ntldr 从 HKEY_LOCAL_MACHINE\SYSTEM 注册表子键中读取相关信息，该子健中的数据创建<br />
于\System32\Config\ System 文件,故而 Ntldr 能够决定哪些设备驱动在系统启动时装载<br />
。 通常，注册表中存在几个control sets, 其后面的序号取决于系统设定多长时间变更一<br />
次。。</p>
<p>提示：</p>
<p>如非必要不要直接编辑注册表。注册表编辑器绕开了系统保护机制，您的修改有可能会破<br />
坏系统，严重者甚至需要重新安装 Windows。如果你必须编辑注册表，请事先作备份，并<br />
详细阅读 Microsoft&amp;reg; Windows&amp;reg; 2000 Server Resource Kit 中关于 Registry <br />
Reference 的章节http://www.microsoft.com/windows/reskits/webresources.<br />
典型的注册表控制集 control set 子键如下：</p>
<p>\CurrentControlSet, 一个注册在\Select\Current 项中，指向 ControlSetxxx 子键的指<br />
针 (xxx 代表一个 control set 编号, 比如 001)&nbsp; <br />
\Clone, 一份 \CurrentControlSet的拷贝，当您每次启动计算机的时候创建。（gnaw072<br />
5注：此处原文如此，有待考证） <br />
\Select, 包含如下键值： <br />
Default, 指针指向系统指定用户下次登陆所使用的控制集编号 (比如 001=ControlSet00<br />
1)。 如果没有错误发生，或者并非由 LastKnownGood 启动项所设置，此 control set 编<br />
号将为 Default, Current和 LastKnownGood 注册项所影响 (假定当前用户可以成功登录<br />
)<br />
Current, 指向此次用于启动系统的控制集&nbsp; <br />
Failed, 指向没有成功启动 Windows XP Professional 的控制集。当使用 LastKnownGoo<br />
d 选项启动系统时，此项被更新 （gnaw0725注：表示 Windows XP 在其中保存失败启动产<br />
生的数据的控件组。 此控件组在用户第一次调用&#8220;最近一次的正确配置&#8221;选项之前并不实<br />
际存在。）&nbsp; <br />
LastKnownGood, 指向上次用户会话所使用的控制集 。当用户登录的时候，LastKnownGoo<br />
d 控制集被前一次用户会话使用的设置信息所更新。<br />
除非您从Windows Advanced Options菜单中选择Last Known Good Configuration，Ntldr<br />
&nbsp;将使用Default 键值所标示的控制集。</p>
<p>核心层使用Ntldr 提供的内部数据结构创建 HKEY_LOCAL_MACHINE\HARDWARE 子键，其中包<br />
含在系统启动阶段收集的硬件信息。这些数据包含信息包括各种硬件组件和分配给每个设<br />
备的系统资源。您可以通过查看在启动过程中显示的进度指示器来监控核心层加载过程 关<br />
于 Last Known Good Configuration的相关信息，您可以查阅 "Tools for Troubleshoot<br />
ing" </p>
<p>Windows XP Professional 支持设备扩展。新的或者更新的驱动程序并不存在于 Windows<br />
&nbsp;XP Professional 操作系统光盘上，而是由于硬件厂商提供。驱动程序是核心模式组件，<br />
需要Drivers are kernel-mode components required by devices to function within <br />
an operating system. 服务是支持操作系统功能和应用程序的组件。与用户应用程序相比<br />
，服务可以运行在一个不同的上下文，通常不会提供用户可以设置的选项。服务，比如脱<br />
机打印 Print Spooler，不需要用户登录即可运行，而且与登陆到系统的用户无关。Wind<br />
ows XP Professional 驱动程序和服务系统文件通常被存放在 systemroot\System32 和 <br />
systemroot\System32\Drivers 目录下，以 .exe, .sys, or .dll 等扩展名保存。</p>
<p>驱动程序也是服务，因此在核心层初始化期间，Ntldr 和 Ntoskrnl.exe 按照存储在HKEY<br />
_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servicename 注册表子键中的数值<br />
来确定装载的驱动程序和服务次序。例如，Ntldr 首先搜索Services 子键中 Start 值为<br />
&nbsp;0的服务，比如硬盘控制器。当 Ntldr 启动 Ntoskrnl.exe后，一个Ntoskrnl.exe 组件搜<br />
索并启动驱动程序，比如网络协议，这些启动项 Start 值为 1.</p>
<p>Table 28.3 ，列出了 Start 项的值（十进制）。Boot 类型的驱动 (Start 值为0的项) <br />
文件系统驱动程序的Start值始终为0，因为启动 Windows XP Professional 需要它们的支<br />
持。</p>
<p>表 28.3 &lt;服务名&gt; Start项的赋值 <br />
值 Start类型 关于 Start 项赋值的描述 <br />
0 Boot 基于x86系统 Ntldr 或者Itanium IA64ldr上的固件调用模式指定装载的驱动，如<br />
果没有错误发生，核心层Kernel将启动该驱动程序 <br />
1 System 指定在系统核心层 Kernel 初始化期间被 Windows XP Professional boot dri<br />
vers 所调用的驱动程序 <br />
2 Auto load 指定在系统启动时被会话管理器 (Smss.exe)或者服务控制器 (Services.ex<br />
e)所加载的驱动程序或者服务。 <br />
3 Load on demand 指定一个通过用户、进程或者其他服务手动启动的驱动程序或者服务 </p>
<p>4 Disabled 指定一个禁止（不启动）的驱动程序或者服务。 </p>
<p><br />
表 28.4 列出了Type 项的一些值（十进制） </p>
<p>表 28.4&nbsp;&nbsp; &lt;服务名&gt; Type 项的赋值</p>
<p>值&nbsp; Type 项赋值描述 <br />
1 指定一个核心设备驱动程序 <br />
2 指定一个文件系统驱动程序 (也是一个核心设备驱动程序) <br />
4 指定参数传递给设备驱动程序 <br />
16 指定一个遵循服务控制协议的服务，该服务可以独立运行在一个进程中，且可以为服务<br />
控制器所启动 <br />
32 指定一个可以和其他服务共享进程的服务 </p>
<p><br />
一些驱动程序和服务需要在启动之前确定之间的相互依赖关系。通过查看HKEY_LOCAL_MAC<br />
HINE\SYSTEM\CurrentControlSet\Services\servicename下DependOnGroup和 DependOnSe<br />
rvice&nbsp; 项 ，您可以找到这个依存关系的列表。关于使用依赖关系阻止或者延迟驱动程序<br />
或者服务启动的信息，请查看 "Temporarily Disabling Services" 。该服务子键也包含<br />
了影响驱动程序和服务如何加载的信息，表 28.5 中描述了其中的一部分。</p>
<p>表 28.5&nbsp;&nbsp; 注册表其他 &lt;服务名&gt; 项</p>
<p>项 描述 <br />
DependOnGroup 此组中所描述的项目，至少有一个在当前服务装载前必须被加载。子键 S<br />
YSTEM\CurrentControlSet\Control\ServiceGroupOrder 包含服务组装载次序 <br />
DependOnService 此列表中描述的服务，必须在当前服务之前加载。 <br />
Description 组件描述 <br />
DisplayName 指定组件的显示名称 <br />
ErrorControl 控制一个驱动程序错误是需要系统使用 LastKnownGood 控制集还是提示一<br />
个错误停止信息。 <br />
如果值为 0x0 (忽略，没有错误报告), 不会显示警告信息，继续执行启动。 <br />
如果值为 0x1 (普通，报告错误), 将错误记录到系统日志并提示警告信息，但继续启动过<br />
程。 <br />
如果值为 0x2 (严重), 将事件记录到系统日志，使用 LastKnownGood 设置，重新启动系<br />
统，执行启动过程。 <br />
如果值为 0x3 (关键), 将事件记录到系统日志，使用 LastKnownGood 设置，重新启动系<br />
统。如果当前启动已经使用 LastKnownGood 设定，则显示错误停止信息。 <br />
Group 指定驱动程序或者服务隶属的组。此项设定允许驱动程序或者服务同步启动（比入<br />
：文件系统驱动程序）注册表子键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Con<br />
trol\ServiceGroupOrder 中的 List 项指定了组项启动顺序。 <br />
ImagePath 如果存在ImagePath项，该项用于标示驱动程序或者服务的路径和文件名。 您<br />
可以使用Windows Explorer 核实这些路径和文件名。 <br />
ObjectName 指定一个对象名。如果 Type 项指定一个 Windows XP Professional 服务，<br />
那么它就代表服务运行时用于登陆的帐户名。 <br />
Tag 指定一个驱动程序在驱动程序组中的启动顺序。 </p>
<p><br />
会话管理器<br />
当所有标志为 Boot 和 Startup 数据类型的注册表子键执行完成后， kernel 开始加载会<br />
话管理器 Session Manager，由它 (Smss.exe) 执行后续重要的初始化工作，比如：</p>
<p>创建系统环境变量 <br />
启动Windows 子系统核心保护模式 (通过 systemroot\System32\Win32k.sys 实现), 这将<br />
&nbsp;Windows XP Professional 从文本模式切换至图形模式。基于Windows的应用程序都运行<br />
在 Windows 子系统上，这个环境下允许应用程序访问操作系统功能函数，比如在屏幕上显<br />
示信息。 <br />
启动 Windows 子系统用户模式部分 (通过 systemroot\System32\Csrss.exe 实现). <br />
启动登陆管理器 (通过&nbsp; systemroot\System32\Winlogon.exe 实现). <br />
创建辅助虚拟内存页文件 <br />
为存放在下列子键中的文件列表，执行延迟的重命名操作。 HKEY_LOCAL_MACHINE\SYSTEM<br />
\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations. 比如：<br />
当您安装了一个新的驱动程序或者应用程序后，系统可能会提示您重新启动，以便 Windo<br />
ws XP Professional 能够替换当前正在使用的文件。<br />
Windows 子系统和基于它执行的应用程序是用户模式进程，它们不能直接访问硬件和设备<br />
驱动。用户模式进程执行优先级低于核心进程，当操作系统需要更多内存的时候，它可以<br />
将被用户模式下进程使用的内存缓存到虚拟页面文件。关于用户模式和核心模式组件的信<br />
息，请参考"Common Stop Messages for Troubleshooting" 。</p>
<p>会话管理器Session Manager 将搜索注册表，以获得服务信息，注册表键值如下：</p>
<p>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 包含一个在<br />
服务装载之前运行的命令列表&nbsp; Autochk.exe 工具由 BootExecute 项的值和存储在 Memo<br />
ry Management 子键中的虚拟内存 (页面文件) 设置所指定。Autochk, 是 Chkdsk 工具的<br />
一个版本，如果操作系统检测到一个文件系统错误，需要在完成启动过程之前进行修复，<br />
那么就会在启动的时候运行它。关于 Autochk 和 Chkdsk, "Troubleshooting Disks and<br />
&nbsp;File Systems" 。 <br />
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Subsystems<br />
&nbsp;包含一个有效子系统的列表。比如 Csrss.exe 包含Windows 子系统中的一部分，用户模<br />
式。&nbsp; <br />
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\servicename. 服务控制管理<br />
器（Service Control Manager） 初始化那些设置为启动自动加载的服务。<br />
登录阶段在此阶段Windows 子系统启动 Winlogon.exe，此模块为系统服务，以完成用户的<br />
登入或者登出的动作。 Winlogon.exe 所完成的功能如下：</p>
<p>启动服务子系统 (Services.exe), 也称为服务控制管理器 (SCM). <br />
启动本地安全性授权进程 Local Security Authority (LSA) (Lsass.exe). <br />
在出现开始登陆提示时，侦测 CTRL+ALT+DEL 组合键。 <br />
图形化识别和验证 Graphical Identification and Authentication (GINA) 组件获取用<br />
户名和密码，并将这些信息传送给 LSA 进行安全验证。如果用户提供有效验证，那么通过<br />
使用Kerberos V 5 验证协议或者 NTLM 可以或者访问权限。关于安全组件的信息，比如 <br />
LSA, Kerberos V5 协议或者 NTLM, Distributed Systems Guide of the Microsoft&amp;reg<br />
; Windows&amp;reg; 2000 Server Resource Kit.</p>
<p>当服务控制管理器Service Control Manager 初始化自动装载服务项和驱动时，Winlogon<br />
&nbsp;开始初始化安全和认证组件，当用户登录后，系统进行如下动作：</p>
<p>更新控制集Control sets 。 控制集为 LastKnownGood 注册项所影响，并随 Clone 项中<br />
的内容一同更新。Clone, 是CurrentControlSet 项的一份拷贝, 当您每次启动计算机时被<br />
创建。当用户登录的时候，LastKnownGood 控制集被前一次用户会话使用的设置信息所更<br />
新。 <br />
实施策略。组策略策略设定开始实施于用户和计算机帐户。关于组策略的相关信息，请查<br />
看"Planning Deployments," "Managing Desktops," 和 "Authorization and Access Co<br />
ntrol" ，以及Windows 2000 Server Resource Kit中分布式系统指南中关于 "Group Pol<br />
icy" 的章节，同时您也可以参考其网站资源站点 http://www.microsoft.com/windows/r<br />
eskits/webresources 上关于 Change and Configuration Management Deployment Guid<br />
e 的链接。 <br />
运行启动程序。 Windows XP Professional 启动登陆脚本，启动程序组，并且启动在如下<br />
注册表子键和启动目录所关联的服务项: <br />
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Runonce <br />
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\Explorer<br />
\Run <br />
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run <br />
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\Windows\Run <br />
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run <br />
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce <br />
systemdrive\Documents and Settings\All Users\Start Menu\Programs\Startup <br />
systemdrive\Documents and Settings\username\Start Menu\Programs\Startup <br />
windir\Profiles\All Users\Start Menu\Programs\Startup <br />
windir\Profiles\username\Start Menu\Programs\Startup <br />
windir\Profiles 目录文件夹仅存在于从Windows NT 4.0升级的系统上。</p>
<p>直到用户成功登陆到计算机后，Windows XP Professional 启动过程最终完成。</p>
<p>即插即用检测即插即用检测不与登陆过程同步运作，它依赖于系统固件，硬件，设备驱动<br />
程序以及操作系统功能，从而能够检测和枚举新的设备。 Windows XP Professional 为使<br />
用ACPI固件的设备优化即插即用支持，并且允许增强功能，比如硬件资源共享。</p>
<p>当即插即用能够很好协调工作时，Windows XP Professional 能够在最小用户参与的前提<br />
下，检测到新的设备，分配系统资源，安装或者请求驱动程序。ACPI 特性对于移动用户是<br />
非常有用的，这些特性可以很好的支持待机、休眠、冷热插拔等功能。</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/wenhl5656/aggbug/205198.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-06-01 20:20 <a href="http://www.blogjava.net/wenhl5656/archive/2008/06/01/205198.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(zz)理工科大学排名</title><link>http://www.blogjava.net/wenhl5656/archive/2008/06/01/205197.html</link><dc:creator>爱吃鱼头</dc:creator><author>爱吃鱼头</author><pubDate>Sun, 01 Jun 2008 12:18:00 GMT</pubDate><guid>http://www.blogjava.net/wenhl5656/archive/2008/06/01/205197.html</guid><wfw:comment>http://www.blogjava.net/wenhl5656/comments/205197.html</wfw:comment><comments>http://www.blogjava.net/wenhl5656/archive/2008/06/01/205197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/wenhl5656/comments/commentRss/205197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/wenhl5656/services/trackbacks/205197.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 北京大学 ★★★★★ 理科第一，中国科学院院士数量全国第一，科学家的摇篮。数<br />
学、物理、化学、生物四个基础科学的实力均居全国高校之首。北京大学医学部的分数线<br />
仅次于北京大学校本部和清华大学。<br />
　　2 哈尔滨工业大学 ★★★★★ 工科第一，哈天研究全国第一，工程师的摇篮。近年<br />
来逐渐加强理科的建设，加上强大的工科背景，理科实力大有上升。<br />
　　3 复旦大学 ★★★★★ 在这里读书是许多南方人的梦想，地处上海，是文理基础综<br />
合性大学，历史悠。 <br />
　　4 浙江大学 ★★★★☆ 理号称&#8220;小清华&#8221;，合并了杭州大学、浙江医科大学和浙江<br />
农业大学后更是实力大增，成为全国惟一一所兼具理工农医的大学。 <br />
　　5 南京大学 ★★★★☆ 虽然有些理科专业有点冷门（比如天文学），但绝对是一流<br />
的。<br />
　　6 中国科学技术大学 ★★★☆☆ 虽然地处合肥，掩不住其大家本色，毕竟是科技部<br />
直办高校。<br />
　　7 上海交通大学 ★★★☆☆ 地处上海宝地，势头完全压倒交通大学家族的老大哥西<br />
安交通大学。并且工科实力非常雄厚。 <br />
　　8 北京航空航天大学 ★★★☆☆ 它的崛起，相当原因是由于地处天子脚下吧。不过<br />
自身的理工科实力确实很强，尤其是自动化之类的工科。 <br />
　　9 国防科学技术大学 ★★☆☆☆ 计算机类专业出色，其中计算机科学技术超过清华<br />
大学居全国第一，由于是军校，不用支持高额的学杂费。 <br />
　　10 华中科技大学 ★★☆☆☆ 华中地区理工类大学的老大，有一些其他著名的工科大<br />
学没有的工科专业。
<img src ="http://www.blogjava.net/wenhl5656/aggbug/205197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/wenhl5656/" target="_blank">爱吃鱼头</a> 2008-06-01 20:18 <a href="http://www.blogjava.net/wenhl5656/archive/2008/06/01/205197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>