<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6939442</id><updated>2012-02-09T15:32:23.904+08:00</updated><category term='Reflactor、反编译、.Net'/><category term='freebsd'/><category term='操作系统'/><category term='Net 2.0 、泛型'/><category term='compileMethod'/><title type='text'>天天的家</title><subtitle type='html'>普通平凡的人，网管，编程，司机，生活中的各种角色</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default?start-index=101&amp;max-results=100'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>103</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6939442.post-7762514909722376462</id><published>2009-02-05T14:59:00.001+08:00</published><updated>2009-02-05T14:59:43.902+08:00</updated><title type='text'>改写FULL OUTER JOIN(转)</title><content type='html'>说起数据库的表JOIN，一直是SQL语句开发中最为关注的重点，特别是在OLAP的DW领域。&lt;br /&gt;关注JOIN主要关注JOIN的性能，一般来说数据库都会支持为不同场合不同的代价实现MERGE、HASH以及NESTED-LOOP等JOIN的实现方式。这个非常重要，但这个不是本文主题，以后我想好好的阐述这方面的内在以及优化，不过可能需要根据数据库的不同而分开描述，在此不必熬述。&lt;br /&gt;今天要想说的是JOIN的类型。根据需求，一般来说JOIN有如下几种：&lt;br /&gt;INNER JOIN、&lt;br /&gt;LEFT OUTER JOIN、&lt;br /&gt;RIGHT OUTER JOIN、&lt;br /&gt;FULL OUTER JOIN、&lt;br /&gt;CROSS JOIN。&lt;br /&gt;首先第一种直译为内关联，需要匹配条件完全匹配，这个是最普通的关联，一般来说用的都是这个。对于优化来说，基本上是无法改写的。&lt;br /&gt;第二是做文字直译为左外关联，一般也会说是左关联，如果是常用ORALCE的同志，你们看到的A.COLUMN1= B.COLUMN2(+)描述的就是左关联，当然这个不是标准SQL，是ORACLE PL/SQL自己的语法。它的含义是以左表为主表，匹配条件当右表没有匹配值时会以数据库的NULL值代替，这个实现的功能为主从表的关联。当两表之间存在外键约束但非主键约束时（亦即非强制依赖约束）时，应采用这种关联方式。&lt;br /&gt;第三种直译当然是右关联，说白了，就是右表为主表，其他和左关联同，他的存在和左关联是同一价值，在非必须的情况，右关联尽量用左关联替代。因为右关联会让你的SQL读起来很难受，我们接受的先入为主，先左后右的表达方式，而且很多数据库对复杂关联时，据说对右关联的优化能力较差。&lt;br /&gt;第四种直译为全关联。就是左右两表都是主表，非主从关系，这个时候匹配条件中存在左表有右表无，也同时存在右表有左表无的情况。这个时候你需要进行的就是全关联了。当然这个性能是比较差的，但当我们的需求的确如此的时候，我们也是必须去面对，本文想说的就是替代这种全关联的一种脚本改写，这种写法会对性能上有一定提升，当然是在某些情况和场合下。&lt;br /&gt;第五种是交叉关联，也就是所谓的笛卡尔积。当你的关联不写条件就会出现这种情况，比如你要画方格呵呵，通过横、纵左表描述整个围棋棋盘的时候，你得到的数据行是你的左右两表行数的乘积。当然这种情况一般情况是不需要的，因为关联不用条件基本上意义不大，而且这种是比较恐怖，积数的数据扩充，一般你会受不了的，你受得了你的机器也受不了，当你发现你一个应该可以很快完成关联却怎么也出不来的时候，你要检查你的匹配条件是不是没有写或者错了产生笛卡尔积了。经常有人写条件A.COLUMN1 = A.COLUMN1来作A、B两表的关联条件，这个条件是无效的，是CROSS JOIN。值得注意哦，这种脚本如果出现了，要判编码者死刑的呵呵。&lt;br /&gt;引申了不少，进入主题，来说改写FULL OUTER JOIN。首先我要申明的是我的改写是基于两表或者多表数据量差不多情况下，且为统计所用时，而且表越多，越能显示这种改写的优势。针对不同等量级的表之间的FULL OUTER JOIN，使用这种方式可能会让你的SQL变得晦涩而且性能没有得到很大提高，那就不值得了。&lt;br /&gt;我使用的SQL为“UNION ALL + GROUP BY”的组合。如果我把这个SQL称之为精妙的时候，请同志们不要笑话我的自我满足呵呵。&lt;br /&gt;我们来举例说明，在OLAP系统中，做报表经常会出现这样的一组需要你完成的指标：本期指标、上期指标、去年同期指标。我们今天就来用此例来说明，说明这一改写的精妙。&lt;br /&gt;一般来说，我们会已经形成了如下列明细表格，表一：&lt;br /&gt;月份        分公司        商品        销售额&lt;br /&gt;200504        南京分公司        IBM笔记本        1,002,000&lt;br /&gt;200504        合肥分公司        IBM笔记本        888,887&lt;br /&gt;200504        南京分公司        HP笔记本        1,399,250&lt;br /&gt;200504        合肥分公司        HP笔记本        1,010,222&lt;br /&gt;……        ……        ……        ……&lt;br /&gt;……        ……        ……        ……&lt;br /&gt;200606        南京分公司        DELL笔记本        1,999,250&lt;br /&gt;200606        合肥分公司        DELL笔记本        2,010,222&lt;br /&gt;但我们最终想要的表格如下的表二：&lt;br /&gt;制表月份：200606&lt;br /&gt;分公司        商品        销售额&lt;br /&gt;                本月        上月        上年同期&lt;br /&gt;南京分公司        IBM笔记本                      &lt;br /&gt;南京分公司        HP笔记本                      &lt;br /&gt;南京分公司        DELL笔记本                      &lt;br /&gt;……        ……        ……        ……        ……&lt;br /&gt;合肥分公司        神州笔记本                      &lt;br /&gt;可能在想，很简单啊，把表一中的数据跟月份条件分成三个子查询或者导出表（当月指标表、上月指标表、上年同期指标表），然后来进行一次关联就好了啊。&lt;br /&gt;对，这个想法，完全正确。重要的是你选择什么样的关联方式呢？&lt;br /&gt;当然先说一下关联条件，当时每个表的【分公司】以及【商品】了。&lt;br /&gt;内关联，可能会对，但大部分情况是不对的，比如〖南京分公司〗这个月份销售了〖IBM笔记本〗，但也可能去年这个时候没有销售该笔记本呢，那内关联就会损失〖南京分公司〗销售〖IBM笔记本〗的信息，因为你是内关联，需要完全匹配。&lt;br /&gt;那简单选择外关联吧，左关联或者有关联，那问题又来了，到底选择那个表为主表呢？今年某个公司销售了某个产品，可能去年同期没有销售，今年没有销售某个产品，可能去年又销售了。无法确定主表，外关联也不能满足需求。&lt;br /&gt;当然交叉关联更加是不可以选择，那就只能选择全关联了。一般来说，这种需求即需要进行全关联，但两个表关联会简单，三个表呢？三个表你必须先将两个表关联后生成导出表或者子查询再和第三个表关联，否则你的关联条件可能又会让你的数据不满足你的需求，这个时候你在想？怎么会呢？我这样写：&lt;br /&gt;FROM 当月指标表 A&lt;br /&gt;FULL OUTER JOIN 上月指标表 B&lt;br /&gt;ON B.分公司 = A.分公司　AND B.商品 =  A.商品&lt;br /&gt;FULL OUTER JOIN 上年同期指标表C&lt;br /&gt;ON C.分公司 = A.分公司　AND C.商品 =  A.商品&lt;br /&gt;细看了，这个结果是是B和A外关联，C和A外关联。所以如果有组条件（比如〖上海分公司〗＋〖联想笔记本〗）A表没有，而B表和C表都有，这样的结果是是什么呢？会出现这组条件会有两条记录，第一条：A表指标空、B表指标有、C表指标空，第二条：A表指标空、B表指标空、C表指标有。显然这个也不是我们需要的结果，我们要的结果应该是：A表指标空、B表指标有、C表指标有。所以你如果需要使用全关联，你需要做的事情是要先将两表做全关联然后作为子查询或者导出表再和另外一个表关联。这是三个表的情况，当你要做N个表关联的时候，你就要作N－1个子查询，做N－1次全关联。&lt;br /&gt;听起来就能了解这个效率很有问题。也是麻烦至极的。&lt;br /&gt;所以遇到这个情况，我们不能这么去干，那是莽夫所为，也是愚公所为。愚公精神值得赞扬，但还是需要智叟来解决问题的。现在看智叟的。&lt;br /&gt;从上面的尝试的过程中我们来分析，我们对于三个表，如果是两两关联出来的结果出现场重复记录，如上所属的〖上海分公司〗＋〖联想笔记本〗。这个时候你会想，将结果GROUP BY一下不就可以得到正确的结果了吗？答对了，完全正确，对最终结果做一次GROUP BY绝对可以将重复记录合并。这样当然能解决刚才的问题。&lt;br /&gt;也显然，你会发现当出现这种情况后，GROUP BY基本上再所难免了，当然GROUP BY也是个耗时耗力的操作。那我在想，是否可以不需要前面的FULL OUTER JOIN。而直接GROUP BY呢？答案是显然的，是可以的。这个就是我改写FULL OUTER JOIN的方案：UNION ALL + GROUP BY。&lt;br /&gt;我的做法是将三个导出表的数据项进行扩充成最后需要的表结构，对于未有的只采取默认为0（当然现在说的是数据统计，0可以解决问题，对于其他可以采取其他特殊默认值进行替代，比如空等）。就上理来说，对于本期导出表来说，上期指标填０，上年同期指标也填0；针对上期的导出表，将销售指标赋值给上期指标，本期指标以及上年同期指标均为0；同样去年同期导出表的本期和上期为0，将销售指标赋值给上年同期指标。通过如下格式的SQL即可完成。&lt;br /&gt;SELECT 分公司, 商品, 指标 AS 本期指标, 0 AS 上期指标, 0 AS　上年同期指标&lt;br /&gt;FROM 销售指标表　WHERE 月份＝本期月份；&lt;br /&gt;SELECT 分公司, 商品, 0 AS 本期指标, 指标 AS 上期指标, 0 AS　上年同期指标&lt;br /&gt;FROM 销售指标表　WHERE 月份＝上期月份；&lt;br /&gt;SELECT 分公司, 商品, 0 AS 本期指标, 0 AS 上期指标,  AS　上年同期指标&lt;br /&gt;FROM 销售指标表　WHERE 月份＝本期月份。&lt;br /&gt;现在大家看出来我要干什么了吧？然后将这三个子查询UNION ALL起来合并成一个大的数据集，然后在根据【分公司】、【商品】进行GROUP BY，对其他指标进行SUM即可搞定了。&lt;br /&gt;最终的SQL是：&lt;br /&gt;SELECT 分公司, 商品, SUM(本期指标), SUM(上期指标), SUM(上年同期指标)&lt;br /&gt;FROM&lt;br /&gt;(&lt;br /&gt;SELECT 分公司, 商品, 指标 AS 本期指标, 0 AS 上期指标, 0 AS上年同期指标&lt;br /&gt;FROM 销售指标表　WHERE 月份＝本期月份&lt;br /&gt;UNION ALL&lt;br /&gt;SELECT 分公司, 商品, 0 AS 本期指标, 指标 AS 上期指标, 0 AS上年同期指标&lt;br /&gt;FROM 销售指标表　WHERE 月份＝上期月份&lt;br /&gt;UNION ALL&lt;br /&gt;SELECT 分公司, 商品, 0 AS 本期指标, 0 AS 上期指标, 指标 AS上年同期指标&lt;br /&gt;FROM 销售指标表　WHERE 月份＝本期月份&lt;br /&gt;)&lt;br /&gt;GROUP BY 分公司, 商品&lt;br /&gt;搞定，经典的精妙的SQL出现了，赶快去做个例子去尝试一下吧，你会感觉到精妙的。&lt;br /&gt;这样解决了丢失数据的问题，也解决了重复记录的问题。&lt;br /&gt;效率的问题也解决了，因为所有的操作就GROUP BY是个比较耗时耗力的操作，没有了关联，UNION ALL只是将记录合并，速度很快，而且UNION ALL各部分是互相不干扰的，在多处理器可并行处理的数据库系统中，UNION ALL一般都会被优化为并行处理，即各个部分并行查询将结果集合并而已。所以效率绝对大幅提高。&lt;br /&gt;还有，这样的SQL很好扩种，而且结构清晰，将来对更多的表以及更多的信息扩充起来都要清晰、简单以及明朗的多。&lt;br /&gt;当然我也提过，这种情况针对各个子查询的数据量相当的时候会是非常有效的。至于他的有效性，它的可推广的范围，你可能怀疑，这里只解决了指标计算的问题，通过SUM实现了。你想啊，分组函数还有很多啊，比如MAX、MIN、AVG、COUNT等，这些都可以解决很多问题的，在结合分组GROUP BY可以使用OLAP函数的PARITION BY代替，实际上这个组合可以解决很多关联的问题，针对关联的优化，这种改造不妨是个优秀的选择。结合实际的需求情况，你们可以发现他可以解决很多很多的关联问题。&lt;br /&gt;除了这种统计表格之外，我曾在数据仓库中通过这个SQL组合实现了慢速变化存储（注、慢速变化即为将仓库中按时间存储的数据根据全集连续且无交叉的有效时间短来存储）的批量处理。所以，SQL精妙无穷，本文抛砖引玉，有待大家共同发掘。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7762514909722376462?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7762514909722376462/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7762514909722376462' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7762514909722376462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7762514909722376462'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2009/02/full-outer-join.html' title='改写FULL OUTER JOIN(转)'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4612504400554074181</id><published>2008-10-17T20:52:00.001+08:00</published><updated>2008-10-17T20:52:47.166+08:00</updated><title type='text'>单机环境下vmware与本机操作系统共享adsl网络设置</title><content type='html'>单机环境，ADSL拨号上网，安装VMware后，客户机如何与宿主机共享上网？朋友老问这个问题，其实已经不是什么新问题了。为了方便大家还有新手，今天有功夫就写下来，希望方便大家参考。为了具有针对性，我就拿自己的机器做为参照对象。&lt;p&gt;Product：VMware WorkStation(英文版)&lt;br&gt;Version：6.0.0 build-45731&lt;br&gt;硬件配置：三星Q70-AV01笔记本、Intel Core2 Duo(Merom) T7300(2.0G)、DDR2 &lt;br&gt;667(2G)&lt;br&gt;宿主机系统：Microsoft Windows XP Professional Service Pack 2 (原版)&lt;br&gt;客户机系统：Fedora 7 Linux&lt;br&gt;上网方式：北京网通ADSL(512K)、无路由器、Modem也无路由功能。利用XP自带的PPPoE宽带拨号软件新建名为&amp;quot;ADSL&amp;quot;的连接拨号上网。&lt;p&gt;网络适配器及其配置：&lt;br&gt;VMware Network Adapter VMnet8:&lt;br&gt;IP Address. . . . . . . . . . . . : &lt;a href="http://192.168.168.1"&gt;192.168.168.1&lt;/a&gt;&lt;br&gt;Subnet Mask . . . . . . . . . . . : &lt;a href="http://255.255.255.0"&gt;255.255.255.0&lt;/a&gt;&lt;p&gt;VMware Network Adapter VMnet1:&lt;br&gt;IP Address. . . . . . . . . . . . : &lt;a href="http://192.168.58.1"&gt;192.168.58.1&lt;/a&gt;&lt;br&gt;Subnet Mask . . . . . . . . . . . : &lt;a href="http://255.255.255.0"&gt;255.255.255.0&lt;/a&gt;&lt;p&gt;本地连接(物理网卡)：(自动获取IP地址和DNS)&lt;br&gt;ADSL(PPPoE) ：(由XP新建网络连接向导获得)&lt;p&gt;以下仅介绍Bridged和NAT两种共享上网方式：&lt;br&gt;准备工作(必须)：为客户机Fedora 7 Linux系统安装VMware Tools&lt;p&gt;一、Bridged方式共享上网&lt;p&gt;1、关闭管理工具--服务中的VMware DHCP Service和VMware NAT Service两个服务&lt;br&gt;2、先断开ADSL连接，控制面板--网络连接--ADSL属性--高级-勾选&amp;quot;Internet连接共享&amp;quot;，下拉列表中然后选择&amp;quot;本地连接&amp;quot;。确定，不 要管提示。系统会自动把&amp;quot;本地连接&amp;quot;设置为 &lt;br&gt;&lt;a href="http://192.168.0.1"&gt;192.168.0.1&lt;/a&gt;,子网掩码设置为&lt;a href="http://255.255.255.0"&gt;255.255.255.0&lt;/a&gt;. 以后&lt;a href="http://192.168.0.1"&gt;192.168.0.1&lt;/a&gt;这个IP地址就是Fedora &lt;br&gt;7 Linu的默认网关地址和DNS地址了。&lt;br&gt;3、连接ADSL并拨号，启动Fedora 7 Linux，设置IP和DNS&lt;br&gt;IP设置为192.168.0.X （X就是2到254之间的数都可以）&lt;br&gt;子网掩码&lt;a href="http://255.255.255.0"&gt;255.255.255.0&lt;/a&gt;&lt;br&gt;网关192.268.0.1&lt;br&gt;DNS：192.168.0，1&lt;br&gt;之后重启Fedora 7 Linu或重新激活网络就可以上网了(注意：Linux网络必须激活才能使用，好多人改了配置都不激活，肯定上不了网，时刻检查一下网络是否处于激活状态，而且必须设置为计算机启动时候就激活设备)&lt;p&gt;二、NAT方式共享上网&lt;p&gt;1、开启管理工具--服务中的VMware DHCP Service和VMware NAT Service两个服务&lt;br&gt;2、取消ADSL连接的Internet连接共享。&lt;br&gt;3、连接ADSL并拨号，启动Fedora 7 Linux，设置IP和DNS&lt;br&gt;IP设置为192.168.58.X （X就是128到254之间的数都可以）&lt;br&gt;子网掩码&lt;a href="http://255.255.255.0"&gt;255.255.255.0&lt;/a&gt;&lt;br&gt;网关192.268.58.2&lt;br&gt;DNS：&lt;a href="http://192.168.58.2"&gt;192.168.58.2&lt;/a&gt;&lt;br&gt;之后重启Fedora 7 Linu或重新激活网络就可以上网了.&lt;p&gt;提示：或者更简单的办法就是，开启管理工具--服务中的VMware DHCP Service和VMware &lt;br&gt;NAT Service两个服务后，直接把客户机中的网络设置为DHCP获取IP方式，即可上网&lt;br&gt;这里需要注意的是VMware对于VMnet8采用如下规则(就以本机的&lt;a href="http://192.168.58.0"&gt;192.168.58.0&lt;/a&gt;网段为例)： &lt;p&gt;&lt;br&gt;第一个地址(&lt;a href="http://192.168.58.1"&gt;192.168.58.1&lt;/a&gt;):静态地址，分配给了宿主机Xp的VMware Network Adapter &lt;br&gt;VMnet8适配器使用。&lt;br&gt;第二个地址(&lt;a href="http://192.168.58.2"&gt;192.168.58.2&lt;/a&gt;):静态地址，分配给了NAT设备使用。&lt;br&gt;(&lt;a href="http://192.168.58.3"&gt;192.168.58.3&lt;/a&gt;到&lt;a href="http://192.168.58.127"&gt;192.168.58.127&lt;/a&gt;)静态地址，保留。&lt;br&gt;(&lt;a href="http://192.168.58.128"&gt;192.168.58.128&lt;/a&gt;到&lt;a href="http://192.168.58.254"&gt;192.168.58.254&lt;/a&gt;)：DHCP作用域地址范围，分配给虚拟机使用。&lt;br&gt;最后一个地址(&lt;a href="http://192.168.58.255"&gt;192.168.58.255&lt;/a&gt;)广播地址。&lt;br&gt;VMware默认安装后的规则都是如此。&lt;p&gt;单机ADSL拨号环境，不是路由器或是局域网环境，ADSL的Internet连接共享这步是选择Bridged方式共享上网的关键&lt;p&gt;如果你还想宿主机和客户机之间能相互Ping通和共享，就先把&amp;quot;文件和打印机共享&amp;quot;添加到Windows防火墙例外，然后把管理工具--服务中的Server、Computer Browser、两个服务打开。&lt;p&gt;关于GuestOS共享主机文件&lt;br&gt;选择你的Guest OS&lt;br&gt;点击Edit virtual machine settings---&amp;gt;Options--&amp;gt;Shared Folders&lt;p&gt;选择Always enables,然后点 Add 选择你要共享的主机磁盘或文件夹&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4612504400554074181?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4612504400554074181/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4612504400554074181' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4612504400554074181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4612504400554074181'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/vmwareadsl.html' title='单机环境下vmware与本机操作系统共享adsl网络设置'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7750992736262602091</id><published>2008-10-17T14:35:00.001+08:00</published><updated>2008-10-17T14:35:29.073+08:00</updated><title type='text'>FreeBSD下USB打印机的安装经验谈</title><content type='html'>使用的是HP DeskJet 3420，所以我只能说安装这台打印机的经验了。供你们参考吧！&lt;br&gt;1、编译内核&lt;br&gt;在安装打印机前先检查内核看看内核中是否支持USB端口。&lt;br&gt;如果没有就加入如下：&lt;br&gt;#USB Stuff&lt;br&gt;device usb&lt;br&gt;device uhci&lt;br&gt;device ulpt&lt;br&gt;如果你无法确认是uhci还是ohci你可以使用dmesg命令查看：&lt;br&gt;#dmesg | less&lt;br&gt;或者直接输入下面：&lt;br&gt;#dmesg | grep uhub&lt;p&gt;2、编辑rc.conf&lt;p&gt;内核编译结束后编辑/etc/rc.conf，&lt;br&gt;添加如下内容： usbd_enable=&amp;quot;YES&amp;quot;&lt;p&gt;3、重新启动计算机，以启用新内核。&lt;p&gt; 4、查验设备节点&lt;p&gt;这时你到 /dev下看看是否存在ulpt0这个文件，&lt;br&gt;如果没有就需要用如下方式创建他：&lt;br&gt;#cd /dev #/dev/MAKEDEV ulpt0&lt;p&gt;5、安装打印机软件和驱动。&lt;br&gt;我安装了如下软件：&lt;br&gt;/usr/ports/print/Ghostscript-gnu&lt;br&gt;/usr/ports/print/hpijs&lt;br&gt;/usr/ports/print/apsfilter&lt;br&gt;/usr/ports/print/cups&lt;br&gt;/usr/ports/print/foomatic-db&lt;br&gt;下面的这个我没装： /usr/ports/print/foomatic-db-engine&lt;br&gt;但我还是建议你在安装cups之前安装上他们。&lt;br&gt;我直接下载了foomatic-rip和foomatic-gswrapper到/usr/local/bin目录(你也可以到&lt;a href="http://www.Linuxprinting.org"&gt;http://www.Linuxprinting.org&lt;/a&gt;上下载 foomatic-filters的packages到本地进行安装)： #cd /usr/local/bin #fetch &lt;br&gt;&lt;a href="http://www.linuxprinting.org/foomatic-rip#fetch"&gt;http://www.linuxprinting.org/foomatic-rip&lt;br&gt;#fetch&lt;/a&gt; &lt;a href="http://www.linuxprinting/foomatic-gswrapper"&gt;http://www.linuxprinting/foomatic-gswrapper&lt;/a&gt;&lt;br&gt;然后运行如下命令：&lt;br&gt; #chmod 755 foomatic-rip foomatic-gswrapper&lt;br&gt;#ln -s /usr/local/bin/foomatic-rip &lt;br&gt;/usr/local/libexec/cups/filter/foomatic-rip&lt;br&gt; 好了该准备我的打印机驱动了，&lt;br&gt;我的打印机是HP Deskjet 3420。驱动可以在如下网址搜索到(这里有很多品牌打印机驱动的哦！)：&lt;br&gt;&lt;a href="http://www.linuxprinting.org/printer_list.cgi"&gt;http://www.linuxprinting.org/printer_list.cgi&lt;/a&gt; 驱动是PPD文件，&lt;br&gt;将PPD文件下载到/usr/local/share/cups/model，&lt;br&gt;然后对其设置权限：&lt;br&gt;chown root:wheel HP-DeskJet_3420-hpijs.ppd&lt;br&gt;chmod 644 HP-DeskJet_3420-hpijs.ppd&lt;p&gt;6、准备工作结束，&lt;p&gt;现在开始配置打印机。 打开浏览器在地址栏输入：&lt;br&gt;&lt;a href="http://localhost:631"&gt;http://localhost:631&lt;/a&gt;&lt;br&gt;或者 &lt;a href="http://localhost:631/admin"&gt;http://localhost:631/admin&lt;/a&gt;&lt;br&gt; 如果你是用的前者进入，那么你进入页面中的如下链接&amp;quot;Do Administration &lt;br&gt; Tasks&amp;quot;，这时你需要输入管理员名称(User Name)和密码(PassWord)。如果你用后者进入则会直接要求输入管理员名称(User Name)和密码(Password)。&lt;br&gt;我的：&lt;a href="http://127.0.0.1:631"&gt;http://127.0.0.1:631&lt;/a&gt; 或者 &lt;a href="http://127.0.0.1:631/admin"&gt;http://127.0.0.1:631/admin&lt;/a&gt;&lt;br&gt;我用的后者。管理员名称(User Name)用你机器的超级管理员root ，密码(Password)当然就是root的密码了！&lt;br&gt;第一次使用CUPS当然要点击 Add Printer 了。&lt;br&gt;之后出现一个表单，表单的含义如下(以我的HP Deskjet 3420为例)：&lt;br&gt; Name:3420 (你喜欢怎么叫你的打印机呢？)&lt;br&gt;Location:Local printer (就这么填就行了！)&lt;br&gt;Description:hp DeskJet3420 (描述一下你的打印机)&lt;br&gt;然后点Continue按钮，现在的这个界面是打印机联接端口的选择。&lt;br&gt;我的选择的是： USB Printer #1&lt;br&gt;然后点Continue按钮，现在的这个界面是选择打印机厂商的界面，&lt;br&gt;我的当然选择：HP了。&lt;br&gt;然后点Continue按钮，好了仔细寻找和你打印机匹配的驱动吧。&lt;br&gt;我选择HP DeskJet 3420 Foomatic/hpijs (recommended) (en)。&lt;br&gt;然后点Continue按钮结束配置。&lt;p&gt;7、启动CUPS 先su到超级管理员，&lt;br&gt;之后执行如下操作：&lt;br&gt;#/usr/local/etc/rc.d/cups.sh start OK，&lt;br&gt;现在你用如下命令测试一下：&lt;br&gt;#lp &amp;lt;文件名(可以自己编辑一个小文本文件)&amp;gt;&lt;p&gt; 8、OpenOffice的打印机配置&lt;p&gt;使用如下命令： $openoffice-1.1-spadmin&lt;br&gt;在弹出窗口中点击&amp;quot;新增打印机&amp;quot;。&lt;br&gt;在新窗口中选中&amp;quot;配置一个打印机&amp;quot;。&lt;br&gt;点击&amp;quot;继续&amp;quot;后在新窗口中看看已有的驱动中是不是有和你打印机匹配的。&lt;br&gt; 如果有就选中然后点击继续。如果没有，点击&amp;quot;输入&amp;quot;按钮。&lt;br&gt;在新弹出的窗口中在如下目录中搜寻打印机驱动：&lt;br&gt;/usr/local/etc/cups/ppd/ 应该找到了吧，&lt;br&gt;一路&amp;quot;确定&amp;quot;、&amp;quot;继续&amp;quot;就OK了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7750992736262602091?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7750992736262602091/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7750992736262602091' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7750992736262602091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7750992736262602091'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/freebsdusb.html' title='FreeBSD下USB打印机的安装经验谈'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5104308117239020955</id><published>2008-10-17T11:30:00.001+08:00</published><updated>2008-10-17T11:30:52.847+08:00</updated><title type='text'> Freebsd7.0 release 安装 diablo-jdk1.6.0</title><content type='html'>.最小化安装freebsd.&lt;br&gt;2.到&lt;a href="http://www.freebsdfoundation.org/downloads/java.shtml"&gt;http://www.freebsdfoundation.org/downloads/java.shtml&lt;/a&gt; 下载&lt;p&gt;Diablo Caffe JDK 1.6.0-7 FreeBSD 7.x/i386 End-User 61M &lt;br&gt;diablo-jdk-freebsd7.i386.1.6.0.07.02.tbz&lt;br&gt;3.敲pkg_add diablo* 后发现少了几个东西，xtrans-1.0.4,xproto-7.0.10_1,xextproto-7.0.2,javavmwrapper-2.3.2,需要安装相应的包，在dist1那张盘里面有，&lt;a href="http://javavmwrapper-2.3.xn--2ftp-qm9f345f2qc212d.freebsd.org"&gt;javavmwrapper-2.3.2我直接到ftp.freebsd.org&lt;/a&gt;上面下。&lt;p&gt;4.安装完上面那几个后，就可以直接安装了，pkg_add diablo*。中间会有提示，敲YES.&lt;br&gt;5.设置JAVA环境：&lt;br&gt;  我用的root用户，因此需要修改.cshrc文件。&lt;br&gt;  vi~/.cshrc&lt;br&gt;  在set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin &lt;br&gt;/usr/local/bin $HOME/bin)这一行前面加 上：&lt;br&gt;  setenv JAVA_HOME /usr/local/diablo-jdk1.6.0&lt;br&gt;  setenv CLASSPATH .:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar&lt;br&gt;  然后在set path这一行的那些路径最后面加上jdk的bin路径/usr/local/diablo-jdk1.6.0/bin，就是下面这样：&lt;br&gt;  set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin &lt;br&gt;/usr/local/bin $HOME/bin /usr/local   /diablo-jdk1.6.0/bin)&lt;p&gt;退出再登陆一下就ok了。&lt;p&gt;6.重新登录后，敲java -version，看看版本信息。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5104308117239020955?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5104308117239020955/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5104308117239020955' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5104308117239020955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5104308117239020955'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/freebsd70-release-diablo-jdk160.html' title=' Freebsd7.0 release 安装 diablo-jdk1.6.0'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3220123303953679202</id><published>2008-10-14T09:08:00.001+08:00</published><updated>2008-10-14T09:08:26.380+08:00</updated><title type='text'>PostgreSQL分类汇总方法</title><content type='html'>我们知道MySQL中有分类汇总函数GROUP_CONCAT来实现将组内相关值的连接，但是在PostgreSQL没有此类的函数，但是我们可以使用以下两种方法来方便的达到我们的目的:&lt;p&gt;我们首先创建一个测试表，并插入一些测试数据:&lt;p&gt;create table test(id int,name varchar(100));&lt;p&gt;insert into test values(1,&amp;#39;aa&amp;#39;);&lt;br&gt;insert into test values(1,&amp;#39;bb&amp;#39;);&lt;br&gt;insert into test values(2,&amp;#39;cc&amp;#39;);&lt;br&gt;insert into test values(3,&amp;#39;dd&amp;#39;);&lt;br&gt;insert into test values(2,&amp;#39;ff&amp;#39;);&lt;p&gt;1.使用数组函数两组内的列表转换成数组&lt;p&gt;select id,array_to_string(&lt;br&gt;            array(select name from test where id=&lt;a href="http://a.id"&gt;a.id&lt;/a&gt;),&amp;#39;,&amp;#39;)&lt;br&gt;from test a&lt;br&gt;group by id;&lt;p&gt;--结果&lt;p&gt;  3 | dd&lt;br&gt;  2 | cc,ff&lt;br&gt;  1 | aa,bb&lt;p&gt;是不是看起来非常的简单呢，呵呵，非常的cool!&lt;p&gt;2.使用自定义的聚集函数&lt;p&gt;PostgreSQL除了提供给我们的一些预定义函数之外，还有创建聚集函数的DDL语句，非常的灵活！&lt;p&gt;--首先创建一个状态传递函数：实现将统计结果传递连接&lt;p&gt;create function pg_concat( text, text ) returns text as &amp;#39;&lt;br&gt;begin&lt;br&gt;    if $1 isnull then&lt;br&gt;        return $2;&lt;br&gt;    else&lt;br&gt;       return $1 || $2;&lt;br&gt;    end if;&lt;br&gt;end;&amp;#39; language &amp;#39;plpgsql&amp;#39;;&lt;p&gt;--创建一个最终的结果函数：实现将最后一个连接符号清除&lt;p&gt;create function pg_concat_fin(text) returns text as &amp;#39;&lt;br&gt;begin&lt;br&gt;    return substr($1,1,length($1)-1);&lt;br&gt;end;&amp;#39; language &amp;#39;plpgsql&amp;#39;;&lt;p&gt;--创建聚集函数，入口参数basetype:text,状态传递函数：pg_concat,状态变量类型:text,结果函数finalfunc:pg_concat_fin&lt;br&gt;create aggregate pg_concat (&lt;br&gt;    basetype = text,&lt;br&gt;    sfunc = pg_concat,&lt;br&gt;    stype = text,&lt;br&gt;    finalfunc = pg_concat_fin);&lt;p&gt;--使用聚集函数进行统计:&lt;p&gt;select id,pg_concat(name||&amp;#39;,&amp;#39;)&lt;br&gt;from test&lt;br&gt;group by id;&lt;p&gt;--结果&lt;br&gt;  3 | dd&lt;br&gt;  2 | cc,ff&lt;br&gt;  1 | aa,bb&lt;p&gt;和第一种方法得到的结果是一样的，非常的方便。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3220123303953679202?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3220123303953679202/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3220123303953679202' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3220123303953679202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3220123303953679202'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/postgresql_14.html' title='PostgreSQL分类汇总方法'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5003676541354983966</id><published>2008-10-14T09:07:00.001+08:00</published><updated>2008-10-14T09:07:48.052+08:00</updated><title type='text'> PostgreSQL的许多小技巧</title><content type='html'>1.使用空间索引进行快速间隔数据类型的搜索.&lt;p&gt;间隔搜索有时候很慢，大部分原因是索引优化器不使用索引，并且在开始列和结束列比较独立。一个解决方案是使用空间索引，它可以把两个独立的值当做一个值来使用。&lt;p&gt;postgres=# EXPLAIN ANALYZE SELECT * FROM testip WHERE 19999999 BETWEEN &lt;br&gt;startip AND endip;&lt;p&gt;QUERY PLAN ----------------------------------------------------------------  &lt;br&gt;Seq Scan on testip (cost=0.00..19902.00 rows=200814 width=12) (actual &lt;br&gt;time=3.457..434.218 rows=1 loops=1) Filter: ((19999999 &amp;gt;= startip) AND &lt;br&gt;(19999999 &amp;lt;= endip)) Total runtime: 434.299 ms (3 rows) Time: 435,865 ms&lt;p&gt;结论：根据以上的执行计划，可以知道上边的查询使用的是序列扫描，花费的时间是：435,865 &lt;br&gt;ms&lt;p&gt;postgres=# CREATE INDEX ggg ON testip USING gist &lt;br&gt;((box(point(startip,startip),point(endip,endip))) box_ops);&lt;p&gt;使用如下的查询：&lt;br&gt;EXPLAIN ANALYZE SELECT * FROM testip WHERE &lt;br&gt;box(point(startip,startip),point(endip,endip)) @&amp;gt; box(point &lt;br&gt;(19999999,19999999), point(19999999,19999999));&lt;p&gt;结论：执行计划使用的是Bitmap Index Scan on ggg,花费的时间是：2,805 ms。可见相比以前的查询，使用空间索引的查询效率大大的提高了。&lt;p&gt;2.16进制到10进制的转换&lt;p&gt;我们已经有了系统函数将10进制转换成16进制：to_hex(11)  result: b 下边的函数实现将16进制的数转换成10进制。非常的简单：&lt;p&gt;create or replace function to_dec(text)&lt;br&gt;returns integer as $$&lt;br&gt;declare r int;&lt;br&gt;begin&lt;br&gt;    execute E&amp;#39;select x\&amp;#39;&amp;#39;||$1|| E&amp;#39;\&amp;#39;::integer&amp;#39; into r;&lt;br&gt;    return r;&lt;br&gt;end&lt;br&gt;$$ language plpgsql;&lt;p&gt;--测试&lt;br&gt;select to_dec(&amp;#39;ff&amp;#39;);&lt;p&gt;--结果&lt;br&gt;255&lt;p&gt;3.ALTER TABLE ALTER COLUMN USING 语法&lt;p&gt;在PostgreSQl里边，我们不能将varchar类型直接转换到bool，但是我们可以使用Using语法加判断后进行转换。&lt;p&gt;CREATE TABLE foo(a varchar);&lt;p&gt;INSERT INTO foo VALUES (&amp;#39;ano&amp;#39;);&lt;p&gt;--更改数据类型，会报错误信息&lt;br&gt;ALTER TABLE foo ALTER COLUMN a TYPE boolean ;&lt;br&gt;ERROR:  column &amp;quot;a&amp;quot; cannot be cast to type &amp;quot;pg_catalog.bool&amp;quot;&lt;p&gt;--使用Using语法更改数据类型&lt;br&gt;ALTER TABLE foo&lt;br&gt;ALTER COLUMN a TYPE boolean&lt;br&gt;      USING CASE a&lt;br&gt;      WHEN &amp;#39;ano&amp;#39; THEN true&lt;br&gt;      ELSE false END;&lt;p&gt;--更改成功&lt;br&gt;SELECT * FROM foo;&lt;p&gt;4.Quote_ident 的使用&lt;p&gt;使用双引号是一种防止SQL注入的方法，quote_ident 可以检查参数，如果参数中包含任何非法的字符，它会在参数两边加上&amp;quot;&amp;quot;&lt;br&gt;非常简单和有效，但是问题是&lt;a href="http://schema.name"&gt;schema.name&lt;/a&gt;，因为中间有点分割。问题如下：&lt;p&gt;select quote_ident(&amp;#39;public.foo&amp;#39;);&lt;p&gt;他不能在schema和name两边加上双引号。&lt;p&gt;我们可以通过使用函数来按点分割上边的对象名称，在每个单独的对象上使用quote_ident来完成我们的目的:&lt;p&gt;--对数组进行表转换，针对每一列来使用quote_ident&lt;br&gt;CREATE OR REPLACE FUNCTION quote_array(text[])&lt;br&gt;RETURNS text AS $$&lt;br&gt;SELECT array_to_string(array(SELECT quote_ident($1[i])&lt;br&gt;                                FROM generate_series(1, array_upper($1,1)) &lt;br&gt;g(i)),&lt;br&gt;                       &amp;#39;.&amp;#39;)&lt;br&gt;$$ LANGUAGE SQL IMMUTABLE;&lt;p&gt;--创建函数按点进行拆分字符串&lt;br&gt;CREATE OR REPLACE FUNCTION quote_schema_ident(text)&lt;br&gt;RETURNS text AS $$&lt;br&gt;SELECT quote_array(string_to_array($1,&amp;#39;.&amp;#39;))&lt;br&gt;$$ LANGUAGE SQL IMMUTABLE;&lt;p&gt;--测试&lt;br&gt;select quote_schema_ident(&amp;#39;public.foo tab&amp;#39;);&lt;p&gt;&lt;br&gt;5.我们已经习惯使用PostgreSQL的exception来捕捉错误，但是错误信息一直不知道如何取得，SQLERRM变量可以给我们详细的信息&lt;br&gt;以下是一个具体的示例：&lt;p&gt;CREATE OR REPLACE FUNCTION fn_log_error(p_function varchar, p_location int, &lt;br&gt;p_error varchar)&lt;br&gt;RETURNS void AS $$&lt;br&gt;DECLARE&lt;br&gt;  v_sql varchar;&lt;br&gt;  v_return varchar;&lt;br&gt;  v_error varchar;&lt;br&gt;BEGIN&lt;br&gt;  --连接数据库&lt;br&gt;  PERFORM dblink_connect(&amp;#39;connection_name&amp;#39;, &amp;#39;dbname=...&amp;#39;);&lt;p&gt;  --拼凑插入的字符串&lt;br&gt;  v_sql := &amp;#39;INSERT INTO error_log (function_name, location, error_message, &lt;br&gt;error_time) &amp;#39;&lt;br&gt;           || &amp;#39;VALUES (&amp;#39;&amp;#39;&amp;#39; || p_function_name || &amp;#39;&amp;#39;&amp;#39;, &amp;#39;&lt;br&gt;           || p_location || &amp;#39;, &amp;#39;&amp;#39;&amp;#39; || p_error || &amp;#39;&amp;#39;&amp;#39;, clock_timestamp())&amp;#39;;&lt;br&gt;  --远程执行&lt;br&gt;  SELECT INTO v_return *&lt;br&gt;     FROM dblink_exec(&amp;#39;connection_name&amp;#39;, v_sql, false);&lt;p&gt;  --获取远程的错误信息&lt;br&gt;  SELECT INTO v_error *&lt;br&gt;     FROM dblink_error_message(&amp;#39;connection_name&amp;#39;);&lt;br&gt;  --如果出现错误则抛出异常&lt;br&gt;  IF position(&amp;#39;ERROR&amp;#39; in v_error) &amp;gt; 0 OR position(&amp;#39;WARNING&amp;#39; in v_error) &amp;gt; 0 &lt;br&gt;THEN&lt;br&gt;    RAISE EXCEPTION &amp;#39;%&amp;#39;, v_error;&lt;br&gt;  END IF;&lt;p&gt;  PERFORM dblink_disconnect(&amp;#39;connection_name&amp;#39;);&lt;br&gt;EXCEPTION&lt;br&gt;  WHEN others THEN&lt;br&gt;    --使用SQLERRM 来显示错误信息&lt;br&gt;    PERFORM dblink_disconnect(&amp;#39;connection_name&amp;#39;);&lt;br&gt;    RAISE EXCEPTION &amp;#39;(%)&amp;#39;, SQLERRM;&lt;br&gt;END;&lt;br&gt;$$ LANGUAGE plpgsql SECURITY DEFINER;&lt;p&gt;SQLERRM是一个非常有用的变量，可以详细记录错误的具体信息，帮助我们分析执行中发现的错误。&lt;p&gt;6.循环优化技巧&lt;p&gt;plpgsql对于非SQL操作效率不是特别高。Plpgsql 不喜欢字符或者字符数组的累计操作，当我们也不能用Perl，因此我们只能用SQL&lt;p&gt;--使用循环，结果会比较慢的函数&lt;p&gt;CREATE OR REPLACE FUNCTION SlowList(int) -- slow function, usable for N &amp;lt;= &lt;br&gt;100&lt;br&gt;RETURNS varchar AS $$&lt;br&gt;DECLARE s varchar = &amp;#39;&amp;#39;;&lt;br&gt;BEGIN&lt;br&gt;  FOR i IN 1..$1 LOOP&lt;br&gt;    s := &amp;#39;&amp;lt;item&amp;gt;&amp;#39; || i || &amp;#39;&amp;lt;/item&amp;gt;&amp;#39;;  -- slow is s := s || ..&lt;br&gt;  END LOOP;&lt;br&gt;  RETURN s;&lt;br&gt;END; $$ LANGUAGE plpgsql IMMUTABLE;&lt;p&gt;--使用SQL，结果会比较快的函数&lt;p&gt;CREATE OR REPLACE FUNCTON FastList(int) -- fast function&lt;br&gt;RETURNS varchar AS $$&lt;br&gt;BEGIN&lt;br&gt;  RETURN array_to_string(ARRAY(SELECT &amp;#39;&amp;lt;item&amp;gt;&amp;#39; || i || &amp;#39;&amp;lt;/item&amp;gt;&amp;#39;&lt;br&gt;                                  FROM generate_series(1, $1) g(i)),&lt;br&gt;                         &amp;#39;&amp;#39;);&lt;br&gt;END; $$ LANGUAGE plpgsql IMMUTABLE;&lt;p&gt;--结果:在循环100以下的时候差别并不是很大，当循环更多的时候，差距就非常明显，都来试试吧！&lt;p&gt;7.查询一组之中的头n条记录&lt;p&gt;我们一般的做法是使用子查询如下：&lt;p&gt;SELECT * FROM people WHERE id IN (&lt;br&gt;     SELECT id FROM people s&lt;br&gt;       WHERE people.category = s.category&lt;br&gt;       ORDER BY age LIMIT 2)&lt;br&gt;ORDER BY category, age;&lt;p&gt;使用连接我们也可以达到同样的效果如下：&lt;p&gt;SELECT s1.*&lt;br&gt;   FROM people s1&lt;br&gt;        LEFT JOIN&lt;br&gt;        people s2&lt;br&gt;        ON s1.category = s2.category AND s1.age &amp;lt; s2.age&lt;br&gt;  GROUP BY &lt;a href="http://s1.id"&gt;s1.id&lt;/a&gt;, s1.category&lt;br&gt;  HAVING COUNT(&lt;a href="http://s2.id"&gt;s2.id&lt;/a&gt;) &amp;lt;= 1&lt;br&gt;  ORDER BY s1.category, COUNT(&lt;a href="http://s2.id"&gt;s2.id&lt;/a&gt;);&lt;p&gt;说明:这个SQL语句的含义是找到同一类比自己的age大的记录，最后判断比自己大的记录的个数，如果是0，那么应该排名第一，&lt;br&gt;如果是1，那么排名第二(HAVING COUNT(&lt;a href="http://s2.id"&gt;s2.id&lt;/a&gt;) &amp;lt;= 1)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5003676541354983966?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5003676541354983966/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5003676541354983966' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5003676541354983966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5003676541354983966'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/postgresql.html' title=' PostgreSQL的许多小技巧'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5926060938579894613</id><published>2008-10-14T09:05:00.001+08:00</published><updated>2008-10-14T09:05:28.462+08:00</updated><title type='text'> slony1-1.2.10配置简介</title><content type='html'>PostgreSQL支持许多复制机制,但是个人觉得slony应该是一个不错的选择,因为slony支持异步,单向,级联的将数据从一个源头复制到多个订阅者手中.&lt;p&gt;异步的意思是一个订阅者的数据不一定是最新的,订阅者可以离线,而并不影响数据源的复制.而当订阅者再次连线后,它可以接收到所有的数据.当然,如果订阅者离线了很长的时间,那么它所要接收的数据将对网络和数据源产生很大的负担.&lt;p&gt;单向意味着你只能在数据源对表进行更改,并将结果复制到订阅者,而不能在订阅者来对表进行更改.&lt;p&gt;级连意味着一个订阅者也可以作为数据的源头来进行数据的发布,从而分担了主数据源的负担.&lt;p&gt;下边我们就开始配置slony, 我是在FreeBSD下配置的,并且已经分别在两台机器上安装好了PostgreSQL 8.2.4和slonyI-1.2.10,注意这里的版本是非常重要的,因为我在以前装 &lt;br&gt;slony1-1.2.9来进行配置的时候会报版本错误.所以还是推荐大家使用最新的版本.&lt;p&gt;在配置之前我们还需要把设置两台PostgreSQL的配置文件pg_hba.conf ,添加如下可以让对方使用用户,密码的访问方式.&lt;p&gt;host    all         all         &lt;a href="http://10.218.143.17/32"&gt;10.218.143.17/32&lt;/a&gt;      password&lt;p&gt;host    all         all         &lt;a href="http://10.218.143.35/32"&gt;10.218.143.35/32&lt;/a&gt;      password&lt;p&gt;下边我们就开始配置slony,配置slony的过程就是通过slonik来输入配置的命令,我们把slonik的配置命令都写成脚本的形式来执行,方便复用.&lt;p&gt;第一个脚本:&lt;a href="http://preamble.sk"&gt;preamble.sk&lt;/a&gt;&lt;p&gt;define CLUSTER  test;&lt;br&gt;define dc35 1;&lt;br&gt;define dc17 2;&lt;br&gt;define fqn fully qualified name;&lt;br&gt;define SUCCESS 0;&lt;br&gt;define FAILURES 1;&lt;p&gt;cluster name = @CLUSTER;&lt;br&gt;node @dc35 admin conninfo = &amp;#39;dbname=portal host=&lt;a href="http://10.218.143.35"&gt;10.218.143.35&lt;/a&gt; user=pgsql &lt;br&gt;password=pgsql&amp;#39;;&lt;br&gt;node @dc17 admin conninfo = &amp;#39;dbname=portal host=&lt;a href="http://10.218.143.17"&gt;10.218.143.17&lt;/a&gt; user=pgsql &lt;br&gt;password=pgsql&amp;#39;;&lt;p&gt;脚本很简单,就是定义一些常量,集群的名称和节点的信息.注意以后的脚本都要包含这个脚本来引用这些常量.&lt;p&gt;第二个脚本:initCluster.sk&lt;p&gt;#!/usr/local/bin/slonik&lt;p&gt;include &amp;lt;&lt;a href="http://preamble.sk"&gt;preamble.sk&lt;/a&gt;&amp;gt;;&lt;p&gt;#初始话集群和主节点&lt;p&gt;init cluster (id=@dc35,comment=&amp;#39;primary node&amp;#39;);&lt;p&gt;#保存节点信息&lt;p&gt;store node&lt;br&gt;(&lt;br&gt;        id = @dc17,&lt;br&gt;        comment = &amp;#39;secondary node - dc17&amp;#39;&lt;br&gt;);&lt;p&gt;#配置连接信息,就是告诉订阅服务器如何来访问数据源的服务器&lt;p&gt;store path&lt;br&gt;(&lt;br&gt;        server = @dc35,&lt;br&gt;        client = @dc17,&lt;br&gt;        conninfo =&amp;#39;dbname=portal host=&lt;a href="http://10.218.143.35"&gt;10.218.143.35&lt;/a&gt; user=pgsql &lt;br&gt;password=pgsql&amp;#39;&lt;br&gt;);&lt;p&gt;store path&lt;br&gt;(&lt;br&gt;        server = @dc17,&lt;br&gt;        client = @dc35,&lt;br&gt;        conninfo =&amp;#39;dbname=portal host=&lt;a href="http://10.218.143.17"&gt;10.218.143.17&lt;/a&gt; user=pgsql &lt;br&gt;password=pgsql&amp;#39;&lt;br&gt;);&lt;p&gt;第三个文件:buildSet.sk&lt;p&gt;#!/usr/local/bin/slonik&lt;p&gt;include&amp;lt;&lt;a href="http://preamble.sk"&gt;preamble.sk&lt;/a&gt;&amp;gt;;&lt;p&gt;#创建复制集,复制集是slony最小的复制单位.&lt;p&gt;create set (id=1,origin=@dc35,comment=&amp;#39;dc35&amp;#39;);&lt;p&gt;#向复制集中添加表&lt;p&gt;set add table (set id=1,origin=@dc35,id=1,fully qualified &lt;br&gt;name=&amp;#39;public.f_slony&amp;#39;);&lt;p&gt;第四个文件:subscribeSet.sk&lt;p&gt;#!/usr/local/bin/slonik&lt;p&gt;include&amp;lt;&lt;a href="http://preamble.sk"&gt;preamble.sk&lt;/a&gt;&amp;gt;;&lt;p&gt;#创建订阅,设置数据源和数据目标.&lt;p&gt;subscribe set (id=1,provider=@dc35,receiver=@dc17,forward=yes);&lt;p&gt;执行完以上4个文件后,slony的整体结构我们基本上已经配置好了.接下来就要启动slon进程来开始复制的工作了,首先我们要写一个配置文件,让slon进行来连接哪个数据库.&lt;p&gt;文件:dc17.slon&lt;p&gt;cluster_name=&amp;#39;test&amp;#39;&lt;br&gt;conn_info=&amp;#39;dbname=portal host=&lt;a href="http://10.218.143.17"&gt;10.218.143.17&lt;/a&gt; user=pgsql password=pgsql&amp;#39;&lt;p&gt;文件:dc35.slon&lt;p&gt;cluster_name=&amp;#39;test&amp;#39;&lt;br&gt;conn_info=&amp;#39;dbname=portal host=&lt;a href="http://10.210.143.35"&gt;10.210.143.35&lt;/a&gt; user=pgsql password=pgsql&amp;#39;&lt;p&gt;启动slon进程:&lt;p&gt;slon -f dc35.slon &amp;gt;dc35.log &amp;amp;&lt;p&gt;slon -f dc17.slon &amp;gt;dc17.log &amp;amp;&lt;p&gt;启动之后观察进程的log信息,如果没有什么错误提示,那就基本上配置成功了,接下来我们就可以测试.我的测试表是f_slony,我们可以对f_slony进行删除修改操作,然后观察订阅的结果.默认slon的扫描频率是2s,我们可以设置这个时间间隔.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5926060938579894613?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5926060938579894613/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5926060938579894613' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5926060938579894613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5926060938579894613'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/slony1-1210.html' title=' slony1-1.2.10配置简介'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-8173655336024501351</id><published>2008-10-08T12:43:00.001+08:00</published><updated>2008-10-08T12:43:41.946+08:00</updated><title type='text'>技术两则</title><content type='html'>1、计算机加入域的时候，提示限制已经满，无法加入的时候，可在域服务器上执行adsiedit.msc（此工具存在于windows安装盘的supporttools中的support tools中。展开DOMAIN NC节点，选择&amp;quot;DC=&amp;quot;对象，右键选择 &lt;br&gt;属性，选择ms-DS-MachineAccountQutota进行编辑即可。&lt;br&gt;2、ISA中RADMIN服务。装了一台代理服务器，配置windows2003 R2 SP2，代理软件为ISA &lt;br&gt;2006 SP1,服务器上装有软件(radmin ( remote administrator 2.2)，可怎么也联不上。于是不停的实验，最后成功（不过联接速度不快）。&lt;br&gt;主要是元素为TCP 入站 端口为RADMIn的端口号(inbound,outbound）设成一致即可。还一个主要的就是要在辅助要设tcp 出站 端口为radmin 端口。&lt;br&gt;原因：一般都设前面的，后面不设。当你发起联接的时候，也有数据流出（要不怎么双向？）不知道大家明白没？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-8173655336024501351?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/8173655336024501351/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=8173655336024501351' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8173655336024501351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8173655336024501351'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/blog-post.html' title='技术两则'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5944594869738898569</id><published>2008-10-07T14:02:00.002+08:00</published><updated>2008-10-07T14:03:07.515+08:00</updated><title type='text'>PostgreSQL 在 FreeBSD 上的大版本升级</title><content type='html'>唉！升级...升级...升级...这一阵子一直升级，这次轮到 PostgreSQL 大升级。PostgreSQL 不像其它软件，即使是 8.2 升级到 8.3，也必须大改，所以无法直接用 upgrade 工具直接升。即使是 Windows 版本，也必须劳心费力一番。这次我用 FreeBSD 版本的升级做为例子，来说明最简单也是最正确的大改版升级步骤。&lt;br /&gt;首先，请先把原本数据库的数据完全备份下来。如果你是 Windows 的使用者或是 Linux 的使用者，你可以考虑使用 pgAdmin III 的「工具」选单中的「备份」或「备份全域」来做，这样简单很多，但是由于 pgAdmin III 的说明太少，我实在看不懂「备份」对话框中选项的含意，所以干脆不用。最正式的方法是使用在 console 下的工具：pg_dump 和 pg_dumpall。两者的差别在于，前者可以针对某个特定的 database 做备份，而后者一般用来把整个服务器数据做完整的备份。我建议直接使用 pg_dumpall 比较方便和快速。方法如下：&lt;br /&gt;$ pg_dumpall &gt; filename&lt;br /&gt;而 filename 你可以自己取，比如 host_a.20080206.full.dump 之类的。名称中加入日期可以让你更清楚知道这个备份档备份的日期。加入 full 字眼，可以提醒自己，这是完整备份，而非一般维护时所做的连续性部份备份的一份。如果你所管理的 PostgreSQL 有超过一台以上，那么最好连数据库主机名称都注明。&lt;br /&gt;对了，差点忘了一件极重要的事！在 Windows 上，只要你使用 administrators 群组中的任何一位使用者登入，然后从开始菜单→PostgreSQL 8.3→Command Prompt，就可以打开「命令提示字符」，而且可以下达 pg_dumpall 指令；但是，在 FreeBSD，一般安装时，预设 root 是不允许执行 PostgreSQL 的相关指令的，所以请先切换成 pgsql 用户，如果你没更动 pgsql 的密码，那么预设的密码很「随机」，也就是任你怎么猜也都猜不出来，但是你可以先用 su 切成 root，再用 su - pgsql 切换成 pgsql 使用者，不用输入任何密码即可，这时就可以执行上述指令。但是请注意，这时最好把这个备份文件移到安全位置，以免继续进行的安装过程中不傎误砍。所以这时候你最好是先跳回 root，请下 exit 指令，然后用 cp 指令把刚才那个 dump 檔 copy 到任何你暂存的位置。&lt;br /&gt;接着正式执行安装。在安装新版本之前，必须先移除旧版本，否则两个 daemon 会抢同一个 TCP port，开机时会有无法预知的状况出现。首先先看一下你的服务器中，目前装了哪些和 PostgreSQL 相关的 package：&lt;br /&gt;# pkg_info  grep postgresql&lt;br /&gt;这时候你至少可以看到两个 package 出现在清单中，而我多了一个：&lt;br /&gt;postgresql-client-8.2.6_1 PostgreSQL database (client)postgresql-contrib-8.2.6 The contrib utilities from the PostgreSQL distributionpostgresql-server-8.2.6 The most advanced open-source database available anywhere&lt;br /&gt;一般来说，如果你没有安装Server instrumentation 功能，那么应该只有 client 和 server 两个 package。但是这个小清单并不完整，如果你还有安装 php 和 PostgreSQL 相关的驱动程序，那么这时候并不会出现在这个清单当中。不用担心，你若移除的顺序不对，出现相依的套件，那么把相依套件移除，再来移除目标套件即可。只是这时候你最好拿只笔记下你一共移除了哪些套件，将来才能再一一重新安装回去。我们先以这三个 package 来说好了，如果你没移除旧版本的 server，那么直接移除 client 会被提醒，而且停止进行安装动作。同样的，如果你没先移除旧版本的 contrib 和 php 相关 package，你在移除 client 时也会因为相依套件尚未被移除，而被停止移除 client 的动作。所以若以上述三者为例，则移除的顺序为：&lt;br /&gt;# /usr/local/etc/rc.d/postgresql stop &lt;-- 先停掉目前的 PostgreSQL server# pkg_delete postgresql-contrib-8.2.6# pkg_delete postgresql-server-8.2.6# pkg_delete postgresql-client-8.2.6_1&lt;br /&gt;这时请把 /usr/local/pgsql/data 整个目录移走，像我只是把它改个名称，而让它继续留着，说不定哪天还会用到目录中的某些档案：mv /usr/local/pgsql/data /usr/local/pgsql/data_8.2。然后就可以开始使用 port 来安装 PostgreSQL 8.3 了。在安装前，请先确定你的服务器上的 port tree 是否已是最新的版本，如果你的 port tree 是在 2008/2/5 天亮前更新的，可能 postgresql-server-8.3 还不是最新版本，请先手动更新 port tree。如果已是最新版本，那么切到该 port 目录：&lt;br /&gt;# cd /usr/ports/databases/postgresql83-server# make install clean&lt;br /&gt;FreeBSD 会自动帮你将 8.3 版的 server 和 client 都一并装好。接着把 contrib package 也装起来：&lt;br /&gt;# cd ../postgresql-contrib# make install clean&lt;br /&gt;如果你曾经把 php5 的 driver 移除掉或 JDBC 等等等之前移除掉的套件，现在也请用同样的方法把所有新的版本一一装回去。这样就好了吗？还早，请先看一下你的 /usr/local/pgsql 下是否已经建好新的数据库？&lt;br /&gt;# ls /usr/local/pgsql&lt;br /&gt;如果这个目录下只出现一个刚才更名的 data_8.2，那么代表 Makefile 并没有自动帮你做 initdb，请执行：&lt;br /&gt;# /usr/local/etc/rc.d/postgresql initdb &lt;a href="http://www.cheeren.com/?q=node/152#[1]#[1]"&gt;[1]&lt;/a&gt;&lt;br /&gt;这时你再下 ls /usr/local/pgsql 指令时，就可以看到多出一个 data 目录了，这样才能正确启动 PostgreSQL：&lt;br /&gt;# /usr/local/etc/rc.d/postgresql start &lt;a href="http://www.cheeren.com/?q=node/152#[2]#[2]"&gt;[2]&lt;/a&gt;&lt;br /&gt;如果没出现任何错误讯息，那么先恭喜你，安装好了。但是工作才完成一半，再来是把原来备份的数据回存回数据库中：&lt;br /&gt;# su - pgsql$ psql -f filename postgres&lt;br /&gt;也就是先切成 pgsql 使用者，接着执行 PostgreSQL 的交互式指令输入工具：psql，然后把刚才你的 dump 档的名称(这里当然是完整路径名称)取代上面的 filename。接着一些讯息代表着数据库回存的动作，正在做什么动作。如果一切错误讯息都没有出现过，那么恭喜你，工作完成了 80%。对于 Windows 的使用者来说，只要记住最后一条指令，就可以把刚才 pg_dumpall 所备份的数据回存了。Windows 的使用者真幸福。&lt;br /&gt;什么？才完成 80%？是的，有两个档可能之前的版本你有更动过，分别是 postgresql.conf 和 pg_hba.conf，它们在 FreeBSD 中应该位于 /usr/local/pgsql/data 目录下，请把之前曾经更动过的改回去，但是请把 release notes 先读过一遍，因为 postgresql.conf 中很多管理项目都更动过了，可能之前你所更改的项目，8.3 版已经把该项和其它项目合并，并取了新的项目名称了，先读过 release notes 的 E.1.2.2. Configuration Parameters 是很重要的。还有，刚才如果把旧的 8.2 版的 /usr/local/pgsql/data 目录直接删掉，那此刻就糗了，你必须用你的记忆力回想你曾经更动过的项目和内容，所以我才会建议只需把它更名，保留下来。&lt;br /&gt;若是你对 PostgreSQL 的备份和回存有兴趣，英文程序也还可以，那么请进一步参考 PostgreSQL 的在线说明：&lt;a title="Chapter 24. Backup and Restore" href="http://www.postgresql.org/docs/8.3/static/backup.html" target="_blank"&gt;Chapter 24. Backup and Restore&lt;/a&gt;。&lt;br /&gt;附注：&lt;a name="[1]"&gt;&lt;/a&gt;[1] 当然啰，如果新的 data 目录已经生成，也就是 Makefile 已经自动帮你执行 initdb 的动作了，那么 initdb 这个动作就可以省了。我会特别这样提的原因是，我现这两天的抢先版本的 Makefile 怪怪的，有时不会自动执行 initdb 动作。 &lt;a name="[2]"&gt;&lt;/a&gt;[2] 如果你没有像我这么麻烦的用 pg_dumpall 和 psql 来备份回存，直接升级(还是得先移除旧版本再安装新版本)，表面上看起来还是可以升级，但是，事实上 Makefile 会把你旧版本的 postgresql.conf 和 pg_hba.conf 复制一份到新的 data 目录中。如我文中所说的，postgresql.conf 在这个版本中有大更动，因此，当你打算启动数据库时，会出现 FATAL ERROR！解决方法很简单，用不着重灌，把新的 data 目录移走(一样用更名的)，执行 /usr/local/etc/postgresql initdb，重做一次 initdb，就会有一个全新版本的 data 了。[3] 这篇文章仅适用于负载不大的服务器上，倘若你的服务器是 mission critical 的大用量服务器，虽然基本的升级概念是一样的，也就是数据库大升级等同重新安装，所以服务势必一定得中断，但是事前的演练和良好的计划，可以让停机服务的时间减少。在这种情况，建议必须得增加备援服务器，在主服务器升级的同时，让备援服务器先暂时服务。说到这里，就得牵涉到「数据库复制」(replication) 的主题了。等我有空再来写一篇 PostgreSQL 和 replication 相关的文章。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5944594869738898569?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5944594869738898569/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5944594869738898569' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5944594869738898569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5944594869738898569'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/postgresql-freebsd.html' title='PostgreSQL 在 FreeBSD 上的大版本升级'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5504318480522744638</id><published>2008-10-07T14:02:00.001+08:00</published><updated>2008-10-07T14:02:42.653+08:00</updated><title type='text'>FreeBSD 安装 PostgreSQL 的笔记</title><content type='html'>本文是笔者用来记录 FreeBSD 安装 PostgreSQL 的笔记，文中有提到为了增加 PostgreSQL 的 max_connections 数目，而调整了 FreeBSD 系统的 /etc/sysctl.conf &amp;amp; /boot/loader.conf 两个档案。如果你只是想安装 PostgreSQL 玩玩，而不需要调整 max_connections 数目，你可以忽略修改上述两个档案的内容。&lt;br /&gt;1.修改 FreeBSD 系统参数&lt;br /&gt;修改 /etc/sysctl.conf 增加以下指令kern.ipc.shmmax=134217728kern.ipc.shmall=32768kern.ipc.semmap=256&lt;br /&gt;修改 /boot/loader.conf 增加以下指令kern.ipc.semmni=256kern.ipc.semmns=512kern.ipc.semmnu=256&lt;br /&gt;2.安装 PostgreSQLcd /usr/ports/databases/postgresql83-servermake install&lt;br /&gt;安装 libxml2 模块cd /usr/ports/textproc/libxml2make install&lt;br /&gt;安装 libxslt 模块cd /usr/ports/textproc/libxsltmake install&lt;br /&gt;安装 XML for PostgreSQLcd /usr/ports/databases/postgresql83-server/work/postgresql-8.3.3/contrib/xml2gmake install&lt;br /&gt;安装 adminpackcd /usr/ports/databases/postgresql83-server/work/postgresql-8.3.3/contrib/adminpackgmake install&lt;br /&gt;3.修改 /etc/rc.conf 增加以下指令，以便开机自动执行 PostgreSQL&lt;br /&gt;postgresql_enable=”YES”# optionalpostgresql_data=”/pgdb”postgresql_flags=”-w -s -m fast”postgresql_initdb_flags=”–encoding=utf-8 –lc-collate=C”postgresql_class=”default”&lt;br /&gt;4.初始 PostgreSQL 数据库建立放置 PostgreSQL 数据库档案的目录，同时修改该数据匣权限，改完权限后便初始化 PostgreSQL 数据库&lt;br /&gt;mkdir /pgdb&lt;br /&gt;chown pgsql:pgsql /pgdb&lt;br /&gt;su -l pgsql -c “initdb -D /pgdb -E utf8″&lt;br /&gt;5.修改 /pgdb/postgresql.conf 以便符合实际系统运作需求，这边大家可以斟酌调整listen_addresses = ‘*’ //聆听其它主机联机讯号max_connections = 200 //增加同时联机数量#log_destination = ’syslog’ // 批注log_destination = ’stderr’ // 标准输出 loglog_directory = ‘pg_log’log_filename = ‘postgresql-%Y-%m-%d_%H%M%S.log’log_rotation_age = 1dlog_rotation_size = 10MBclient_min_messages = noticelog_min_messages = noticelog_error_verbosity = defaultlog_min_error_statement = errorlog_duration = onlog_line_prefix = ‘%u %d %h %i’log_statement = ‘mod’stats_start_collector = onstats_row_level = on&lt;br /&gt;6.修改 /pgdb/pg_hba.conf 以便可以透过网络连接该 PostgreSQL 服务器。# “local” is for Unix domain socket connections onlylocal all all trust# IPv4 local connections:host all all 127.0.0.1/32 trusthost all all 10.3.1.21/32 trusthost all all 10.3.1.22/32 trusthost all all 10.3.1.23/32 trusthost all all 10.1.1.0/32 trusthost all all 10.2.1.0/24 md5# IPv6 local connections:host all all ::1/128 md5host all smart_teacher 10.3.1.0/24 md5host all postgres 10.3.1.0/24 md5host all ischool 10.3.1.0/24 md5&lt;br /&gt;7.启动 PostgreSQL/usr/local/etc/rc.d/postgresql start&lt;br /&gt;8.建立预设使用者su -l pgsql -c “createuser -P”&lt;br /&gt;账号名称：postgres&lt;br /&gt;9.启用其它相关外挂套件&lt;br /&gt;启用 adminpacksu -l pgsql -c “psql -U postgres postgres &lt; /usr/local/share/postgresql/contrib/adminpack.sql”&lt;br /&gt;启用 XML 支援 for PostgreSQLsu -l pgsql -c “psql -U postgres postgres &lt; /usr/local/share/postgresql/contrib/pgxml.sql”&lt;br /&gt;完成以上步骤，基本上你的 PostgreSQL 应该就可以正常运作了。&lt;br /&gt;— 2008/08/13 新增 —&lt;br /&gt;PostgreSQL 安装时修改 Makefile 档案，可以解决 xslt_process 无法安装的问题&lt;br /&gt;找到底下设定&lt;br /&gt;CONFIGURE_ARGS+=–with-libraries=${LOCALBASE}/lib \–with-includes=${LOCALBASE}/include \–enable-thread-safety \–with-docdir=${DOCSDIR} \–with-libxslt \–with-libxml增加红色的部份&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5504318480522744638?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5504318480522744638/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5504318480522744638' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5504318480522744638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5504318480522744638'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/freebsd-postgresql.html' title='FreeBSD 安装 PostgreSQL 的笔记'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3880335112717937904</id><published>2008-10-07T13:06:00.001+08:00</published><updated>2008-10-07T13:08:30.696+08:00</updated><title type='text'>ASP.Net2.0连接PostgreSQL数据库</title><content type='html'>PostgreSQL 是一种非常先进的对象-关系型数据库管理系统（ORDBMS），目前功能最强大，特性最丰富和最先进的自由软件数据库系统。有些特性甚至连商业数据库都不具备。这个起源于伯克利（BSD）的数据库研究计划目前已经衍生成一项国际开发项目，并且有非常广泛的用户。自从MySQL 被Sun 收购后，相信很多对该收购不放心的朋友会转而看好PostgreSQL 的前途。之前我曾经博客中介绍过Ubuntu中通过源码安装编译安装PostgreSQL。在ASP.Net中使用PostgreSQL数据库作为后端数据存储，连接方法有以下两种：&lt;br /&gt; &lt;br /&gt;一、采用商业组件的方式PostgreSQLDirect .NET目前商业组件使用较多的是PostgreSQLDirect .NET，不过这个需要付费，最便宜的标准版网上报价也要1000元人民币。PostgreSQLDirect .NET是一款为Microsoft .NET Framework提供直接PostgreSQL数据库连接的数据发生器控件。它完全基于ADO.NET方法，因此您完全可以采用标准ADO.NET数据提供的方法来使用它。安装之后会在Visual Studio 2005工具栏出现PostgreSQLDirect组件包含了PgSqlConnection PgSqlCommand PgSqlDataAdapter 等控件(如下图)，然后在项目里添加引用：CoreLab.Data和CoreLab.PostgreSql，可以拖放控件连接数据库，使用方法2005的和自带控件基本相同。也可以写代码连接数据库，具体代码如下：&lt;br /&gt;PgSqlDataSet ds = new PgSqlDataSet();string sql = "SELECT * FROM test WHERE tid=3000";PgSqlConnection con = new PgSqlConnectio("user id=username;Password=pwd;host=hostname;database=test");PgSqlDataAdapter da = new PgSqlDataAdapter(sql, con);da.Fill(ds);this.dataGridView1.DataSource = ds;this.dataGridView1.DataMember = ds.Tables[0].ToString();&lt;br /&gt;&lt;br /&gt;二、使用开源组件Npgsql&lt;br /&gt;Npgsql是一个为开源数据库PostgreSQL提供.NET Framework平台下数据驱动服务的库函数程序集(.NET Data Provider)，它允许用户在.NET Framework平台下建立用于访问PostgreSQL数据库的应用。&lt;br /&gt;解压后将其中的两个dll文件复制到应用程序的Bin目录下，&lt;br /&gt;然后在项目里添加引：Mono.Security和NPgSQL，&lt;br /&gt;在代码里添加using NpgSQL;&lt;br /&gt;具体代码如下:&lt;br /&gt;string sql = "SELECT * FROM test WHERE tid=3000";&lt;br /&gt;NpgsqlConnection con = new NpgsqlConnection("server=hostname;uid=username;pwd=pwd;database=test");&lt;br /&gt;NpgsqlDataAdapter da = new NpgsqlDataAdapter(sql,con);&lt;br /&gt;DataSet ds = new DataSet();&lt;br /&gt;da.Fill(ds);&lt;br /&gt;this.dataGridView1.DataSource = ds;&lt;br /&gt;this.dataGridView1.DataMember = ds.Tables[0].ToString();&lt;br /&gt;&lt;br /&gt;相关链接：&lt;br /&gt;PostgreSQLDirect .NET官方网站 &lt;a href="http://www.crlab.com/pgsqlnet/"&gt;http://www.crlab.com/pgsqlnet/&lt;/a&gt;&lt;br /&gt;Npgsql官方网站 &lt;a href="http://pgfoundry.org/projects/npgsql"&gt;http://pgfoundry.org/projects/npgsql&lt;/a&gt;&lt;br /&gt;PostgreSQL官方网站 &lt;a href="http://www.postgresql.org/"&gt;http://www.postgresql.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3880335112717937904?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3880335112717937904/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3880335112717937904' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3880335112717937904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3880335112717937904'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/10/aspnet20postgresql.html' title='ASP.Net2.0连接PostgreSQL数据库'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2066095334086889205</id><published>2008-09-15T18:57:00.001+08:00</published><updated>2008-09-15T18:57:23.632+08:00</updated><title type='text'>FlyTreeView V4.3.1.43破解手记</title><content type='html'>&lt;div class="postbody"&gt;&lt;br /&gt;    官方网址：&lt;a href="http://www.9rays.net/" target="_blank"&gt;http://www.9rays.net/&lt;/a&gt;&lt;br /&gt;     未破解前，会有45天的试用期限制。超其以后运行时会有异常：“9Rays.Net FlyTreeView for ASP.NET 2.0 evaluation  period has&lt;br /&gt;&lt;br /&gt;expired.”&lt;br /&gt;    破解工具：ildasm,ilasm,StrongNameRemove20, UEdit,  Reflector(个人习惯使用，这个随便了) [注] ildasm[vs2003版]可以到看雪&lt;span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CF%C2%D4%D8"&gt;下载&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;修改版，原版的有限制&lt;br /&gt;    这个&lt;span class="t_tag" onclick="tagshow(event)" href="tag.php?name=DLL"&gt;DLL&lt;/span&gt;的破解的关键是让它永不过期或者修改一个足够大的时间值让我们使用就可以了，网上有破解的就是直接修改它的过期期限，使用&lt;br /&gt;&lt;br /&gt;用户可以使用的期限加长，达到破解。在本例中，我使用的是直接把过期异常干掉，使得永不过期。&lt;br /&gt;&lt;br /&gt;  1.  用ildasm打开NineRays.WebControls.FlyTreeView.dll，转存为aaa.il；&lt;br /&gt;&lt;br /&gt;  2.  找到用UEdit打开aaa.il，并找到"has expired"，来到如下的&lt;span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B4%FA%C2%EB"&gt;代码&lt;/span&gt;处理&lt;br /&gt;//  为了便于分析，我把reflactor的反编译代码贴出来&lt;br /&gt;public FlyTreeView()&lt;br /&gt;{&lt;br /&gt;    this.NodeEvents  = new List&lt;flytreenodeeventargs&gt;();&lt;br /&gt;    DateTime maxValue =  DateTime.MaxValue;&lt;br /&gt;   &lt;br /&gt;    //  当然这个异常我们也可以去掉，但在本次过程中，我们主要去掉下面那个过期的异常部分&lt;br /&gt;    try&lt;br /&gt;    {&lt;br /&gt;        maxValue  = File.GetLastWriteTime(base.GetType().Assembly.Location);&lt;br /&gt;    }&lt;br /&gt;     catch&lt;br /&gt;    {&lt;br /&gt;        throw new Exception("Unknown TRIAL version error has  occurred."&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/wink.gif" border="0" smilieid="4" /&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    // 我们最关心的是过期的异常，所以这个异常是关键部分&lt;br /&gt;     if (maxValue &lt; DateTime.Now.AddDays(-45))&lt;br /&gt;    {&lt;br /&gt;        throw new  Exception("9Rays.Net FlyTreeView for ASP.NET 2.0 evaluation period has  expired."&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/wink.gif" border="0" smilieid="4" /&gt;;&lt;br /&gt;    }&lt;br /&gt;    this._&lt;span class="t_tag" onclick="tagshow(event)" href="tag.php?name=fly"&gt;fly&lt;/span&gt;ControlCommon = new  FlyControlCommon&lt;flytreeview&gt;(this, this.ViewState, this.Context);&lt;br /&gt;     this._dataBindings = new FlyNodeBindingCollection();&lt;br /&gt;    this._nodes = new  FlyTreeNodeCollection(this);&lt;br /&gt;    this._nodeTypes = new  FlyNodeTypeCollection();&lt;br /&gt;    this.ShadowNodes = new  FlyTreeNodeCollection(this);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;看了反编译的代码，简单一点儿，我们只要把&lt;br /&gt;    if  (maxValue &lt; DateTime.Now.AddDays(-45))&lt;br /&gt;    {&lt;br /&gt;        throw new  Exception("9Rays.Net FlyTreeView for ASP.NET 2.0 evaluation period has  expired."&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/wink.gif" border="0" smilieid="4" /&gt;;&lt;br /&gt;    }&lt;br /&gt;这段代码干掉就可以了啊？当然，我们也可以把&lt;br /&gt;    try&lt;br /&gt;     {&lt;br /&gt;        maxValue =  File.GetLastWriteTime(base.GetType().Assembly.Location);&lt;br /&gt;    }&lt;br /&gt;     catch&lt;br /&gt;    {&lt;br /&gt;        throw new Exception("Unknown TRIAL version error has  occurred."&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/wink.gif" border="0" smilieid="4" /&gt;;&lt;br /&gt;     }&lt;br /&gt;这段代码也干掉，呵呵。&lt;br /&gt;那我们就开始吧，&lt;br /&gt;下面我们结合反编译代码对下面的&lt;span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%B3%CC%D0%F2"&gt;程序&lt;/span&gt;进行分析，并去掉关键的异常代码部分&lt;br /&gt;&lt;br /&gt;//  源代码如下&lt;br /&gt;  .method public hidebysig specialname rtspecialname&lt;br /&gt;           instance void  .ctor() cil managed&lt;br /&gt;  {&lt;br /&gt;    // 代码大小       173 (0xad)&lt;br /&gt;     .maxstack  5&lt;br /&gt;    .locals init (valuetype [mscorlib]System.DateTime V_0,&lt;br /&gt;              string V_1,&lt;br /&gt;             valuetype [mscorlib]System.DateTime  V_2)&lt;br /&gt;&lt;br /&gt;    //***     this.NodeEvents = new  List&lt;flytreenodeeventargs&gt;(); 对应的IL代码开始   ***//&lt;br /&gt;     IL_0000:  ldarg.0&lt;br /&gt;    IL_0001:  newobj     instance void class  [mscorlib]System.Collections.Generic.List`1&lt;class &lt;br /&gt;&lt;br /&gt;NineRays.WebControls.FlyTreeNodeEventArgs&gt;::.ctor()&lt;br /&gt;     IL_0006:  stfld      class [mscorlib]System.Collections.Generic.List`1&lt;class&gt; &lt;br /&gt;&lt;br /&gt;NineRays.WebControls.FlyTreeView::NodeEvents&lt;br /&gt;    //***      this.NodeEvents = new List&lt;flytreenodeeventargs&gt;(); 对应的IL代码结束    ***//&lt;br /&gt;&lt;br /&gt;//**************** 获取最大的时间值，并保存到本地变量maxValue里对应IL就是V_0&lt;br /&gt;     //***     DateTime maxValue = DateTime.MaxValue; 对应的IL代码开始   ***//&lt;br /&gt;     IL_000b:  ldarg.0&lt;br /&gt;    IL_000c:  call       instance void  [System.Web]System.Web.UI.WebControls.HierarchicalDataBoundControl::.ctor()&lt;br /&gt;     IL_0011:  ldsfld     valuetype [mscorlib]System.DateTime  [mscorlib]System.DateTime::MaxValue&lt;br /&gt;    IL_0016:  stloc.0&lt;br /&gt;    //***      DateTime maxValue = DateTime.MaxValue; 对应的IL代码结束    ***//&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// ************************************   第一个异常的代码对应  开始  ***********************************//&lt;br /&gt;//************ 取&lt;span class="t_tag" onclick="tagshow(event)" href="tag.php?name=%CE%C4%BC%FE"&gt;文件&lt;/span&gt;的最后修改时间值，正常的话保存到本地变量maxValue里对应IL就是V_0，如果错误，则异常&lt;br /&gt;*  reflector反编译代码&lt;br /&gt;*     try&lt;br /&gt;*    {&lt;br /&gt;*        maxValue =  File.GetLastWriteTime(base.GetType().Assembly.Location);&lt;br /&gt;*    }&lt;br /&gt;*     catch&lt;br /&gt;*    {&lt;br /&gt;*        throw new Exception("Unknown TRIAL version error has  occurred."&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/wink.gif" border="0" smilieid="4" /&gt;;&lt;br /&gt;*    }&lt;br /&gt;&lt;br /&gt;* 对应的IL 代码&lt;br /&gt;    .try&lt;br /&gt;    {&lt;br /&gt;       IL_0017:  ldarg.0&lt;br /&gt;      IL_0018:  call       instance class  [mscorlib]System.Type [mscorlib]System.Object::GetType()&lt;br /&gt;       IL_001d:  callvirt   instance class [mscorlib]System.Reflection.Assembly  [mscorlib]System.Type::get_Assembly()&lt;br /&gt;      IL_0022:  callvirt   instance  string [mscorlib]System.Reflection.Assembly::get_Location()&lt;br /&gt;       IL_0027:  stloc.1&lt;br /&gt;      IL_0028:  ldloc.1&lt;br /&gt;      IL_0029:  call        valuetype [mscorlib]System.DateTime  [mscorlib]System.IO.File::GetLastWriteTime(string)&lt;br /&gt;       IL_002e:  stloc.0&lt;br /&gt;      IL_002f:  leave.s    IL_003d&lt;br /&gt;&lt;br /&gt;    }  // end  .try&lt;br /&gt;    catch [mscorlib]System.Object&lt;br /&gt;    {&lt;br /&gt;      IL_0031:  pop&lt;br /&gt;       IL_0032:  ldstr      "Unknown TRIAL version error has occurred."&lt;br /&gt;       IL_0037:  newobj     instance void  [mscorlib]System.Exception::.ctor(string)&lt;br /&gt;      IL_003c:  throw&lt;br /&gt;&lt;br /&gt;     }  // end handler&lt;br /&gt;// ************************************   第一个异常的代码对应  结束  ***********************************//&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//  *************************************  第二个异常的代码对应  开始  ***********************************//&lt;br /&gt;//************  maxValue跟当前时间-45天相比较，如果在试用期内，则正常，不在试用期内，则异常&lt;br /&gt;*  reflector反编译代码&lt;br /&gt;*    if  (maxValue &lt; DateTime.Now.AddDays(-45))&lt;br /&gt;*    {&lt;br /&gt;*        throw new  Exception("9Rays.Net FlyTreeView for ASP.NET 2.0 evaluation period has  expired."&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/wink.gif" border="0" smilieid="4" /&gt;;&lt;br /&gt;*    }&lt;br /&gt;&lt;br /&gt;* IL 代码开始&lt;br /&gt;    // ********  这里开始是判断当前时间与文件创建时间的比较，如果在试用期内，则正常试用，否则则抛出过期的异常&lt;br /&gt;    IL_003d:  ldloc.0&lt;br /&gt;     IL_003e:  call       valuetype [mscorlib]System.DateTime  [mscorlib]System.DateTime::get_Now()&lt;br /&gt;    IL_0043:  stloc.2&lt;br /&gt;     IL_0044:  ldloca.s   V_2&lt;br /&gt;    IL_0046:  ldc.r8     -45.&lt;br /&gt;    IL_004f:  call        instance valuetype [mscorlib]System.DateTime  [mscorlib]System.DateTime::AddDays(float64)&lt;br /&gt;    IL_0054:  call       bool  [mscorlib]System.DateTime:&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/13.gif" border="0" smilieid="7" /&gt;p_LessThan(valuetype [mscorlib]System.DateTime,&lt;br /&gt;                                                                      valuetype  [mscorlib]System.DateTime)&lt;br /&gt;    IL_0059:  brfalse.s  IL_0066        //  如果没超出试用期，则跳转，否则抛异常&lt;br /&gt;// 我们的思路，不管是否超出试用期都不让它抛出异常，那么我们最简单的方法，就是把抛异常的代码段干掉&lt;br /&gt;//  那我们还等什么呀，直接把下面的关键部分代码注释掉不就行了吗，呵呵:） 是不是很Easy的啊&lt;br /&gt;//*************************    关键位置开始  ^_^  *******************************************************//&lt;br /&gt;     //IL_005b:  ldstr      "9Rays.Net FlyTreeView for ASP.NET 2.0 evaluation p"&lt;br /&gt;     //+ "eriod has expired."                //  查找到的位置***************************&lt;br /&gt;    //IL_0060:  newobj     instance void  [mscorlib]System.Exception::.ctor(string)&lt;br /&gt;     //IL_0065:  throw&lt;br /&gt;//*************************   关键位置结束 ^_^    *******************************************************//&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//  *************************************  其他类域的初始化代码  开始  ***********************************//&lt;br /&gt;*  reflector反编译代码&lt;br /&gt;*     this._flyControlCommon = new FlyControlCommon&lt;flytreeview&gt;(this,  this.ViewState, this.Context);&lt;br /&gt;*    this._dataBindings = new  FlyNodeBindingCollection();&lt;br /&gt;*    this._nodes = new  FlyTreeNodeCollection(this);&lt;br /&gt;*    this._nodeTypes = new  FlyNodeTypeCollection();&lt;br /&gt;*    this.ShadowNodes = new  FlyTreeNodeCollection(this);&lt;br /&gt;&lt;br /&gt;* IL 代码开始&lt;br /&gt;    IL_0066:  ldarg.0&lt;br /&gt;     IL_0067:  ldarg.0&lt;br /&gt;    IL_0068:  ldarg.0&lt;br /&gt;    IL_0069:  callvirt   instance  class [System.Web]System.Web.UI.StateBag  [System.Web]System.Web.UI.Control::get_ViewState()&lt;br /&gt;    IL_006e:  ldarg.0&lt;br /&gt;     IL_006f:  callvirt   instance class [System.Web]System.Web.HttpContext  [System.Web]System.Web.UI.Control::get_Context()&lt;br /&gt;    IL_0074:  newobj      instance void class NineRays.WebControls.FlyControlCommon`1&lt;class &lt;br /&gt;&lt;br /&gt;NineRays.WebControls.FlyTreeView&gt;::.ctor(!0,&lt;br /&gt;                                                                                                                                &lt;br /&gt;&lt;br /&gt;      class  [System.Web]System.Web.UI.StateBag,&lt;br /&gt;                                                                                                                                &lt;br /&gt;&lt;br /&gt;      class [System.Web]System.Web.HttpContext)&lt;br /&gt;     IL_0079:  stfld      class NineRays.WebControls.FlyControlCommon`1&lt;class&gt; &lt;br /&gt;&lt;br /&gt;NineRays.WebControls.FlyTreeView::_flyControlCommon&lt;br /&gt;     IL_007e:  ldarg.0&lt;br /&gt;    IL_007f:  newobj     instance void  NineRays.WebControls.FlyNodeBindingCollection::.ctor()&lt;br /&gt;    IL_0084:  stfld       class NineRays.WebControls.FlyNodeBindingCollection  NineRays.WebControls.FlyTreeView::_dataBindings&lt;br /&gt;    IL_0089:  ldarg.0&lt;br /&gt;     IL_008a:  ldarg.0&lt;br /&gt;    IL_008b:  newobj     instance void  NineRays.WebControls.FlyTreeNodeCollection::.ctor(object)&lt;br /&gt;     IL_0090:  stfld      class NineRays.WebControls.FlyTreeNodeCollection  NineRays.WebControls.FlyTreeView::_nodes&lt;br /&gt;    IL_0095:  ldarg.0&lt;br /&gt;     IL_0096:  newobj     instance void  NineRays.WebControls.FlyNodeTypeCollection::.ctor()&lt;br /&gt;    IL_009b:  stfld       class NineRays.WebControls.FlyNodeTypeCollection  NineRays.WebControls.FlyTreeView::_nodeTypes&lt;br /&gt;    IL_00a0:  ldarg.0&lt;br /&gt;     IL_00a1:  ldarg.0&lt;br /&gt;    IL_00a2:  newobj     instance void  NineRays.WebControls.FlyTreeNodeCollection::.ctor(object)&lt;br /&gt;     IL_00a7:  stfld      class NineRays.WebControls.FlyTreeNodeCollection  NineRays.WebControls.FlyTreeView::ShadowNodes&lt;br /&gt;&lt;br /&gt;//  *************************************  其他类域的初始化代码  结束  ***********************************//&lt;br /&gt;&lt;br /&gt;    IL_00ac:  ret&lt;br /&gt;  } // end  of method FlyTreeView::.ctor&lt;br /&gt;&lt;br /&gt;  3.  别忘了看一下文件开头有没有加publickey，还真的有呀，我这里找到如下的代码&lt;br /&gt;  .publickey = (00 24 00 00 04 80 00  00 94 00 00 00 06 02 00 00   // .$..............&lt;br /&gt;                00 24 00 00  52 53 41 31 00 04 00 00 01 00 01 00   // .$..RSA1........&lt;br /&gt;                EB  FD B1 7F 49 35 9E C0 95 39 EE 11 CD D2 30 A3   // ....I5...9....0.&lt;br /&gt;                 72 D3 A0 72 DD 10 42 86 EA 59 60 AB 5F C4 3F 7F   // r..r..B..Y`._.?.&lt;br /&gt;                 09 A7 6C 5E FA D0 54 FF B9 B7 12 C6 13 DD 6D C3   //  ..l^..T.......m.&lt;br /&gt;                D3 5B E4 90 76 EC CC 92 CD B0 7E 9B 22 A5 A4  71   // .[..v.....~."..q&lt;br /&gt;                D0 EA 1A EE 0D 6B BE 82 55 D6 7E B2  7F B1 32 DB   // .....k..U.~...2.&lt;br /&gt;                50 5B F7 50 07 19 91 59 22  BF FB 82 A9 0B F7 DE   // P[.P...Y".......&lt;br /&gt;                87 36 F9 6C 19 CA  D9 63 55 63 78 44 C6 33 6C 55   // .6.l...cUcxD.3lU&lt;br /&gt;                39 00 7B  0A 89 8E C2 C5 8E 4A 52 C2 8E 23 37 B3 ) // 9.{......JR..#7.&lt;br /&gt;  .hash  algorithm 0x00008004&lt;br /&gt;&lt;br /&gt;  还在想什么呢？直接删除呀，嘿嘿&lt;img alt="" src="http://www.unpack.cn/images/smilies/default/icon8.gif" border="0" smilieid="8" /&gt;&lt;br /&gt;&lt;br /&gt;  4. 到现在破解就完工了，可以编译新的程序了。ilasm /dll /resource=aaa.res  aaa.il，得到的aaa.dll即为完美破解版了。&lt;br /&gt;&lt;br /&gt;  顺便说一句,使用的时候,最好先安装原版,再把破解版覆盖,就好了&lt;br /&gt;  如果感觉好用,请支持正版&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2066095334086889205?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2066095334086889205/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2066095334086889205' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2066095334086889205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2066095334086889205'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/09/flytreeview-v43143.html' title='FlyTreeView V4.3.1.43破解手记'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1596301453692042360</id><published>2008-09-15T08:40:00.000+08:00</published><updated>2008-09-15T08:41:33.946+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='compileMethod'/><title type='text'>hook compileMethod的几种常见形式</title><content type='html'>&lt;div class="tit"&gt;&lt;span class="Apple-style-span" style="color: rgb(85, 26, 139); text-decoration: underline;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;table style="TABLE-LAYOUT: fixed"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="cnt"&gt;&lt;div class="Section0" style="LAYOUT-GRID:  15.6pt none"&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;compileMethod&lt;span style="font-family:宋体;"&gt;算是.NET中的万能断点，对付一般的.NET加密壳均可采用hook  compileMethod的方式得到IL代码和相关信息，保护层次较深的.NET壳除外。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;我们自己在编写程序hook该方法时，一般有以下几种形式。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;第一种形式是&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;：my_compileMethod（既需要替换的方法）&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;采用compileMethod的原型&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;。这种形式代码漂亮，结构工整，编程方便，推荐使用。通常&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;代码可以如下定义：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;int __stdcall  my_compileMethod(ULONG_PTR classthis, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;                                                      ICorJitInfo *comp,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;                                                      CORINFO_METHOD_INFO *info, &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;                                                       unsigned flags,&lt;/span&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;BYTE **nativeEntry,  &lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;                                                      ULONG   *nativeSizeOfCode)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;//&lt;span style="font-family:宋体;"&gt;你的代码&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;//&lt;span style="font-family:宋体;"&gt;调用原始的compileMethod&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;int nRet =  compileMethod(classthis, comp, info, flags, nativeEntry,  nativeSizeOfCode);&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;return  nRet;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="color:#0000ff;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;上面的代码还有一个优点，就是&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;可直接兼容x64位&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;     第二种形式：naked&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;。既调用约定不采用__stdcall，而是用naked。代码如下：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;void  __declspec(naked) mycompileMethod()&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;//&lt;span style="font-family:宋体;"&gt;你的代码&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="color:#0000ff;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;这种形式明显低级一些，许多工作要自己做，比如取&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;CORINFO_METHOD_INFO *&lt;/span&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;时，就要从堆栈中取值：&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;__asm&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;pushad&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;pushfd&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;mov eax,DWORD  PTR[esp+48]&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;push  eax&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="color:#0000ff;"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;pop  pmethodinfo&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="color:#0000ff;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;还有就是，直接使用x86汇编代码则无法兼容x64，需编写两套程序。当然，也不是一点好处没有，比如很多hook程序在开始喜欢保存全部的寄存器和状态，这里就可以使用pushad和pushfd了。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;上面两种方法，在具体hook时，通常采取替换CILJit::'vtable'的第一项： dd offset  CILJit::compileMethod的地址实现。该值可以通过getJit()函数获得。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;&lt;span style="font-family:宋体;"&gt;第三种方法就更直接了，在JIT的路径中找到合适的位置后，直接Jmp。这种naked+jmp的方式，最底层，也最灵活，在对于某些hook位置较深的壳来说，这也是唯一的方法。不过代码编写时，工作量就比前两种要稍大一些了。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span style="FONT-SIZE: 10.5pt; mso-spacerun: yes"&gt;Btw&lt;span style="font-family:宋体;"&gt;：在编写.NET内核hook程序时，C++/CLI是不二之选。真得很爽！&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span class="Apple-style-span" style="font-family: 宋体; font-size: 14px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-INDENT: 21pt"&gt;&lt;span class="Apple-style-span" style="font-family: 宋体; font-size: 14px;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;    compileMethod方法在各类.NET内核的文章中出现频率相当高，因为它是JIT引擎工作的关键函数。其原型如下（参考sscli代码）：&lt;/p&gt; &lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;CorJitResult __stdcall FJitCompiler::compileMethod (                ICorJitInfo*                  compHnd,               /* IN */                CORINFO_METHOD_INFO*           info,                  /* IN */                unsigned                   flags,                 /* IN */                BYTE **                    entryAddress,          /* OUT */                ULONG     *                   nativeSizeOfCode       /* OUT */                )&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;      一般的用法是通过该函数的第二个参数COFINFO_METHOD_INFO取得代码的IL和大小。但其实还可以更加深入，注意第一个传入参数很有意思，指向了ICorJitInfo接口。该接口定义如下：&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;/*********************************************************************************  * a ICorJitInfo is the main interface that the JIT uses to call back to the EE and  *      get information  *********************************************************************************/ class ICorJitInfo : public virtual ICorDynamicInfo {//省略}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;     这说明ICorJitInfo继承了ICorDynamicInfo接口。而后者的定义如下：&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;/*****************************************************************************  * ICorDynamicInfo contains EE interface methods which return values that may  * change from invocation to invocation.     They cannot be embedded in persisted  * data; they must be requeried each time the EE is run.  *****************************************************************************/  class ICorDynamicInfo : public virtual ICorStaticInfo {//省略}&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;      这说明ICorDynamicInfo又继承了ICorStaticInfo。接着来，继续看ICorStaticInfo的代码：&lt;br /&gt;&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;/*****************************************************************************  * ICorStaticInfo contains EE interface methods which return values that are  * constant from invocation to invocation.     Thus they may be embedded in  * persisted information like statically generated code. (This is of course  * assuming that all code versions are identical each time.)  *****************************************************************************/ class ICorStaticInfo : public virtual ICorMethodInfo, public virtual ICorModuleInfo,                           public virtual ICorClassInfo,     public virtual ICorFieldInfo,                           public virtual ICorDebugInfo,     public virtual ICorArgInfo,                           public virtual ICorLinkInfo,      public virtual ICorErrorInfo&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;      这一次牛了，ICorStaticInfo继承了8个接口的方法，其中第一个为ICorMethodInfo。该接口定义了许多与方法相关的函数，如果能调用它，在hook中是非常爽的。那可不可以调用呢？当然可以，compileMethod的第一个参数就是我们需要的。&lt;br /&gt;      比如我们需要取得当前hook方法的方法名，可以调用ICorMethodInfo中的如下方法：&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;       virtual const char* __stdcall getMethodName (                CORINFO_METHOD_HANDLE          ftn,           /* IN */                const char                   **moduleName     /* OUT */                ) = 0;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;      这里需要传入CORINFO_METHOD_HANDLE这个参数，该参数是.NET内核中表示方法的核心结构，在sscli中也未公开。不过它的值是可以取得的，从compileMethod第二个参数CORINFO_METHOD_INFO结构的第一项中便可以取得：&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;struct CORINFO_METHOD_INFO {     &lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;strong&gt;CORINFO_METHOD_HANDLE          ftn;        CORINFO_MODULE_HANDLE          scope;&lt;/strong&gt;               BYTE *                         ILCode;        unsigned                       ILCodeSize;        unsigned short                 maxStack;        unsigned short                 EHcount;        CorInfoOptions                 options;        CORINFO_SIG_INFO               args;        CORINFO_SIG_INFO               locals; };&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;      同样，在调用ICorModuleInfor接口中的许多方法时，也需要传入CORINFO_MODULE_HANDLE作为参数，同样可以从CORINFO_METHOD_INFO结构中获得该值。比如调用findClass函数，以取得CORINFO_CLASS_HANDLE，定义如下：&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;       virtual CORINFO_CLASS_HANDLE __stdcall findClass (                CORINFO_MODULE_HANDLE          module,        /* IN     */                unsigned                       metaTOK,       /* IN     */                CORINFO_CONTEXT_HANDLE         context,       /* IN     */                CorInfoTokenKind               tokenKind = CORINFO_TOKENKIND_Default /* IN     */                ) = 0;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;      其中出现了CORINFO_CONTEXT_HANDLE。该结构也非常容易取得，具体参考sscli，就不详述了。&lt;br /&gt;      具体在VS中编程时，可以添加corinfo.h和corjit.h，并在同一目录下添加corhdr.h，便可顺利编译通过。&lt;br /&gt;      最后还有一个问题，sscli毕竟是早期框架了，还是精简版，现在还能直接使用吗？不妨分析一下。随便运行一个.NET程序，用WinDbg调试并中断在compileMethod处，查看ICorJitInfo值所指的内存：&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;0012ea38 79f10654 mscorwks!CEEJitInfo::`vbtable' 0012ea3c 00174d18  0012ea40 00997850  0012ea44 00107210  0012ea48 00000000  0012ea4c 0018a610  0012ea50 00000000  0012ea54 00000000  0012ea58 00000000  0012ea5c 0012ea40  0012ea60 00000000  0012ea64 00000000  0012ea68 00000000  0012ea6c 79f105b8 mscorwks!CEEJitInfo::`vftable' 0012ea70 00000000  0012ea74 79f10584 mscorwks!CEEJitInfo::`vftable' 0012ea78 00000000  0012ea7c 79f104e0 mscorwks!CEEJitInfo::`vftable' 0012ea80 00000000  0012ea84 79f104bc mscorwks!CEEJitInfo::`vftable' 0012ea88 00000000  0012ea8c 79f104a4 mscorwks!CEEJitInfo::`vftable' 0012ea90 00000000  0012ea94 79f10498 mscorwks!CEEJitInfo::`vftable' 0012ea98 00000000  0012ea9c 79f10494 mscorwks!CEEJitInfo::`vftable' ...//下略&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;      这里又涉及到VC编译器对类的vftable和vbtable在内存中的布局问题了，最先两项是类自身定义的虚方法表和虚基址表，相关资料请自己查阅。我们跟进vftable：&lt;br /&gt;&lt;div style="MARGIN: 5px 20px 20px"&gt; &lt;div class="smallfont" style="MARGIN-BOTTOM: 2px"&gt;代码:&lt;/div&gt;&lt;pre dir="ltr" style="BORDER-RIGHT: 1px inset; PADDING-RIGHT: 5px; BORDER-TOP: 1px inset; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 0px; OVERFLOW: auto; BORDER-LEFT: 1px inset; WIDTH: 640px; PADDING-TOP: 5px; BORDER-BOTTOM: 1px inset; BACKGROUND-COLOR: #dedfdf; TEXT-ALIGN: left"&gt;&lt;span style="color:#0000ff;"&gt;79f10624 79f106ac mscorwks!CEEJitInfo::getMemoryManager 79f10628 79f11d82 mscorwks!CEEJitInfo::allocMem 79f1062c 79f11f39 mscorwks!CEEJitInfo::allocGCInfo 79f10630 7a12b8cb mscorwks!CEEJitInfo::getEHInfo 79f10634 7a12b6cf mscorwks!CEEJitInfo::yieldExecution 79f10638 79f16373 mscorwks!CEEJitInfo::setEHcount 79f1063c 79f16491 mscorwks!CEEJitInfo::setEHinfo 79f10640 7a12ed41 mscorwks!CEEJitInfo::logMsg 79f10644 7a27ffcc mscorwks!ZapperModule::doAssert 79f10648 7a12eeb6 mscorwks!CEEJitInfo::allocBBProfileBuffer 79f1064c 7a2c2fa1 mscorwks!MDInternalRO::ConvertTextSigToComSig 79f10650 79f0efee mscorwks!CEEJitInfo::isVerifyOnly 79f10654 fffffffc&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;        这些地址在静态编译时就已经确定了，因此如果用IDA反编译mscorwks.dll，同样会得到这些值。这便是最新的.NET框架内核中ICorJitInfo定义的方法。和sscli对比下（在corjit.h文件中），完全一样！（也可以再对比其它关键接口的方法，应该也是一样，我没有详细对比了。）&lt;br /&gt;      这样，我们就得到如下的结论：.NET内核框架从2.0开始，内核变化不大，包括sscli的内核代码，这些可以从内部函数的定义看出来；通过hook  compileMethod，可以得到ICorJitInfo等关键接口，并调用其中的许多内部方法；具体编写时，可以在VS中引入sscli的corinfo.h、corjit.h和corhdr.h等文件，之后便可以直接调用。因此，通过compileMethod，我们可以做的事很多很多，远不限于仅获得某个方法的IL。&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1596301453692042360?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1596301453692042360/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1596301453692042360' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1596301453692042360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1596301453692042360'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/09/hook-compilemethod.html' title='hook compileMethod的几种常见形式'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3738414711314140154</id><published>2008-09-15T08:28:00.002+08:00</published><updated>2008-09-15T08:29:15.632+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Net 2.0 、泛型'/><title type='text'>Net 2.0 的泛型小结</title><content type='html'>微软在.Net FrameWork 2.0中，引入了范型，相比.Net FrameWork 1.1中的三个集合类。&lt;br /&gt;范型具有类型安全、无需GC的优点，对值类型无需进行性能损失很大的装箱与拆箱操作。&lt;br /&gt;主要看 System.Collections.Generic 命名空间，略作总结：&lt;br /&gt;ArrayList --&gt; List&lt;t&gt;&lt;br /&gt;Hashtable --&gt; Dictionary&lt;tkey,&gt;&lt;br /&gt;SortedList --&gt; SortedDictionary&lt;tkey,&gt;&lt;br /&gt;Stack --&gt; Stack&lt;t&gt;&lt;br /&gt;Queue --&gt; Queue&lt;t&gt;&lt;br /&gt;LinkedList&lt;t&gt; 无对应类&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3738414711314140154?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3738414711314140154/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3738414711314140154' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3738414711314140154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3738414711314140154'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/09/net-20.html' title='Net 2.0 的泛型小结'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3427974964518414685</id><published>2008-09-15T08:24:00.000+08:00</published><updated>2008-09-15T08:25:50.041+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reflactor、反编译、.Net'/><title type='text'>使用Reflactor反编译.Net程序的经验</title><content type='html'>相信大多数.Net程序员都有使用Reflactor的经历。无论出于什么目的，当用Reflactor反编译托管程序后，还想对其代码加以修改，那么本文所列举的可能是一份有用的参考。&lt;br /&gt;&lt;br /&gt;用Reflactor的FileGenerator插件反编译代码后可以得到包括项目文件的源代码，但代码中存在各种问题，一般无法一次编译通过，以下将详谈这些问题：&lt;br /&gt;枚举问题&lt;br /&gt;&lt;br /&gt;为了代码可读，可能需要花点时间查阅metadata把int值修改回枚举值，尤其是想利用窗体设计器的，VS2008可能还不理解int值。&lt;br /&gt;属性问题&lt;br /&gt;&lt;br /&gt;比如一个叫Names的属性被反编译后，可能还原为的set_Names(names)，get_Names()方法，逐个替换可能很慢，可采用正则表达式整体替换。对于set_Xxx(xxx)方法，可替换set_{[a-z]*}\(为\1 = (对于get_Xxx()方法，可替换get_{[a-z]*}\(\)为\1然后，再修复个别被误换的方法。&lt;br /&gt;委托和回调函数问题&lt;br /&gt;&lt;br /&gt;一般会被还原为add_Xxx(MethodsName)方法，需要改为 += MethodsName&lt;br /&gt;资源问题&lt;br /&gt;&lt;br /&gt;需要使用.Net Framework SDK 下的 resgen.exe 工具，反编译嵌入资源文件*.resources为*.resx文件，语法为：ResGen.exe *.resources *.resx，然后将*.resx包含入项目，就会自动和同名的窗体文件*.cs关联，如果没有关联可采用先排除再添加大法，一一搞定。&lt;br /&gt;命名空间问题&lt;br /&gt;&lt;br /&gt;如果需要切换到IDE的窗体设计器，而不出错，则还需要在*.cs中添加比如System.Windows.Forms的命名空间前缀。&lt;br /&gt;窗体设计器识别问题&lt;br /&gt;&lt;br /&gt;需要把以下代码ComponentResourceManager manager = new ComponentResourceManager(typeof(ClassName));替换为System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ClassName));窗体设计器才能正常识别。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3427974964518414685?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3427974964518414685/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3427974964518414685' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3427974964518414685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3427974964518414685'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/09/reflactornet.html' title='使用Reflactor反编译.Net程序的经验'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3657943901152765758</id><published>2008-06-29T20:40:00.001+08:00</published><updated>2008-06-29T20:40:16.873+08:00</updated><title type='text'>windows2003 免费杀毒软件</title><content type='html'>AntiVir Personal Edition 中文名叫&amp;quot;小红伞&amp;quot;，是一款相当优秀的免费杀毒软件，主要特色是系统资源占用很少，内存占用很低，杀毒能力不一般。在系统资源占用上只有NOD32能与其匹敌，但NOD32在木马查杀方面却很弱。我在使用了Avira+LNS（一款防火墙）后电脑几乎没有中过毒。主要缺点是有时会有误杀现象，不过，现在这种现象越来越少。07年4月份，小红伞升级版本，不支持windows 2003 操作系统，但通过以下设 &lt;br&gt;置我们发现可以实现完美安装。&lt;p&gt;&lt;p&gt;第一种方法：下载 AntiVir Personal Edition  老版－07年以前的版本，安装后，下载 &lt;br&gt; AntiVir Personal Edition 最新版本（Avira AntiVir PersonalEdition Classic &lt;br&gt;Windows 2000 / XP / Vista 32 Bit and 64 Bit），覆盖安装即可。&lt;p&gt;第二种方法：下载AntiVir Personal Edition  老版，安装后到这里下载License file（授权文件）－这是小红伞的官方网站。下载后可将该文件直接放到Avira Antivir 的安装目录下。重新启动，升级病毒库 &lt;br&gt;后，你就会发现你的小红伞已经更新到最新版了。&lt;p&gt;下面的图片是我的windows 2003中Avira Antivir 所占的内存，你看是不是很省内存？&lt;p&gt;&lt;p&gt;当然，你一切安装完毕后，需要对它进行一下设置。下载这个德国小红伞设置图，参照设置一下就可以了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3657943901152765758?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3657943901152765758/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3657943901152765758' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3657943901152765758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3657943901152765758'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/06/windows2003.html' title='windows2003 免费杀毒软件'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3319310642454531535</id><published>2008-05-21T17:13:00.001+08:00</published><updated>2008-05-21T17:13:32.719+08:00</updated><title type='text'>EXcel多表之间操作(VBA)</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;"from [产品资料$] a,[进货$] b,[销售$] c where a.产品代码=b.产品代码   and a.产品代码=c.产品代码"&lt;BR&gt;'[a65536].End(xlUp).Offset(1, 0).CopyFromRecordset   conn.Execute(Sql)&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;Sub 汇总()&lt;BR&gt;Range("A2:J100").ClearContents&lt;BR&gt;Set conn   = CreateObject("adodb.connection")&lt;BR&gt;conn.Open   "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source="   &amp;amp; ThisWorkbook.FullName&lt;BR&gt;Sql = "select   A.产品代码,A.名称,sum(B.进货数量),B.进货单价,sum(B.进货金额),sum(C.销售数量),C.销售单价,sum(C.销售金额),sum(C.销售数量)*(C.销售单价-B.进货单价),sum(B.进货数量)-sum(C.销售数量)   from [产品资料$] as A,[进货$] as B,[销售$] as C where A.产品代码=B.产品代码 and B.产品代码=C.产品代码   group by A.产品代码,A.名称,B.进货单价,C.销售单价"&lt;BR&gt;Sheet2.[a2].CopyFromRecordset   conn.Execute(Sql)&lt;BR&gt;conn.Close&lt;BR&gt;Set conn = Nothing&lt;BR&gt;End Sub&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3319310642454531535?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3319310642454531535/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3319310642454531535' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3319310642454531535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3319310642454531535'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/excelvba.html' title='EXcel多表之间操作(VBA)'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3332064082584758657</id><published>2008-05-21T13:50:00.001+08:00</published><updated>2008-05-21T13:50:43.934+08:00</updated><title type='text'>Excel表格下面的SQL对比</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;在excel工具--宏下面--VBA然后在模块中加入模块1，然后显示窗体设计器下面加入一个按钮&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;Sub 查询()&lt;BR&gt;&amp;nbsp; Dim MYSTR As String&lt;BR&gt;&amp;nbsp;&amp;nbsp;   Range("A2:AT1500").ClearContents&lt;BR&gt;&amp;nbsp;&amp;nbsp; Set CONN =   CreateObject("adodb.connection")&lt;BR&gt;&amp;nbsp;&amp;nbsp; CONN.Open   "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source="   &amp;amp; ThisWorkbook.FullName&lt;BR&gt;&amp;nbsp; ' For I = 1 To Sheets.Count -   2&lt;BR&gt;&amp;nbsp;&amp;nbsp; '&amp;nbsp;&amp;nbsp;&amp;nbsp; sq1 = sq1 &amp;amp; "select * from [" &amp;amp;   Sheets(I).Name &amp;amp; "$] where 工资级别='6级'" &amp;amp; " UNION "&lt;BR&gt;&amp;nbsp; ' Next   I&lt;BR&gt;&amp;nbsp; ' sq1 = Left(sq1, Len(sq1) - 7)&lt;BR&gt;&amp;nbsp; Sq1 = "select * from ["   &amp;amp; Sheets(2).Name &amp;amp; "$] where 监管条件 like '%/B'&amp;nbsp; and b2 not in (select   b2 from [" &amp;amp; Sheets(1).Name &amp;amp; "$])"&lt;BR&gt;&amp;nbsp; [a2].CopyFromRecordset   CONN.Execute(Sq1)&lt;BR&gt;&amp;nbsp; CONN.Close&lt;BR&gt;&amp;nbsp; Set CONN = Nothing&lt;BR&gt;&amp;nbsp;End   Sub&lt;BR&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3332064082584758657?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3332064082584758657/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3332064082584758657' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3332064082584758657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3332064082584758657'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/excelsql.html' title='Excel表格下面的SQL对比'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3744114158079006777</id><published>2008-05-20T09:32:00.001+08:00</published><updated>2008-05-20T09:32:13.976+08:00</updated><title type='text'>C#--事件教程</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;BR&gt;本教程展示如何在 C# 中声明事件、调用事件和挂接到事件。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;C#   中的"事件"是当对象发生某些有趣的事情时，类向该类的客户提供通知的一种方法。事件最常见的用途是用于图形用户界面；通常，表示界面中的控件的类具有一些事件，当用户对控件进行某些操作（如单击某个按钮）时，将通知这些事件。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;但是事件未必只用于图形界面。事件为对象提供一种通常很有用的方法来发出信号表示状态更改，这些状态更改可能对该对象的客户很有用。事件是创建类的重要构造块，这些类可在大量的不同程序中重复使用。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;使用委托来声明事件。如果您尚未学习"委托教程"，您应先学习它，然后再继续。请回忆委托对象封装一个方法，以便可以匿名调用该方法。事件是类允许客户为其提供方法（事件发生时应调用这些方法）的委托的一种方法。事件发生时，将调用其客户提供给它的委托。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;除声明事件、调用事件和与事件挂钩的示例以外，本教程还介绍下列主题：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;事件和继承 &lt;BR&gt;接口中的事件 &lt;BR&gt;.NET Framework 指南 &lt;BR&gt;示例   1&lt;BR&gt;下面的简单示例展示一个 ListWithChangedEvent 类，该类类似于标准的 ArrayList 类，而且，每当列表内容更改时，该类均调用   Changed 事件。这样一个通用用途的类可在大型程序中以多种方式使用。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;例如，某字处理器可能包含打开的文档的列表。每当该列表更改时，可能需要通知字处理器中的许多不同对象，以便能够更新用户界面。使用事件，维护文档列表的代码不需要知道需要通知谁，一旦文档列表发生了更改，将自动调用该事件，正确通知每个需要通知的对象。使用事件提高了程序的模块化程度。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;// events1.cs&lt;BR&gt;using System;&lt;BR&gt;namespace   MyCollections &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; using System.Collections;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // A delegate type for hooking up change   notifications.&lt;BR&gt;&amp;nbsp;&amp;nbsp; public delegate void ChangedEventHandler(object   sender, EventArgs e);&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // A class that works just like   ArrayList, but sends event&lt;BR&gt;&amp;nbsp;&amp;nbsp; // notifications whenever the list   changes.&lt;BR&gt;&amp;nbsp;&amp;nbsp; public class ListWithChangedEvent: ArrayList   &lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An event that clients   can use to be notified whenever the&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //   elements of the list change.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public event   ChangedEventHandler Changed;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Invoke the Changed   event; called whenever list changes&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected   virtual void OnChanged(EventArgs e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Changed !=   null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Changed(this, e);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Override some of the   methods that can change the list;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // invoke   event after each&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override int   Add(object value) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i =   base.Add(value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   OnChanged(EventArgs.Empty);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   return i;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void   Clear() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   base.Clear();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   OnChanged(EventArgs.Empty);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override object   this[int index] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   base[index] =   value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   OnChanged(EventArgs.Empty);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;namespace TestEvents &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; using   MyCollections;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; class EventListener &lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ListWithChangedEvent   List;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public   EventListener(ListWithChangedEvent list) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List =   list;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add "ListChanged"   to the Changed event on   "List".&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List.Changed += new   ChangedEventHandler(ListChanged);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This will be called   whenever the list changes.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void   ListChanged(object sender, EventArgs e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("This is   called when the event fires.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Detach()   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Detach the event and   delete the list&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List.Changed   -= new   ChangedEventHandler(ListChanged);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   List = null;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; class Test &lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Test the ListWithChangedEvent   class.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main()   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create   a new list.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListWithChangedEvent list = new   ListWithChangedEvent();&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a class that   listens to the list's change event.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   EventListener listener = new EventListener(list);&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add and remove items   from the list.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.Add("item   1");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   list.Clear();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   listener.Detach();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;   }&lt;BR&gt;}输出&lt;BR&gt;This is called when the event fires.&lt;BR&gt;This is called when the   event fires.代码讨论&lt;BR&gt;声明事件&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   若要在类内声明事件，首先必须声明该事件的委托类型（如果尚未声明的话）。 &lt;BR&gt;&amp;nbsp;&amp;nbsp; public delegate void   ChangedEventHandler(object sender, EventArgs e);&lt;BR&gt;&amp;nbsp;&amp;nbsp;   委托类型定义传递给处理该事件的方法的一组参数。&lt;BR&gt;&amp;nbsp;&amp;nbsp;   多个事件可共享相同的委托类型，因此仅当尚未声明任何合适的委托类型时才需要执行该步骤。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;接下来，声明事件本身。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public event   ChangedEventHandler Changed;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   声明事件的方法与声明委托类型的字段类似，只是关键字 event   在事件声明前面，在修饰符后面。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   事件通常被声明为公共事件，但允许任意可访问修饰符。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;调用事件&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   类声明了事件以后，可以就像处理所指示的委托类型的字段那样处理该事件。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   如果没有任何客户将委托与该事件挂钩，该字段将为空；否则该字段引用应在调用该事件时调用的委托。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   因此，调用事件时通常先检查是否为空，然后再调用事件。 &lt;BR&gt;&amp;nbsp;if (Changed != null)&lt;BR&gt;&amp;nbsp;Changed(this,   e);调用事件只能从声明该事件的类内进行。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;与事件挂钩&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;从声明事件的类外看，事件像个字段，但对该字段的访问是非常受限制的。只可进行如下操作： &lt;BR&gt;&amp;nbsp;在该字段上撰写新的委托。   &lt;BR&gt;&amp;nbsp;从字段（可能是复合字段）移除委托。 &lt;BR&gt;&amp;nbsp;使用 += 和 -=   运算符完成此操作。为开始接收事件调用，客户代码先创建事件类型的委托，&lt;BR&gt;&amp;nbsp;该委托引用应从事件调用的方法。然后它使用 +=   将该委托写到事件可能连接到的其他任何委托上。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;// Add "ListChanged" to the Changed event on   "List":&lt;BR&gt;&amp;nbsp;List.Changed += new   ChangedEventHandler(ListChanged);&lt;BR&gt;&amp;nbsp;&lt;BR&gt;&amp;nbsp;当客户代码完成接收事件调用后，它将使用运算符 -=   从事件移除其委托。&lt;BR&gt;&amp;nbsp;// Detach the event and delete the   list:&lt;BR&gt;&amp;nbsp;List.Changed -= new   ChangedEventHandler(ListChanged);&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;事件和继承&lt;BR&gt;&amp;nbsp;当创建可以从中派生的通用组件时，事件中有时出现似乎会成为问题的情况。由于事件只能从声明它们的类中调用，&lt;BR&gt;&amp;nbsp;因此派生类不能直接调用在基类内声明的事件。虽然这有时符合需要，但通常使派生类能够自由调用事件更合适。&lt;BR&gt;&amp;nbsp;这通常通过为事件创建受保护的调用方法来实现。通过调用该调用方法，派生类便可以调用此事件。&lt;BR&gt;&amp;nbsp;为获得更大的灵活性，调用方法通常声明为虚拟的，这允许派生类重写调用方法。&lt;BR&gt;&amp;nbsp;这使得派生类可以截获基类正在调用的事件，有可能对这些事件执行它自己的处理。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;在前面的示例中，这已用 OnChanged   方法实现。如果需要，派生类可调用或重写该方法。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;接口中的事件&lt;BR&gt;事件和字段之间的另一个差异是，事件可放在接口中，而字段不能。当实现接口时，实现类必须在实现接口的类中提供相应的事件。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;.NET Framework 指南&lt;BR&gt;尽管 C# 语言允许事件使用任意委托类型，但".NET   Framework"对于应为事件使用的委托类型有一些更严格的指南。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;如果打算将您的组件与".NET   Framework"一起使用，您可能希望遵守这些指南。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;".NET   Framework"指南指示用于事件的委托类型应采用两个参数：指示事件源的"对象源"参数和封装事件的其他任何相关信息的"e"参数。&lt;BR&gt;"e"参数的类型应从   EventArgs 类派生。对于不使用其他任何信息的事件，".NET   Framework"已定义了一个适当的委托类型：EventHandler。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;示例 2&lt;BR&gt;下面的示例是"示例 1"的修改版本，它遵守".NET Framework"指南。该示例使用   EventHandler 委托类型。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;// events2.cs&lt;BR&gt;using System;&lt;BR&gt;namespace   MyCollections &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; using System.Collections;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // A class that works just like   ArrayList, but sends event&lt;BR&gt;&amp;nbsp;&amp;nbsp; // notifications whenever the list   changes:&lt;BR&gt;&amp;nbsp;&amp;nbsp; public class ListWithChangedEvent: ArrayList   &lt;BR&gt;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // An event that clients   can use to be notified whenever the&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //   elements of the list change:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public event   EventHandler Changed;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Invoke the Changed   event; called whenever list changes:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected   virtual void OnChanged(EventArgs e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Changed !=   null)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Changed(this,e);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Override some of the   methods that can change the list;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // invoke   event after each:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override int   Add(object value) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i =   base.Add(value);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   OnChanged(EventArgs.Empty);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   return i;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override void   Clear() &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   base.Clear();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   OnChanged(EventArgs.Empty);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public override object   this[int index] &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   base[index] =   value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   OnChanged(EventArgs.Empty);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;namespace TestEvents &lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; using   MyCollections;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; class EventListener &lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private ListWithChangedEvent   List;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public   EventListener(ListWithChangedEvent list) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List =   list;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add "ListChanged"   to the Changed event on   "List":&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; List.Changed += new   EventHandler(ListChanged);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // This will be called   whenever the list changes:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void   ListChanged(object sender, EventArgs e) &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("This is   called when the event fires.");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Detach()   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Detach the event and   delete the list:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   List.Changed -= new   EventHandler(ListChanged);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   List = null;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; class Test &lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Test the ListWithChangedEvent   class:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main()   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create   a new list:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ListWithChangedEvent list = new   ListWithChangedEvent();&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a class that   listens to the list's change event:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   EventListener listener = new EventListener(list);&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add and remove items   from the list:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.Add("item   1");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   list.Clear();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   listener.Detach();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;   }&lt;BR&gt;}输出&lt;BR&gt;This is called when the event fires.&lt;BR&gt;This is called when the   event fires.&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3744114158079006777?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3744114158079006777/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3744114158079006777' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3744114158079006777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3744114158079006777'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/c_20.html' title='C#--事件教程'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2847610224231392427</id><published>2008-05-20T08:35:00.001+08:00</published><updated>2008-05-20T08:35:29.532+08:00</updated><title type='text'>C#--委托教程</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;&amp;nbsp;本教程演示委托类型。它说明如何将委托映射到静态方法和实例方法，以及如何组合委托（多路广播）。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;C# 中的委托类似于 C 或 C++   中的函数指针。使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码，而不必在编译时知道将调用哪个方法。与 C 或   C++ 中的函数指针不同，委托是面向对象、类型安全的，并且是安全的。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;委托声明定义一种类型，它用一组特定的参数以及返回类型封装方法。对于静态方法，委托对象封装要调用的方法。对于实例方法，委托对象同时封装一个实例和该实例上的一个方法。如果您有一个委托对象和一组适当的参数，则可以用这些参数调用该委托。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;委托的一个有趣且有用的属性是，它不知道或不关心自己引用的对象的类。任何对象都可以；只是方法的参数类型和返回类型必须与委托的参数类型和返回类型相匹配。这使得委托完全适合"匿名"调用。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;注意&amp;nbsp;&amp;nbsp;   委托是在调用方的安全权限下运行而不是声明方的权限下运行。&lt;BR&gt;此教程包括两个示例：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;示例 1 展示如何声明、实例化和调用委托。 &lt;BR&gt;示例 2 展示如何组合两个委托。   &lt;BR&gt;此外，还讨论以下主题：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;委托和事件 &lt;BR&gt;委托与接口 &lt;BR&gt;示例 1&lt;BR&gt;下面的示例阐释声明、实例化和使用委托。BookDB   类封装一个书店数据库，它维护一个书籍数据库。它公开 ProcessPaperbackBooks   方法，该方法在数据库中查找所有平装书，并为每本书调用一个委托。所使用的 delegate 类型称为 ProcessBookDelegate。Test   类使用该类输出平装书的书名和平均价格。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;委托的使用促进了书店数据库和客户代码之间功能的良好分隔。客户代码不知道书籍的存储方式和书店代码查找平装书的方式。书店代码也不知道找到平装书后将对平装书进行什么处理。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;// bookstore.cs&lt;BR&gt;using System;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;// A set of classes for handling a   bookstore:&lt;BR&gt;namespace Bookstore d&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; using   System.Collections;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // Describes a book in the book   list:&lt;BR&gt;&amp;nbsp;&amp;nbsp; public struct Book&lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string   Title;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Title of the   book.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string   Author;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Author of the   book.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public decimal   Price;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Price of the   book.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public bool   Paperback;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Is it paperback?&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public Book(string   title, string author, decimal price, bool   paperBack)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Title =   title;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Author =   author;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Price =   price;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Paperback =   paperBack;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // Declare a delegate type for processing   a book:&lt;BR&gt;&amp;nbsp;&amp;nbsp; public delegate void ProcessBookDelegate(Book   book);&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // Maintains a book   database.&lt;BR&gt;&amp;nbsp;&amp;nbsp; public class BookDB&lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // List of all books in the   database:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ArrayList list = new   ArrayList();&amp;nbsp; &lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Add a book to the   database:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void AddBook(string title,   string author, decimal price, bool paperBack)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list.Add(new Book(title,   author, price, paperBack));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Call a passed-in   delegate on each paperback book to process it:   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void   ProcessPaperbackBooks(ProcessBookDelegate   processBook)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach (Book b in list)   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if   (b.Paperback)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   // Calling the   delegate:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   processBook(b);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   }&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;// Using the Bookstore classes:&lt;BR&gt;namespace   BookTestClient&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp; using Bookstore;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // Class to total and average prices of   books:&lt;BR&gt;&amp;nbsp;&amp;nbsp; class PriceTotaller&lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int countBooks =   0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; decimal priceBooks = 0.0m;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal void   AddBookToTotal(Book book)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; countBooks +=   1;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; priceBooks +=   book.Price;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; internal decimal   AveragePrice()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return priceBooks /   countBooks;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp; // Class to test the book   database:&lt;BR&gt;&amp;nbsp;&amp;nbsp; class Test&lt;BR&gt;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Print the title of the   book.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void PrintTitle(Book   b)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("&amp;nbsp;&amp;nbsp; {0}",   b.Title);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Execution starts   here.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void   Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BookDB bookDB = new   BookDB();&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //   Initialize the database with some   books:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   AddBooks(bookDB);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //   Print all the titles of   paperbacks:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("Paperback Book   Titles:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a new   delegate object associated with the static   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // method   Test.PrintTitle:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   bookDB.ProcessPaperbackBooks(new ProcessBookDelegate(PrintTitle));&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //   Get the average price of a paperback by   using&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // a PriceTotaller   object:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PriceTotaller   totaller = new   PriceTotaller();&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create a   new delegate object associated with the nonstatic   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // method AddBookToTotal on   the object totaller:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   bookDB.ProcessPaperbackBooks(new   ProcessBookDelegate(totaller.AddBookToTotal));&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("Average Paperback Book Price:   ${0:#.##}",&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   totaller.AveragePrice());&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Initialize the book   database with some test books:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void   AddBooks(BookDB bookDB)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bookDB.AddBook("The C   Programming Language",   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Brian W.   Kernighan and Dennis M. Ritchie", 19.95m,   true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bookDB.AddBook("The   Unicode Standard 2.0",   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "The   Unicode Consortium", 39.95m,   true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bookDB.AddBook("The   MS-DOS Encyclopedia",   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Ray   Duncan", 129.95m, false);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   bookDB.AddBook("Dogbert's Clues for the Clueless",   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "Scott   Adams", 12.00m, true);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;&amp;nbsp;&amp;nbsp;   }&lt;BR&gt;}输出&lt;BR&gt;Paperback Book Titles:&lt;BR&gt;&amp;nbsp;&amp;nbsp; The C Programming   Language&lt;BR&gt;&amp;nbsp;&amp;nbsp; The Unicode Standard 2.0&lt;BR&gt;&amp;nbsp;&amp;nbsp; Dogbert's   Clues for the Clueless&lt;BR&gt;Average Paperback Book Price:   $23.97代码讨论&lt;BR&gt;声明委托&amp;nbsp;&amp;nbsp; 以下语句： &lt;BR&gt;public delegate void   ProcessBookDelegate(Book   book);声明一个新的委托类型。每个委托类型都描述参数的数目和类型，以及它可以封装的方法的返回值类型。&lt;BR&gt;每当需要一组新的参数类型或新的返回值类型时，都必须声明一个新的委托类型。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;实例化委托&amp;nbsp;&amp;nbsp;   声明了委托类型后，必须创建委托对象并使之与特定方法关联。与所有其他对象类似，新的委托对象用 new 表达式创建。但是当创建委托时，传递给 new   表达式的参数很特殊：它的编写类似于方法调用，但没有方法的参数。 &lt;BR&gt;下列语句：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;bookDB.ProcessPaperbackBooks(new   ProcessBookDelegate(PrintTitle));创建与静态方法 Test.PrintTitle   关联的新的委托对象。下列语句：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;bookDB.ProcessPaperbackBooks(new &lt;BR&gt;&amp;nbsp;&amp;nbsp;   ProcessBookDelegate(totaller.AddBookToTotal));创建与对象 totaller 上的非静态方法   AddBookToTotal 关联的新的委托对象。在两个例子中，新的委托对象都立即传递给 ProcessPaperbackBooks   方法。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;请注意一旦创建了委托，它所关联到的方法便永不改变：委托对象不可改变。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;调用委托&amp;nbsp;&amp;nbsp;   创建委托对象后，通常将委托对象传递给将调用该委托的其他代码。通过委托对象的名称（后面跟着要传递给委托的参数，括在括号内）调用委托对象。下面是委托调用的示例：   &lt;BR&gt;processBook(b);在此示例中，可以通过使用 BeginInvoke 和 EndInvoke   方法同步或异步调用委托。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;示例   2&lt;BR&gt;本示例演示组合委托。委托对象的一个有用属性是，它们可以"+"运算符来组合。组合的委托可调用组成它的那两个委托。只有相同类型的委托才可以组合。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;"-"运算符可用来从组合的委托移除组件委托。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;// compose.cs&lt;BR&gt;using System;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;delegate void MyDelegate(string s);&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;class MyClass&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static   void Hello(string s)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("&amp;nbsp; Hello,   {0}!", s);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Goodbye(string   s)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("&amp;nbsp; Goodbye, {0}!", s);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   }&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void   Main()&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   MyDelegate a, b, c, d;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create   the delegate object a that references   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // the method   Hello:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = new   MyDelegate(Hello);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Create the   delegate object b that references &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   // the method Goodbye:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b = new   MyDelegate(Goodbye);&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The two   delegates, a and b, are composed to form c:   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; c = a +   b;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Remove a from the composed   delegate, leaving d, &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // which   calls only the method Goodbye:&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d =   c - a;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("Invoking delegate   a:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   a("A");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("Invoking delegate   b:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   b("B");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("Invoking delegate   c:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   c("C");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   Console.WriteLine("Invoking delegate   d:");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   d("D");&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR&gt;}输出&lt;BR&gt;Invoking delegate a:&lt;BR&gt;&amp;nbsp; Hello,   A!&lt;BR&gt;Invoking delegate b:&lt;BR&gt;&amp;nbsp; Goodbye, B!&lt;BR&gt;Invoking delegate   c:&lt;BR&gt;&amp;nbsp; Hello, C!&lt;BR&gt;&amp;nbsp; Goodbye, C!&lt;BR&gt;Invoking delegate d:&lt;BR&gt;&amp;nbsp;   Goodbye,   D!委托和事件&lt;BR&gt;委托非常适合于用作事件（从一个组件就该组件中的更改通知"侦听器"）。有关将委托用于事件的更多信息，请参见事件教程。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;委托与接口&lt;BR&gt;委托和接口的类似之处是，它们都允许分隔规范和实现。多个独立的作者可以生成与一个接口规范兼容的多个实现。类似地，委托指定方法的签名，多个作者可以编写与委托规范兼容的多个方法。何时应使用接口，而何时应使用委托呢？&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;委托在以下情况下很有用：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;调用单个方法。 &lt;BR&gt;一个类可能希望有方法规范的多个实现。 &lt;BR&gt;希望允许使用静态方法实现规范。   &lt;BR&gt;希望类似事件的设计模式（有关更多信息，请参见事件教程）。 &lt;BR&gt;调用方不需要知道或获得在其上定义方法的对象。   &lt;BR&gt;实现的提供程序希望只对少数选择组件"分发"规范实现。 &lt;BR&gt;需要方便的组合。 &lt;BR&gt;接口在以下情况下很有用：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;规范定义将调用的一组相关方法。 &lt;BR&gt;类通常只实现规范一次。   &lt;BR&gt;接口的调用方希望转换为接口类型或从接口类型转换，以获得其他接口或类。 &lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2847610224231392427?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2847610224231392427/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2847610224231392427' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2847610224231392427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2847610224231392427'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/c.html' title='C#--委托教程'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-291856052962836485</id><published>2008-05-20T08:20:00.001+08:00</published><updated>2008-05-20T08:20:33.196+08:00</updated><title type='text'>P903 X500 重启</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;P903硬启的方式和其他PPC手机相比较为"独特"，需要用户同时按下开关以及RESET键，然后同时松开，再按下"挂断键"约5秒左右，屏幕便会提示询问是否清除本机内存，接下来要在倒计时结束时按住左软键不放，直到屏幕提示"yes"，便可以硬启手机.&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-291856052962836485?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/291856052962836485/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=291856052962836485' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/291856052962836485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/291856052962836485'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/p903-x500.html' title='P903 X500 重启'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5841936754543238463</id><published>2008-05-16T23:42:00.001+08:00</published><updated>2008-05-16T23:42:57.664+08:00</updated><title type='text'>3DES加解密</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;FONT size=3&gt;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;summary&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;3des加密字符串&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;/summary&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;param&amp;nbsp;&amp;nbsp;&amp;nbsp;name="a_strString"&amp;gt;要加密的字符串   &amp;lt;/param&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;param&amp;nbsp;&amp;nbsp;&amp;nbsp;name="a_strKey"&amp;gt;密钥   &amp;lt;/param&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;returns&amp;gt;加密后并经base64编码的字符串 &amp;lt;/returns&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;remarks&amp;gt;静态方法，采用默认ascii编码 &amp;lt;/remarks&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Encrypt3DES(string&amp;nbsp;a_strString,&amp;nbsp;string&amp;nbsp;a_strKey)   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TripleDESCryptoServiceProvider&amp;nbsp;DES&amp;nbsp;=&amp;nbsp;new&amp;nbsp;TripleDESCryptoServiceProvider();   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MD5CryptoServiceProvider&amp;nbsp;hashMD5&amp;nbsp;=&amp;nbsp;new&amp;nbsp;MD5CryptoServiceProvider();   &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DES.Key&amp;nbsp;=&amp;nbsp;hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(a_strKey));   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DES.Mode&amp;nbsp;=&amp;nbsp;CipherMode.ECB;   &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICryptoTransform&amp;nbsp;DESEncrypt&amp;nbsp;=&amp;nbsp;DES.CreateEncryptor();   &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;Buffer&amp;nbsp;=&amp;nbsp;ASCIIEncoding.ASCII.GetBytes(a_strString);   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer,&amp;nbsp;0,&amp;nbsp;Buffer.Length));   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}//end&amp;nbsp;&amp;nbsp;&amp;nbsp;method&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&lt;BR&gt;///&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;summary&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;3des解密字符串&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;/summary&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;param&amp;nbsp;&amp;nbsp;&amp;nbsp;name="a_strString"&amp;gt;要解密的字符串   &amp;lt;/param&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;param&amp;nbsp;&amp;nbsp;&amp;nbsp;name="a_strKey"&amp;gt;密钥   &amp;lt;/param&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;returns&amp;gt;解密后的字符串 &amp;lt;/returns&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;exception&amp;nbsp;&amp;nbsp;&amp;nbsp;cref=""&amp;gt;密钥错误   &amp;lt;/exception&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp;&amp;nbsp;   &amp;lt;remarks&amp;gt;静态方法，采用默认ascii编码 &amp;lt;/remarks&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;static&amp;nbsp;string&amp;nbsp;Decrypt3DES(string&amp;nbsp;a_strString,&amp;nbsp;string&amp;nbsp;a_strKey)   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TripleDESCryptoServiceProvider&amp;nbsp;DES&amp;nbsp;=&amp;nbsp;new   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TripleDESCryptoServiceProvider();   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MD5CryptoServiceProvider&amp;nbsp;hashMD5&amp;nbsp;=&amp;nbsp;new&amp;nbsp;MD5CryptoServiceProvider();   &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DES.Key&amp;nbsp;=&amp;nbsp;hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(a_strKey));   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DES.Mode&amp;nbsp;=&amp;nbsp;CipherMode.ECB;   &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICryptoTransform&amp;nbsp;DESDecrypt&amp;nbsp;=&amp;nbsp;DES.CreateDecryptor();   &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string&amp;nbsp;result&amp;nbsp;=&amp;nbsp;"";   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[]&amp;nbsp;Buffer&amp;nbsp;=&amp;nbsp;Convert.FromBase64String(a_strString);   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;result&amp;nbsp;=&amp;nbsp;ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer,&amp;nbsp;0,&amp;nbsp;Buffer.Length));   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch&amp;nbsp;(Exception&amp;nbsp;e)   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;(new&amp;nbsp;Exception("不是有效的&amp;nbsp;base64&amp;nbsp;&amp;nbsp;字符串",&amp;nbsp;e));   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}   &lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&amp;nbsp;result;   &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}//end&amp;nbsp;&amp;nbsp;&amp;nbsp;method&amp;nbsp;&amp;nbsp;&amp;nbsp;   &lt;/FONT&gt;&lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5841936754543238463?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5841936754543238463/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5841936754543238463' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5841936754543238463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5841936754543238463'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/3des.html' title='3DES加解密'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1367053782206527505</id><published>2008-05-08T10:51:00.001+08:00</published><updated>2008-05-08T10:51:28.113+08:00</updated><title type='text'>down oracle patch</title><content type='html'>&lt;H2&gt;需要oracle补丁的请进来，oracle 补丁下载新方法。&lt;/H2&gt;  &lt;DIV class=t_msgfont id=postmessage_1005329&gt;使用迅雷新建任务下载地址填写 &lt;BR&gt;&lt;A   href="ftp://updates.oracle.com/"   target=_blank&gt;ftp://updates.oracle.com/&lt;/A&gt;&amp;lt;patch_num&amp;gt;/p&amp;lt;patch_num&amp;gt;_&amp;lt;version&amp;gt;_&amp;lt;os&amp;gt;.zip&lt;BR&gt;就可以下载到你想要的补丁了。&lt;BR&gt;&lt;BR&gt;以下是几个常用补丁的下载地址。&lt;BR&gt;(10.2.0.3   patch)&lt;BR&gt;&lt;A   title="ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip&amp;#10;CTRL + 单击以下链接"   href="ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip"   target=_blank&gt;ftp://updates.oracle.com/5337014/p5337014_10203_WINNT.zip&lt;/A&gt; &lt;A   href="ftp://updates.oracle.com/5337014/p5337014_10203_LINUX.zip"   target=_blank&gt;ftp://updates.oracle.com/5337014/p5337014_10203_LINUX.zip&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;oracle   9.2.0.8&lt;BR&gt;&lt;BR&gt;&lt;A   href="ftp://updates.oracle.com/4547809/p4547809_92080_WINNT.zip"   target=_blank&gt;ftp://updates.oracle.com/4547809/p4547809_92080_WINNT.zip&lt;/A&gt;&lt;BR&gt;&lt;A   href="ftp://updates.oracle.com/4547809/p4547809_92080_LINUX.zip"   target=_blank&gt;ftp://updates.oracle.com/4547809/p4547809_92080_LINUX.zip&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;oracle   9.2.0.6&lt;BR&gt;&lt;A href="ftp://updates.oracle.com/3948480/p3948480_9206_WINNT.zip"   target=_blank&gt;ftp://updates.oracle.com/3948480/p3948480_9206_WINNT.zip&lt;/A&gt;&lt;BR&gt;&lt;A   href="ftp://updates.oracle.com/3948480/p3948480_9206_LINUX.zip"   target=_blank&gt;ftp://updates.oracle.com/3948480/p3948480_9206_LINUX.zip&lt;/A&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1367053782206527505?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1367053782206527505/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1367053782206527505' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1367053782206527505'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1367053782206527505'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/down-oracle-patch.html' title='down oracle patch'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1492917099069055848</id><published>2008-05-08T10:46:00.001+08:00</published><updated>2008-05-08T10:46:20.828+08:00</updated><title type='text'>oracle patchset</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV class=storyTitle&gt;Tips--Oacle 9i Database 所有大版本补丁集列表 &lt;/DIV&gt;  &lt;DIV class=noDisplay&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV   class=storytext&gt;有朋友问到补丁集的号是多少，个人通常都是用FTP来download补丁集，这里也顺便记录一下9i的所有补丁集的号。方便自己和需要的朋友查看：&lt;BR&gt;&lt;FONT   size=2&gt;4547809 Oracle PATCH SET FOR DATABASE SERVER 9.2.0.8 25-AUG-2006   &lt;BR&gt;4163445 Oracle PATCH SET FOR DATABASE SERVER 9.2.0.7 23-SEP-2005 &lt;BR&gt;3948480   Oracle PATCH SET FOR DATABASE SERVER 9.2.0.6 13-DEC-2004 &lt;BR&gt;3501955 Oracle   PATCH SET FOR DATABASE SERVER 9.2.0.5 26-MAR-2004 &lt;BR&gt;3301544 Oracle PATCH SET   FOR DATABASE SERVER 9.0.1.5 08-JAN-2004 &lt;BR&gt;3095277 Oracle PATCH SET FOR   DATABASE SERVER 9.2.0.4 05-SEP-2003 &lt;BR&gt;2761332 Oracle PATCH SET FOR DATABASE   SERVER 9.2.0.3 03-APR-2003 &lt;BR&gt;2632931 Oracle PATCH SET FOR DATABASE SERVER   9.2.0.2 13-NOV-2002 &lt;BR&gt;2517300 Oracle PATCH SET FOR DATABASE SERVER 9.0.1.4   17-AUG-2002 &lt;BR&gt;2271678 Oracle PATCH SET FOR DATA SERVER 9.0.1.3 19-MAR-2002   &lt;BR&gt;2072050 Oracle PATCH SET FOR DATA SERVER 9.0.1.2 15-NOV-2001 &lt;BR&gt;1968474   Oracle PATCH SET FOR DATA SERVER 9.0.1.1 12-SEP-2001 &lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV class=storytext&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV class=storytext&gt;  &lt;DIV class=storyTitle&gt;Tips--Oracle 8174的patch set还是可download &lt;/DIV&gt;  &lt;DIV class=noDisplay&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV class=storytext&gt;  &lt;P&gt;有很多的客户，还是跑在Oracle 8i上，所以它的patch备一份还是有必要的，要不然哪一天oracle不提供下载了，不知道到哪里找呢，patch   set number 是2376472&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;  &lt;DIV class=storytext&gt;C:Documents and SettingsAdministrator&amp;gt;ftp   updates.oracle.com&lt;BR&gt;Connected to bigip-aru.oracle.com.&lt;BR&gt;220 FTP server   ready.&lt;BR&gt;User (bigip-aru.oracle.com:(none)): &lt;A   href="mailto:vongates@gmail.com"&gt;&lt;FONT color=#007799&gt;vongates&lt;/FONT&gt;&lt;/A&gt;&lt;BR&gt;331   Username OK, please send password.&lt;BR&gt;Password:&lt;BR&gt;230-&lt;BR&gt;230- Welcome to the   Oracle Patch Download FTP Server&lt;BR&gt;230-&lt;BR&gt;230- For detailed help, use command   "quote site help".&lt;BR&gt;230&lt;BR&gt;ftp&amp;gt; cd 2376472&lt;BR&gt;250 Changed directory   OK.&lt;BR&gt;ftp&amp;gt; ls&lt;BR&gt;200 PORT command OK.&lt;BR&gt;150 Opening data connection for   file listing.&lt;BR&gt;&lt;/DIV&gt;  &lt;DIV class=storytext&gt;  &lt;DIV class=storyTitle&gt;Tips--oracle 10g 所有大版本 patchset 列表（原） &lt;/DIV&gt;  &lt;DIV class=noDisplay&gt;&lt;BR&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV class=storytext&gt;今天有一兄弟问我10.1.0.3的patch set   number是多少。说实在的只是在10gR1刚出来的时候有自己测试过R1版本。后来没有怎么用过。现在用10gR2的比较多，接着2007OOW以后，大约在2007年的9月应该可以拿到11g的正式安装源CD吧。这里记录一下到现在的所有大的patchset   number供大家方便查看：&lt;BR&gt;  &lt;P&gt;5337014 Patchset 10.2.0.3 22-FEB-2007 &lt;BR&gt;4547817 Patchset 10.2.0.2   03-MAR-2006 &lt;BR&gt;4505133 Patchset 10.1.0.5 05-FEB-2006 &lt;BR&gt;4163362 Patchset   10.1.0.4 18-MAY-2005 &lt;BR&gt;3761843 Patchset 10.1.0.3 16-AUG-2004 &lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;  &lt;DIV class=storytext&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1492917099069055848?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1492917099069055848/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1492917099069055848' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1492917099069055848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1492917099069055848'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/oracle-patchset.html' title='oracle patchset'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2276684239479595925</id><published>2008-05-08T08:17:00.001+08:00</published><updated>2008-05-08T08:17:58.562+08:00</updated><title type='text'>域策略设首页</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;开始---&amp;gt;管理工具--&amp;gt;active   directory用户和计算机--&amp;gt;选择域右键属性--&amp;gt;找到组策略tab－－》新建一个对像链接－－》打开后用户配置中windows设置－－》Internet   explorer 维护--&amp;gt;URL――――》重要URL打开就首页设置&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;然后在管理模板中--&amp;gt;windows组件--&amp;gt;Internet   Explorer--&amp;gt;禁用更改主页设置&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;原因：设置用户代理策略，不要设置计算机策略，这样当用户登录域时策略被应用，不登录域时，用本地帐户则不应用域策略。&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2276684239479595925?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2276684239479595925/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2276684239479595925' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2276684239479595925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2276684239479595925'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/05/blog-post.html' title='域策略设首页'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-8723543308669410404</id><published>2008-03-30T10:42:00.001+08:00</published><updated>2008-03-30T10:42:52.494+08:00</updated><title type='text'>经典电影系统：兄弟连 Band of Brothers </title><content type='html'>&lt;DD&gt;1942年，一群毫无经验的平民百姓，自愿参军受训，成为美军最新的一个团――空降部队。中尉索博魔鬼般的训练使他们吃尽了苦头，然而他们也成为了美军最精锐的部队。终于在1944年6月5日登上了飞机，奔赴法国"诺曼底"。     &lt;P&gt;　　继《拯救大兵雷恩》后，好莱坞大导演斯皮尔伯格与两届奥斯卡影帝汤姆・汉克斯再度合作，推出有史以来造价最昂贵的电视连续剧《兄弟连》(Band of   Brothers)，这个由二战期间美军在欧洲大陆作战的真人真事改编而成的故事，总计拍摄成本高达1亿2000万美元。汤姆・汉克斯的儿子柯林汉克在剧中出演了重要角色。&lt;/P&gt;  &lt;P&gt;　　在1998年为电影《拯救大兵瑞恩》宣传期间，男主角汤姆・汉克斯曾收到一名参加过二战的老兵亲手赠送的一本小说《战火兄弟连》。读完之后深受感动的汤姆・汉克斯后来把这部小说转赠给斯皮尔伯格，后者则后悔"没有早点看到这本书"，因此两人决定将其拍成电视剧。&lt;/P&gt;  &lt;P&gt;　　6月6日是二次世界大战盟军进攻法国北部的57周年纪念日，汤姆汉克斯特别选择这个有意义的日子，当天，汤姆・汉克斯站在当年美国首度攻击的海岸上为二次大战电视影集《Band   of Brothers》揭开序幕。&lt;/P&gt;  &lt;P&gt;　　《Band of Brothers》是描写美国101空军部队的一个连队Easy   Company的真实故事，他们参与了盟军进攻首日的任务，以及其后整个欧洲的战事。全片是由Stephen Ambrose的著作改编而成，他曾与Easy   Company幸存者进行长时间的访谈、并研究美国大兵的家书后，写下了这本畅销作品。&lt;/P&gt;  &lt;P&gt;　　自从1998年汤姆・汉克斯与史蒂芬斯皮尔伯格合作《抢救大兵瑞恩》之后，两人便构思了这部以二次大战为内容的电视影集，去年在英国经过八个月的拍摄，其中动用了五百个有台词的演员、一万个临时演员，由八个导演共同完成，号称美国电视史上耗资最庞大的一个电视影集。&lt;/P&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DD&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-8723543308669410404?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/8723543308669410404/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=8723543308669410404' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8723543308669410404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8723543308669410404'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/03/band-of-brothers.html' title='经典电影系统：兄弟连 Band of Brothers '/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-9197791808470404225</id><published>2008-03-30T10:41:00.001+08:00</published><updated>2008-03-30T10:41:30.890+08:00</updated><title type='text'>经典电影系列：黄金三镖客 The Good, The Bad, and the Ugly</title><content type='html'>&amp;nbsp;   镖客三部曲：荒野大镖客（1964）、黄昏双镖客（1965）、黄金三镖客（1966）"的终曲，也是萨吉欧里昂西部作品中，被后世公认成就最高的电影。'镖客三部曲'非但让原本死寂的西部电影重新复活（西部片始自1903年《火车大劫案》）；把年已34，终日碌碌的克林伊斯威特捧红；让同班同学颜尼欧莫瑞克奈变成举世闻名的配乐大师。导演更创下许多先例，包括发展出所谓"通心面西部片"（义式西部片）；主角非好人，甚至不是帅哥；对话精简，运用大量动作特写蕴酿气氛；而黄沙、落日、身影、口哨更成为西部片的代表。     &lt;P&gt;　　当然，义式西部片还有许多传奇，开山祖师萨吉欧里昂是意大利人，拍片地点是西班牙，而原本计划是要拍给意大利人看，没想到引起美国观众狂热回响。而他三部曲之一《荒野大镖客》，非但是处女成名作，其实更是黑泽明的《大镖客》的"西部版"，根本就是临摩之作！&lt;/P&gt;  &lt;P&gt;　　虽然全片加长后长达三小时，且西部片无法像东方武术，可发展出精彩的打斗场面，枪战全在一瞬间解决，于是整体气氛的掌握、剧情及对人性的描写，就成为成功西部片必备的要素。本片三个小时中，透过好人、坏人与丑鬼反射出来的人性，以及几场重要经典戏，均不是后来那些"大打一场、主角永不受伤"的动作片，或者只重打斗毫无内容的电影可比拟。这是是近40年后，本片仍能名列影史前30名内的原因。&lt;/P&gt;  &lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   影片主要讲的是：在南北战争期间，三个匪徒趁着政局混乱，谋夺一批财富，三人时而互通有无时而勾心斗角时而举枪对峙。&lt;/P&gt;  &lt;P&gt;　　本片的震撼在于，强盗哲学才是真理：强盗所信奉的生存原则其实就是整个国家的生存原则乃至可以理解为自然人和社会人必需尊崇的生存原则――这里所说的"强盗原则"是中性词无贬意。正因为他们对"强盗原则"信守，他们才在那片荒蛮之地建立起一个伟大的国家。&lt;/P&gt;  &lt;P&gt;　　值得深思的是，本片中对代表"善恶丑"三种力量的三个强盗的交锋过程作了严肃认真地交代，反将南北战争的背景视作一场闹剧，当两军对垒和交战的场景出现时，整个世界真正冷静而保持理智的就剩下三个强盗，其他的人则在毫无意义的拥挤和追逐中受伤、丧生。显然，强盗和军队是互为映射的，世界的多元和不平等源于大小强盗对资源的掠夺。&lt;/P&gt;  &lt;P&gt;　　当初看这部电影的时候就因为导演居然可以在高度商业化的剧情模式中渗入关于政治斗争的深刻思考而心生敬意，后来读到导演本人对本片创作时的只言片语，更暗喜自己读解无误，导演瑟吉欧.莱昴内说："在我心里，美国内战是愚蠢徒劳的，没缘由的。这部片子的关键在一句台词'我从来没见过这么多蠢货死掉，而且是没有目的的'。"&lt;/P&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-9197791808470404225?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/9197791808470404225/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=9197791808470404225' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/9197791808470404225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/9197791808470404225'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2008/03/good-bad-and-ugly.html' title='经典电影系列：黄金三镖客 The Good, The Bad, and the Ugly'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4174523180509155610</id><published>2007-12-20T20:16:00.000+08:00</published><updated>2008-01-03T20:16:18.174+08:00</updated><title type='text'>si object browser 9i 时间 破解</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;H4 class=TextColor1 id=subjcns!13936EFDD164841C!430   style="MARGIN-BOTTOM: 0px"&gt;WSH活用 某些试用软件过期之后&lt;/H4&gt;  &lt;DIV class=bvMsg id=msgcns!13936EFDD164841C!430&gt;  &lt;DIV&gt;有些试用版软件很好用，但又舍不得花钱，试用期过了以后还想尽办法继续使用。&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;有些软件的试用期检查非常的简单，就是根据程序最初安装时候的系统日期来判断的。对于这类的软件，过期之后只要把系统日期修改到最初安装的时候就能继续使用了。&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;不过么，每次打开软件的时候都要修改系统日期也很烦吧？&lt;/DIV&gt;  &lt;DIV&gt;于是就想了个简单的办法（StartOB.vbs）：&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;Dim WshShell, oExec&lt;BR&gt;Dim MyDate, InstallDate&lt;BR&gt;Set WshShell =   CreateObject("WScript.Shell")&lt;BR&gt;&amp;nbsp;&lt;BR&gt;'程序最初安装时候的日期&lt;BR&gt;InstallDate =   "2007-12-20"&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;'并把原先的系统日期备份&lt;BR&gt;Set oExec = WshShell.Exec("cmd /C date /T " )&lt;BR&gt;MyDate =   oExec.StdOut.ReadLine()&lt;BR&gt;'修改系统日期，&lt;BR&gt;Set oExec = WshShell.Exec("cmd /C   date&amp;nbsp; " &amp;amp; InstallDate)&lt;BR&gt;&amp;nbsp;&lt;BR&gt;'启动OB&lt;BR&gt;Set oExec =   WshShell.Exec("D:\Program Files\OB9\ob9.exe")&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;'等待1秒&lt;BR&gt;WScript.Sleep 1000&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;'在OB窗口下按下回车&lt;BR&gt;WshShell.SendKeys "{ENTER}"&lt;BR&gt;&amp;nbsp;&lt;BR&gt;'回复备份的系统日期&lt;BR&gt;Set   oExec = WshShell.Exec("cmd /C date " &amp;amp; MyDate)&lt;BR&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4174523180509155610?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4174523180509155610/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4174523180509155610' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4174523180509155610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4174523180509155610'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/12/si-object-browser-9i.html' title='si object browser 9i 时间 破解'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1969651122822297277</id><published>2007-12-11T21:57:00.000+08:00</published><updated>2007-12-11T22:24:05.806+08:00</updated><title type='text'>道德社会</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;很久没跟人这么世侩过。为了一点小事。今天回家去了次超市，买好东西回家时，发现车子已经被其他的车子包围了。特别是面前横着一辆本田的越野车，因为发现里面有人，就打开车灯让其让让，没人理我，因为前面看过车子里有人，所以走过，敲敲车窗，可里面的人好像死了一样，不理我，没办法，想起办法把车子开出，这次，那个车里的人在我的车开出的时候竟然主动出来，我一时火大，骂了一句，没想到这小子，一定不让我走了，非得叫人来，让我给他道歉。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;   首先说骂人是不对，特别是我骂得比较难听，不过，这种人不骂是不解气。前面我敲敲车窗的时候完全可以告诉我不会开车或者不方便之类的话，可TMD的装死人。特我车好不容易开出来的时候，&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1969651122822297277?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1969651122822297277/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1969651122822297277' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1969651122822297277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1969651122822297277'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/12/blog-post_11.html' title='道德社会'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3742624931565266688</id><published>2007-12-06T15:58:00.000+08:00</published><updated>2007-12-06T15:55:15.614+08:00</updated><title type='text'>喜欢的两段</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;《庄子&amp;#8226;内篇&amp;#8226;大宗师第六》&lt;BR&gt;　　　　　　　　　　　　　　　　　　&lt;BR&gt;【原文】 &lt;BR&gt;　 "   死生，命也，其有夜旦之常，天也。人之有所不得与，皆物之情也。彼特以天为父，而身犹爱之，而况其卓乎，人特以&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;有君为愈乎己，而身犹死之，而况其真乎?   &lt;BR&gt;　　泉涸，鱼相与处于陆，相呵以湿，相濡以沫，不如相忘于江湖。与其誉尧而非桀也，不如两忘而化其道。夫大块载我以形&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;，劳我以生，佚我以老，息我以死。故善吾生者，乃所以善吾死也。" &lt;BR&gt;【译文】   &lt;BR&gt;死生是天命，人世有夜昼的永恒是自然。人对此不能参与其中，这都是事物的常情。那人只把天当作父亲，还终身很爱戴它，&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;何况那卓越的真人呢?人们只认为国君胜过自己，还终身很情愿为他去死，何况那真人呢？   &lt;BR&gt;水源干枯了，鱼儿一起在陆地上，用湿气互相呼吸，用口沫互相沾湿，还不如在江湖里互相忘掉。与其称颂尧而谴责桀，不如&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;把两者忘掉来归化那道。天地赋予形体让我承受，赋予生命让我劳累，赋予衰老让我安逸，赋予死亡让我安息。所以把自己活&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;着看作是乐事，也就是把自己死去看作是乐事了。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV&gt;&lt;BR&gt;《道德经》&lt;BR&gt;第五章 &lt;BR&gt;【原文】 &lt;BR&gt;天地不仁，以万物为刍狗；圣人不仁，以百姓为刍狗。天地之间，其犹橐龠   &lt;BR&gt;乎？虚而不屈，动而愈出。多闻数穷，不如守中。&lt;BR&gt;【译文】&lt;BR&gt;天地是无所谓仁慈的，它没有仁爱，对待万事万物就像对待刍狗一样，任凭万物自生自灭。圣人也是没有仁受的，也同样像刍&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;狗那样对待百姓，任凭人们自作自息。天地之间，岂不像个风箱一样吗？它空虚而不枯竭，越鼓动风就越多，生生不息。政令&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;繁多反而更加使人困惑，更行不通，不如保持虚静。 &lt;BR&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3742624931565266688?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3742624931565266688/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3742624931565266688' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3742624931565266688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3742624931565266688'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/12/blog-post_06.html' title='喜欢的两段'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2839154894237247330</id><published>2007-12-03T22:18:00.000+08:00</published><updated>2007-12-03T22:15:00.722+08:00</updated><title type='text'>学习记</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV class=lh3 id=veryContent style="OVERFLOW: hidden; WIDTH: 100%"&gt;  &lt;TABLE class=contentTable cellSpacing=0 cellPadding=0&gt;    &lt;TBODY&gt;    &lt;TR&gt;      &lt;TD         style="FONT-SIZE: 12px"&gt;学习？人生之进步手段，不一为读书，其然做人、交谈都为之。今天上午开会，感触颇多，哀莫大于心死。有时候道理人人都懂，这段时间也在检讨自己。学习太少，无论是计算机水平还是做人方面，都欠缺太多。讲太多的理由都是空白。想起当年在师院的时候，一同事讲过的话：在做不要讲，讲的时候已经做完了。亦对，生活就是这样的曲折中学习，进步，前进，或者换个方向再进。其实自己的态度才是最重要的。想起了老莫，呵呵，给了我乐观的人生，学会了在苦中找乐子（现在也不苦的说）&lt;BR&gt;推荐大家听一首歌：很好听来西&amp;nbsp;&amp;nbsp;《杀手》--         林俊杰   很新颖的歌，你不会告诉我下载不来吧，去死，用板砖。。。。&lt;BR&gt;用迅雷或者用百度的MP3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2839154894237247330?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2839154894237247330/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2839154894237247330' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2839154894237247330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2839154894237247330'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/12/blog-post_03.html' title='学习记'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-6095966490184952967</id><published>2007-12-03T21:31:00.000+08:00</published><updated>2007-12-03T21:27:59.599+08:00</updated><title type='text'>50songs</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;一直很安静（阿桑）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;爱情转移（陈奕迅）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;红玫瑰（陈奕迅）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;剪刀石头布（郭美美）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;5.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;一年前（胡彦斌）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;6.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;那年的情书（江美琪）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;7.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;零（柯有伦）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;8.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;一个人生活（林凡）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;9.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;被风吹过的夏天（林俊杰、金莎）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;10.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;一千年以后（林俊杰）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;11.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;你那么爱他（林隆璇、李圣杰）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;12.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;至少还有你（林忆莲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;13.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;如果没有你（莫文蔚）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;14.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;爱（莫文蔚）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;15.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;花恋蝶（南拳妈妈）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;16.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;小小（容祖儿）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;17.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;遇见（孙燕姿）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;18.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;眼泪成诗（孙燕姿）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;19.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;对你说（王筝）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;20.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;沿海地带（弦子）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;21.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;七月七日晴（许慧欣）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;22.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;好听（许茹芸）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;23.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;无所谓（杨坤）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;24.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;如果爱下去（张靓颖）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;25.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;隐形的翅膀（张韶涵）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;26.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;说谎（张信哲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;27.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;忘了哭（张学友）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;28.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;星晴（周杰伦）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;29.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;夜曲（周杰伦）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;30.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;发如雪（周杰伦）&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;1.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《说谎》（张信哲）。这是我第一时间毫不犹豫就可以圈出的一首歌，也是唯一曾经让我在车里用&lt;/SPAN&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt" XML:LANG="EN-US"&gt;&lt;FONT   face="Times New Roman"&gt;iPod&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;连放&lt;/SPAN&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt" XML:LANG="EN-US"&gt;&lt;FONT   face="Times New Roman"&gt;10&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;遍的一首歌。夜深人静的时候或者下雨天一个人在车里听这首歌，情绪如烟圈，缠绕着挥之不去。我猜想，一定会有某些人因为经历过某些事而在听这首歌的时候泪流满面。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;2.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《对你说》（王筝）。这是一首母亲写给孩子的歌，世界上母亲对孩子的感情有多真挚，这首歌就有多真挚。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;3.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《花恋蝶》（南拳妈妈）。这首歌刚出来的时候，我曾经主动发短信给几个好朋友向他们推荐。这样的事我今年只做过这么一次。我仍然认为这是一首被市场忽略了的特别好听的歌，方文山的歌词写得也一如既往的漂亮。不知为什么时至今日钱柜都没上这首歌。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;4.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《弃权》（容祖儿）。这是一首包装得十分到位的歌，也非常适合容祖儿的声线。我一直觉得，以容祖儿的先天条件能在这条路上走到今天的位置，她自己和英皇一定都非常努力。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;5.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《路人》（江美琪）。一个上海的朋友在听完这首歌后把自己&lt;/SPAN&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt" XML:LANG="EN-US"&gt;&lt;FONT   face="Times New Roman"&gt;MSN&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;的名字改成了"这首歌怎么这么好听的啦！"&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;6.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《如果爱下去》（张靓颖）。犹豫了一下，在这首歌和《我用所有报答爱》之间选择了这首，原因是《报答》必须就着电影听才好听，好比酱豆腐只有抹在馒头上才好吃一样；而这首歌是无条件的好听。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;7.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《听妈妈的话》（周杰伦）。可能因为内容吧，这首歌打动了不少人，也包括我自己。它也是从和《千里之外》的比较中脱颖而出的，主要是因为《千里之外》费玉清和周董的声音对比赋予了那首歌太多小品的特质。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;8.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《剪刀石头布》（郭美美）。这位华纳力捧的新人没有红透有点可惜。虽然《不怕不怕》这首翻唱歌曲更流行也更适合钱柜里集体美着的氛围，但是我本人却还是更喜欢这首《剪刀石头布》中散发出的安静与平和。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;9.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《沿海地带》（弦子）。弦子的音乐天赋在《不得不爱》中已经显露，她出好东西只是迟早的事。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo2"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; mso-fareast-font-family: 'Times New Roman'"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT   face="Times New Roman"&gt;10.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;《过马路》（郑融）。这是一首我前天刚刚听到的新歌，一听就爱上了。所以，尽管它还没来得及上我的"本周新歌推荐"，我还现在这个榜单里郑重推荐了。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;附：另外几首让我有点动心但是最终落榜的歌曲还包括《单身潜逃》（戴佩妮）、《雨天》（孙燕姿）、《我听着风吹的声音》（栗锦）、《北极圈》（&lt;/SPAN&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt" XML:LANG="EN-US"&gt;&lt;FONT   face="Times New Roman"&gt;F.I.R&lt;/FONT&gt;&lt;/SPAN&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"&gt;）、《一个人流浪》（飞轮海）等。&lt;/SPAN&gt;&lt;/P&gt;  &lt;DIV class=invisible id=reference&gt;&amp;nbsp;&lt;/DIV&gt;  &lt;DIV class=invisible&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;1.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《彩虹》（周杰伦，周杰伦词曲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;在过去的三、四周时间里，我的&lt;SPAN lang=EN-US   XML:LANG="EN-US"&gt;iPod&lt;/SPAN&gt;几乎为它沦陷，反复播放的频率连我自己都十分吃惊。上一次这么"专一"是周杰伦刚刚推出《夜曲》的时候。给各位一个小小的忠告：如果正处在失恋的状态，千万别听这首歌，否则可能会彻底崩溃。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;2.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《爱情转移》（陈奕迅，林夕词，&lt;SPAN lang=EN-US   XML:LANG="EN-US"&gt;Christopher Chak&lt;/SPAN&gt;曲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;行云流水的旋律同林夕的甘醇文字简直是天作之合。小的时候写作文总喜欢用一个形容词："隽永"，我想这就是我当初听到这首歌后的第一感觉。这种感觉的作品我总觉得内地的音乐公司很难做得出来，下次见到老宋柯要问问他为什么。直到今天，它还是我手机的铃声，不过我正在考虑把它换成《彩虹》。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;3.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《红玫瑰》（陈奕迅）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;我个人觉得陈奕迅&lt;SPAN   lang=EN-US   XML:LANG="EN-US"&gt;2007&lt;/SPAN&gt;年表现相当抢眼。如果说《爱情转移》像落地窗上的雨幕径直流向人们心中最需要被打湿的那个角落，那么《红玫瑰》则更像午夜在老式留声机传出的爵士乐中品一支&lt;SPAN   lang=EN-US   XML:LANG="EN-US"&gt;Cohiba&lt;/SPAN&gt;雪茄后那杯顶级干邑在你舌苔上留下的百转千回。不知为什么，听着《红玫瑰》，我会想起张爱玲笔下的旧上海。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;4.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《青花瓷》（周杰伦，方文山词，周杰伦曲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;我没有太多的偶像，方文山算一个。他的词已经到了出神入化的地步。"天青色等烟雨，而我在等你，月色被打捞起，晕开了结局"；"帘外芭蕉惹骤雨门环惹铜绿，而我路过那江南小镇惹了你，在泼墨山水画里你从墨色深处被隐去"。一个字：我服了。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;5.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《傻瓜》（温岚，温岚词，吴克群曲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;这是一首相当耐听的作品，也非常适合温岚的声线。旋律不是很复杂，在荡气回肠的同时还没有落入往往会显得刻意的荡气回肠的俗套，不容易。可以说，吴克群凭借他的音乐天赋和种子团队一起通过这首歌已经成功地把温岚推上了一个新的台阶。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;6.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《达尔文》（蔡健雅）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;自从听到她的第一首歌，我就认定蔡健雅是个音乐才女，并且从来没有对这个判断产生过怀疑。不知为什么，这首《达尔文》让我想起了&lt;SPAN   lang=EN-US XML:LANG="EN-US"&gt;Norah Jones&lt;/SPAN&gt;浑然天成的"&lt;SPAN lang=EN-US   XML:LANG="EN-US"&gt;Come Away with Me&lt;/SPAN&gt;"。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;7.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《我们说好的》（张靓颖，文雅词，李伟菘、于立桄曲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;一部感人的&lt;SPAN   lang=EN-US   XML:LANG="EN-US"&gt;MV&lt;/SPAN&gt;把这首如泣如诉的苦情歌推到我们面前。虽然旋律本身在"抓人"的同时多少有点老套，但是经过"大歌"经验丰富的张靓颖的游刃有余的深情演绎，这首作品仍然给我留下了相当饱满的印象。有些时候面对一些人的特殊天赋你只能感叹一句"没办法，爹妈给的！"张靓颖的声音条件大抵可以如此概括。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;8.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《杀手》（林俊杰，林秋离词，林俊杰曲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;旋律好听的歌有很多，好听而同时还能算"有点意思"的歌就不那么多了。这算一首。感觉是老林和小林抓住我们的听觉玩了一个轻灵有趣的游戏。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;9.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;   &lt;SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《想太多》（李玖哲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;李玖哲的声音我一直非常喜欢。他的这首《想太多》属于第一遍听没有太多感觉、但是越听越容易陷入的那种。有些地方让我恍惚觉得是韩剧高潮里飘出来的音符。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal   style="MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; tab-stops: list 21.0pt; mso-list: l0 level1 lfo1"&gt;&lt;SPAN   lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体"   XML:LANG="EN-US"&gt;&lt;SPAN style="mso-list: Ignore"&gt;10.&lt;SPAN   style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;《如果你也听说》（张惠妹，李焯雄词，周杰伦曲）&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;这首相对来说比较中规中规的歌说不上有多特别，不过副歌部分还是推得有模有样，加上张惠妹很有表现力的声音，总体来说还是非常不错的。不过说老实话，这是我在挑选上榜歌曲时唯一有过犹豫的一首。&lt;/SPAN&gt;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN lang=EN-US style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"   XML:LANG="EN-US"&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;  &lt;P class=MsoNormal&gt;&lt;SPAN   style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体"&gt;其它还有几首也几乎上榜：S.H.E.的《中国话》、梁静茹的《会呼吸的痛》、何洁的《夏雪》、周传雄的《弱水三千》、容祖儿的《小小》和《牛奶》、&lt;SPAN   lang=EN-US   XML:LANG="EN-US"&gt;F.I.R&lt;/SPAN&gt;的《月牙湾》、何韵诗的《睡王子》、许如芸的《好听》、温岚的《口袋》、蔡健雅的《空白格》等等。&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-6095966490184952967?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/6095966490184952967/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=6095966490184952967' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6095966490184952967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6095966490184952967'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/12/50songs.html' title='50songs'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5296083009957347686</id><published>2007-12-03T15:29:00.000+08:00</published><updated>2007-12-03T15:26:11.721+08:00</updated><title type='text'>McAfee VirusScan 与 foxmail 冲突解决方法</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;由于McAfee VirusScan   8.0的访问保护中定义了对25端口的保护，按照McAfee的说明，这是针对蠕虫病毒通过默认的Email发送25端口发送病毒邮件而设置的。向这个禁止规则的属性中可以添加Foxmail.exe为"已排除进程"，也不能解决。只能在确定自己机器没有蠕虫病毒情况下，在VirusScan控制台的访问保护属性中打开对于"禁止大量发送邮件的蠕虫病毒发送邮件"的限制即可正常使用Foxmail发送邮件。&lt;FONT   size=3&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5296083009957347686?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5296083009957347686/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5296083009957347686' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5296083009957347686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5296083009957347686'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/12/mcafee-virusscan-foxmail.html' title='McAfee VirusScan 与 foxmail 冲突解决方法'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7943300904779321115</id><published>2007-12-02T20:41:00.000+08:00</published><updated>2007-12-02T20:37:53.816+08:00</updated><title type='text'>奖</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV class=lh3 id=veryContent style="OVERFLOW: hidden; WIDTH: 100%"&gt;  &lt;TABLE class=contentTable cellSpacing=0 cellPadding=0&gt;    &lt;TBODY&gt;    &lt;TR&gt;      &lt;TD         style="FONT-SIZE: 12px"&gt;学会好久没开产品技术会了。说实话，奖项对于我来说一直是个可有可无的项目，不过，想着听听新产品发布会看看技术新潮流然后还有机会拿个什么MP3或者瑞士刀之类的，未尝不是美事。&lt;BR&gt;&amp;nbsp;&amp;nbsp;         进场领号，第一项目一完就是三等奖抽，没想到我一上来就是个三等奖，瑞士刀一把。（小的来西，还说有188元，打死也不信）。跟后面同事说用他的投资券来换（他有两张），小子犹豫了半天，放弃了。因为是THINKPAD的发布会，我没机会用这个东西。LENOVO还跟IBM一样，美国跟中国不是一个价，所以没什么兴趣，回家来西。晚饭前打电话给同事，才知道没一个人抽中。&lt;BR&gt;&amp;nbsp;&amp;nbsp;         想想都笑了，道理简单来西，到手的不知道珍惜，不要过分的贪婪，有可能一无所得&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7943300904779321115?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7943300904779321115/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7943300904779321115' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7943300904779321115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7943300904779321115'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/12/blog-post.html' title='奖'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-6521856289401152338</id><published>2007-11-29T14:25:00.000+08:00</published><updated>2007-11-29T14:21:31.589+08:00</updated><title type='text'>加班从这儿开始</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV&gt;今天副局长找我谈话了，深感压力，没给老婆说，只想说这年头其实大家活着都不容易来着，加油做。强迫自己开心一下下，从现在开始每天到单位加班，到元旦。希望能了解这件不是我的事。   &lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   好在我的LINUX又进入一个阶段了。可TMD的源码就是入不门。得再些书看看&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-6521856289401152338?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/6521856289401152338/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=6521856289401152338' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6521856289401152338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6521856289401152338'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/blog-post_29.html' title='加班从这儿开始'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1055378908942100969</id><published>2007-11-20T14:10:00.000+08:00</published><updated>2007-11-20T14:07:05.786+08:00</updated><title type='text'>新天地之商务小吃</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;周日下午去健身房练完之后，听同事说起新天地24楼有个韩国人办的韩国料理。所以决定一起前往，电梯一到24楼后，就闻到很重的厨房味，想想也是，在这商务的小间组成的正方形环体内，不通风是这样的。右转左转之后就看到了玻璃门，大喜，冲进去，五六张四人小桌，边上有一角好像是主人的休息角，再就是柜台了，很小的在窗户边密封出一个小厨房。看样子（HACCP做的不错）哈哈，专业术语了，指食品类生产过程中的关键点控制。&amp;nbsp;&amp;nbsp;   &lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;   顾客很少，我们进去之前，就一对母女，找了个里面的桌子坐下，很韩国味的一个小男生拿着菜单上来，大体看了一下，基本上都是盖叫饭之类的，然后就是一个紫菜包饭，一个韩国PIZZA，韩国烤肉之类的，老婆要了个韩国年糕，服务生又推荐了个韩国PIZZA，然后我就要了大酱汤，答：没有提供。晕倒，说那来个烤肉吧，答：烤肉19：00以后才提供。**#E#*￥（#（，没办法，就叫了两个盖叫饭，然后叫老板上茶，老板长得很韩国，说这个要DIY，才发现在进门的地方，有茶、咖啡，白开水提供的。喝了一下下那个咖啡，有咖啡味，没咖啡样（估计又是韩国特色了吧）。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;上饭的速度还可以，一会儿年糕上来了，红红的酱中年糕，吃了一下，味道感觉很正，记忆里最深的就是那个韩国PIZZA了，当时问的服务生，我们三个人吃什么比较好，说韩国PIZZA，以为是个大大的pizza，上来一看，就是把紫菜饭的紫菜去掉，换上牛肉，混点色拉，三个人一顿饭，58个大洋。便宜吧，呵呵&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   总结下下：环境还不错，宁静，适合小二口去吃，如果是好朋友吃饭，推荐七点以后去吃，如果一般朋友，七点以前。&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1055378908942100969?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1055378908942100969/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1055378908942100969' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1055378908942100969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1055378908942100969'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/blog-post_20.html' title='新天地之商务小吃'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2102010722013140547</id><published>2007-11-19T14:50:00.000+08:00</published><updated>2007-11-19T14:47:37.117+08:00</updated><title type='text'>生活之道，在于宽容</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV class=bvEntry id=entrycns!6D42A798E6ED20DD!465 bv:cat="" bv:ca="true"   bv:cns="cns!6D42A798E6ED20DD!465"&gt;  &lt;DIV id=LastMDatecns!6D42A798E6ED20DD!465&gt;&amp;nbsp;&amp;nbsp; 生活之道   ，在于宽容。宽容与人，宽容与己。很多时候，大多数都在宽容别人，亦或宽容自己，可能在两者之间取得平衡的应该不多，要不然天下也不会有那么多痛苦的事情了。&amp;nbsp;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&amp;nbsp;   当发生一些事情，自己能把握的，那应该尽可能的宽容别人，这个宽容有度，出发点就是来于换位思考，如果是你，你会这样做吗？当然如果是确定，那么你也就有宽容别人的理由了，我自己如果遇到这种事都会这样，那么有什么理由要求别人比我更高深一点？当有人世间很多事情自己不能掌握的时候，首先一定要办法再试试，如果还是不行，那也要有点阿Q精神，人世在世也就几十年时间，不可能万能，99。999%的人都会是俗人，只要心态平俗，保持目标单一，不成功也无所谓啦，因为在别人看来你还是有成功之处的。让自己生活的轻松一点快乐一点。&lt;/DIV&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2102010722013140547?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2102010722013140547/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2102010722013140547' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2102010722013140547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2102010722013140547'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/blog-post_1652.html' title='生活之道，在于宽容'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3592438380981345373</id><published>2007-11-19T13:15:00.000+08:00</published><updated>2007-11-19T13:11:46.452+08:00</updated><title type='text'>中国电信与我的故事</title><content type='html'>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;  &lt;HTML&gt;&lt;HEAD&gt;  &lt;META http-equiv=Content-Type content=text/html;charset=gb2312&gt;  &lt;META content="MSHTML 6.00.6000.16544" name=GENERATOR&gt;&lt;/HEAD&gt;  &lt;BODY id=MailContainerBody   style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"   bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"   name="Compose message area"&gt;  &lt;DIV&gt;&lt;FONT face=宋体&gt;&lt;SPAN id=span_Body&gt;1、电信推出"合家欢"   套餐,我就去参加了.去交钱的时候,服务台小姐告知要参加一个什么星空漫游服务,是免费三个月的,三个月之后,如果机主本人不取消,默认就开通这项服务,   服务费大概是10块一个月吧.我当时就要求,不愿意享受这个服务,可那个服务员MM说这是单位规定,只能参加.一个月之后，我用参加活动的电话打给   10000要求取消服务，被告知一定要提供本人的身份证号码，要不然一定不给取消。&lt;BR&gt;&lt;BR&gt;2、某日，小灵通收到短信，告知有免费的新闻短信体验，并且强调在正式开通之前会有专人联系。之后好像知道我一定能接受似的，短信就来了。所以急着自己回复短信0000，又被告知没有订阅这个免费短信，晕倒，只好打电话给10000，又告知两天之后才能取消。&lt;BR&gt;&lt;BR&gt;3、   06年电话宽带开通的时候，电信送了个电影网站"NTH（南太湖）"，片源都是realplayer的，更新也很快。我老婆一直在看，可半年之后，电信突然把另一个media的网站改成南太湖，而这个旧站要求交费才能使用，真是大晕，这种移花接木的事情他们都做的出来，真是服了。&lt;BR&gt;&lt;BR&gt;4、某日我泰山家的电话清单发现几个月来多出一个什么杀毒费用，可他家的电脑的杀毒软件都是我亲自装的，一直工作正常。去电脑被告知，是用户自己选择的，呵呵，后来才发现，只要adsl拨号上网，有时候一不小心就会弹出一个窗口，上门有杀毒体验之类的，一不小心很容易就点了，而且奇怪的是这个窗口有时候有，有时候又没有。真是搞笑。   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3592438380981345373?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3592438380981345373/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3592438380981345373' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3592438380981345373'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3592438380981345373'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/blog-post_19.html' title='中国电信与我的故事'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7430182790568742849</id><published>2007-11-16T09:10:00.000+08:00</published><updated>2007-11-16T09:08:32.258+08:00</updated><title type='text'>个人前程</title><content type='html'>&lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV&gt;小的时候从来没想过自己以后会做什么。现在看来，这是正确的，人不能过度计划自己的未来，一则社会变化的太快，二则人也会变化的。高考的时候，要报专业，想来想去的时候全部报了医学方向（甚至怕自己考不上，还报了法医）真可谓为了医这个方向不管什么都报了，唯一一个志愿报的就是计算机，可天算不如人算，竟然最后读了计算机。   &lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   进入计算机这个世界后，才发现世界如此美妙，在不断的学习中，感觉自己也慢慢入门了。想想这几年下来，在编程方面学了先后进行了asp,vb编程，然后就是网络维护，再后就是unix   linux，oracle，现在又回到编程了。这当中学的东西不计其数（真话，可真学到脑子的不多）。 &lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   这段时间一直在想，现在也是三十的人，应该想想到底做什么方向了，要不然到老，还是一个百事通，一个一事无成的人，不会有什么成就感了。呵呵，可选什么方向，真是好麻烦。也许去做人家小秘比较好。做技术的太累，看看国外同行做个高校网管都做的巨牛无比，好羡慕啊，可现在的国内环境、工作环境都是不允许一个人在一方面做专的，特别是类似GPL下的这些东，免费开发提供给全世界的人用，还不如开发个小软件给本单位用来的实在。呵呵。功利至上万岁吧！   &lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;我想我可能还是会选择linux这块，感觉这是未来技术的方向，而且开源的东西，不怕学不到最新的技术。   &lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7430182790568742849?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7430182790568742849/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7430182790568742849' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7430182790568742849'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7430182790568742849'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/blog-post_16.html' title='个人前程'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3545838119554332702</id><published>2007-11-15T22:24:00.000+08:00</published><updated>2007-11-15T22:32:22.603+08:00</updated><title type='text'>体检结果</title><content type='html'>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;  &lt;HTML&gt;&lt;HEAD&gt;  &lt;META http-equiv=Content-Type content=text/html;charset=gb2312&gt;  &lt;META content="MSHTML 6.00.6000.16544" name=GENERATOR&gt;&lt;/HEAD&gt;  &lt;BODY id=MailContainerBody   style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"   bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"   name="Compose message area"&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;  &lt;DIV&gt;上个星期单位组织体检，今天拿到结果，甘油三脂过高，正常范围0.45-1.69 ,本身2.02 ,还有个高密度脂蛋白&amp;nbsp;正常范围   &amp;gt;35,我是25.30,医生给的结果是门诊定期复查，上网查了一下，才明白是胖了的原因，其实我个人感觉这半年来真的没吃什么大鱼大肉，可人还是一个劲的在胖，受不了，所以决定参加一个健身俱乐部，想当年单身汉时，从来都没受过高脂的待遇，人都蜡黄蜡黄的，现在天天在她老婆家吃的有可能真的过剩了。&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   不想活得多长命，只想在活着的时候是健康的。祝瘦的同志正常，胖的同志正常，祝我回到70公斤水平！！哈哈&amp;nbsp;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3545838119554332702?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3545838119554332702/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3545838119554332702' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3545838119554332702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3545838119554332702'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/blog-post.html' title='体检结果'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-6374333386488591616</id><published>2007-11-14T10:36:00.000+08:00</published><updated>2007-11-14T10:34:25.891+08:00</updated><title type='text'>推荐一款IP地址转换工具</title><content type='html'>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;  &lt;HTML&gt;&lt;HEAD&gt;  &lt;META http-equiv=Content-Type content=text/html;charset=gb2312&gt;  &lt;META content="MSHTML 6.00.6000.16544" name=GENERATOR&gt;&lt;/HEAD&gt;  &lt;BODY id=MailContainerBody   style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"   bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"   name="Compose message area"&gt;  &lt;DIV&gt;&lt;FONT face=新宋体   size=2&gt;一直没找到中意的IP地址切换软件，今天在维修别人电脑的时候竟然让我看到了这款软件，软件名叫：&lt;/FONT&gt;&lt;A   href="http://www.4w5w.com/soft/IPHelper4.6.zip" target=_blank&gt;&lt;FONT face=新宋体   size=2&gt;IPHelper&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=新宋体 size=2&gt;&amp;nbsp; 网址为：&lt;/FONT&gt;&lt;A   href="http://www.4w5w.com/soft/"&gt;&lt;FONT face=新宋体   size=2&gt;http://www.4w5w.com/soft/&lt;/FONT&gt;&lt;/A&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=新宋体 size=2&gt;以下是功能说明；&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;  &lt;P class=text&gt;&lt;FONT face=新宋体   size=2&gt;1、增加了"生成快捷方式"功能，大大提高了部分常用配置的切换速度。软件可以最小化到任务栏，并快速切换配置。修正了部分bug，增进界面友好性。(2007/01)&lt;/FONT&gt;&lt;/P&gt;  &lt;P class=text&gt;&lt;FONT face=新宋体   size=2&gt;2、&amp;nbsp;改用xml配置文件存放历史配置；增加多IP多DNS设置；增加IE代理服务器设置；增强了操作性。(2006/07)&lt;/FONT&gt;&lt;/P&gt;  &lt;P class=text&gt;&lt;FONT face=新宋体 color=#000000   size=2&gt;3、增加网络连通情况测试。调整了界面结构，增加界面友好性。如果发现Bug请及时通知我，谢谢！(2005/03)&lt;/FONT&gt;&lt;/P&gt;  &lt;P class=text&gt;&lt;FONT face=新宋体 color=#000000   size=2&gt;4、-增加了自动备份功能；增加了小图标显示功能(右键菜单内选择)；修正了多DNS会自动退出的Bug。(2004/11)&lt;/FONT&gt;&lt;/P&gt;  &lt;P class=text&gt;&lt;FONT face=新宋体 color=#000000   size=2&gt;5、加强了界面友好度，可以更改配置名称。添加了DNS修改功能。(2004/03)&lt;/FONT&gt;&lt;/P&gt;  &lt;P class=text&gt;&lt;FONT face=新宋体 color=#000000   size=2&gt;6、加强了对多网卡的支持，对性能进行了优化，添加了新版本提示功能。(2003/08)&lt;/FONT&gt;&lt;/P&gt;  &lt;P class=text&gt;&lt;FONT face=新宋体   size=2&gt;软件本身也很小，只有几百K，1M都不到，而且还是绿色软件，所以大大推荐一下，要把笔记本从单位带回家，或者要带着电脑出差的人们&lt;/FONT&gt;&lt;/P&gt;  &lt;P class=text&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-6374333386488591616?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/6374333386488591616/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=6374333386488591616' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6374333386488591616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6374333386488591616'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/ip.html' title='推荐一款IP地址转换工具'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2712779123172018146</id><published>2007-11-13T22:31:00.000+08:00</published><updated>2007-11-13T22:29:43.048+08:00</updated><title type='text'> 一个30岁男人的婚姻思考 </title><content type='html'>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;  &lt;HTML&gt;&lt;HEAD&gt;  &lt;META http-equiv=Content-Type content=text/html;charset=gb2312&gt;  &lt;META content="MSHTML 6.00.6000.16544" name=GENERATOR&gt;&lt;/HEAD&gt;  &lt;BODY id=MailContainerBody   style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"   bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"   name="Compose message area"&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;SPAN class=postcolor&gt;&lt;FONT   size=3&gt;&lt;BR&gt;今年30了,结婚4年多了。平心而论，我的婚姻生活很幸福，但是很多时候我似乎并不满足。因为，我妻子是一个没有正式工作的人，现在给别人打工，也不可能有什么发展。文凭也不高，估计再过几年，也就会成为全职的家庭主妇。我的收入尚可，因此，到目前为止，我们还没有感到很大的经济压力。但是，以后呢？在中国这个社会，普通工薪阶层，靠一个人的收入想让一家三口过的很好，是比较有压力的。我从来没有在妻子面前表现过担心，也不知道她心里想过没有，但埋在我心里的郁闷是一直存在的，特别是工作不顺心的时候，我甚至想过很后悔，当初为什么要选择她呢？每次，看到身边朋友同事的妻子都是有正式工作人，我心里甚至想过，如果叫我第二次选择，我不会选择妻子。结果婚，似乎才知道，原来婚姻是如此现实。但是，有时候我突然假设，如果我有几百万，上千万，我会后悔选择妻子吗？结果是不后悔。我会毫不犹豫的选择我的妻子，因为我爱她，她也爱我。理智的我，突然发现，原来我和妻子的爱情是真的！但是，即便如此，在物质面前，我甚至会动摇。我在鄙视自己的同时，把这个矛盾埋在心里，对谁也没有说过。&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;婚姻真的如此现实？我在网上，在现实生活中看到很多夫妻搞的像仇人一样，我甚至觉得不可思义。我难于理解！如果在网上，我甚至会觉得对方再编故事！是骗子!   不是我幼稚，而是我的婚姻经历和感情生活，让我无法理解。如果有一天我和妻子离婚了，在财产分割上，我甚至不会有任何反对意见，即使离婚，我也会时常关心她的生活。我觉得离开妻子，心里愧疚。当然这本生就是矛盾的，我有这样的想法，我根本不会和妻子离婚！&lt;BR&gt;&lt;BR&gt;我是一个唯感情论者，这不知是我的成功还是失败。我到目前为止，我只谈过一场恋爱，只和一个女人有肌肤之亲，这个女人就是我现在的妻子。在我眼里，爱情是圣洁的。我对那些在感情生活中游戏的人，是非常不理解的。婚姻也许真的要讲缘分？我是一个无神论者，常常嘲笑一些人对一些事情的崇拜。但是，对婚姻，我几乎要相信，这是缘分，不是你想改变就能改变的。&lt;BR&gt;&lt;BR&gt;因为和妻子的相识，相爱，结婚，真的无法解释。大学毕业分配到一个中型城市，这个城市是个旅游城市，但是并不发达。甚至开始他们的话我都听着有困难。第一次和妻子见面是她是一个同学的女朋友的朋友。我永远也忘不了她当时的样子。很瘦，很高，穿着很素雅，不施任何粉黛。当时，她远远走来，脸上带着微笑，听不到一点脚步声，就像风吹来的一样，当时是7月的黄昏，阳光在她背后。我觉得一阵心动。走近了，我也不敢正式她。她倒是很大方的微笑，行为举止很文静。那次聚会，我们说的很多，但是她除了微笑，话不多，声音也很小。现在，我想起她，只能用柔情两个字是最合适的了。&lt;BR&gt;&lt;BR&gt;当时，谁也没有想到要把她介绍给我。因为，觉得我们不相配。她只是一个中专毕业，而且是是成人中专。父母也是一般退休工人，退休工资很低。而我好歹也有不错的家庭，一个不错的国家工作单位，而且是正规的重点大学本科毕业。因此，大家都觉得不可能。我也觉得不可能。尽管，第一次见面，她让我心动。&lt;BR&gt;&lt;BR&gt;我不是见女人就心动的人，比她漂亮的女人现实中我见过很多，但是我从来没有这样的感觉。到现在为止，我也没有想通，每次和我妻子谈起我当时的感受，妻子都要兴奋好几天。不服"缘分"还真的不行。&lt;BR&gt;&lt;BR&gt;后来的事情，真和电视剧里面演的差不多。每次和那个同学见面，她都带着她女朋友，也许是怕我寂寞，每次我妻子都是作陪的。一直这样持续了半年，没有任何人提我和妻子怎么怎么样，连开玩笑都没有。也许大家都觉得不可能。但是，在我心里，这半年，已经把当时的妻子牢牢的刻在心里了。当时年轻，没有想过未来。只是觉得，每次聚会，没有她不行。每次聚会，觉得有她就会非常高兴，我的表现也很兴奋。因为，同学和她女朋友有时候需要独处，所以，玩的时候，都是我们一组的，潜意识里面已经把她当成我的女朋友了。我现在曾经追问过妻子，当时是否和我一样的感受，但是她很认真的回答，当时，她确实没有想过我会成为她的男朋友，真的认为大家都是普通朋友而已，没有多想，我听了，很是不爽，怀疑她没有说真话，要她承认当初对我就有"打猫儿"心肠，每次，妻子都是认真的说，真的没有，看到我不爽的表情，立刻嬉皮笑脸的哄我，其实第一次见面就爱上了我，然后哈哈大笑收场。&lt;BR&gt;&lt;BR&gt;我们关系的进步，是那次牵手开始的。有一次，她们到我们宿舍来玩，当时我和那个同学住同一个集体宿舍。下楼的时候，突然停电了。当时很黑，我怕她摔倒，立刻下意识的用手去扶她，牵住了她的手，当时有一种触电的感觉，我也感觉到她很不自然的颤抖。当时，脑子里面一片空白，下那几级楼梯，似乎花了半个世纪。下了楼，她低着头，不敢看我，匆匆到了别，飞似的跑了。现在想来，真和80年代的爱情电影差不多，但是，这是事实。&lt;BR&gt;&lt;BR&gt;那天晚上，我失眠了。我突然觉得要她作我女朋友的冲动。也许，人太年轻了，24岁呀，没有考虑将来，似乎觉得婚姻对我是个遥远的事情。作女朋友有什么呢？何必考虑那么多。第二天，我给我同学的女朋友打电话，要她介绍我妻子作我女朋友。当时，她听了我的话，过了大约半分钟才开始大笑起来。然后说，没问题，她给我说。&lt;BR&gt;&lt;BR&gt;结果晚上，她们就又来了。同学和她女友找个理由出去了。我妻子突然变得很不自然起来，以前相处的那种大方得体的举止现在都没有了，就是红着脸低着头，不说话。我也对着她傻笑，她也对着我傻笑。我并没有像她表白什么，但是从那是时候开始，她便成为我的女朋友了。&lt;BR&gt;&lt;BR&gt;后来的事情，可以写成一部小说。太多值得回忆的细节了。这是我的初恋。后来，我便能自然的牵她的手了，她也自然的挽我的胳膊了。我们单独相处的时间越来越长。后来就有了第一次接吻。真是让人终生难忘，现在想起来，我觉得爱情真是太美好了。我们都是第一次接吻，现在和妻子回想起来，妻子都会沉侵其中，像喝醉酒一样，半天不能说话。再后来，就有烦心的事情了。因为每次，我考虑到结婚的时候，我就心烦。我怎么给父母说？我怎么给同事说？当时我还没有考虑未来的经济压力，也许年轻。当时我最大的障碍是父母和面子。妻子似乎也明白这些，从来不和我谈这些事情。每次我们都很快乐。我们回避这个话题。&lt;BR&gt;&lt;BR&gt;后来，我想了很多。我问自己：你是真心爱她的吗？我知道我是真心爱她的。但是，你能娶她吗？我心里犹豫了。后来，作了很多的思想斗争。那一段时间，和妻子约会都心事重重，对妻子的态度也没以前好了。细心的妻子当然发现了这一切。她什么也没有说。我开始不给妻子主动打电话了。开始，妻子每天还打电话问候我，后来也许感觉到我态度的变化。她也没有打电话来了。这样持续了大约2周，我们没有联系过。这两周我都在煎熬中度过。我很想找到妻子，对她说，我们结婚吧。然后，抱着她大哭一场。但是，我没有。我潜意识里面似乎觉得应该分手。&lt;BR&gt;&lt;BR&gt;记得那是一个阳光灿烂的下午，我不舒服，请了假在宿舍休息。我像一个驱壳一样躺在床上，那个妻子送我的枕头包围着我。2周的煎熬，我不知道我到底是真的感冒了，还是心病。我没有力气。我看到，妻子来了，手来拿着一束花，我记得是红色的月季花。妻子表情很严肃。她有我们宿舍的钥匙，她经常抽休息时间给我洗衣服和做饭。当时，她看到我躺在床上，似乎也很诧异。她以为我没在家。看到我病了，她很紧张。立刻很能干的给我测体温，同时给我买了药，烧开水，服侍我吃完。我默默看着她像个妻子一样为了作的一切。一切停当之后，妻子把那束花插在他带来的花瓶中。我觉得她今天来的很不寻常。她第一次买花，连花瓶都买了。她很喜欢花，但是每次我要给她买，她都说太贵了。她呆呆的看着她插好的花，一个人坐在哪里傻看足足有半个钟头，然后悄悄的把一些照片放到我的书桌上，并且把我的一张照片收进她的包里，后来我知道那都是一些平时我表示比较喜欢的她的照片。&lt;BR&gt;&lt;BR&gt;然后回到我床边，我看到她眼睛依稀有泪光。她悠悠说了句，声音都变了：我走了，照片作个纪念吧。&lt;BR&gt;&lt;BR&gt;说完，就转身走了。&lt;BR&gt;&lt;BR&gt;压抑在我心中的郁闷终于爆发了，我突然抱着枕头，大哭起来。哭声因为被枕头压着，声音很小。但是很恐怖。我的身体剧烈的颤抖着。我不是矫情，也不是脆弱，我长到25岁，从来没有这么哭过。一次都没有。我清晰的记得，我当时心好痛。你们知道什么是心痛的感觉吗？我深刻的知道，因为我体会过那种痛苦。&lt;BR&gt;&lt;BR&gt;据后来妻子说，当时我把她吓坏了。因为她从来没有想过我会这样。妻子当时似乎忘了自己的伤痛，冲过来不停的问我：你怎么了，你怎么了。我没有理他，仍然在发泄着我的郁闷，我感觉我上时间积累的郁闷正在说着泪水一丝丝流出我的身体。妻子也开始不说话了，吧嗒吧嗒就往下掉泪，看着我就这么掉泪。&lt;BR&gt;&lt;BR&gt;终于发泄完了，我不知道过了多久。我翻身起来，擦干眼泪。我似乎下了决心。我替妻子擦干眼泪。我们都开始冷静下来。我说:走吧，我送送你。&lt;BR&gt;&lt;BR&gt;我们谁也没有说话，默默的走着。到了一个饭店门口，我说咱们去吃个饭吧，妻子摇头说，不想吃。我说:就当我们的分手饭吧。妻子不再坚持，默默跟我进来饭店。&lt;BR&gt;&lt;BR&gt;已经记不清当时吃的什么了。反正，我叫了很多菜，妻子也没说什么。但是，我们似乎都没有食欲。&lt;BR&gt;&lt;BR&gt;记得付帐的时候，花了当时我们平时在外面吃3倍的钱。但是很多菜基本动也没动。   吃完饭，我和妻子分手了。我一直看着她的背影消失成模糊不见的黑点，完全看不到。我心碎了。我真是理智呀，我成功的和我爱的人分手了。我多么伟大，我自嘲着自己。&lt;BR&gt;&lt;BR&gt;后来的日子，我不知道是怎么过的，反正没有任何事情能让我开心起来，只要一有空时间，我的脑海里面全部都是妻子的音容笑貌。挥都挥不掉！&lt;BR&gt;&lt;BR&gt;从那个时候起，我知道了什么是刻骨铭心的感觉！！&lt;BR&gt;&lt;BR&gt;我的生活开始昏暗起来。我越来越发现，我确实爱她，爱那个和我分了手的女人。我只能用工作来麻醉自己，我每天上班很早，下班很晚，累的自己倒到床上就能立刻入睡。但是我一点也不快乐。&lt;BR&gt;&lt;BR&gt;一直到春节，我回了家。&lt;BR&gt;&lt;BR&gt;　开始上班了，有一天，我无意中听到我同学说，我妻子生病了，而且很严重。我脑子嗡的一下，我不知道当初是怎么想的，我只是记得我问了医院的名字，立刻就飞奔出去了。我很快就找到妻子的病房，当时她脸色苍白，躺在哪里，睡着了。我又一次感受到了心痛的感觉。我走近她，看到她细细的胳膊上插的吊针，我能清晰的看到她的白皙皮肤上的血管。她瘦了好多。&lt;BR&gt;&lt;BR&gt;后来我才知道，妻子和我分手之后，也不快乐。每天只是吃一点点饭，经常独自流泪。睡眠也不好，她本来就瘦，这样几个月下来，哪里经的住，人瘦了一圈，终于病倒了。&lt;BR&gt;&lt;BR&gt;我握住她的手，她感觉倒了，睁开眼睛，黯淡的眼睛立刻闪出神采。笑了下，说：你怎么知道我在这里。我什么都没说，就是把她的手紧紧握住。后来，她的父母进来了，看到我很诧异，他们并不知道我们的事情。她只说我她朋友的朋友。他的父母都是很慈祥的老人，对我很热情。我想他们应该看出我们之间的关系不一般，因为眼神是瞒不了人的。现在我看一对男女是否是恋人，我一眼就能看出来，真的，那个眼神是不会撒谎的。&lt;BR&gt;&lt;BR&gt;她住院的日子，是我们快乐的日子，我们谁也没有说什么。我每天有空去看她，给她买她喜欢吃的零食。她精神很好，食欲很好。本来就没什么大病，所以，3天就出院了。&lt;BR&gt;&lt;BR&gt;后来，她上班了。我们恢复了见面。就是见面而已，大家也没有说其他的，但是我已经满足了。我心情很愉快。&lt;BR&gt;&lt;BR&gt;她当时在电台上班，有时候需要值夜班。我就会偷偷溜去陪她。我们经常晚上也拥抱着倒在沙发上过一夜。当时我觉得很满足，根本就没有想过要怎么样，也没有想过性。真的没想过，现在觉得不可思义，但是当时觉得这样就足够了，已经很幸福很满足了。这就是爱情。&lt;BR&gt;&lt;BR&gt;现在妻子经常抱怨我晚上睡觉不抱着她睡。我解释说，如果我抱着她睡觉，第二天我胳膊会痛，她立刻反驳说，当初我们谈恋爱的时候，你不是经常一晚上一晚上抱她吗，怎么重来没见你喊胳膊疼？想想也是，当初真的不疼，还觉得很幸福。每当这时候，我就傻笑，说，我也不知道。妻子呵呵笑几声，也不再追究了。也许，恋爱和婚姻确实是不同的。恋爱的感觉太美妙了，如果你没有经历过真正的恋爱，我觉得太可惜了。如果可能，我真希望自己一辈子停留在那个恋爱的时间，永远幸福。&lt;BR&gt;&lt;BR&gt;但是，人必须要成熟。婚姻是另外一种幸福。我开始暗暗下了决心，我要和妻子结婚。转眼，我26岁了。我对妻子说，我们结婚吧，妻子严肃你来，说：你一定要考虑清楚，别一时冲动。我说：我早考虑清楚了。其实，自从那次分手失败之后，我已经下定决定，就是这个女人了，其他女人我都不要。管她的那些困难，我都能克服。大不了生活的比别人稍稍差一点点。但是我一定能让我们幸福的。&lt;BR&gt;&lt;BR&gt;决定结婚之后，我带她拜见我的家人。开始我没有告诉父母她的真实情况，只说她的工作很好。父母对她这个人比较满意。她比较讨人喜欢。后来，几次见面，混熟悉了之后，我才逐渐说出她工作的事情。我的父母都是知识分子，非常开通。母亲郁闷过一阵，看我坚持，也没说什么。让我感到很开心。我真的感谢我的父母，她们太体贴儿子的感受了。&lt;BR&gt;&lt;BR&gt;父母和我不在一个城市，很远，所以我的事情他们除了给钱，基本就无法帮忙了。在妻子的坚持之下，我么坚决拒绝了父母的资助。单位已经取消了福利分房的制度，所以，我们必须租房子。&lt;BR&gt;&lt;BR&gt;我们找了一个每月150元的平房，阴暗潮湿，整天都必须开灯。两间房，一个厨房，一个卫生间。开始了我们的家庭生活。现在想来，条件真的很差。但是我们现在还很怀念那段时光。&lt;BR&gt;&lt;BR&gt;妻子很幸福的用她能够想到的方法把我们的新房间布置的很温馨。虽然简陋，但是真的有家的感觉。当时，我们觉得自己是世界上最幸福的人。我们请了几个朋友，领了结婚证，然后在一家不高档的照相馆花150元照了一张很臭屁的婚纱照。无限满足的挂在我们床头。两个人傻呼呼的倒在床上欣赏了好久。所以，我看《结婚十年》的那一段特别有共鸣，因为我们也有相似的经历。&lt;BR&gt;&lt;BR&gt;我们的新婚之夜也就是在那个简陋的房子里面度过的。说起新婚之夜，我觉得真的很有趣。因为我们第一次有了男女之实。在坛子里面的都是成年人了，我不怕说出来。其实，第一次根本没什么快感，有的只是好奇和紧张。我记得我们直到后来昏昏睡去，也没有完全成功。天亮的时候，醒了，又努力了很久，终于成功了。但是因为她喊痛，所以我也不敢动。最后还是完成了。当时，我们都觉得很好笑。但是，这是人生中一段美好回忆，现在我们想起当时的情况，还觉得甜蜜。&lt;BR&gt;&lt;BR&gt;我们的小日子开始了，我每天上班下班，她上班下班。家里的一切，包括我穿什么衣服，妻子都能照顾的好好的。我回到家里，除了看书，看电视，看报纸，什么都不用作。妻子是个好女人，很贤惠。但是，妻子在她的父母家里也是什么不作的人（她是家里唯一的小女儿，有两个哥哥），她的爸爸妈妈知道我们家里面是妻子作饭之后，诧异了好久，觉得不可想象。妻子在为我改变，说实话，开始妻子的饭着的真是难吃。开始，我没觉得。可能是新婚幸福吧。后来，我就会说。妻子于是找了很多菜谱学了很多。现在我除妻子的饭菜，连我爸爸妈妈的饭菜都吃不惯了。每次到妻子父母家里，我觉得她爸爸妈妈手艺比我老婆差多了，呵呵。&lt;BR&gt;&lt;BR&gt;日子一天一天过，新婚的幸福逐渐淡去。但是我们的感情还是和谈恋爱的时候一样，我活的很快乐。即使在工作中遇到不顺心的事情，对妻子没什么好脸色，她也会默默的不来打扰我或者宽慰我。每次看到她，我都觉得无限的柔情，很多不愉快的情绪都消失了。妻子身材很好，怎么吃都不怕胖的那种，好多女人都羡慕她。但是她很节俭。给我买东西很舍得花钱，给她自己买都是买比较便宜的。其实我们的经济并不紧张。每次都是我给她买好的外套。&lt;BR&gt;&lt;BR&gt;我们经常出去玩，经常去散步。非常快乐，晚上，在床上也经常缠绵不休。我们眼里没有别人。&lt;BR&gt;&lt;BR&gt;在那个难忘的平房里面住了不到2年，我们有了自己的房子。我们自己买了房子，每次回到家里，看到妻子，我就觉得自己都多了一份责任，我就暗下决心，一定要努力。这种动力，让我工作很努力，除了本质工作，我到外面给别人作工程，赚了不少钱，提前实现了自己的房子梦想。搬到新家之后，我们时常回忆那段平房的简陋时光。满脸都是幸福。1年之后，我们有了自己的车，虽然车子很抵挡，但是毕竟是自己的吧。妻子也比以前胖了不少，更加丰满，具有少妇的韵味了。&lt;BR&gt;&lt;BR&gt;但是我们的生活方式基本没有什么改变，我在家里什么都不作，即使她上班去了，依然会给我把每顿吃的东西规划好，到时候到微波炉里面热一热就ok了。而且每天都会打电话回家问我吃了没有。&lt;BR&gt;&lt;BR&gt;家是我下班之后唯一想回去的地方。新婚的激情早就腿尽了。因为我的工作经常接触异性，经常在被窝里面，妻子会问我你想过没有要找个情人什么的？我笑了笑，如果有感觉，也可以呀。妻子立刻紧张的问：那你遇到有感觉的了吗？我说：没有，她们都不如我老婆。我有病呀，放着老婆不要，到外面去冒风险？老婆一边幸福的笑，一边说我虚伪。呵呵，其实我说的是真话，很多人都说，男人都是下半身指挥大脑的。但是，根据我的感觉是，那是他们没有遇到真正喜欢的人，如果你的妻子是你真正喜欢的，你真的不会背叛她的。男人好色，这是对的，但是好男人和坏男人的区别在于是否能够控制自己。&lt;BR&gt;&lt;BR&gt;我每次想到如果我背叛妻子，妻子那伤心的眼神，我就会心痛。我会毫不犹豫的打消不该有的念头。&lt;BR&gt;&lt;BR&gt;这也奉劝女人们，你们抓住男人最好的办法是从心里征服他，而不是通过其他方法。&lt;BR&gt;&lt;BR&gt;我知道，凡是喜欢我的故事的人，一般都是有相似经历或者对爱情对婚姻有经历的人，只有这些人对婚姻对爱情才会有深刻的认识。我发现网络确实是个好东西，可以让我平时不会对任何人说的事情和话语在网络上痛快的讲述。&lt;BR&gt;&lt;BR&gt;有位朋友问我，你到底想表述什么？是为了表示你的后悔还是你的幸福。我回答说：都不是。我只是客观的给大家叙述一个我自己的故事和我自己的真实感受。结论由你自己作出。而且你应该认识到婚姻更多的是责任。下面继续我的故事......&lt;BR&gt;&lt;BR&gt;应该说我是一个感情论者。我觉得没有感情的婚姻是悲惨的。我生活中很多认识的人都离婚了，似乎离婚已经不是什么大事情。我的大哥就是一个婚姻的失败者，所以他的经历对我婚姻观影响很大。大哥到目前为止，已经结过3次婚了，和现在的大嫂关系也不好。每次回家都能听到父母的抱怨。从某个程度上，我要感谢大哥婚姻经历。因为正是他的失败婚姻，让父母觉得夫妻相爱才是最重要的。所以，我和妻子的事情尽管母亲觉得不满意，但是，看到我们很相爱，最后没有拦阻，只是说希望不要像大哥一样就行了。大哥当初上大学的时候，也是有初恋的。当时我上高一，所以我知道的很清楚。大哥爱上了一个高中生。那个女孩很美很有气质。每次放假，大哥都和她再一起。后来，那个女孩没有考上大学，大哥毕业分配到父母所在的城市。那个女孩后来在一个厂子里面当了工人。父母终于知道了这件事情，大哥的婚姻是我们家第一宗婚姻，父母很重视，当然是反对的。而且没有任何商量的余地。大哥很坚持，和父母闹的很僵。又来还是那个女孩知道了情况，主动离开了那个城市，大哥消沉了很久。后来在家里的介绍下，和另外一个条件好的女孩子结了婚。大哥长的又高又帅，爱好交际，是很有女人缘的那种男人。后来就有了外遇。平心而论，我的第一个大嫂也是很好的女人，这件事情上完全是大哥的不对。大哥背叛了家庭。结果就是离婚，但是2年之后又是离婚，再后来还是离婚。&lt;BR&gt;&lt;BR&gt;我工作了之后，以一个男人的身份和大哥谈过很多，当时我们在酒吧喝得大醉，我对大哥说：对婚姻要慎重，不要再伤父母的心了。爸爸妈妈不容易，年纪也大了，还有多少时光？我们为什么不让他们开心一些呢？我记得大哥没有反驳我，沉默了很久，一口气把一大杯啤酒倒如口中，呜呜哭起来。我虽然已经有了8分醉意，但是我心目中坚忍的大哥的表现仍然让我很意外。大哥哭了很久，对我说：兄弟，以后你记得一定要找个自己喜欢的人。&lt;BR&gt;&lt;BR&gt;后来我结婚了，我真正明白了大哥的痛苦。大哥在很多人眼里是个风流不负责任的男人，对3个嫂子而言，无疑是一种伤害。一个男人可以和任何一个自己不讨厌的女人结婚，而且也能对这个女人好。但是当有外界诱惑的时候，这个男人能否抵制诱惑，很大程度上取决于这个男人对她的妻子爱的有多深。&lt;BR&gt;&lt;BR&gt;骂男人不是好东西的女人很多。她们说的其实有道理。但是爱情的力量是可以让一个男人无坚不催的。我是深有体会。&lt;BR&gt;&lt;BR&gt;我结婚后其实遇到过不少自己喜欢，而且她也喜欢我的女人。我甚至有时候想我能否作第二次选择呢？离婚，再和一个条件更好的女人结婚。也许你会鄙视我，但是我真的曾经有过这个念头。&lt;BR&gt;&lt;BR&gt;妻子其实长的身材好，也很美。但是我不得不承认我和妻子之间已经没有了激情。当我真有这个想法之后，我才发现，我无法这么作，因为我和妻子之间的关系已经演变成了一种亲情。这是婚姻的必然经历，是一种更高境界的爱情，所以大家不必恐慌。妻子不在家，我可以几天都不想她。她给我打电话，我也可以爱理不理，但是，如果告诉我妻子永远不会回来了，我会难过，我会不能接受，我会尽我的所以能量去改变这个事实。这就是我现在的感受。&lt;BR&gt;&lt;BR&gt;我怕看到妻子伤心，这是我最怕的事情。每次，看到她的眼泪，我的所有怨气都会消失的无影无踪。我会在内心狠狠的骂自己，骂自己无能，骂自己不是男人，为什么要把怨气撒在妻子身上呢？&lt;BR&gt;&lt;BR&gt;结婚之后，你会发现，其实你爱的人不是十全十美的。妻子最吸引我的地方就是温柔。事实上，婚后我享尽了妻子的温柔。但是妻子温柔的背后也有野蛮的一面。这是我没有想到的。&lt;BR&gt;&lt;BR&gt;记得那是一次去参加一个朋友的婚礼。朋友的老婆的条件很好。我想到自己的妻子，心情郁闷起来。朋友在郊区，我们回家是需要5快钱的车费，当时我们还没有自己的车。我没有话，自顾自的走着。妻子上来和我搭话，我没有理她。也许她知道我的心情，很敏感的往前走了，据她说她是想在车站等我。因为我身上没钱，我和老婆在一起，没有带钱的习惯，都是她负责。我看她往前走了，我误会她是想甩掉我，自己走，她知道我没钱，还想甩掉我，不是故意要我出丑吗？当时我就是这么想。&lt;BR&gt;&lt;BR&gt;本来郁闷的心情现在化作了愤怒。当时我兜里恰好有10块钱，上次没用完的。妻子不知道的。因此，我故意没有跟着她，在车站外等了很一阵，等到了一辆车就自己走了。本来以为，妻子肯定先回家了，正准备找她问罪。没想到，居然我先到家。我突然意识到情况不妙，可能误会她了，她说不定还在车站等我呢。但是，我没有管他，自己就在家里看电视。后来来了个电话，听到我的声音立刻就挂了。&lt;BR&gt;&lt;BR&gt;我预感她就是妻子。果然，1个小时之后，妻子回来了。&lt;BR&gt;&lt;BR&gt;平时的温柔模样全然没有了，一进门就喊：你到什么地方去了，我在车站到处找你。我其实也知道我错了，但是我仍然说：你是不是因为我身上没钱，就故意甩开我？妻子愣了一下，立刻爆发了。她大哭起来，狠狠抓起茶几上的烟灰缸（我不抽烟，为客人准备的），砸在地上，只听见啪的一生巨响，地上全是玻璃碎片。妻子继续大哭，没有理我，冲进卧室，扑在床上私心裂肺的大哭，剩下我一个人像木头一样呆在客厅。&lt;BR&gt;&lt;BR&gt;我呆在客厅里，很久都没有动。我知道自己错了。同时，我惊异妻子居然如此火爆。听到妻子的哭声，我又有了心痛的感觉，这个感觉我清晰的记得谈恋爱的时候和妻子分手的时候有过。我心完全融化了。我开始骂自己。&lt;BR&gt;&lt;BR&gt;我走到卧室，碰了碰妻子的背，轻声说了句：别哭了。妻子狠狠把我的手打开，好疼呀。妻子继续苦着。我懵了一阵，突然不顾一切的把妻子搂进怀里，妻子反抗着，我不管，我拼命地抱紧她，妻子终于没有发抗，用手楼住我，把头埋在我胸前，比刚才更大声的哭呀。我抱紧她，在她耳边说：对不起，是我错了。别哭了，你伤心，我会心痛的。妻子哭的更厉害了。&lt;BR&gt;&lt;BR&gt;就这样过了很久，妻子哭累了，在我怀里睡着了。后来醒来的时候，妻子揉揉哭肿的眼睛，又恢复了以前的温柔，我再次道歉，她温柔的笑笑，说，算了。就作晚饭去了。&lt;BR&gt;&lt;BR&gt;晚上睡觉的时候，妻子突然抱着我说：老公，你爱我吗？我说爱。妻子犹豫半饷，轻声说：你是不是后悔和我结婚了？我赶紧说：没有。其实，我心里知道，自己有时候真的有点后悔。但是，一看到妻子，我的后悔就会烟消云散。妻子沉默了一阵，悠悠说道：其实，我知道你后悔了，不过没关系，你什么时候想离婚，给我说，我会答应你的。我立刻开玩笑的说：你离开我，是不是有更好的人拉。妻子悠悠道：离开你，我就出家当尼姑。我哈哈大笑起来，开始嘻闹她。妻子没笑，只是把我抱的更紧。我也搂住她，心里感慨很多。我突然觉得，我这一辈子都要守护这个女人，这个我爱的女人，无论是贫穷还是富裕，无论是顺境还是逆境。这是责任，一个男人的责任。每次我遇到挫折的时候，我都会想起妻子，我会想如果我倒下，妻子怎么办，每当此时，我都会百折不挠的对待我工作和事业上的事情。&lt;BR&gt;&lt;BR&gt;问世间，情为何物，只叫人生死相许？这是我在金庸小说里面看到的词，他原来的出处我不知道。爱情是什么，婚姻是什么？我时常思考这个问题。&lt;BR&gt;&lt;BR&gt;我有时候想，爱情是男女两个人的事情，但是婚姻却不是仅仅是两个人的事情，他还是两个家庭的事情。很多过来人也说过，爱情和婚姻是可以分离的。结过婚，你会发现父母的建议并不是没有道理的。我见过很多女孩的父母，年轻时候也是爱情第一的，但是对待自己的子女的婚姻却现实的很。这是为什么？不少女孩子现在的求偶标准也是现实的很，什么没房子没车免谈。有时候我听到这些，我都不禁哑然失笑。如果天下都这样的话，恐怕男人打光棍，女人当二奶的比例会越来越多。我很看不起那些第三者，如果不谈感情，光从经济学分析，她们的行为绝对不是用不道德几个字能形容的，实际上和盗窃罪有相同的意义。很多男人没钱的时候可以和老婆相处，有了钱就抛弃妻子，那些第三者往往就是靠自己的青春来换取金钱。这对人家原来的老婆就是盗窃，人家辛辛苦苦经营多年，成果出来了，却成了没有任何投资的女人的，这难道公平吗？&lt;BR&gt;&lt;BR&gt;说归说，但是感情的是说不清楚的。我很爱自己的妻子，当初决定结婚的时候也想过这些问题，但是，当激情散去，自己真的面对的时候，却发现没有想象的那么从容。&lt;BR&gt;&lt;BR&gt;我的同事和朋友到过我家的都特别羡慕我。因为，我在家里就像上帝，什么都不作。连扫地都很少。每次，不管老婆在不在，我都会辩解：哪里嘛，你们没有看到我干活的时候，其实家里的重活都是我干的，比如买米，买油这些都是我干的。如果妻子在旁边，一般听到我吹牛，都会温柔的看着我笑，还给我作鬼脸，但也不揭破我。还说，家里买米买油确实是我干的。其实，我就买过几回，后来都是我打电话叫送的。我也知道，我的朋友的老婆在家里基本和我差不多，家务基本都是我朋友干的。但是我确羡慕他们的经济压力比我小，也许这就是围城效应？&lt;BR&gt;&lt;BR&gt;家里的任何事情，妻子从来不自作主张，都是会和我商量。我们家的钱全部都是妻子在管理，包括我的工资帐号，我基本不知道我每个月领了多少钱。但是，家里除了伙食费用和零用钱，只要超过100元的以上的开销，都要我知道，我认同才行。我常说，我们这是最民主的管理方式，两权分离，谁也不吃亏。结了婚，我发觉大部分女人都爱三样东西。一个是首饰，一个是花，还有一个是化妆品。妻子也是女人，她同样爱前面两个东西。妻子比较特别的是她不喜欢化妆品，她从来不化浓妆，都是略施粉黛，挺和我心意。每次到首饰店，妻子都会强拉我进去看，还会问我这个好不好看，像个孩子一样。但是当我说好看，买吧，她就会拉我飞快的跑开。每次看到花，就会兴奋的大叫。男人也许是实用主义者，我对这些都不以为然，我甚至不能理解。我觉得假的首饰和真的没什么区别，那么贵的花还不如去买本书看看。&lt;BR&gt;&lt;BR&gt;妻子目前只有我们恋爱的时候我送给她的一枚黄金戒指。这是我送给她的定情之物。现在因为变形，已经没有戴了。她很珍惜，小心奕奕的放在她的梳妆盒里。时常拿出来看看。我对她说：干脆融了重新打一个吧。她想了想对我说：结婚戒指不能动的。要好好保存。我说，那就买个白金镶钻的吧？她说看看吧。但是每次都是只看不买，有几次我游说的她动了心，但是最后她还没买，但是每次上街必然逛首饰店。&lt;BR&gt;&lt;BR&gt;我的印象中，我没有送过妻子一次花。不对，应该有一次，还是恋爱的时候出去吃麻辣烫，卖花的小姑娘看我们是恋人，拼命叫我买的，不买就不走。妻子当时是反对的，但是我买了之后，她表现的很兴奋。后来那朵红玫瑰凋谢了，她也没丢，后来居然成了干花，现在还被她放在梳妆盒里，每次批评我不给她买花的时候就会拿出来给我现场演示，说，看，这就是你送给我的花.&lt;BR&gt;&lt;BR&gt;每次我都辩解说，我买花还是要找你拿钱，不如你自己直接去买，喜欢什么买什么，不是更方便吗？妻子没有辩解，但是每次逛超市，家里要买花的时候，她都逼我去拿，而且付帐的时候，她会给我钱叫我单独付帐，常常让我觉得一头雾水。但是，我依然如故，一般不会给她买花，因为我觉得其实有点浪费钱财，不值得，妻子也觉得是。特别是情人节，花是天价，我就更不会买了。&lt;BR&gt;&lt;BR&gt;我们就这么现实和琐碎的活着，我感到很幸福和满足，妻子也是。因为我看到她的脸上那阳光一般的快乐。尽管送我时常会因为想到我们的未来的压力而闷闷不乐，有时候在家里也会一言不发，但是我看到妻子忙碌的身影在家里穿梭，我就觉得一丝责任，一丝温暖。家，是一个男人永远不会感到厌倦的地方，尤其是有一个自己爱的女人的家，无论你飘到哪里，最后你还是会觉得只有在这样的家里，你才会感到平静和安逸。&lt;BR&gt;&lt;BR&gt;我和妻子从来没有出现过像有些夫妻一样的大规模战争，比如对骂什么，互相指责什么的，有时候我觉得妻子和我心是相通的。我感觉她能敏锐的感觉我心里想什么。&lt;BR&gt;&lt;BR&gt;有一次，我工作上有了不顺心的事情，回家闷闷不乐，妻子和我主动说话，我说了一句：别理我，我不想说话。语气很无情。妻子愣了一下，出去了，做好午饭，自己吃了。叫我一声吃饭了，我没搭理她。那天很冷，妻子带上她的那条蓝色毛围巾就出去上班了，那天她上夜班，要第二天早上才会回来。晚上，她打电话回来，问我吃饭没有，我没好气的说：我不是小孩，我能不知道吃饭吗？说完就把电话挂了。我知道妻子肯定会很伤心，但是我那天确实心情很烦。&lt;BR&gt;&lt;BR&gt;第二天，一大早，我出门上班，在楼下遇到妻子下班回来。风很大，我缩着脖子，说了句：回来拉，然后就自己走。妻子叫我：等等。我回头看到妻子向我跑来，我不知有什么事情，妻子解下自己的围巾，仔细的给我系在脖子上，顿时，一股温柔涌上心头，那条围巾有了妻子的体温，还有我熟悉的淡淡香味，我顿时觉得天气并不寒冷。我当时有点发楞，也许妻子觉得很正常。她不知道我的感受。我都是自责起来，为什么对她不能好一点呢？那不是你最爱的女人吗？为什么不能让她感到快乐，少一点忧愁呢？妻子离开的时候，我向她温柔的笑笑，说：别冻着了，快回去吧。&lt;BR&gt;&lt;BR&gt;当我转身的，我觉得自己眼里有了泪光，这些妻子都没有看到。不能让她看到。上次看到韩国电视剧《看了又看》看到民言和盛美也有这样的镜头，一下子勾动了我心中的某条玄。可惜导演最后终于没有让他们成功，这个让我郁闷了很久，也萌发了很多感慨，婚姻真的如此现实？&lt;BR&gt;&lt;BR&gt;如果叫我现在回答这个问题，我会说：婚姻是现实的。但是要让我抛弃妻子，我又会心痛一辈子。也许，世界上本来就没有绝对正确于错误的事情？我不知道。&lt;BR&gt;&lt;BR&gt;不少回帖的朋友都说，我是一个好男人。我是吗？我自己也不知道。客观的说，我不是一个好男人。我在这里抱怨，一边述说我自己的幸福，一边流露出自己对妻子的不满足。我知道妻子为了我改变了很多。很多事情都是从我的角度出发，但是我为她有什么付出的呢？妻子不是什么名门之后，但是也是爸爸妈妈的掌上明珠。&lt;BR&gt;&lt;BR&gt;妻子在家里，是个很贤惠的妻子。但是，每次岳父岳母来了之后，我才能看出其实妻子也是人家的宝贝。岳父岳母经常会来我们家看看他们的女儿，每次来，都不会空着手，带很多东西。尽管那些东西加起来也不值几个钱，但是他们对我们关心让我很感激他们。当然，这一切都是因为妻子。他们来了，我会看到妻子很开心，而且像公主一样什么都不作，爸爸妈妈开始给我们收拾屋子，给我们作饭。每次我都说到外面去吃，但是每次都会被拒绝，妻子也不坚持。&lt;BR&gt;&lt;BR&gt;每次看到妻子在岳父岳母面前撒娇的样儿，我突然觉得我是个好男人吗？我什么也没有作，家务都是妻子在作，而且妻子从来没有要求过我作什么。我给了妻子什么，妻子自己赚的工资也能养活自己，她不欠我什么，但是为了我，她总是毫无怨言的营造这个家。每次，我都感到很愧疚，但是想过之后，我依然依旧。没有多大改变，只是发脾气的时间少了，对妻子说话温柔一些了。&lt;BR&gt;&lt;BR&gt;我是一个好男人吗？我是家里最小的，从小过惯了衣来张口，饭来张口的日子，我从来就喜欢别人的关心，但是我确很少想到关心他人。妻子身体不是很好，刚结婚的时候人太瘦。咽喉总是发炎。一生病就会不停呕吐，让我很烦。我是个奇怪的人，妻子一生病，我就会一边照顾他，一边发脾气。妻子开始赌气不让我管他，但是我在书房里面确无法安心作任何事情。只好又回到卧室一边照顾他，一边发脾气。后来，妻子习惯了，不管我怎么发脾气，也会温柔的享受我的照顾。每次，发完脾气，我又后悔，我问妻子：你烦我吗？她居然说：不烦，你发脾气的样儿让我感到你很关心我。我说不出话来，心想这个傻丫头，我发脾气居然也不生气。&lt;BR&gt;&lt;BR&gt;其实别看我30了，也许从小没有受过挫折，所以心里年龄要小很多。婚姻，让我变得成熟。我不喜欢照顾别人，但是，结了婚，让我有了责任感，我必须照顾她，她是我的爱人呀。&lt;BR&gt;&lt;BR&gt;我是一个好男人吗？我是一个普通的男人，我不是卫道主义者。我一样会看色情网站。街上看到美女，我一样会多看几眼。我在网上很多异性朋友。我也会和她们开开玩笑，甚至打情骂俏。但是我有我的原则，婚姻必须是要有规则的。性忠实是婚姻起码的规则，如果连这一点都作不到，我觉得这样的婚姻还有任何意义吗？这一点，妻子好像是对我绝对的信任的。从来没有对我表现过这方面的担心。我不是性无能，实际上我表现很完美，妻子对这一点赞不绝口。其实我有时候调侃她，你不知道其他人是什么样子，你怎么就知道我好呢？妻子想了好久，似乎觉得我说的很有道理。呵呵傻笑一阵，拿出一本她经常看的《人之初》，调侃我道：根据书上统计数字，你绝对算是非常非常棒的。每次得到妻子的肯定，我的男人自尊心得到极大的满足。后来追问妻子为什么对我这么放心的时候，她狡诈的说，呵呵，当初我就考察过你，否则，才不会嫁给你呢！&lt;BR&gt;&lt;BR&gt;这牵起一段往事回忆。那是我刚到这个城市的时候，一个外地的同学到这里玩，那是一个我们班出名的花花公子。他居然要求我们到ok厅去玩。我们当然就带他去了。他很富有，一进去就给我们一人叫了一个小姐。而且他买单。我当时脸皮很薄，说不要。但是熬不过他。结果每人都来一个小姐。我根本没有看那个小姐一眼，不是讨厌她，而是不好意思。我只是叫那个小姐给我点歌，我不停的唱歌。那位同学早就搂着小姐到包厢里面去了，不时传出各种声音。我那位小姐不停的邀请我到包厢去跳舞，我都拒绝了。正是青春年少，我之所以没有和这位小姐怎么怎么的。完全是因为我一直相信没有爱情的男女之亲是不符合我的原则的。后来这件事情被我的单位的那个同学知道了，那个同学的女朋友是我妻子的密友，自然我妻子也知道了这件事情，我想因为这个，我在她心中的地位恐怕又多了几分。&lt;BR&gt;&lt;BR&gt;现在回想起来，当时也许是不好意思。毕竟是没有经验。现在自己结婚了，如果还是那样，自己还会把握那个原则吗？都说男人很容易把性和爱分离开来，而且没什么负罪感。我觉得说的很准确。男人和女人比较起来，男人是比女人更容易把爱和性分离的。一个女人如果不爱你了，她才会出轨。但是一个男人，恐怕他即使很爱你，但是他同样可能出轨。我不知道我是不是这样的男人。尽管每次我想到妻子，心里就是温馨。我只是觉得这样作会伤害妻子，但是如果你问我想不想一个漂亮的女人上床，我会说：我想。但是我能克制自己，因为婚姻绝对不是性。妻子除了给予我性，还给了我温情。像父母一样的温情，这是任何人无法代替的。如果世界上让我找出我最有信心对方不会背叛我的人，我会毫不犹豫的说出妻子的名字，还有就是我的父母。这就是爱，这就是有爱的婚姻。&lt;BR&gt;&lt;BR&gt;上帝给了男人雄性的特质，但是也给了人理性的思想。这结合起来，才叫男人。没有理性的男人其实就是动物。如果你真的爱对方，我想这不是一种痛苦，而是一种幸福。随着文章的贴出，我的内心的感情似乎找到了一个出口。刚开始的很有激情，现在写的时候就好像婚姻一样的平淡。朋友们也给出了批评和肯定，谢谢你们。&lt;BR&gt;&lt;BR&gt;我把自己赤裸裸的展现在你们面前，因为我们并不相识，网络的魅力就在这里。这是真实的我，不管是对还是错，不论是让你憎恨还是喜欢，我不管，我只能保证这就是真实的我。&lt;BR&gt;&lt;BR&gt;记得结婚前，单位的前辈都异口同声的说：如果你要小孩，一定要早要，如果不要就不要。我当时很不以为然，觉得自己还是个孩子，拖个孩子多凄惨，管他的，以后再说吧。现在我也结婚四年了，我同样会把这句话送给还没结婚，或者刚结婚还没要小孩的朋友们：如果你打算要小孩，就早要吧。&lt;BR&gt;&lt;BR&gt;现在30岁了，才突然醒悟过来，我该要个小孩了。我老的时候并不想当孤家寡人。但是真的面对的时候，才发现不是那么简单的事情。怀孕要1年，带孩子又是几年。孩子上学了，经济的压力。一想到这些，我心里就郁闷起来。&lt;BR&gt;&lt;BR&gt;如果，我们刚结婚的时候，那个孩子不打掉，现在也该3岁了吧。正是可爱的时候。和妻子每次谈起这件事情，我们都后悔不已。当时觉得没条件，现在想起来，其实条件都是没有止境的，要了也要了，条件再苦，孩子依然会长大的。&lt;BR&gt;&lt;BR&gt;现在突然要孩子了，但是我的压力却更大了，要考研究生。要评职称。如果我上学去了，妻子生孩子，谁来支持这个家呢？想到这些，我就头痛，不敢下决心。妻子很喜欢孩子的，常常在被窝里面给我勾勒我们的孩子会是什么样子。但是从来没有对我说过我们要个孩子吧。我知道她也明白压力的存在。虽然喜欢，但是也不敢说。每次这种时候，我都觉得很难过，我突然觉得自己这个男人当的很窝囊，连给予妻子孩子的能力都没有。当然，这样的感受我从来都是埋在心里，我不想伤她的心，尽管她其实清楚的知道我想什么。&lt;BR&gt;&lt;BR&gt;尽管如此，我还是非常自信的说：老婆，你赶快把身体养的棒棒的，只要你身体好了，我们立刻要个孩子，男孩女孩我都喜欢。妻子脸上漾起笑容，说：我们能养的起吗？我把胸脯拍的咚咚响:没问题，我就不信养不活老婆孩子！妻子听了，很是高兴，她对我很崇拜，因为婚后我确实给我们的家赚了一些钱，她看到过我的努力对家庭经济的改变情况。我想妻子是相信了我的话，其实我心里是没有底的。我不知道大家的情况怎么样，我只是看到街上有钱人越来越豪华，但是我们的工作和我赚外快却越来越难，大学毕业的硕士生越来越多。我不知道国家整天叫嚷经济增长，到底增长到什么地方去了。&lt;BR&gt;&lt;BR&gt;我感到压力越来越大，我不知道现在幸福生活还能维持多久。&lt;BR&gt;&lt;BR&gt;我曾经设想过最坏的情况，如果有一天失业了，我如何去养我的家，我的生活会是怎样？我相信我的妻子不会离我而去，但是我如何忍心她跟着我受苦？&lt;BR&gt;&lt;BR&gt;妻子也许天生就不应该过苦日子，因为她很瘦，身体很弱，她没有力气干苦力，她也没有能力从事技术水平高的工作。她有的就是一颗善良的心。也许这只是我一厢情愿的想法，也许，到了那一天，妻子也能迸发出生命力，我不知道。&lt;BR&gt;&lt;BR&gt;如果到了最坏那一天，我有信心能养活自己，无论社会变成怎么样，我想我能养活自己，甚至我能养活妻子，只要她要求不太高的话。但是，如果加个孩子，我能让他受良好的教育吗？我没有信心。&lt;BR&gt;&lt;BR&gt;看到妻子每天高兴的读育儿的书籍，经常到医院作健康检查。尽量不座车，增加步行机会。看到她有意识的买有益于我们下一代的菜和营养品，我没有在她面前表露丝毫的担心。但是，我内心的感受，能对谁说呢？&lt;BR&gt;&lt;BR&gt;妻子现在已经很丰满了，体重到了50多公斤。还不停的督促我要锻炼身体，不准我熬夜。好像一切都在计划中进行。&lt;BR&gt;&lt;BR&gt;妻子计划7－10月份怀孕，明年孩子就出世了。&lt;BR&gt;&lt;BR&gt;每当在这个时候，我才发现我其实很失败。我连养家的能力都没有信心，面对以后的日子，我该怎么办呢？&lt;BR&gt;&lt;BR&gt;突然很怀念年少的时光，我突然发现，我已经老了。那时候，真是好呀，无忧无虑，天马行空。&lt;BR&gt;&lt;BR&gt;也许，这就是人生。&lt;BR&gt;&lt;BR&gt;朋友们的回帖和叙说自己对婚姻爱情的认识是让我一直写下去的原因。本来，这一切的我都打算一辈子埋在心里，对谁也不说起。但是，我在这里看到很多夫妻反目的帖子，他们里面的故事让我无法理解。从而诱发了我对自己爱情婚姻生活的思考。&lt;BR&gt;&lt;BR&gt;也有不少朋友和我有相似的经历。还有个朋友说自己就像我的妻子一样，她的另外一半就像我一样的景况，问是否应该选择离开？&lt;BR&gt;&lt;BR&gt;她的这个问题，我思考了很久，让我把自己的经历又回忆了一遍，但是我最后还是没有答案，这个责任太重了，我不敢回答。&lt;BR&gt;&lt;BR&gt;我只是希望你们幸福快乐，相守终生，我害怕因为我的回答让你们痛苦或者后悔，所以我不敢回答。&lt;BR&gt;&lt;BR&gt;更多的朋友很尖锐的指出，其实你是一个自私的人，你只爱自己。你的妻子也是一个有自尊的人，你潜意识中何曾对自己的妻子有过尊重？&lt;BR&gt;&lt;BR&gt;我想了很多，我想了很多理由来辩解，我不想承认这样的结论。但是，最后，我不得不说，你们是对的。我没有理由辩驳。我的潜意识中确实认为妻子不如我，理应为我付出。一开始，我就认为自己和妻子结婚，是对妻子的一种恩惠。妻子对我发脾气的忍让，是理所当然的。&lt;BR&gt;&lt;BR&gt;其实我是一个思维很理性的人，任何事情，我一般都有自己独到见解，外界的因素很难毫无理由的影响到我对问题的认识。但是，尽管如此，面对自己婚姻，面对自己的生活，我还是不自觉的引入了自己主观的意识。这是我的局限性，或者这是人的局限性。&lt;BR&gt;&lt;BR&gt;回想起来，我和妻子之间，妻子关心我的多，我关心妻子的少。也许妻子觉得男人的关心的方法不一样，所以，她仍然觉得我是个好男人，好丈夫。她很满足现在的情况。对家务的分担，妻子早以习惯了她全部包揽的现状。其实，对这个问题，妻子也不是没有努力过，她曾经试图让我不自觉的分担她的家务。妻子的方法很含蓄和隐蔽，她的不少方法都是来自她常看的《人之初》杂志。后来，我无意中看到，觉得怎么上面的方法我都这么熟悉呢，我才恍然大悟。&lt;BR&gt;&lt;BR&gt;妻子采用的第一个方法是激将法。首先妻子会大赞我妈妈的饭菜很好吃。问我作为妈妈的儿子，难道就没学到一点儿？太丢脸了吧。我当然不会承认自己不会拉。我开始吹牛，呵呵，其实我早得到我妈妈真传。她打死不信。我就说，我给你证明一下，我的招牌菜，回锅肉和麻婆豆腐。第二天，妻子就把我原料买好了。我很有兴致的给他作了两个菜，我自己觉得很好吃，妻子也不停夸张的说，果然厉害。不过就是烧焦了，希望下次能吃到更好的。后来，我真的不停给他作过好几次，她还把她姐妹一起叫过来，品尝我的手艺，那一天，她什么也没作，就和姐妹在客厅里面聊天，我也没觉得有什么不对。&lt;BR&gt;&lt;BR&gt;妻子第二种方法是穿插法。她作菜的时候，会没事就叫我，老公，给我挽挽袖子。一会儿，老公，帮我把锅拿过来；老公，摆筷子吃饭了.......每次，我很不耐烦，但是由于每次的工作一般几秒就能完成，所以我也没办法发火，而且看到她这么忙，我也不好意思说什么。&lt;BR&gt;&lt;BR&gt;妻子的第三个方法，就是累积法。她会连着几天不洗碗，让碗放在水池里面。每次都用新碗。每次当她上班的时候，就是家里的碗耗尽之时。我在家里要热饭菜，也是需要碗的，但是，我找不到一个干净的碗。看着水池里面的碗，我只好动手把她洗掉。然后，我当然要批评她的，每次她都会可怜吧吧的给我道歉，我看着她真诚的模样，哪里还忍心生气呢？&lt;BR&gt;&lt;BR&gt;妻子第四个方法是博取同情法。每次，晚上吃了饭，她就一个人在那里看书看电视。但是，到了我们要睡觉的时候，她会说，老公，我碗还没洗呢，你先睡吧，我马上就来。然后，一个人很凄惨的在厨房劳动，你说我一个人在卧室听到她的响动，我能睡着吗，我一般会黑着脸过去帮她把碗洗了。然后一起睡觉。&lt;BR&gt;&lt;BR&gt;当然这一切，我并不知道是妻子故意要调动我对家务的关注。后来，我看到那些文章，我才明白过来。尽管如此，妻子最后还是放弃了努力，也许她觉得花了这么心思，但是收效不大，也许已经习惯了。其实想来，我有时候也在欺骗妻子。妻子爱我，对我崇拜。因为我的知识比她丰富，我比她口才更好。所以，我会给他灌输一些对我有利的思想。&lt;BR&gt;&lt;BR&gt;妻子很多时候会抱怨我，你这个家伙什么都好，就是太懒了，家里的事情一点不管。每到这个时候，我就会故作深沉的给妻子上课。我说，男人和女人平等这是对的。但是平等不是体现到对任何事情都绝对一半一半就表示平等。比如，男人去干苦力，女人就没有必要去干。而女人生孩子，男人也没必要去生。这才是真正的平等。利用自己的特点，发挥出自己的长处，这才是平等。家务的事情没必要分得太细，你做饭，我就必须洗碗。这样并不代表平等。只要大家互相尊重就够了。比如我尽量为家里多赚钱，让家里条件改善一下。你多分担一点家务，有什么不可以呢，我们彼此相爱，何必分的那么清楚呢？我心里明白你作的事情，我们为这个家的努力都是为这个家，而不是为某个人而作的，我们的目的就是把家建设的更好，不是吗？&lt;BR&gt;&lt;BR&gt;也许我的这篇歪理，真的触动了妻子，妻子开始不再让我作家务了。再加上，有段时间我的兼职任务很重，已经大大超出了我正常工作量的2倍。我一回到家，一句话都不想说，就倒在沙发上一动不动。妻子是爱我的，看到我这样拼命，对我爱护有加，即使后来我的工作开始恢复到正常值的时候，也没有见妻子再要求过我什么。&lt;BR&gt;&lt;BR&gt;虽然我很感激妻子，但是我心里同样出现过很自私的想法。我觉得自己在外面拼命赚钱，妻子处理家务难道不应该吗？&lt;BR&gt;&lt;BR&gt;夫妻之间不要太计较，大家只要有爱，多体谅，让家庭温馨，无论是男女双方，都想把自己的家作为最后港湾，这就够了！&lt;BR&gt;&lt;BR&gt;结过婚的人都知道，激情迟早要褪去。婚姻是具体的。一旦你选择了，你就必须面对。责任，不仅对男人，对女人都是一样的。&lt;BR&gt;&lt;BR&gt;结过婚才会知道,其实人生必须要经历一些苦难和挫折。常说：夫妻本是同林鸟，大难来时各自飞。不要说大难，我看过太多的夫妻因为生活琐事而互相埋怨，反目成仇。&lt;BR&gt;&lt;BR&gt;这一点应该说我是幸运的，我和妻子遇到任何事情，不管谁对谁错，从来不会相互埋怨，都是共同面对。我不知道妻子的感受怎么样，从我的角度，即使妻子出了什么过失，我看到她难受的样子，通常是不会忍心去责备她的，我觉得是因为爱，我爱她，所以我不忍心看到她难过的样子，我不会给她伤口上再刺一刀。我想妻子，对我也一样，我感觉的到。&lt;BR&gt;&lt;BR&gt;这一辈子，感觉都很顺利，一直读书到大学毕业，然后自己很容易找到了工作，然后遇到了妻子，然后结婚。我们遇到的第一件事情的时候，我们曾经觉得天都要踏下来了。&lt;BR&gt;&lt;BR&gt;结婚后，我们租的房子离单位有大约3公里。因此，我买了我的第一辆车，一辆吉利100的脚踏摩托车，当时用了5000多块。这是我们家当时最值钱的东西。但是不幸很快发生了，在一个烟雨朦朦的黄昏，我和妻子在家里边看新闻联播，边开着玩笑，其乐融融。妻子给我说了几次，把车子推进来吧，现在偷摩托车的可多。我不以为然，说等会儿吧。&lt;BR&gt;&lt;BR&gt;可是事情就发生在等会儿这里，我突然听到熟悉的摩托发动的声音，等我意识到，追出去的时候，已经没有踪影了，留给我的就是废气的臭味。我们当时几乎根本就以为这是一个梦。接下来报警，沮丧到了极点，妻子的眼泪都下来了。我心里也憋屈的慌。也许一辈子没经历过太大的挫折，我觉得郁闷到极点。家里顿时沉闷起来。我开始自责起来，骂自己怎么没听妻子的话呢？&lt;BR&gt;&lt;BR&gt;妻子沉默了半天，居然什么也没说，推着自行车就往外走，我一惊，赶忙问：老婆，你干什么？妻子恨恨的说：我要去找，肯定不会走远的！说着，人就出了门，当时我完全懵了，等我意识到要把妻子栏下的时候，她早已经不见人影。&lt;BR&gt;&lt;BR&gt;我但是很着急，我倒是不担心车子，我担心妻子现在正是失魂落魄的时候，不要出什么事情。后来赶快给朋友打电话，朋友骑着摩托车就过来了，我们赶忙到处去找妻子。   城市这个时候就显得很大了，哪里能找到？&lt;BR&gt;&lt;BR&gt;半夜的时候，妻子推着车子回来了，衣服都湿了。我紧紧的把妻子搂进怀里，妻子抱着我哭泣起来，孩子一般说了一句：老公，车子没找着。&lt;BR&gt;&lt;BR&gt;现在和妻子和回忆起这些细节，我们都觉得很好笑，一个摩托车算什么呢，我们当初居然有天塌下来的感觉。呵呵。&lt;BR&gt;&lt;BR&gt;以后的几个月内，我们都一直耿耿于怀，但是，妻子从来没有埋怨过我什么。我们两个都有个很好的习惯，任何事情，只要已经出了，无论是谁的错，我们从来不会互相任何埋怨。&lt;BR&gt;&lt;BR&gt;现在想起来，那次丢失摩托的事件，让我和妻子的心贴的更紧了，我们开始知道，很多事情，夫妻必须共同去面对。&lt;BR&gt;&lt;BR&gt;后来我们有了第二辆摩托车，可惜好景不长，我们那天幸匆匆从街上回家的时候，转弯的时候不幸把一个骑自行车横穿马路的中年妇女撞了，因此，妻子又一次掉了泪。当时那个人躺在地上一动不动，我们都以为她死了，妻子吓坏了，居然在街上就哭了。我一边安慰她，一边将对方送到医院。后来，发现虚惊一场，对方没有任何损伤，但是因为对方的不讲理，我们同样付出了3000元的代价。当时，妻子哭着给岳父岳母打电话，电话里面没说清楚，岳父岳母以为我伤了，立刻从几十公里外赶到医院，紧张的不得了。后来，发现事情的原委，立刻命令我将摩托车处理掉。估计他们也是担心。看来我天生没有骑摩托车的命，于是一直走路，骑自行车，后来自行车也掉了，直到后来买了一辆抵挡汽车。发觉，开汽车其实是最安全的，小偷也不会光顾。小偷看不上。呵呵。&lt;BR&gt;&lt;BR&gt;女人其实是个很奇怪的动物，她们在男人面前往往表现柔弱的一面，但当她们自己面对的时候，却处理的从从容容的。妻子外表和给我的感觉是柔柔弱弱，但是有些事情是决不让步，显得很有主见。&lt;BR&gt;&lt;BR&gt;结过婚的男人通常都比结婚前好显得干净的多。穿的衣服干干净净，睡的床干干净净，很多不良的习惯都会逐渐改掉。其他事情都好说，唯独这个卫生方面的问题，在妻子面前是毫无道理可讲的，也是毫无商量的。&lt;BR&gt;&lt;BR&gt;我年轻的时候喜欢穿牛仔，穿运动和休闲装的人，所以我的性格很是懒散，我不喜欢束缚。结了婚之后，为了这个卫生习惯，我开始很不习惯，后来给妻子给彻底统治了。我晚上可以不洗脚就上床，但是，结了婚，为了这个我没少和妻子斗争。妻子挺好，为了让我能洗脚，她通常会洗完之后，给我放一盆洗脚水，监督我洗完才去睡觉。有时候我太疲倦，就开始耍赖，我躺在床上就是不洗脚。任凭妻子怎么喊，我就是不理她。我试图能蒙混过关。妻子，没有办法，她把洗脚水端到床前，将我的脚强行拖离，然后把我的脚按在水里，然后就幸灾乐祸的看电视去了。没办法，都这样了，我还能怎么办，只好迷迷糊糊洗了。如此几次之后，我知道我不可能有蒙混过关的可能，也就自己主动洗了。几年下来，已经习惯了，现在不洗脚就上床，我自己都不习惯。&lt;BR&gt;&lt;BR&gt;婚姻可以改变一个人。结了婚，我的内衣内裤换的很勤，每次都是妻子将叠的好好的衣裤放到我床头柜上，我不需要操心。每次夸奖妻子真好的时候，妻子都会调侃道：没办法，关系到我自己的福利。我怎么可能让我的床有异味呢？想不让你上床吧，你又是我老公，没办法呀，没办法。&lt;BR&gt;&lt;BR&gt;结了婚，你会发现很多都不是你以前想象的那样。以前，看爱情电视剧，发现女人最喜欢问男人一个问题：你爱不爱我。觉得不可思义。谈恋爱的时候，我觉得我们很少问对方：你爱不爱我这样的问题。我们觉得很可笑，爱不爱你自己知道，瞎问什么呢？但是结了婚，我发现妻子也特别爱问这个问题。&lt;BR&gt;&lt;BR&gt;每天睡觉的时候，妻子只要一开心，就会抱着我问：老公，你爱我吗？不开心，同样会问这个问题，胖了，也会问这个问题，瘦了也会问这个问题。实话实说，我很多时候，都回答的很敷衍。妻子每次都会将脊梁骨给我，只好害的我去哄她，好半天才能原谅我。在男人的映象当中，好像爱不爱这样的问题，最多在恋爱的时候偶尔提起，结婚之后一般是不会再说了了，而女人恰恰相反，恋爱的时候一般不提，但是结了婚，这个问题就会经常问的。&lt;BR&gt;&lt;BR&gt;妻子经常说她的前世是条蛇，而且是条水蛇。因为她妈妈生她的前一天看见过一条水蛇。妻子人瘦，最怕冷。于是我就是她最好的取暖器。冬天也罢了，因为温暖是舒服的，所以我不怕妻子整天晚上紧紧的抱着我。夏天也不怕，因为气温够高，她不会向我取暖。但是，不冷不热的春天麻烦就大了。我经常是一半是火焰，一半是海水。被妻子抱着那一边，经常出汗，另外一边，被妻子挤到床边的那边露在被窝外，经常冷的冰凉。我受不了，我抗议。妻子说，保证不再犯了，而且睡觉前还特意和我拉开距离，来证明她的诚意。不过，第二天早上，她绝对依然像一条水蛇一样缠着我。直到现在，这个问题依然存在，每次说她，她就蒙混过关，以后依然如故。&lt;BR&gt;&lt;BR&gt;婚姻，其实是琐碎的。不像恋爱那么激情。整天出门一个kiss，进门一个kiss，见面必叫darling的夫妻我是觉得很怪异的，我怀疑她们是否是真的夫妻？婚姻又是温馨的，在家里不会有寂寞的感觉，任何时候，你都会发现，世界上还有一个你牵挂的另外一半。而且我惊奇的发现回帖的大部分都是女士。这是我没有想到的。也许，你们想通过我了解一个男人心里的真实想法，从而对自己的已经有的或者将会有的另外一半有更多和更真实的了解。&lt;BR&gt;&lt;BR&gt;不管怎么样，我还是要感谢您们的批评和鼓励。&lt;BR&gt;&lt;BR&gt;男人，其实活的很累。他一生都要承担很多不管他愿意以否的责任。男人很多事情，他不会说，就象我一样，放在心里，也许一辈子我的妻子也不会知道我现在的苦闷和担忧，我呈现在她面前的永远都是坚强的一面。有我在，她什么都不怕。&lt;BR&gt;&lt;BR&gt;就在敲这些文字的时候，妻子在上班。我一个人在家，妻子在家的时候，我通常不敢写，我怕她无意中看到。也许有一天，我会把我写的文字作为礼品送给她，但不是现在。我自己看了好几次自己写的文字，虽然错别字不少，但是仍然感动了我。我心里一阵柔情荡漾开来，妻子的音容笑貌立刻浮现在脑海里面。我突然想起给妻子打个电话。&lt;BR&gt;&lt;BR&gt;"喂，是我"。&lt;BR&gt;&lt;BR&gt;"啊，家里出事了吗？"妻子居然紧张起来。&lt;BR&gt;&lt;BR&gt;"没有呀"我很惊异。&lt;BR&gt;&lt;BR&gt;"喔，没事情你怎么会给我打电话？"妻子平静下来。不过，语气中感到她非常开心。&lt;BR&gt;&lt;BR&gt;"我只是想问你吃饭没，中午吃什么了？"&lt;BR&gt;&lt;BR&gt;平时，只要妻子不在家里，吃饭时间都会打电话回家催我吃饭。有时候，我还会不耐烦，但是尽管如此，妻子依然没有为此而停止过。&lt;BR&gt;&lt;BR&gt;我听到妻子诧异的声音，我才知道我平时几乎就没有给妻子打电话问候过，通常是家里东西找不到了，才会想起妻子。&lt;BR&gt;&lt;BR&gt;第二天妻子回来后，不停的看我。眼里闪烁的光彩。我问她看什么，她说你昨天居然主动给我打电话了。我呵呵傻笑了几声。朋友们说的没错，女人其实有时候要求并不高，你给他一丝甘露，她就会抱以小溪。一个电话，一句问候，可以让她高兴好几天。为什么我居然不注意这些呢？爱她，就让她快乐，不是吗？&lt;BR&gt;&lt;BR&gt;甚至有段时间，我都以为我和妻子的爱情消失了。因为我们过的平淡的不能在平淡了。我们甚至一个晚上都可以各作各的事情，而一句话也不说。但是，有一件事情，让我突然明白我对妻子的感情居然还在。&lt;BR&gt;&lt;BR&gt;一次，妻子和朋友出去逛街，临时去作头发。结果晚上8点了，居然还没回家。这是从来没有过的，我知道她那天休息。家里也没有任何便条，以前有什么事情，都会在冰箱上给我贴张便条。当时，天已经全黑了，妻子交际不多，没有手机。&lt;BR&gt;&lt;BR&gt;开始，我没有在意，但是7点过了之后，我开始坐卧不安。我也不知道为什么会这样，我觉得似乎缺少点什么。甚至连电脑游戏也无法让我集中精神。我到处给她的朋友打电话，但是她们都不知道。和她在一起的朋友恰好手机也关机了。&lt;BR&gt;&lt;BR&gt;我心情开始下沉，不会出什么事情吧，被车撞了？现在我才发现妻子在我心中的地位是如此重要。8点半的时候，妻子兴高采烈的回来了，一进门，看见我铁青着脸，立刻陪笑道：老公，不好意思，临时作头发去了，饿坏了吧，看，我给你带好吃的东西回来了。她挥舞着手里的烤牛肉。我心里的石头落了地，但是仍然没好脸色的说：我还以为你出事情了，害的我担心半天。妻子愣了一下，立刻不顾我的坏脸色，脸上笑成了一朵花，殷勤的把烤牛肉一片一片的送到我的口中，在牛肉面前，我强装出来的不高兴很快就融化了。&lt;BR&gt;&lt;BR&gt;晚上睡觉的时候，妻子依然很高兴。我在看书，她在被窝里面不停捣乱，看我不理她，她突然问道：老公，你说，如果有一天我不在了，你会怎么样呢？我一愣，说：你怎么会不在。妻子说：比如被车撞了，比如出意外了。现在的事情可说不准。说完，眼睛象钉子一样钉着我看。我愣了一下，心里突然痛了一下，但是我立刻调侃到：那么最好先给你买巨额的人生保险，哈哈哈。妻子拧了我一下，嘟着嘴逐渐睡着了。我的眼睛看着书，但是思绪依然集中在妻子的问题上。&lt;BR&gt;&lt;BR&gt;如果有一天，妻子突然去了，我会怎么样呢？我问着自己。我把自己置入那种假设的想象中，奇怪的事情发生了，我想到那个场景，我眼睛居然开始湿润起来，心也隐隐作痛！这种心痛好久没有出现过了。我会快乐吗？也许我会再次结婚，但是她在我心中的位置，有谁能代替呢？这个世界上还会有其他女人会象我妻子一样对我这么好吗？我环顾一下这个家，头顶的结婚照，梳妆台，床头柜，甚至被子的气味那一样不让我想起我身边的这个女人，我能忘掉她吗？&lt;BR&gt;&lt;BR&gt;有人说，失去了才知道珍惜，这句话说的相当深刻。我每天和妻子当对，她在家里，我时常会嫌她打扰了我的清净。她不在家，我甚至会觉得自由自在，但是如果要我永远失去她？我能接受吗？&lt;BR&gt;&lt;BR&gt;想到妻子刚才的问题，我才发现妻子已经像血液一样，已经渗入了我的身体，如果硬要分离，也许我也会枯竭而死。&lt;BR&gt;&lt;BR&gt;婚姻就是这样，平淡之中见真情。和她再没有恋爱般的死去活来，但是她却是你的另外一半，是你生活的一部分。&lt;BR&gt;&lt;BR&gt;我叹了一口气，轻轻的吻了一下那个满足，快乐已经进入梦乡的女人，满足的闭上了自己的眼睛。 &lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face=宋体 size=2&gt;&lt;SPAN class=postcolor&gt;&lt;FONT   size=3&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2712779123172018146?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2712779123172018146/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2712779123172018146' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2712779123172018146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2712779123172018146'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/30.html' title=' 一个30岁男人的婚姻思考 '/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5169573179923592907</id><published>2007-11-13T22:29:00.000+08:00</published><updated>2007-11-13T22:26:14.280+08:00</updated><title type='text'>测试一下EMAIL发送BLOG功能</title><content type='html'>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"&gt;  &lt;HTML&gt;&lt;HEAD&gt;  &lt;META http-equiv=Content-Type content=text/html;charset=gb2312&gt;  &lt;META content="MSHTML 6.00.6000.16544" name=GENERATOR&gt;&lt;/HEAD&gt;  &lt;BODY id=MailContainerBody   style="PADDING-RIGHT: 10px; PADDING-LEFT: 10px; PADDING-TOP: 15px"   bgColor=#ffffff leftMargin=0 topMargin=0 CanvasTabStop="true"   name="Compose message area"&gt;  &lt;DIV&gt;&lt;FONT face=宋体   size=2&gt;写BLOG本身就是发泄一下自己的情感的地方。如果人家不能访问（包括我自己），那么就用这种方法写BLOG吧，&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5169573179923592907?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5169573179923592907/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5169573179923592907' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5169573179923592907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5169573179923592907'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/emailblog.html' title='测试一下EMAIL发送BLOG功能'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4548211838268203392</id><published>2007-11-13T13:38:00.000+08:00</published><updated>2007-11-13T13:48:06.454+08:00</updated><title type='text'>blogspot不能访问的感想民</title><content type='html'>记得申请这个BLOG已经有很长的时间了，以为用了GOOGLE的工具加上这个我就可以写出自己的生活想法。可实在没想到遇到不能访问的怪问题，后来才慢慢发现原因。只是想说：防民于口不如泄，我们的政府要对自己有信心，不要动不动就搞这些技术上障碍，人民的眼睛是明亮的，不会因为看到外面的世界就不知道什么是根本了，当然前提是制度的确是优越的。我一直这么深信，可现在这种做法让我实在不敢苟同。&lt;br /&gt;      祝福我们的国家，祝福我们的人民，但咒死那些不会好好让人民理解社会主义优越型，而只知道封网的废物！！！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4548211838268203392?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4548211838268203392/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4548211838268203392' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4548211838268203392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4548211838268203392'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/11/blogspot.html' title='blogspot不能访问的感想民'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1200912435853386992</id><published>2007-04-03T20:39:00.001+08:00</published><updated>2008-12-10T08:03:36.901+08:00</updated><title type='text'>烈士陵园扫墓记</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_aCJYF8u_FsU/RhJLJP5sMoI/AAAAAAAACLM/mNs6xNQQQv8/s1600-h/DSCN4089.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="CLEAR: both; FLOAT: left" alt="" src="http://1.bp.blogspot.com/_aCJYF8u_FsU/RhJLJP5sMoI/AAAAAAAACLM/mNs6xNQQQv8/s160/DSCN4089.JPG" border="0" /&gt;&lt;/a&gt;  今天天气不错，中午12：20及海关青年朋友一起去市陵园扫墓。前几天于网上扫墓感想颇多。&lt;br /&gt; 其实抛开一切政治，一切世俗，一切的私利及不平。凡为中国人民的幸福生活而献出自己的生命，凡为中国这块土地洒下热血的人，凡是平凡而又愿意为人民利益愿意牺牲自己的人。我们有什么理由不去拜谒？在利益面前，在危险面前，在生与死的面前，我自问做不到。假想日本人入侵中华时，一是一枪就结束我的生命，我想我有可能做的到。但是如果严刑拷打，估计是顶不住的了。&lt;br /&gt;感想一把，也许是政治书读多了吧。&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1200912435853386992?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1200912435853386992/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1200912435853386992' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1200912435853386992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1200912435853386992'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/04/blog-post_03.html' title='烈士陵园扫墓记'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_aCJYF8u_FsU/RhJLJP5sMoI/AAAAAAAACLM/mNs6xNQQQv8/s72-c/DSCN4089.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7912727763014806971</id><published>2007-03-19T21:11:00.001+08:00</published><updated>2008-12-10T08:03:37.371+08:00</updated><title type='text'>凤凰之美</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_aCJYF8u_FsU/Rf6MESE8RmI/AAAAAAAAB7c/LhxIA3OslBQ/s1600-h/222344071.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="CLEAR: both; FLOAT: left" alt="" src="http://2.bp.blogspot.com/_aCJYF8u_FsU/Rf6MESE8RmI/AAAAAAAAB7c/LhxIA3OslBQ/s320/222344071.jpg" border="0" /&gt;&lt;/a&gt;  第一次看到凤凰主持谢亚芳是在去台州出差的宾馆的时候。当时激动的把立刻用手机拍下了她的工作照。也许我天生就是这样一个人。喜欢就是喜欢，不奢望什么，只是一种表达。那个时候就想一定要知道她的名字。可惜从来没看清楚过。出差的三天，守了三天的电视（指有空）。最后还是不知道。最倒霉的是在回家的路上，把带有照片的手机给丢了。（偶那可怜的NOKIA　6230）。于是去凤凰网的网站上找，直到BLOG的出现。那个时候还会常去看看。人生如歌，爱好如歌，我的爱好亦是，喜欢的东西我会一直很热烈，只到有一天回归平淡。很久没有她的消息，前几天去了她的BLOG才发现，文字也变成繁体了。说的也是政治话题（职业）了。所以不再有兴趣了。呵呵，祝福谢MM平安，也祝大家都有敢爱愿爱，平淡真切的生活。&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7912727763014806971?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7912727763014806971/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7912727763014806971' title='4 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7912727763014806971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7912727763014806971'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_5834.html' title='凤凰之美'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_aCJYF8u_FsU/Rf6MESE8RmI/AAAAAAAAB7c/LhxIA3OslBQ/s72-c/222344071.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1538459651041447452</id><published>2007-03-19T20:10:00.001+08:00</published><updated>2007-03-19T20:10:02.558+08:00</updated><title type='text'>欲加之罪</title><content type='html'>&amp;nbsp;&amp;nbsp;&amp;nbsp; 话说兔子在街上走着，迎面碰上了老狼。老狼伸手就给他一大嘴巴，&amp;ldquo;让你丫不戴帽�?rdquo;。兔子很郁闷地回家了，弄一帽子戴着�?BR&gt;　　 &lt;br /&gt;&amp;nbsp;第二天又碰上老狼了，又挨了一大嘴巴，&amp;ldquo;让你丫戴帽子&amp;rdquo;�?&lt;br /&gt;　　 &lt;br /&gt;　 如是几次，总挨打。兔子想，这么老挨打不是个事儿啊，不行，我得找老虎投诉去。刚到老虎家门口，就听老虎在屋里说话�?&lt;br /&gt;　　 &lt;br /&gt;　　&amp;ldquo;你也不能老这么蛮不讲理打兔子阿，回头兔子找我投诉来，我也不好罩着你啊。好歹咱面子上得过得去，我教你一招。下回你见着兔子，跟他说：给我弄点儿洗衣服的来。他给你拿肥皂来，你就打他一顿的，说我要的是洗衣粉，谁让你拿肥皂。他拿洗衣粉来，你也能打，说我要洗衣粉，谁让你拿肥皂。要不然你跟他说，去，给我找个女人来。他给你找个胖的，你打他一顿说我要瘦的；给你找个瘦的，你也打一顿，说我要胖的。这样不结了，你也能打他，我面子上也能说得过去�?rdquo; &lt;br /&gt;　　 &lt;br /&gt;　　 兔子一听，得，咱也别投诉了，回家吧�?&lt;br /&gt;　　 &lt;br /&gt;　　 第二天，兔子在街上又撞上老狼。老狼大喝一声：&amp;ldquo;去，给我找点儿洗衣服的来�?rdquo; &lt;br /&gt;　　 &lt;br /&gt;　　 兔子不慌不忙�?ldquo;你是要洗衣粉阿，还是要肥皂啊�?rdquo; &lt;br /&gt;　　 &lt;br /&gt;　　 老狼一听，嗯？有一手阿。又说：&amp;ldquo;去，给我找个女人来�?rdquo; &lt;br /&gt;　　 &lt;br /&gt;　　 兔子还是不慌不忙�?ldquo;你是要胖的啊，还是瘦的？&amp;rdquo; &lt;br /&gt;　　 &lt;br /&gt;　　 老狼一听勃然大怒，伸手就给兔子一个大嘴巴�?&amp;ldquo;让你丫不戴帽子！&amp;rdquo; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1538459651041447452?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1538459651041447452/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1538459651041447452' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1538459651041447452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1538459651041447452'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_19.html' title='欲加之罪'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-118585175445777713</id><published>2007-03-18T09:34:00.001+08:00</published><updated>2007-03-18T18:59:38.760+08:00</updated><title type='text'>家乡</title><content type='html'>&lt;p&gt;昨天一早就开车回到家乡去参加堂弟的婚礼了。婚礼简单不失礼节，办的不错。很可惜的是在上午接完亲，下午在老家待着的那段时间，我一直在寻找儿时的感觉。亦或梦里的感觉�?nbsp; 看过了家里的田地，门口的水井，自己亲自种下的树。有一些让人记忆深刻的东西，却有少了一种梦里常有的感觉。忽然有一种：物是人非的感觉。也许这就是生活&lt;/p&gt;&lt;p&gt;儿时生活的地方，其实不必有太多的感想。地还是那地，心也不必有太多的要求。跟大家聊聊家常就是一种享受，何必一定要回到从前&lt;br /&gt;PS：昨天的路是真不好走，车是一身的泥。估计今天得好好洗洗&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-118585175445777713?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/118585175445777713/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=118585175445777713' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/118585175445777713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/118585175445777713'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_18.html' title='家乡'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-8863579644209240934</id><published>2007-03-16T09:45:00.000+08:00</published><updated>2008-12-10T08:03:37.581+08:00</updated><title type='text'>植树节</title><content type='html'>&lt;A HREF='http://3.bp.blogspot.com/_aCJYF8u_FsU/Rfn2pyE8RkI/AAAAAAAAB6s/91nNQhSWjFw/s1600-h/%E6%A4%8D%E6%A0%91%E8%8A%822.jpg'&gt;&lt;IMG SRC='http://3.bp.blogspot.com/_aCJYF8u_FsU/Rfn2pyE8RkI/AAAAAAAAB6s/91nNQhSWjFw/s320/%E6%A4%8D%E6%A0%91%E8%8A%822.jpg' border=0 alt='' id='BLOGGER_PHOTO_ID_' style='clear:both;float:left;'&gt;&lt;/A&gt;&amp;nbsp;这是植树节的照片，呵呵&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-8863579644209240934?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/8863579644209240934/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=8863579644209240934' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8863579644209240934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8863579644209240934'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_7220.html' title='植树节'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_aCJYF8u_FsU/Rfn2pyE8RkI/AAAAAAAAB6s/91nNQhSWjFw/s72-c/%E6%A4%8D%E6%A0%91%E8%8A%822.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-182484753855316060</id><published>2007-03-15T18:52:00.000+08:00</published><updated>2007-03-15T18:54:32.328+08:00</updated><title type='text'>业务培训</title><content type='html'>单位昨天上午和今天一天都在太湖边培训，加上上个双休日学习的。让我对ISO9000质量管理体系和检验检疫监管业务知识都有了一定的认识。特别是监管的时候，要用ISO9000：2000的标准来进行监管，可以记住几要素，PDCA（PLAN、DO、Check、ACTION），5M1E（人、机、料、法、源、环）。另外中午抽空还去太湖边走走（虽然下着小雨，）感觉别有一番风情啊。只是可惜了，边上没有MM啊。呵呵，一早上网，想找个适合VS2005的UML设计工具，可一直没找到。可惜了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-182484753855316060?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/182484753855316060/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=182484753855316060' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/182484753855316060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/182484753855316060'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_15.html' title='业务培训'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-6825281026646494635</id><published>2007-03-14T10:10:00.001+08:00</published><updated>2007-03-14T10:10:32.510+08:00</updated><title type='text'>我喜欢的歌</title><content type='html'>最小一直很喜欢唱歌，不过，由于天生对五线谱呆呆，所以只管自己开心的唱，从来不管人家说些什么。也没有特别喜欢的歌手，只是在一段时间内因为某些歌而喜欢某些歌手&lt;br /&gt;记得的就如下了：&lt;br /&gt;罗大佑　《恋曲系列》从80－2000，奇怪的是，我特别喜欢是2000，虽然很多人都说是80最好听。&lt;br /&gt;第一次听田震歌的时候，我还激动的哭了。不记得是初中还是高中了，只记得是从家里小黑白电视上看到的那首，每个夜晚来临的时候，孤独总在我左右的MTV的时候，有一种莫名的冲动。&lt;br /&gt;还有就是张学友的歌也喜欢过一段时间，不过不长。再后来就是老狼的歌了，那首《同桌的你》听了不下百遍（我听歌一直听，听到不要听为止）。再后来听老爹的歌，那种冲动的激情让我现在有时候去KTV还去拉几嗓子。&lt;br /&gt;特别喜欢的是老爹的《水手》。以下是我从别人那儿CP来的，感觉这些歌都是我喜欢过和现在正在喜欢的。&lt;br /&gt;呵呵，声明，网上找来的，一则表示我也喜欢，二则也算是做个收藏，以后有汽车的时候做成CD放在车上。边听音乐边开车，一定很开心。&lt;br /&gt;&lt;br /&gt;一、校园篇 &lt;br /&gt;   1、《恋恋风尘》 老狼 &lt;br /&gt;    2、《中学时代》 水木年华 &lt;br /&gt;　　3、《想把我唱给你听》小柯、老狼、曹芳、王筝 (全国首届校园歌手电视歌曲大赛主) &lt;br /&gt;　　4、《曾经的那些》  (一首超级好听的校园歌曲四个女大学生自创的校园之歌 &lt;br /&gt;　　5、《丁香姑娘》新校园歌曲－玻璃杯 &lt;br /&gt;　　6、《青青校园》 杨庆煌 &lt;br /&gt;　　7、《南屏晚钟》 赵鹏。 &lt;br /&gt;　　8、《那时花开》 流浪的燕子 &lt;br /&gt;　　9、《关于现在关于未来》老狼晴朗 &lt;br /&gt;　　10、《冬季校园》 &lt;br /&gt;　　11、《那天》 艾敬&lt;br /&gt;    12、《曾经的你》徐巍 &lt;br /&gt;    13、《故乡》徐巍&lt;br /&gt;　　二、抒情篇 &lt;br /&gt;　　1、《别说我的眼泪你无所谓(原创)》水木年华 &lt;br /&gt;　　2、《莱茵河之恋》 麦洁文 &lt;br /&gt;　　3、《今夜你会不会来（国）》黎明 &lt;br /&gt;　　4、《少女的祈祷》杨千桦 &lt;br /&gt;　　5、《她的背影》 王杰 &lt;br /&gt;　　6、《那种心跳的感觉》 高明骏 &lt;br /&gt;　　7、《野百合也有春天》 &lt;br /&gt;　　8、《外面的世界》（齐秦） &lt;br /&gt;　　9、《边走边唱》 &lt;br /&gt;　　10、《栀子花开》 何炅 &lt;br /&gt;　　11、《我们的爱》 &lt;br /&gt;　　12、《在他乡》 水木年华 &lt;br /&gt;　　13、《不要让我的眼泪陪你过夜》齐秦 &lt;br /&gt;    14、《何日君再来》 邓丽君 &lt;br /&gt;    15、《情人的眼泪》 蔡琴 &lt;br /&gt;　　三、激情篇 &lt;br /&gt;　　1、《我们是冠军》 94年美国世界杯歌曲 &lt;br /&gt;　　2、《生命之怀》 98世界杯足球歌曲 瑞奇马丁 &lt;br /&gt;　　3、《hand in hand手拉手》 88汉城奥运会主题歌 &lt;br /&gt;　　4、《中国人民解放军军歌》 或者 红色摇滚_中国人民解放军军歌 &lt;br /&gt;　　5、《新四军军歌》 &lt;br /&gt;　　6、《志愿军军歌》 &lt;br /&gt;　　7、《大刀进行曲》(黄河大合唱)大刀向鬼子们的头上砍去 &lt;br /&gt;　　8、《运动员进行曲》(铜管乐合奏) &lt;br /&gt;　　9、《娇羞天使》 荷东的士高 &lt;br /&gt;　　10、《我一直在路上》 王启文（摇滚版） &lt;br /&gt;　　四、英文歌 &lt;br /&gt;　　1、hoobastank - the reason 英国排行榜第一的单曲 &lt;br /&gt;　　2、shalala 莎啦啦 &lt;br /&gt;　　3、big big word(英文原版) &lt;br /&gt;　　4、the rhythm of the rain雨中的旋律 欧美经典 &lt;br /&gt;　　5、Hotel California (加洲旅馆) &lt;br /&gt;　　6、that's why you go away (你将离去) &lt;br /&gt;　　7、End Of The World（世界末日） &lt;br /&gt;　　8、the sound of silence(寂静之声) &lt;br /&gt;　　9、because i love you (英文经典情歌) &lt;br /&gt;　　10、pretty boy （欧美 - 英文经典） &lt;br /&gt;　　11、right here waiting（此情可待）奥斯卡－百年金曲典藏 &lt;br /&gt;　　五、儿歌 &lt;br /&gt;    1、蓝精灵 &lt;br /&gt;    2、娃哈哈 &lt;br /&gt;    3、让我们荡起双浆 &lt;br /&gt;    4、春天在哪里 &lt;br /&gt;    5、阿雅ㄘㄨㄚ冰进行曲 &lt;br /&gt;    6、国旗国旗真美丽 &lt;br /&gt;　　六、经典乐曲 &lt;br /&gt;    1、圣母颂（古诺） &lt;br /&gt;    2、毕业生  发烧音响试音大碟！ &lt;br /&gt;    3、ANNA IN THE MIRROR 镜中的安娜 吉他曲 &lt;br /&gt;    4、《鸽子》 &lt;br /&gt;    5、吉他曲-爱的罗曼史 &lt;br /&gt;    6、初雪 班德瑞 &lt;br /&gt;    7、梁祝 &lt;br /&gt;    8、神秘花园  钢琴曲 &lt;br /&gt;    9、花儿与少年（中央乐团轻音乐队）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-6825281026646494635?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/6825281026646494635/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=6825281026646494635' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6825281026646494635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6825281026646494635'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_13.html' title='我喜欢的歌'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7894170227443795446</id><published>2007-03-14T10:09:00.001+08:00</published><updated>2007-03-14T10:09:25.259+08:00</updated><title type='text'>CCNA考试记</title><content type='html'>其实到10 28号晚上我还没定要不要参加考试。心里总是没底。1200块啊，总感觉万一考不出来，怕老婆在后面烦。。。。看完TK以前的错题已经12点过半了。忽然有一种信心和冲动。于是在老婆问：明天你到底去不去的问题中，答：去，为什么不去？没想到把家里的现金放在一起就800，晕啊。本来打算第二天一早七点出发，八点到杭州，九点开考。现在只有九点出发了。到杭州大概十点左右。打的到原来的杭电，看到联合实训中心(其实也就是杭电的主楼七层)。没想到一进门，那个接待的竟然以为我是来培训CCNA的。告诉他我是来考试的。到左边的考场找到一个MM，交了1200块钱。拿到发票和签了两次名后。我找了借口去厕所抽了根烟，又有点紧张了。10：15左右进的考场。其实也就是一个小机房 ，里面有十台左右的电脑。还有摄像头。因为跟那个MM说过我是第一次考。所以MM陪我看前面的那些调查问题。告诉我说选A或B比较多。哦一声之后，立马选 A。MM大惊，“你也看看再选吧”。看了两题之后，没再看了，就选 了B。都是MINI 小于六个月的经验之类。最后问我是否小于18岁，选NO，就开始考试了。说实话真的考试了，一点都不怕了，也许是大部分题目跟TK都相同。我TK虽然没背过，也只看过一遍，但是有可能是学了三年，真的比较熟悉了。一个小时后，我看到了祝贺，哈哈过了。当时真的很开心。填 好地址，拿到成绩证明。已经是11点30分了。给老婆打了个电话，就立马打的到北站回湖州了。&lt;br /&gt;  也许是长久的考研失败。我对NA一直都没有认真对待过。等我真的想去考，在复习中，才发现平时学的真的太少了。看书不是看看就行的，要做题 ，这样的话才能理解，还要做实验。这次NA的实验我基本上没准备，是因为我大部分在平时都做过的。还有就是IP地址这个最重要的问题，我终于搞得很清楚了。以前对这块一直不是很明白(惭愧啊，还搞网络的)。对WAN这块也有了了解。&lt;br /&gt;   到家之后，我有种冲动，也许是该考NP了。BSCI BSMSN，BCRAN，CIT，我估计如果前两门过的话，后来应该比较容易。我不想背背TK就过了。黄佐说的对，理解才是最重要的。我想把CHINAITLAB的录相分段看完，把CISCO study guide分段看完，看完一段，复习TK，然后考试，一门门来。希望天佑我雷唤。&lt;br /&gt;&lt;br /&gt;11.4小雨&lt;br /&gt;一早爬起已经七点三十五分。急问老婆有课否？答一二节，立马叫起。做好一切准备，才发现天在下雨中。说实话我本来就打算带夫人一起去上班的。虽然有那些一点点。。（是因为她的动作太慢），但是我跟我要带她去一起去上班是没有冲突的。我感觉天如果下雨，被带的人一定很不舒服。所以一直在观察中，就在我这一会儿有雨一会没雨中。我的老婆竟然生气了。生气我能理解。可我真的受不了她那种态度。火大，但没发。想想有可能是自己做的过头，好心让人误会。 &lt;br /&gt;&lt;br /&gt;　　打扫卫生到现在。静下心来，没想太多。只是小记，以备以后给自己提醒一下，做人实在是重要的，但方式方法也来得重要。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7894170227443795446?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7894170227443795446/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7894170227443795446' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7894170227443795446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7894170227443795446'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/ccna.html' title='CCNA考试记'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4848221400156613466</id><published>2007-03-14T10:08:00.001+08:00</published><updated>2007-03-14T10:08:53.464+08:00</updated><title type='text'>ntldr is missing问题如何解决？</title><content type='html'>解决：&lt;br /&gt;　　·如果 MFT 根文件夹碎片较多，则可能会出现此问题。如果 MFT 根文件夹包含多个文件，则 MFT 就会变得非常零碎，以至于需要另外创建一个分配索引。因为文件是按字母顺序映射到分配索引中的，NTLDR 文件可能会被推到第二个分配索引中。如果发生此现象，就会看到NTLDR is missing Press CTRL+ALT+DEL to restart.描述的错误信息。 &lt;br /&gt;　　&lt;br /&gt;　　一般情况下不将文件写入根文件夹。如果一个程序定期在根文件夹中创建和删除临时文件，或者将许多文件误复制到根文件夹，就会造成这一情况。 &lt;br /&gt;　　&lt;br /&gt;　　这个问题是在您将多个文件复制到使用 NTFS 文件系统的启动卷的根文件夹后出现，这个问题已经在Windows 2000 SP4中解决。所以，请您检查您的SP状态。 至于解决的方法： &lt;br /&gt;　　&lt;br /&gt;　　使用恢复控制台 &lt;br /&gt;　　1.. 使用 Windows 2000 安装盘重新启动计算机，或使用 Windows 2000 光盘重新启动计算机。 &lt;br /&gt;　　2.. 在“欢迎使用安装程序”屏上，按 R 键修复 Windows 2000 安装。 &lt;br /&gt;　　3.. 按 C 键通过使用“恢复控制台”修复 Windows 2000 安装。 &lt;br /&gt;　　4.. 键入与要修复的 Windows 安装对应的数字，然后按 Enter 键。例如，键入 1，然后按 Enter 键。有关其他信息，请单击下面的文章编号，以查看 Microsoft 知识库中相应的文章： 键入管理员密码，然后按 Enter 键。 &lt;br /&gt;　　5.. 键入 map，然后按 ENTER 键。记下分配给包含 Windows 2000 光盘的 CD-ROM驱动器的驱动器号。 &lt;br /&gt;　　6.. 键入以下命令，在键入每个命令后按 ENTER 键，其中 drive 是您在本文“方法 &lt;br /&gt;　　2：使用恢复控制台”中的第 4 步键入的驱动器号： &lt;br /&gt;　　copy drive:\i386\ntldr c:\ &lt;br /&gt;　　&lt;br /&gt;　　copy drive:\i386\ntdetect.com c:\ &lt;br /&gt;　　&lt;br /&gt;　　如果系统提示您覆盖现有文件，请键入 y，然后按 Enter 键。 &lt;br /&gt;　　&lt;br /&gt;　　注意：在这些命令中，ntldr 和 c:\ 之间以及 ntdetect.com 和 c:\ 之间各有一个空格。 &lt;br /&gt;　　7.. 键入下面的命令，然后按 ENTER 键： &lt;br /&gt;　　type c:\Boot.ini &lt;br /&gt;　　&lt;br /&gt;　　出现一个类似如下的列表： &lt;br /&gt;　　[boot loader] &lt;br /&gt;　　timeout=30 &lt;br /&gt;　　default=multi(0)disk(0)rdisk(0)partition(1)\WINNT &lt;br /&gt;　　&lt;br /&gt;　　[operating systems] &lt;br /&gt;　　multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect &lt;br /&gt;　　如果收到以下消息，则 Boot.ini 文件可能丢失或损坏： &lt;br /&gt;　　The system cannot find the file or directory specified. &lt;br /&gt;　　&lt;br /&gt;　　8.. 如果 Boot.ini 文件丢失或损坏，请创建一个新的。为此，请按照下列步骤操作： &lt;br /&gt;　　1.. 使用文本编辑器，如记事本或 Edit.com 创建一个类似于以下内容的启动加载程序文件： &lt;br /&gt;　　[boot loader] &lt;br /&gt;　　timeout=30 &lt;br /&gt;　　default=multi(0)disk(0)rdisk(0)partition(1)\WINNT &lt;br /&gt;　　&lt;br /&gt;　　[operating systems] &lt;br /&gt;　　multi(0)disk(0)rdisk(0)partition(1)\WINNT="Microsoft Windows 2000 Professional" /fastdetect有关其他信息，请单击下面的文章编号，以查看 Microsoft 知识库中相应的文章： 102873 BOOT.INI and ARC Path Naming Conventions and Usage &lt;br /&gt;　　&lt;br /&gt;　　301680 HOW TO：Create a Boot Disk for an NTFS or FAT Partition in Windows &lt;br /&gt;　　&lt;br /&gt;　　2.. 将该文件作为 Boot.ini 保存到磁盘。 &lt;br /&gt;　　&lt;br /&gt;　　注意：如果您是使用记事本创建的文件，请确保 .txt 扩展名没有附加在Boot.ini 文件名后面。 &lt;br /&gt;　　3.. 在恢复控制台命令提示符下键入下面的命令，将 Boot.ini 文件从软盘复制到计算机： &lt;br /&gt;　　copy a:\Boot.ini c:\ &lt;br /&gt;　　&lt;br /&gt;　　9.. 键入 exit，然后按 ENTER 键。计算机将会重新启动&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4848221400156613466?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4848221400156613466/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4848221400156613466' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4848221400156613466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4848221400156613466'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/ntldr-is-missing.html' title='ntldr is missing问题如何解决？'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7630232611987708596</id><published>2007-03-13T13:06:00.000+08:00</published><updated>2007-03-13T13:07:31.182+08:00</updated><title type='text'>ISDN PRI说明</title><content type='html'>ISDN PRI&lt;br /&gt;用于在存在点（POP）和其它大型中央站点位置承载大量输入ISDN通话。所有ISDN BRI的可靠性和性能都适用于ISDN PRI，但ISDN PRI有23个B通道，每个通道为64 kbps，共享，一个承载信号通信的64 kbps D通道。ISDN PRI常称为23B+D（北美与日本）=T1=1.55Mpbs或30B+D（欧洲）=E1=2.048Mbps。&lt;br /&gt;D通道通知中央办公室交换向Cisco路由器或访问服务器上的特定时间槽发送输入通话。每个B通道承载声音或数据。D通道承载B通道的信号。D通道表示通话为线路交换数字通话或模拟modem通话。模拟modem通话译码之后再发送到卡上modem。线路交换数字通话直接中继到路由器中的ISDN处理器。输入interface serial命令可以启用和配置D通道，这是用户可配置的。&lt;br /&gt;图I.12显示了T1网配置中所用ISDN PRI接口的逻辑内容。逻辑内容包括23B通道、一个D通道、24个时间槽、24个虚拟串行接口（总B+D数）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7630232611987708596?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7630232611987708596/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7630232611987708596' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7630232611987708596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7630232611987708596'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/isdn-pri.html' title='ISDN PRI说明'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7854292317102392927</id><published>2007-03-13T10:36:00.000+08:00</published><updated>2007-03-13T10:38:16.158+08:00</updated><title type='text'>windows2003　IIS下RMVB不能下载和播放的问题</title><content type='html'>一日人文学院打电话过来，说上传在服务器上的RMVB不能下载也不能在线播放。当时心想也许是他们RMVB损坏了吧，后来搞了半天才知道，在WINDOWS2003上，如果不安装对RMVB支持的软件，那个IIS中的MIME类型中就不会出现RMVB这个类型的文件（其实是WINDOWS本身的MIME库）。而在IIS中如果要下载RMVB，那么http头返回的下载类型为application/vnd.rn-realmedia，所以要在IIS的MIME类型库中新添加rmvb格式类型对应为application/vnd.rn-realmedia&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7854292317102392927?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7854292317102392927/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7854292317102392927' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7854292317102392927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7854292317102392927'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/windows2003iisrmvb.html' title='windows2003　IIS下RMVB不能下载和播放的问题'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-9054935178959793997</id><published>2007-03-13T10:35:00.002+08:00</published><updated>2007-03-13T10:36:03.095+08:00</updated><title type='text'>Cisco PIX525 配置备忘</title><content type='html'>1、 建立用户和修改密码&lt;br /&gt;&lt;br /&gt;跟Cisco IOS路由器基本一样。&lt;br /&gt;&lt;br /&gt;2、 激活以太端口&lt;br /&gt;&lt;br /&gt;必须用enable进入，然后进入configure模式&lt;br /&gt;&lt;br /&gt;PIX525&gt;enable&lt;br /&gt;&lt;br /&gt;Password:&lt;br /&gt;&lt;br /&gt;PIX525#conf t&lt;br /&gt;&lt;br /&gt;PIX525(config)#int e0 auto&lt;br /&gt;&lt;br /&gt;PIX525(config)#int e1 auto&lt;br /&gt;&lt;br /&gt;在默然情况下ethernet0是属外部网卡outside, ethernet1是属内部网卡inside, inside在&lt;br /&gt;&lt;br /&gt;初始化配置成功的情况下已经被激活生效了，但是outside必须命令配置激活。&lt;br /&gt;&lt;br /&gt;3、 命名端口与安全级别&lt;br /&gt;&lt;br /&gt;采用命令nameif&lt;br /&gt;&lt;br /&gt;PIX525(config)#nam e0 outside security0&lt;br /&gt;&lt;br /&gt;PIX525(config)#nam e0 outside security100&lt;br /&gt;&lt;br /&gt;security0是外部端口outside的安全级别（0安全级别最高）&lt;br /&gt;&lt;br /&gt;security100是内部端口inside的安全级别,如果中间还有以太口，则security10，security20等等命名，多个网卡组成多个网络，一般情况下增加一个以太口作为DMZ(Demilitarized Zones非武装区域)。&lt;br /&gt;&lt;br /&gt;4、 配置以太端口IP 地址&lt;br /&gt;&lt;br /&gt;采用命令为：ip address&lt;br /&gt;&lt;br /&gt;如：内部网络为：192.168.1.0 255.255.255.0&lt;br /&gt;&lt;br /&gt;外部网络为：222.20.16.0 255.255.255.0&lt;br /&gt;&lt;br /&gt;PIX525(config)#ip add inside 192.168.1.1 255.255.255.0&lt;br /&gt;&lt;br /&gt;PIX525(config)#ip add outside 222.20.16.1 255.255.255.0&lt;br /&gt;&lt;br /&gt;5、 配置远程访问[telnet]&lt;br /&gt;&lt;br /&gt;在默然情况下，PIX的以太端口是不允许telnet的，这一点与路由器有区别。Inside端口可以做telnet就能用了,但outside端口还跟一些安全配置有关。&lt;br /&gt;&lt;br /&gt;PIX525(config)#tel 192.168.1.1 255.255.255.0 inside&lt;br /&gt;&lt;br /&gt;PIX525(config)#tel 222.20.16.1 255.255.255.0 outside&lt;br /&gt;&lt;br /&gt;测试telnet&lt;br /&gt;&lt;br /&gt;在[开始]-&gt;[运行]&lt;br /&gt;&lt;br /&gt;telnet 192.168.1.1&lt;br /&gt;&lt;br /&gt;PIX passwd:&lt;br /&gt;&lt;br /&gt;输入密码：cisco&lt;br /&gt;&lt;br /&gt;6、 访问列表(access-list)&lt;br /&gt;&lt;br /&gt;此功能与Cisco IOS基本上是相似的，也是Firewall的主要部分，有permit和deny两个功能，网络协议一般有IP│TCP│UDP│ICMP等等，如：只允许访问主机:222.20.16.254的www,端口为：80&lt;br /&gt;&lt;br /&gt;PIX525(config)#access-l 100 permit ip any host 222.20.16.254 eq www&lt;br /&gt;&lt;br /&gt;PIX525(config)#access-l 100 deny ip any any&lt;br /&gt;&lt;br /&gt;PIX525(config)#access-g 100 in int outside&lt;br /&gt;&lt;br /&gt;7、 地址转换（NAT）和端口转换(PAT)&lt;br /&gt;&lt;br /&gt;NAT跟路由器基本是一样的，&lt;br /&gt;&lt;br /&gt;首先必须定义IP Pool，提供给内部IP地址转换的地址段，接着定义内部网段。&lt;br /&gt;&lt;br /&gt;PIX525(config)#glo (outside) 1 222.20.16.100-222.20.16.200 netmask 255.255.255.0&lt;br /&gt;&lt;br /&gt;PIX525(config)#nat (outside) 1 192.168.0.0 255.255.255.0&lt;br /&gt;&lt;br /&gt;如果是内部全部地址都可以转换出去则：&lt;br /&gt;&lt;br /&gt;PIX525(config)#nat (outside) 1 0.0.0.0 0.0.0.0&lt;br /&gt;&lt;br /&gt;则某些情况下，外部地址是很有限的，有些主机必须单独占用一个IP地址，必须解决的是公用一个外部IP(222.20.16.201),则必须多配置一条命令，这种称为（PAT），这样就能解决更多用户同时共享一个IP,有点像代理服务器一样的功能。配置如下：&lt;br /&gt;&lt;br /&gt;PIX525(config)#glo (outside) 1 222.20.16.100-222.20.16.200 netmask&lt;br /&gt;&lt;br /&gt;255.255.255.0&lt;br /&gt;&lt;br /&gt;PIX525(config)#glo (outside) 1 222.20.16.201 netmask 255.255.255.0&lt;br /&gt;&lt;br /&gt;PIX525(config)#nat (outside) 1 0.0.0.0 0.0.0.0&lt;br /&gt;&lt;br /&gt;8、 DHCP Server&lt;br /&gt;&lt;br /&gt;在内部网络，为了维护的集中管理和充分利用有限IP地址，都会启用动态主机分配IP地址服务器（DHCP Server），Cisco Firewall PIX都具有这种功能，下面简单配置DHCP Server,地址段为192.168.1.100—192.168.168.1.200&lt;br /&gt;&lt;br /&gt;DNS: 主202.96.128.68 备202.96.144.47&lt;br /&gt;&lt;br /&gt;主域名称：abc.com.cn&lt;br /&gt;&lt;br /&gt;DHCP Client 通过PIX Firewall&lt;br /&gt;&lt;br /&gt;PIX525(config)#ip add dhcp&lt;br /&gt;&lt;br /&gt;DHCP Server配置&lt;br /&gt;&lt;br /&gt;PIX525(config)#dhc add 192.168.1.100-192.168.1.200 inside&lt;br /&gt;&lt;br /&gt;PIX525(config)#dhc dns 202.96.128.68 202.96.144.47&lt;br /&gt;&lt;br /&gt;PIX525(config)#dhc domain abc.com.cn&lt;br /&gt;&lt;br /&gt;9、 静态端口重定向(Port Redirection with Statics)&lt;br /&gt;&lt;br /&gt;在PIX 版本6.0以上，增加了端口重定向的功能，允许外部用户通过一个特殊的IP地址/端口通过Firewall PIX 传输到内部指定的内部服务器。这种功能也就是可以发布内部WWW、FTP、Mail等服务器了，这种方式并不是直接连接，而是通过端口重定向，使得内部服务器很安全。&lt;br /&gt;&lt;br /&gt;命令格式：&lt;br /&gt;&lt;br /&gt;static [(internal_if_name,external_if_name)]{global_ip│interface} local_ip [netmask mask][max_cons[max_cons[emb_limit[norandomseq]]]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;static [(internal_if_name,external_if_name)]{tcp│udp}{global_ip│interface} local_ip [netmask mask][max_cons[max_cons[emb_limit[norandomseq]]]&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;!----外部用户直接访问地址222.20.16.99 telnet端口，通过PIX重定向到内部主机192.168.1.99的telnet端口（23）。&lt;br /&gt;&lt;br /&gt;PIX525(config)#static (inside,outside) tcp 222.20.16.99 telnet 192.168.1.99&lt;br /&gt;&lt;br /&gt;telnet netmask 255.255.255.255 0 0&lt;br /&gt;&lt;br /&gt;!----外部用户直接访问地址222.20.16.99 FTP，通过PIX重定向到内部192.168.1.3的FTPServer。&lt;br /&gt;&lt;br /&gt;PIX525(config)#stat (inside,outside) tcp 222.20.16.99 ftp 192.168.1.3 ftp netmask 255.255.255.255 0 0&lt;br /&gt;&lt;br /&gt;!----外部用户直接访问地址222.20.16.208 www(即80端口)，通过PIX重定向到内部192.168.123的主机的www(即80端口)。&lt;br /&gt;&lt;br /&gt;PIX525(config)#stat (inside,outside) tcp 222.20.16.208 www 192.168.1.2 www netmask 255.255.255.255 0 0&lt;br /&gt;&lt;br /&gt;!----外部用户直接访问地址222.20.16.201 HTTP(8080端口)，通过PIX重定向到内部192.168.1.4的主机的www(即80端口)。&lt;br /&gt;&lt;br /&gt;PIX525(config)#stat (inside,outside) tcp 222.20.16.208 8080 192.168.1.4 www netmask 255.255.255.255 0 0&lt;br /&gt;&lt;br /&gt;!----外部用户直接访问地址222.20.16.5 smtp(25端口)，通过PIX重定向到内部&lt;br /&gt;&lt;br /&gt;192.168.1.5的邮件主机的smtp(即25端口)&lt;br /&gt;&lt;br /&gt;PIX525(config)#stat (inside,outside) tcp 222.20.16.208 smtp 192.168.1.4 smtp netmask 255.255.255.255 0 0&lt;br /&gt;&lt;br /&gt;10、显示与保存结果&lt;br /&gt;&lt;br /&gt;采用命令sh conf&lt;br /&gt;&lt;br /&gt;保存采用wr m&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-9054935178959793997?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/9054935178959793997/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=9054935178959793997' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/9054935178959793997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/9054935178959793997'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/cisco-pix525.html' title='Cisco PIX525 配置备忘'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5433538351350675670</id><published>2007-03-13T10:35:00.001+08:00</published><updated>2007-03-13T10:35:37.553+08:00</updated><title type='text'>xManager与防火墙的问题解决过程</title><content type='html'>最近部门进了一台V880R，用CDE，放在DMZ区，这样的话，如果要用X－manager访问的话就要涉及到防火墙的规则问题。&lt;br /&gt;我们先打开X－manager连接到V880R（这个时候防火墙是设为permit ip any any)，然后用netstat　看端口的状态，可没想到看了&lt;br /&gt;两台机，感觉client机的端口6000,6001好像是固定的，而Xserver的端口是30000之后，有点随机性质的。&lt;br /&gt;后来因为时间关系不了了之了，昨晚查资料，才知道unix桌面系统使用X协议, Xmanager连接到指定的sun服务器上去. &lt;br /&gt;是在使用一种XDMCP(X显示器管理协议)方式进行连接的.&lt;br /&gt;然后查阅协议的情况才知道1。XDMCP是基于广播的，只能在一个网内起作用，不能进行跨路由访问的. &lt;br /&gt;2。那有没有比如XDMCP over IP之类的方法进行远程桌面连接呢? &lt;br /&gt;解决这个问题，用一台机器做为xclient, 然后在服务器端跑DISPALY=x.x.x.x:0.0; &lt;br /&gt;export DISLPLAY 和xhost 就行&lt;br /&gt;3。然后就是真正的问题所在就是防火墙的端口的问题　&lt;br /&gt;XDMCP用UDP 177端口 &lt;br /&gt;X用TCP 6000 端口 &lt;br /&gt;X Font用TCP 7100端口 &lt;br /&gt;&lt;br /&gt;4。工作过程：和一般的TCP应用不一样的地方在于，一般TCP/UDP应用是客户端如WINDOWS用非特权端口 （&gt;1024的端口）&lt;br /&gt;向服务器端如SORARIS的众所周知端口（&lt;1024的端口）发起通信，而X-EMLUATOR如X-WIN32,X-MANAGER的工作原理是在WINDOWS的TCP 6000端口上起一个XSERVER，然后通过UDP向真正的XSERVER（如SOLARIS的CDE）的UDP177端口发出查询，将DISPLAY导到WINDOWS的TCP 6000端口上，以实现远程X的Xmanager、Xwin32 &lt;br /&gt;5。要通过路由器、防火墙的话，要保证这样的规则（Cisco Pix 525 config）： &lt;br /&gt;access-list 101 permit tcp any eq 6000 any &lt;br /&gt;access-list 101 permit udp any eq 6000 any &lt;br /&gt;access-list 101 permit udp any any eq 177 &lt;br /&gt;access-group 101 in interface outside &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;说的有点乱，请高手指教&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5433538351350675670?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5433538351350675670/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5433538351350675670' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5433538351350675670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5433538351350675670'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/xmanager.html' title='xManager与防火墙的问题解决过程'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-1029957098754758171</id><published>2007-03-13T10:34:00.005+08:00</published><updated>2007-03-13T10:35:20.339+08:00</updated><title type='text'>pix515e配置</title><content type='html'>PIX515E，只要用静态的NAT，不要做global的PAT，要地址段为8和0的机器只能访问地址为192.168.9.2 WEB server和192.168.9.99的proxy server，我就写了以下配置，成功！  &lt;br /&gt;nameif ethernet0 outside security0&lt;br /&gt;nameif ethernet2 dmz security50&lt;br /&gt;nameif ethernet1 inside security100&lt;br /&gt;enable password 750401 encrypted&lt;br /&gt;passwd 710401 encrypted&lt;br /&gt;&lt;br /&gt;hostname fw-pix515e&lt;br /&gt;&lt;br /&gt;fixup protocol ftp 21&lt;br /&gt;fixup protocol http 80&lt;br /&gt;fixup protocol h323 1720&lt;br /&gt;fixup protocol rsh 514&lt;br /&gt;fixup protocol rtsp 554&lt;br /&gt;fixup protocol sqlnet 1521&lt;br /&gt;fixup protocol sip 5060&lt;br /&gt;fixup protocol skinny 2000&lt;br /&gt;fixup protocol smtp 25&lt;br /&gt;&lt;br /&gt;pager lines 24&lt;br /&gt;interface ethernet0 auto&lt;br /&gt;interface ethernet1 auto&lt;br /&gt;interface ethernet2 auto&lt;br /&gt;mtu outside 1500&lt;br /&gt;mtu dmz 1500&lt;br /&gt;mtu inside 1500&lt;br /&gt;&lt;br /&gt;ip address outside 192.168.0.201 255.255.255.0&lt;br /&gt;ip address inside 192.168.9.95 255.255.255.128&lt;br /&gt;ip address dmz 192.168.8.1 255.255.255.0&lt;br /&gt;&lt;br /&gt;ip audit info action alarm&lt;br /&gt;ip audit attack action alarm&lt;br /&gt;no failover&lt;br /&gt;&lt;br /&gt;failover timeout 0:00:00&lt;br /&gt;failover poll 15&lt;br /&gt;failover ip address outside 0.0.0.0&lt;br /&gt;failover ip address libdmz 0.0.0.0&lt;br /&gt;failover ip address dmz 0.0.0.0&lt;br /&gt;failover ip address inside 0.0.0.0&lt;br /&gt;pdm history enable&lt;br /&gt;arp timeout 14400&lt;br /&gt;&lt;br /&gt;static (inside,dmz) 192.168.8.2 192.168.9.2 netmask 255.255.255.255 0 0 &lt;br /&gt;static (inside,dmz) 192.168.8.3 192.168.9.99 netmask 255.255.255.255 0 0 &lt;br /&gt;static (inside,outside) 192.168.0.202 192.168.9.2 netmask 255.255.255.255 0 0 &lt;br /&gt;static (inside,outside) 192.168.0.203 192.168.9.99 netmask 255.255.255.255 0 0 &lt;br /&gt;&lt;br /&gt;access-list acl_outside permit tcp any host 192.168.0.202 eq www&lt;br /&gt;access-list acl_outside permit tcp any host 192.168.0.203 eq 8080&lt;br /&gt;access-list acl_outside permit udp any host 192.168.0.203 eq 8080&lt;br /&gt;access-list acl_outside permit icmp any any &lt;br /&gt;&lt;br /&gt;access-list acl_dmz permit tcp any host 192.168.8.2 eq www&lt;br /&gt;access-list acl_dmz permit tcp any host 192.168.8.3 eq 8080&lt;br /&gt;access-list acl_dmz permit udp any host 192.168.8.3 eq 8080&lt;br /&gt;access-list acl_dmz permit icmp any any &lt;br /&gt;&lt;br /&gt;access-group acl_outside in interface outside&lt;br /&gt;access-group acl_dmz in interface dmz&lt;br /&gt;&lt;br /&gt;timeout xlate 3:00:00&lt;br /&gt;timeout conn 1:00:00 half-closed 0:10:00 udp 0:02:00 rpc 0:10:00 h323 0:05:00 sip 0:30:00 sip_media 0:02:00&lt;br /&gt;timeout uauth 0:05:00 absolute&lt;br /&gt;aaa-server TACACS+ protocol tacacs+ &lt;br /&gt;aaa-server RADIUS protocol radius &lt;br /&gt;no snmp-server location&lt;br /&gt;no snmp-server contact&lt;br /&gt;snmp-server community public&lt;br /&gt;no snmp-server enable traps&lt;br /&gt;floodguard enable&lt;br /&gt;telnet 192.168.9.0 255.255.255.0 inside&lt;br /&gt;telnet timeout 5&lt;br /&gt;terminal width 80&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-1029957098754758171?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/1029957098754758171/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=1029957098754758171' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1029957098754758171'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/1029957098754758171'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/pix515e_12.html' title='pix515e配置'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5789202332201038767</id><published>2007-03-13T10:34:00.003+08:00</published><updated>2007-03-13T10:34:42.646+08:00</updated><title type='text'>在防火墙环境下DNS的安装与设置</title><content type='html'>经过几天的研究BIND，终于解决了我们单位的DNS问题。 &lt;br /&gt;在一般防火墙下，都是采用DMZ区内放服务器，外部访问DMZ区得到外部的IP，内部访问DMZ区时得到内部的IP。 &lt;br /&gt;如一个， &lt;br /&gt;内部IP地址＜－－－＞放在DMZ的web服务器的IP＜－－－－－＞外部IP地址 &lt;br /&gt;192.168.1.1＜－－－＞192.168.0.1＜－－－－－＞211.202.49.1 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;从DNS上可以从以下四个方面解决： &lt;br /&gt;&lt;br /&gt;一.iptables应用 &lt;br /&gt;1. 核心思想 &lt;br /&gt;&lt;br /&gt;　　配置动态DNS服务器的核心思想是：在DNS服务器上运行多个BIND，每个BIND为来自不同区域的用户提供解析，因此每个BIND都应具有不同的配置文件和域文件，并且分别监听在不同的端口。在接到客户端DNS请求时，根据客户的ip地址将请求重定向不同的BIND服务端口。BIND响应时，再改写相应包的服务端口为标准的53端口。这样就可以根据客户端的ip地址将不同的解析结果返回给客户端。整个过程对于客户端来说都是透明的。实现的关键在于运行不同的BIND及运用iptables进行ip地址及端口改写操作。 &lt;br /&gt;&lt;br /&gt;2 配置过程 &lt;br /&gt;&lt;br /&gt;　　步骤1： 配置内核 &lt;br /&gt;&lt;br /&gt;　　netfilter要求内核版本不低于2.3.5，在编译新内核时，要求选择和netfilter相关的项目。这些项目通常都是位于"Networking options"子项下。以2.4.0内核为例，我们应该选中的项目有： &lt;br /&gt;&lt;br /&gt;　　[*] Kernel/User netlink socket &lt;br /&gt;　　[ ] Routing messages &lt;br /&gt;　　&lt;*&gt; Netlink device emulation &lt;br /&gt;　　[*] Network packet filtering (replaces ipchains) &lt;br /&gt;　　....... &lt;br /&gt;　　然后，在"IP: Netfilter Configuration ----&gt;"选中： &lt;br /&gt;&lt;br /&gt;　　 Connection tracking (required for masq/NAT) &lt;br /&gt;　　 FTP protocol support &lt;br /&gt;　　 IP tables support (required for filtering/masq/NAT) &lt;br /&gt;　　 limit match support &lt;br /&gt;　　 MAC address match support &lt;br /&gt;　　 Netfilter MARK match support &lt;br /&gt;　　 Multiple port match support &lt;br /&gt;　　 TOS match support &lt;br /&gt;　　 Connection state match support &lt;br /&gt;　　 Packet filtering &lt;br /&gt;　　 REJECT target support &lt;br /&gt;　　 Full NAT &lt;br /&gt;　　 MASQUERADE target support &lt;br /&gt;　　 REDIRECT target support &lt;br /&gt;　　 Packet mangling &lt;br /&gt;　　 TOS target support &lt;br /&gt;　　 MARK target support &lt;br /&gt;　　 LOG target support &lt;br /&gt;　　 ipchains (2.2-style) support &lt;br /&gt;　　 ipfwadm (2.0-style) support &lt;br /&gt;&lt;br /&gt;　　其中最后两个项目可以不选，但是如果你比较怀念ipchains或者ipfwadm，你也可以将其选中，以便在2.4内核中使用ipchians或ipfwadm。但是需要注意的是，iptables是和ipchians/ipfwadm相对立的，在使用iptables的同时就不能同时使用ipchains/ipfwadm。编译成功后，这些模块文件都位于以下目录中 &lt;br /&gt;/lib/modules/2.4.0/kernel/net/ipv4/netfilter &lt;br /&gt;&lt;br /&gt;　　编译2.4.0的新内核时还应该注意要在"Processor type and features"中选择和你的CPU相对应的正确的CPU选项，否则新内核可能无法正常工作。 &lt;br /&gt;&lt;br /&gt;　　步骤二、 配置BIND服务 &lt;br /&gt;&lt;br /&gt;　　缺省地，BIND服务监听在53端口，我们可以通过配置让BIND运行在不同的ip及端口上。实现这一点并不复杂，假设我们的DNS服务器的ip地址是211.163.76.1，并且我们想区分CERNET及非CERNET的客户，这时我们必须运行两个BIND，使用不同的配置文件。可以在使用非标准监听端口的BIND的配置文件中用listen-on指定BIND监听的端口，比如： &lt;br /&gt;&lt;br /&gt;　　options { &lt;br /&gt;　　listen-on port 54 {211.163.76.1;} &lt;br /&gt;　　directory "/var/named_cernet"; &lt;br /&gt;　　}; &lt;br /&gt;　　可以用named的-c 选项指定named读入不同的配置文件，比如： &lt;br /&gt;&lt;br /&gt;　　/usr/sbin/named -u named -c /etc/named_cernet.conf &lt;br /&gt;　　 &lt;br /&gt;3、配置重定向规则 &lt;br /&gt;&lt;br /&gt;　　假设监听在标准端口的BIND服务器为非CERNET客户提供DNS解析，监听在54端口的BIND服务器为CERNET服务器提供DNS解析，我们可以建立如下的规则脚本： &lt;br /&gt;&lt;br /&gt;　　#!/bin/bash &lt;br /&gt;&lt;br /&gt;　　#打开端口转发 &lt;br /&gt;&lt;br /&gt;　　echo 1 &gt; /proc/sys/net/ipv4/ip_forward &lt;br /&gt;　　#加载相关的内核模块 &lt;br /&gt;&lt;br /&gt;　　/sbin/modprobe iptable_filter &lt;br /&gt;　　/sbin/modprobe ip_tables &lt;br /&gt;　　/sbin/modprobe iptables_nat &lt;br /&gt;　　#刷新所有规则 &lt;br /&gt;&lt;br /&gt;　　/sbin/iptables -t nat -F &lt;br /&gt;　　#加入来自CERNET的DNS请求转发规则，将其转发到本地54端口，CERNET地址列表可从www.nic.edu.cn/RS/ipstat/获得 &lt;br /&gt;&lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p udp -s 163.105.0.0/16 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p tcp -s 163.105.0.0/16 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p udp -s 166.111.0.0/16 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p tcp -s 166.111.0.0/16 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p udp -s 202.4.128.0/19 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p tcp -s 202.4.128.0/19 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p udp -s 202.112.0.0/15 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;/sbin/iptables -t nat -A PREROUTING -p tcp -s 202.112.0.0/15 --dport 53 -i eth0 -j REDIRECT 54 &lt;br /&gt;… &lt;br /&gt;　　#将返回给CERNET DNS客户数据包的源端口(54端口)伪装成53端口 &lt;br /&gt;&lt;br /&gt;　　/sbin/iptables -t nat -A POSTROUTING -p udp --sport 54 -o eth0 -j SNAT --to 211.163.76.1:53 &lt;br /&gt;　　/sbin/iptables -t nat -A POSTROUTING -p tcp --sport 54 -o eth0 -j SNAT --to 211.163.76.1:53 &lt;br /&gt;　　教育网网的朋友可以从这里下载该脚本，将脚本中的DNS_IP及CNET_PORT参数改成你自己的DNS服务器地址及监听端口即可。 &lt;br /&gt;4、运行动态DNS &lt;br /&gt;&lt;br /&gt;　　配置完成后我们启动DNS服务器，并且运行相应的规则脚本，我们的动态DNS服务器就可以正常工作了。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;二。利用bind9的cache纪录 &lt;br /&gt;　　1)、用户向浏览器提供要访问的域名； &lt;br /&gt;　　2)、浏览器调用域名解析库对域名进行解析，由于CDN对域名解析过程进行了调整， &lt;br /&gt;　　　　所以解析函数库一般得到的是该域名对应的CNAME记录，为了得到实际IP地址， &lt;br /&gt;　　　浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址；在此过程中， &lt;br /&gt;　　　使用的全局负载均衡DNS解析，如根据地理位置信息解析对应的IP地址，使得用户能就近访问。 &lt;br /&gt;　　3)、此次解析得到CDN缓存服务器的IP地址，浏览器在得到实际的IP地址以后， &lt;br /&gt;　　　向缓存服务器发出访问请求； &lt;br /&gt;　　4)、缓存服务器根据浏览器提供的要访问的域名，通过Cache内部专用DNS解析 &lt;br /&gt;　　　得到此域名的实际IP地址，再由缓存服务器向此实际IP地址提交访问请求； &lt;br /&gt;　　5)、缓存服务器从实际IP地址得得到内容以后，一方面在本地进行保存， &lt;br /&gt;　　　　　以备以后使用，二方面把获取的数据返回给客户端，完成数据服务过程； &lt;br /&gt;　　6)、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。 &lt;br /&gt;　　　1、要加入CDN服务的网站，需要域名(如www.linuxaid.com.cn,地址202.99.11.120)解析权提供给CDN运营商，Linuxaid的域名解析记录只要把www主机的A记录改为CNAME并指向cache.cdn.com即可。cache.cdn.com是CDN网络自定义的缓存服务器的标识。在/var/named/linuxaid.com.cn域名解析记录中，由： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;www IN A 202.99.11.120 &lt;br /&gt;改为 &lt;br /&gt;www IN CNAME cache.cdn.com. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　2、CDN运营商得到域名解析权以后，得到域名的CNAME记录，指向CDN网络属下缓存服务器的域名，如cache.cdn.com，CDN网络的全局负载均衡DNS，需要把CNAME记录根据策略解析出IP地址，一般是给出就近访问的Cache地址。 &lt;br /&gt;&lt;br /&gt;　　Bind 9的基本功能可以根据不同的源IP地址段解析对应的IP，实现根据地域就近访问的负载均衡，一般可以通过Bind 9的sortlist选项实现根据用户端IP地址返回最近的节点IP地址，具体的过程为： &lt;br /&gt;&lt;br /&gt;　　1)为cache.cdn.com设置多个A记录，/var/named/cdn.com 的内容如下： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;$TTL 3600 &lt;br /&gt;@ IN SOA ns.cdn.com. root.ns.cdn.com. ( &lt;br /&gt;2002090201 ;Serial num &lt;br /&gt;10800 ;Refresh after 3 hours &lt;br /&gt;3600 ;Retry &lt;br /&gt;604800 ;Expire &lt;br /&gt;1800 ;Time to live &lt;br /&gt;) &lt;br /&gt;IN NS ns &lt;br /&gt;www IN A 210.33.21.168 &lt;br /&gt;ns IN A 202.96.128.68 &lt;br /&gt;cache IN A 202.93.22.13 ;有多少个CACHE地址 &lt;br /&gt;cache IN A 210.21.30.90 ;就有多少个CACHE的A记录 &lt;br /&gt;cache IN A 211.99.13.47 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;　　2) /etc/named.conf中的内容为： &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;options { &lt;br /&gt;directory "/var/named"; &lt;br /&gt;sortlist { &lt;br /&gt;　#这一段表示当在本地执行查询时 &lt;br /&gt;　　#将按照202.93.22.13,210.21.30.90,211.99.13.47的顺序返回地址 &lt;br /&gt;{ localhost; &lt;br /&gt;{ localnets; &lt;br /&gt;202.93.22.13; &lt;br /&gt;{ 210.21.30.90; 211.99.13.47; }; &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;#这一段表示当在202/8地址段进行DNS查询时 &lt;br /&gt;#将按照202.93.22.13,210.21.30.90,211.99.13.47的顺序返回地址 &lt;br /&gt;{ 202/8; &lt;br /&gt;{ 202.93.22.13; &lt;br /&gt;{ 210.21.30.90; 211.99.13.47; }; &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;#这一段表示当在211/8地址段进行DNS查询时 &lt;br /&gt;#将按照211.99.13.47,202.93.22.13,210.21.30.90的顺序返回地址， &lt;br /&gt;#也就是211.99.13.47是最靠近查询地点的节点 &lt;br /&gt;{ 211/8; &lt;br /&gt;{ 211.99.13.47; &lt;br /&gt;{ 202.93.22.13; 210.21.30.90; }; &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;{ 61/8; &lt;br /&gt;{ 202.93.22.13; &lt;br /&gt;{ 210.21.30.90; 211.99.13.47; }; &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;　　zone "." { &lt;br /&gt;　 type hint; &lt;br /&gt;　　 file "root.cache"; &lt;br /&gt;　　}; &lt;br /&gt;&lt;br /&gt;　　zone "localhost" { &lt;br /&gt;　 type master; &lt;br /&gt;　 file "localhost"; &lt;br /&gt;　　}; &lt;br /&gt;&lt;br /&gt;　　zone "cdn.com" { &lt;br /&gt;　 　 type master; &lt;br /&gt;　 file "cdn.com"; &lt;br /&gt;　　}; &lt;br /&gt;&lt;br /&gt;三。设内外DNS &lt;br /&gt;　外部DNS就是一般的设置，关键在于内部的DNS的设置上 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;## named.conf - configuration for bind &lt;br /&gt;# &lt;br /&gt;# Generated automatically by redhat-config-bind, alchemist et al. &lt;br /&gt;# Any changes not supported by redhat-config-bind should be put &lt;br /&gt;# in /etc/named.custom &lt;br /&gt;# &lt;br /&gt;controls { &lt;br /&gt;inet 127.0.0.1 allow { localhost; } keys { rndckey; }; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;include "/etc/named.custom"; &lt;br /&gt;&lt;br /&gt;include "/etc/rndc.key"; &lt;br /&gt;&lt;br /&gt;options { &lt;br /&gt;directory "/var/named/"; &lt;br /&gt;forwarders { 192.168.22.9; };　　//转向到外部的DNS &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;zone "0.0.127.in-addr.arpa" { &lt;br /&gt;type master; &lt;br /&gt;file "0.0.127.in-addr.arpa.zone"; &lt;br /&gt;}; &lt;br /&gt;zone "22.168.192.in-addr.arpa" { &lt;br /&gt;type master; &lt;br /&gt;file "22.168.192.in-addr.arpa.zone"; &lt;br /&gt;}; &lt;br /&gt;zone "7.20.172.in-addr.arpa" { &lt;br /&gt;type master; &lt;br /&gt;file "7.20.172.in-addr.arpa.zone"; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;zone "localhost" { &lt;br /&gt;type master; &lt;br /&gt;file "localhost.zone"; &lt;br /&gt;}; &lt;br /&gt;zone "hutc.zj.cn" { &lt;br /&gt;type master; &lt;br /&gt;file "hutc.zj.cn.zone"; &lt;br /&gt;forwarders { };　　//除了内部的本域解析，其余都放到外部的DNS上 &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;四。利用bind9的view功能 &lt;br /&gt;&lt;br /&gt;options { &lt;br /&gt;directory "/var/named"; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;acl "fx_subnet" {192.253.254/24; }; &lt;br /&gt;view "internal" { //我们区的内部视图 &lt;br /&gt;match-clients { "fx-subnet"; }; &lt;br /&gt;zone "fx.movie.edu" { &lt;br /&gt;&lt;br /&gt;type master; &lt;br /&gt;file 'db.fx.moive.edu"; &lt;br /&gt;}; &lt;br /&gt;zone "254.253.192.in-addr.arpa" { &lt;br /&gt;type master; &lt;br /&gt;file "db.192.253.254"; &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;view "external" { //相应于世界的其余部分，我们区的视图 &lt;br /&gt;match-clients { any; }; //隐式地 &lt;br /&gt;rescursion no; //我们的子网外面，它们不应该请求递归查询 &lt;br /&gt;&lt;br /&gt;　zone "fx.movie.edu" { &lt;br /&gt;type master; &lt;br /&gt;file "db.fx.movie.edu.external"; //外部区数据文件 &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;zone "254.254.192.in.arpa" { &lt;br /&gt;type master; &lt;br /&gt;file "db.192.253.254.external";//外部区数据文件 &lt;br /&gt;}; &lt;br /&gt;}; &lt;br /&gt;&lt;br /&gt;总结：方法一：过于复杂，并且不能解决MX纪录的问题 &lt;br /&gt;　　　方法二：实际上用别的思想来解决内外DNS解析的问题 &lt;br /&gt;　　　方法三：实际已经运用过，还可以用ACL来做进一步的限制，就是和方法四比较起来，机器用的多了一点 &lt;br /&gt;　　　方法四：感觉最好了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5789202332201038767?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5789202332201038767/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5789202332201038767' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5789202332201038767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5789202332201038767'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/dns_12.html' title='在防火墙环境下DNS的安装与设置'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4184665456252166137</id><published>2007-03-13T10:34:00.001+08:00</published><updated>2007-03-13T10:34:12.717+08:00</updated><title type='text'>应用于端口的与应用VLAN的ACL</title><content type='html'>头近日让我做一个方案，让一个部门的部分的机器能上内外网，而一部分机器却只能上内外，外网是不能上的。更晕的还是有一个HUB。让我把HUB上一部分机器也做控制，（注意不是全部的，而是HUB的部分机器）。想了N久，做了几次实验，想做了一个方案：&lt;br /&gt;&lt;br /&gt;一是在主交换上划一个单独的VLAN，然后在这个VLAN上写上特定的ACL，然后把相应机器上联端口划到这个VLAN。不过，这样的话，HUB上的控制就没办法了。&lt;br /&gt;&lt;br /&gt;二是在相应的机器上联端口的应用ACL。&lt;br /&gt;&lt;br /&gt;应用端口和应用VLAN的ACL，然后在联HUB的交换机上做基于源IP的ACL&lt;br /&gt;&lt;br /&gt;access-list 102 permit tcp any 192.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit udp any 192.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit tcp any 172.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit udp any 172.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 deny   ip any any&lt;br /&gt;&lt;br /&gt;具体参考了CISCO.com中的2950 4506部分的资料，还有就是http://tech.ccidnet.com/pub/article/c317_a80784_p1.html&lt;br /&gt;&lt;br /&gt;很不错，推荐想学ACL的人看看&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4184665456252166137?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4184665456252166137/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4184665456252166137' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4184665456252166137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4184665456252166137'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/vlanacl.html' title='应用于端口的与应用VLAN的ACL'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2093318256561239893</id><published>2007-03-13T10:33:00.003+08:00</published><updated>2007-03-13T10:33:56.155+08:00</updated><title type='text'>程唤醒源代码</title><content type='html'>今天单位开运动会，家里有点事情也就请假不来上班了，没想到，最后还是来了。呵呵，工作真是无奈啊，部门装了一个中控软件，真是极小的一个软件，后来涉及到网络问题，我只好从家里过来看看，因为这次因为是跨网段唤醒机器的问题，找了一个GOOGLE找到这个，就记下来了忘记出处了，留着自己用的。&lt;br /&gt;&lt;br /&gt;void TWakeUpOnLanForm:: WakeRemoteComputer(AnsiString IPAddress,unsigned char * MacAddress)&lt;br /&gt;{&lt;br /&gt;        unsigned char SendBuf[102];&lt;br /&gt;        for( int i = 0; i &lt; 102; i ++)&lt;br /&gt;        {&lt;br /&gt;                SendBuf[i] = (i &lt; 6) ? 0xFF : MacAddress[i%6];&lt;br /&gt;        }&lt;br /&gt;        TMemoryStream * MemoryStream = new TMemoryStream();&lt;br /&gt;&lt;br /&gt;        MemoryStream -&gt; Clear();&lt;br /&gt;        MemoryStream -&gt; Write(SendBuf,102);&lt;br /&gt;        NMUDP1 -&gt; RemoteHost = IPAddress;   //除去网络号后的IP段全部补255&lt;br /&gt;                                            //如 210.45.234.255&lt;br /&gt;        NMUDP1 -&gt; SendStream(MemoryStream);&lt;br /&gt;        delete MemoryStream;&lt;br /&gt;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2093318256561239893?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2093318256561239893/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2093318256561239893' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2093318256561239893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2093318256561239893'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_6891.html' title='程唤醒源代码'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4105949521869672301</id><published>2007-03-13T10:33:00.001+08:00</published><updated>2007-03-13T10:33:30.571+08:00</updated><title type='text'>veritas netbackup出问题了?</title><content type='html'>今天TELNET到单位的SUN V880R小型机上看到下面的信息:&lt;br /&gt;&lt;br /&gt;root@sun-jwgl # Oct 25 13:44:55 sun-jwgl root: [ID 702911 local0.alert] Legato Storage Manager media: (waiting) backup to pool 'Default' waiting for 1 writable backup tape(s)&lt;br /&gt;Oct 25 13:44:55 sun-jwgl root: [ID 702911 local0.alert] Legato Storage Manager media: (waiting) backup to pool 'Default' waiting for 1 writable backup tape(s)&lt;br /&gt;&lt;br /&gt;于是:xmanager2.联上V880R,运行/usr/openv/netbackup/bin/jnbSA &amp; 启动veritas For UNIX 的图形界面,运行了一些日志,没有看出什么毛病,再回头看看出错信息, Pool 'deFault'? writable backup tape? 是不是在定义备份池的时候没定义好?用google查了一下,晕了,N多人说要reinstall veritas.本来以为一下子能解决的,看样子又要花上一定的时间了.晕啊&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4105949521869672301?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4105949521869672301/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4105949521869672301' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4105949521869672301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4105949521869672301'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/veritas-netbackup.html' title='veritas netbackup出问题了?'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2792604710153300361</id><published>2007-03-13T10:32:00.004+08:00</published><updated>2007-03-13T10:33:08.853+08:00</updated><title type='text'>关闭WINXP的高级文字服务为win2000</title><content type='html'>这几天机器装了XP,一直想关闭XP的高级文字服务.可惜一直也没能找到方法,今天想下载个MY MPC的时候用GOOGLE找到了http://silence.hao-8.com/这个网站, 看到这个"输入法调整工具，可动态调整输入法顺序，并可关闭高级文字服务。　Windows 2000 中的输入法指示器（internat），可在 XP/2003 下使用。"有这么一个下载,下载解压后,把INTERNAT的包的文件COPY到c:\windows\ 然后运行imetools.exe,选择输入法风格中:输入法指示器(推荐),确定退出,然后看看,哈哈,怎么样?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2792604710153300361?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2792604710153300361/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2792604710153300361' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2792604710153300361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2792604710153300361'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/winxpwin2000.html' title='关闭WINXP的高级文字服务为win2000'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-2402073419213507124</id><published>2007-03-13T10:32:00.003+08:00</published><updated>2007-03-13T10:32:51.032+08:00</updated><title type='text'>sunos 下的oracle自动备份</title><content type='html'>晕啊,这几天事情太多了,小事多的让我头都晕了,呵呵,不急,不急,一件件来,先把ORACLE数据库本身的备份搞得,要不然,我睡觉都不安份啊.那个VERITAS能不能用,我心里都没底.(:()&lt;br /&gt;&lt;br /&gt;第一步建立备份脚本:&lt;br /&gt;&lt;br /&gt;root@sun-jwgl #&lt;br /&gt;&lt;br /&gt;#cd /dbbackup/ &lt;br /&gt;&lt;br /&gt;#vi erverbackup.sh&lt;br /&gt;ORACLE_HOME=/oracle/oracle/oracle817&lt;br /&gt;ORACLE_SID=jw&lt;br /&gt;NLS_LANG="simplified chinese"_china.zhs16gbk &lt;br /&gt;PATH=$PATH:/usr/sbin:/$ORACLE_HOME/bin&lt;br /&gt;export ORACLE_HOME &lt;br /&gt;export ORACLE_SID &lt;br /&gt;export NLS_LANG  &lt;br /&gt;export PATH&lt;br /&gt;DATE=`date +%Y%m%d`&lt;br /&gt;cd /$ORACLE_HOME/backup&lt;br /&gt;exp 用户名/密码@主机字符串  file=JW${DATE}.dmp log=JW${DATE}.log&lt;br /&gt;&lt;br /&gt;上面除了最后一行用户名密码和主机字符串要自己写之外,其它应该差不多,不过,大多数人把oracle装在/export/home/oracle中的,我们比较例外一点.&lt;br /&gt;&lt;br /&gt;#chmod +x erver.sh 让脚本可执行的说&lt;br /&gt;&lt;br /&gt;第二步运行一下看看root@sun-jwgl # ./erverbackup.sh&lt;br /&gt;&lt;br /&gt;Export: Release 8.1.7.0.0 - Production on 星期三 10月 27 09:06:51 2004&lt;br /&gt;&lt;br /&gt;(c) Copyright 2000 Oracle Corporation.  All rights reserved.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Connected to: Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production&lt;br /&gt;With the Partitioning option&lt;br /&gt;JServer Release 8.1.7.0.0 - Production&lt;br /&gt;Export done in ZHS16GBK character set and ZHS16GBK NCHAR character set&lt;br /&gt;. exporting pre-schema procedural objects and actions&lt;br /&gt;. exporting foreign function library names for user JW &lt;br /&gt;. exporting object type definitions for user JW &lt;br /&gt;About to export JW's objects ...&lt;br /&gt;. exporting database links&lt;br /&gt;. exporting sequence numbers&lt;br /&gt;. exporting cluster definitions&lt;br /&gt;. about to export JW's tables via Conventional Path ...&lt;br /&gt;. . exporting table                              A         244 rows exported&lt;br /&gt;&lt;br /&gt;. exporting synonyms&lt;br /&gt;. exporting views&lt;br /&gt;. exporting stored procedures&lt;br /&gt;. exporting operators&lt;br /&gt;. exporting referential integrity constraints&lt;br /&gt;. exporting triggers&lt;br /&gt;. exporting indextypes&lt;br /&gt;. exporting bitmap, functional and extensible indexes&lt;br /&gt;. exporting posttables actions&lt;br /&gt;. exporting snapshots&lt;br /&gt;. exporting snapshot logs&lt;br /&gt;. exporting job queues&lt;br /&gt;. exporting refresh groups and children&lt;br /&gt;. exporting dimensions&lt;br /&gt;. exporting post-schema procedural objects and actions&lt;br /&gt;. exporting statistics&lt;br /&gt;Export terminated successfully without warnings.&lt;br /&gt;&lt;br /&gt;一切OK,那么就进入&lt;br /&gt;&lt;br /&gt;第三步放入crontab中&lt;br /&gt;&lt;br /&gt;root@sun-jwgl # crontab -l&lt;br /&gt;#ident  "@(#)root       1.19    98/07/06 SMI"   /* SVr4.0 1.1.3.1       */&lt;br /&gt;#&lt;br /&gt;# The root crontab should be used to perform accounting data collection.&lt;br /&gt;#&lt;br /&gt;# The rtc command is run to adjust the real time clock if and when&lt;br /&gt;# daylight savings time changes.&lt;br /&gt;#&lt;br /&gt;10 3 * * 0,4 /etc/cron.d/logchecker&lt;br /&gt;10 3 * * 0   /usr/lib/newsyslog&lt;br /&gt;15 3 * * 0 /usr/lib/fs/nfs/nfsfind&lt;br /&gt;1 2 * * * [ -x /usr/sbin/rtc ] &amp;&amp; /usr/sbin/rtc -c &gt; /dev/null 2&gt;&amp;1&lt;br /&gt;30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] &amp;&amp; /usr/lib/gss/gsscred_clean&lt;br /&gt;42  18 * * * /dbbackup/erverbackup.sh&lt;br /&gt;root@sun-jwgl # crontab -e   18 * * * /dbbackup/erverbackup.sh&lt;br /&gt;&lt;br /&gt;一切搞定,哈哈&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-2402073419213507124?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/2402073419213507124/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=2402073419213507124' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2402073419213507124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/2402073419213507124'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/sunos-oracle.html' title='sunos 下的oracle自动备份'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4996491596008381825</id><published>2007-03-13T10:32:00.001+08:00</published><updated>2007-03-13T10:32:31.603+08:00</updated><title type='text'>我最喜欢的学校Berkeley</title><content type='html'>从一接触FreeBSD,看到那个可爱的daemon我就喜欢上它,慢慢的我发现BSD的好处了,也让我深深的想了解他的老祖宗那个叫做IT宗教的地方,UC BerKeley,呵呵,http://www.berkeley.edu/今天看到,真是一个N牛的学校,看一下它的honors&amp;Awards,更晕啊,NOBEL就拿了七次,不过,我数一一下,三次经济三次物理一次化学,我喜欢的计算机好像没有,呵呵,不过,看看其它的也感觉到个学校的牛了,希望有生之年能去看看这个学校.找到几张校图,http://www.berkeley.edu/webcams/gallery.html 很不错耶!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4996491596008381825?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4996491596008381825/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4996491596008381825' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4996491596008381825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4996491596008381825'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/berkeley.html' title='我最喜欢的学校Berkeley'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-6675636169521505305</id><published>2007-03-13T10:31:00.002+08:00</published><updated>2007-03-13T10:32:08.892+08:00</updated><title type='text'>linux下用CP的方法做备份</title><content type='html'>刚刚做完了ORACLE的备份,想想还有我们可爱的网关数据啊,呵呵,这么既然有老虎了,我就画个猫吧,呵呵,这是crontab的用法:&lt;br /&gt;&lt;br /&gt;+---- minute&lt;br /&gt;          | +----- hour&lt;br /&gt;          | | +------ day of the month&lt;br /&gt;          | | | +------ month&lt;br /&gt;          | | | | +---- day of the week&lt;br /&gt;          | | | | | +-- command to execute&lt;br /&gt;          | | | | | |&lt;br /&gt;         34 3 * * * /home/backups/remote_db_backup.sh&lt;br /&gt;&lt;br /&gt;方法步骤1:先建立一个放脚本的目录:/root/srunbackup/&lt;br /&gt;&lt;br /&gt;#vi srunbackup&lt;br /&gt;&lt;br /&gt;#! /bin/bash&lt;br /&gt;#powered by leihuan&lt;br /&gt;#2004-10-22&lt;br /&gt;&lt;br /&gt;BackupPath=/data/backup/&lt;br /&gt;DBPath=/data/&lt;br /&gt;SourceFile="$DBPath"dbcharge.gdb&lt;br /&gt;NewFile="$BackupPath"dbcharge$(date +%Y%m%d).bak&lt;br /&gt;cp $SourceFile $NewFile&lt;br /&gt;&lt;br /&gt;保存退出&lt;br /&gt;&lt;br /&gt;第二步 &lt;br /&gt;&lt;br /&gt;#chmod +x srunbackup.sh&lt;br /&gt;&lt;br /&gt;#./srunbackup.sh &lt;br /&gt;&lt;br /&gt; 试用一下,没错&lt;br /&gt;&lt;br /&gt;第二步就是用最上面的方法加入crontab了,&lt;br /&gt;&lt;br /&gt;#crontab -e&lt;br /&gt;&lt;br /&gt;50 23 * * * /root/srunbackup/srunbackup.sh&lt;br /&gt;&lt;br /&gt;用法跟VI的用法一样的(实际上就用vi来编辑crontab一个运行计划的文本文件而已.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-6675636169521505305?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/6675636169521505305/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=6675636169521505305' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6675636169521505305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6675636169521505305'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/linuxcp.html' title='linux下用CP的方法做备份'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-764943266239172560</id><published>2007-03-13T10:31:00.001+08:00</published><updated>2007-03-13T10:31:36.150+08:00</updated><title type='text'>Platform limit of 64 STP 问题解决</title><content type='html'>今天在学校的主交换加了一个VLAN 127,到接入层把TRUNK设好,接入层的交换机是SW -C2950T-24的,把其中一个端口加到VLAN 127,出现了一个错误:01:21:41: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet0/6, changed state to down&lt;br /&gt;01:21:45: %SPANTREE_VLAN_SW-2-MAX_INSTANCE: Platform limit of 64 STP instances exceeded. No instance created for VLAN127 (port Fa0/6).,查找了一下www.CISCO.com上的资料,看到资料也就想起了以前学CHINAITLAB中的CCNA中的教学部分,呵呵,一个命令搞定: no spanning-tree vlan127 ,原理嘛,还是自己看书比较好,生成树协议.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-764943266239172560?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/764943266239172560/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=764943266239172560' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/764943266239172560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/764943266239172560'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/platform-limit-of-64-stp.html' title='Platform limit of 64 STP 问题解决'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5204179975050926511</id><published>2007-03-13T10:30:00.004+08:00</published><updated>2007-03-13T10:31:08.585+08:00</updated><title type='text'>Cisco ACL Template - Border Ro</title><content type='html'>Following is a basic access control list (using Cisco ACL syntax) template for use on a border router that is positioned between your local site and the Internet. I recommend you implement an ACL of this type to filter all inbound traffic from the Internet. Please be sure to review RFC1918, RFC2196, RFC2827, and RFC3013 when planning your network security policies. A current list of the bogons is maintained by Rob Thomas who also maintains a full IOS template here. &lt;br /&gt;&lt;br /&gt;remark *** bogons (bogus outside networks)&lt;br /&gt;deny ip 0.0.0.0 1.255.255.255 any log-input&lt;br /&gt;deny ip 2.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 5.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 7.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 10.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 23.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 27.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 31.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 36.0.0.0 1.255.255.255 any log-input&lt;br /&gt;deny ip 39.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 41.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 42.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 49.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 50.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 58.0.0.0 1.255.255.255 any log-input&lt;br /&gt;deny ip 60.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 70.0.0.0 1.255.255.255 any log-input&lt;br /&gt;deny ip 72.0.0.0 7.255.255.255 any log-input&lt;br /&gt;deny ip 82.0.0.0 1.255.255.255 any log-input&lt;br /&gt;deny ip 84.0.0.0 3.255.255.255 any log-input&lt;br /&gt;deny ip 88.0.0.0 7.255.255.255 any log-input&lt;br /&gt;deny ip 96.0.0.0 31.255.255.255 any log-input&lt;br /&gt;deny ip 169.254.0.0 0.0.255.255 any log-input&lt;br /&gt;deny ip 172.16.0.0 0.15.255.255 any log-input&lt;br /&gt;deny ip 192.0.2.0 0.0.0.255 any log-input&lt;br /&gt;deny ip 192.168.0.0 0.0.255.255 any log-input&lt;br /&gt;deny ip 197.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 198.18.0.0 0.1.255.255 any log-input&lt;br /&gt;deny ip 201.0.0.0 0.255.255.255 any log-input&lt;br /&gt;deny ip 222.0.0.0 1.255.255.255 any log-input&lt;br /&gt;deny ip 224.0.0.0 31.255.255.255 any log-input&lt;br /&gt;remark *** protocols&lt;br /&gt;remark *** legacy small services no longer used&lt;br /&gt;deny tcp any any range 0 19 log-input&lt;br /&gt;deny udp any any range 0 19 log-input&lt;br /&gt;remark *** snmp&lt;br /&gt;deny tcp any any range 161 162 log-input&lt;br /&gt;deny udp any any range 161 162 log-input&lt;br /&gt;deny tcp any any eq 199 log-input&lt;br /&gt;deny udp any any eq 199 log-input&lt;br /&gt;deny tcp any any eq 391 log-input&lt;br /&gt;deny udp any any eq 391 log-input&lt;br /&gt;deny tcp any any eq 705 log-input&lt;br /&gt;deny udp any any eq 705 log-input&lt;br /&gt;deny tcp any any eq 1993 log-input&lt;br /&gt;deny udp any any eq 1993 log-input&lt;br /&gt;remark *** lan-only dhcp and tftp&lt;br /&gt;deny udp any any range 67 69 log-input&lt;br /&gt;deny tcp any any range 67 69 log-input&lt;br /&gt;remark *** microsoft netbios&lt;br /&gt;deny tcp any any range 135 139 log-input&lt;br /&gt;deny udp any any range 135 139 log-input&lt;br /&gt;deny tcp any any eq 445 log-input&lt;br /&gt;deny udp any any eq 445 log-input&lt;br /&gt;remark *** unix rpc&lt;br /&gt;deny tcp any any eq 111 log-input&lt;br /&gt;deny udp any any eq 111 log-input&lt;br /&gt;remark *** lan-only unix services&lt;br /&gt;deny tcp any any range 511 515 log-input&lt;br /&gt;deny udp any any range 511 515 log-input&lt;br /&gt;remark *** ircd&lt;br /&gt;deny tcp any any eq 6667 log-input&lt;br /&gt;deny udp any any eq 6667 log-input&lt;br /&gt;remark *** icmp fragments&lt;br /&gt;deny icmp any any fragments log-input&lt;br /&gt;remark *** inbound ping&lt;br /&gt;permit icmp any any echo&lt;br /&gt;remark *** inbound ping response&lt;br /&gt;permit icmp any any echo-reply&lt;br /&gt;remark *** path MTU to function&lt;br /&gt;permit icmp any any packet-too-big&lt;br /&gt;remark *** flow control&lt;br /&gt;permit icmp any any source-quench&lt;br /&gt;remark *** time exceeded messages for traceroute and loops&lt;br /&gt;permit icmp any any time-exceeded&lt;br /&gt;remark *** block all other ICMP packets&lt;br /&gt;deny icmp any any log-input&lt;br /&gt;remark *** permit everything else&lt;br /&gt;permit ip any any&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5204179975050926511?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5204179975050926511/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5204179975050926511' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5204179975050926511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5204179975050926511'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/cisco-acl-template-border-ro.html' title='Cisco ACL Template - Border Ro'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5177448460257662051</id><published>2007-03-13T10:30:00.003+08:00</published><updated>2007-03-13T10:30:38.552+08:00</updated><title type='text'>ACL允许DHCP</title><content type='html'>真是晕啊,昨天晚上加班搞到十一点,图书馆说要让一部份机器只能上内网,不能上外网,我原来以为是很SIMPLY的事情,没想到,搞到后来,ACL是有用的,但是DHCP却不能获得IP地址,没了IP地址怎么用ACL啊,呵呵,想想以前我做实验的时候好像行的吗?呵呵,忽然想起来了,我以前做的实验都是在已经DHCP获得地址的情况下运用ACL的,所以正常的说,&lt;br /&gt;&lt;br /&gt;access-list 102 permit tcp any 192.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit udp any 192.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit tcp any 172.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit udp any 172.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit igmp any any&lt;br /&gt;access-list 102 permit icmp any any&lt;br /&gt;access-list 102 deny ip any any&lt;br /&gt;&lt;br /&gt;最后一句access-list 102 deny ip any any&lt;br /&gt;&lt;br /&gt;把DHCP给做掉了,当时一想到这个问题,也晕了,DHCP到底用的是什么,我以前在TCP/IP三卷中是看到过,但现在给记了,真是晕啊,后来找到了下面的标准模块,呵呵,看到REMARK的DHCP,呵呵,就把上面的DHCP给改了&lt;br /&gt;&lt;br /&gt;access-list 102 permit tcp any 192.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit udp any 192.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit tcp any 172.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit udp any 172.0.0.0 0.255.255.255&lt;br /&gt;access-list 102 permit udp any any range 67 69 &lt;br /&gt;access-list 102 permit tcp any any range 67 69 &lt;br /&gt;access-list 102 permit igmp any any&lt;br /&gt;access-list 102 permit icmp any any&lt;br /&gt;access-list 102 deny ip any any&lt;br /&gt;一切运行正常后,才敢回家,呵呵, &lt;br /&gt;&lt;br /&gt;上面的事情给我一个教训:做事情不能想当然,要仔细&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5177448460257662051?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5177448460257662051/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5177448460257662051' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5177448460257662051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5177448460257662051'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/acldhcp.html' title='ACL允许DHCP'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-6306438850450133845</id><published>2007-03-13T10:30:00.001+08:00</published><updated>2007-03-13T10:30:15.985+08:00</updated><title type='text'>最常用的端口</title><content type='html'>Service Port &lt;br /&gt;FTP 20,21 &lt;br /&gt;SSH 22 &lt;br /&gt;telnet 23 &lt;br /&gt;SMTP 25 &lt;br /&gt;DNS 53 &lt;br /&gt;DHCP 67,68 &lt;br /&gt;TFTP 69 &lt;br /&gt;HTTP 80 &lt;br /&gt;POP3 110 &lt;br /&gt;NNTP 119 &lt;br /&gt;NTP 123 &lt;br /&gt;IMAP4 143 &lt;br /&gt;LDAP 389 &lt;br /&gt;HTTPS 443 &lt;br /&gt;IMAPS 993 &lt;br /&gt;RADIUS 1812 &lt;br /&gt;AIM 5190 &lt;br /&gt;&lt;br /&gt;最常用的端口&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-6306438850450133845?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/6306438850450133845/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=6306438850450133845' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6306438850450133845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/6306438850450133845'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_3385.html' title='最常用的端口'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4407641569152122962</id><published>2007-03-13T10:29:00.003+08:00</published><updated>2007-03-13T10:29:56.394+08:00</updated><title type='text'>windows改变机器本身的路由</title><content type='html'>我的机器有两块网卡,一块是千M的,一块是百M的,千M的联在内网,百M的联在外网,本时用的时候都是用外网的机器上网的.但是如果要进行管理和一些特殊的需要的时候,我就要用到内网的网卡进行联接了,可是现在问题有了,除非平时禁用内网,要不然机器总是先从内网的网卡进行上网.这样的网速大受影响.我知道是路由的问题,后来到运行---cmd --route print&lt;br /&gt;&lt;br /&gt;Active Routes:&lt;br /&gt;Network Destination        Netmask          Gateway       Interface  Metric&lt;br /&gt;          0.0.0.0          0.0.0.0      61.153.52.1    61.153.52.81       20&lt;br /&gt;          0.0.0.0          0.0.0.0       172.20.7.1     172.20.7.80       10&lt;br /&gt;      61.153.52.0  255.255.255.128     61.153.52.81    61.153.52.81       20&lt;br /&gt;     61.153.52.81  255.255.255.255        127.0.0.1       127.0.0.1       20&lt;br /&gt;   61.255.255.255  255.255.255.255     61.153.52.81    61.153.52.81       20&lt;br /&gt;        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1&lt;br /&gt;       172.20.7.0    255.255.255.0      172.20.7.80     172.20.7.80       10&lt;br /&gt;      172.20.7.80  255.255.255.255        127.0.0.1       127.0.0.1       10&lt;br /&gt;   172.20.255.255  255.255.255.255      172.20.7.80     172.20.7.80       10&lt;br /&gt;  218.168.201.121  255.255.255.255      61.153.52.1    61.153.52.81       20&lt;br /&gt;   221.219.29.168  255.255.255.255      61.153.52.1    61.153.52.81       20&lt;br /&gt;        224.0.0.0        240.0.0.0     61.153.52.81    61.153.52.81       20&lt;br /&gt;        224.0.0.0        240.0.0.0      172.20.7.80     172.20.7.80       10&lt;br /&gt;  255.255.255.255  255.255.255.255     61.153.52.81    61.153.52.81       1&lt;br /&gt;  255.255.255.255  255.255.255.255      172.20.7.80     172.20.7.80       1&lt;br /&gt;Default Gateway:       61.153.52.1&lt;br /&gt;===========================================================================&lt;br /&gt;Persistent Routes:&lt;br /&gt;&lt;br /&gt;0&lt;br /&gt;&lt;br /&gt;由于千M的网卡快,所以机器就默认用这块网卡进行上网了,所以把默认路由的METRIC设成了20,百M的设成了10,所以要先删除现在的一条路由,然后把61的那条METRIC改小就可以了.&lt;br /&gt;&lt;br /&gt;C:\WINDOWS&gt;route delete 0.0.0.0 Mask 0.0.0.0 61.153.52.1&lt;br /&gt;&lt;br /&gt;C:\WINDOWS&gt;route -p add 0.0.0.0 Mask 0.0.0.0 61.153.52.1 metric 2&lt;br /&gt;&lt;br /&gt;C:\WINDOWS&gt;route print&lt;br /&gt;===========================================================================&lt;br /&gt;Interface List&lt;br /&gt;0x1 ........................... MS TCP Loopback interface&lt;br /&gt;0x10003 ...00 a0 c9 e7 6e 6d ...... Intel(R) PRO/100+ PCI Adapter&lt;br /&gt;0x30004 ...00 08 74 12 c3 50 ...... Intel(R) PRO/1000 MT Network Connection&lt;br /&gt;===========================================================================&lt;br /&gt;===========================================================================&lt;br /&gt;Active Routes:&lt;br /&gt;Network Destination        Netmask          Gateway       Interface  Metric&lt;br /&gt;          0.0.0.0          0.0.0.0      61.153.52.1    61.153.52.81       2&lt;br /&gt;          0.0.0.0          0.0.0.0       172.20.7.1     172.20.7.80       10&lt;br /&gt;      61.153.52.0  255.255.255.128     61.153.52.81    61.153.52.81       20&lt;br /&gt;     61.153.52.81  255.255.255.255        127.0.0.1       127.0.0.1       20&lt;br /&gt;   61.255.255.255  255.255.255.255     61.153.52.81    61.153.52.81       20&lt;br /&gt;        127.0.0.0        255.0.0.0        127.0.0.1       127.0.0.1       1&lt;br /&gt;       172.20.7.0    255.255.255.0      172.20.7.80     172.20.7.80       10&lt;br /&gt;      172.20.7.80  255.255.255.255        127.0.0.1       127.0.0.1       10&lt;br /&gt;   172.20.255.255  255.255.255.255      172.20.7.80     172.20.7.80       10&lt;br /&gt;  218.168.201.121  255.255.255.255      61.153.52.1    61.153.52.81       20&lt;br /&gt;   221.219.29.168  255.255.255.255      61.153.52.1    61.153.52.81       20&lt;br /&gt;        224.0.0.0        240.0.0.0     61.153.52.81    61.153.52.81       20&lt;br /&gt;        224.0.0.0        240.0.0.0      172.20.7.80     172.20.7.80       10&lt;br /&gt;  255.255.255.255  255.255.255.255     61.153.52.81    61.153.52.81       1&lt;br /&gt;  255.255.255.255  255.255.255.255      172.20.7.80     172.20.7.80       1&lt;br /&gt;Default Gateway:       61.153.52.1&lt;br /&gt;===========================================================================&lt;br /&gt;Persistent Routes:&lt;br /&gt;  Network Address          Netmask  Gateway Address  Metric&lt;br /&gt;          0.0.0.0          0.0.0.0      61.153.52.1       2&lt;br /&gt;&lt;br /&gt;C:\&gt;route -p add 172.0.0.0 mask 255.0.0.0 172.20.7.1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4407641569152122962?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4407641569152122962/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4407641569152122962' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4407641569152122962'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4407641569152122962'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/windows.html' title='windows改变机器本身的路由'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-8854348967060178039</id><published>2007-03-13T10:29:00.001+08:00</published><updated>2007-03-13T10:29:39.557+08:00</updated><title type='text'>封电骡和BT都可以的写法</title><content type='html'>刚刚做了一个电驴和BT的,只是可惜对于EMULE,虽然国外的BBS上说EDONKEY最新version2.0的包括了emule,可我实验了一下,不行,只能对edonkey本身有用.&lt;br /&gt;ip nbar pdlm bittorrent.pdlm&lt;br /&gt;ip nbar pdlm eDonkey.pdlm&lt;br /&gt;&lt;br /&gt; class-map match-any bittorrent&lt;br /&gt;  match protocol bittorrent&lt;br /&gt;  match protocol edonkey&lt;br /&gt;!&lt;br /&gt;!&lt;br /&gt; policy-map bittorrent-policy&lt;br /&gt;  class bittorrent&lt;br /&gt;   drop&lt;br /&gt;!&lt;br /&gt;&lt;br /&gt;是match-any 不是用match-all&lt;br /&gt;&lt;br /&gt;match-all Logical-AND all matching statements under this classmap&lt;br /&gt;match-any Logical-OR all matching statements under this classmap&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-8854348967060178039?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/8854348967060178039/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=8854348967060178039' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8854348967060178039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8854348967060178039'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/bt_12.html' title='封电骡和BT都可以的写法'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-8806004688521016360</id><published>2007-03-13T10:28:00.002+08:00</published><updated>2007-03-13T10:29:11.647+08:00</updated><title type='text'>封emule还不行</title><content type='html'>刚刚做了一个电驴和BT的,只是可惜对于EMULE,虽然国外的BBS上说EDONKEY最新version2.0的包括了emule,可我实验了一下,不行,只能对edonkey本身有用.&lt;br /&gt;ip nbar pdlm bittorrent.pdlm&lt;br /&gt;ip nbar pdlm eDonkey.pdlm&lt;br /&gt;&lt;br /&gt; class-map match-all bittorrent&lt;br /&gt;  match protocol bittorrent&lt;br /&gt;  match protocol edonkey&lt;br /&gt;!&lt;br /&gt;!&lt;br /&gt; policy-map bittorrent-policy&lt;br /&gt;  class bittorrent&lt;br /&gt;   drop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-8806004688521016360?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/8806004688521016360/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=8806004688521016360' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8806004688521016360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/8806004688521016360'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/emule.html' title='封emule还不行'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4455298905402914082</id><published>2007-03-13T10:28:00.001+08:00</published><updated>2007-03-13T10:28:50.666+08:00</updated><title type='text'>在路由器封BT方法大全</title><content type='html'>最近为了封BT，几乎把NBO的网络论坛找遍了，呵呵，实验了几种方法，得出几个结论（说实话，也就是把网上的方法总结小小一把），&lt;br /&gt;第一是常用的封端口的方法：&lt;br /&gt;呵呵，常用的命令如下：&lt;br /&gt;&lt;br /&gt;1限速∶&lt;br /&gt;access-list 102 permit tcp any any range 6881 6890&lt;br /&gt;access-list 102 permit tcp any range 6881 6890 any&lt;br /&gt;access-list 102 deny ip any any&lt;br /&gt;&lt;br /&gt;rate-limit input access-group 102 712000 8000 8000 conform-action transmit exceed-action drop&lt;br /&gt;rate-limit output access-group 102 712000 8000 8000 conform-action transmit exceed-action drop&lt;br /&gt;&lt;br /&gt;2禁止∶&lt;br /&gt;access-list 102 deny tcp any any range 6881 6890 &lt;br /&gt;access-list 102 deny tcp any range 6881 6890 any&lt;br /&gt;access-list 102 permit ip any any&lt;br /&gt;&lt;br /&gt;这种方法有其局限性，一是现在有的bt软件，再封锁后会自动改端口二是我仔细研究过好几个BT下载软件，它们现在的announce端口现在已经用8000、8080的说，如果连这个也封，那网络使用就有可能不正常（我这样做过，呵呵，后来N多人打电话找我，吓得我马上DEL掉了）&lt;br /&gt;&lt;br /&gt;第二种方法:就是用NBAR (Network-Based Application Recognition)网络应用识别&lt;br /&gt;NBAR是一种动态能在四到七层寻找协议的技术,它不但能做到普通ACL能做到那样控制静态的TCP UDP的报,也能做到控制一般ACLs不能做到动态的端口的那些协议(如BT)之类.&lt;br /&gt;NBAR包含了一种叫做发现特征的协议(a Protocol Discovery feature ),用它可以轻易发现那些不能传输过程中的应用协议,它能端口上做到进出流量统计\流速统计,最重要的它还有一种叫做&lt;br /&gt;An external Packet Description Language Module (PDLM)的文件用来扩展NBAR识别的协议。（具体我也翻译不出来，只看了个大概），&lt;br /&gt;我就说说过程：&lt;br /&gt;1到http://www.cisco.com/pcgi-bin/tablebuild.pl/pdlm 下载bittorrent.pdlm，（要CCO的）&lt;br /&gt;2放到TFTP，然后用copy tftp disk2(大多数应该是flash)&lt;br /&gt;拷到路由器中，&lt;br /&gt;route7206#conf t&lt;br /&gt;Enter configuration commands, one per line. End with CNTL/Z.&lt;br /&gt;route7206(config)#ip nbar pdlm bittorrent.pdlm &lt;br /&gt;route7206(config)#&lt;br /&gt;&lt;br /&gt;!&lt;br /&gt;ip nbar pdlm bittorrent.pdlm&lt;br /&gt;!&lt;br /&gt;&lt;br /&gt;1.) 创建一个 a class-map and policy map 并且把它应用到相应的端口:&lt;br /&gt;&lt;br /&gt;route7206(config)#ip nbar &lt;br /&gt;route7206(config)#ip nbar pd&lt;br /&gt;route7206(config)#ip nbar pdlm bitt&lt;br /&gt;route7206(config)#ip nbar pdlm bittorrent.pdlm&lt;br /&gt;route7206(config)#class-map match-all bittorrent&lt;br /&gt;route7206(config-cmap)#match proto&lt;br /&gt;route7206(config-cmap)#match protocol bittorrent&lt;br /&gt;route7206(config-cmap)#polic&lt;br /&gt;route7206(config-cmap)#policy-map bittorrent-policy&lt;br /&gt;route7206(config-pmap)#class bittorrent&lt;br /&gt;route7206(config-pmap-c)#drop&lt;br /&gt;route7206(config-pmap-c)#exit&lt;br /&gt;route7206(config-pmap)#exit&lt;br /&gt;route7206(config)#interface GigabitEthernet0/2&lt;br /&gt;route7206(config-if)#servi&lt;br /&gt;route7206(config-if)#service-policy input bi&lt;br /&gt;route7206(config-if)#service-policy input bittoreent-policy&lt;br /&gt;% policy map bittoreent-policy not configured&lt;br /&gt;route7206(config-if)#service-policy input bittorrent-policy&lt;br /&gt;route7206(config-if)#service-policy output bittorrent-policy&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#show runn&lt;br /&gt;得到关于BT的部分是&lt;br /&gt;class-map match-all bittorrent&lt;br /&gt;  match protocol bittorrent&lt;br /&gt;!&lt;br /&gt;!&lt;br /&gt; policy-map bittorrent-policy&lt;br /&gt;  class bittorrent&lt;br /&gt;   drop&lt;br /&gt;!         &lt;br /&gt;interface GigabitEthernet0/2&lt;br /&gt; description CONNECT INSIDE&lt;br /&gt; ip address 192.168.168.1 255.255.255.252 secondary&lt;br /&gt; ip address 192.168.21.1 255.255.255.0&lt;br /&gt; ip nat inside&lt;br /&gt; [B]service-policy input bittorrent-policy&lt;br /&gt; service-policy output bittorrent-policy[/B]&lt;br /&gt; duplex full&lt;br /&gt; speed 1000&lt;br /&gt; media-type rj45&lt;br /&gt; no negotiation auto&lt;br /&gt;&lt;br /&gt; 我实验了一下，这样的话，BT就不能下载，呵呵&lt;br /&gt; 感觉目前这样的技术比较好，我正在实验去掉EMULE的方法，&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4455298905402914082?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4455298905402914082/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4455298905402914082' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4455298905402914082'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4455298905402914082'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/bt.html' title='在路由器封BT方法大全'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4885208905001585194</id><published>2007-03-13T10:27:00.002+08:00</published><updated>2007-03-13T10:28:09.256+08:00</updated><title type='text'>用acl来防止一般的网络发包病毒</title><content type='html'>这几天主交换机CPU负载一直都很高,100%,领导电话打个不停,由于忙着论文的事情,所以也一直没有好好做这个事情.今天早上,一早就来了,GOOGLE一把,然后做了一个ACL:&lt;br /&gt;&lt;br /&gt;deny tcp any any eq echo&lt;br /&gt;    deny tcp any any eq chargen&lt;br /&gt;    deny tcp any any eq 135 (3467 matches)&lt;br /&gt;    deny tcp any any eq 136&lt;br /&gt;    deny tcp any any eq 137&lt;br /&gt;    deny tcp any any eq 138&lt;br /&gt;    deny tcp any any eq 139 (3322 matches)&lt;br /&gt;    deny tcp any any eq 389&lt;br /&gt;    deny tcp any any eq 445 (302741 matches)&lt;br /&gt;    deny tcp any any eq 4444&lt;br /&gt;    deny tcp any any eq 6655 (15 matches)&lt;br /&gt;    deny udp any any eq tftp&lt;br /&gt;    deny udp any any eq 135&lt;br /&gt;    deny udp any any eq 136&lt;br /&gt;    deny udp any any eq netbios-ns (5253 matches)&lt;br /&gt;    deny udp any any eq netbios-dgm (882 matches)&lt;br /&gt;    deny udp any any eq netbios-ss&lt;br /&gt;    deny udp any any eq 389&lt;br /&gt;    deny udp any any eq 445&lt;br /&gt;    deny udp any any eq 1434&lt;br /&gt;    deny udp any any eq 1433&lt;br /&gt;    deny icmp any any (539 matches)&lt;br /&gt;    permit ip any any (3168057 matches)&lt;br /&gt;&lt;br /&gt;看样子基本上是发445的包比较多,呵呵,现在主交换CPU负载已经下到10%了,网络病毒包真是恐怖的说.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4885208905001585194?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4885208905001585194/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4885208905001585194' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4885208905001585194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4885208905001585194'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/acl.html' title='用acl来防止一般的网络发包病毒'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-7315511152017026934</id><published>2007-03-13T10:27:00.001+08:00</published><updated>2007-03-13T10:27:43.322+08:00</updated><title type='text'>在登陆脚本文件中来给用户安装打印机</title><content type='html'>在登陆脚本文件中来给用户安装打印机 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;举例来说 &lt;br /&gt;我就有一台网络打印机.服务器名字叫F1_SRV01,打印机名字叫2a_PRT01 &lt;br /&gt;在命令行中输入: &lt;br /&gt;代码:&lt;br /&gt;&lt;br /&gt;rundll32 printui.dll,PrintUIEntry /ga /n\\f1srv01\2A_PRT01    (区分大小写的) &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;回车就可以了 &lt;br /&gt;&lt;br /&gt;下次用户重新登陆就已经添加到打印机列表里了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-7315511152017026934?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/7315511152017026934/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=7315511152017026934' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7315511152017026934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/7315511152017026934'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/blog-post_5562.html' title='在登陆脚本文件中来给用户安装打印机'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-3227995410202277244</id><published>2007-03-13T10:24:00.000+08:00</published><updated>2007-03-13T10:27:17.681+08:00</updated><title type='text'>如何在WEB服务器中禁用不必要的组件.</title><content type='html'>我们单位每个部门都有自己的网站,然后通过一个总管来上传,现在出现一个新问题,有的同志偷偷的把带有上传功能的ASP网页夹在部门网页中通过总管的FTP上传上来,然后再上传cmd.exe rar.exe和一些带解压的网页,就可以做到1、想传什么就自己上传什么。不再通过FTP了。2、自己可以在IIS下通过RAR解压来创建新的文件夹。可想想其实每一步都很合理，加在一起就不合法了。&lt;br /&gt;想了很久,找了很多方法最后总结了一个比较成功的方法.&lt;br /&gt;在基于windows平台上的WEB服务器可以能过以下方法达到完全禁用或者部分禁用组件来实现IIS的安全性.第一种:修改组件的Progid的值，在ASP里调用组件的方式通常是 Set 对象名=Server. CreateObject("Progid")，这时候我们就可以通过修改注册表中的Progid值从达 到禁用该组件的方法。在 开始-运行中敲入regedit,然后找到HKEY_CLASSES_ROO T\adodb.stream，这时候我们就可以更改该Progid的值了，如改 成adodb.stream8。这样在ASP页里就这样调用了： &lt;%@ Language=Vbscript%&gt; &lt;% Set Fs=Server.CreateObject("adodb.stream8") %&gt; (如果你前面没有调用过该组件的话，则无须重启，就可以看到效果了，否则请重 启后看效果。) 这时候我们看看还是用原来的调用方法的结果： &lt;%@ Language=Vbscript%&gt; &lt;% Set Fs=Server.CreateObject("adodb.stream") %&gt; 这时候的运行结果为： 服务器对象 错误 'ASP 0177 : 800401f3' Server.CreateObject 失败 /www/aa.asp, 行3 第二种方法:修改Clsid，除了CreateObject方法以 外，也可以使用一般的&lt;object&gt;标注建立一个组件，我们可以在ASP里面使用HTML的&lt;object&gt;标注，以便在网页中加入一个组件。方法是： &lt;object runat="server" id="fs1" scope="page" progid="adodb.streamt"&gt;&lt;/object&gt; Runat表示是在服务端执行，Scope表示组件的生命周期，可以选用Session,Appl ication或page(表示当前页面，也可缺省) 这种写法对我们没用，还有一种写法是: &lt;object runat="server" id="fs1" classid="clsid:clsidaa"&gt;&lt;/object&gt; 我们也可以通过修改该Clsid的值而禁用该组件，如将注册表中HKEY_CLASSES_RO OT\adodb.stream\CLSID的值0D43FE01-F093-11CF-8940-00A0C90 54228改成0D43FE01-F093-11CF-8940-00A0C9054229(改了最后面一位)，这时候的 写法为： &lt;object runat="server" id="fs1" scope="page" classid="clsid:0D43FE01-F093-11 CF-8940-00A0C9054229"&gt;&lt;/object&gt; 看运行结果，没问题，OK。这时候我们再用 &lt;object runat="server" id="fs1" scope="page" classid="clsid:0D43FE01-F093-11 CF-8940-00A0C9054228"&gt;&lt;/object&gt; 这时候就出错了。 这样的话,如果只是少量的网站管理员要用ASP的FSO或adodb.stream组件的话,我们可以把正确的proid和clsid告诉他,不过,据我现在看来用这两个组件很少,除非都有些心术不正的人.我现在用这种方法禁止了三个组件,一是fso 二是adodb.stream 三是WScript.Shell,呵呵,这样的话,如果再正常设置IIS,安全性就可以更高了.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-3227995410202277244?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/3227995410202277244/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=3227995410202277244' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3227995410202277244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/3227995410202277244'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/web.html' title='如何在WEB服务器中禁用不必要的组件.'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-5852889322180268069</id><published>2007-03-13T10:23:00.004+08:00</published><updated>2007-03-13T10:24:12.755+08:00</updated><title type='text'>Delete a Service</title><content type='html'>Normally it should not be necessary to manually delete a service. Uninstalling an application should remove its associated service (if any).&lt;br /&gt;However, should it be necessary to manually remove a service:&lt;br /&gt;Run Regedit or regedt32.&lt;br /&gt;Find the registry entry:&lt;br /&gt;HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services&lt;br /&gt;Find the service there and delete it.You may wish to look at the keys and see what files the service was using and perhaps delete them also.&lt;br /&gt;Note: You will have to reboot before the list gets updated in server manager&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-5852889322180268069?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/5852889322180268069/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=5852889322180268069' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5852889322180268069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/5852889322180268069'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/delete-service.html' title='Delete a Service'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-4240175770958081469</id><published>2007-03-13T10:23:00.003+08:00</published><updated>2007-03-13T10:23:41.168+08:00</updated><title type='text'>DNS server安装笔记</title><content type='html'>早上HP 的DNS SERVER坏了，没办法找了台PC救急，装了FreeBSD4.7，装了BIND。以前参考过一些文章是在Chinaunix上，现在就写下来，为了自己不会忘记，也为了给有用的兄弟用。安装FreeBSD是选择MINI加CUSTOM中VIM，一是我喜欢用VIM，二是这样的话就会安装 imake[主要为了编译安装新的BIND]机器名：dns.test.comIP地址配置好用/stand/sysinstall 中添加一个wheel组用户，这主要是为了SSH方便。[FB中好像默认不允许ROOT用户SSH登录]先用这个用户登录，然后再su一把。。。。。1下载bind9然后fetch下载最新的BIND，我是安装BIND 9.2.1.tar.gz包。放到/root 下面。[http://www.neweasier.com/software.html?class=2]2安装dns# cd /rootdns# tar zvxf bind-9.2.1.tar.gzdns# cd bind-9.2.1dns#./configure --enable-threadsdns#makedns#make install把BSD中默认安装的BIND8转换掉dns#mv /usr/sbin/named /usr/sbin/named.olddns#ln -fs /usr/local/sbin/named /usr/sbin/named进入/usr/local/sbin目录下执行：dns## ./rndc-confgen -a(此命令在/etc目录下将生成一个rndb.key文件)其他的需要修改的文件依次如下：/etc/resolv.conf**************************domain test.com /*你自己的要域名nameserver 127.0.0.1 /*告诉OS你自己是DNS servernameserver 192.168.20.9 /*这是自己用的第二DNS，最好设置成你的ISP的DNS IP*************************************/etc/namedb/named.conf /*有些没用的信息去掉了，选取一些*********************************options {directory "/etc/namedb"; /*指定配置文件所在目录*/forwarders {192.168.20.9; 不能解析时转发地址 };/*host { any; } { 可以做ACL的，不过我没用到topology {127.0.0.0/8;};};*/zone "." {type hint;file "named.root";};zone "0.0.127.IN-ADDR.ARPA" {type master;file "localhost.rev";};zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.INT" {type master;file "localhost-v6.rev";};zone "test.com" {type master;file "ss/test.com.zone";};zone "22.168.192.in-addr.arpa" {type master;file "ss/22.168.192.in-addr.arpa.zone";};**********************************************************/etc/rc.conf*******************************************************named_enable="YES" named_flags="-c /etc/namedb/named.conf"********************************************************dns# mkdir /etc/namedb/ssdns#chown bind:bind /etc/namedb/ssdns# chmod 750 /etc/namedb/ss/etc/named/ss/22.168.192.in-addr.arpa.zone反向解析文件***********************************************$TTL 86400@ IN SOA dns2.test.com. root.localhost (1 ; serial28800 ; refresh7200 ; retry604800 ; expire86400 ; ttk)@ IN NS dns2.test.com.10 IN PTR www.test.com.14 IN PTR mail.test.com.***********************************************/etc/named/ss/ test.com.zone正向解析文件****************************$TTL 86400@ IN SOA dns2.test.com. root.test.com (6 ; serial28800 ; refresh7200 ; retry604800 ; expire86400 ; ttl)@ IN MX 10 mail.test.com.www IN A 192.168.22.10netc IN A 192.168.22.15ftp.netc IN A 192.168.22.24elib IN A 192.168.22.41www.netc IN CNAME netc.test.com.****************************************************我把各种可能的运用都列出来，重启就告完成。ps:想要知道详细原理推荐用google和看DNS and bind这本书，很不错。用了半个小时写出来，很乱不好意思的说&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-4240175770958081469?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/4240175770958081469/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=4240175770958081469' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4240175770958081469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/4240175770958081469'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/dns-server.html' title='DNS server安装笔记'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-141473097656246309</id><published>2007-03-13T10:23:00.001+08:00</published><updated>2007-03-13T10:23:20.325+08:00</updated><title type='text'>IIS状态代码</title><content type='html'>每次想用的时候都找不到，今天去IIS老巢搜了一下，不敢独享&lt;br /&gt;HTTP1xx - 信息&lt;br /&gt;这些状态代码表示临时响应。客户端在收到常规响应之前，应准备接收一个或多个 1xx 响应。100 - 继续。 101 - 交换协议。 2xx - 成功&lt;br /&gt;此类代码表示服务器已成功接受客户端请求。&lt;br /&gt;200 - 确定。客户端请求已成功。 201 - 已创建。 202 - 已接受 203 - 非授权信息。 204 - 无内容。 205 - 重置内容。 206 - 部分内容。 3xx - 重定向&lt;br /&gt;客户端浏览器必须执行更多的操作才能完成请求。例如，浏览器必须请求服务器上的另一个 Web 页，或者使用代理服务器重复请求。&lt;br /&gt;300 - 多种选择。 301 - 已被永远移走。 302 - 已找到。 303 - 参见其他项。 304 - 未修改。 305 - 使用代理。 306 - 此代码已被保留但未被使用。 307 - 临时重定向。 4xx - 客户端错误&lt;br /&gt;发生错误，客户端出现错误。例如，客户端请求不存在的页面，客户端未提供有效的身份验证信息。&lt;br /&gt;400 - 请求错误。 401 - 访问被拒绝。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示：&lt;br /&gt;401.1 - 登录失败。 401.2 - 服务器配置导致登录失败。 401.3 - 资源上的 ACL 表明该操作未被授权。 401.4 - 筛选器授权失败。 401.5 - ISAPI/CGI 应用程序授权失败。IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 403 - 被禁止： IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因：&lt;br /&gt;403.1 - 执行访问被禁止。 403.2 - 读访问被禁止。 403.3 - 写访问被禁止。 403.4 - 需要 SSL。 403.5 - 需要 SSL 128。 403.6 - IP 地址被拒绝。 403.7 - 需要客户端证书。 403.8 - 站点访问被拒绝。 403.9 - 用户数过多。 403.10 - 配置无效。 403.11 - 密码更改。 403.12 - 拒绝访问映射表。 403.13 - 吊销客户端证书。 403.14 - 拒绝目录列表。 403.15 - 超出客户端访问许可证。 403.16 - 客户端证书不受信任或无效。 403.17 - 客户端证书已过期或尚未生效。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 404 - 未找到。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 404.1 - 未找到站点。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 405 - 不允许方法。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 406 - 不接受。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 407 - 要求进行代理身份验证。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 412 - 前提条件失败。 IIS 定义了许多不同的 401 错误，它们指明更为具体的错误原因。这些具体的错误代码在浏览器中显示，但不在 IIS 日志中显示： 414 - 请求的 URI 太长。5xx - 服务器错误&lt;br /&gt;服务器因遇到错误而无法完成请求。&lt;br /&gt;500 - 内部服务器错误。 500.12 - 应用程序正在重新启动。 500.13 - 服务器太忙。 500.15 - 不允许 GLOBAL.ASA 请求。 500-100.ASP - ASP 错误（注意，只有 IIS 5.0 会发出此代码）。 501 - 未实施。 502 - 网关错误。 503 - 服务不可用。 504 - 网关超时。 505 - HTTP 版本不受支持。 常见 HTTP 状态代码及其原因 200 - 成功。 此状态代码表示 IIS 已成功处理请求。 304 - 未修改。 客户端请求的文档位于客户端缓存中，文档自缓存以来尚未被修改过。客户端使用文档的缓存副本，而不从服务器下载文档。 401.1 - 登录失败 登录尝试不成功，很可能因为用户名或密码无效。 401.3 - 资源上的 ACL 导表明该操作未被授权。 它表示存在 NTFS 权限问题。即使您对尝试访问的文件具备相应的权限，也可能发生此错误。例如，如果 IUSR 帐户没有 C:\Winnt\System32\Inetsrv 目录的访问权限，将发生此错误。有关如何解决此问题的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 187506 List of NTFS Permissions Required for IIS Site to Work（IIS 站点工作时需要的 NTFS 权限的列表）&lt;br /&gt;403.1 - 执行访问被禁止。 出现此错误信息有以下两个主要原因： 没有足够的执行权限。例如，如果尝试访问的 ASP 页所在的目录权限设为"无"，或者，尝试执行的通用网关接口 (CGI) 脚本所在的目录权限为"只允许脚本"权限，将出现此错误信息。若要修改执行权限，请在 Microsoft 管理控制台 (MMC) 中用右键单击目录，然后依次单击属性、目录选项卡，确保为尝试访问的内容设置适当的执行权限。 您没有将尝试执行的文件类型的脚本映射设置为识别所使用的谓词（例如，GET 或 POST）。若要验证这一点，请在 MMC 中用右键单击目录，依次单击属性、目录选项卡、配置，然后验证相应文件类型的脚本映射是否设置为允许所使用的谓词。 403.2 - 读访问被禁止。 验证是否已将 IIS 设置为允许对目录进行读访问。此外，如果使用默认文档，验证该文档是否存在。有关如何解决此问题的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 247677 Error Message:403.2 Forbidden:Read Access Forbidden（错误信息：403.2 被禁止：读访问被禁止）&lt;br /&gt;403.3 - 写访问被禁止。 验证 IIS 权限和 NTFS 权限是否设置为允许对目录进行写访问。有关如何解决此问题的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 248072 Error Message:403.3 Forbidden:Write Access Forbidden（错误信息：403.3 被禁止：写访问被禁止）&lt;br /&gt;403.4 - 需要 SSL。禁用需要安全通道选项，或使用 HTTPS（而不使用 HTTP）访问页面。如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章：224389 Err Msg:HTTP Error 403, 403.4, 403.5 Forbidden:SSL Required（错误信息：HTTP 错误 403、403.4、403.5 被禁止：需要 SSL）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 403.5 - 需要 SSL 128。禁用需要 128 位加密选项，或使用支持 128 位加密的浏览器查看页面。如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章：224389 Err Msg:HTTP Error 403, 403.4, 403.5 Forbidden:SSL Required（错误信息：HTTP 错误 403、403.4、403.5 被禁止：需要 SSL）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 403.6 - IP 地址被拒绝。 您已配置服务器，使其拒绝对当前 IP 地址的访问。有关如何解决此问题的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 248043 Error Message:403.6 - Forbidden:IP 地址被拒绝&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 403.7 - 需要客户端证书。 您已配置服务器，要求提供客户端身份验证的证书，但没有安装有效的客户端证书。 有关其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 190004 Error 403.7 or &amp;apos;Connection to Server Could Not Be Established&amp;apos;（错误 403.7 或"无法与服务器建立连接"）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 403.8 - 站点访问被拒绝。 您已经为用于访问服务器的域设置了域名限制。有关如何解决此问题的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 248032 Error Message:Forbidden:Site Access Denied 403.8（错误信息：被禁止：站点访问被拒绝 403.8）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 403.9 - 用户数过多。 连接到服务器的用户数量超出了您设置的连接限制。有关更改此限制的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 248074 Error Message:Access Forbidden:Too Many Users Are Connected 403.9（错误信息：访问被禁止：连接到 403.9 的用户数过多）&lt;br /&gt;备注：Microsoft Windows 2000 Professional 和 Microsoft Windows XP Professional 对 IIS 自动应用 10 个连接的限制。您无法更改此限制。 如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 403.12 - 拒绝访问映射表。 您要访问的页面要求提供客户端证书，但映射到客户端证书的用户 ID 已被拒绝访问该文件。有关其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 248075 Error:HTTP 403.12 - Access Forbidden:Mapper Denied Access（错误：HTTP 403.12 - 访问被禁止：拒绝访问映射表）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 404 - 未找到。 发生此错误的原因是您尝试访问的文件已被移走或删除。如果在安装 URLScan 工具之后，尝试访问带有有限扩展名的文件，也会发生此错误。这种情况下，该请求的日志文件项中将出现"Rejected by URLScan"的字样。 如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 500 - 内部服务器错误。 多种服务器端的错误都可能导致该错误信息。事件查看器日志包含更详细的错误原因。此外，您可以禁用友好的 HTTP 错误消息，这样就能看到更详细的错误说明。 有关如何禁用友好的 HTTP 错误信息的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 294807 HOWTO:Disable Internet Explorer 5 &amp;apos;Show Friendly HTTP Error Messages&amp;apos; Feature on the Server Side（在服务器端禁用 Internet Explorer 5 的"显示友好 HTTP 错误信息"功能）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 500.12 - 应用程序正在重新启动。 它表示您在 IIS 重新启动应用程序时尝试加载 ASP 页。刷新页面后，此信息即会消失。如果刷新页面后，此信息再次出现，可能是防病毒软件软件正在扫描 Global.asa 文件。有关其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 248013 Err Msg:HTTP Error 500-12 Application Restarting（错误信息：HTTP 错误 500-12 应用程序正在重新启动）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 500-100.ASP - ASP error. 如果尝试加载的 ASP 页中含有错误代码，将出现此错误信息。若要获得更确切的错误信息，请禁用友好 HTTP 错误信息。默认情况下，只有默认 Web 站点会出现此错误。有关如何在默认 Web 站点以外的其他站点查看此错误的其他信息，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 261200 HTTP 500 Error Message Displays Instead of ASP Error Message from 500-100.asp（500-100.asp 显示 500 错误信息而不显示 ASP 错误信息）&lt;br /&gt;如果没有安装证书的 Web 站点出现此错误，请单击下面的文章编号，查看 Microsoft 知识库中的文章： 502 - 网关错误。 如果尝试运行的 CGI 脚本不返回有效的 HTTP 标头集，将出现此错误信息。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6939442-141473097656246309?l=hzleihuan.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hzleihuan.blogspot.com/feeds/141473097656246309/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6939442&amp;postID=141473097656246309' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/141473097656246309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6939442/posts/default/141473097656246309'/><link rel='alternate' type='text/html' href='http://hzleihuan.blogspot.com/2007/03/iis.html' title='IIS状态代码'/><author><name>天天</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6939442.post-8130789774843590264</id><published>2007-03-13T10:22:00.003+08:00</published><updated>2007-03-13T10:22:59.811+08:00</updated><title type='text'>Bt、MSN在内网不能下的问题(UPnP规范问题)？</title><content type='h
