<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_Flex 刻录时光</title><subtitle type="text">专注于.Net企业开发</subtitle><id>http://feed.cnblogs.com/blog/u/28074/rss</id><updated>2012-02-10T08:45:15Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/28074/rss"/><entry><id>http://www.cnblogs.com/4kapple/archive/2012/02/10/2345632.html</id><title type="text">VSTO开发中VS2010和Office 2003的问题及解决方案</title><summary type="text">因为公司需要，将以前的VSTO项目升级为Net4.0环境，用VS2010开发，结果悲剧了，VS2010的VSTO不支持Office2003，Google了一番，在博客园找到这篇文章，VSTO开发中VS2010和Office 2003的问题，明确说明Office2003已经不被支持，建议升级到Office07或10。不过如果想继续兼容Office2003，文中给出了另外两种方法：使用Extensibility建立插件或者使用COM Shim Wizards辅助托管程序的开发。本文则成功实现Extensibility建立插件的方法，供大家参考。1 添加Extebsibility的引用首先用VS20</summary><published>2012-02-10T08:41:00Z</published><updated>2012-02-10T08:41:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2012/02/10/2345632.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2012/02/10/2345632.html"/><content type="html">&lt;div&gt;&lt;div&gt;因为公司需要，将以前的VSTO项目升级为Net4.0环境，用VS2010开发，结果悲剧了，VS2010的VSTO不支持Office2003，Google了一番，在博客园找到这篇文章，&lt;a href="http://www.cnblogs.com/2018/archive/2010/11/19/1881964.html"&gt;&lt;strong&gt;VSTO开发中VS2010和Office 2003的问题&lt;/strong&gt;&lt;/a&gt;，明确说明Office2003已经不被支持，建议升级到Office07或10。不过如果想继续兼容Office2003，文中给出了另外两种方法：使用Extensibility建立插件或者使用COM Shim Wizards辅助托管程序的开发。&lt;/div&gt;&lt;div&gt;本文则成功实现Extensibility建立插件的方法，供大家参考。&lt;/div&gt;&lt;div&gt;&lt;strong&gt;1 添加Extebsibility的引用&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;首先用VS2010新建一个Class Library的项目，Framework设置为4.0，然后添加Extensibility的引用，&lt;/div&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/4kapple/353667/r_1.JPG" width="464" height="380" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;现在可以去代码中引用命名空间using Extensibility了。&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;Extensibility;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Runtime.InteropServices;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;Office&amp;nbsp;=&amp;nbsp;Microsoft.Office.Core;&amp;nbsp;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;2 设置Guid和ProgId&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;如下所示设置好Guid和ProgId，这个有点类似Com接口。&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;[GuidAttribute(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;2752EB47-5BC9-4F67-853C-E7A9E35B0FF9&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;),&amp;nbsp;ProgId(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ATSExcelAddIn.Connect&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;)]&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;Connect&amp;nbsp;:&amp;nbsp;Object,&amp;nbsp;Extensibility.IDTExtensibility2&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Guid可以用VS的Guid工具辅助生成；ProgId就是程序名+类名称。&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/4kapple/353667/r_2.JPG" alt="" /&gt;&lt;/p&gt;&lt;div&gt;&lt;strong&gt;3 实现IDTExtensibility2接口&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;让你的Class继承自Object，因为Object是Net所有Type的基类，然后实现IDTExtensibility2接口，主要有以下几个函数：&lt;/div&gt;&lt;div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;OnConnection(&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;application,&amp;nbsp;Extensibility.ext_ConnectMode&amp;nbsp;connectMode,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;addInInst,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&amp;nbsp;System.Array&amp;nbsp;custom)&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;OnDisconnection(Extensibility.ext_DisconnectMode&amp;nbsp;disconnectMode,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&amp;nbsp;System.Array&amp;nbsp;custom)&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;OnAddInsUpdate(&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&amp;nbsp;System.Array&amp;nbsp;custom)&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;OnStartupComplete(&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&amp;nbsp;System.Array&amp;nbsp;custom)&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;OnBeginShutdown(&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&amp;nbsp;System.Array&amp;nbsp;custom)&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;我们的代码主要放在OnConnection函数中，如:&lt;/div&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;"&gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;OnConnection(&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;application,&amp;nbsp;Extensibility.ext_ConnectMode&amp;nbsp;connectMode,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;addInInst,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;ref&lt;/span&gt;&amp;nbsp;System.Array&amp;nbsp;custom)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;applicationObject&amp;nbsp;=&amp;nbsp;application;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;addInInstance&amp;nbsp;=&amp;nbsp;addInInst;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;.appExcel&amp;nbsp;=&amp;nbsp;(Excel.Application)application;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.Diagnostics.Debug.WriteLine(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;ATSAddIn.OnConnection:&amp;nbsp;App&amp;nbsp;is&amp;nbsp;{0}&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;.appExcel.ActiveWorkbook.FullName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuBar&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;this&lt;/span&gt;.appExcel.CommandBars.ActiveMenuBar;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuATS32&amp;nbsp;=&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(Office.CommandBarPopup)menuBar.Controls.Add(Type:&amp;nbsp;Office.MsoControlType.msoControlPopup,&amp;nbsp;Temporary:&amp;nbsp;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;menuATS32.Caption&amp;nbsp;=&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;amp;Mytest&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;/div&gt;&lt;p&gt;}&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;4 添加安装项目&lt;/strong&gt;&lt;/p&gt;&lt;div&gt;因为这是一个Dll项目，不能像VSTO项目那样直接F5加载到Excel中调试，我们需要添加一个Setup项目，然后使用Install来注册到Excel的插件中。&lt;/div&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/4kapple/353667/r_3.JPG" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/4kapple/353667/r_4.JPG" alt="" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5 安装，预览效果&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;打开Excel2003，现在已经可以在菜单上看见我们的程序了。&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="http://images.cnblogs.com/cnblogs_com/4kapple/353667/r_5.JPG" alt="" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;分享完毕，感谢大家的阅读。&amp;nbsp;&lt;/p&gt;&lt;span style="background-color: #f5f8fa; color: #555555; font-family: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; font-size: 12px; line-height: 24px; text-align: left; "&gt;&lt;/span&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/2345632.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2012/02/10/2345632.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/12/31/2308619.html</id><title type="text">如何使用缓存提高程序性能</title><summary type="text">1 写在前面此文主要参考了园子里以下两篇文章：黄聪，Microsoft Enterprise Library 5.0 系列(一) : Caching Application Block (初级)顾磊，[EntLib]微软企业库5.0 学习之路——第四步、使用缓存提高网站的性能（EntLib Caching)2 前面两篇博文写的很好，很全面，为何还需要本文？大家可以点进去看下前面的文章，黄聪写的是企业库Cache的基本用法，顾磊的文章比较深入，而且自定义了CacheHelper类，实用性更强，我也抄袭了这个类（^_^ ）。我写此文的目的主要是记录下如果在项目中引入操作Cache、缓存哪些内容及最</summary><published>2011-12-31T05:27:00Z</published><updated>2011-12-31T05:27:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/12/31/2308619.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/12/31/2308619.html"/><content type="html">&lt;div&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;strong&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;1 &lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;写在前面&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;此文主要参考了园子里以下两篇文章：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;黄聪，&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;&lt;a href="http://www.cnblogs.com/huangcong/archive/2010/05/27/1744843.html" target="_blank"&gt;Microsoft Enterprise Library 5.0 &lt;span style="font-family:宋体;"&gt;系列&lt;/span&gt;(&lt;span style="font-family:宋体;"&gt;一&lt;/span&gt;) : Caching Application Block (&lt;span style="font-family:宋体;"&gt;初级&lt;/span&gt;)&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;顾磊，&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;&lt;a href="http://www.cnblogs.com/kyo-yo/archive/2010/06/24/Learning-EntLib-Forth-Use-Caching.html" target="_blank"&gt;[EntLib]&lt;span style="font-family:宋体;"&gt;微软企业库&lt;/span&gt;5.0 &lt;span style="font-family:宋体;"&gt;学习之路&lt;/span&gt;&amp;#8212;&amp;#8212;&lt;span style="font-family:宋体;"&gt;第四步、使用缓存提高网站的性能（&lt;/span&gt;EntLib Caching)&amp;nbsp;&lt;/a&gt;&lt;/span&gt;&lt;span style="line-height: 15.75pt; "&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;strong&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;2 &lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;前面两篇博文写的很好，很全面，为何还需要本文？&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;大家可以点进去看下前面的文章，黄聪写的是企业库&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;Cache&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;的&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;基本用法，顾磊的文章比较深入，而且自定义了&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;CacheHelper&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;类，实用性更强，我也抄袭了这个类（&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;^_^ &lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;）。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;我写此文的目的主要是记录下如果在项目中引入操作&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;Cache&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;、缓存哪些内容及最后的单元测试等&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;~&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;主要是在缓存哪些数据的问题上，可能和顾磊的文章有些不同。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;strong&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;3 &lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;项目中引入&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;Cache&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;首先从微软网站下载并安装&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;Enterprise Library 5.0&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;，&lt;/span&gt; &lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;我这里&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;Cache&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;主要用在&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;DataAccess&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;这个项目中，是一个类库项目，所以&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;Config&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;的东西先不用配置，直接添加&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;Microsoft.Practices.EnterpriseLibrary.Caching.dll&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;的引用，&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p style="margin-top:3.75pt;margin-right:0cm;margin-bottom:3.75pt;margin-left: 0cm;line-height:15.75pt"&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;然后添加&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: Verdana; "&gt;CacheHelper&lt;/span&gt;&lt;span style="font-size: 10.5pt; font-family: 宋体; "&gt;类，代码：&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('c578189a-cd89-486f-930a-c453bacd334c')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_c578189a-cd89-486f-930a-c453bacd334c" onclick="cnblogs_code_hide('c578189a-cd89-486f-930a-c453bacd334c',event)" style="display:none"&gt;&lt;div id="cnblogs_code_open_c578189a-cd89-486f-930a-c453bacd334c" &gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Collections.Generic;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Linq;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Text;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;Microsoft.Practices.EnterpriseLibrary.Caching;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;Microsoft.Practices.EnterpriseLibrary.Caching.Expirations;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;Microsoft.Practices.EnterpriseLibrary.Common.Configuration;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;System.Reflection;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;namespace&lt;/span&gt;&amp;nbsp;DataAccess&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;CacheHelper&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;ICacheManager&amp;nbsp;cache&amp;nbsp;=&amp;nbsp;CacheFactory.GetCacheManager();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Add&amp;nbsp;Cache&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param&amp;nbsp;name="key"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param&amp;nbsp;name="value"&amp;gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param&amp;nbsp;name="isRefresh"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;if&amp;nbsp;true,&amp;nbsp;should&amp;nbsp;reload&amp;nbsp;data&amp;nbsp;every&amp;nbsp;5&amp;nbsp;mins;&amp;nbsp;default&amp;nbsp;value&amp;nbsp;=&amp;nbsp;false&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Add(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;key,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;value,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;bool&lt;/span&gt;&amp;nbsp;isRefresh)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(isRefresh)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cache.Add(key,&amp;nbsp;value,&amp;nbsp;CacheItemPriority.Normal,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;ATSCacheItemRefreshAction(),&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;AbsoluteTime(TimeSpan.FromMinutes(&lt;span style="color: #800080;"&gt;5&lt;/span&gt;)));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cache.Add(key,&amp;nbsp;value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Summary:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Adds&amp;nbsp;new&amp;nbsp;CacheItem&amp;nbsp;to&amp;nbsp;cache.&amp;nbsp;If&amp;nbsp;another&amp;nbsp;item&amp;nbsp;already&amp;nbsp;exists&amp;nbsp;with&amp;nbsp;the&amp;nbsp;same&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key,&amp;nbsp;that&amp;nbsp;item&amp;nbsp;is&amp;nbsp;removed&amp;nbsp;before&amp;nbsp;the&amp;nbsp;new&amp;nbsp;item&amp;nbsp;is&amp;nbsp;added.&amp;nbsp;If&amp;nbsp;any&amp;nbsp;failure&amp;nbsp;occurs&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;during&amp;nbsp;this&amp;nbsp;process,&amp;nbsp;the&amp;nbsp;cache&amp;nbsp;will&amp;nbsp;not&amp;nbsp;contain&amp;nbsp;the&amp;nbsp;item&amp;nbsp;being&amp;nbsp;added.&amp;nbsp;Items&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;added&amp;nbsp;with&amp;nbsp;this&amp;nbsp;method&amp;nbsp;will&amp;nbsp;be&amp;nbsp;not&amp;nbsp;expire,&amp;nbsp;and&amp;nbsp;will&amp;nbsp;have&amp;nbsp;a&amp;nbsp;Normal&amp;nbsp;Microsoft.Practices.EnterpriseLibrary.Caching.CacheItemPriority&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;priority.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Parameters:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;key:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Identifier&amp;nbsp;for&amp;nbsp;this&amp;nbsp;CacheItem&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;value:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Value&amp;nbsp;to&amp;nbsp;be&amp;nbsp;stored&amp;nbsp;in&amp;nbsp;cache.&amp;nbsp;May&amp;nbsp;be&amp;nbsp;null.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Exceptions:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.ArgumentNullException:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Provided&amp;nbsp;key&amp;nbsp;is&amp;nbsp;null&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.ArgumentException:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Provided&amp;nbsp;key&amp;nbsp;is&amp;nbsp;an&amp;nbsp;empty&amp;nbsp;string&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;Remarks:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The&amp;nbsp;CacheManager&amp;nbsp;can&amp;nbsp;be&amp;nbsp;configured&amp;nbsp;to&amp;nbsp;use&amp;nbsp;different&amp;nbsp;storage&amp;nbsp;mechanisms&amp;nbsp;in&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;which&amp;nbsp;to&amp;nbsp;store&amp;nbsp;the&amp;nbsp;CacheItems.&amp;nbsp;&amp;nbsp;Each&amp;nbsp;of&amp;nbsp;these&amp;nbsp;storage&amp;nbsp;mechanisms&amp;nbsp;can&amp;nbsp;throw&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;exceptions&amp;nbsp;particular&amp;nbsp;to&amp;nbsp;their&amp;nbsp;own&amp;nbsp;implementations.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Add(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;key,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;value)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Add(key,&amp;nbsp;value,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;false&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;Get(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;key)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;cache.GetData(key);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Remove(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;key)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cache.Remove(key);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[Serializable]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;class&lt;/span&gt;&amp;nbsp;ATSCacheItemRefreshAction&amp;nbsp;:&amp;nbsp;ICacheItemRefreshAction&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;#region&lt;/span&gt;&amp;nbsp;ICacheItemRefreshAction&amp;nbsp;Members&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;Refresh(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;removedKey,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;object&lt;/span&gt;&amp;nbsp;expiredValue,&amp;nbsp;CacheItemRemovedReason&amp;nbsp;removalReason)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;when&amp;nbsp;expired,&amp;nbsp;reload&amp;nbsp;it.&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(removalReason&amp;nbsp;==&amp;nbsp;CacheItemRemovedReason.Expired)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ICacheManager&amp;nbsp;c&amp;nbsp;=&amp;nbsp;CacheFactory.GetCacheManager();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;c.Add(removedKey,&amp;nbsp;expiredValue);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;#endregion&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;4 &lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;缓存数据&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;在顾磊的文章中，他主要缓存一些&lt;/span&gt;Class&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;，如&lt;/span&gt;ClassInfoService&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;、&lt;/span&gt;StudentService&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;等，代码如下：&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('d45be942-dda6-4796-8479-b07218017e70')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_d45be942-dda6-4796-8479-b07218017e70" onclick="cnblogs_code_hide('d45be942-dda6-4796-8479-b07218017e70',event)" style="display:none"&gt;&lt;div id="cnblogs_code_open_d45be942-dda6-4796-8479-b07218017e70" &gt;&lt;div&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;通用对象反射(包含缓存)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param&amp;nbsp;name="className"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;要反射的类名&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;T&amp;nbsp;CreateObject(&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;className)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&amp;nbsp;typeName&amp;nbsp;=&amp;nbsp;assemblyString&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;.&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&amp;nbsp;+&amp;nbsp;className;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;判断对象是否被缓存,如果已经缓存则直接从缓存中读取,反之则直接反射并缓存&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;(T)CacheHelper.GetCache(typeName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(obj&amp;nbsp;==&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;obj&amp;nbsp;=&amp;nbsp;(T)Assembly.Load(assemblyString).CreateInstance(typeName,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CacheHelper.Add(typeName,&amp;nbsp;obj,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;obj;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;IStudentService&amp;nbsp;CreateStudent()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;&amp;nbsp;typeName&amp;nbsp;=&amp;nbsp;assemblyString&amp;nbsp;+&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;.StudentService&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(CacheHelper.GetCache(typeName)&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;(IStudentService)CacheHelper.GetCache(typeName);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IStudentService&amp;nbsp;service&amp;nbsp;=&amp;nbsp;(IStudentService)Assembly.Load(assemblyString).CreateInstance(typeName,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CacheHelper.Add(typeName,&amp;nbsp;service,&amp;nbsp;&lt;span style="color: #0000FF;"&gt;true&lt;/span&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;service;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family: 宋体; "&gt;而像&lt;/span&gt;StudentService&lt;span style="font-family: 宋体; "&gt;这种&lt;/span&gt;Class&lt;span style="font-family: 宋体; "&gt;，如果&lt;/span&gt;New StudentService()&lt;span style="font-family: 宋体; "&gt;这样一个实例的话，所占的&lt;/span&gt;CPU&lt;span style="font-family: 宋体; "&gt;和内存都是很小的，我觉得更有必要的是缓存数据，从数据库中查询回来的数据。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-family:宋体;Times New Roman&amp;quot;;Times New Roman&amp;quot;"&gt;我们看下顾磊代码中如何操作数据的：&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size:9.5pt;font-family:Consolas; color:blue;"&gt;class&lt;/span&gt;&lt;span style="font-size:9.5pt; font-family:Consolas;"&gt; &lt;span style="color:#2B91AF"&gt;StudentManage&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:9.5pt;font-family:宋体;color:#2B91AF;"&gt;：&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('0a7fb2db-2a1b-446c-8cb1-34d6eecea982')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_0a7fb2db-2a1b-446c-8cb1-34d6eecea982" onclick="cnblogs_code_hide('0a7fb2db-2a1b-446c-8cb1-34d6eecea982',event)" style="display:none"&gt;&lt;div id="cnblogs_code_open_0a7fb2db-2a1b-446c-8cb1-34d6eecea982" &gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;static&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;readonly&lt;/span&gt;&amp;nbsp;IStudentService&amp;nbsp;studentService&amp;nbsp;=&amp;nbsp;DataAccess&amp;lt;IStudentService&amp;gt;.CreateObject(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;StudentService&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;Student&amp;nbsp;SelectById(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;id)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;studentService.SelectById(id);&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: blue; "&gt;class&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; "&gt; &lt;span style="color:#2B91AF"&gt;StudentService&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: 宋体; color: #2b91af; "&gt;：&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('b24e3df0-4f9c-4ecd-8a15-9e6fe999823a')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_b24e3df0-4f9c-4ecd-8a15-9e6fe999823a" onclick="cnblogs_code_hide('b24e3df0-4f9c-4ecd-8a15-9e6fe999823a',event)" style="display:none"&gt;&#xD;
&lt;div id="cnblogs_code_open_b24e3df0-4f9c-4ecd-8a15-9e6fe999823a" &gt;&#xD;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;根据学生ID查询学生对象&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;param&amp;nbsp;name="id"&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;学生ID&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/param&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;Student&amp;nbsp;SelectById(&lt;span style="color: #0000FF;"&gt;int&lt;/span&gt;&amp;nbsp;id)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Student&amp;nbsp;student&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Database&amp;nbsp;db&amp;nbsp;=&amp;nbsp;DBHelper.CreateDataBase();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder&amp;nbsp;sb&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;StringBuilder();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sb.Append(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;select&amp;nbsp;*&amp;nbsp;from&amp;nbsp;Student&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sb.Append(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;where&amp;nbsp;ID=@ID&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DbCommand&amp;nbsp;cmd&amp;nbsp;=&amp;nbsp;db.GetSqlStringCommand(sb.ToString());&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.AddInParameter(cmd,&amp;nbsp;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;@ID&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;DbType.Int32,&amp;nbsp;id);&lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;using&lt;/span&gt;&amp;nbsp;(IDataReader&amp;nbsp;reader&amp;nbsp;=&amp;nbsp;db.ExecuteReader(cmd))&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(reader.Read())&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;student&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;Student()&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Id&amp;nbsp;=&amp;nbsp;reader.GetInt32(&lt;span style="color: #800080;"&gt;0&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ClassId&amp;nbsp;=&amp;nbsp;reader.GetInt32(&lt;span style="color: #800080;"&gt;1&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sid&amp;nbsp;=&amp;nbsp;reader.GetString(&lt;span style="color: #800080;"&gt;2&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Password&amp;nbsp;=&amp;nbsp;reader.GetString(&lt;span style="color: #800080;"&gt;3&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Name&amp;nbsp;=&amp;nbsp;reader.GetString(&lt;span style="color: #800080;"&gt;4&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Sex&amp;nbsp;=&amp;nbsp;reader.GetInt32(&lt;span style="color: #800080;"&gt;5&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Birthday&amp;nbsp;=&amp;nbsp;reader.GetDateTime(&lt;span style="color: #800080;"&gt;6&lt;/span&gt;),&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;IsAdmin&amp;nbsp;=&amp;nbsp;reader.GetInt32(&lt;span style="color: #800080;"&gt;7&lt;/span&gt;)&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&#xD;
&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;student;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9.5pt; font-family: 宋体; color: #2b91af; "&gt;大家从上面的代码可以看出，缓存中存放了&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: #2b91af; "&gt;StudentService&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: 宋体; color: #2b91af; "&gt;这个类，但是在&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: #2b91af; "&gt;SelectById&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: 宋体; color: #2b91af; "&gt;（&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: Consolas; color: #2b91af; "&gt;int id&lt;/span&gt;&lt;span style="font-size: 9.5pt; font-family: 宋体; color: #2b91af; "&gt;）这个函数中，并没有缓存任何东西，还是每次从数据库中查询数据，这样设计缓存，对程序性能的提升是十分有限的。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;5 我程序中如何缓存数据&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size:9.5pt;font-family:宋体;color:#2B91AF;"&gt;我还是用上面顾磊的代码吧，那个好理解。然后我将每次查询到的数据缓存起来，如果下次查询，先从缓存中取数据，有则自动返回数据；没有，则从数据库中查询，然后添加到缓存中，缓存有自动的数据过期机制，过期的数据会自动删除。&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('68747c56-7158-4cf0-a8b5-8bce1865cdf8')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_b9e64634-7988-4432-b938-6dde39498590" onclick="cnblogs_code_hide('b9e64634-7988-4432-b938-6dde39498590',event)" style="display:none"&gt;&lt;div id="cnblogs_code_open_b9e64634-7988-4432-b938-6dde39498590" &gt;&lt;div&gt;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;List&amp;lt;tblTable&amp;gt;&amp;nbsp;GetQueryList(IParameters&amp;lt;tblTable&amp;gt;&amp;nbsp;t)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TableParameters&amp;nbsp;param&amp;nbsp;=&amp;nbsp;(TableParameters)t;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;tblTable&amp;gt;&amp;nbsp;query&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;List&amp;lt;tblTable&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(param.tableGuid&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tblTable&amp;nbsp;result&amp;nbsp;=&amp;nbsp;(tblTable)CacheHelper.Get(GuidTable&amp;nbsp;+&amp;nbsp;param.tableGuid.Value.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(result&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query.Add(result);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;query;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&amp;nbsp;_tableQuery&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt;&amp;nbsp;c&amp;nbsp;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&amp;nbsp;db.tblTable.Expand(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;TableType&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;).Expand(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;TableFormat&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;).Expand(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Scheme&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;).Expand(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index1Type&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;).Expand(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Index2Type&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;).Expand(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;LatestTableVersionGUID&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;select&lt;/span&gt;&amp;nbsp;c;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(param.tableGuid&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_tableQuery&amp;nbsp;=&amp;nbsp;_tableQuery.Where(n&amp;nbsp;=&amp;gt;&amp;nbsp;n.TableGUID&amp;nbsp;==&amp;nbsp;param.tableGuid.Value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(!&lt;span style="color: #0000FF;"&gt;string&lt;/span&gt;.IsNullOrEmpty(param.tableName))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_tableQuery&amp;nbsp;=&amp;nbsp;_tableQuery.Where(n&amp;nbsp;=&amp;gt;&amp;nbsp;n.TableName.Contains(param.tableName));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(param.tableTypeGuid&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_tableQuery&amp;nbsp;=&amp;nbsp;_tableQuery.Where(n&amp;nbsp;=&amp;gt;&amp;nbsp;n.TableType.TableTypeGUID&amp;nbsp;==&amp;nbsp;param.tableTypeGuid.Value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(param.tableFormatGuid&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_tableQuery&amp;nbsp;=&amp;nbsp;_tableQuery.Where(n&amp;nbsp;=&amp;gt;&amp;nbsp;n.TableFormat.TableFormatGUID&amp;nbsp;==&amp;nbsp;param.tableFormatGuid.Value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt;&amp;nbsp;(param.schemeGuid&amp;nbsp;!=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;null&lt;/span&gt;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_tableQuery&amp;nbsp;=&amp;nbsp;_tableQuery.Where(n&amp;nbsp;=&amp;gt;&amp;nbsp;n.Scheme.SchemeGUID&amp;nbsp;==&amp;nbsp;param.schemeGuid.Value);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;query&amp;nbsp;=&amp;nbsp;_tableQuery.ToList&amp;lt;tblTable&amp;gt;();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;foreach&lt;/span&gt;&amp;nbsp;(&lt;span style="color: #0000FF;"&gt;var&lt;/span&gt;&amp;nbsp;tb&amp;nbsp;&lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;&amp;nbsp;query)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CacheHelper.Add(GuidTable&amp;nbsp;+&amp;nbsp;tb.TableGUID.ToString(),&amp;nbsp;tb);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt;&amp;nbsp;query;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;6 单元测试&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;这个单元测试不是测试顾磊代码的，是我项目中测试TableManager的，因为顾磊的代码更简明，所以上面我还是贴出了他的代码，至于单元测试，还是随便贴个我项目的，因为顾磊那个我没数据，没法写，呵呵~&amp;nbsp;&amp;nbsp;&lt;/p&gt;&#xD;
&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('bed714d8-c621-4e11-b6b5-3d683732f9d1')"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif"  id="code_img_opened_bed714d8-c621-4e11-b6b5-3d683732f9d1" onclick="cnblogs_code_hide('bed714d8-c621-4e11-b6b5-3d683732f9d1',event)" style="display:none"&gt;&#xD;
&lt;div id="cnblogs_code_open_bed714d8-c621-4e11-b6b5-3d683732f9d1" &gt;&#xD;
&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;summary&amp;gt;&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #008000;"&gt;A&amp;nbsp;test&amp;nbsp;for&amp;nbsp;GetQueryList&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080;"&gt;///&lt;/span&gt;&lt;span style="color: #808080;"&gt;&amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;span style="color: #808080;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[TestMethod()]&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style="color: #0000FF;"&gt;void&lt;/span&gt;&amp;nbsp;GetQueryListTest()&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TableParameters&amp;nbsp;t&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;TableParameters();&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;t.schemeGuid&amp;nbsp;=&amp;nbsp;&lt;span style="color: #0000FF;"&gt;new&lt;/span&gt;&amp;nbsp;Guid(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;9C962C55-A598-40B8-A39B-11788161A9D8&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;List&amp;lt;tblTable&amp;gt;&amp;nbsp;actual;&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;actual&amp;nbsp;=&amp;nbsp;ManagerFactory.TableManager.GetQueryList(t);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Assert.AreEqual(&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;&amp;nbsp;Sedgwick&amp;nbsp;Marsh-&amp;nbsp;B&amp;nbsp;&amp;amp;&amp;nbsp;pre2000-NRA65&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;,&amp;nbsp;actual[&lt;span style="color: #800080;"&gt;0&lt;/span&gt;].TableName);&lt;br /&gt;&#xD;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: #008000;"&gt;//&lt;/span&gt;&lt;span style="color: #008000;"&gt;Assert.Inconclusive("Verify&amp;nbsp;the&amp;nbsp;correctness&amp;nbsp;of&amp;nbsp;this&amp;nbsp;test&amp;nbsp;method.");&lt;/span&gt;&lt;span style="color: #008000;"&gt;&lt;br /&gt;&#xD;
&lt;/span&gt;&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;p&gt;&lt;strong&gt;7 总结&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;我认为缓存数据不仅仅要缓存Class类，更要缓存从数据库中查询过来的数据，这样才能最大限度的提示程序性能。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;8 声明&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;以上纯为技术交流，对顾磊、黄聪等技术牛人十分敬佩，文中也引用了他们的文中和大量代码，再次感谢。&amp;nbsp;&lt;/p&gt;&#xD;
&lt;/div&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/2308619.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/12/31/2308619.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/10/14/2212373.html</id><title type="text">如何用Javascript写一个Class？</title><summary type="text">记得前面某次面试被问到此问题，一直以来因为对JS的不重视+一知半解，所以当时就懵了~ 最近Google了下，找到以下几种写Class的方式： 1 JS因为不是OO语言，所以没有Class的概念，都是通过ProtoType的方式实现的。 var namedClass = Class.create({ initialize: function(name) { t...</summary><published>2011-10-14T08:39:00Z</published><updated>2011-10-14T08:39:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/10/14/2212373.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/10/14/2212373.html"/><content type="html">&lt;p&gt;记得前面某次面试被问到此问题，一直以来因为对JS的不重视+一知半解，所以当时就懵了~&lt;/p&gt;  &lt;p&gt;最近Google了下，找到以下几种写Class的方式：&lt;/p&gt;  &lt;p&gt;1 JS因为不是OO语言，所以没有Class的概念，都是通过ProtoType的方式实现的。&lt;/p&gt;  &lt;div &gt;   &lt;pre &gt;&lt;span &gt;var&lt;/span&gt; namedClass = Class.create({&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;initialize: &lt;span &gt;function&lt;/span&gt;(name) {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;this&lt;/span&gt;.name = name;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;getName: &lt;span &gt;function&lt;/span&gt;() {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;return&lt;/span&gt; &lt;span &gt;this&lt;/span&gt;.name;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;});&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;var&lt;/span&gt; instance = &lt;span &gt;new&lt;/span&gt; namedClass(&lt;span &gt;'Foobar'&lt;/span&gt;);&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;2 也可以这样写&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;function&lt;/span&gt; MyClass(){&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;MyClass.prototype.aFunction(){ &lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;var&lt;/span&gt; instance = &lt;span &gt;new&lt;/span&gt; MyClass();&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;instance.aFunction();&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;3 带属性和方法的Class&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;function&lt;/span&gt; MyClass () {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//reference to this&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;var&lt;/span&gt; self = &lt;span &gt;this&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//private member variable&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;var&lt;/span&gt; privateVar = &lt;span &gt;&amp;quot;My Private Variable&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//public member variable&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;this&lt;/span&gt;.publicVar = &lt;span &gt;&amp;quot;My Public Variable&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//private member function&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;var&lt;/span&gt; privateFunction = &lt;span &gt;function&lt;/span&gt; () {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;self.publicVar += &lt;span &gt;&amp;quot; Modified By A Private Fucntion&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;alert( self.publicVar );&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//create an instance&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;var&lt;/span&gt; oClass = &lt;span &gt;new&lt;/span&gt; MyClass();&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//run a private member function&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;oClass.privateFunction();   &lt;span &gt;//private function is undefined&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//get a private member var&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;alert( oClass.privateVar );   //&lt;span &gt;private&lt;/span&gt; &lt;span &gt;var&lt;/span&gt; &lt;span &gt;is&lt;/span&gt; undefined&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;4 带静态变量和静态方法的Class：&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;function&lt;/span&gt; MyClass () {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//...&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//declare a static member&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;MyClass.staticVar = &lt;span &gt;&amp;quot;My static variable&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&amp;#160;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//declare a static function&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;MyClass.staticFunction = &lt;span &gt;function&lt;/span&gt; ( pInput ) {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;return&lt;/span&gt; &lt;span &gt;new&lt;/span&gt; MyClass( MyClass.staticVar , pInput );&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//create an instance&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;var&lt;/span&gt; oClass = &lt;span &gt;new&lt;/span&gt; MyClass();&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//run a static function (NO access to private or public)&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;oClass.staticFunction( 9 );  &lt;span &gt;//staticFunction is undefined on an instance&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//run a privileged member function on the class&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;MyClass.privilegedFunction();   //The &lt;span &gt;function&lt;/span&gt; runs&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&#xD;
&lt;p&gt;&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;5 带特权(privileged)变量和方法的Class：&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;function&lt;/span&gt; MyClass () {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//private member variable&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;var&lt;/span&gt; privateVar = &lt;span &gt;&amp;quot;My Private Variable&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;//privileged member function&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;this&lt;/span&gt;.privilegedFunction = &lt;span &gt;function&lt;/span&gt; () {&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;alert( privateVar );&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//create an instance&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;var&lt;/span&gt; oClass = &lt;span &gt;new&lt;/span&gt; MyClass();&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;//run a privileged member function&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;oClass.privilegedFunction();   //Output: alerts the value of the &lt;span &gt;private&lt;/span&gt; var&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/2212373.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/10/14/2212373.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/10/13/2210211.html</id><title type="text">程序员装逼指南（网上看到的，笑喷了&amp;hellip;&amp;hellip;）</title><summary type="text">一、准备工作 “工欲善其事必先利其器。” 电脑不一定要配置高，但是双屏是必须的，越大越好，能一个横屏一个竖屏更好。一个用来查资料，一个用来写代码 。总之要显得信息量很大，效率很高。 椅子不一定要舒服，但是一定要可以半躺着。 大量的便签，各种的颜色的，用来记录每天要完成的事务，多多益善。沿着电脑屏幕的边框，尽量贴满，显出有很多事情的样子。 工具书...</summary><published>2011-10-13T05:50:00Z</published><updated>2011-10-13T05:50:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/10/13/2210211.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/10/13/2210211.html"/><content type="html">&lt;p&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&amp;#160;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;一、准备工作&lt;/strong&gt;&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;“工欲善其事必先利其器。”&lt;/p&gt; &lt;/blockquote&gt;  &lt;ol&gt;   &lt;li&gt;电脑不一定要配置高，但是双屏是必须的，越大越好，能一个横屏一个竖屏更好。一个用来查资料，一个用来写代码 。总之要显得信息量很大，效率很高。 &lt;/li&gt;    &lt;li&gt;椅子不一定要舒服，但是一定要可以半躺着。 &lt;/li&gt;    &lt;li&gt;大量的便签，各种的颜色的，用来记录每天要完成的事务，多多益善。沿着电脑屏幕的边框，尽量贴满，显出有很多事情的样子。 &lt;/li&gt;    &lt;li&gt;工具书，orelly的，机械工业，电子工业什么的都可以，能英文就英文，不行影印版的也可以，反正越厚越好，而且千万不要放在书架上，一定要堆在桌上，半打开状。&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;二、从进门开始&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;着装！着装！不管你是去实验室，或者去公司的大楼，在或者是小公司的民宅，或是自己创业的黑作坊；无论是春夏秋冬白天晚上刮风下雨电闪雷鸣台风龙卷风，一个装b的程序员都要十分在意自己着装！这里只提出参考建议。初级装：衬衣+牛仔裤+休闲鞋。中级装：T恤+宽松短裤+拖鞋。高级装：背心+宽松大花裤衩+人字拖。 &lt;/li&gt;    &lt;li&gt;得体的举止。在走廊以及任何形式的过道里，一定要双手插兜，走得像个痞子，至少要看起来有点反社会，如若不行，可走文弱天才型geek路线。。 &lt;/li&gt;    &lt;li&gt;如果有女性在你背后指指点点，小声嘀咕说这一定是一个技术男的时候，应该先低头，然后保持低头状态，缓缓回头，坏坏地蔑笑但是不要出声，然后快步前行。 &lt;/li&gt;    &lt;li&gt;进门后，一定不要跟任何人打招呼，笔直走向自己的位置，最多路过打一杯咖啡，千万不要有多余的动作，显示出自己的专注与心无旁骛。&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;三、坐下就不要再动了&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;坐下以后，姿势需要略微后仰，能翘着二郎腿最好了，然后在后仰的情况下低着头，以便看到屏幕，然后千万就不要再动了。 &lt;/li&gt;    &lt;li&gt;粗暴地把电脑前的大堆书推开一个口，然后摘下电脑上的一个便签，看一眼，不过3秒，可以开始coding了。 &lt;/li&gt;    &lt;li&gt;能不用IDE就不要用，实在装不了，无论IDE是什么，一定要调成DOS那种黑色背景的。 &lt;font color="#008000"&gt;（这一条太扯了，我们公司就有很多这种人，哈哈~）&lt;/font&gt;&lt;/li&gt;    &lt;li&gt;如果写前台界面，就不停地调试后台代码；如果写java，就在里面混编C；如果写C，就在里面混编汇编。不光要coding，还要时不时的翻出一本什么英文的书翻一翻，看不懂就看看插图，然后扔到面前假装懂了继续coding。 &lt;/li&gt;    &lt;li&gt;什么看起来高端就用什么，不要管实用不实用。例如对C++：switch统统重构成多态；如果有指针，统统改成智能的；C++一定要自己写 template；数字是全部要替换成宏的名字能起多长就起多长；struct就不要出现了，如果出现，也一定要用__attriburte__修饰一下；运算都是位操作的；操作符都是重载的；网络都是并发缓冲线程池的；int只用int32_t声明的;继承不用普通的，什么多继承虚继承啊；helloworld也要写捕获异常的；后人一看代码，中间一堆关键字 extern,asm,auto,XXXXX_cast,volatile,explicit,register,template，让一般总在敲 int,if,else,for的小程序员 顿时心生崇拜。 &lt;/li&gt;    &lt;li&gt;注释？算了吧。只有两个路线可以选：一，变量名起得巨长无比，看代码就和读英文文章一样顺畅，根本不需要加注释。 二，代码无比晦涩，加不加注释根本无影响。 &lt;/li&gt;    &lt;li&gt;千万不要用IM工具交流，千万不要问同事问题，显得自己没有水平，都是自己上网或者查书。 &lt;/li&gt;    &lt;li&gt;无论是同事间开玩笑或者发生任何群体性时间，不要抬头，更不要东张西望，即使地震火灾，也一定要先提交代码再行离开。&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;四、潇洒地离开&lt;/strong&gt;&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;人走，主机是千万千万不能关的，至少要跑个daily build，实在不行正在svn提交也勉强算过关。 &lt;/li&gt;    &lt;li&gt;书应该已经又堆到屏幕前了，千万不要整理，明天再来推开。 &lt;/li&gt;    &lt;li&gt;不强求最后一个走，但一定要所有的非程序员，什么市场啊前台啊pm啊都走光了，才可以走。 &lt;/li&gt;    &lt;li&gt;走得时候一定要率性，千万不要收拾任何东西，站起来，出门，好的，就这样。 &lt;/li&gt;    &lt;li&gt;如果今天一定要说句话的话，找到那个最苦逼的程序员 ，跟他说，你进度太慢了啊，不要老让我等你。&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;就写这么些吧。最后，送上《苦逼的程序员之歌》 ：&lt;/p&gt;  &lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;   &lt;p&gt;在那山的这边海的那边有一群程序员，他们老实又胹腆，他们聪明又没钱。他们一天到晚坐在那里熬夜写软件，饿了就咬一口方便面～～哦苦命的程序员，哦苦逼的程序员，只要一改需求他们就要重新搞一遍，但是期限只剩下两天……&lt;/p&gt;&lt;/blockquote&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/2210211.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/10/13/2210211.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/09/20/2182437.html</id><title type="text">泛型及约束</title><summary type="text">程序中经常会用到泛型，如： class Program { static void Main(string[] args) { string a = &amp;quot;a&amp;quot;; string b = &amp;quot;b&amp;quot;; Console.WriteLine(&amp;quot;before change, a={0...</summary><published>2011-09-20T06:25:00Z</published><updated>2011-09-20T06:25:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/09/20/2182437.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/09/20/2182437.html"/><content type="html">&lt;p&gt;程序中经常会用到泛型，如：&lt;/p&gt;  &lt;div &gt;   &lt;pre &gt;&lt;span &gt;class&lt;/span&gt; Program&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;static&lt;/span&gt; &lt;span &gt;void&lt;/span&gt; Main(&lt;span &gt;string&lt;/span&gt;[] args)&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;string&lt;/span&gt; a = &lt;span &gt;&amp;quot;a&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;string&lt;/span&gt; b = &lt;span &gt;&amp;quot;b&amp;quot;&lt;/span&gt;;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;Console.WriteLine(&lt;span &gt;&amp;quot;before change, a={0},b={1}.&amp;quot;&lt;/span&gt;, a, b);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;Change&amp;lt;&lt;span &gt;string&lt;/span&gt;&amp;gt;(&lt;span &gt;ref&lt;/span&gt; a, &lt;span &gt;ref&lt;/span&gt; b);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;Console.WriteLine(&lt;span &gt;&amp;quot;after change, a={0},b={1}.&amp;quot;&lt;/span&gt;, a, b);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;Console.ReadKey();&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;&lt;span &gt;static&lt;/span&gt; &lt;span &gt;void&lt;/span&gt; Change&amp;lt;T&amp;gt;(&lt;span &gt;ref&lt;/span&gt; T a, &lt;span &gt;ref&lt;/span&gt; T b)&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;var c = a;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;a = b;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;b = c;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;但有时候会碰到类似下面的写法，带where的：&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;static&lt;/span&gt; &lt;span &gt;void&lt;/span&gt; Change2&amp;lt;T&amp;gt;(&lt;span &gt;ref&lt;/span&gt; T a, &lt;span &gt;ref&lt;/span&gt; T b) &lt;span &gt;where&lt;/span&gt; T:&lt;span &gt;struct&lt;/span&gt;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;{&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;var c = a;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;a = b;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;b = c;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;}&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&#xD;
&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;刚开始看到未免会比较晕，在msdn上搜索下，原来是泛型约束，详细的泛型约束如下：&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;table cellspacing="0" cellpadding="2" width="582" border="1"&gt;&lt;tbody&gt;&#xD;
    &lt;tr&gt;&#xD;
      &lt;td valign="top" width="202"&gt;约束&lt;/td&gt;&#xD;
&#xD;
      &lt;td valign="top" width="378"&gt;说明&lt;/td&gt;&#xD;
    &lt;/tr&gt;&#xD;
&#xD;
    &lt;tr&gt;&#xD;
      &lt;td valign="top" width="203"&gt;T:Struct&lt;/td&gt;&#xD;
&#xD;
      &lt;td valign="top" width="377"&gt;类型参数必须是值类型。 可以指定除 &lt;a href="http://msdn.microsoft.com/zh-cn/library/system.nullable.aspx"&gt;Nullable&lt;/a&gt; 以外的任何值类型。 &lt;/td&gt;&#xD;
    &lt;/tr&gt;&#xD;
&#xD;
    &lt;tr&gt;&#xD;
      &lt;td valign="top" width="204"&gt;T:Class&lt;/td&gt;&#xD;
&#xD;
      &lt;td valign="top" width="377"&gt;类型参数必须是引用类型；这一点也适用于任何类、接口、委托或数组类型。&lt;/td&gt;&#xD;
    &lt;/tr&gt;&#xD;
&#xD;
    &lt;tr&gt;&#xD;
      &lt;td valign="top" width="204"&gt;T:New()&lt;/td&gt;&#xD;
&#xD;
      &lt;td valign="top" width="377"&gt;类型参数必须具有无参数的公共构造函数。 当与其他约束一起使用时，new() 约束必须最后指定。&lt;/td&gt;&#xD;
    &lt;/tr&gt;&#xD;
&#xD;
    &lt;tr&gt;&#xD;
      &lt;td valign="top" width="204"&gt;T:&amp;lt;BaseClass&amp;gt;&lt;/td&gt;&#xD;
&#xD;
      &lt;td valign="top" width="377"&gt;类型参数必须是指定的基类或派生自指定的基类。&lt;/td&gt;&#xD;
    &lt;/tr&gt;&#xD;
&#xD;
    &lt;tr&gt;&#xD;
      &lt;td valign="top" width="204"&gt;T:&amp;lt;Interface&amp;gt;&lt;/td&gt;&#xD;
&#xD;
      &lt;td valign="top" width="377"&gt;类型参数必须是指定的接口或实现指定的接口。 可以指定多个接口约束。 约束接口也可以是泛型的。&lt;/td&gt;&#xD;
    &lt;/tr&gt;&#xD;
&#xD;
    &lt;tr&gt;&#xD;
      &lt;td valign="top" width="204"&gt;T:U&lt;/td&gt;&#xD;
&#xD;
      &lt;td valign="top" width="377"&gt;为 T 提供的类型参数必须是为 U 提供的参数或派生自为 U 提供的参数。&lt;/td&gt;&#xD;
    &lt;/tr&gt;&#xD;
  &lt;/tbody&gt;&lt;/table&gt;&#xD;
&#xD;
&lt;p&gt;所以，在如果要调用前面加了约束的函数Change2，则必须使用非Nullable类型，如int，不能使用string了。&lt;/p&gt;&#xD;
&#xD;
&lt;div &gt;&#xD;
  &lt;pre &gt;&lt;span &gt;int&lt;/span&gt; a = 1;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;&lt;span &gt;int&lt;/span&gt; b = 2;&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;Console.WriteLine(&lt;span &gt;&amp;quot;before change, a={0},b={1}.&amp;quot;&lt;/span&gt;, a, b);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre&gt;Change2&amp;lt;&lt;span &gt;int&lt;/span&gt;&amp;gt;(&lt;span &gt;ref&lt;/span&gt; a, &lt;span &gt;ref&lt;/span&gt; b);&lt;/pre&gt;&#xD;
&#xD;
  &lt;pre &gt;Console.WriteLine(&lt;span &gt;&amp;quot;after change, a={0},b={1}.&amp;quot;&lt;/span&gt;, a, b);&lt;/pre&gt;&#xD;
&lt;/div&gt;&#xD;
&lt;style type="text/css"&gt;&#xD;
.csharpcode, .csharpcode pre&#xD;
{&#xD;
	font-size: small;&#xD;
	color: black;&#xD;
	font-family: consolas, "Courier New", courier, monospace;&#xD;
	background-color: #ffffff;&#xD;
	/*white-space: pre;*/&#xD;
}&#xD;
.csharpcode pre { margin: 0em; }&#xD;
.csharpcode .rem { color: #008000; }&#xD;
.csharpcode .kwrd { color: #0000ff; }&#xD;
.csharpcode .str { color: #006080; }&#xD;
.csharpcode .op { color: #0000c0; }&#xD;
.csharpcode .preproc { color: #cc6633; }&#xD;
.csharpcode .asp { background-color: #ffff00; }&#xD;
.csharpcode .html { color: #800000; }&#xD;
.csharpcode .attr { color: #ff0000; }&#xD;
.csharpcode .alt &#xD;
{&#xD;
	background-color: #f4f4f4;&#xD;
	width: 100%;&#xD;
	margin: 0em;&#xD;
}&#xD;
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/2182437.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/09/20/2182437.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/08/19/2145706.html</id><title type="text">让程序奔跑如风1-Net并行和多线程的纠结</title><summary type="text">最近项目中用到并行，对程序进行一些优化，也查阅了很多资料，对Net并行有了一些感悟，特地记录下来。 一、并行和多线程 到底并行（parallel）是不是多线程（Thread or Task）呢？ 1.多线程是单核时代的概念，让很多工作分散到多个thread里面，加快程序效率。 2.并行是多核时代的概念，一台电脑往往有2-4个核心，为了协调各个CPU共同干活，就发明了并行。 额，貌似还是有区别的。</summary><published>2011-08-19T06:43:00Z</published><updated>2011-08-19T06:43:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/08/19/2145706.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/08/19/2145706.html"/><content type="html">&lt;p&gt;最近项目中用到并行，对程序进行一些优化，也查阅了很多资料，对Net并行有了一些感悟，特地记录下来。&lt;/p&gt;  &lt;p&gt;一、并行和多线程&lt;/p&gt;  &lt;p&gt;到底并行（parallel）是不是多线程（Thread or Task）呢？&lt;/p&gt;  &lt;p&gt;1.多线程是单核时代的概念，让很多工作分散到多个thread里面，加快程序效率。&lt;/p&gt;  &lt;p&gt;2.并行是多核时代的概念，一台电脑往往有2-4个核心，为了协调各个CPU共同干活，就发明了并行。&lt;/p&gt;  &lt;p&gt;额，貌似还是有区别的。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/2145706.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/08/19/2145706.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/06/24/2089297.html</id><title type="text">复习一下，免得下次面试又栽在沟里~</title><summary type="text">1. Const 和 Readonlyreadonly为运行时常量，const为编译时常量编译时常量被运行时常量快，性能好，但是缺乏灵活性（编译时常量需要重新编译应用程序）；编译时常量（const）仅限于数值和字符串（基元类型），C#不允许使用new来初始化一个编译时常量；const修饰的常量默认是静态的（类型）；readonly修饰的字段可以在构造函数中被修改；使用const较之使用readonly的唯一好处就是性能 详细：首先先解释下什么是静态常量以及什么是动态常量。静态常量是指编译器在编译时候会对常量进行解析，并将常量的值替换成初始化的那个值。而动态常量的值则是在运行的那一刻才获得的，.</summary><published>2011-06-24T11:06:00Z</published><updated>2011-06-24T11:06:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/06/24/2089297.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/06/24/2089297.html"/><content type="html">&lt;p&gt;1. Const 和 Readonly&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;p&gt;readonly为运行时常量，const为编译时常量&lt;br /&gt;编译时常量被运行时常量快，性能好，但是缺乏灵活性（编译时常量需要重新编译应用程序）；&lt;br /&gt;编译时常量（const）仅限于数值和字符串（基元类型），C#不允许使用new来初始化一个编译时常量；&lt;br /&gt;const修饰的常量默认是静态的（类型）；&lt;br /&gt;readonly修饰的字段可以在构造函数中被修改；&lt;br /&gt;使用const较之使用readonly的唯一好处就是性能 &lt;br /&gt;&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;详细：&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;首先先解释下什么是静态常量以及什么是动态常量。静态常量是指编译器在编译时候会对常量进行解析，并将常量的值替换成初始化的那个值。而动态常量的值则是在运行的那一刻才获得的，编译器编译期间将其标示为只读常量，而不用常量的值代替，这样动态常量不必在声明的时候就初始化，而可以延迟到构造函数中初始化。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当你大致了解上面的两个概念的时候，那么就可以来说明const与readonly了。const修饰的常量是上述中的第一种，即静态常量;而readonly则是第二种，即动态常量。那么区别可以通过静态常量与动态常量的特性来说明：&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1）const修饰的常量在声明的时候必须初始化;readonly修饰的常量则可以延迟到构造函数初始化 &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2）const修饰的常量在编译期间就被解析，即常量值被替换成初始化的值;readonly修饰的常量则延迟到运行的时候&lt;br /&gt;&lt;br /&gt;&lt;p&gt;此外const常量既可以声明在类中也可以在函数体内，但是static readonly常量只能声明在类中。&lt;/p&gt;&lt;/blockquote&gt;&lt;p&gt;2.Sql索引&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;SQL聚集索引和非聚集索引的区别&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 聚集索引一个表只能有一个，而非聚集索引一个表可以存在多个，这个跟没问题没差别，一般人都知道。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 聚集索引存储记录是物理上连续存在，而非聚集索引是逻辑上的连续，物理存储并不连续，这个大家也都知道。&lt;/div&gt;&amp;nbsp;&lt;div&gt;&lt;p&gt;第一：聚集索引的约束是唯一性，是否要求字段也是唯一的呢？&lt;/p&gt; &lt;p&gt;分析：如果认为是的朋友，可能是受系统默认设置的影响，一般我们指定一个表的主键，如果这个表之前没有聚集索引，同时建立主键时候没有强制指定使用非聚集索引,SQL会默认在此字段上创建一个聚集索引，而主键都是唯一的，所以理所当然的认为创建聚集索引的字段也需要唯一。&lt;/p&gt; &lt;p&gt;结论：聚集索引可以创建在任何一列你想创建的字段上，这是从理论上讲，实际情况并不能随便指定，否则在性能上会是恶梦。&lt;/p&gt; &lt;p&gt;第二：为什么聚集索引可以创建在任何一列上，如果此表没有主键约束，即有可能存在重复行数据呢？&lt;/p&gt; &lt;p&gt;粗一看，这还真是和聚集索引的约束相背，但实际情况真可以创建聚集索引，分析其原因是：如果未使用 UNIQUE  属性创建聚集索引，数据库引擎将向表自动添加一个四字节 uniqueifier 列。必要时，数据库引擎 将向行自动添加一个 uniqueifier  值，使每个键唯一。此列和列值供内部使用，用户不能查看或访问。&lt;/p&gt; &lt;p&gt;第三：是不是聚集索引就一定要比非聚集索引性能优呢？&lt;/p&gt; &lt;p&gt;如果想查询学分在60-90之间的学生的学分以及姓名，在学分上创建聚集索引是否是最优的呢？&lt;/p&gt; &lt;p&gt;答：否。既然只输出两列，我们可以在学分以及学生姓名上创建联合非聚集索引，此时的索引就形成了覆盖索引，即索引所存储的内容就是最终输出的数据，这种索引在比以学分为聚集索引做查询性能更好。&lt;/p&gt; &lt;p&gt;第四：在数据库中通过什么描述聚集索引与非聚集索引的？&lt;/p&gt; &lt;p&gt;索引是通过二叉树的形式进行描述的，我们可以这样区分聚集与非聚集索引的区别：聚集索引的叶节点就是最终的数据节点，而非聚集索引的叶节仍然是索引节点，但它有一个指向最终数据的指针。&lt;/p&gt; &lt;p&gt;第五：在主键是创建聚集索引的表在数据插入上为什么比主键上创建非聚集索引表速度要慢？&lt;/p&gt; &lt;p&gt;有了上面第四点的认识，我们分析这个问题就有把握了，在有主键的表中插入数据行，由于有主键唯一性的约束，所以需要保证插入的数据没有重复。我们来 比较下主键为聚集索引和非聚集索引的查找情况:聚集索引由于索引叶节点就是数据页，所以如果想检查主键的唯一性，需要遍历所有数据节点才行，但非聚集索引 不同，由于非聚集索引上已经包含了主键值，所以查找主键唯一性，只需要遍历所有的索引页就行，这比遍历所有数据行减少了不少IO消耗。这就是为什么主键上 创建非聚集索引比主键上创建聚集索引在插入数据时要快的真正原因。&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;p&gt;3 Or 和 union&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;or 和 union 测试结论：&lt;br /&gt;当都有索引时union效率更高， 如果没有索引or效率高&lt;br /&gt;因为：union 符合 SARG条件&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;SARG(Searchable Arguments)的定义：用于限制搜索的一个操作，因为它通常是指一个特定的匹配，一个值得范围内的匹配或者两个以上条件的AND连接。&lt;br /&gt;通配符&lt;br /&gt;　　Like语句是否属于SARG取决于所使用的通配符的类型&lt;br /&gt;　　如：name like &amp;#8216;张%&amp;#8217; ，这就属于SARG&lt;br /&gt;　　而：name like &amp;#8216;%张&amp;#8217; ,就不属于SARG。&lt;br /&gt;　　原因是通配符%在字符串的开通使得索引无法使用。&lt;br /&gt;全表扫描&lt;br /&gt;　　如：Name=&amp;#8217;张三&amp;#8217; and 价格&amp;gt;5000 符号SARG，&lt;br /&gt;　　而：Name=&amp;#8217;张三&amp;#8217; or 价格&amp;gt;5000 则不符合SARG。&lt;br /&gt;　　使用or会引起全表扫描。&lt;br /&gt;非操作符&lt;br /&gt;　　不满足SARG形式的语句最典型的情况就是包括非操作符的语句，如：NOT、!=、&amp;lt;&amp;gt;、!&amp;lt;、!&amp;gt;、NOT EXISTS、NOT IN、NOT LIKE等，另外还有函数如ABS。&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4 override 和 new &lt;br /&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;&lt;pre id="content-594185430" mb10=""&gt;override是重新写但你仍然可以访问到基类的方法&lt;br /&gt;而new是隐藏不能再访问的基类的方法，而且可以隐藏基类的变量。&lt;/pre&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;5 多线程，线程同步 &lt;br /&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;在C#里面用于实现线程同步的常用类有如下几类&lt;br /&gt;1、Mutex类（互斥器），Monitor类，lock方法&lt;br /&gt;2、ManualResetEvent类，AutoResetEvent类（这两个都是由EventWaitHandle类派生出来的）&lt;br /&gt;3、ReaderWriterLock类&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;6 HttpModule &amp;amp; HttpHandler&lt;/p&gt;&lt;blockquote style="margin-right: 0px;" dir="ltr"&gt;&lt;div&gt;HttpModule是向实现类提供模块初始化和处置事件。当一个HTTP请求到达HttpModule时，整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理，也就是说此时对于HTTP请求来讲，HttpModule是一个HTTP请求的&amp;#8220;必经之路&amp;#8221;，所以可以在这个HTTP请求传递到真正的请求处理中心（HttpHandler）之前附加一些需要的信息在这个HTTP请求信息之上，或者针对截获的这个HTTP请求信息作一些额外的工作，或者在某些情况下干脆终止满足一些条件的HTTP请求，从而可以起到一个Filter过滤器的作用。&lt;/div&gt;&lt;div&gt;完整的http请求在asp.net framework中的处理流程： &lt;br /&gt;HttpRequest--&amp;gt;inetinfo.exe-&amp;gt;ASPNET_ISAPI.DLL--&amp;gt;Http Pipeline--&amp;gt;ASPNET_WP.EXE--&amp;gt;HttpRuntime--&amp;gt;HttpApplication Factory--&amp;gt;HttpApplication--&amp;gt;HttpModule--&amp;gt;HttpHandler Factory--&amp;gt;HttpHandler--&amp;gt;HttpHandler.ProcessRequest() &lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;p&gt;HttpModule工作原理&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;负责监听HttpRequest，同时对HttpRequest增添或者过滤掉一部分内容。也就是说，当一个HTTP请求到达HttpModule时，整个ASP.NET Framework系统还并没有对这个HTTP请求做任何处理，也就是说此时对于HTTP请求来讲，HttpModule是一个HTTP请求的&amp;#8220;必经之路&amp;#8221;，所以可以在这个HTTP请求传递到真正的请求处理中心（HttpHandler）之前附加一些需要的信息在这个HTTP请求信息之上，或者针对截获的这个HTTP请求信息作一些额外的工作，或者在某些情况下干脆终止满足一些条件的HTTP请求，从而可以起到一个Filter过滤器的作用。 &lt;br /&gt;HttpModule实现了接口IHttpModule，我们可以自定义实现该接口的类，从而取代HttpModule。 &lt;br /&gt;asp.net默认的HttpModule如下：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.SessionState.SessionStateModule;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Security.WindowsAuthenticationModule;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Security.FormsAuthenticationModule;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Security.PassportAuthenticationModule;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Security.UrlAuthorizationModule;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.Web.Security.FileAuthorizationModule;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;编写自己的HttpModule&lt;br /&gt;&amp;nbsp;&lt;br /&gt;要实现HttpModule，必须实现接口IHttpModule。下面是IHttpModule接口分析：&lt;br /&gt;using System;&lt;br /&gt;namespace System.Web&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public interface IHttpModule&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //&amp;nbsp;&amp;nbsp; 销毁不再被HttpModule使用的资源&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Dispose();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 初始化一个Module,为捕获HttpRequest做准备&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void Init(HttpApplication context);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;HttpModule的事件&lt;/strong&gt;&lt;/p&gt;&lt;table width="591" border="0" cellpadding="2" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt; &lt;br /&gt;&lt;/td&gt;&lt;td valign="top" width="389"&gt; &lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;BeginRequest&lt;/td&gt;&lt;td valign="top" width="389"&gt;指示请求处理开始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;AuthenticateRequest&lt;/td&gt;&lt;td valign="top" width="389"&gt;封装请求身份验证过程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;AuthorizeRequest&lt;/td&gt;&lt;td valign="top" width="389"&gt;封装检查是否能利用以前缓存的输出页面处理请求的过程&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;ResolveRequestCache&lt;/td&gt;&lt;td valign="top" width="389"&gt;从缓存中得到相应时候触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;AcquireRequestState&lt;/td&gt;&lt;td valign="top" width="389"&gt;加载初始化Session时候触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;PreRequestHandlerExecute&lt;/td&gt;&lt;td valign="top" width="389"&gt;在Http请求进入HttpHandler之前触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;PostRequestHandlerExecute&lt;/td&gt;&lt;td valign="top" width="389"&gt;在Http请求进入HttpHandler之后触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;ReleaseRequestState&lt;/td&gt;&lt;td valign="top" width="389"&gt;存储Session状态时候触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;UpdateRequestCache&lt;/td&gt;&lt;td valign="top" width="389"&gt;更新缓存信息时触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;EndRequest&lt;/td&gt;&lt;td valign="top" width="389"&gt;在Http请求处理完成的时候触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;PreSendRequestHenaders&lt;/td&gt;&lt;td valign="top" width="389"&gt;在向客户端发送Header之前触发&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top" width="200"&gt;PreSendRequestConternt&lt;/td&gt;&lt;td valign="top" width="389"&gt;在向客户端发送内容之前触发&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;说明： &lt;br /&gt;a、BenginRequest和EndRequest分别是HttpModule容器最开始的和最后的事件； &lt;br /&gt;b、EndRequest之后还会触发PreSendRequestHeaders事件和PreSendRequestContent事件，这不是在HttpModule外的两个事件，表示HttpModule结束，即将开始向Client发送数据。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;说明： &lt;br /&gt;a、HttpModule容器会将HttpRequest传递到HttpHandler容器，这个时间点是ResolveRequestCache事件 &lt;br /&gt;b、HttpModule容器会建立HttpHandler实例作为入口&amp;#8212;&amp;#8212;Session从此生效 &lt;br /&gt;c、触发AcquireRequestState事件以及PreRequestHandlerExecute事件 &lt;br /&gt;d、HttpModule容器便将对HttpRequest的控制权转让给HttpHandler容器 &lt;br /&gt;e、HttpHandler容器处理HttpRequest&amp;#8212;&amp;#8212;使用自身的ProcessRequest方法，将对其控制权又还给HttpModule容器&amp;#8212;&amp;#8212;之后Session失效。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在http请求的处理过程中，只能调用一个HttpHandler，但可以调用多个HttpModule&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;7 Sql&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;blockquote style='border:2px solid #EFEFEF;color:#333333;padding:5px 10px;'&gt;&lt;div&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;、查找表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; people&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId &lt;/span&gt;&lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; peopleId&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; people&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; peopleId&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(peopleId) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;、删除表中多余的重复记录，重复记录是根据单个字段（peopleId）来判断，只留有rowid最小的记录&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;delete&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; people &lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; peopleId&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; people&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; peopleId&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(peopleId) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;and&lt;/span&gt;&lt;span style="color: #000000"&gt; rowid &lt;/span&gt;&lt;span style="color: #808080"&gt;not&lt;/span&gt; &lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;min&lt;/span&gt;&lt;span style="color: #000000"&gt;(rowid) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; people&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(peopleId )&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;3&lt;/span&gt;&lt;span style="color: #000000"&gt;、查找表中多余的重复记录（多个字段） &lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae a&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; (a.peopleId,a.seq) &lt;/span&gt;&lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae &lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;4&lt;/span&gt;&lt;span style="color: #000000"&gt;、删除表中多余的重复记录（多个字段），只留有rowid最小的记录&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;delete&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae a&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; (a.peopleId,a.seq) &lt;/span&gt;&lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae &lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq &lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;and&lt;/span&gt;&lt;span style="color: #000000"&gt; rowid &lt;/span&gt;&lt;span style="color: #808080"&gt;not&lt;/span&gt; &lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;min&lt;/span&gt;&lt;span style="color: #000000"&gt;(rowid) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae &lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq &lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;5&lt;/span&gt;&lt;span style="color: #000000"&gt;、查找表中多余的重复记录（多个字段），不包含rowid最小的记录&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae a&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; (a.peopleId,a.seq) &lt;/span&gt;&lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;&amp;nbsp;&amp;nbsp; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae &lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq &lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #808080"&gt;and&lt;/span&gt;&lt;span style="color: #000000"&gt; rowid &lt;/span&gt;&lt;span style="color: #808080"&gt;not&lt;/span&gt; &lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;min&lt;/span&gt;&lt;span style="color: #000000"&gt;(rowid) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; vitae &lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; peopleId,seq &lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;(二)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;比方说&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;在A表中存在一个字段&amp;#8220;name&amp;#8221;，&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;而且不同记录之间的&amp;#8220;name&amp;#8221;值有可能会相同，&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;现在就是需要&lt;strong style="color:black;background-color:#A0FFFF"&gt;查询&lt;/strong&gt;出在该表中的各记录之间，&amp;#8220;name&amp;#8221;值存在重复的项；&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Select&lt;/span&gt;&lt;span style="color: #000000"&gt; Name,&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;Count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;From&lt;/span&gt;&lt;span style="color: #000000"&gt; A &lt;/span&gt;&lt;span style="color: #0000ff"&gt;Group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;By&lt;/span&gt;&lt;span style="color: #000000"&gt; Name &lt;/span&gt;&lt;span style="color: #0000ff"&gt;Having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;Count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;如果还查性别也相同大则如下:&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;Select&lt;/span&gt;&lt;span style="color: #000000"&gt; Name,sex,&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;Count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;From&lt;/span&gt;&lt;span style="color: #000000"&gt; A &lt;/span&gt;&lt;span style="color: #0000ff"&gt;Group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;By&lt;/span&gt;&lt;span style="color: #000000"&gt; Name,sex &lt;/span&gt;&lt;span style="color: #0000ff"&gt;Having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;Count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;(三)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;方法一&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt; &lt;span style="color: #008000"&gt;@max&lt;/span&gt; &lt;span style="font-weight: bold; color: #000000"&gt;integer&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #008000"&gt;@id&lt;/span&gt; &lt;span style="font-weight: bold; color: #000000"&gt;integer&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;declare&lt;/span&gt;&lt;span style="color: #000000"&gt; cur_rows &lt;/span&gt;&lt;span style="color: #0000ff"&gt;cursor&lt;/span&gt;&lt;span style="color: #000000"&gt; local &lt;/span&gt;&lt;span style="color: #0000ff"&gt;for&lt;/span&gt; &lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; 主字段,&lt;/span&gt;&lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; 表名 &lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; 主字段 &lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000"&gt;； &lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;open&lt;/span&gt;&lt;span style="color: #000000"&gt; cur_rows&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;fetch&lt;/span&gt;&lt;span style="color: #000000"&gt; cur_rows &lt;/span&gt;&lt;span style="color: #0000ff"&gt;into&lt;/span&gt; &lt;span style="color: #008000"&gt;@id&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #008000"&gt;@max&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;while&lt;/span&gt; &lt;span style="font-weight: bold; color: #008000"&gt;@@fetch_status&lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;begin&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #008000"&gt;@max&lt;/span&gt; &lt;span style="color: #808080"&gt;=&lt;/span&gt; &lt;span style="color: #008000"&gt;@max&lt;/span&gt; &lt;span style="color: #808080"&gt;-&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt; &lt;span style="color: #0000ff"&gt;rowcount&lt;/span&gt; &lt;span style="color: #008000"&gt;@max&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;delete&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; 表名 &lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; 主字段 &lt;/span&gt;&lt;span style="color: #808080"&gt;=&lt;/span&gt; &lt;span style="color: #008000"&gt;@id&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;fetch&lt;/span&gt;&lt;span style="color: #000000"&gt; cur_rows &lt;/span&gt;&lt;span style="color: #0000ff"&gt;into&lt;/span&gt; &lt;span style="color: #008000"&gt;@id&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="color: #008000"&gt;@max&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;end&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;close&lt;/span&gt;&lt;span style="color: #000000"&gt; cur_rows&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;set&lt;/span&gt; &lt;span style="color: #0000ff"&gt;rowcount&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;0&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　方法二&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　有两个意义上的重复记录，一是完全重复的记录，也即所有字段均重复的记录，二是部分关键字段重复的记录，比如Name字段重复，而其他字段不一定重复或都重复可以忽略。&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;、对于第一种重复，比较容易解决，使用&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff"&gt;distinct&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; tableName&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　就可以得到无重复记录的结果集。&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　如果该表需要删除重复的记录（重复记录保留1条），可以按以下方法删除&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #0000ff"&gt;distinct&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;into&lt;/span&gt;&lt;span style="color: #000000"&gt; #Tmp &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; tableName&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;drop&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt;&lt;span style="color: #000000"&gt; tableName&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;into&lt;/span&gt;&lt;span style="color: #000000"&gt; tableName &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; #Tmp&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;drop&lt;/span&gt; &lt;span style="color: #0000ff"&gt;table&lt;/span&gt;&lt;span style="color: #000000"&gt; #Tmp&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　发生这种重复的原因是表设计不周产生的，增加唯一索引列即可解决。&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;2&lt;/span&gt;&lt;span style="color: #000000"&gt;、这类重复问题通常要求保留重复记录中的第一条记录，操作方法如下&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　假设有重复的字段为Name,Address，要求得到这两个字段唯一的结果集&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;identity&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="font-weight: bold; color: #000000"&gt;int&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;,&lt;/span&gt;&lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt; autoID, &lt;/span&gt;&lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;into&lt;/span&gt;&lt;span style="color: #000000"&gt; #Tmp &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; tableName&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;min&lt;/span&gt;&lt;span style="color: #000000"&gt;(autoID) &lt;/span&gt;&lt;span style="color: #0000ff"&gt;as&lt;/span&gt;&lt;span style="color: #000000"&gt; autoID &lt;/span&gt;&lt;span style="color: #0000ff"&gt;into&lt;/span&gt;&lt;span style="color: #000000"&gt; #Tmp2 &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; #Tmp &lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; Name,autoID&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; #Tmp &lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; autoID &lt;/span&gt;&lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; autoID &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; #tmp2)&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;　　最后一个select即得到了Name，Address不重复的结果集（但多了一个autoID字段，实际写时可以写在select子句中省去此列）&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;(四)&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;strong style="color:black;background-color:#A0FFFF"&gt;查询&lt;/strong&gt;重复&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt; &lt;span style="color: #808080"&gt;*&lt;/span&gt; &lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; tablename &lt;/span&gt;&lt;span style="color: #0000ff"&gt;where&lt;/span&gt;&lt;span style="color: #000000"&gt; id &lt;/span&gt;&lt;span style="color: #808080"&gt;in&lt;/span&gt;&lt;span style="color: #000000"&gt; (&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;select&lt;/span&gt;&lt;span style="color: #000000"&gt; id &lt;/span&gt;&lt;span style="color: #0000ff"&gt;from&lt;/span&gt;&lt;span style="color: #000000"&gt; tablename &lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;group&lt;/span&gt; &lt;span style="color: #0000ff"&gt;by&lt;/span&gt;&lt;span style="color: #000000"&gt; id &lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;&lt;/span&gt;&lt;span style="color: #0000ff"&gt;having&lt;/span&gt; &lt;span style="color: #ff00ff"&gt;count&lt;/span&gt;&lt;span style="color: #000000"&gt;(id) &lt;/span&gt;&lt;span style="color: #808080"&gt;&amp;gt;&lt;/span&gt; &lt;span style="font-weight: bold; color: #800000"&gt;1&lt;/span&gt;&lt;span style="color: #000000"&gt;&lt;br /&gt;&lt;img src="http://images.csdn.net/syntaxhighlighting/OutliningIndicators/None.gif" alt="" align="top" /&gt;)&lt;/span&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;p&gt;8 Having &amp;amp; Where&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;having子句与where有相似之处但也有区别,都是设定条件的语句。&lt;br /&gt;&lt;br /&gt;　　在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行.而where子句在查询过程中执行优先级别优先于聚合语句(sum,min,max,avg,count)。&lt;br /&gt;&lt;br /&gt;　　简单说来：&lt;br /&gt;&lt;br /&gt;　　where子句：&lt;br /&gt;&lt;br /&gt;　　select sum(num) as rmb from order where id&amp;gt;10&lt;br /&gt;&lt;br /&gt;　　//只有先查询出id大于10的记录才能进行聚合语句&lt;br /&gt;&lt;br /&gt;　　having子句:&lt;br /&gt;&lt;br /&gt;　　select reportsto as manager, count(*) as reports from employees&lt;br /&gt;&lt;br /&gt;　　group by reportsto having count(*) &amp;gt; 4&lt;br /&gt;&lt;br /&gt;　　以northwind库为例.having条件表达示为聚合语句。肯定的说having子句查询过程执行优先级别低于聚合语句。&lt;br /&gt;&lt;br /&gt;　　再换句说话说把上面的having换成where则会出错。统计分组数据时用到聚合语句。&lt;br /&gt;&lt;br /&gt;　　对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。&lt;br /&gt;&lt;br /&gt;　　having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。&lt;br /&gt;&lt;br /&gt;　　聚合函数，这是必需先讲的一种特殊的函数：例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。&lt;br /&gt;&lt;br /&gt;　　SELECT SUM(population) FROM tablename&lt;br /&gt;&lt;br /&gt;　　这里的SUM作用在所有返回记录的population字段上，结果就是该查询只返回一个结果，即所有&lt;br /&gt;&lt;br /&gt;　　国家的总人口数。通过使用GROUP BY 子句，可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。&lt;br /&gt;&lt;br /&gt;　　当你指定 GROUP BY region 时， 属于同一个region(地区)的一组数据将只能返回一行值.&lt;br /&gt;&lt;br /&gt;　　也就是说，表中所有除region(地区)外的字段，只能通过 SUM, COUNT等聚合函数运算后返回一个值.&lt;br /&gt;&lt;br /&gt;　　HAVING子句可以让我们筛选成组后的各组数据&lt;br /&gt;&lt;br /&gt;　　HAVING子句在聚合后对组记录进行筛选&lt;br /&gt;&lt;br /&gt;　　而WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前&lt;br /&gt;&lt;br /&gt;　　看下面这几个例子吧：&lt;br /&gt;&lt;br /&gt;　　一、显示每个地区的总人口数和总面积&lt;br /&gt;&lt;br /&gt;　　SELECT region, SUM(population), SUM(area)&lt;br /&gt;&lt;br /&gt;　　FROM bbc&lt;br /&gt;&lt;br /&gt;　　GROUP BY region&lt;br /&gt;&lt;br /&gt;　　先以region把返回记录分成多个组，这就是GROUP BY的字面含义。分完组后，然后用聚合函数对每组中的不同字段(一或多条记录)作运算。&lt;br /&gt;&lt;br /&gt;　　二、 显示每个地区的总人口数和总面积.仅显示那些面积超过1000000的地区。&lt;br /&gt;&lt;br /&gt;　　SELECT region, SUM(population), SUM(area)&lt;br /&gt;&lt;br /&gt;　　FROM bbc&lt;br /&gt;&lt;br /&gt;　　GROUP BY region&lt;br /&gt;&lt;br /&gt;　　HAVING SUM(area)&amp;gt;1000000&lt;br /&gt;&lt;br /&gt;　　在这里，我们不能用where来筛选超过1000000的地区，因为表中不存在这样一条记录。&lt;br /&gt;&lt;br /&gt;　　相反，HAVING子句可以让我们筛选成组后的各组数据.&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/2089297.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/06/24/2089297.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/03/16/1985966.html</id><title type="text">据说是一个精神病人写的，爱不释手啊！！</title><summary type="text">前年半夜十一点多，我的豆浆机接到一个电话。对方很狂躁地对我大叫：我们这儿是中国邮政，你男朋友难产，赶紧过来一趟准备后事吧。 我放下豆浆机，赶紧拿起一碗罐头开始吃。吃到一半放下碗跑到楼下，一列火车远远驶来，我一招手，火车驶到我面前停下，驾驶员推门问：到哪？我说，中国邮政。你火车太慢。我要打车。 驾驶员大惊失色，一踩油门。火车在水泥路上火星四溅地拉着两道沟脱轨狂飙而去。 我一看鞋底，一点多了。转身跑向楼上。楼顶一架标着“泰坦尼克号”的直升机卷着旋儿风降落，我上前说：去中国邮政走不走？我男朋友难产。你们让我 搭一程。驾驶员说：这是急事儿啊。我这飞机太慢。你打车吧。说完直升机往楼下抛个锚，缓缓拽上来一</summary><published>2011-03-16T05:43:00Z</published><updated>2011-03-16T05:43:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/03/16/1985966.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/03/16/1985966.html"/><content type="html">前年半夜十一点多，我的豆浆机接到一个电话。对方很狂躁地对我大叫：我们这儿是中国邮政，你男朋友难产，赶紧过来一趟准备后事吧。  &lt;br /&gt; &lt;br /&gt;我放下豆浆机，赶紧拿起一碗罐头开始吃。吃到一半放下碗跑到楼下，一列火车远远驶来，我一招手，火车驶到我面前停下，驾驶员推门问：到哪？我说，中国邮政。你火车太慢。我要打车。  &lt;br /&gt; &lt;br /&gt;驾驶员大惊失色，一踩油门。火车在水泥路上火星四溅地拉着两道沟脱轨狂飙而去。  &lt;br /&gt; &lt;br /&gt;我一看鞋底，一点多了。转身跑向楼上。楼顶一架标着&amp;#8220;泰坦尼克号&amp;#8221;的直升机卷着旋儿风降落，我上前说：去中国邮政走不走？我男朋友难产。你们让我 搭一程。驾驶员说：这是急事儿啊。我这飞机太慢。你打车吧。说完直升机往楼下抛个锚，缓缓拽上来一辆出租车，司机伸头大喊：上中国邮政啊？打表还是现讲价 儿？  &lt;br /&gt; &lt;br /&gt;我站在直升机下，狂风扑面，情形十分紧急。问：一般都多少钱啊？  &lt;br /&gt; &lt;br /&gt;司机用对讲机说：二百！  &lt;br /&gt; &lt;br /&gt;我也操起一把豆浆机说：太贵了！我还是买个车去吧！  &lt;br /&gt; &lt;br /&gt;司机从车里一跃而下跳到楼顶，打个滚站起来，说：买车啊。找我吧。  &lt;br /&gt; &lt;br /&gt;我问，你有什么车？  &lt;br /&gt; &lt;br /&gt;司机推出一辆标着TAXI的宝马，说：名牌跑车。纯手工制作。  &lt;br /&gt; &lt;br /&gt;我一看，确实够手工。油量表都是手画的。  &lt;br /&gt; &lt;br /&gt;我二话没说，从怀里掏出一麻袋IC卡，郑重地交给司机，说：好车。我要了。这里面是六百万话费，你拿着。省着点用。  &lt;br /&gt; &lt;br /&gt;司机热泪盈眶，颤抖的双手抚过粗糙的IC卡，哽咽得说不出话来。  &lt;br /&gt; &lt;br /&gt;我深深地叹了口气，拍拍司机的肩膀，说：谢谢你。滚。  &lt;br /&gt; &lt;br /&gt;我提着宝马车走到快餐店，买了一个二手骨灰盒，奔赴中国邮政。赶到的时候已经中午六点，一个带着口罩的营业员迎上来问：你是患者家属吗？我说是，我男朋友怎么样？营业员摇着头说：我们已经尽力了。但是&amp;#8230;&amp;#8230;唉&amp;#8230;&amp;#8230;父子平安&amp;#8230;&amp;#8230;  &lt;br /&gt; &lt;br /&gt;我顿时大脑一片空白。我男朋友抱着孩子款款走到我身旁，关切地问：你干什么呢？  &lt;br /&gt; &lt;br /&gt;我说：我大脑空白呢。  &lt;br /&gt; &lt;br /&gt;男友不满道：你大脑怎么那么爱空白呢。  &lt;br /&gt; &lt;br /&gt;我勃然大怒，抄起骨灰盒，指着男友的脑袋，说：你说我空什么白，啊？你他妈身为一个男的，在本文这样如此有逻辑性的世界里，生他妈什么孩子啊？！你让我以后出去如何面对社会的舆论？你他妈想上春晚啊？！  &lt;br /&gt; &lt;br /&gt;我放声大骂，同时酷嚓一声拉开盒栓。  &lt;br /&gt; &lt;br /&gt;男友冷静地看着我，说：我知道这不是你要杀我的真正理由。  &lt;br /&gt; &lt;br /&gt;我说：是。真正的理由是，你他妈要不死，我这骨灰盒岂不是白买了！  &lt;br /&gt; &lt;br /&gt;说完我一狠心，扣动了骨灰盒的扳机。  &lt;br /&gt; &lt;br /&gt;只听一声骨灰盒响，男友中盒身亡。我抱着地上的尸体，百感交集，这，曾是我最心爱的人&amp;#8230;&amp;#8230;你妈的。  &lt;br /&gt; &lt;br /&gt;我嚎啕大嚎，旁边的邮政营业员不断地向我推销矿泉水。我边哭边叫：不要！我他妈不要矿泉水！你拿一边儿去！！  &lt;br /&gt; &lt;br /&gt;我哭了一会，上了一趟厕所，厕所门口一个端着枪身上印着&amp;#8220;押运&amp;#8221;的男的冷酷地说：对不起。现在是极昼，你不能上厕所。 &lt;br /&gt; &lt;br /&gt;我凝视着厕所，默默地转身离去。走了两步，回头踩了那男的一脚。然后默默离去。一个人拉住我塞给我一张传单：自助火葬场年终大酬宾。二十元一位。  &lt;br /&gt; &lt;br /&gt;我叫住发单的，让他扛着我男友去参与火葬。  &lt;br /&gt; &lt;br /&gt;走到火葬场，门口已经排起了十三米五十六公分的长龙。终于等到了激动人心的一刻，我看着两个火化师傅，一个在填煤，一个扇扇子，阵阵香气沁人心脾。扇火的师傅抬头问我：烧几位？  &lt;br /&gt; &lt;br /&gt;我把男友塞给他：一位。  &lt;br /&gt; &lt;br /&gt;填煤的师傅问：放孜然不。  &lt;br /&gt; &lt;br /&gt;我犹豫了一下，问：不多加钱吧？  &lt;br /&gt; &lt;br /&gt;师傅说：不加。  &lt;br /&gt; &lt;br /&gt;我说：那来一麻袋。  &lt;br /&gt; &lt;br /&gt;烧了片刻，扇火师傅来招呼我：来你来看看够不够火候。  &lt;br /&gt; &lt;br /&gt;我婉言谢绝：您看着来吧。我最近有点左撇子，大夫不让吃肉。  &lt;br /&gt; &lt;br /&gt;师傅转身离去。片刻返回：打包还是带走？  &lt;br /&gt; &lt;br /&gt;我问：这两个有什么区别？  &lt;br /&gt; &lt;br /&gt;师傅说：没区别。给。  &lt;br /&gt; &lt;br /&gt;我提着二手骨灰盒，怀揣着对男友的思念，踏上了去公交车的路。  &lt;br /&gt; &lt;br /&gt;走在路上，看着窗外，我满怀忧伤地想：  &lt;br /&gt; &lt;br /&gt;&amp;#8220;我他妈刚才把孩子搁哪儿去了？&amp;#8221;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/1985966.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/03/16/1985966.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/02/23/1961969.html</id><title type="text">The project file &amp;#39; &amp;#39; has been renamed or is no longer in the solution. 解决方案</title><summary type="text">问题：昨天因为急着下班，在关闭VS2008的时候卡住了，然后用任务管理器，强制结束VS2008进程，导致今天早上来公司发现网站无法编译，错误提示：---------------------------Microsoft Visual Studio---------------------------The project file &amp;#39; &amp;#39; has been renamed or is no longer in the solution.---------------------------OK ---------------------------在google后，解决方法如下</summary><published>2011-02-23T01:59:00Z</published><updated>2011-02-23T01:59:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/02/23/1961969.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/02/23/1961969.html"/><content type="html">&lt;p&gt;问题：昨天因为急着下班，在关闭VS2008的时候卡住了，然后用任务管理器，强制结束VS2008进程，导致今天早上来公司发现网站无法编译，错误提示：&lt;/p&gt;&lt;p&gt;&lt;div&gt;---------------------------&lt;br /&gt;Microsoft Visual Studio&lt;br /&gt;---------------------------&lt;br /&gt;The project file ' ' has been renamed or is no longer in the solution.&lt;br /&gt;---------------------------&lt;br /&gt;OK&amp;nbsp; &amp;nbsp;&lt;br /&gt;---------------------------&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在google后，解决方法如下：&lt;/p&gt;&lt;p&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp; 1. Right click the Web project and select Property Pages.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 2. A window will open which lists all the references, either to the bin-folder, GAC or other projects in the solution.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 3. Remove those that show (unavailable) behind it.&lt;br /&gt;&amp;nbsp;&amp;nbsp; 4. Chances are that now you can't build because the reference is not there. Simply add the reference again and you should be OK&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/1961969.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/02/23/1961969.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/4kapple/archive/2011/02/15/1955348.html</id><title type="text">批处理根据星期自动备份到服务器的相应文件夹</title><summary type="text">直接上代码，特点：　　1根据系统日期，判断当前星期，自动备份到相应的文件夹mon、tue、wed&amp;#8230;&amp;#8230;　　2支持中文日期、英文日期 　　3覆盖前比较文件，如果文件相同则跳过（提高备份效率）代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&amp;gt;@echooffecho###Backingupdirectory...ECHOYsetweek=mondate/t|find"一"&amp;gt;nulif%errorlevel%equ0goto</summary><published>2011-02-15T08:23:00Z</published><updated>2011-02-15T08:23:00Z</updated><author><name>咖啡色</name><uri>http://www.cnblogs.com/4kapple/</uri></author><link rel="alternate" href="http://www.cnblogs.com/4kapple/archive/2011/02/15/1955348.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/4kapple/archive/2011/02/15/1955348.html"/><content type="html">&lt;p&gt;直接上代码，&lt;/p&gt;&lt;p&gt;特点：&lt;/p&gt;&lt;p&gt;1根据系统日期，判断当前星期，自动备份到相应的文件夹mon、tue、wed&amp;#8230;&amp;#8230;&lt;/p&gt;&lt;p&gt;2支持中文日期、英文日期 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;3覆盖前比较文件，如果文件相同则跳过（提高备份效率）&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding-left:5px;padding-right:5px;" onclick="cnblogs_code_show('7e1f1013-6d84-4246-9728-d10056ea3eea')"&gt;&lt;br/&gt;Code highlighting produced by Actipro CodeHighlighter (freeware)&lt;br/&gt;http://www.CodeHighlighter.com/&lt;br/&gt;&lt;br/&gt;--&gt;&lt;span style="color: #000000;"&gt;@echo&amp;nbsp;off&lt;br /&gt;echo&amp;nbsp;###&amp;nbsp;Backing&amp;nbsp;up&amp;nbsp;directory...&lt;br /&gt;ECHO&amp;nbsp;Y&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;week&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;mon&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;一&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Mon&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;week&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;tue&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;二&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Tue&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;week&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;wed&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;三&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Wed&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;week&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;thu&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;四&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Thu&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;week&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;fri&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;五&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Fri&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;week&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;sat&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;六&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;date&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;t&lt;/span&gt;&lt;span style="color: #000000;"&gt;|&lt;/span&gt;&lt;span style="color: #000000;"&gt;find&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;Sat&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;nul&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;errorlevel&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;equ&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCBAK&lt;br /&gt;&lt;br /&gt;echo&amp;nbsp;Error&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;Application&amp;nbsp;cannot&amp;nbsp;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;date&amp;nbsp;from&amp;nbsp;system.&lt;br /&gt;@pause&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;goto&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;CCExit&lt;br /&gt;&lt;br /&gt;:CCBAK&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;backupcmd&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;xcopy&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;s&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;c&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;d&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;e&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;h&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;i&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;r&amp;nbsp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #000000;"&gt;y&lt;br /&gt;echo&amp;nbsp;###backing&amp;nbsp;ACT&amp;nbsp;###&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;backupcmd&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;C:\EPRO\ACT\*.*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\10.13.5.54\d$\epro_bkup\act\%week%\act_server\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;backupcmd&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;C:\EPRO\FxACT\*.*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\10.13.5.54\d$\epro_bkup\act\%week%\act_client\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;&lt;br /&gt;echo&amp;nbsp;###ACT&amp;nbsp;Complete###&lt;br /&gt;&lt;br /&gt;echo&amp;nbsp;###backing&amp;nbsp;EBS&amp;nbsp;###&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;backupcmd&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;C:\EPRO\EBS\*.*&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;\\10.13.5.54\d$\epro_bkup\ebs\%week%\&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;nbsp;&lt;br /&gt;echo&amp;nbsp;###&amp;nbsp;EBS&amp;nbsp;Complete&amp;nbsp;###&lt;br /&gt;&lt;br /&gt;echo&amp;nbsp;Backup&amp;nbsp;Complete&lt;/span&gt;&lt;span style="color: #000000;"&gt;!&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;@pause&lt;br /&gt;&lt;br /&gt;:CCExit&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/4kapple/aggbug/1955348.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/4kapple/archive/2011/02/15/1955348.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
