﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-Welcome to My blog</title><link>http://www.cnblogs.com/earthharp/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 06 Jul 2009 11:38:56 GMT</lastBuildDate><pubDate>Mon, 06 Jul 2009 11:38:56 GMT</pubDate><ttl>60</ttl><item><title>FareWell My Team</title><link>http://www.cnblogs.com/earthharp/archive/2005/06/30/183876.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Thu, 30 Jun 2005 03:35:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2005/06/30/183876.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/183876.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2005/06/30/183876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/183876.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/183876.html</trackback:ping><description><![CDATA[<DIV><FONT face="Courier New, Courier, mono" size=-1><STRONG style="FONT-SIZE: 24pt">无论多么好的Team，也要受制于资本</STRONG></FONT></DIV><img src ="http://www.cnblogs.com/earthharp/aggbug/183876.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48008/" target="_blank">IBM发布全球首款开源智能编译器</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>更改VS.NET 默认SCM Provider的方法</title><link>http://www.cnblogs.com/earthharp/archive/2005/01/28/98700.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Fri, 28 Jan 2005 03:21:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2005/01/28/98700.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/98700.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2005/01/28/98700.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/98700.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/98700.html</trackback:ping><description><![CDATA[找到HKEY_LOCAL_MACHINE\SOFTWARE\SourceCodeControlProvider\ProviderRegKey键
<br/>更改为自定义Provider在注册表中的位置。
<br/>
<br/>比如，从Software\Microsoft\SourceSafe改为SOFTWARE\Perforce\p4可以把SCM Provider从VSS改成Perforce, 反之亦然<img src ="http://www.cnblogs.com/earthharp/aggbug/98700.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48007/" target="_blank">IE颓势不减 微软下月公布最新浏览器架构</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>关于VS.NET的SCM Plug-in</title><link>http://www.cnblogs.com/earthharp/archive/2005/01/27/97931.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Thu, 27 Jan 2005 00:18:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2005/01/27/97931.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/97931.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2005/01/27/97931.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/97931.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/97931.html</trackback:ping><description><![CDATA[如何替换vs.net的scm plug-in?
<br/>使用一种SCM和VS.NET集成开发， 怎样把这个SCM换成其他的SCM。<img src ="http://www.cnblogs.com/earthharp/aggbug/97931.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48002/" target="_blank">竞争日趋激烈 微软欲借 Windows 7 扭转战局</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Lippman的宣传</title><link>http://www.cnblogs.com/earthharp/archive/2004/11/05/60841.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Fri, 05 Nov 2004 09:01:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2004/11/05/60841.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/60841.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2004/11/05/60841.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/60841.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/60841.html</trackback:ping><description><![CDATA[<STRONG><SPAN class="postbody1"><SPAN lang="EN-US" style="FONT-FAMILY: Verdana"><SPAN style="FONT-SIZE: 12pt; COLOR: #993300; FONT-FAMILY: Comic Sans MS"><STRONG><SPAN class="postbody1"><SPAN lang="EN-US" style="FONT-FAMILY: Verdana">Lippman</SPAN></SPAN><SPAN class="postbody1"><SPAN style="FONT-FAMILY: 宋体">：我想如果你不喜欢编程，那么编程的生活将是十分恐怖的！而且如果你仅仅是出于对金钱的考虑而选择程序员这一职业，而并不是真心喜爱这个工作，那么我奉劝你还是早点抽身的好。</SPAN></SPAN><SPAN class="postbody1"><SPAN style="FONT-FAMILY: Verdana"> </SPAN></SPAN></STRONG><SPAN lang="EN-US" style="FONT-FAMILY: Verdana"><br/><br/></SPAN><STRONG><SPAN class="postbody1"><SPAN style="FONT-FAMILY: 宋体">　　但是，如果你喜欢创造，那么你可以考虑做一名程序员。今天的世界离不开电脑，几乎没有什么事情不是由电脑来运作的。而且你可以想想编程是一件多么奇妙的事情啊。我认为，电脑技术是人类历史上最具创造力的技术，你必须能感受到它的奇妙。很多人也认为电脑技术很奇妙，试图弄清楚究竟是怎么一回事，可是非常困难，因为他们的思维不具备逻辑性。</SPAN></SPAN><SPAN class="postbody1"><SPAN style="FONT-FAMILY: Verdana"> </SPAN></SPAN></STRONG><SPAN lang="EN-US" style="FONT-FAMILY: Verdana"><br/><br/></SPAN><SPAN class="postbody1"><SPAN style="FONT-FAMILY: 宋体"><STRONG>　　如果你不喜欢编程，那么不必强迫自己做一名程序员。当然我们需要好的管理人员，但是我觉得一名好的程序员比一名管理人员更有价值，因为我们有太多的优秀管理人才，但优秀的程序员却并不多。</STRONG></SPAN></SPAN></SPAN></SPAN></SPAN></STRONG><img src ="http://www.cnblogs.com/earthharp/aggbug/60841.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48001/" target="_blank">上海电信计划2012年80%用户实现100M带宽</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Important Issue About DataReader and DataGrid's Paging</title><link>http://www.cnblogs.com/earthharp/archive/2004/10/16/52976.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Fri, 15 Oct 2004 17:35:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2004/10/16/52976.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/52976.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2004/10/16/52976.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/52976.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/52976.html</trackback:ping><description><![CDATA[<P>使用DataReader的重要提示：<BR>在Reader没有读完数据之前， Reader是不会自动关闭的。<BR><BR>Portal的DAL中大量使用了SqlDataReader用在DataBinding中以提高效率， 不知道有没有注意到在使用中都显式的关闭了DataReader. 若数据在DataBinding的过程中全部读出，可以不需要手动去关闭DataReader。但是如果数据在读出过程中中断(这种情况经常出现)，就一定要手动关闭DataReader。<BR><BR>比如说，由于DataGrid的绑定DataTable进行默认分页太慢，数据量太大，消耗内存太多而使用DataReader进行CustomPaging的时候，绝对不能如同DataTable一般的直接取出全部数据绑定，也就是说，不能取出数量大于PageCount的数据。因为DataGrid只绑定PageCount个内容， 而你的DataReader要读的内容大于需要的内容，所以DataReader在绑定结束后，DataReader.Read()依然返回true, 这样DataReader是不会自动关闭自己及连接。这样会造成严重的资源泄露。<BR><BR>因此，如果想偷懒。就一定要算好数据量再读取，不要忽视Reader没有读完的情况。如果想要稳定，就一定要记得在任何时候， 用完了DataReader一定要关闭(如果没有CommandBehavior.CloseConnection, 还要关闭连接)。 使用DataReader进行数据绑定在不分页能完全显示的情况下是非常优越的，不需要处理细节问题。但是在数据需要分页的时候，不管怎么样，请你记得关闭DataReader, 或者是计算好你的数据。<BR><BR>再贴一个来自MS ADO.NET (Core Ref)中的QA<BR><BR></P>
<LI style="LIST-STYLE-TYPE: none">
<P class=normal><SPAN class=lead-in>Q. </SPAN>I called a stored procedure that returns a set of rows. Everything seems to work except that the output and return parameters are empty. Why is that?</P>
<LI style="LIST-STYLE-TYPE: none">
<P class=normal><SPAN class=lead-in>A. </SPAN>You can think of a stored procedure as a function in your code. The function doesn&#8217;t return a value until it has executed all of its code. If the stored procedure returns results and you haven&#8217;t finished processing these results, the stored procedure hasn&#8217;t really finished executing. Until you&#8217;ve closed the <SPAN class=programelement>DataReader</SPAN>, the return and output parameters of your <SPAN class=programelement>Command</SPAN> won&#8217;t contain the values returned by your stored procedure.</P>
<P class=normal>Let&#8217;s say we have the stored procedure</P>
<DIV class=codeblock_unnumbered><PRE class=codebody>CREATE&nbsp;PROCEDURE&nbsp;RowsAndOutput&nbsp;(@OutputParam&nbsp;int&nbsp;OUTPUT)&nbsp;AS
&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;@OutputParam&nbsp;=&nbsp;COUNT(*)&nbsp;FROM&nbsp;Customers
&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;CustomerID,&nbsp;CompanyName,&nbsp;ContactName,&nbsp;Phone&nbsp;FROM&nbsp;Customers</PRE></DIV>
<P class=continuation>and we call it with the following code:</P>
<LI style="LIST-STYLE-TYPE: none"><PRE class=codebody><DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"><DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;strConn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Provider=SQLOLEDB;Data&nbsp;Source=(local)\\NetSDK;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">Initial&nbsp;Catalog=Northwind;Trusted_Connection=Yes;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>OleDbConnection&nbsp;cn&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbConnection(strConn);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>cn.Open();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;strSQL&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">{CALL&nbsp;RowsAndOutput(?)}</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>OleDbCommand&nbsp;cmd&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;OleDbCommand(strSQL,&nbsp;cn);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>OleDbParameter&nbsp;param;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>param&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;cmd.Parameters.Add(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">@OutputParam</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;OleDbType.Integer);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>param.Direction&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;ParameterDirection.Output;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>OleDbDataReader&nbsp;rdrCustomers&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;cmd.ExecuteReader();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">After&nbsp;execution&nbsp;-&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">)&nbsp;param.Value);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">&nbsp;(rdrCustomers.Read())<BR><IMG id=Codehighlighter1_570_571_Open_Image onclick="this.style.display='none'; Codehighlighter1_570_571_Open_Text.style.display='none'; Codehighlighter1_570_571_Closed_Image.style.display='inline'; Codehighlighter1_570_571_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_570_571_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_570_571_Closed_Text.style.display='none'; Codehighlighter1_570_571_Open_Image.style.display='inline'; Codehighlighter1_570_571_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_570_571_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_570_571_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">After&nbsp;reading&nbsp;rows&nbsp;-&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">)&nbsp;param.Value);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">while</SPAN><SPAN style="COLOR: #000000">&nbsp;(rdrCustomers.NextResult())<BR><IMG id=Codehighlighter1_674_675_Open_Image onclick="this.style.display='none'; Codehighlighter1_674_675_Open_Text.style.display='none'; Codehighlighter1_674_675_Closed_Image.style.display='inline'; Codehighlighter1_674_675_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_674_675_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_674_675_Closed_Text.style.display='none'; Codehighlighter1_674_675_Open_Image.style.display='inline'; Codehighlighter1_674_675_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_674_675_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_674_675_Open_Text><SPAN style="COLOR: #000000">{}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">After&nbsp;reading&nbsp;all&nbsp;results&nbsp;-&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">)&nbsp;param.Value);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>rdrCustomers.Close();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>Console.WriteLine(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">After&nbsp;closing&nbsp;DataReader&nbsp;-&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">)&nbsp;param.Value);</SPAN></DIV></DIV></PRE>
<P class=normal>Even though the stored procedure sets the value of the output parameter before running the query that returns rows from the Customers table, the value of the output parameter is not available until after the <SPAN class=programelement>DataReader</SPAN> is closed.</P></LI><img src ="http://www.cnblogs.com/earthharp/aggbug/52976.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48000/" target="_blank">数万名网友签名抗议星际争霸2取消局域网功能</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>上海照的</title><link>http://www.cnblogs.com/earthharp/archive/2004/10/07/49705.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Thu, 07 Oct 2004 15:23:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2004/10/07/49705.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/49705.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2004/10/07/49705.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/49705.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/49705.html</trackback:ping><description><![CDATA[<IMG height=487 src="http://www.cnblogs.com/images/cnblogs_com/earthharp/DSC00396.JPG" width=650 border=0><img src ="http://www.cnblogs.com/earthharp/aggbug/49705.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47999/" target="_blank">Silverlight打造杰克逊纪念专题</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>cookie的过期时间-- 郁闷又恼火</title><link>http://www.cnblogs.com/earthharp/archive/2004/07/28/27866.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Tue, 27 Jul 2004 18:44:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2004/07/28/27866.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/27866.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2004/07/28/27866.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/27866.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/27866.html</trackback:ping><description><![CDATA[<P>由客户端取得的cookie之中Expires属性为默认值<FONT color=#ff0000><STRONG>0001-1-1 0:00:00!<BR><BR></STRONG></FONT><FONT color=#000000>因此不要指望<BR></P>
<P></P>
<DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 80%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<DIV><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpCookie&nbsp;cookie&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;Request.Cookies[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">A</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">];<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(cookie&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">)<BR><IMG id=Codehighlighter1_83_247_Open_Image onclick="this.style.display='none'; Codehighlighter1_83_247_Open_Text.style.display='none'; Codehighlighter1_83_247_Closed_Image.style.display='inline'; Codehighlighter1_83_247_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_83_247_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_83_247_Closed_Text.style.display='none'; Codehighlighter1_83_247_Open_Image.style.display='inline'; Codehighlighter1_83_247_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_83_247_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_83_247_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;HttpCookie(</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">A</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">,&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie.Expires&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;DateTime.Now.AddDays(</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie.Value&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">45</SPAN><SPAN style="COLOR: #000000">.ToString();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.AppendCookie(cookie);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">else</SPAN><SPAN style="COLOR: #000000"><BR><IMG id=Codehighlighter1_262_330_Open_Image onclick="this.style.display='none'; Codehighlighter1_262_330_Open_Text.style.display='none'; Codehighlighter1_262_330_Closed_Image.style.display='inline'; Codehighlighter1_262_330_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_262_330_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_262_330_Closed_Text.style.display='none'; Codehighlighter1_262_330_Open_Image.style.display='inline'; Codehighlighter1_262_330_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_262_330_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN id=Codehighlighter1_262_330_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cookie.Value&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">.Parse(cookie.Value)).ToString();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN></DIV></DIV>
<P>这样的代码会把修改后的cookie放回到客户端, 由于过期时间被重置为DefualtValue,&nbsp;&nbsp;这个cookie将变为一个Session cookie。如果需要保存Cookie, &nbsp;必须在每一次获取Cookie后设置过期。<BR><BR>搞的有点晕<BR><BR>&nbsp;&nbsp;&nbsp; </FONT></P><img src ="http://www.cnblogs.com/earthharp/aggbug/27866.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47998/" target="_blank">传诺基亚正在开发Android手机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>可为空的基础类型</title><link>http://www.cnblogs.com/earthharp/archive/2004/06/02/12820.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Tue, 01 Jun 2004 16:08:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2004/06/02/12820.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/12820.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2004/06/02/12820.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/12820.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/12820.html</trackback:ping><description><![CDATA[DB中经常出现元组的某个项为空的情况<BR>若对于取出的值为NULL, 基础类型是不能表达的。需要自己定义基础类型的wrapper或者使用针对于DB的基础类型<BR>C# 2.0中引入的Nullable type可以较好的解决此问题。<BR>int? a = 123;<BR>这就是一个Nullable type, 在使用中，可以从DB从取出值并进行如下的比较<BR>if (a == null)<BR>{...}<BR>或者<BR>if (a != null)<BR>{...}<BR><BR>简化了对程序员对DB的操作<BR><BR>装了vs2005的同胞可以试验一下<img src ="http://www.cnblogs.com/earthharp/aggbug/12820.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47996/" target="_blank">7月编程语言排行榜</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Bad Smell</title><link>http://www.cnblogs.com/earthharp/archive/2004/05/14/9564.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Fri, 14 May 2004 11:40:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2004/05/14/9564.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/9564.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2004/05/14/9564.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/9564.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/9564.html</trackback:ping><description><![CDATA[<P>对代码的膨胀越来越觉得提心吊胆<BR>看样子可能是某个部分没有做好充分的准备<BR>虽然还没有进入焦油坑，但每步都觉得比以前艰难， 这也许是一个不可能改变的事实。哪怕是使用接受变化的开发方法，也无法在程序复杂性不断提升的同时保证修改难度不变。<BR>一次积极的hacker式开发尝试确实有许多感想。前置设计绝对是必要的，虽然对于自己并不熟悉的领域，采用蠕动式探索(TracerBullet)能取得很多有益的提示。但是对于整体的把握，模块之间的过度分离化会使整个系统的行为难于确定，特别是当大量模块之间需要紧密协作时，在编码与小设计过程中无法预见一些需要大量协作的问题。<BR><BR>若是在<BR><BR>编码&nbsp;---测试集成 ---&nbsp;重构 ---&nbsp;增量设计<BR>|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|<BR>|____________迭代______________|<BR><BR>这样的过程中，不断增长的整个系统会因为系统本身的耦合性在后续设计中产生对以前设计模块的影响。这其实充分说明了整个系统不管设计时将模块做的多么自闭(Self-contained)，系统却是一个耦合工作的实体。因此在进行Bottom-Up设计时，应给予模块之间的协作以相当考虑。这点其实就是OOP的精髓---良性耦合。<BR><BR>当然，对于一个object-based系统，比一个乱七八糟的object-oriented系统，要好应付的多。把绳子绑上与解开死结，需要的工作量不属于一个量级。<BR><BR><FONT color=#0000ff size=4>Rule is to be broken</FONT>&nbsp;&nbsp; ---Robert C. Martin</P><img src ="http://www.cnblogs.com/earthharp/aggbug/9564.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47995/" target="_blank">Google Voice 上手</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Choice</title><link>http://www.cnblogs.com/earthharp/archive/2004/04/26/7744.html</link><dc:creator>Agent</dc:creator><author>Agent</author><pubDate>Mon, 26 Apr 2004 15:31:00 GMT</pubDate><guid>http://www.cnblogs.com/earthharp/archive/2004/04/26/7744.html</guid><wfw:comment>http://www.cnblogs.com/earthharp/comments/7744.html</wfw:comment><comments>http://www.cnblogs.com/earthharp/archive/2004/04/26/7744.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/earthharp/comments/commentRss/7744.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/earthharp/services/trackbacks/7744.html</trackback:ping><description><![CDATA[本来准备把所有编译错误都写到一个List中，在编译结束后再全部输出。<BR>可发现这样做有好几个缺点：<BR><BR>1. 编译错误与文本行struct Line相联系。如果在一个List中，就会大量插入Line结构。Line结构中保存文本行的大小默认为500byte, 如果错误多起来空间消耗是非常恐怖的。我考虑了使用FlyWeight节省空间，但是如果source文件很大，FlyWeight依然不能给我带来多大优点。编译过程是从文件头一直分析到文件尾，所以我自己的处理过程都只使用了一个Line和两个Token来提高效率， 比其他方法都要优秀的多。节省的空间可以大量使用到HashTable中进行索引。<BR><BR>2. 如果真的用到List中，在调试的时候就不能动态的输出错误信息，也就是说，哑调试，需要自己去查看List操作的正确性以及错误信息，这样造成了极大不便。<BR><BR>3. 已经把错误输出封装为一个OutputError函数，虽然不如用List压入一个Error结构那么简单，但是毕竟也算是一个优雅的方式。为了其他因素牺牲掉一点点的代码冗余，还是比较值得。<BR><BR>ok, ErrList被放弃。<BR><BR><img src ="http://www.cnblogs.com/earthharp/aggbug/7744.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47994/" target="_blank">Google号召社区力量为互联网加速</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>