﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-wlb.wlb@163.com</title><link>http://www.cnblogs.com/wlb/</link><description>欢迎访问我的网易博客：http://wlb.wlb.blog.163.com</description><language>zh-cn</language><lastBuildDate>Tue, 14 Oct 2008 10:56:04 GMT</lastBuildDate><pubDate>Tue, 14 Oct 2008 10:56:04 GMT</pubDate><ttl>60</ttl><item><title>[导入]Windows xp 2003粘滞键漏洞</title><link>http://www.cnblogs.com/wlb/archive/2008/08/21/1275090.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Thu, 21 Aug 2008 07:14:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/21/1275090.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275090.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/21/1275090.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275090.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275090.html</trackback:ping><description><![CDATA[<div><P>此标题本应该叫做xp粘滞键漏洞，但是经过我的测试，2003这样的商业操作系统下依然有此漏洞，虽然windows2k好久不用了，但是经过我的推测，2k系统也应该存在此漏洞的，但是我没有去测试，因为好久不用的系统了。所以标题里只包含xp&nbsp; 2003 系统。</P>
<P>粘滞键是专为同时按下两个或者多个键有困难的人而设计的，例如在调用任务管理器时用到的alt+ctrl+del组合键，粘滞键功能可以只让你一次只按一个键就能打开任务管理器，而不需要按三个键。 </P>
<P><A href="http://img.blog.163.com/photo/l5xWh26yxeirlNO08rMy4g==/2856408063660189360.jpg" target=_blank></A></P>
<P><A href="http://img.blog.163.com/photo/l5xWh26yxeirlNO08rMy4g==/2856408063660189360.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/l5xWh26yxeirlNO08rMy4g==/2856408063660189360.jpg"></A>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 但这是为有困难的人设计的，我们平常的人应该不会有这困难的吧~~但我们可能认为这个无关紧要，其实这是错的，我们下边做个试验看看~~</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们在一个记事本里输入一下内容，保存为“试验.bat”</P>
<P>cd C:\WINDOWS\system32<BR>ren sethc.exe sethcll.exe<BR>copy cmd.exe sethc.exe</P>
<P>以上的命令也很简单，就是到系统文件夹下把sethc.exe（粘滞键程序）重命名为sethcll.exe，在复制cmd.exe为sethc.exe。</P>
<P>运行后，我们连着按shift键5次，我门就可以看到打开的是命令提示符而不是粘滞键。</P>
<P><A href="http://img.blog.163.com/photo/nn7nksB61itFQJMXvigBCA==/5659617356721444328.jpg" target=_blank></A></P>
<P><A href="http://img.blog.163.com/photo/91JNjtDo54DnFYGYd9pUhw==/1691664610031590477.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/91JNjtDo54DnFYGYd9pUhw==/1691664610031590477.jpg"></A>我们重新启动计算机，在输入密码那里按5次shift，就打开了命令提示符，然后我们运行explorer命令，这时，就会以system权限（比Administrator权限要高，是系统里权限最高）登陆系统了。</P>
<P><A href="http://img.blog.163.com/photo/dRz71XyK5kOn2F-ZFP3sGQ==/857935729014807103.jpg" target=_blank></A></P>
<P><A href="http://img.blog.163.com/photo/e4Wm0zGtOf6xX_D_uq0X6w==/2614339583689112096.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/e4Wm0zGtOf6xX_D_uq0X6w==/2614339583689112096.jpg"></A><A href="http://img.blog.163.com/photo/1P78l5153nLO-SaxkiuISA==/2300494984656906107.jpg" target=_blank><IMG height=490 src="http://img.blog.163.com/photo/1P78l5153nLO-SaxkiuISA==/2300494984656906107.jpg" width=665></A><A href="http://img.blog.163.com/photo/d7WZ7J2Sgooa-kv2BXh9DA==/4575938696385908669.jpg" target=_blank></A></P>
<P>点“显示桌面”按钮，就会显示桌面~~</P>
<P><A href="http://img.blog.163.com/photo/GuoI7I2bbZz5W4QaCtcTIQ==/876794552454411688.jpg" target=_blank><IMG height=481 src="http://img.blog.163.com/photo/GuoI7I2bbZz5W4QaCtcTIQ==/876794552454411688.jpg" width=665></A></P>
<P>这时，入侵者就可以为所欲为了~而且权限还是高于Administrator的system~</P>
<P>那我们怎么办呢？其实这也是很简单的，只要禁用他的快捷键就行啦~~</P>
<P>先按5次shift，打开粘滞键——设置——键盘——粘滞键——设置——键盘快捷键，将下边的“使用快捷键”前的勾去掉就行了，我们再按shift就不会打开了~~</P>
<P><A href="http://img.blog.163.com/photo/02EIUwYowGyciqiA1I6-wA==/4815192426589429165.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/02EIUwYowGyciqiA1I6-wA==/4815192426589429165.jpg"></A></P>
<P>&nbsp;</P></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/467413200872131356860'>http://wlb.wlb.blog.163.com/blog/static/467413200872131356860</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275090.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42984/" target="_blank">[新闻]Silverlight 2正式版SDK可以下载</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入]C#中Thread与ThreadPool的比较</title><link>http://www.cnblogs.com/wlb/archive/2008/08/21/1275091.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Wed, 20 Aug 2008 20:08:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/21/1275091.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275091.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/21/1275091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275091.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275091.html</trackback:ping><description><![CDATA[<div><P>我们可以通过Thread类，一次使用一个线程，来创建和删除线程。这种方式建立和删除线程是很昂贵的（cpu密集型）。所以，CLR包含一个内置的线程池，供应用程序使用。这个线程池可以通过ThreadPool类访问。</P>
<P>ThreadPool类会在线程的托管池中重用已有的线程。使用完线程后，线程就会返回线程池，供以后使用。ThreadPool有25个可用的线程（每个处理器）。</P>
<P>使用ThreadPool类比Thread类创建线程简单的多。但是，在确定是用ThreadPool类还是Thread类创建线程时，考虑如下问题：</P>
<P>在达到如下目标时，应使用ThreadPool类：</P>
<P>要以最简单的方式创建和删除线程；</P>
<P>应用程序使用线程的性能要优先考虑。</P>
<P>在达到如下目标时，应使用Thread类：</P>
<P>要控制所创建线程的优先级；</P>
<P>希望所使用的线程维护其标识，该标识要与线程一起进行各种操作，经过许多不同的时间段；</P>
<P>所使用的线程的寿命较长。</P>
<P>ThreadPool的调用需要调用ThreadPool.QueueUserWorkItem()方法。调用这个方法有两种方式。一种是：</P>
<P>ThreadPool.QueueUserWorkItem(new WailtCallback(StartMethod));</P>
<P>二是：</P>
<P>ThreadPool.QueueUserWorkItem(StartMethod);</P></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/4674132008721482253'>http://wlb.wlb.blog.163.com/blog/static/4674132008721482253</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275091.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42984/" target="_blank">[新闻]Silverlight 2正式版SDK可以下载</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入]泛型提供的简单强大的排序接口与方法</title><link>http://www.cnblogs.com/wlb/archive/2008/08/20/1275092.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Wed, 20 Aug 2008 07:35:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/20/1275092.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275092.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/20/1275092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275092.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275092.html</trackback:ping><description><![CDATA[<div><P>我曾经在一次面试中，被问道，你知道什么简单有效的排序算法么？我随口答曰：冒泡排序。人家让我写下，磕磕巴巴老半天居然还给写错了，这才知道眼高手低了。终于因为对排序没有太过研究，被问了个措手不及。俗语说的好，失败是成功他娘，不怕不知道，就怕明知道自己不知道，还不去学习。</P>
<P>最近对集合类进行了系统深入的学习，也整理了些简单笔记。又对泛型深入学习了下，今天先吧泛型提供的简单的排序方法公布出来，希望能够起到抛砖引玉的作用，也希望高手能够指点。</P>
<P>using System;<BR>using System.Collections.Generic;<BR>using System.Linq;<BR>using System.Text;</P>
<P>namespace ConsoleApplication2<BR>{<BR>&nbsp;&nbsp;&nbsp; public class Racer<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string name;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private string car;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Name<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get<BR>&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; return name;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public string Car<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; get { return car; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Racer(string name, string car)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.name = name;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.car = car;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public override string ToString()<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return name + "," + car;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; class Program<BR>&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; static void Main(string[] args)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; List&lt;Racer&gt; racers = new List&lt;Racer&gt;();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; racers.Add(new Racer("name1", "benchi"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; racers.Add(new Racer("name2", "sangtana"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; racers.Add(new Racer("name3", "woerwo"));<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; racers.Add(new Racer("aname3", "abcar"));</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //foreach (Racer r in racers)<BR>&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; Console.WriteLine(r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //racers.ForEach(delegate(Racer r) { Console.WriteLine(r); });<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; racers.Sort(delegate(Racer r1, Racer r2) { return r1.Name.CompareTo(r2.Name); });<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach (Racer r in racers)<BR>&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; Console.WriteLine(r);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<BR>&nbsp;&nbsp;&nbsp; }</P>
<P>}</P>
<P>运行结果如下所示：</P>
<P><A href="http://img.blog.163.com/photo/Tt6a0apyPyI7hFHEXtAWrQ==/4528087950344901264.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/Tt6a0apyPyI7hFHEXtAWrQ==/4528087950344901264.jpg"></A></P>
<P>说明，确实是按照名字进行了排序了。</P>
<P>有了泛型如此强大的功能，进行排序也就是轻而易举的事了。有的网友可能会比较奇怪，你这是按照升序排列吧，如果我想按照降序排列又该如何做呢。其实也很简单，只要吧r1,r2调换位置就可以实现按照名字降序排列了。<BR></P></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/467413200872033515955'>http://wlb.wlb.blog.163.com/blog/static/467413200872033515955</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275092.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42983/" target="_blank">[新闻]Silverlight对Flash 微软打垮Adobe</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入]WinRar3.8beta3Key与winrar3.6key</title><link>http://www.cnblogs.com/wlb/archive/2008/08/17/1275093.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Sun, 17 Aug 2008 10:53:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/17/1275093.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275093.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/17/1275093.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275093.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275093.html</trackback:ping><description><![CDATA[<div><P>特此声明，以下注册码均为网上收集，请勿用于非法用途。</P>
<P>将以下key保存为rarreg.key，覆盖winrar原来安装文件夹中的文件即可</P>
<P>winrar3.6key：</P>RAR registration data<BR>Alexander Aymanov<BR>Single PC usage license<BR>UID=dc1d9fdb26f9be064d83<BR>64122122504d83d04ee243231738b88600fb267f1d3b9632421295<BR>d1048b98780395138be06035c6ab9048e2c5c62f0238f183d28519<BR>aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fcb0eb0<BR>c3e4c2736090b3dfa45384e08e9de05c58609e0915bfdc561003a6<BR>755c95e82155892c0f36e7ff4b3d62f55230e8ad51b6756d092d0b<BR>89e5c480d3449cc0c7d9ab1d3d4abb32baf07ebabe0e145e608494<BR>e628198aaef1e665f9d63f719cb57ef19f3443f31a830478060233 
<P>winrar3.8beta3key：</P>
<P>RAR registration data <BR>Andoni Etxezarraga Manzanos <BR>Single PC usage license <BR>UID=fd365e99ea91b717c3cc <BR>6412212250c3cc1cc09be9fdf0db48a5bc15cb6e1dcf24c63d80cb <BR>89d6f5e543385127fef86035c6ab9048e2c5c62f0238f183d28519 <BR>aa87488bf38f5b634cf28190bdf438ac593b1857cdb55a7fcb0eb0 <BR>c3e4c2736090b3dfa45384e08e9de05c5860fc7451b36272962df6 <BR>db4dbbff7979c09d0107458efd83f2e4c2bc5eb927e31109277bb0 <BR>959d238cab166162f24a945601e363e24a64d2a30a41709c608a82 <BR>7d7a6dd091b36d6b90c918c2cdc35431ce2085842d514067967034 </P>
<P>到目前为止，官方公布的最新的winrar为3.8beta3版，不过我有点想不明白的是华军软件园居然提供winrar3.8beta4版供网友下载，里面包含了百度搜索等流氓软件，在安装的时候杀毒软件提示有病毒，安装玩以后，我的系统被强行安装了百度搜索还是百度搜霸忘记了。建议网友还是能够去winrar的官方网站上去下载官方提供的正版软件。</P></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/46741320087176532989'>http://wlb.wlb.blog.163.com/blog/static/46741320087176532989</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275093.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42981/" target="_blank">[新闻]IBM扩大研究规模 在上海成立研究院</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入]【转】分布式缓存系统Memcached简介与实践 </title><link>http://www.cnblogs.com/wlb/archive/2008/08/14/1275094.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Thu, 14 Aug 2008 09:35:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/14/1275094.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275094.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/14/1275094.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275094.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275094.html</trackback:ping><description><![CDATA[<div><P>缘起: 在数据驱动的web开发中，经常要重复从数据库中取出相同的数据，这种重复极大的增加了数据库负载。缓存是解决这个问题的好办法。但是ASP.NET中的虽然已经可以实现对页面局部进行缓存，但还是不够灵活。此时Memcached或许是你想要的。<BR><BR><STRONG>Memcached是什么?<BR></STRONG>Memcached是由Danga Interactive开发的，高性能的，分布式的内存对象缓存系统，用于在动态应用中减少数据库负载，提升访问速度。<BR><BR><STRONG>Memcached能缓存什么？<BR></STRONG>通过在内存里维护一个统一的巨大的hash表，Memcached能够用来存储各种格式的数据，包括图像、视频、文件以及数据库检索的结果等。<BR><BR><STRONG>Memcached快么？<BR></STRONG><BR>非常快。Memcached使用了libevent（如果可以的话，在linux下使用epoll）来均衡任何数量的打开链接，使用非阻塞的网络I/O，对内部对象实现引用计数(因此，针对多样的客户端，对象可以处在多样的状态)， 使用自己的页块分配器和哈希表， 因此虚拟内存不会产生碎片并且虚拟内存分配的时间复杂度可以保证为O(1).。<BR><BR>Danga Interactive为提升Danga Interactive的速度研发了Memcached。目前，LiveJournal.com每天已经在向一百万用户提供多达两千万次的页面访问。而这些，是由一个由web服务器和数据库服务器组成的集群完成的。Memcached几乎完全放弃了任何数据都从数据库读取的方式，同时，它还缩短了用户查看页面的速度、更好的资源分配方式，以及Memcache失效时对数据库的访问速度。<BR><BR><STRONG>Memcached的特点</STRONG><BR>Memcached的缓存是一种分布式的，可以让不同主机上的多个用户同时访问， 因此解决了共享内存只能单机应用的局限，更不会出现使用数据库做类似事情的时候，磁盘开销和阻塞的发生。<BR><BR><STRONG>Memcached的使用 <BR>一 </STRONG>Memcached服务器端的安装 （此处将其作为系统服务安装）<BR>&nbsp; 下载文件：<A title="memcached 1.2.1 for win32 binaries (dec 23, 2006)" href="http://jehiah.cz/projects/memcached-win32/files/memcached-1.2.1-win32.zip">memcached 1.2.1 for Win32 binaries (Dec 23, 2006)</A><BR>&nbsp;&nbsp;&nbsp;1 解压缩文件到c:\memcached<BR>&nbsp;&nbsp; 2&nbsp;命令行输入 'c:\memcached\memcached.exe -d install'&nbsp;<BR>&nbsp;&nbsp;&nbsp;3 命令行输入 'c:\memcached\memcached.exe -d start'&nbsp;，该命令启动 Memcached ，默认监听端口为 11211<BR>&nbsp; 通过 memcached.exe -h 可以查看其帮助<BR>二&nbsp;&nbsp; <SPAN>.NET memcached client library<BR>&nbsp;&nbsp; 下载文件：<A href="https://sourceforge.net/projects/memcacheddotnet/">https://sourceforge.net/projects/memcacheddotnet/</A></SPAN></P>
<P><SPAN>里面有.net1.1&nbsp; 和 .net2.0的两种版本&nbsp; 还有一个不错的例子。</SPAN></P>
<P><SPAN>三&nbsp; 应用</SPAN></P>
<P><SPAN>&nbsp; 1 将Commons.dll，ICSharpCode.SharpZipLib.dll，log4net.dll，Memcached.ClientLibrary.dll 等放到bin目录<BR>&nbsp; 2 引用</SPAN><SPAN>Memcached.ClientLibrary.dll<BR>&nbsp; 3 代码<BR></SPAN></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">&nbsp;1</SPAN>&nbsp;<SPAN style="COLOR: #0000ff">namespace</SPAN><SPAN style="COLOR: #000000">&nbsp;Memcached.MemcachedBench<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;2</SPAN>&nbsp;<SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;3</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System;<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;4</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;System.Collections;<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;5</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;6</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">using</SPAN><SPAN style="COLOR: #000000">&nbsp;Memcached.ClientLibrary;<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;7</SPAN>&nbsp;<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">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">class</SPAN><SPAN style="COLOR: #000000">&nbsp;MemcachedBench&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;9</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;{<BR></SPAN><SPAN style="COLOR: #008080">10</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[STAThread]<BR></SPAN><SPAN style="COLOR: #008080">11</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Main(String[]&nbsp;args)&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">12</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR></SPAN><SPAN style="COLOR: #008080">13</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">[]&nbsp;serverlist&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;{&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">10.0.0.131:11211</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">10.0.0.132:11211</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;};<BR></SPAN><SPAN style="COLOR: #008080">14</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">15</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">初始化池</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">16</SPAN>&nbsp;<SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SockIOPool&nbsp;pool&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;SockIOPool.GetInstance();<BR></SPAN><SPAN style="COLOR: #008080">17</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.SetServers(serverlist);<BR></SPAN><SPAN style="COLOR: #008080">18</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">19</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.InitConnections&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">20</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.MinConnections&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">21</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.MaxConnections&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">22</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">23</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.SocketConnectTimeout&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1000</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">24</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.SocketTimeout&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">3000</SPAN><SPAN style="COLOR: #000000">;<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.MaintenanceSleep&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">30</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">27</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.Failover&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">28</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">29</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.Nagle&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">30</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pool.Initialize();<BR></SPAN><SPAN style="COLOR: #008080">31</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">32</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">&nbsp;获得客户端实例</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">33</SPAN>&nbsp;<SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemcachedClient&nbsp;mc&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;MemcachedClient();<BR></SPAN><SPAN style="COLOR: #008080">34</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.EnableCompression&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">35</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">36</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">------------测&nbsp;&nbsp;试-----------</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">37</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.Set(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">my&nbsp;value</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">存储数据到缓存服务器，这里将字符串"my&nbsp;value"缓存，key&nbsp;是"test"</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">38</SPAN>&nbsp;<SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">39</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(mc.KeyExists(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">))&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">测试缓存存在key为test的项目</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">40</SPAN>&nbsp;<SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR></SPAN><SPAN style="COLOR: #008080">41</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test&nbsp;is&nbsp;Exists</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">42</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(mc.Get(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">).ToString());&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">在缓存中获取key为test的项目</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">43</SPAN>&nbsp;<SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR></SPAN><SPAN style="COLOR: #008080">44</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">45</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR></SPAN><SPAN style="COLOR: #008080">46</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test&nbsp;not&nbsp;Exists</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">47</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR></SPAN><SPAN style="COLOR: #008080">48</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">49</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.ReadLine();<BR></SPAN><SPAN style="COLOR: #008080">50</SPAN>&nbsp;<SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">51</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mc.Delete(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">移除缓存中key为test的项目</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">52</SPAN>&nbsp;<SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">53</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(mc.KeyExists(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">))<BR></SPAN><SPAN style="COLOR: #008080">54</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR></SPAN><SPAN style="COLOR: #008080">55</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test&nbsp;is&nbsp;Exists</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">56</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(mc.Get(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">).ToString());<BR></SPAN><SPAN style="COLOR: #008080">57</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR></SPAN><SPAN style="COLOR: #008080">58</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">59</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR></SPAN><SPAN style="COLOR: #008080">60</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">test&nbsp;not&nbsp;Exists</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR></SPAN><SPAN style="COLOR: #008080">61</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR></SPAN><SPAN style="COLOR: #008080">62</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Console.ReadLine();<BR></SPAN><SPAN style="COLOR: #008080">63</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">64</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SockIOPool.GetInstance().Shutdown();&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">关闭池，&nbsp;关闭sockets</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">65</SPAN>&nbsp;<SPAN style="COLOR: #008000"></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR></SPAN><SPAN style="COLOR: #008080">66</SPAN>&nbsp;<SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}<BR></SPAN><SPAN style="COLOR: #008080">67</SPAN>&nbsp;<SPAN style="COLOR: #000000">}</SPAN></DIV>
<P>&nbsp; 4 运行结果 <BR></SPAN></P>
<P></P>
<P><SPAN>&nbsp;&nbsp;&nbsp; <A href="http://img.blog.163.com/photo/X7K2BgtatenqPM2pkLDotw==/3950501298134580826.jpg" target=_blank><IMG src="http://img.blog.163.com/photo/X7K2BgtatenqPM2pkLDotw==/3950501298134580826.jpg"></A><BR></SPAN></P>
<P><SPAN>&nbsp;&nbsp; 后记： 是个不错的东西 ，使用起来也很方便，php ,ruby 的项目中用这个的很多，但是.net项目中用的较少。</SPAN></P></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/467413200871453457164'>http://wlb.wlb.blog.163.com/blog/static/467413200871453457164</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275094.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42980/" target="_blank">[新闻]eWeek评Google八大“20%项目”</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入]常用端口设置</title><link>http://www.cnblogs.com/wlb/archive/2008/08/14/1275095.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Thu, 14 Aug 2008 07:35:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/14/1275095.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275095.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/14/1275095.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275095.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275095.html</trackback:ping><description><![CDATA[<div><P>最近房东这里新来了一批人，不是下载东西就是arp攻击，把整个网络搞的乌烟瘴气，我这个网络管理员也被他们整的是非常的火大。下载东西倒还能接受，谁没有下载东西的时候，只是也不要从早晨到晚上的下嘛，这个嘛主要是考自觉，可是我发现现在的人们自觉性可不是很高，所以只好把所有人都当做不自觉的人来处理了。至于arp攻击嘛，这个实在叫人可气，这个纯属素质问题。遇见这样的人就得有一个杀一个，绝不留情。</P>
<P>我这里就遇到一个哥们，对我的ip地址是再熟悉不过了，常常是攻击网内的其它人，而不攻击我，所以，自从上次警告了它一次以后，一段时间下来倒也没发现它有什么不鬼行为，可是我刚把ip地址改了以后，没多久就攻击了我一上午，我心里那个气啊，苦口婆心的教导全白费了。一下就给它停了。没多久就跑过来跟没事似的，假装跟个受害者一样。我这个人比较直，一句话就把它给顶回去了。</P>
<P>其实我是想过把ip跟mac地址绑定来预防arp攻击的，只是路由器里的ip与mac地址绑定形同虚设，根本不起作用。因此，只能通过大家的自觉及严厉打击arp攻击来屏蔽了。</P>
<P>思路理清了就是怎么做的问题了，我用的比较常规的办法就是屏蔽端口，只开一些必要的端口。以下是一些常用的端口列表：</P>
<P>常用端口列表：<BR>21 (ftp端口)<BR>25 (smtp端口)<BR>53 (域名服务器端口)<BR>80 (浏览器上网端口)<BR>110 (pop收信端口)<BR>443(飞信端口)</P>
<P>1863(msn端口)</P>
<P>3700-3701(新浪ut端口)<BR>4000-4001(Q端口) <BR>6501-6504(飞信端口) </P>
<P>9801(劲舞团)</P>
<P>18480（skype端口）可以不开，不开的话会把80跟443两个端口作为备用端口。<BR><BR>MSN：文件传输要用到TCP的6891~6900端口，而语音、视频交流要用到UDP的5004~65535间的端口</P>
<P>表面上是没有问题的，可是在实际执行过程中就会有问题了，路由器的ip过滤里最多只允许过滤8条，要这么设置的话，根本就不够用嘛，无奈之下，只好把21-1863整个段合成一个，毕竟是没有办法的办法嘛。</P>
<P>虽然有很多下载工具的端口是可以改的，但是我向说的是，网络安全毕竟光靠设置是不行的，它是一个整体，也需要人为的监管，路由器里不还有一个流量监测呢嘛，路由器的日志也可以帮助我们在出问题的时候查证一些东西，只是要查的话也得速查，毕竟它的日志保存太少了。过期以后就会被新的日志覆盖掉。</P>
<P>最后，把我的ip地址设置成从1－65534全部通过，毕竟我还是一个好人，做事有分寸，所以特殊对待嘛。</P>
<P>&nbsp;</P></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/467413200871433529126'>http://wlb.wlb.blog.163.com/blog/static/467413200871433529126</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275095.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42980/" target="_blank">[新闻]eWeek评Google八大“20%项目”</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入]【转】人人都需要掌握的18个世故人情</title><link>http://www.cnblogs.com/wlb/archive/2008/08/12/1275096.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Tue, 12 Aug 2008 08:13:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/12/1275096.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275096.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/12/1275096.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275096.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275096.html</trackback:ping><description><![CDATA[<div>1、即使不是对大人物，我们也要用请教的态度口吻而不是傲慢的姿态与他们说话，因为人不可貌相，很多实用的良师益友往往来自不起眼的生活与工作中。 <BR><BR>2、在吃饭的场合做主动点菜者，不适合请主人与主宾点菜，因为那不是尊贵者通常做的事情，但是请注意询问他们的喜好，而不是只管点自己爱吃的东西。但是这需要平时研究菜单，积累点菜的经验。上桌的时候要尊重主人的安排，不要贸然先行入席。 <BR><BR>3、经常找到朋友、伙伴与同事（甚至小孩子）值得肯定的方面，注意哦，即使老板也需要被你肯定，但是对上者的赞扬应尽量在私下场合，而对于一般朋友与同事则应公开赞扬。 <BR><BR>4、在受到别人对自己的相貌、事情、人品赞扬时，不要表现出理所当然的样子，也不要假意否认，合适的方式是表示感谢，尤其感谢朋友的肯定与支持。 <BR><BR>5、学会使用便条，包括借条、领条、请假条、申请信，如果你很主动地使用这些便条会让其他人感到你很规范，而且如果你懂得请其他人这样做，你未来就能更好与他们有凭有据地打交道。会写便条会让别人刮目相看。 　　 <BR><BR>6、即使你不是服务人员，在朋友或者同事有客人来的时候主动倒水，会让朋友与同事很有面子，也会让客人觉得你的朋友与同事很有威望。这会让你的朋友与同事特别感谢你的姿态。 <BR><BR>7、虽然你觉得你是新手或者地位比较低的人，但是你要勇于不耻下问，也要做到主动询问别人的需要，而不要等领导或者资深的同事对你表现出亲和，因为他们这样表现往往需要特别的努力。 <BR><BR>8、记得在别人不在座位的时候很热情地帮助接听与记录电话、接受信件、传递信息，对团队的同事与同学，提醒他们一些你知道的重要日程。 <BR><BR>9、在征询了别人意见之后才进入别人的房间，阅览别人的书架或者室内物品，在经别人同意的情况下才用别人的电脑，坐在别人的私人座位上，但通常不去翻动别人的笔记本。 <BR><BR>10、出席别人的活动需要有邀请，如果不能出席应提前通知，迟到的话要在适当的时间点上通知主人，到了以后要解释，带未经邀请的朋友要事前通知主人。 <BR><BR>11、不适合向别人索要礼物，收到别人的礼品不管是不是喜欢要表示感谢，因为送礼者会很在乎你的反应，不适合把一处的礼物转送给另一处，尤其还保留原来送礼者的符号与痕迹就显得很没有礼貌了。 <BR><BR>12、在有多个出席者的场合，主动介绍自己的朋友给其他人，或者主动在你认识的朋友之间穿针引线。那些被缓解了陌生感的朋友会特别感谢你。 <BR><BR>13、有不同地位的朋友在的场合，都要保持微笑，体贴地招呼下那些内向的、不为人注意的、可能有点自卑感的朋友，在社交中对弱势者的帮助会得到别人特别的感激。对于社会地位较低者，尤其在有你不能适应的生活条件与生活习惯时，要克制自己所想表现出的不适感与负面表情，尽量主动先打招呼。 <BR><BR>14、有好东西吃的时候不要吃独食，主动地告诉他们你知道的好消息，在有好事情的时候能想到别人会让别人觉得你把他们当好朋友。 <BR><BR>15、有人做错了事，不要用情绪性的方式加以批评，尤其要注意就事论事，避免评价了别人的人格、个性与家庭教养。批评时能提出解决方案就更有建设性。批评时应不忘肯定别人的长处。如批评时能较幽默，往往负面效果就更少。被批评或者遇到尴尬的时候能幽默自嘲，也能提高交流的建设性。 <BR><BR>16、好汉不吃眼前亏。但是在另外很多时候，如果问题争执不下，也不要继续火上浇油，冷静下来，多收集一些数据材料与想得更明白点再说。 <BR><BR>17、在你不能有充分把握的时候，用“争取”与“尽量”这样的口吻回答别人的邀约，承诺了就要最大限度去履行。诺言是指100%做到的事情。如果你有了三次甚至更多的对同一个人没有履行诺言的记录，那个人通常就不再认真地对待你的约定，这就是所谓的信用问题。 <BR><BR>18、虽然在商言商，但是我们要尽量不谈回报地先为别人做点什么，这样就赢得了在心理上比别人优越的债权感。一个人的社会地位是别人对他负有的社会债务感的总和。 <BR>开心交际：和别人沟通，不要和别人比赛 <BR><BR>有的人和人交谈时，时常把它看成是一种竞赛。一定要分出个高下。如果你常在他人的话里寻找漏洞，常为某些细节争论不休，或常纠正他人的错误，藉以向人炫耀自己的知识渊博、伶牙俐齿。这样的你一定会让人留下深刻的印象，不过那是不好的印象。... 
<DIV>&nbsp;</DIV></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/467413200871241246363'>http://wlb.wlb.blog.163.com/blog/static/467413200871241246363</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275096.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42979/" target="_blank">[新闻]微软终于发布Silverlight 2正式版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入].net中的访问修饰符总结篇</title><link>http://www.cnblogs.com/wlb/archive/2008/08/12/1275097.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Tue, 12 Aug 2008 07:50:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/12/1275097.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275097.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/12/1275097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275097.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275097.html</trackback:ping><description><![CDATA[<div><P>自打我学编程起，就开始接触访问修饰符，但是具体声明区别，我一直是考翻看资料来理解，一般都是拿来应付面试。笔者愚钝，再加上好多资料上写的含糊其词，确实不容易理解。几天我用最直白的话把.net中的访问修饰符做个总结。</P>
<P>public&nbsp;&nbsp; 任何代码都可以访问该方法。</P>
<P>protected&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只有派生的类型才可以访问该方法。</P>
<P>internal&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只能包含在它的程序集中访问该方法。</P>
<P>private&nbsp;&nbsp;&nbsp;&nbsp; 只能在它所属的类型中访问该方法。</P>
<P>protected&nbsp; internal&nbsp;&nbsp;&nbsp;&nbsp; 只能在包含它的程序集和派生类型的代码中访问该方法。</P></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/46741320087123495847'>http://wlb.wlb.blog.163.com/blog/static/46741320087123495847</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275097.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42979/" target="_blank">[新闻]微软终于发布Silverlight 2正式版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入].net中类和结构的区别总结篇</title><link>http://www.cnblogs.com/wlb/archive/2008/08/12/1275098.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Tue, 12 Aug 2008 06:56:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/12/1275098.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275098.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/12/1275098.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275098.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275098.html</trackback:ping><description><![CDATA[<div><SPAN title=微笑 lft? fc1>&nbsp;</SPAN> 
<DIV g_t_14? c07>类和结构都是创建对象的模板，每个对象都包含数据，并提供了处理和访问数据的方法。他们的区别在于在内存中的存储方式（类是存储在堆上的引用类型，而结构是存储在堆栈上的值类型）访问方式和一些特征（结构不支持继承）不同。</DIV>
<DIV g_t_14? c07>那么访问方式有什么区别呢。以下代码可以详细区分这两种访问方式的区别：</DIV>
<DIV g_t_14? c07>类的访问方式：</DIV>
<DIV g_t_14? c07>A a=new A();</DIV>
<DIV g_t_14? c07>a.length=19;</DIV>
<DIV g_t_14? c07>a.name=wlb;</DIV>
<DIV g_t_14? c07>结构的访问方式：</DIV>
<DIV g_t_14? c07>A a;</DIV>
<DIV g_t_14? c07>
<DIV g_t_14? c07>a.length=19;</DIV>
<DIV g_t_14? c07>a.name=wlb;</DIV>
<DIV g_t_14? c07>相信通过看这两段代码，结果已经很明显了。因为结构是值类型，而new运算符并不分配堆中的内存，而是调用相应的构造函数，根据传给它的参数，初始化所有字段。</DIV></DIV></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/467413200871225551852'>http://wlb.wlb.blog.163.com/blog/static/467413200871225551852</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275098.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42979/" target="_blank">[新闻]微软终于发布Silverlight 2正式版</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item><item><title>[导入]Windows 2003忘记密码解决方案</title><link>http://www.cnblogs.com/wlb/archive/2008/08/08/1275099.html</link><dc:creator>王立斌</dc:creator><author>王立斌</author><pubDate>Fri, 08 Aug 2008 07:16:00 GMT</pubDate><guid>http://www.cnblogs.com/wlb/archive/2008/08/08/1275099.html</guid><wfw:comment>http://www.cnblogs.com/wlb/comments/1275099.html</wfw:comment><comments>http://www.cnblogs.com/wlb/archive/2008/08/08/1275099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/wlb/comments/commentRss/1275099.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/wlb/services/trackbacks/1275099.html</trackback:ping><description><![CDATA[<div>1. 下载ERD Commander 2003。下载完成后先将 “WinPE+ERD2003.rar”文件的扩展名更改为“。Iso”，然后用[url=]刻录机[/url]将此ISO镜像刻录成CD.<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;2. 用此CD启动电脑，进入ERD Commander 2003启动界面。在启动过程中， ERD 2003可能会让用户针对系统硬件配置进行一些选择。由于我们的目的只是借它来修改密码，所以一路选“是”即可。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;3. 接下来，ERD 2003会在你的硬盘里搜索所有已安装的系统，搜索完毕后让你选择要修改登录密码的系统所在目录，选择好后按[确定]便可进入ERD 2003桌面。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;4. ERD 2003的界面与Windows XP类似。单击任务栏上的[开始]按钮，选择“管理工具→密码修改”命令，即弹出“ERD Commander 2003 Locksmith Wizard”欢迎页。点击“Next”，出现了修改系统登录密码的对话框。在对话框中先选择一个用户名，然后在下面的密码框中输入你要设置的密码。完成后再点击[Next]，系统提示“密码修改成功，请重新启动计算机测试新密码”。点击[Finish]之后按提示重启系统，这时用你修改的密码就可登录对应的账户了。<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;用这种方法修改忘记了的系统登录密码，是不是太简单了？只要有了ERD Commander 2003，你就有了一把登录Windows系统的万能钥匙。 <BR></div><br>文章来源:<a href='http://wlb.wlb.blog.163.com/blog/static/46741320087831614898'>http://wlb.wlb.blog.163.com/blog/static/46741320087831614898</a><img src ="http://www.cnblogs.com/wlb/aggbug/1275099.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42977/" target="_blank">[新闻]微软首次打破先例 Windows 7不再改名</a><br/><a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻频道</a>&nbsp;<a href="http://space.cnblogs.com/group.htm" target="_blank">小组</a>&nbsp;<a href="http://space.cnblogs.com/q" target="_blank">博问</a>&nbsp;<a href="http://wz.cnblogs.com/" target="_blank">网摘</a>&nbsp;<a href="http://space.cnblogs.com/ing" target="_blank">闪存</a>]]></description></item></channel></rss>