﻿<?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>博客园-韩现龙[FoxInSky]的博客</title><link>http://www.cnblogs.com/hanxianlong/</link><description>编程的孩子[为心找一个归宿] &amp;nbsp;&amp;nbsp;以铜为镜，可正衣冠。以古为镜，可知兴替。以人为镜，可明得失
为灾区祈祈福……</description><language>zh-cn</language><lastBuildDate>Sat, 26 Jul 2008 07:13:10 GMT</lastBuildDate><pubDate>Sat, 26 Jul 2008 07:13:10 GMT</pubDate><ttl>60</ttl><item><title>MyEclispe使用感觉</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/07/13/1241909.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Sun, 13 Jul 2008 08:44:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/07/13/1241909.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1241909.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/07/13/1241909.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1241909.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1241909.html</trackback:ping><description><![CDATA[<p>对于使用习惯了VS，尤其是VS2008的我来说，初次使用MyEclipse时感觉太不爽了！<br />
智能感知功能太差！而且有的时候反应特别慢，要是非法关闭它的话据说会导致整个项目的重新编译。<br />
<br />
以上仅仅是第一感觉，是好是坏，由于本人沿未对其进行深入了解，所以并无资格去评论它和VS的优劣。下面仅将使用过程中出现的一些问题及解决方案罗列出来：<br />
1、某些JSP、CSS等文件中中文出现乱码的解决方案：<br />
&nbsp;&nbsp;&nbsp; Window&#8594;Preferences&#8594;General&#8594;ContentTypes&#8594;选择相应类型的文件&#8594;将DefaultEncoding设置为GBK即可。<br />
2、开发时也请注意jsp页面的page指令的pageEncoding值请也设置为"GBK" 否则页面也无法正常显示。<br />
<br />
3、取消MyEclipse的自动更新功能，不然的话不爽，尤其是网速慢的情况下<br />
&nbsp;&nbsp;&nbsp; Window&#8594;prefernences&#8594;MyEclipse Enterprise Workbench&#8594;Community Essentials&#8594;取消Search for new features at start up即可。<br />
<br />
<br />
<br />
<br />
其他：<br />
&nbsp;&nbsp; 用PLSQL将某一日期列作为查询条件来查询某条记录时，需要配置如下环境变量才可以书写正常的SQL语句： <br />
&nbsp;&nbsp; nls_data_format&nbsp;&nbsp; 值为：YYYY-MM-DD HH24:MI:SS<br />
</p>
<img src ="http://www.cnblogs.com/hanxianlong/aggbug/1241909.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41316/" target="_blank">[新闻]腾讯CEO马化腾:中国互联网业准备再过冬</a>]]></description></item><item><title>今天，我们毕业</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/06/30/1232750.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Mon, 30 Jun 2008 14:12:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/06/30/1232750.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1232750.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/06/30/1232750.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1232750.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1232750.html</trackback:ping><description><![CDATA[摘要: 沉默了许久，终于觉得，毕业原来不是沉默所能回避的问题。 &nbsp;&nbsp;<a href='http://www.cnblogs.com/hanxianlong/archive/2008/06/30/1232750.html'>阅读全文</a><img src ="http://www.cnblogs.com/hanxianlong/aggbug/1232750.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41315/" target="_blank">[新闻]F8 Keynote Speech[多图]</a>]]></description></item><item><title>求职北京·两年Web(ASP.NET)开发经验</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/06/07/1215455.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Fri, 06 Jun 2008 23:11:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/06/07/1215455.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1215455.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/06/07/1215455.html#Feedback</comments><slash:comments>38</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1215455.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1215455.html</trackback:ping><description><![CDATA[摘要: [Update:目前人在北京]期待着您的面试邀请，请相信，您会看到一个已有两年工作经验的应届生的能力！ &nbsp;&nbsp;<a href='http://www.cnblogs.com/hanxianlong/archive/2008/06/07/1215455.html'>阅读全文</a><img src ="http://www.cnblogs.com/hanxianlong/aggbug/1215455.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41314/" target="_blank">[新闻]奥运核心资源被分食 搜狐央视网谁忽悠谁？</a>]]></description></item><item><title>[转]概念的东西不能丢－深入理解C#值类型和引用类型</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/05/22/1204863.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Thu, 22 May 2008 06:54:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/05/22/1204863.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1204863.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/05/22/1204863.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1204863.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1204863.html</trackback:ping><description><![CDATA[<p>从概念上看，值类型直接存储其值，而引用类型存储对其值的引用。这两种类型存储在内存的不同地方。在C#中，我们必须在设计类型的时候就决定类型实例的行为。这种决定非常重要，用《<a href="http://www.amazon.com/CLR-via-Second-Pro-Developer/dp/0735621632/ref=pd_bbs_sr_1/104-0047775-7437579?ie=UTF8&amp;s=books&amp;qid=1192808653&amp;sr=8-1">CLR via C#</a>》作者<a href="http://msdn.microsoft.com/msdnmag/issues/1200/dotnet/">Jeffrey Richter的话</a>来说，“不理解引用类型和值类型区别的程序员将会给代码引入诡异的bug和性能问题（I believe that a developer who misunderstands the difference between reference types and value types will introduce subtle bugs and performance issues into their code.）”。这就要求我们正确理解和使用值类型和引用类型。  <ul> <li>1. 通用类型系统  <li>2. 值类型  <li>3. 引用类型  <li>4. 值类型和引用类型在内存中的部署  <ul> <li>4.1 数组在内存中的部署  <li>4.2 值类型和引用类型的嵌套 </li></ul> <li>5. 正确使用值类型和引用类型  <ul> <li>5.1 辨明值类型和引用类型的使用场合  <li>5.2 将值类型尽可能实现为具有常量性和原子性的类型  <li>5.3 确保0为值类型的有效状态  <li>5.4 尽量减少装箱和拆箱 </li></ul> <li>6. 总结  <li>7. 参考 </li></ul> <h3>1. 通用类型系统</h3> <p>C#中，变量是值还是引用仅取决于其数据类型。  <p>C#的基本数据类型都以平台无关的方式来定义。C#的预定义类型并没有内置于语言中，而是内置于.NET Framework中。.NET使用通用类型系统（CTS）定义了可以在中间语言（IL）中使用的预定义数据类型，所有面向.NET的语言都最终被编译为IL，即编译为基于CTS类型的代码。  <p>例如，在C#中声明一个int变量时，声明的实际上是CTS中System.Int32的一个实例。这具有重要的意义：  <ul> <li>确保IL上的强制类型安全；  <li>实现了不同.NET语言的互操作性；  <li>所有的数据类型都是对象。它们可以有方法，属性，等。例如： </li></ul> <p>int i;<br>i = 1;<br>string s;<br>s = i.ToString();  <p><a href="http://msdn2.microsoft.com/zh-cn/library/2hf02550(VS.80).aspx">MSDN的这张图</a>说明了CTS中各个类型是如何相关的。注意，类型的实例可以只是值类型或自描述类型，即使这些类型有子类别也是如此。  <p><img border="0" src="http://www.dwww.cn/upfiles/2008-3/20083317122390650.gif" width="455">  <h3>2. 值类型</h3> <p>C#的所有值类型均隐式派生自System.ValueType：  <ul> <li>结构体：struct（直接派生于System.ValueType）；  <ul> <li>数值类型：  <ul> <li>整型：sbyte（System.SByte的别名），short（System.Int16），int（System.Int32），long（System.Int64），byte（System.Byte），ushort（System.UInt16），uint（System.UInt32），ulong（System.UInt64），char（System.Char）；  <li>浮点型：float（System.Single），double（System.Double）；  <li>用于财务计算的高精度decimal型：decimal（System.Decimal）。 </li></ul> <li>bool型：bool（System.Boolean的别名）；  <li>用户定义的结构体（派生于System.ValueType）。 </li></ul> <li>枚举：enum（派生于System.Enum）；  <li>可空类型（派生于System.Nullable&lt;T&gt;泛型结构体，T?实际上是System.Nullable&lt;T&gt;的别名）。 </li></ul> <p>每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。例如：  <p>int i = new int();  <p>等价于：  <p>Int32 i = new Int32();  <p>等价于：  <p>int i = 0;  <p>等价于：  <p>Int32 i = 0;  <p>使用new运算符时，将调用特定类型的默认构造函数并对变量赋以默认值。在上例中，默认构造函数将值0赋给了i。MSDN上有<a href="http://msdn2.microsoft.com/zh-cn/library/83fhsxwc(VS.80).aspx">完整的默认值表</a>。  <p>关于int和Int32的细节，在我的另一篇文章中有详细解释：《<a href="http://www.cnblogs.com/yandixin/archive/2007/12/20/Int.html">理解C#中的System.Int32和int</a>》。  <p>所有的值类型都是密封（seal）的，所以无法派生出新的值类型。  <p>值得注意的是，System.ValueType直接派生于System.Object。即System.ValueType本身是一个类类型，而不是值类型。其关键在于ValueType重写了Equals()方法，从而对值类型按照实例的值来比较，而不是引用地址来比较。  <p>可以用Type.IsValueType属性来判断一个类型是否为值类型：  <p>TestType testType = new TestType ();<br>if (testTypetype.GetType().IsValueType)<br>{<br>Console.WriteLine("{0} is value type.", testType.ToString());<br>}  <h3>3. 引用类型</h3> <p>C#有以下一些引用类型：  <ul> <li>数组（派生于System.Array）  <li>用户用定义的以下类型：  <ul> <li>类：class（派生于System.Object）；  <li>接口：interface（接口不是一个“东西”，所以不存在派生于何处的问题。Anders在《<a href="http://www.amazon.com/Programming-Language-Microsoft-NET-Development/dp/0321334434/ref=pd_bbs_sr_1/103-1113488-9980640?ie=UTF8&amp;s=books&amp;qid=1192765341&amp;sr=8-1">C# Programming Language</a>》中说，接口只是表示一种约定[contract]）；  <li>委托：delegate（派生于System.Delegate）。 </li></ul> <li>object（System.Object的别名）；  <li>字符串：string（System.String的别名）。 </li></ul> <p>可以看出：  <ul> <li>引用类型与值类型相同的是，结构体也可以实现接口；  <li>引用类型可以派生出新的类型，而值类型不能；  <li>引用类型可以包含null值，值类型不能（可空类型功能允许将 null 赋给值类型）；  <li>引用类型变量的赋值只复制对对象的引用，而不复制对象本身。而将一个值类型变量赋给另一个值类型变量时，将复制包含的值。 </li></ul> <p>对于最后一条，经常混淆的是string。我曾经在<a href="http://www.amazon.com/Beginning-Visual-2005-Wrox-Guides/dp/0764578472/ref=pd_bbs_sr_1/105-2818314-5415649?ie=UTF8&amp;s=books&amp;qid=1192347053&amp;sr=1-1">一本书</a>的一个早期版本上看到String变量比string变量效率高；我还经常听说String是引用类型，string是值类型，等等。例如：  <p>string s1 = "Hello, ";<br>string s2 = "world!";<br>string s3 = s1 + s2;//s3 is "Hello, world!"  <p>这确实看起来像一个值类型的赋值。再如：  <p>string s1 = "a";<br>string s2 = s1;<br>s1 = "b";//s2 is still "a"  <p>改变s1的值对s2没有影响。这更使string看起来像值类型。实际上，这是运算符重载的结果，当s1被改变时，.NET在托管堆上为s1重新分配了内存。这样的目的，是为了将做为引用类型的string实现为通常语义下的字符串。  <h3>4. 值类型和引用类型在内存中的部署</h3> <p>经常听说，并且经常在书上看到：值类型部署在栈上，引用类型部署在托管堆上。实际上并没有这么简单。  <p><a href="http://msdn2.microsoft.com/zh-cn/library/f144e03t(VS.80).aspx">MSDN上说</a>：托管堆上部署了所有引用类型。这很容易理解。当创建一个应用类型变量时：  <p>object reference = new object();  <p>关键字new将在托管堆上分配内存空间，并返回一个该内存空间的地址。左边的reference位于栈上，是一个引用，存储着一个内存地址；而这个地址指向的内存（位于托管堆）里存储着其内容（一个System.Object的实例）。下面为了方便，简称引用类型部署在托管推上。  <p>再来看值类型。《<a href="http://msdn2.microsoft.com/zh-cn/vcsharp/Aa336809.aspx">C#语言规范</a>》上的措辞是“结构体不要求在堆上分配内存（However, unlike classes, structs are value types and do not require heap allocation）”而不是“结构体在栈上分配内存”。这不免容易让人感到困惑：值类型究竟部署在什么地方？  <h4>4.1 数组</h4> <p>考虑数组：  <p>int[] reference = new int[100];  <p>根据定义，数组都是引用类型，所以int数组当然是引用类型（即reference.GetType().IsValueType为false）。  <p>而int数组的元素都是int，根据定义，int是值类型（即reference[i].GetType().IsValueType为true）。那么引用类型数组中的值类型元素究竟位于栈还是堆？  <p>如果用WinDbg去看<a href="http://eparg.spaces.live.com/blog/cns!59BFC22C0E7E1A76!2603.entry">reference[i]在内存中的具体位置</a>，就会发现它们并不在栈上，而是在托管堆上。  <p>实际上，对于数组：  <p>TestType[] testTypes = new TestType[100];  <p>如果TestType是值类型，则会一次在托管堆上为100个值类型的元素分配存储空间，并自动初始化这100个元素，将这100个元素存储到这块内存里。  <p>如果TestType是引用类型，则会先在托管堆为testTypes分配一次空间，并且这时不会自动初始化任何元素（即testTypes[i]均为null）。等到以后有代码初始化某个元素的时候，这个引用类型元素的存储空间才会被分配在托管堆上。  <h4>4.2 类型嵌套</h4> <p>更容易让人困惑的是引用类型包含值类型，以及值类型包含引用类型的情况：  <p>public class ReferenceTypeClass<br>{<br>private int _valueTypeField;<br>public ReferenceTypeClass()<br>{<br>_valueTypeField = 0;<br>}<br>public void Method()<br>{<br>int valueTypeLocalVariable = 0;<br>}<br>}<br>ReferenceTypeClass referenceTypeClassInstance = new ReferenceTypeClass();//Where is _valueTypeField?<br>referenceTypeClassInstance.Method();//Where is valueTypeLocalVariable?<br>public struct ValueTypeStruct<br>{<br>private object _referenceTypeField;<br>public ValueTypeStruct()<br>{<br>_referenceTypeField = new object();<br>}<br>public void Method()<br>{<br>object referenceTypeLocalVariable = new object();<br>}<br>}<br>ValueTypeStruct valueTypeStructInstance = new ValueTypeStruct();//Where is _referenceTypeField？<br>valueTypeStructInstance.Method();//Where is referenceTypeLocalVariable?  <p>单看valueTypeStructInstance，这是一个结构体实例，感觉似乎是整块扔到栈上的。但是字段_referenceTypeField是引用类型，局部变量referenceTypeLocalVarible也是引用类型。  <p>referenceTypeClassInstance也有同样的问题，referenceTypeClassInstance本身是引用类型，似乎应该整块部署在托管堆上。但字段_valueTypeField是值类型，局部变量valueTypeLocalVariable也是值类型，它们究竟是在栈上还是在托管堆上？  <p>规律是：  <ul> <li>引用类型部署在托管堆上；  <li>值类型总是分配在它声明的地方：作为字段时，跟随其所属的变量（实例）存储；作为局部变量时，存储在栈上。 </li></ul> <p>我们来分析一下上面的代码。对于引用类型实例，即referenceTypeClassInstance：  <ul> <li>从上下文看，referenceTypeClassInstance是一个局部变量，所以部署在托管堆上，并被栈上的一个引用所持有；  <li>值类型字段_valueTypeField属于引用类型实例referenceTypeClassInstance的一部分，所以跟随引用类型实例referenceTypeClassInstance部署在托管堆上（有点类似于数组的情形）；  <li>valueTypeLocalVariable是值类型局部变量，所以部署在栈上。 </li></ul> <p>而对于值类型实例，即valueTypeStruct：  <ul> <li>根据上下文，值类型实例valueTypeStructInstance本身是一个局部变量而不是字段，所以位于栈上；  <li>其引用类型字段_referenceTypeField不存在跟随的问题，必然部署在托管堆上，并被一个引用所持有（该引用是valueTypeStruct的一部分，位于栈）；  <li>其引用类型局部变量referenceTypeLocalVariable显然部署在托管堆上，并被一个位于栈的引用所持有。 </li></ul> <p>所以，简单地说“值类型存储在栈上，引用类型存储在托管堆上”是不对的。必须具体情况具体分析。  <h3>5. 正确使用值类型和引用类型</h3> <p>这一部分主要参考《<a href="http://www.amazon.com/Effective-Specific-Improve-Software-Development/dp/0321245660/ref=pd_bbs_sr_1/104-0047775-7437579?ie=UTF8&amp;s=books&amp;qid=1192294388&amp;sr=8-1">Effective C#</a>》，并非本人原创，希望能让你加深对值类型和引用类型的理解。  <h4>5.1 辨明值类型和引用类型的使用场合</h4> <p>C#中，我们用struct/class来声明一个类型为值类型/引用类型。  <p>考虑下面的例子：  <p>TestType[] testTypes = new TestType[100];  <p>如果TestTye是值类型，则只需要一次分配，大小为TestTye的100倍。而如果TestTye是引用类型，刚开始需要100次分配，分配后数组的各元素值为null，然后再初始化100个元素，结果总共需要进行101次分配。这将消耗更多的时间，造成更多的内存碎片。所以，如果类型的职责主要是存储数据，值类型比较合适。  <p>一般来说，值类型（不支持多态）适合存储供 C#应用程序操作的数据，而引用类型（支持多态）应该用于定义应用程序的行为。  <p>通常我们创建的引用类型总是多于值类型。如果以下问题的回答都为yes，那么我们就应该创建为值类型：  <ul> <li>该类型的主要职责是否用于数据存储？  <li>该类型的共有借口是否完全由一些数据成员存取属性定义？  <li>是否确信该类型永远不可能有子类？  <li>是否确信该类型永远不可能具有多态行为？ </li></ul> <h4>5.2 将值类型尽可能实现为具有常量性和原子性的类型</h4> <p>具有常量性的类型很简单：  <ul> <li>如果构造的时候验证了参数的有效性，之后就一直有效；  <li>省去了许多错误检查，因为禁止更改；  <li>确保线程安全，因为多个reader访问到同样的内容；  <li>可以安全地暴露给外界，因为调用者不能更改对象的内部状态。 </li></ul> <p>具有原子性的类型都是单一的实体，我们通常会直接替换一个原子类型的整个内容。  <p>下面是一个典型的可变类型：  <p>public struct Address<br>{<br>private string _city;<br>private string _province;<br>private int _zipCode;<br>public string City<br>{<br>get { return _city; }<br>set { _city = value; }<br>}<br>public string Province<br>{<br>get { return _province; }<br>set<br>{<br>ValidateProvince(value);<br>_province = value;<br>}<br>}<br>public int ZipCode<br>{<br>get { return _zipCode; }<br>set<br>{<br>ValidateZipCode(value);<br>_zipCode = value;<br>}<br>}<br>}  <p>下面创建一个实例：  <p>Address address = new Address();<br>address.City = "Chengdu";<br>address.Province = "Sichuan";<br>address.ZipCode = 610000;  <p>然后更改这个实例：  <p>address.City = "Nanjing"; //Now Province and ZipCode are invalid<br>address.ZipCode = 210000; //Now Province is still invalid<br>address.Province = "Jiangsu";  <p>可见，内部状态的改变意味着可能违反对象的不变式（invariant），至少是临时的违反。如果上面是一个多线程的程序，那么在 City更改的过程中，另一个线程可能看到不一致的数据视图。如果不是多线程的程序，也有问题：  <ul> <li>当ZipCode的值无效而抛出异常时，对象仅作了一部分改变，因此处于无效的状态，为了修复这个问题，需要在Address中添加相当多的内部校验代码；  <li>为了实现异常安全，我们需要在所有改变多个字段的客户代码处放上防御性的代码；  <li>线程安全也要求我们在每一个属性的访问器上添加线程同步检查。 </li></ul> <p>显然，这是一个相当可观的工作量。下面我们把Address实现为常量类型：  <p>public struct Address<br>{<br>private string _city;<br>private string _province;<br>private int _zipCode;<br>public Address (string city, string province, int zipCode)<br>{<br>_city = city;<br>_province = province;<br>_zipCode = zipCode;<br>ValidateProvince(province);<br>ValidateZipCode(zipCode);<br>}<br>public string City<br>{<br>get { return _city; }<br>}<br>public string Province<br>{<br>get { return _province; }<br>}<br>public int ZipCode<br>{<br>get { return _zipCode; }<br>}<br>}  <p>如果要改变Address，不能修改现有的实例，只能创建一个新的实例：  <p>Address address = new Address("Chengdu", "Sichuan", 610000);//create a instance<br>address = new Address("Nanjing", "Jiangsu", 210000);//modify the instance  <p>address将不存在任何无效的临时状态。那些临时状态只存在于Address的构造函数执行过程中。这样一来，Address是异常安全的，也是线程安全的。  <h4>5.3 确保0为值类型的有效状态</h4> <p>.NET的默认初始化机制会将引用类型设置为二进制意义上的0，即null。而对于值类型，不论我们是否提供构造函数，都会有一个默认的构造函数，将其设置为0。  <p>一种典型的情况是枚举：  <p>public enum Sex<br>{<br>Male = 1;<br>Female = 2;<br>}  <p>然后用做值类型的成员：  <p>public struct Employee<br>{<br>private Sex _sex;<br>//other<br>}  <p>创建Employee结构体将得到一个无效的Sex字段：  <p>Employee employee = new Employee ();  <p>employee的_sex是无效的，因为其为0。我们应该将0作为一个为初始化的值明确表示出来：  <p>public Sex<br>{<br>None = 0;<br>Male = 1;<br>Female = 2;<br>}  <p>如果值类型中包含引用类型，会出现另一种初始化问题：  <p>public struct ErrorLog<br>{<br>private string _message;<br>//other<br>}  <p>然后创建一个ErrorLog：  <p>ErrorLog errorLog = new ErrorLog ();  <p>errorLog的_message字段将是一个空引用。我们应该通过一个属性来将_message暴露给客户代码，从而使该问题限定在ErrorLog 的内部：  <p>public struct ErrorLog<br>{<br>private string _message;<br>public string Message<br>{<br>get<br>{<br>return (_message ! = null) ? _message : string.Empty;<br>}<br>set { _message = value; }<br>}<br>//other<br>}  <h4>5.4 尽量减少装箱和拆箱</h4> <p>装箱指把一个值类型放入一个未具名类型的引用类型中，比如：  <p>int valueType = 0;<br>object referenceType = i;//boxing  <p>拆箱则是从前面的装箱对象中取出值类型：  <p>object referenceType;<br>int valueType = (int)referenceType;//unboxing  <p>装箱和拆箱是比较耗费性能的，还会引入一些诡异的bug，我们应当避免装箱和拆箱。  <p>装箱和拆箱最大的问题是会自动发生。比如：  <p>Console.WriteLine("A few numbers: {0}, {1}.", 25, 32);  <p>其中，Console.WriteLine()接收的参数类型是(string，object，object)。因此，实际上会执行以下操作：  <p>int i = 25;<br>obeject o = i;//boxing  <p>然后把o传给WriteLine()方法。在WriteLine()方法的内部，为了调用i上的ToString()方法，又会执行：  <p>int i = (int)o;//unboxing<br>string output = i,ToString();  <p>所以正确的做法应该是：  <p>Console.WriteLine("A few numbers: {0}, {1}.", 25.ToString(), 32.ToString());  <p>25.ToString()只是执行一个方法并返回一个引用类型，不存在装箱/拆箱的问题。  <p>另一个典型的例子是ArryList的使用：  <p>public struct Employee<br>{<br>private string _name;<br>public Employee(string name)<br>{<br>_name = name;<br>}<br>public string Name<br>{<br>get { return _name; }<br>set { _name = value; }<br>}<br>public override string ToString()<br>{<br>return _name;<br>}<br>}<br>ArrayList employees = new ArrayList();<br>employees.Add(new Employee("Old Name"));//boxing<br>Employee ceo = (Employee)employees[0];//unboxing<br>ceo.Name = "New Name";//employees[0].ToString() is still "Old Name"  <p>上面的代码不仅存在性能的问题，还容易导致错误发生。  <p>在这种情况下，更好的做法是使用泛型集合：  <p>List&lt;Employee&gt; employees = new List&lt;Employee&gt;();  <p>由于List&lt;T&gt;是强类型的集合，employees.Add()方法不进行类型转换，所以不存在装箱/拆箱的问题。  <h3>6. 总结</h3> <p>C#中，变量是值还是引用仅取决于其数据类型。  <p>C#的值类型包括：结构体（数值类型，bool型，用户定义的结构体），枚举，可空类型。  <p>C#的引用类型包括：数组，用户定义的类、接口、委托，object，字符串。  <p>数组的元素，不管是引用类型还是值类型，都存储在托管堆上。  <p>引用类型在栈中存储一个引用，其实际的存储位置位于托管堆。为了方便，本文简称引用类型部署在托管推上。  <p>值类型总是分配在它声明的地方：作为字段时，跟随其所属的变量（实例）存储；作为局部变量时，存储在栈上。  <p>值类型在内存管理方面具有更好的效率，并且不支持多态，适合用作存储数据的载体；引用类型支持多态，适合用于定义应用程序的行为。  <p>应该尽可能地将值类型实现为具有常量性和原子性的类型。  <p>应该尽可能地确保0为值类型的有效状态。  <p>应该尽可能地减少装箱和拆箱。</p><img src ="http://www.cnblogs.com/hanxianlong/aggbug/1204863.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41313/" target="_blank">[新闻]微软推新型搜索技术"BrowseRank"挑战谷歌</a>]]></description></item><item><title>C#来完成二叉树的搜索、遍历、及查找</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/05/22/1204547.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Thu, 22 May 2008 02:06:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/05/22/1204547.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1204547.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/05/22/1204547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1204547.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1204547.html</trackback:ping><description><![CDATA[<p>二叉树结点类：<br />
插入代码的页面打不开，所以直接这样粘代码了&nbsp; ：（<br />
<br />
</p>
<p><font face="Verdana">&nbsp;public class Node<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Node left;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private Node right;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; private int value;</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Node(Node left, Node right, int value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.left = left;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.right = right;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.value = value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Node(int value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.value = value;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Node getLeftNode() { return left; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Node getRightNode() { return right; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public int getValue() { return value; }</font></p>
<font face="Verdana">
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 查找某一节点<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="node"&gt;根节点&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="value"&gt;要查找的值&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;returns&gt;&lt;/returns&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public Node findNode(Node root, int value)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (root == null)<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 null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (root.getValue() == value)<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 root;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (value &lt; root.getValue())<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; findNode(root.getLeftNode(), value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<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; findNode(root.getRightNode(), value);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return null;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 先根遍历<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="root"&gt;&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void PreOrder(Node root)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (root != null)<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(root.getValue());</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PreOrder(root.getLeftNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PreOrder(root.getRightNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 后根遍历<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="root"&gt;&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void AfterOrder(Node root)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (root != null)<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; AfterOrder(root.getLeftNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AfterOrder(root.getRightNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(root.getValue());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// 中序遍历二叉树<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;/summary&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /// &lt;param name="root"&gt;&lt;/param&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void MidOrder(Node root)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (root != null)<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; MidOrder(root.getLeftNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(root.getValue());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MidOrder(root.getRightNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static int leafNodeCount = 0;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; public static void count_leafNode(Node root)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (root == null)<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;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (root.getLeftNode() == null &amp;&amp; root.getRightNode() == null)<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("叶子节点" +&nbsp; leafNodeCount.ToString() + "的值为:" +&nbsp;&nbsp; root.getValue());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; leafNodeCount++;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<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; count_leafNode(root.getLeftNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; count_leafNode(root.getRightNode());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
<br />
为了简便起见，将遍历等相关方法都写在了该节点中。<br />
以下是主程序调用：<br />
</p>
<p><font face="Verdana">&nbsp;public void showMain()<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
//构建二叉树<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node[] node=new Node[8];<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[4] = new Node(5);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[5] = new Node(6);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[6] = new Node(7);</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[3] = new Node(node[6], node[7], 3);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[2] = new Node(node[4], node[5], 2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[1] = new Node(node[3], null, 2);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; node[0] = new Node(node[1], node[2], 0);</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("后根遍历：");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node.AfterOrder(node[0]);</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("先根遍历:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node.PreOrder(node[0]);</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("中根遍历：");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node.MidOrder(node[0]);</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine("共有叶子节点个数为:");<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Node.count_leafNode(node[0]);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.WriteLine(Node.leafNodeCount);</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Console.Read();</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</font></p>
</font>
<img src ="http://www.cnblogs.com/hanxianlong/aggbug/1204547.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41313/" target="_blank">[新闻]微软推新型搜索技术"BrowseRank"挑战谷歌</a>]]></description></item><item><title>我一直在心酸——有感于512大地震</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/05/16/1200518.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Fri, 16 May 2008 05:56:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/05/16/1200518.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1200518.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/05/16/1200518.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1200518.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1200518.html</trackback:ping><description><![CDATA[摘要: 华夏大地的灾难<br>在那一刻突然降临<br><br>天府之国的躯体<br>突然在那一刻颤抖<br><br>&nbsp;&nbsp;<a href='http://www.cnblogs.com/hanxianlong/archive/2008/05/16/1200518.html'>阅读全文</a><img src ="http://www.cnblogs.com/hanxianlong/aggbug/1200518.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41312/" target="_blank">[新闻]2008年7月26日IT博客精选</a>]]></description></item><item><title>把我的爱送给你――C#3.5（这题目似乎写错了）</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/05/15/1196459.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Thu, 15 May 2008 05:45:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/05/15/1196459.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1196459.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/05/15/1196459.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1196459.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1196459.html</trackback:ping><description><![CDATA[<p>本文发表于 中国IT实验室周报。这是我初次写给杂志社稿件，其中必有许多不足之处，还望大家见谅，虽然这篇文章质量可能不太高，但我希望能将个人的这些总结与大家分享。 <p>&nbsp; <p>从笔者接触编程至今，经历了数种编程语言，从Visual Basic6.0桌面程序开发到ASP(VBScript)的网站开发，从C#1.1到C#2.0，再至今日的令人加心动的C#3.5，笔者曾多次为Windows平台下的编程感慨——越来越方便的操作，越来越强大的功能，越来越简洁的代码使得由代码组成的编程世界中平添的许多色彩与欢乐。  <p>以上可以算作对即将要介绍的C#3.5新特性的一个铺垫。笔者对于C#的爱，胜过其他的任何语言，尤其对于刚刚召开不久的微软2008新技术大会上发布的Visual Studio 2008笔者的爱意更甚。于是，笔者决定将自己对它的爱以文章的形式来表达。  <p>让我们去由此开始，向C#3.5示爱：  <p><b>一、告诉C#3.5</b><b>，我们对爱上它的暧昧－var</b><b>关键字</b>  <p>暧昧？众所周知，C#从出生以来都是很以一种强类型的语言示人的，并不像JavaScript和VB6.0那样给人以&#8220;暧昧&#8221;的感觉啊？而在此处介绍的关键字<i>var</i>，是否让您想起了JavaScript中的定义变量的关键字<i>var</i>？事实上，这两个看似相同的关键字却有本质上的区别。而这个<i>var</i>关键字并非在C#3.5中才出现的，它在C#3.0中便已经存在，笔者之所以在此介绍它，是因为欲介绍3.5，必须而且应该去介绍一下这个在C#3.0中便出现的特性——<b>本地类型推断</b><b>(</b>Local Type Reference)，如若不然，笔者内心便无法安稳。  <p>在C#2.0及其以前的版本中，如若定义一可以向其赋任何值的变量，那么我们需对其以<i>object</i>关键字进行定义，这种变量需要对值类型的进行装箱操作而且在对该变量使用的时候还需要进行相应的拆箱操作，而这种装箱拆箱所耗费的资源实在是笔者所不愿意看到的。  <p>那么，我们既不愿意编写无谓耗费资源的代码，又想去实现<i>object</i>定义变量实现的功能，怎么办？C#3.5为我们提供了一种变量定义方式：  <p>（图1，1.jpg）  <p><i><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image002_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image002" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image002_thumb.jpg" width="190" height="42"></a></i>  <p>看上面的变量定义，奇怪么？其实这就是C#3.5为我们提供的一种新功能——本地类型推断，它可以保护类型安全，而且允许您编写更为&#8220;自由&#8221;的代码。也就是说，我们可以不去考虑变量的类型而直接以<i>var</i>关键字去修饰它，编译器能够从给变量赋值的表达式中智能推断出变量的类型。它和COM模型中的Variant关键字定义出的变量完全不同，COM中的<i>Variant</i>关键字是后期绑定的一种方式，在编译期没有检测，仅在代码运行时才会出现它自身存在的问题，而且一不小心就会出现一大堆令人讨厌的Bug。而C#中这个var定义的变量在编译其便推断出它的类型，并且编译后的IL代码中只包含推断出的类型。  <p>即上面的两行代码完全等同物如下代码：  <p>（图二，2.jpg）  <p><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image004_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image004" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image004_thumb.jpg" width="244" height="35"></a>  <p>那么，既然二者等同，我们为什么还要对它的这种&#8220;暧昧&#8221;情有独衷？事实上，<i>var</i>关键字不仅仅能够实现我们如上所述的功能，它会成为你在使用C#3.5进行编程时非常熟悉的一个朋友，记住这个&#8220;匿名类型(Anonymous Type)&#8221;，也记住这个&#8220;本地类型推断(Local Type Reference)&#8221;。  <p><b>二、告诉C#3.5</b><b>，我们喜欢它纤细的身材——自动属性(Automatic Properties)</b>  <p>还记得我们在C#1.1和C#2.0写类的属性时定义的那个小小的私有变量么？甚至有些人还因为私有变量是否应该和属性定义在一起而展开了争论。那么，现行社会流行的&#8220;减肥&#8221;这个词也可以应用到我们的程序代码上来。  <p>C#3.5为我们提供了<b><i>自动属性</i></b><b><i>(Automatic Properties)</i>,</b>看如下代码：  <p>（图三，3.jpg）  <p><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image006_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image006" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image006_thumb.jpg" width="221" height="21"></a>  <p>很奇怪么？get和set关键字均没有我们以前所熟悉的return value;和_privateField=value;这样的字眼。事实上，这就是我们的这善解人意的代码编译器为我们提供的最新功能自动属性。编译器会为我们定义的Name属性自动生成一私有变量来保存其值。于是，我们原来需要至少三行才能完成的代码现在仅需一行便轻松完成了。  <p>不过，它有自身的局限性，比如说不能在用自动属性定义的属性中加逻辑判断，get和set必须成对出现等。然而，笔者相信并非我们所有的属性均要加上逻辑判断吧？那么，就请去尝试自动属性为我们带来的便利。  <p><b>三、奇怪的&#8220;=&gt;</b><b>&#8221;符号——lambda</b><b>表达式</b>  <p>习惯C#编程的您在C#2.0及其以前见到过这个符号&#8221;=&gt;&#8221;么？这又是一新特性，我们可以将它读作&#8221;lambda表达式&#8221;。  <p>C# 2.0 通用使用匿名方法引入了"传递指针到特定代码"作为参数的功能。这是一个功能强大的概念，但是这种方式您实际传递的是方法的一个指针，而不是代码块。那个引用指向编译时生成的强类型代码。使用泛型，您可获得更大灵活性，但是对泛型类型难以应用标准操作符 。C# 3.0 引入 lambda 表达式，它允许使用更简练的语法来定义匿名方法。  <p>看如下代码片断：  <p>（图四，4.jpg）  <p><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image008_3.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image008" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image008_thumb.jpg" width="244" height="44"></a>  <p>且不说其他部分意义，单来看我们.Where括号之中的部分,c=&gt;c.Address==City.Heze这段代码，我们可以将它理解为，给定c，返回c.Address==City.Heze的记录集，此处就是lambda表达式的应用之一，它广泛应用于我们下期即将介绍的LINQ(Language Integerated Query)中。  <p><b>四、为我们的爱加上更为自由的翅膀——扩展方法</b>  <p>熟知Web编程的朋友们应该对如下这段代码很熟悉：  <p>（图五，5.jpg）  <p><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image010_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image010" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image010_thumb.jpg" width="244" height="12"></a>  <p>其中ReplaceUnSafeChars是一个进行字符器过滤的函数，将传入的字符串中的非法字符过滤，返回一合法的字符串，它通常用于用户向某一数据处理页面提交数据时，为了防止SQL注入或者其他非法入侵而进行的一项工作。为此我们不厌其烦地写类库，在某一项目的解决方案中添加进来自己过滤函数。这种方式是不错，可是，能不能有一种方式让我们更为方便，让我们写出的代码更为优雅？  <p>设想，如果我们能够对系统中定义的数据类型进行扩展，给它增加上我们自己的方法，那岂不是我们可以像strID.ToSring()那样来实现我们自己的过滤方法？  <p>不错，想法有了，自然C#也不会让我们失望——扩展方法(Extension Methods)为我们来解决这一问题。如下图我们定义一个类：  <p>（图六，6.jpg）  <p><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image012_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image012" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image012_thumb.jpg" width="244" height="79"></a>  <p>注意，该类为静态类，并且其中的方法Name为静态方法，其参数o为object类型，并且有关键字this进行修饰。以上这些，就是为系统类型进行扩展时的必备条件。在定义了该类的同一命名空间下的其他类中即可对所有类型使用该Name方法来获取它的ToString()之后的值。我们看编译器是如何来表示的：  <p>（图7，7.jpg）  <p><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image014_2.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image014" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image014_thumb.jpg" width="244" height="46"></a>  <p>我们看到，编译器强大的智能提示功能给我们的提示是(extension) string object.Name()，这是因为我们是对object类进行了扩展，故我们可以对任何类型使用扩展方法Name。  <p>这虽然并不是一个十分大的改动，可是对于我们在代码上的可读性及实用性都会有很大的帮助。我们习惯了从左到右的阅读方式，习惯了在打&#8221;.&#8221;时编译器给出智能提示，所以我们也会毫无理由的习惯&#8220;扩展方法&#8221;。  <p>要注意，对于值类型的变量进行扩展是MS推荐的，可是对于引用类型的变量进行扩展却并未被推荐，因为对于所有的调用都要创建一个对象的拷贝，而这个对象拷贝的创建的花销是我们所不敢随意忽略的。  <p><b>五、令人心动的LINQ</b>  <p>您想过在代码中不写SQL语句就实现对数据库的操作么？当然，笔者并不是指那种通过拖拽数据源控件如SQLDataSource等然后加个GridView或者FormView就去实现对数据的显示、更新的操作。假如有一种工具能够让将我们数据库中的表映射为对象，而且映射这一工作能够自动完成，然后我们就可以通过对这些映射过来的对象进行操作，从而实现对数据表的操作了。  <p>正如笔者上面所说，想法有了，就可以实现。事实上，LINQ并不是属于C#的，更不能说是C#3.5的特性了。不过笔者在这里提出，主要是因为它实在太令人兴奋而且C#3.5中的编程如果没有了对LINQ的使用代码就会逊色许多。  <p>上述两段作为您的&#8220;开胃菜&#8221;，仅令您心动是远远不够的，让我们近距离接触一下LINQ——语言集成查询(Language Integerated Query)。  <p>笔者以LINQ对数据库的操作来对LINQ做一下大概的介绍。  <p>LINQ to SQL 是O/RM(对象关系映射）在.NET Framework（Visual Studio 2008）中的的一种实现，它允许你用.NET 的类来生成一个关系型的数据库。然后你可以用LINQ对从该对象中对数据库进行查询，更新/插入/删除。  <p>LINQ to SQL完全支持事务，视图和存储过程。它还提供了一种方便地在你的数据模型中对集合数据验证和业务逻辑规则的进行验证的方法。  <p>它的基本语法from&#8230; in..select是显得如此优雅，令我不得不为其用如此简洁的代码实现我们以往需要写数行甚至数十行才能够实现的功能感到兴奋。还记得我们在上面介绍&#8220;=&gt;&#8221;lambda表达式时提供的那个小例子么？  <p>（图8，8.jpg）  <p><a href="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image008%5B1%5D.jpg"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" border="0" alt="clip_image008[1]" src="http://www.cnblogs.com/images/cnblogs_com/hanxianlong/WindowsLiveWriter/C3.5_9FB9/clip_image008%5B1%5D_thumb.jpg" width="244" height="44"></a>  <p>这就是最简单的LINQ实现。其中customers可以是我们从数据库中映射过来的对象，也可以是我们自己定义的某类的实例。它实现的功能是从customers对象实例中查找出所有的Address为Heze的实例，返回值IEnumerable&lt;Customer&gt;类型。LINQ可以实现对所有实现了IEnumuerable接口的对象进行查询  <p>事实上，LINQ不仅可以to DataSet,也不仅可以to SQL,也不仅可以to XML,笔者认为，LINQ是可以to Everything的。  <p><b>六 </b><b>结语</b>  <p>以上仅仅是给笔者很大触动并且打动了笔者心的若干功能的一部分，限于篇幅笔者不能一一进行展开，望读者见谅。笔者将在后续的文章中与您分享更多的知识与经验。</p>   <img src ="http://www.cnblogs.com/hanxianlong/aggbug/1196459.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41311/" target="_blank">[新闻]微软每年向Apache捐10万美元支持开源软件</a>]]></description></item><item><title>Visual Studio 2008 Service Pack 1 - BETA发布</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/05/12/1193291.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Mon, 12 May 2008 03:10:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/05/12/1193291.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1193291.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/05/12/1193291.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1193291.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1193291.html</trackback:ping><description><![CDATA[摘要: Visual Studio 2008 SP1 提供了对Visual Studio 2008的各项改进，支持SQL Server 2008和ADO.NET的新特性Entity Framework，许多WPF设计器的改进，Silverlight 项目的WCF模板，.NET Framework的symbols和代码调试支持，控件的改进和增加新的控件（例如Windows From的DataRepeater控件和支持 C++Office 2007 Ribbons ），以及许多的泛型调试和智能感知的支持。这个补丁包还包括改善Visual Studio 的稳定性，性能和安全性。&nbsp;&nbsp;<a href='http://www.cnblogs.com/hanxianlong/archive/2008/05/12/1193291.html'>阅读全文</a><img src ="http://www.cnblogs.com/hanxianlong/aggbug/1193291.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41310/" target="_blank">[新闻]AOL将关闭3个网站以降低成本 集中发力广告</a>]]></description></item><item><title>5点钟的闹钟－谨以此文祝父亲生日快乐！</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/04/25/1170738.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Fri, 25 Apr 2008 03:22:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/04/25/1170738.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1170738.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/04/25/1170738.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1170738.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1170738.html</trackback:ping><description><![CDATA[&nbsp;
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">前天往家打电话，妈跟我说：&#8220;过几天就是你爸的生日了&#8221;，我心头一震。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我曾经无数次地思考，自己现在到过的到底是一种什么样的生活，而自己的理想，又在何方。这些思考使得我经常感觉身心疲惫——虽然，自己才刚二十出头。这种日子，使我对于亲情，对于友情变得麻木，以至于忘记了父亲的生日。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">为了能够在父亲生日这一天给他打个电话问候一下，我特地用手机定了一个今天早晨</span><span lang="EN-US">5</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">：</span><span lang="EN-US">30</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">的备忘录。我怕自己忘记，于是昨晚睡觉前特地叮嘱自己，明天早晨一定要记起这件事。就像我高三时在每个晚上睡觉前都告诉自己第二天早晨一定要早起一样虔诚。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">心中有事时，我在睡觉时会特别的警觉。一哥们的闹钟响了，一个不知听了多少遍的闹钟铃声&#8220;翻开寂寞的旧抽屉，我又看到了你写的诗&#8230;&#8230;&#8221;。我拿起手机，看看时间，是早晨五点。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我拨通了家里的电话号码，响了若干次，电话通了。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">&#8220;爸，起床了么？&#8221;我问。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">&#8220;起来了，一会得去干活了&#8221;，父亲的声音传来。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">&#8230;&#8230;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我没有特意的去说什么爸爸生日快乐之类话，也说不出口。也许是环境，也许是习惯。从小到大，我对父母表达自己的爱时，从不会像电视中那样对父母说：&#8220;爸妈我爱你&#8221;。我所做的，是与父母聊聊天，说说家里的事，说说父母的身体，说说家里的天气，说说村里有什么变化，说说家里的喂养的那几只小羊，还有那只可爱的小猫，和那只被我驯服的了黑狗&#8230;&#8230;在和父母拉家常时，是我最快乐的时候，能记我忘却许多的烦恼。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">有的时候翻开高中时写的一些作文，关于父亲的，关于母亲的，会觉得是如此的怀念。翻开高中时给父母写的信，还有父母写给我的，觉得是如此的亲切。上大学的四年中，我能数得过来给父母写信的次数，也许，是因为有电话了的缘故？</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">五点钟，我想城里人还在沉睡。我也是，虽然我不是城里人。而父亲，已经早早地起床&#8230;&#8230;</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我想对父亲说：&#8220;爸，今天别去了，在家休息一天&#8221;，可我又觉得这话是如此的不好出口。家中的情形，我能够明白。于是我只能默默的以心中为父亲祈祷，不要太累，晚上不要回家太晚，清晨不要起床太早。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">思绪飘飞，我想起了上初中时的情景。每天早晨五点钟，和村里的几个要好的小伙伴一起去上学。然后父母也起床，开始忙碌的一天。唉，算了，往事，不想再去回忆。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我想起高中时的作文上写：&#8220;父爱如山&#8221;，经历了这许多事，才对这个比喻有了一点似乎明白了的意思，父爱，像山一样的巍峨，像山一样的沉稳，也像山一样的雄伟。山立在那里，一言不发，可是你却能从它身上读懂许多的道理。你可以在心情不好时到大山中去大喊，去发泄，去倾诉，也可以在心情阳光时到大山中去大喊，去喊出心中的快乐与激情。无论你对它如何撒娇，如何发怒，山，始终威严的立着，包容着你的一切。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">生活，依旧是生活。父亲依旧是父亲，只是岁月，却已经无情的轧过父亲的额头与双手。</span></p>
<p class="MsoNormal"><span lang="EN-US"><span style="mso-spacerun: yes">&nbsp;</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">&#8220;爸，让我妈给你做点好吃的&#8221;。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">&#8220;吃了吃了，前天你妈都已经给我做了&#8221;——</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我无语，想着父亲，也想着母亲，心中有泪，可表现出来的，只能是坚强。要不，会有人说我像小孩儿。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我不是诗人，所以不能为父亲写诗，</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我也不是作家，所以也不能为父亲写出精彩的篇章。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">我只能用心，用情感，去组织一些胸中涌动的文字，拼凑出一篇能够表达我内心的文章来。</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin">父亲能够听到，我在心中为他唱的这首歌——</span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">那是我小时候</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">常坐在父亲肩头</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">父亲是儿那登天的梯</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">父亲是那拉车的牛</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">忘不了粗茶淡饭将我养大</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">忘不了一声长叹半壶老酒</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">等我长大后</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">山里孩子往外走</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">想儿时一封家书千里写叮嘱</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">盼儿归一袋闷烟满天数星斗</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">都说养儿能防老</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">可儿山高水远他乡留</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">都说养儿为防老</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">可你再苦再累不张口</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">儿只有清歌一曲和泪唱</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">愿天下父母平安度春秋</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">那是我小时候</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">常坐在父亲肩头</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">父亲是儿那登天的梯</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">父亲是那拉车的牛</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">忘不了粗茶淡饭将我养大</span><span style="mso-bidi-font-size: 10.5pt" lang="EN-US"><br />
</span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin; mso-bidi-font-size: 10.5pt">忘不了一声长叹半壶老酒<br />
<br />
<br />
</span></p>
<embed height="51" type="audio/mpeg" width="450" src="http://www.gcedu.net.cn/jiazhangxuexiao/jiajiaozixun/ziyuan/father.mp3 "> </embed />
  <img src ="http://www.cnblogs.com/hanxianlong/aggbug/1170738.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41309/" target="_blank">[新闻]谷歌网页索引数量突破1万亿个</a>]]></description></item><item><title>[网上搜集得到]手机表情符号大全</title><link>http://www.cnblogs.com/hanxianlong/archive/2008/04/17/1157675.html</link><dc:creator>韩现龙</dc:creator><author>韩现龙</author><pubDate>Thu, 17 Apr 2008 03:14:00 GMT</pubDate><guid>http://www.cnblogs.com/hanxianlong/archive/2008/04/17/1157675.html</guid><wfw:comment>http://www.cnblogs.com/hanxianlong/comments/1157675.html</wfw:comment><comments>http://www.cnblogs.com/hanxianlong/archive/2008/04/17/1157675.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/hanxianlong/comments/commentRss/1157675.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/hanxianlong/services/trackbacks/1157675.html</trackback:ping><description><![CDATA[象不象就看你的想像力啰 <br />
<br />
超可爱表情符号 <br />
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝ <br />
⊙▂⊙　⊙０⊙　⊙︿⊙　⊙&#969;⊙　⊙﹏⊙　⊙△⊙　⊙▽⊙ <br />
?▂?　?０?　?︿?　?&#969;?　?﹏?　?△?　　?▽? <br />
&#8745;▂&#8745;　&#8745;０&#8745;　&#8745;︿&#8745;　&#8745;&#969;&#8745;　&#8745;﹏&#8745;　&#8745;△&#8745;　&#8745;▽&#8745; <br />
●▂●　　●０●　　●︿●　　●&#969;●　　●﹏●　　●△● 　●▽● <br />
&#8746;▂&#8746;　&#8746;０&#8746;　&#8746;︿&#8746;　&#8746;&#969;&#8746;　&#8746;﹏&#8746;　&#8746;△&#8746;　&#8746;▽&#8746; <br />
≧▂≦　≧０≦　≧︿≦　≧&#969;≦　≧﹏≦　≧△≦　≧▽≦ <br />
＞▂＜　＞０＜　＞︿＜　＞&#969;＜　＞﹏＜　＞△＜　＞▽＜ <br />
╯▂╰　╯０╰　╯︿╰　╯&#969;╰　╯﹏╰　╯△╰　╯▽╰ <br />
＋▂＋　＋０＋　＋︿＋　＋&#969;＋　＋﹏＋ ＋△＋　＋▽＋ <br />
ˋ▂ˊ　ˋ０ˊ　ˋ︿ˊ　ˋ&#969;ˊ　ˋ﹏ˊ　ˋ△ˊ　ˋ▽ˊ <br />
ˇ▂ˇ　ˇ０ˇ　ˇ︿ˇ　ˇ&#969;ˇ　ˇ﹏ˇ　　ˇ△ˇ　ˇ▽ˇ <br />
˙▂˙　˙０˙　˙︿˙　˙&#969;˙　˙﹏˙　˙△˙　˙▽˙ <br />
&#8801;(▔﹏▔)&#8801; ⊙﹏⊙∥∣&#176; ˋ︿ˊ﹀-# ╯︿╰﹀ (=‵&#8242;=) <br />
&lt;(‵^&#8242;)&gt; 　o(?""?)o　(ˉ▽ˉ；)　(-__-)b　＼　＿　／ <br />
　 <br />
￣□￣｜｜　　------\(˙&lt;&gt;˙)/------　　　&lt;("""O""")&gt; <br />
(#‵&#8242;)凸 　(‵▽&#8242;)&#968; 　（&#176;&#959;&#176;）~ @　　　(^人^) <br />
(O ^ ~ ^ O) 　(＊?&#8595;˙＊)　[&gt;/&lt;]　&#8595;。&#965;。&#8595;　 <br />
(*^︹^*) 　( /。 ) 　　( ' &#8211; ' ) ( ^３^ )╱~~　 <br />
(；&#176;○&#176; ) ( &gt; c &lt; ) <br />
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝ 　　　　　 <br />
||||| 动物篇 ||||| <br />
&lt;。)#)))≦ 烤鱼　(??)nnn 毛毛虫 <br />
(0^◇^0)/ 麻雀 <br />
&lt;*)&gt;&gt; &gt;=&lt; 鱼骨头　(=^ ^=) 猫　/(*w*) 兔子 <br />
&#8801;[。。]&#8801; 螃蟹　(ˉ(&#8734;)ˉ) 猪　■D" 咖啡杯 <br />
(:&#8801; 水母　(。。)～ 蝌蚪　&#949;==3 骨头 <br />
&lt;□:&#8801; 乌贼　&lt;‵▽&#8242;&gt; 老虎　○●○— 烤丸子 <br />
(:◎)&#8801; 章鱼　&#950;。&#8801; 狮子　(●-●) 太阳眼镜 <br />
@/" 蜗牛　&#931;^)/ 乌鸦　--&lt;-&lt;-&lt;@ 玫瑰花 <br />
(((●&lt; 蟑螂　(=^&#969;^=) 狐狸　＜※ 花束 <br />
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝ <br />
||||| 杂物篇 ||||| <br />
■D〞咖啡杯 &#8736;※ 花束　　 8＜ 小剪刀 <br />
＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝＝ 　 <br />
||||| 满意.满足 <br />
&lt;(￣︶￣)&gt; []~(￣▽￣)~* (￣﹏￣) (￣ˇ￣) <br />
(￣︶￣)&gt; &lt;(￣︶￣)/ (‵﹏&#8242;) ╮(‵▽&#8242;)╭ <br />
(‵▽&#8242;)/ <br />
============================ <br />
||||| 万岁.真棒.开心~ <br />
≧▽≦y (/≧▽≦/) (≧▽≦)y (/≧▽≦)/~┴┴ (≧▽≦)(@) <br />
(≧3≦)/ (≧&#969;≦)/ o(≧&#969;≦)o o(≧o≦)o ˋ( &#176; ▽、&#176; ) <br />
o(≧v≦)o ┴┴~(≧▽≦)/~┴┴ ≧□≦○ <br />
============================ <br />
||||| 惊讶.吃惊~ <br />
︽⊙＿⊙︽ (⊙＿⊙) (@口@) &#931;(@)(￣?￣)+ &#931;(⊙▽⊙"a <br />
(@[]@!!) ㄟ(≧◇≦)ㄏ(￣&#949;(#￣) &#931;( &#176; △ &#176;|||)︴ <br />
=========================== <br />
||||| 无奈.装傻~ <br />
(￣▽￣)~* (￣▽￣)" ╮(╯▽╰)╭ ╮(￣▽￣)╭ <br />
=￣&#969;￣= (￣３￣)a ￣▽￣ ╮(╯3╰)╭ <br />
╮(╯3╰)╭ ╮(╯_╰)╭ (= 0 =)y o(︶︿︶)o <br />
(￣.￣) (￣&lt; ￣)&gt; (～o￣▽￣)～o ~。。。(~￣▽￣)~[] <br />
ˋ(&#8242;～‵)ˊ <br />
└(^o^)┘; 偶头好状壮ㄋㄟ``` <br />
﹌○﹋ 喔嗨呦^ˇ^&#8801; <br />
=^_^= 温馨的微笑!!! <br />
Y(^_^)Y 举双手胜利 <br />
^o^/ 欢呼 <br />
^o^y 胜利^o^y <br />
↖(^&#969;^)↗ 小猪为你打气！ <br />
~^o^~ 加油呦! <br />
*^?^* 笑，打 <br />
*^&#959;^* 哦～，呵呵傻笑 <br />
*^◎^* 呵呵大笑（嘴唇好厚） <br />
*^&#247;^* 得意的笑（有上下唇的哟） <br />
~~~^_^~~~ 笑毙啰（笑得连眼泪都蹦出来了...） <br />
(-.-)=3 松ㄌ一口气~ <br />
~~~///(^v^)\~~~ 微笑表示友善!!!~哈~哈~ <br />
~@^_^@~ 可爱呦! <br />
\*^o^*// 可爱ㄋㄟ~ <br />
~*.*~ 害羞又迷人的小女生 <br />
#^_^# 脸红了!! <br />
&#8745;__&#8745;y 耶~~^^ (装可爱?!) <br />
（*^＠^*） 乖～（还含个奶嘴哦） X﹏X糟糕．． 完蛋的意思呀~~ <br />
(&#176; &#959;&#176;)~@ 晕倒了.. <br />
{{{(&gt;_&lt;)}}} 发抖 <br />
╯﹏╰ 粉无奈~~ <br />
(╯-╰)/ 很没劲/无耐的意思 <br />
（╯︿╰﹀ 一脸苦瓜 <br />
︸_︸ 粉无奈..粉悲情 <br />
-____-" 唉~~别提了..... <br />
。_。 受到打击，表情呈现呆滞样～ <br />
（*@︿@*﹀ 悲，晕 <br />
-︵- 好伤心. <br />
//(ㄒoㄒ)// 流泪中... <br />
::&gt;_&lt;:: 哭 <br />
〒_〒 鸣~~我在哭... <br />
%&gt;_&lt;% 我要哭了哦... <br />
╰_╯我发火了!! 生气的意思~~~眉毛都翘起来~~ <br />
&gt;_&lt;# 粉生气~冒青筋 <br />
@x@ 生气 <br />
（ˋ︿ˊ﹀-# 生气 <br />
（＞﹏＜） 不～ <br />
（*+﹏+*）~ @ 受不了～ <br />
x__x, 唉..... 别哭了! <br />
&gt;_&lt;||| 很尴尬~!!! <br />
^_^; 尴尬 <br />
⊙﹏⊙∥∣&#176; 真尴尬～～ <br />
^_^||| 好尴尬！ <br />
^_^" 尴尬的笑..... <br />
&#8594;_&#8594; 怀疑的眼神~~ <br />
..@_@|||||.. 头昏眼花 <br />
&#8230;(⊙_⊙;)&#8230; ○圭~○列~~怎么酱？ <br />
o_o .... 沉思(说穿了"呆滞状况") <br />
O__O" 呆滞的眼神~~~!! <br />
///^_^....... 造成"冷"...干笑~ <br />
?o?||| 听无(就是听不懂ㄉ意思啦^^) <br />
(　)? 什么意思?? <br />
(+_+)? 不知道你在什么 <br />
（?&#949;?）? 哩公啥哇听无啦~ <br />
o_O??? 发生啥事? <br />
@_@a 搔头，疑惑 <br />
一 一+ 锐利的眼神~ <br />
&gt;"&lt;|||| 伤脑筋的意思~ ‵(*&gt;﹏&lt;*)&#8242; 好刺激.. <br />
（*@&#959;@*） 哇～ <br />
O_o 惊讶~~~ <br />
（⊙ｏ⊙） 目瞪口呆 <br />
（&#176;&#959;&#176;）~ @ 晕倒，不省人事 <br />
*@_@* 崇拜的眼神;眼睛为之一亮 <br />
★~★ 见到偶像眼睛为之一亮 <br />
^◎- 爱你呦~~ <br />
(*^?^*) 啵一个! <br />
(^_^)&#8736;※ 送妳一束花 <br />
（*^︹^*︺ 羞羞 <br />
‵（*^﹏^*）&#8242; 超级羞羞 <br />
‵（*&#8745;_&#8745;*）&#8242; 献上 <br />
~_~ 想睡觉了的意思!! <br />
(～ o ～)~zZ 我想睡啦～ <br />
&#960;_&#960;? 打瞌睡 <br />
=@~@= 一个看到美眉就紧张+脸红的大学生。 <br />
@(一-一) 秘密--------嘘``````` <br />
（ˇ︿ˇ﹀ 不以为然 <br />
(^人^) 拜托啦^^~ <br />
(^_^)/~~ 掰掰~ <br />
*x*... ... 你*我也没用,我劫对不会搜粗弃的! <br />
~w_w~ ... ... 嘘!别吵偶,让偶思考一下! <br />
（ˇ?ˇ） 嗯～，思考中 <br />
．．&lt;{=．．． 乌鸦乌鸦飞过去表示冷场,无趣..... <br />
（*&gt;.&lt;*）~ @ 酸～ <br />
~`o`~ 了解 <br />
ˋ_ˊ* 你不要命啦!!! <br />
-.- 装蒜 ~&gt;_&lt;~+ 好感人唷... <br />
Q_Q 流眼泪的样子!! <br />
（＋﹏＋） 流泪，感动 <br />
‵（＋﹏＋）&#8242; 超级感动，眼泪不停 <br />
^_^o ~~~ 感动感动~~~ 
 <img src ="http://www.cnblogs.com/hanxianlong/aggbug/1157675.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41308/" target="_blank">[新闻]预装 Ubuntu 8.04 的 Dell 笔记本发售</a>]]></description></item></channel></rss>