﻿<?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>博客园-维生素C.net</title><link>http://www.cnblogs.com/lovewangshu/</link><description>Talents come from diligence, and knowledge is gained by accumulation 天才源于勤奋，知识源于积累。难忘的1654天</description><language>zh-cn</language><lastBuildDate>Thu, 02 Jul 2009 23:40:53 GMT</lastBuildDate><pubDate>Thu, 02 Jul 2009 23:40:53 GMT</pubDate><ttl>60</ttl><item><title>[ie8特性1] 6个conection per domain的设计</title><link>http://www.cnblogs.com/lovewangshu/archive/2008/03/12/1102143.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 12 Mar 2008 06:53:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2008/03/12/1102143.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1102143.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2008/03/12/1102143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1102143.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1102143.html</trackback:ping><description><![CDATA[<p>作为www的传输协议，HTTP很简单：client与remote server建立connection，然后发送request，server处理这个request，返回response，然后关闭这个connection。</p> <p>但是这个如此简单的过程存在着一些问题：</p> <p>先看request:</p> <h5>GET /index.html HTTP/1.0 /*表明动作是GET,要获取的东东是/index.html*/<br>Accept: text/plain /*这里可以有n多的headers,在rfc822里有说明*/<br>Accept: text/html<br>Accept: */*<br>User-Agent: OnlyVC-1.0 /*客户端的实现名称*/</h5> <h5>server给出response:</h5> <h5>HTTP/1.0 200 OK <br>Server: MDMA/0.1 <br>MIME-version: 1.0 <br>Content-type: text/html <br>Last-Modified: Tue Mar 11 00:25:33 2008 <br>Content-Length: 2003 <br>/*注意,这里一定要有一个空行!*/<br>&lt;title&gt;OnlyVC.cn&lt;/title&gt;<br>&lt;h1&gt; welcome to OnlyVC.cn &lt;/h1&gt;.....</h5> <p>OK，到此为止，做web的人肯定都知道</p> <p>Next，我们可以借助像tcpdump等工具去看看HTTP，限于篇幅这里不粘贴数据了，我们可以把一个过程分成6个stage，在这个过程中需要注意一个重要的衡量指标：Round Trip Time（RTT），这个值时说一个packet从一端发送到另一端，然后再回来所用的时间。但是TCP有个很怪的毛病，简单来说就是建立连接时是先发几个小packet测测速度，然后再开始传输数据，这个过程叫做Slow Start。</p> <p>HTTP1.1是不需要等待一个packet发送过去然后被确认（acknowledged）了再发送下一个packet的，我们可以发送一个packet，不管它如何，再发送下一个。</p> <p>对于RFC里2 connection per hostname的设计在当时是合乎情理的，但是对于现在的Internet应用来说，已经远远不够了。但是反过来，作为一个website的开发者来看，对于一个页面使用的resources分布到多个hostname上还是有必要的，但是这个hostname的数量最好在2~4个为宜。如果页面有大量resources需要引用，尤其是对于产品较多的集合型网站，cookie的大小还是比较可观的，如果我们所有的内容都来自于一个域，假设1个页面有30张图片，cookie大小为20k，那就是有30*20=600k的东西被做了一次没用的传输，分布在其他hostname后是减少cookie-taking的一个好办法，因为cookie是有作用域的。</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1102143.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47937/" target="_blank">微软8月25日开始通过WSUS推送IE8</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>asp.net 3.5 extensions readme</title><link>http://www.cnblogs.com/lovewangshu/archive/2008/03/06/1093463.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Thu, 06 Mar 2008 05:17:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2008/03/06/1093463.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1093463.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2008/03/06/1093463.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1093463.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1093463.html</trackback:ping><description><![CDATA[<a href="http://www.asp.net/downloads/3.5-extensions/readme/">asp.net 3.5 extensions readme</a><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1093463.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47935/" target="_blank">暴风称新旧版更换完毕 总计超4000万用户换装</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>Vista上无法使用WCF的处理方法</title><link>http://www.cnblogs.com/lovewangshu/archive/2008/01/11/1035472.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Fri, 11 Jan 2008 08:41:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2008/01/11/1035472.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1035472.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2008/01/11/1035472.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1035472.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1035472.html</trackback:ping><description><![CDATA[<p><a href="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/VistaWCF_EA72/wcfOnVista_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="386" alt="wcfOnVista" src="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/VistaWCF_EA72/wcfOnVista_thumb.png" width="439" border="0"></a> </p> <p>如果用IIS7勾选Windows Communication Foundation HTTP Activation</p> <p>之后IIS7的Handler Mapping里就会有:</p> <p><a href="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/VistaWCF_EA72/wcfOnVista1_2.jpg"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="49" alt="wcfOnVista1" src="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/VistaWCF_EA72/wcfOnVista1_thumb.jpg" width="363" border="0"></a> </p> <p>了</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1035472.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47934/" target="_blank">3.5版既出 Firefox面临新挑战</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>SQL Server 2005 Management Studio假死的情况</title><link>http://www.cnblogs.com/lovewangshu/archive/2008/01/08/1029973.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Tue, 08 Jan 2008 02:41:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2008/01/08/1029973.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1029973.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2008/01/08/1029973.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1029973.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1029973.html</trackback:ping><description><![CDATA[<p>昨天遇到了一个问题，就是当我往SQL Server 2005 Management Studio里paste一段超长的文本的时候，按下ctrl+v后迟迟没有反映，最后以我等不及了点X时的end responding告终。</p> <p>后来开始怀疑Text Editor的Word Wrap（我们都比较习惯这么用）会不会是从犯，结果一试——它是主谋！</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1029973.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47930/" target="_blank">Bing首页将显示各国美景 顺推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>Internal .Net Framework Data Provider error 6</title><link>http://www.cnblogs.com/lovewangshu/archive/2008/01/07/1028407.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Mon, 07 Jan 2008 01:39:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2008/01/07/1028407.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1028407.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2008/01/07/1028407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1028407.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1028407.html</trackback:ping><description><![CDATA[<p>在使用SQL Server 2005的database mirroring功能时遇到了Internal .Net Framework Data Provider error 6这个错误，发现没法立刻解决了，看完了<a href="http://support.microsoft.com/kb/944099">KB article 944099</a>后才知道要去自己去找ms的support要一个更新。至少到目前为止是这样的，遇到这个错误又想尽快解决问题的，我看还是先考虑换种方式，或者试试2008吧，2008我手头没有虚机，还没法测试</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1028407.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47929/" target="_blank">Gmail 的标签马上就会支持拖拽操作了</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/lovewangshu/archive/2007/12/29/1019643.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sat, 29 Dec 2007 03:23:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/12/29/1019643.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1019643.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/12/29/1019643.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1019643.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1019643.html</trackback:ping><description><![CDATA[<p>select p.name, m.definition <br>from sys.procedures p inner join sys.sql_modules m <br>on p.object_id = m.object_id<br>where m.definition like '%150%' <p>感谢怡红公子</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1019643.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47928/" 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>firefox, IE6, IE7在CSS hack上的入口点</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/12/29/1019529.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sat, 29 Dec 2007 02:37:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/12/29/1019529.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1019529.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/12/29/1019529.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1019529.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1019529.html</trackback:ping><description><![CDATA[<p>firefox认识!important</p> <p>IE7认识<strong>*</strong>和!important,而且!important还有<strong>优先级</strong>作用, 不认识<strong>_</strong></p> <p>IE6不认识!important,*和_的全认识</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1019529.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47928/" 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>不知道多少人存在这个误解:</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/12/27/1016519.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Thu, 27 Dec 2007 02:39:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/12/27/1016519.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/1016519.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/12/27/1016519.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/1016519.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/1016519.html</trackback:ping><description><![CDATA[<STRONG>
<OL>
<LI>When the script engine is shut down, garbage is collected. 
<LI>When <STRONG>256 variants</STRONG>, or <STRONG>more than 64KB of strings</STRONG>, or <STRONG>more than 4096 array</STRONG> slots have been allocated, the garbage collector sets a flag that says <STRONG>collect soon</STRONG>. 
<LI>Whenever a new statement is executed or the script debugger starts, that flag is checked, and if it is set, a collection is done.</LI></OL>
<P>看到这篇帖子的朋友不知道有多少人看过上面三条规则,如果你从搜索引擎搜索javascript delete object的话会经常看到上面这三条,但是这3条规则其实是针对Jscript的,跟javascript没有关系的<BR><BR>全文:<BR><BR>JScript </STRONG>uses a mark-and-sweep garbage collector with a variety of heuristics used to determine when to run garbage collection. The JScript garbage collector works like this: 
<P><IMG height=4 alt="" src="http://msdn.microsoft.com/msdnmag/images/dingbats/indent.gif" width=10>There is an undocumented JScript function called CollectGarbage that forces a garbage collection. This is for testing purposes only—do not ship code that calls this function. <STRONG>It is a poor programming practice to write code in JScript that depends on garbage collections being done at particular times</STRONG>. If you need predictable garbage collection, use a language that supports it (like Visual Basic® or VBScript). Note that all of this is the implementation detail of the engine and should not be relied upon because it may change in the future. <STRONG>Note also that the version of JScript supported by Microsoft® .NET will use the .NET Framework garbage collector</STRONG>, a multigenerational mark-and-sweep collector.<BR><IMG height=4 alt="" src="http://msdn.microsoft.com/msdnmag/images/dingbats/indent.gif" width=10>And remember, if you want a deterministic-lifetime app, use a deterministic-lifetime language like C++, Visual Basic 6.0, or VBScript; not an indeterministic-lifetime language like JScript, Scheme, or Java. If you're writing a program that depends on being able to have a deterministic object lifetime, JScript is not the right tool for the job. Trying to make it a deterministic-lifetime language will just create headaches down the road.</P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/1016519.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47927/" target="_blank">虚拟货币上了"紧箍咒" 新规将限制Q币发行</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>Google Reader/Google Notebook使用以前的英文界面的办法</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/09/30/911535.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sun, 30 Sep 2007 01:42:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/09/30/911535.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/911535.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/09/30/911535.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/911535.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/911535.html</trackback:ping><description><![CDATA[Google的产品向来好用的，但是作到现在已经看不出认真两个字了，Google Reader中文版的翻译工作只能给予0分，把OK按钮都翻译成“良好”，一来说明Google Translate不好用，二来说明Google已经开始俗气了。<BR><BR>被强迫使用中文的朋友可以这样操作来使用英文版：<BR>Google Reader uses your general Google preferences for this. To change <BR>this setting, go to <A href="http://www.google.com/preferences" target=_blank rel=nofollow>http://www.google.com/preferences</A> and select your <BR>desired <B style="COLOR: black; BACKGROUND-COLOR: #ffff66">language</B> from the drop-down menu. Then save the changes, go <BR>back to Reader, and you should be set. (Refresh the page if it doesn't <BR>change right away.) <BR><BR>是不是很werid？<BR><BR>原文地址：<A href="http://groups.google.com/group/google-reader-howdoi/browse_thread/thread/9ec2ce277d3bae4b/4f753e5e4261df64?lnk=gst&amp;q=language&amp;rnum=1">http://groups.google.com/group/google-reader-howdoi/browse_thread/thread/9ec2ce277d3bae4b/4f753e5e4261df64?lnk=gst&amp;q=language&amp;rnum=1</A><img src ="http://www.cnblogs.com/lovewangshu/aggbug/911535.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47926/" target="_blank">魔兽世界审批期限有新说 - 80天才是正解</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>编译IronRuby项目和修复其中的一些bugs</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/08/05/843620.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sun, 05 Aug 2007 04:16:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/08/05/843620.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/843620.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/08/05/843620.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/843620.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/843620.html</trackback:ping><description><![CDATA[<P><STRONG><FONT face=Verdana size=2>编译：</FONT></STRONG></P>
<P><FONT face=Verdana size=2>1.下载了源代码，并且安装了.net framework</FONT></P>
<P><FONT face=Verdana size=2>2.因为.net framework安装时的bug，所以一定要检查一下%frameworkdir%，%frameworkversion%这两个环境变量的位置，我直接修改的build.cmd文件，使用了msbuild的绝对位置：</FONT></P>
<P><FONT face=Verdana size=2>C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\msbuild.exe /p:Configuration=Release /t:Rebuild IronRuby.sln</FONT></P>
<P><FONT face=Verdana size=2>3.保存Build.cmd，在console下运行它，不出意外的话将成功编译。</FONT></P>
<P><STRONG><FONT face=Verdana size=2>测试一个bug：</FONT></STRONG><FONT face=Verdana size=2></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">1</SPAN>&nbsp;<SPAN style="COLOR: #000000">a</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">fanweixiao</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">2</SPAN>&nbsp;<SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">fanweixiao</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">3</SPAN>&nbsp;<SPAN style="COLOR: #000000">b</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">&nbsp;维生素C.net</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">4</SPAN>&nbsp;<SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">&nbsp;维生素C.net</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">5</SPAN>&nbsp;<SPAN style="COLOR: #000000">c</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">a</SPAN><SPAN style="COLOR: #000000">+</SPAN><SPAN style="COLOR: #000000">b<BR></SPAN><SPAN style="COLOR: #008080">6</SPAN>&nbsp;<SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">fanweixiao&nbsp;维生素C.net</SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">7</SPAN>&nbsp;<SPAN style="COLOR: #000000">a<BR></SPAN><SPAN style="COLOR: #008080">8</SPAN>&nbsp;<SPAN style="COLOR: #000000"></SPAN><SPAN style="COLOR: #800000">"</SPAN><SPAN style="COLOR: #800000">fanweixiao&nbsp;维生素C.net</SPAN><SPAN style="COLOR: #800000">"</SPAN></DIV>
<P>大家可以看到变量a也变成a+b了</FONT></P>
<P><FONT face=Verdana><FONT size=2><STRONG>修复这个bug</STRONG>：</FONT></FONT></P>
<P><FONT face=Verdana size=2>找到Ruby\Builtins\MutableStrings.cs的Concatenate(MutableString self, MutableString other)方法：</FONT></P>
<P><FONT face=Verdana size=2>很明显self.Append(other)会导致self自己发生改变，那么我们改写这个方法：</FONT></P>
<P><FONT face=Verdana size=2>再次编译运行rbx.exe，已经被修复了。</FONT></P>
<P><STRONG><FONT face=Verdana size=2>其他：</FONT></STRONG></P>
<P><FONT face=Verdana size=2>正如大家看到的一样，这只是一个Pre-Alpha版本，有许许多多的细节还不完善，不过如果想将其尽快应用上，有些文章能派上用场:</FONT></P><A href="http://sparcs.kaist.ac.kr/~tinuviel/download/IronRuby/patch-math" target=_blank><FONT face=Verdana size=2>FePy对math方面的修复和扩展</FONT></A><FONT face=Verdana size=2> </FONT>
<P><A href="http://www.hanselman.com/blog/WPFSampleInIronRubyTalkingViaCToWesabe.aspx"><FONT face=Verdana size=2>WPF Sample in IronRuby talking via C# to Wesabe</FONT></A></P>
<P><A href="http://weblogs.asp.net/scottgu/archive/2007/07/23/first-look-at-ironruby.aspx"><FONT face=Verdana size=2>IronRuby with .Net 3.x and Windows Presentation Foundation (WPF)</FONT></A></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/843620.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47925/" target="_blank">“必应”出生满月 抢夺谷歌蛋糕</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>IronRuby博客中文版-- IronRuby: a promising start</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/08/05/IronRuby_Blog.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sun, 05 Aug 2007 03:38:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/08/05/IronRuby_Blog.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/843583.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/08/05/IronRuby_Blog.html#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/843583.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/843583.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana color=#eb2c0a size=2>IronRuby是Ruby语言在.net上的实现，该产品的负责人John Lam的博客在国内是不容易被访问到的，在联系了John后开始了其博客翻译的工作，如果您对Ruby语言和DLR感兴趣的话欢迎您的参与。</FONT></P>
<P><FONT face=Verdana size=2>在过去的几周里很高兴看到的许许多多对IronRuby的反映。感谢那些花时间尝试并却对它的好的方面和坏的方面评论的人们，看到这个变化尤其令我高兴：</FONT></P>
<P><A href="http://antoniocangiano.com/2007/07/26/is-ironruby-mathematically-challenged/" target=_blank><FONT face=Verdana size=2>Antonio Cangiano</FONT></A><FONT face=Verdana size=2>下载了源代码，顺利的编译了他们并且运行了快速测试（quick starts），他发现我们并没有正确的处理好显示类型转换而感到失望，例如：</FONT></P>
<BLOCKQUOTE>
<P><FONT face=Verdana size=2>1/3.0=&gt;0</FONT></P></BLOCKQUOTE>
<P><FONT face=Verdana size=2>再短短的几个小时之后， Seo Sanghyeon发布了一篇名为</FONT><A href="http://fepy.blogspot.com/2007/07/teaching-ironruby-math-tricks.html" target=_blank><FONT face=Verdana size=2>Teaching IronRuby Math tricks</FONT></A><FONT face=Verdana size=2>的博客，Seo不仅修复了源代码中的bugs，还花时间写了一篇关于开发者如何在源代码中使用他的patch的博客。</FONT></P>
<P><FONT face=Verdana size=2>Josh Nursing也不甘示弱，他写了一篇</FONT><A href="http://www.yashlabs.com/wp/?p=145" target=_blank><FONT face=Verdana size=2>详细的博客</FONT></A><FONT face=Verdana size=2>一步一步讲述了如何build这个项目（有截图的）[<A href="/lovewangshu/archive/2007/08/05/843620.html"><FONT color=#ff1493>相关翻译</FONT></A>]，同时他也修复了其中的一个bug， 并且一步步的讲述了他是如何做到的。</FONT></P>
<P><FONT face=Verdana size=2>这是我们刚刚诞生的社区的一个很好的开始，感谢你们的努力，我将花更多的时间在OSCON作出好的demo，告诉其他的开源开发者。从周一开始我们的team将要集中精力尽快在Rubyforge上公开我们的源代码，那是多么令人激动的时刻！<BR><BR><FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000>注：为了方便大家，我将</FONT><A href="/lovewangshu/archive/2007/07/30/IronRuby.html"><FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000><STRONG>IronRuby的源代码的下载</STRONG></FONT></A><FONT style="BACKGROUND-COLOR: #ffffff" color=#ff0000>放在了博客园。</FONT></FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/843583.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47925/" target="_blank">“必应”出生满月 抢夺谷歌蛋糕</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>IronRuby的下载</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/07/30/IronRuby.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Mon, 30 Jul 2007 08:36:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/07/30/IronRuby.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/836559.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/07/30/IronRuby.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/836559.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/836559.html</trackback:ping><description><![CDATA[<P>很多朋友无法访问John Lam的网站，我把下载包放在了博客园里，<A href="/Files/lovewangshu/IronRuby-Pre-Alpha1.zip">点击这里下载</A>。</P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/836559.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47924/" target="_blank">Firefox 3.5正式版全球下载量突破500万次</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>http的基础知识帮助减少代码量和复杂度的一个Demo</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/07/19/823226.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 18 Jul 2007 16:41:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/07/19/823226.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/823226.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/07/19/823226.html#Feedback</comments><slash:comments>16</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/823226.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/823226.html</trackback:ping><description><![CDATA[<P>先看完RFC再看！<A href="/cnlamar/archive/2007/01/08/614671.html" target=_blank><FONT face="Courier New" size=2><BR><BR>action属性在asp.net ajax上看来似乎出了点问题</FONT></A><FONT face="Courier New" size=2>，今天看到了唐兄的这篇文章，加上前天学到的一个知识，拿出来跟大家分享一下：</FONT></P>
<P><FONT face="Courier New" size=2>朋友遇到这样一个场景：需要把页面的某个control的值post到另一个页面来显示。html的post是对整个form做post操作，当这个form中其他元素的value比较大时这个form的post此时就不经济了。如果仅仅想把一个type="text"的input的元素的值传送到另一个页面怎么办？使用querystring方式传值是受url约束的，使用ajax方式那么我们还要动手写一些代码，当然还受sandbox的约束。那么我们来看下面这个Demo：</FONT></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><FONT face="Courier New"><FONT size=2><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">form&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="form2"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;action</SPAN><SPAN style="COLOR: #0000ff">="show.aspx"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;method</SPAN><SPAN style="COLOR: #0000ff">="post"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;target</SPAN><SPAN style="COLOR: #0000ff">="mywindow"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></FONT></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New" size=2><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></FONT></SPAN><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">input&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="txtbox1"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;name</SPAN><SPAN style="COLOR: #0000ff">="txt1"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="text"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;value</SPAN><SPAN style="COLOR: #0000ff">="维生素C.net&nbsp;范维肖&nbsp;fanweixiao"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN></FONT></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New" size=2><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></FONT></SPAN><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">input&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="Button1"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;type</SPAN><SPAN style="COLOR: #0000ff">="button"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;value</SPAN><SPAN style="COLOR: #0000ff">="button"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;onclick</SPAN><SPAN style="COLOR: #0000ff">="doSubmit()"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN></FONT></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New" size=2><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></FONT></SPAN><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">form</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></FONT></FONT><SPAN style="COLOR: #000000"><BR><FONT face="Courier New" size=2><IMG id=Codehighlighter1_260_354_Open_Image onclick="this.style.display='none'; Codehighlighter1_260_354_Open_Text.style.display='none'; Codehighlighter1_260_354_Closed_Image.style.display='inline'; Codehighlighter1_260_354_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_260_354_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_260_354_Closed_Text.style.display='none'; Codehighlighter1_260_354_Open_Image.style.display='inline'; Codehighlighter1_260_354_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></FONT></SPAN><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">script&nbsp;</SPAN><SPAN style="COLOR: #ff0000">type</SPAN><SPAN style="COLOR: #0000ff">="text/javascript"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN id=Codehighlighter1_260_354_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></FONT></FONT><SPAN id=Codehighlighter1_260_354_Open_Text><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><BR><FONT face="Courier New" size=2><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></FONT></SPAN><SPAN style="COLOR: #0000ff; BACKGROUND-COLOR: #f5f5f5"><FONT face="Courier New" size=2>function</FONT></SPAN><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">&nbsp;doSubmit()<BR><IMG id=Codehighlighter1_281_353_Open_Image onclick="this.style.display='none'; Codehighlighter1_281_353_Open_Text.style.display='none'; Codehighlighter1_281_353_Closed_Image.style.display='inline'; Codehighlighter1_281_353_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_281_353_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_281_353_Closed_Text.style.display='none'; Codehighlighter1_281_353_Open_Image.style.display='inline'; Codehighlighter1_281_353_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_281_353_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></FONT></FONT><SPAN id=Codehighlighter1_281_353_Open_Text><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;window.open('','mywindow');<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;document.forms[</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">form2</SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5">"</SPAN></FONT></FONT><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><FONT face="Courier New" size=2>].submit();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</FONT></SPAN></SPAN><SPAN style="COLOR: #000000; BACKGROUND-COLOR: #f5f5f5"><BR><FONT face="Courier New" size=2><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></FONT></SPAN></SPAN><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">script</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN></FONT></FONT></DIV>
<P><FONT face="Courier New" size=2>我们在Default.aspx中创建了一个form，指定了action到show.aspx页面，target指定了值mywindow。然后我们自己写了这个form的submit事件，首先window.open了一个空页面，并指定了与form的target相同的名字，然后让这个form提交。注意type="text"的input我们添加了name属性，并赋值为txt1。show.aspx页面的代码很简单：<BR></FONT></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><FONT face="Courier New"><FONT size=2><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">protected</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Page_Load(</SPAN><SPAN style="COLOR: #0000ff">object</SPAN></FONT></FONT><FONT face="Courier New"><FONT size=2><SPAN style="COLOR: #000000">&nbsp;sender,&nbsp;EventArgs&nbsp;e)<BR><IMG id=Codehighlighter1_53_96_Open_Image onclick="this.style.display='none'; Codehighlighter1_53_96_Open_Text.style.display='none'; Codehighlighter1_53_96_Closed_Image.style.display='inline'; Codehighlighter1_53_96_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_53_96_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_53_96_Closed_Text.style.display='none'; Codehighlighter1_53_96_Open_Image.style.display='inline'; Codehighlighter1_53_96_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_53_96_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></FONT></FONT><SPAN id=Codehighlighter1_53_96_Open_Text><FONT face="Courier New"><FONT size=2><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;Response.Write(Request[</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">txt1</SPAN><SPAN style="COLOR: #000000">"</SPAN></FONT></FONT><SPAN style="COLOR: #000000"><FONT face="Courier New" size=2>]);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</FONT></SPAN></SPAN><SPAN style="COLOR: #000000"><FONT face="Courier New" size=2>&nbsp;</FONT></SPAN></DIV>
<P><BR><FONT face="Courier New" size=2>这样我们就通过action+target两个属性将我们需要的value直接灌入到了打开的空页面中了。</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/823226.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47923/" target="_blank">网易今日凌晨开放战网及魔兽官网</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>关于SQL Server的两个细节</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/07/18/821835.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Tue, 17 Jul 2007 16:04:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/07/18/821835.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/821835.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/07/18/821835.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/821835.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/821835.html</trackback:ping><description><![CDATA[<P>前段时间看到了园子的朋友在<A href="/yizhu2000/archive/2007/07/01/802275.html" target=_blank>讨论SQL Server的Paging Select问题</A>，在感觉到有些朋友可能对SQL Server（2000以上版本的）的一些地方还不太清楚，这里分享一下SQL Server自2000版本后提供的一些特色处理方式：</P>
<P><STRONG>TOP N排序</STRONG></P>
<P>新的TOP N引擎可以减少以往先sort再top n的负载，当数据读入到Storage Engine时就先过滤出top n的记录，然后在对这些记录进行sort等操作，这样的设计可以在大多数情况下提升效率，缩短查询时间。</P>
<P><STRONG>Merry-Go-Round Scans</STRONG></P>
<P>胡百敬老师在他一本讲解性能调教的书中将其翻译为旋转木马式扫描，这个算法用于处理相同数据的重复扫描。例如我们有一页数据，两个用户都去查询它们，如果都是从page的开始部分进行scan，假设当user A scan到30%的时候user B开始scan操作，那么当user A进行到60%的时候user B刚好完成30%，这种设计可能会导致在扫描大型数据表的时候引起硬盘的剧烈震动！而采用Merry-Go-Round方式，当user A scan到30%的时候user B开始从A的当前位置scan，user A完成整个操作时user B完成了70%，然后再从页首开始scan剩下的30%，这样他们就使用相同的查询计划读取了部分数据。这种方式减少了大量在极端时间内先后查询相同的数据时，系统I/O来回读取的的情况，在增强读取速度和无序扫描的同时，也不需要同步了。</P>
<P>Katmai在这两方面有没有更好的改进还不知道，我的SQL Server 2008<A href="/lovewangshu/archive/2007/06/26/796748.html" target=_blank>一直没法安装成功</A>，也没法尝试一下，明天准备做虚机再试一次，有相似经历的朋友已经解决问题的还请指教一下。</P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/821835.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47919/" 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>为LINQ提速的i4o和增强功能的SLINQ</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/06/28/798323.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 27 Jun 2007 17:40:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/06/28/798323.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/798323.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/06/28/798323.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/798323.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/798323.html</trackback:ping><description><![CDATA[<P><A href="http://www.codeplex.com/i4o" target=_blank><STRONG><FONT size=2>i4o</FONT></STRONG></A><FONT size=2>是对LINQ的一个扩展，通过允许我们在对象上添加“索引”来提高LINQ运算速度，作者号称使用i4o后速度提升often <STRONG>over one thousand</STRONG> times。</FONT></P>
<P><FONT size=2>我们在进行数据库查询优化时，往往第一想到的就是给Tables添加合适的Index来大幅度提升执行效率，i4o的实现也是类似这个方式，我们只要给class添加一个Indexable属性，然后使用IndexableCollection&lt;T&gt;来实现一个使用“索引”的类的集合就可以了，这样比起顺序性的搜索就在一定程度上提高了速度。<BR></FONT></P>
<P><FONT size=2>比如我们可以这样用：</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">1</SPAN><IMG id=Codehighlighter1_54_181_Open_Image onclick="this.style.display='none'; Codehighlighter1_54_181_Open_Text.style.display='none'; Codehighlighter1_54_181_Closed_Image.style.display='inline'; Codehighlighter1_54_181_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_54_181_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_54_181_Closed_Text.style.display='none'; Codehighlighter1_54_181_Open_Image.style.display='inline'; Codehighlighter1_54_181_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #000000">var&nbsp;customers&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;IndexableCollection</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">CnblogUser</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">()&nbsp;</SPAN><SPAN id=Codehighlighter1_54_181_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_54_181_Open_Text><SPAN style="COLOR: #000000">{&nbsp;<BR></SPAN><SPAN style="COLOR: #008080">2</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_86_116_Open_Image onclick="this.style.display='none'; Codehighlighter1_86_116_Open_Text.style.display='none'; Codehighlighter1_86_116_Closed_Image.style.display='inline'; Codehighlighter1_86_116_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_86_116_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_86_116_Closed_Text.style.display='none'; Codehighlighter1_86_116_Open_Image.style.display='inline'; Codehighlighter1_86_116_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Customer&nbsp;</SPAN><SPAN id=Codehighlighter1_86_116_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_86_116_Open_Text><SPAN style="COLOR: #000000">{Key&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">,&nbsp;Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">fanweixiao</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000">,<BR></SPAN><SPAN style="COLOR: #008080">3</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_148_179_Open_Image onclick="this.style.display='none'; Codehighlighter1_148_179_Open_Text.style.display='none'; Codehighlighter1_148_179_Closed_Image.style.display='inline'; Codehighlighter1_148_179_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_148_179_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_148_179_Closed_Text.style.display='none'; Codehighlighter1_148_179_Open_Image.style.display='inline'; Codehighlighter1_148_179_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;Customer&nbsp;</SPAN><SPAN id=Codehighlighter1_148_179_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_148_179_Open_Text><SPAN style="COLOR: #000000">{Key&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">,&nbsp;Name&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">lovewangshu</SPAN><SPAN style="COLOR: #000000">"</SPAN><SPAN style="COLOR: #000000">&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">4</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000">;</SPAN></DIV><BR>
<P></P>i4o中对Where的扩展<BR><BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">&nbsp;1</SPAN><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">extend&nbsp;the&nbsp;where&nbsp;when&nbsp;we&nbsp;are&nbsp;working&nbsp;with&nbsp;indexable&nbsp;collections!&nbsp;</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;2</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">static</SPAN><SPAN style="COLOR: #000000">&nbsp;IEnumerable</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;Where</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;3</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;4</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">&nbsp;IndexableCollection</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;sourceCollection,<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;5</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expression</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">Func</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T,&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&gt;&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;expr<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;6</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;7</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_247_2322_Open_Image onclick="this.style.display='none'; Codehighlighter1_247_2322_Open_Text.style.display='none'; Codehighlighter1_247_2322_Closed_Image.style.display='inline'; Codehighlighter1_247_2322_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_247_2322_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_247_2322_Closed_Text.style.display='none'; Codehighlighter1_247_2322_Open_Image.style.display='inline'; Codehighlighter1_247_2322_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_247_2322_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_247_2322_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;8</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">our&nbsp;indexes&nbsp;work&nbsp;from&nbsp;the&nbsp;hash&nbsp;values&nbsp;of&nbsp;that&nbsp;which&nbsp;is&nbsp;indexed,&nbsp;regardless&nbsp;of&nbsp;type</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;9</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">?</SPAN><SPAN style="COLOR: #000000">&nbsp;hashRight&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">null</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">bool</SPAN><SPAN style="COLOR: #000000">&nbsp;noIndex&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">true</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">indexes&nbsp;only&nbsp;work&nbsp;on&nbsp;equality&nbsp;expressions&nbsp;here</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(expr.Body.NodeType&nbsp;</SPAN><SPAN style="COLOR: #000000">==</SPAN><SPAN style="COLOR: #000000">&nbsp;ExpressionType.Equal)<BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_547_1955_Open_Image onclick="this.style.display='none'; Codehighlighter1_547_1955_Open_Text.style.display='none'; Codehighlighter1_547_1955_Closed_Image.style.display='inline'; Codehighlighter1_547_1955_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_547_1955_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_547_1955_Closed_Text.style.display='none'; Codehighlighter1_547_1955_Open_Image.style.display='inline'; Codehighlighter1_547_1955_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_547_1955_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_547_1955_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><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;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Equality&nbsp;is&nbsp;a&nbsp;binary&nbsp;expression</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BinaryExpression&nbsp;binExp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(BinaryExpression)expr.Body;<BR></SPAN><SPAN style="COLOR: #008080">16</SPAN><SPAN style="COLOR: #000000"><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;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">Get&nbsp;some&nbsp;aliases&nbsp;for&nbsp;either&nbsp;side</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">17</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Expression&nbsp;leftSide&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;binExp.Left;<BR></SPAN><SPAN style="COLOR: #008080">18</SPAN><SPAN style="COLOR: #000000"><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;Expression&nbsp;rightSide&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;binExp.Right;<BR></SPAN><SPAN style="COLOR: #008080">19</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">20</SPAN><SPAN style="COLOR: #000000"><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;hashRight&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;GetHashRight(leftSide,&nbsp;rightSide);<BR></SPAN><SPAN style="COLOR: #008080">21</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">22</SPAN><SPAN style="COLOR: #000000"><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;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">if&nbsp;we&nbsp;were&nbsp;able&nbsp;to&nbsp;create&nbsp;a&nbsp;hash&nbsp;from&nbsp;the&nbsp;right&nbsp;side&nbsp;(likely)</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">23</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&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;(hashRight.HasValue&nbsp;</SPAN><SPAN style="COLOR: #000000">&amp;&amp;</SPAN><SPAN style="COLOR: #000000">&nbsp;HasIndexablePropertyOnLeft</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">(leftSide,sourceCollection))<BR></SPAN><SPAN style="COLOR: #008080">24</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_1086_1940_Open_Image onclick="this.style.display='none'; Codehighlighter1_1086_1940_Open_Text.style.display='none'; Codehighlighter1_1086_1940_Closed_Image.style.display='inline'; Codehighlighter1_1086_1940_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1086_1940_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1086_1940_Closed_Text.style.display='none'; Codehighlighter1_1086_1940_Open_Image.style.display='inline'; Codehighlighter1_1086_1940_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1086_1940_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_1086_1940_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">25</SPAN><SPAN style="COLOR: #000000"><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;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">cast&nbsp;to&nbsp;MemberExpression&nbsp;-&nbsp;it&nbsp;allows&nbsp;us&nbsp;to&nbsp;get&nbsp;the&nbsp;property</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">26</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MemberExpression&nbsp;propExp&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;(MemberExpression)leftSide;<BR></SPAN><SPAN style="COLOR: #008080">27</SPAN><SPAN style="COLOR: #000000"><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;</SPAN><SPAN style="COLOR: #0000ff">string</SPAN><SPAN style="COLOR: #000000">&nbsp;property&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;propExp.Member.Name;<BR></SPAN><SPAN style="COLOR: #008080">28</SPAN><SPAN style="COLOR: #000000"><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;Dictionary</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">,&nbsp;List</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;myIndex&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">29</SPAN><SPAN style="COLOR: #000000"><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sourceCollection.GetIndexByProperty(property);<BR></SPAN><SPAN style="COLOR: #008080">30</SPAN><SPAN style="COLOR: #000000"><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;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(myIndex.ContainsKey(hashRight.Value))<BR></SPAN><SPAN style="COLOR: #008080">31</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_1516_1817_Open_Image onclick="this.style.display='none'; Codehighlighter1_1516_1817_Open_Text.style.display='none'; Codehighlighter1_1516_1817_Closed_Image.style.display='inline'; Codehighlighter1_1516_1817_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_1516_1817_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1516_1817_Closed_Text.style.display='none'; Codehighlighter1_1516_1817_Open_Image.style.display='inline'; Codehighlighter1_1516_1817_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_1516_1817_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_1516_1817_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">32</SPAN><SPAN style="COLOR: #000000"><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;&nbsp;&nbsp;&nbsp;&nbsp;IEnumerable</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;sourceEnum&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;myIndex[hashRight.Value].AsEnumerable</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">();<BR></SPAN><SPAN style="COLOR: #008080">33</SPAN><SPAN style="COLOR: #000000"><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;&nbsp;&nbsp;&nbsp;&nbsp;IEnumerable</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;result&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sourceEnum.Where</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">(expr.Compile());<BR></SPAN><SPAN style="COLOR: #008080">34</SPAN><SPAN style="COLOR: #000000"><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;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">&nbsp;(T&nbsp;item&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;result)<BR></SPAN><SPAN style="COLOR: #008080">35</SPAN><SPAN style="COLOR: #000000"><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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yield&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;item;<BR></SPAN><SPAN style="COLOR: #008080">36</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">37</SPAN><SPAN style="COLOR: #000000"><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;noIndex&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">false</SPAN><SPAN style="COLOR: #000000">;&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">we&nbsp;found&nbsp;an&nbsp;index,&nbsp;whether&nbsp;it&nbsp;had&nbsp;values&nbsp;or&nbsp;not&nbsp;is&nbsp;another&nbsp;matter</SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">38</SPAN><SPAN style="COLOR: #008000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">39</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">40</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">41</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">if</SPAN><SPAN style="COLOR: #000000">&nbsp;(noIndex)&nbsp;</SPAN><SPAN style="COLOR: #008000">//</SPAN><SPAN style="COLOR: #008000">no&nbsp;index?&nbsp;&nbsp;just&nbsp;do&nbsp;it&nbsp;the&nbsp;normal&nbsp;slow&nbsp;way&nbsp;then<IMG src="http://www.cnblogs.com/images/dot.gif"></SPAN><SPAN style="COLOR: #008000"><BR></SPAN><SPAN style="COLOR: #008080">42</SPAN><SPAN style="COLOR: #008000"><IMG id=Codehighlighter1_2046_2311_Open_Image onclick="this.style.display='none'; Codehighlighter1_2046_2311_Open_Text.style.display='none'; Codehighlighter1_2046_2311_Closed_Image.style.display='inline'; Codehighlighter1_2046_2311_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_2046_2311_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_2046_2311_Closed_Text.style.display='none'; Codehighlighter1_2046_2311_Open_Image.style.display='inline'; Codehighlighter1_2046_2311_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN id=Codehighlighter1_2046_2311_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_2046_2311_Open_Text><SPAN style="COLOR: #000000">{<BR></SPAN><SPAN style="COLOR: #008080">43</SPAN><SPAN style="COLOR: #000000"><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;IEnumerable</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;sourceEnum&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sourceCollection.AsEnumerable</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">();<BR></SPAN><SPAN style="COLOR: #008080">44</SPAN><SPAN style="COLOR: #000000"><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;IEnumerable</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;result&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;sourceEnum.Where</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">T</SPAN><SPAN style="COLOR: #000000">&gt;</SPAN><SPAN style="COLOR: #000000">(expr.Compile());<BR></SPAN><SPAN style="COLOR: #008080">45</SPAN><SPAN style="COLOR: #000000"><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;</SPAN><SPAN style="COLOR: #0000ff">foreach</SPAN><SPAN style="COLOR: #000000">&nbsp;(T&nbsp;resultItem&nbsp;</SPAN><SPAN style="COLOR: #0000ff">in</SPAN><SPAN style="COLOR: #000000">&nbsp;result)<BR></SPAN><SPAN style="COLOR: #008080">46</SPAN><SPAN style="COLOR: #000000"><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;yield&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;resultItem;<BR></SPAN><SPAN style="COLOR: #008080">47</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">48</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">49</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN></DIV>
<P><BR><BR>而</FONT><A href="http://www.codeplex.com/Slinq" target=_blank><FONT size=2><STRONG>SLINQ</STRONG></FONT></A><FONT size=2>则是可以让LINQ作用于streaming data上的，目前这个项目只算是个Demo版本，实现方式是为LINQ添加了一系列的扩展方法，有兴趣的朋友可以down下sourcecode来看看，需要注意的是要安装Visual Studio Orcas beta 1。</FONT></P>
<P><FONT size=2>顺便帖两个codeplex上与LINQ相关的项目：</FONT></P>
<OL>
<LI><FONT size=2>LINQ是怎么来的？看</FONT><A href="http://www.codeplex.com/LINQSQO" target=_blank><FONT size=2>LINQ-SQO</FONT></A><FONT size=2> </FONT>
<LI><FONT size=2>在C++/CLI上用LINQ：</FONT><A href="http://www.codeplex.com/linqextensions" target=_blank><FONT size=2>LINQ Extensions</FONT></A></LI></OL><img src ="http://www.cnblogs.com/lovewangshu/aggbug/798323.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47918/" target="_blank">Firefox 3.5：很快 但还是不够</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>在Longhorn Server上无法安装SQL Server 2008 (Katmai)</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/06/26/796748.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Tue, 26 Jun 2007 11:40:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/06/26/796748.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/796748.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/06/26/796748.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/796748.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/796748.html</trackback:ping><description><![CDATA[<p>TITLE: Microsoft SQL Server code name Katmai Setup<br>------------------------------  <p>Upgrade Failed due to the following Error.The error code is :-2147467259.Message:Unspecified error  <p>For help, click: <a href="http://go.microsoft.com/fwlink?LinkID=20476&amp;ProdName=Microsoft+SQL+Server&amp;ProdVer=10.0.1019.17&amp;EvtSrc=setup.rll&amp;EvtID=29547&amp;EvtType=sqlca%5csqlxmlca.cpp%40Do_sqlCopyXML%40Do_sqlCopyXML%40x80004005">http://go.microsoft.com/fwlink?LinkID=20476&amp;ProdName=Microsoft+SQL+Server&amp;ProdVer=10.0.1019.17&amp;EvtSrc=setup.rll&amp;EvtID=29547&amp;EvtType=sqlca%5csqlxmlca.cpp%40Do_sqlCopyXML%40Do_sqlCopyXML%40x80004005</a> <p>&nbsp; <p>给出的连接地址也是一个没有任何作用的页面。希望有遇到这个错误的朋友帮助一下。</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/796748.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47913/" target="_blank">2009年7月中国微软最有价值专家(MVP)名单</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>设置Longhorn Server中的图片缩略图显示</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/06/16/785757.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sat, 16 Jun 2007 08:15:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/06/16/785757.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/785757.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/06/16/785757.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/785757.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/785757.html</trackback:ping><description><![CDATA[<p>现在主要使用Longhorn Server了，如果想从一大堆图片中找到自己想要的没有缩略图还真不方便，问了两个朋友他们都不知道怎么调，记录以下。（最郁闷的是记得昨晚找过Folder Options了，没有发现这个选项....)</p> <p><a href="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/LonghornServer_D70E/SetLonghornThumbnailsView.jpg" atomicselection="true"><img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" alt="SetLonghornThumbnailsView" src="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/LonghornServer_D70E/SetLonghornThumbnailsView_thumb.jpg" border="0"></a></p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/785757.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47912/" target="_blank">Oracle手中另一张对抗微软的王牌：Ubuntu</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>关于控件部分的看法--读Programming ASP.NET中文版</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/03/12/671369.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sun, 11 Mar 2007 20:33:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/03/12/671369.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/671369.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/03/12/671369.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/671369.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/671369.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana>读书一般先看目录，并且习惯性的从第三章开始看，除了胡百敬老师的书和代码大全外，其他见过的中文技术书籍无论是自己撰写的还是翻译的都清一色的在前两章添加N多基础知识，不管讲的好不好，第一次看一本书从第三章开始看都成了习惯。</FONT></P>
<P><FONT face=Verdana>同其他讲解asp.net的书一样，第三章是从控件开始讲起的，但是读罢此章，作者描述问题的思路和译者的翻译确实让我迷惑了很多，继续看完后面的章节，感觉作者刚下笔实在是太紧张，而且太想把asp.net介绍给一个从来没有接触过web开发的朋友了。</FONT></P>
<P><FONT face=Verdana>我们从<STRONG>另一个角度</STRONG>还看asp.net中的几种控件：asp.net server control, html server control, html control。</FONT></P>
<P><FONT face=Verdana>asp.net server control是最基础的asp.net组件，本书也使用了6章来介绍了常用的控件、2.0的新控件和控件开发的知识。而html的两种control和asp.net server control之间的关系如何理解呢？最简单的就是站在一个最高的角度来看——看它们最终在呈现到客户端浏览器的时候是什么。我们用下面这个<STRONG>很简单场景</STRONG>来看一下：</FONT></P>
<P><FONT face=Verdana>假设我们要用户输入用户名，点击提交按钮后服务器根据用户名从服务器获得用户的年龄然后显示在页面上。我们拖放上一个Textbox和一个Button，再放置并配置好一个验证控件就ok了。当我们使用验证控件的时候，asp.net会将起使用span标记和一堆控制样式的属性将<FONT color=#ff0000>*</FONT>呈现到页面上，而运行机制是用脚本控制的，这些脚本会自动根据用户的浏览器将适合该浏览器的代码一起发送到客户端上。</FONT></P>
<P><FONT face=Verdana>这时候我们运行这个页面，看其source code，很容易看出asp.net server button control就是一个type为submit的html input control。这时候我们再放置一个html control的button控件，然后将其属性加上runat="server"，再运行，然后看源代码，就可以看到他被render成一个type为button的html input control了。这时候点击两个控件中的任何一个都会造成页面提交（如果验证控件验证通过的话），作为submit的asp.net server control很容易理解为什么被会引发提交，那么html server control呢？是因为它调用的脚本里有__doPostBack('Button2',''),而页面里的__doPostBack()函数使得页面提交了。而加入了验证控件后，两者再提交前都是需要做数据检查的，使用的都是脚本来验证是否可以提交页面数据，但是方式是截然不同的：</FONT><FONT face=Verdana></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><FONT face="Courier New"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">input&nbsp;</SPAN><STRONG><EM><SPAN style="COLOR: #ff0000">type</SPAN><SPAN style="COLOR: #0000ff">="submit"</SPAN></EM></STRONG><SPAN style="COLOR: #ff0000">&nbsp;name</SPAN><SPAN style="COLOR: #0000ff">="Button1"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;value</SPAN><SPAN style="COLOR: #0000ff">="Button"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;<STRONG>onclick</STRONG></SPAN><SPAN style="COLOR: #0000ff">="javascript:WebForm_DoPostBackWithOptions(new&nbsp;WebForm_PostBackOptions(&amp;quot;Button1&amp;quot;,&nbsp;&amp;quot;&amp;quot;,&nbsp;true,&nbsp;&amp;quot;&amp;quot;,&nbsp;&amp;quot;&amp;quot;,&nbsp;false,&nbsp;false))"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;id</SPAN><SPAN style="COLOR: #0000ff">="Button1"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN></FONT></DIV></FONT><BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><FONT face="Courier New"><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">input&nbsp;</SPAN><SPAN style="COLOR: #ff0000">language</SPAN><SPAN style="COLOR: #0000ff">="javascript"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;<STRONG>onclick</STRONG></SPAN><SPAN style="COLOR: #0000ff">="if&nbsp;(typeof(Page_ClientValidate)&nbsp;==&nbsp;'function')&nbsp;Page_ClientValidate('');&nbsp;__doPostBack('Button2','')"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;name</SPAN><SPAN style="COLOR: #0000ff">="Button2"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;<STRONG><EM>type</EM></STRONG></SPAN><SPAN style="COLOR: #0000ff"><STRONG><EM>="button"</EM></STRONG></SPAN><SPAN style="COLOR: #ff0000">&nbsp;id</SPAN><SPAN style="COLOR: #0000ff">="Button2"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;value</SPAN><SPAN style="COLOR: #0000ff">="button"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">/&gt;</SPAN></FONT></DIV><BR>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><FONT face="Courier New"><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">span&nbsp;</SPAN><SPAN style="COLOR: #ff0000">id</SPAN><SPAN style="COLOR: #0000ff">="RequiredFieldValidator1"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;style</SPAN><SPAN style="COLOR: #0000ff">="color:Red;visibility:hidden;"</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN><SPAN style="COLOR: #000000">Please enter your username</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">span</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></FONT></DIV>
<P><FONT face=Verdana>这时我们可以看到嵌入资源文件的脚本这样被使用了，但是如果想知道这些方法具体做了些什么可以借助fiddler、httpwatch或firebug这样的工具来看，不过最快捷的办法是在浏览器的地址栏敲入<EM>javascript:js_method_name</EM>来查看。比如javascript:WebForm_DoPostBackWithOptions就能看到该方法的内容了。</FONT></P>
<P><FONT face=Verdana>好，我们刚才从结果上入手，算是比较深入的看到了结果和客户端页面执行的过程，这时我们不妨再跳出来，<STRONG>重新审视</STRONG>一下这个过程：我们需要的是用户输入其username，然后我们根据该值从数据库里取出对应的年龄并显示在页面上，那么整个过程应该是用户数据姓名提交，服务器得到用户名，然后将年龄得到，返回给客户端。抛开http的信息来回传递的信息应该只有username和age，但是看看我们现在，是否传送了太多无用的数据？</FONT></P>
<P><FONT face=Verdana>那我们<STRONG>简化一下流程</STRONG>：我们全部使用html control来做，分别放置一个type为button和text的input控件，当button被点击时执行一个javascript function检验text里是否有字符然后将其发送到服务器，比如通过调用服务器段的一个web service，这个web服务在验证数据后将数据从database中取出，返回到客户端，在接受到数据后脚本将其呈现在页面上。</FONT></P>
<P><FONT face=Verdana>需要<STRONG>注意</STRONG>的是数据在客户端的验证是不可信的，通常情况下大多数浏览器通过地址栏就可以任意修改页面元素的值，所以在服务器做判断是必须要的。</FONT></P>
<P><FONT face=Verdana>这时候我们看两个过程简直是天壤之别，但是在开发效率和后期维护上也是天壤之别的。asp.net server control如果用不好，造成的后果就是灾难了。</FONT></P>
<P><FONT face=Verdana>看完此章的朋友们再看完了这篇抛的“砖”，然后将一个&lt;asp:Button..../&gt;中的runat="server"去掉，看看是什么结果？思考一下html被浏览器的解释是否能更清晰的认识到Control这个词呢？</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/671369.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47909/" target="_blank">微软发出提醒:今日起Windows 7 Beta开始自动重启</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>分享一本入门级好书：Programming ASP.NET中文版</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/03/12/671364.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sun, 11 Mar 2007 19:14:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/03/12/671364.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/671364.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/03/12/671364.html#Feedback</comments><slash:comments>15</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/671364.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/671364.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>年前拿到了Jesse Liberty和Dan Hurwitz合著的Programming ASP.NET（3rd Edtion）的中文版，现在已经看了一大半了。看到现在感觉这本书非常非常适合初学asp.net的朋友，但是如果只是看罢此书，还不能称的上是一个web developer，但是作为一本讲解asp.net 2.0和vs2005基础功能和快速开发的书籍，是相当推荐的。</FONT></P>
<P><FONT face=Verdana size=2>我们博客园新手Training团队和博文视点正在策划活动，这本价值99元的书将作为每期的奖品送给大家。由于在看的过程中实在是有很多想说的，有学到的新东西，也有想补充的，遂打算将自己的看书过程和心得一并记下，与大家一起分享。</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/671364.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47909/" target="_blank">微软发出提醒:今日起Windows 7 Beta开始自动重启</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>555,又丢了一辆自行车</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/03/08/667518.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 07 Mar 2007 16:00:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/03/08/667518.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/667518.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/03/08/667518.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/667518.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/667518.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>这次丢车没有很大失误了，去万客隆买吃的，一共10分钟左右，车子锁在栏杆上，40块钱买的锁，出来后没了。唉。不知道Jay Zhou丢了车子会不会写一首歌... ...</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/667518.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47908/" target="_blank">CNET评论FireFox 3.5 - 为竞争对手打开了大门</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/lovewangshu/archive/2007/02/04/639304.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sat, 03 Feb 2007 20:01:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/02/04/639304.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/639304.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/02/04/639304.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/639304.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/639304.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>妈的，我就想不明白了，为啥写blog就不能骂人？为啥骂人就是缺乏教养？我他妈骂得就不是人，你能算得上是人吗？我脾气就这样。<BR></FONT><A href="http://blog.joycode.com/juqiang/archive/2007/02/02/93150.aspx?Pending=true"><FONT face=Verdana size=2>http://blog.joycode.com/juqiang/archive/2007/02/02/93150.aspx?Pending=true</FONT></A><BR><FONT face=Verdana size=2>鞠强的一篇随意文章，我就一回复，操至于吗？<BR>竟然还有人再看我了的留言后劝我：你这样在大庭广众之下说这话，对以后不好。<BR>操，我今天就露露真面目！我就这么所谓的没教养。<BR>做人何必藏着窝着？我现在的工作也好，未来的工作也好，都是让我靠嘴吃饭的。攻击我的人不说脏话就体现出高贵素质来了？操，照样骂你！<BR>我就信一句话：做人要真，该骂就骂。</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/639304.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47907/" target="_blank">Vista SP2开始通过Windows Update向用户推送</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/lovewangshu/archive/2007/02/02/637653.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Thu, 01 Feb 2007 18:41:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/02/02/637653.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/637653.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/02/02/637653.html#Feedback</comments><slash:comments>22</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/637653.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/637653.html</trackback:ping><description><![CDATA[<P><FONT size=2>众所周知的.net的两种类型是值类型和引用类型，像C#中的int，enum和struct等，还有.net框架中System.Drawing下的Rectangle和point等类型也都是值类型的。很多解决面向对象不久的朋友似乎都会渐渐遗忘了struct等值类型，而是使用不合时宜的class来替代了。值类型有很多好处，比如它们的生存周期较短，并且很少会在多个客户之间共享，正因为这样，合适的使用值类型既提高了性能，又能缓解GC对内存的压力。</FONT></P>
<P><FONT size=2>以C#为例，值类型的方式可以有下面两种方式：</FONT></P>
<P><FONT size=2></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">1</SPAN><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;length&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">3</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;length&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000">);</SPAN></DIV>
<P>Visual C#的编译器会在stack上分配4bytes的空间来存储值，这样就可以被直接访问到，而不需要再重定向到managed heap上去了。使用new关键字只不过是C#出于一致性的考虑而作的，但是C#的一个特性就是对象的内存空间分配策略是用类型来定义的。</FONT></P>
<P><FONT size=2>看一个简单的程序：</FONT></P>
<P><FONT size=2></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #008080">&nbsp;1</SPAN><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Main<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;2</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;3</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_11_31_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_31_Open_Text.style.display='none'; Codehighlighter1_11_31_Closed_Image.style.display='inline'; Codehighlighter1_11_31_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_11_31_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_11_31_Closed_Text.style.display='none'; Codehighlighter1_11_31_Open_Image.style.display='inline'; Codehighlighter1_11_31_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_11_31_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_11_31_Open_Text><SPAN style="COLOR: #000000">{</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;a</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;4</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;5</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>Show();<BR></SPAN><SPAN style="COLOR: #008080">&nbsp;6</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;7</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;8</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">&nbsp;9</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;Show()<BR></SPAN><SPAN style="COLOR: #008080">10</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">11</SPAN><SPAN style="COLOR: #000000"><IMG id=Codehighlighter1_47_77_Open_Image onclick="this.style.display='none'; Codehighlighter1_47_77_Open_Text.style.display='none'; Codehighlighter1_47_77_Closed_Image.style.display='inline'; Codehighlighter1_47_77_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_47_77_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_47_77_Closed_Text.style.display='none'; Codehighlighter1_47_77_Open_Image.style.display='inline'; Codehighlighter1_47_77_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_47_77_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_47_77_Open_Text><SPAN style="COLOR: #000000">{</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;a</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">7</SPAN><SPAN style="COLOR: #000000">;<BR></SPAN><SPAN style="COLOR: #008080">12</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">13</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>Console.Write(a);<BR></SPAN><SPAN style="COLOR: #008080">14</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR></SPAN><SPAN style="COLOR: #008080">15</SPAN><SPAN style="COLOR: #000000"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P>在这个过程中stack中的情况会是：</FONT></P>
<P><FONT size=2>1. int 9</FONT></P>
<P><FONT size=2>2. int 9, Show方法的返回地址，int 7</FONT></P>
<P><FONT size=2>3.int 9</FONT></P>
<P><FONT size=2>很清晰的可以看出，当Show()方法调用完毕后里面的值就被销毁了。</FONT></P>
<P><FONT size=2>但是，C#的参数默认是通过值传递的，如果上述的Show()方法变为Show(a)的话，那么stack中将有两个int 9了，作为参数传递进来的是Main()中变量a的copy，而且在Show()中只是用这个copy。随之而来的问题是，如果这时候a是一个复杂的struct，而且其中包含着大量的数据，那作为参数传递时候就会遇到的一个问题了：大型值类型作为参数传递就会牺牲一些性能了，尤其是struct，<STRONG>复制其中的每个值得开销会大大增加，特别是在方法被频繁调用的时候。</STRONG></FONT></P>
<P><FONT size=2>如何避免这个问题呢？</FONT></P>
<P><FONT size=2>先来考虑另一个我们在用值类型作为参数的时候的情景。当我们传递的参数希望在被处理后返回其状态的话，我们需要使用ref关键字，ref关键字大家是如此的熟悉以至于遇到这样的场景我们立刻就会不由自主的用上。为什么可以改变了原来的值呢？因为ref传递的是引用，既然是传递引用，那么就不会创建再复制出一个副本了，因此在使用大型值类型（尤其是struct）的时候，为了避免性能损耗，使用ref修饰会得到性能的提升，但是由此会带来的负面影响是要多多注意了--因为可以改变这个值了，而这是我们在这个场景中不期望的。</FONT></P>
<P><FONT size=2>interface的功能如此强大，如此的富有意义，<STRONG>值类型当然不会拒绝它</STRONG>。但是interface引用的对象肯定都是分配在heap上的，这个heap是在GC控制之下的，但是值类型肯定是分配在stack上的，这时候使用interface后会是什么样呢？肯定是通过boxing了。看下面的一段伪代码：</FONT></P>
<P><FONT size=2></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #0000ff">interface</SPAN><SPAN style="COLOR: #000000">&nbsp;IA<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_14_28_Open_Image onclick="this.style.display='none'; Codehighlighter1_14_28_Open_Text.style.display='none'; Codehighlighter1_14_28_Closed_Image.style.display='inline'; Codehighlighter1_14_28_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_14_28_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_14_28_Closed_Text.style.display='none'; Codehighlighter1_14_28_Open_Image.style.display='inline'; Codehighlighter1_14_28_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_14_28_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_14_28_Open_Text><SPAN style="COLOR: #000000">{</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;V</SPAN><SPAN id=Codehighlighter1_20_25_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_20_25_Open_Text><SPAN style="COLOR: #000000">{g;s；}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><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">struct</SPAN><SPAN style="COLOR: #000000">&nbsp;A:&nbsp;IA<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_45_92_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_92_Open_Text.style.display='none'; Codehighlighter1_45_92_Closed_Image.style.display='inline'; Codehighlighter1_45_92_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_45_92_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_92_Closed_Text.style.display='none'; Codehighlighter1_45_92_Open_Image.style.display='inline'; Codehighlighter1_45_92_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_45_92_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_45_92_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">private</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;v;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG id=Codehighlighter1_76_89_Open_Image onclick="this.style.display='none'; Codehighlighter1_76_89_Open_Text.style.display='none'; Codehighlighter1_76_89_Closed_Image.style.display='inline'; Codehighlighter1_76_89_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_76_89_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_76_89_Closed_Text.style.display='none'; Codehighlighter1_76_89_Open_Image.style.display='inline'; Codehighlighter1_76_89_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top></SPAN><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;V</SPAN><SPAN id=Codehighlighter1_76_89_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_76_89_Open_Text><SPAN style="COLOR: #000000">{g</SPAN><SPAN id=Codehighlighter1_78_82_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_78_82_Open_Text><SPAN style="COLOR: #000000">{..;}</SPAN></SPAN><SPAN style="COLOR: #000000">s</SPAN><SPAN id=Codehighlighter1_84_88_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_84_88_Open_Text><SPAN style="COLOR: #000000">{..;}</SPAN></SPAN><SPAN style="COLOR: #000000">}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000"><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><IMG src="http://www.cnblogs.com/images/dot.gif"><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><IMG src="http://www.cnblogs.com/images/dot.gif">&nbsp;Main()<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><BR><IMG id=Codehighlighter1_112_179_Open_Image onclick="this.style.display='none'; Codehighlighter1_112_179_Open_Text.style.display='none'; Codehighlighter1_112_179_Closed_Image.style.display='inline'; Codehighlighter1_112_179_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_112_179_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_112_179_Closed_Text.style.display='none'; Codehighlighter1_112_179_Open_Image.style.display='inline'; Codehighlighter1_112_179_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top></SPAN><SPAN id=Codehighlighter1_112_179_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_112_179_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>A&nbsp;a&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;A();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>a.V&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">9</SPAN><SPAN style="COLOR: #000000">;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>IA&nbsp;ia&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;a;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>Console.Write(ia.V);<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>..<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P>结果肯定是输出了9。其中一个好玩的地方就是在Write()方法中a将会被boxing，ia引用了一个装箱对象，该对象包含了a的副本。</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/637653.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47905/" target="_blank">iPhone OS 3.1测试版及开发包公布</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>Debug Diagnostics Tool 1.0无法进行内存泄露监视的解决办法</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/02/02/637623.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Thu, 01 Feb 2007 17:24:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/02/02/637623.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/637623.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/02/02/637623.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/637623.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/637623.html</trackback:ping><description><![CDATA[<p>当使用IIS Diagnostics - Debug Diagnostics进行w3wp进程的memory leak进行分析的时候，单单create full-user dump是没有效果的，我们应该先让其monitor memory leak，但是今天在公司的windows 2003 server上却被告知不能monitor，随即询问了GTEC的牛人<a href="http://www.cnblogs.com/lixiong" target="_blank">lixiong</a>大虾，原因在于这里的设置：</p> <p><a href="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/DebugDiagnosticsTool1.0_1395/dbg%5B6%5D.png" atomicselection="true"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="150" src="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/WindowsLiveWriter/DebugDiagnosticsTool1.0_1395/dbg_thumb%5B2%5D.png" width="449" border="0"></a> </p> <p>让人郁闷的是我在公司的2003和家里的xp上安装后该选项默认都没有被checked，但是在vista上安装的却是checked by default的。</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/637623.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47905/" target="_blank">iPhone OS 3.1测试版及开发包公布</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>ICQ 6 Preview 邀请</title><link>http://www.cnblogs.com/lovewangshu/archive/2007/01/25/629782.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 24 Jan 2007 18:37:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2007/01/25/629782.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/629782.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2007/01/25/629782.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/629782.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/629782.html</trackback:ping><description><![CDATA[<p><font size="2">今天临晨终于搞到了ICQ 6 Preview的邀请，现在我有2个邀请名额，大家除了坚守到凌晨1点靠蜗牛般的网速来抢夺一次打开registration gate的机会不是那么容易的事，所以手头的这两个邀请显得也很珍贵了。现打算送给条件如下的朋友：<br>1.在博客园的文章有一定数量或一定质量(one of)的朋友。<br>2.拿到的两个邀请必须都发放给博客园的需要的朋友并且他们也必须满足此条要求的。<br>有需要的朋友请在评论中留下您的ICQ号（我不知道还有多少人使用ICQ，这是我用的第一款IM，后来也一直在用，而且ICQ6非常酷，除了将要在vista上发放的Yahoo xxxx之外）</font></p>
<p><font size="2">广告：让博客园的朋友先用上ICQ6，先用上的ICQ6的博客园的朋友再让更多的网友用上ICQ6。<br><br>暂放首页，早上11点前撤下，dudu见谅啦(搞这个邀请真的好麻烦...)~<br><br>p.s. 忍受不了这网速了，从microsoft上down那些symbols真的会让人疯掉的，debug不容易啊。推荐<a href="http://www.joycode.com/juqiang">鞠强</a>的blog。</font></p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/629782.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47904/" target="_blank">Flickr 与 twitter 终成眷属，twitPic 使命结束</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>为什么在vista上做开发？</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/12/14/591596.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 13 Dec 2006 18:03:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/12/14/591596.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/591596.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/12/14/591596.html#Feedback</comments><slash:comments>54</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/591596.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/591596.html</trackback:ping><description><![CDATA[<P><FONT face="Courier New" size=2>这一年多来Vista有不少版本都在我机器上借宿过,从早期巨慢无比到beta1时我的显卡也能跑Aero了.现在RTM Business版也占据了我的硬盘的一部分。但是无论什么时候，总是感觉在Vista上做开发是那么不爽。我不知道有多少朋友现在已经从XP跳到Vsita上了，我的XP还是最常用的。</FONT></P>
<P><FONT face="Courier New" size=2>升不升级我的机器？我的本子是Dell Inspiron 6400，512 DDR 667的内存还要被集成显卡分一杯羹。中午吃饭的时候说起想加条1G内存的想法，</FONT><A title=Lion href="/Lion/" target=_blank><FONT face="Courier New" size=2>我的PM</FONT></A><FONT face="Courier New" size=2>建议我如果资金不充足最好不要加，一来本子升级本身就花销大而且自身寿命较台式机短，其二是现在在vista上做开发与我的工作（asp.net开发为主）并不是必须的，也不是最好选择。</FONT></P>
<P><FONT face="Courier New" size=2>Web开发的两个主要方面——客户端和服务器端，大致上可以分别对应vista中的IE7和IIS7，两者也都是新东西。从IE5到IE6再到IE7，在对css样式控制上是折磨了很多UI设计人员，即要让页面代码结构清晰，还要保证页面布局不混乱，一个css样式写完了还要加不少hack方法来润色才能再更好的支持FF，Opera和Safari，往往一堆东西弄完了，通过xhtml strict的验证又是意见麻烦事，这时候再那出javascript来...每晚都得在恶梦中惊醒。<A href="http://blogs.msdn.com/ie/archive/2006/01/23/516393.aspx">不过IE7中对XMLHttpRequest的支持</A>却是帮了不少朋友的忙(<A href="http://blogs.msdn.com/ie/archive/2006/06/08/619507.aspx">tip</A>)。但是在开发/调试时就比较费尽了，首先就是启动速度明显减慢，然后是<A href="http://blogs.msdn.com/ie/archive/2005/05/26/422103.aspx">tab这个东西</A>(<A href="http://it.slashdot.org/article.pl?sid=05/05/27/2024244">more</A>)搞的IE经常假死，如果为了减少这种情况的影响多开两个，<A href="http://jeremy.zawodny.com/blog/archives/004791.html">内存占用多</A>又是个问题。HttpWatch我装了后没找到从哪里启动:( Fiddler是什么内容都取，占资源相对也多，一般不到迫不得已我不开它，小巧玲珑五脏俱全的<A href="http://www.httpwatch.com/">HttpWatch</A>是我的首选。调试javascript头疼，挂进vs2005里调试也不见得很有用，Firefox里的<A href="https://addons.mozilla.org/firefox/1843/">Firebug</A>在这上面表现的还不是太差，同样小巧玲珑。</FONT></P>
<P><FONT face="Courier New" size=2>服务器端的IIS7是微软产品组在web server上的一个巨大改变，新特性增加了不少，更紧密的结合asp.net2.0，在安装IIS7时的一堆选项就看的让人发晕。但是我还没有见过用IIS7做网站服务器的朋友，我在打算在服务器上试一下，如果有在用的朋友留个言，多传授俺些少走弯路的方法。</FONT></P>
<P><FONT face="Courier New" size=2>SQL Server 2005我没有在vista上装过，不过前两天看到鞠强大哥遇到了一些似乎不应该骚扰我们的<A href="http://blog.joycode.com/juqiang/archive/2006/12/09/88784.aspx">问题</A>。</FONT></P>
<P><FONT face="Courier New" size=2>OK，这样看来2003是我们做web开发的好选择了，对于windows应用程序呢?</FONT></P>
<P><FONT face="Courier New" size=2>WPF和WCF上的漂亮的APP据我现在知道的不一定必须在vista上做，XP/2003装上一堆东西后也是可以的，只是无法看到Aero的透明，而这个又不是开发者需要关心的（通常情况下），所以vista再次又不是winform程序的必须的开发平台，此时选择轻量级系统看起来似乎更好。</FONT></P>
<P><FONT face="Courier New" size=2>什么情况下用呢？<A href="http://bbs.sdpol.com/topic33587.html">QQ增加的登陆框密码保护功能轻松把vista就blue screen了</A>，我们得删除了那两个dll后才能用，而此时密码的保护功能就没了，看来腾讯的工程师们需要用vista来测试兼容性了。</FONT></P>
<P><FONT face="Courier New" size=2>剩下的就是需要使用vista上一些组件来做开发的朋友需要了，比如说<A href="http://www.microsoft.com/windowsvista/features/foreveryone/sidebar.mspx">windows sidebar</A>（我目前还不知道能否不用vista) 和 </FONT><A href="/lovewangshu/archive/2006/10/24/537820.html"><FONT face="Courier New" size=2>Windows RSS Platform</FONT></A><FONT face="Courier New" size=2>。</FONT></P>
<P><FONT face="Courier New" size=2>想到这里，我就决定坚守我现在的512内存，不转移开发平台了。园友们对待这个问题的看法是?......</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/591596.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47903/" target="_blank">微软8月推送IE8到企业用户桌面</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>Ubuntu 6.10</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/577143.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 29 Nov 2006 17:48:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/577143.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/577143.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/577143.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/577143.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/577143.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>前天下午快下班的时候王开源大哥送来了Ubuntu 6.10的CD，鲜红的底色显示着生机勃勃。接触Ubuntu有一段时间了，从hoary开始就装在了家里的老款联想本本上（533 CPU，当然是有些反映迟钝的），用了几天后实在是想亲切感受一下她的魅力，于是又装在家里的电脑上，直到国庆回家装vista才忍痛将其换下场，前几天跟老妈聊天，令我极为吃惊的是我只懂汉语的老妈竟然敲过来一行文字：新系统不如以前ubuntu好。我妈是只用电脑跟我聊天的，而且我妈妈连windows也拼不出来。</FONT></P>
<P><FONT face=Verdana size=2>Ubuntu在如此短的时间内能到岛这样的境界，Open是她的支柱，For human beings是她的灵魂。从12月2日开始，将是ubuntu在中国的火爆的开始。</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/577143.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47902/" target="_blank">FireFox 3.5速度比3.0版快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>Applied Windows Live Custom Domains (2) - SDK简介</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/Windows_Live_Custom_Domains_SDK_1.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 29 Nov 2006 17:48:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/Windows_Live_Custom_Domains_SDK_1.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/577144.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/Windows_Live_Custom_Domains_SDK_1.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/577144.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/577144.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>今年中下旬微软公布了Windows Live Custom Domains的SDK。在上一篇对Windows Live Custom Domains的简单介绍的文章中我们看到了几张其网站操作界面的截图，获取有一些读者看过后也已经申请注册了自己的Windows Live Custom Domain了。但是对于中小企业来说，该SDK是非常有用的。</FONT></P>
<P><FONT face=Verdana size=2>Windows Live Custom Domains SDK除了能完成我们在web界面上可操作的功能外还增加了对用户列表的导出和导入，而这两个重要的功能是在web操作界面上所没有的，但却是企业用户所需要的。</FONT></P>
<P><FONT face=Verdana size=2>Windows Live Custom Domains SDK使用SOAP RPC 1.1标准来完成客户端程序和Windows Live Custom Domains web服务器</FONT><A title="ManageDomain Web Page" href="https://domains.live.com/service/managedomain.asmx" target=_blank><FONT face=Verdana size=2>提供的Web Services</FONT></A><FONT face=Verdana size=2>的交互，SDK里有关于每个方法的SOAP调用的详细说明文档。需要注意的是SDK不能作的是不能注册custom domain的服务和取消该服务。</FONT></P>
<P><FONT face=Verdana size=2>SDK中附带两个Sample,一个是Console的,另一个是Win32 app的.</FONT></P>
<P><FONT face=Verdana size=2>在进行任何的操作方法调用前,我们首先要做的是登陆认证。所有的连接到web服务的connection都需要用户已经登陆到Passwork Network中。该web services和Windows Live Custom Domains使用的是相同的用户认证，就是Microsoft Passport service，我们将在后面的sample分析中做稍微详细一点的说明。但是需要注意的是使用文本格式明文存储登陆票据是非常危险的。</FONT></P>
<P><FONT face=Verdana size=2>SDK中提供的方法：</FONT></P>
<UL>
<LI><FONT face=Verdana size=2>AddUser </FONT>
<LI><FONT face=Verdana size=2>DeleteUser </FONT>
<LI><FONT face=Verdana size=2>GetUserState 根据用户名返回您的域下的该用户的状态 </FONT>
<LI><FONT face=Verdana size=2>EnumUsers 列出当前域所有的用户 </FONT>
<LI><FONT face=Verdana><FONT size=2><STRONG>EvictSquatter</STRONG> 如果您在使用windows live custom domain之前您的域下某用户已经存在了（这样的用户称为EASI，即E-mail as sign-in only，电子邮件地址仅用来作为登陆到passport之用，与hotmail是没有关系的），那么您除了可以通过导入的方式将其所有设置（包括密码）直接迁移外还可以通过该功能弃用此用户，目的是创建同一名称的新用户。而弃用某用户将强制其在下次登录时必须重命名其帐户。他们将保留其 Windows Live ID 设置，但帐户名将被更改。提示：所有发送到非活动状态收件箱的电子邮件将被退回并显示为无法送达。若要激活其收件箱，您的用户必须使用您为其创建的用户名和临时密码登录 </FONT></FONT>
<LI><FONT face=Verdana size=2>ImportUser&nbsp;&nbsp;导入一个已经存在的EASI passport用户到该域中。 </FONT>
<LI><FONT face=Verdana size=2>EnumDomains 返回当前登陆管理员用户所管理的所有域的名字 </FONT>
<LI><FONT face=Verdana size=2>GetDomainState 返回当前域的状态</FONT></LI></UL>
<P><FONT face=Verdana size=2>提供的Console模式的Sample支持以下功能：</FONT></P>
<UL>
<LI><FONT face=Verdana size=2>增加、删除和枚举用户 </FONT>
<LI><FONT face=Verdana size=2>判断一个用户是否已经在该域内 </FONT>
<LI><FONT face=Verdana size=2>通过从.csv文件中导入用户名来批量添加新用户 </FONT>
<LI><FONT face=Verdana size=2>枚举一个已经登陆的管理员用户所管理的域</FONT></LI></UL>
<P><FONT face=Verdana size=2>而SDK提供的Win32 Sample提供了良好的GUI支持，在支持Console Sample中功能的同时有一个更改和一个新功能的添加：</FONT></P>
<UL>
<LI><FONT face=Verdana size=2>从一个.xml中批量导入用户 </FONT>
<LI><FONT face=Verdana size=2>将用户导出至一个.xml文件（导入和导出使用相同的格式）</FONT></LI></UL>
<P><FONT face=Verdana size=2>To Be Continued ...</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/577144.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47902/" target="_blank">FireFox 3.5速度比3.0版快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>Applied Windows Live Custom Domains (3) - SOAP Calls to the Web Service</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/Windows_Live_Custom_Domains_SDK.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 29 Nov 2006 17:48:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/Windows_Live_Custom_Domains_SDK.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/577145.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/30/Windows_Live_Custom_Domains_SDK.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/577145.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/577145.html</trackback:ping><description><![CDATA[<P><FONT face=Verdana size=2>如果您想自己血访问Windows Live Custom Domains Web服务的代码，那么需要看一下下面的几个方法。</FONT></P>
<P><STRONG><FONT face=Verdana size=2>GetLoginUrl</FONT></STRONG></P>
<P><FONT face=Verdana size=2>public string GetLoginUrl(string memberName)<BR></FONT><FONT face=Verdana size=2>调用：GetLoginUrl(</FONT><A href="mailto:fanweixiao@hotmail.com"><FONT face=Verdana size=2>fanweixiao@hotmail.com</FONT></A><FONT face=Verdana size=2>)<BR></FONT><FONT face=Verdana size=2>返回：为了使用我们的服务的Passport的登陆URL</FONT></P>
<P><STRONG><FONT face=Verdana size=2>GetLoginDataTemplate</FONT></STRONG></P>
<P><FONT face=Verdana size=2>public string GetLoginDataTemplate()<BR></FONT><FONT face=Verdana size=2>获取用以获得Passport认证票据（Passport authentication ticket）的数据模版(data template)。<BR></FONT><FONT face=Verdana size=2>注意：该方法调用后我们必须使用域管理员的登陆名和密码来替换模版中的值，然后再去调用Passport，因为这个模版是不会改变的，我们只需要在每次操作（session）调用它一次。</FONT></P>
<P><STRONG><FONT face=Verdana size=2>VerifyAuthData</FONT></STRONG></P>
<P><FONT face=Verdana size=2>public bool VerifyAuthData(string authData) <BR></FONT><FONT face=Verdana size=2>将GetLoginDataTemplate()方法返回的修改后的数据发送到GetLoginUrl()返回的URL上来验证登陆用户，如果是有效的域管理员将返回true。 <BR></FONT><FONT face=Verdana size=2>上面这三个方法可以创建Passport的票据，我们只需要登陆一次，之后直接可以进行添加、删除、导入和弃用（evict）的操作。该票据过期时间至少为1小时。 </FONT>
<P><FONT face=Verdana size=2><STRONG>AddUser</STRONG> </FONT>
<P><FONT face=Verdana size=2>public void AddUser(string name, string password, bool resetPassword, string authData) <BR></FONT><FONT face=Verdana size=2>需要注意的是name要是</FONT><A href="mailto:vc@onlyvc.org"><FONT face=Verdana size=2>vc@onlyvc.org</FONT></A><FONT face=Verdana size=2>这种样式的，密码是用来登陆hotmail的。resetPassword如果为true的话那么新用户第一次登陆到hotmail时需要修改密码。 <BR></FONT><FONT face=Verdana size=2>需要注意的是我们在调用该方法前需要先调用西面的GetUserState方法来判断该用户名是否可以被添加。 </FONT>
<P><FONT face=Verdana size=2><STRONG>GetUserState</STRONG> </FONT>
<P><FONT face=Verdana size=2>public enum GetUserState(string name, string authData) </FONT>
<P><FONT face=Verdana size=2>返回该用户名所对应用户的状态。它的几个返回值： <BR></FONT><FONT face=Verdana size=2>0：表明有效，可以被注册。<BR>1：被屏蔽，该用户名存在非法字符<BR>2：该用户已经被注册了。<BR>3：该用户曾经是一个Passport账户并且与Hotmail收件箱想绑定，在过去的30天内该账户被删除了。基于Hotmail的机制，这些账户不能在30天内被再次应用的。这种情况经常出现与如果一个用户名使用过Messenger的离线消息收件箱（OIM inbox，Offline Instant Messenger），OIM使用hotmail存储离线消息，这个特性被新的Messenger的Live服务所广泛使用。<BR>4：已经存在EASI账户（EASI在<A href="/lovewangshu/archive/2006/11/30/577144.html">上一篇文章</A>中有介绍）。如果我们想创建新账户可以先弃用该账户。 </FONT>
<P><FONT face=Verdana size=2><STRONG>DeleteUser</STRONG></FONT></P>
<P><FONT face=Verdana size=2>public void DeleteUser(string name, string authData) <BR></FONT><FONT face=Verdana size=2>这个方法要谨慎使用，因为被删除的用户不但丢失所有的email还会被关30天禁闭才能再被使用。下一次这个用户登陆的时候它将被告知需要修改它的Passport账户名称，与我们的域也没有什么关系了。 </FONT>
<P><FONT face=Verdana size=2><STRONG>EnumUsers</STRONG> </FONT>
<P><FONT face=Verdana size=2>public string[] EnumUsers(string domainName, string start, int num, string authData) </FONT>
<P><FONT face=Verdana size=2>start指明了返回列表的开始值，为""时返回所有用户名，以字符串数组形式存放，num表示了返回的个数，最大允许值是500，所以如果该参数值为500以上的话可以返回所有用户。 </FONT>
<P><FONT face=Verdana size=2><STRONG>ImportUser</STRONG> </FONT>
<P><FONT face=Verdana size=2>public void ImportUser(string name, string authData) </FONT>
<P><FONT face=Verdana size=2>导入一个已经在Passport上注册的用户。参考<A href="/lovewangshu/archive/2006/11/30/577144.html">上一篇blog</A>的描述可得知该方法的目的。这个方法的调用可能失败，情况如下： </FONT>
<OL>
<LI><FONT face=Verdana size=2>用户不存在与Passport中 </FONT>
<LI><FONT face=Verdana size=2>用户已经在该域的管理范围之内了（已经被导入或添加了）</FONT></LI></OL>
<P><FONT face=Verdana size=2><STRONG>EvictSquatter</STRONG></FONT></P>
<P><FONT face=Verdana size=2>public void EvictSquatter(string name, string authData) </FONT>
<P><FONT face=Verdana size=2>也是在<A href="/lovewangshu/archive/2006/11/30/577144.html">上一篇blog</A>的相关介绍，同ImportUser一样也可能失败，原因也一样。 </FONT>
<P><FONT face=Verdana size=2><STRONG>EnumDomains</STRONG> </FONT>
<P><FONT face=Verdana size=2>public DomainState[] EnumDomains(string authData) <BR></FONT><FONT face=Verdana size=2>返回所有该管理员管理的域信息。 <BR></FONT><FONT face=Verdana size=2>DomainState[]由下面三部分组成： </FONT>
<OL>
<LI><FONT face=Verdana size=2>Domain name 域名(string) </FONT>
<LI><FONT face=Verdana size=2>Active state 活动状态(boolean) </FONT>
<LI><FONT face=Verdana size=2>MX record MX记录 (string)</FONT></LI></OL>
<P><FONT face=Verdana size=2>如果一个域名有多个管理员，MX记录将显示该登陆用户所这设置的。</FONT></P>
<P><FONT face=Verdana size=2><STRONG>GetDomainState</STRONG></FONT></P>
<P><FONT face=Verdana size=2>public DomainState[] GetDomainState(string domainName, string authData) <BR></FONT><FONT face=Verdana size=2>获得一个域的状态信息。DomainState[]的组成同上 <BR><BR></P>
<P><FONT face=Verdana size=2>To Be Continued ...</FONT></P></FONT><img src ="http://www.cnblogs.com/lovewangshu/aggbug/577145.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47902/" target="_blank">FireFox 3.5速度比3.0版快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>Applied Windows Live Custom Domains (1) - 简介</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/11/26/Windows_Live_Custom_Domains_1.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sun, 26 Nov 2006 02:26:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/26/Windows_Live_Custom_Domains_1.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/572667.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/26/Windows_Live_Custom_Domains_1.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/572667.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/572667.html</trackback:ping><description><![CDATA[<P><FONT face=Tahoma size=2>Applied Windows Live Custom Domains (1) 简介</FONT></P>
<P><FONT face=Tahoma size=2>Windows Live Custom Domains (以下简称WLCD) 简单说来就是一种可以让拥有顶级域名的您注册，配置，然后享受微软提供给您的方便的而且提供可编程接口的帐户管理和使用hotmail or Windows Live Mail作为邮件服务平台的服务。类似的服务Google和网易也都在做，但是WLCD是第一款out of beta的。</FONT></P>
<P><FONT face=Tahoma size=2>WLCD值得我们使用的几个特性：<BR>1.方便的注册和配置：<BR>使用您的windows Live ID登录</FONT><A href="http://domains.live.com/"><FONT face=Tahoma size=2>http://domains.live.com</FONT></A><FONT face=Tahoma size=2>然后输入您的域名，next后WLCD就会告诉您该如何配置您的域名mx记录。配置完成后等待纪录刷新就可以了。<BR><IMG src="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/38527/o_wlcd.png"><BR>2.支持无限的用户。<BR>3.通过两种方式可以add user，第一种就是您作为administrator手动添加(在后面几篇文章中我们将通过WLCD提供的SDK来以编程的方式创建一个更加容易使用的app来简化我们的这个操作过程)，第二种是通过用户主动申请注册(Open Membership service，是否启用管理员可以控制)。<BR><IMG src="http://www.cnblogs.com/images/cnblogs_com/lovewangshu/38527/o_WLCD2.png"><BR>4.所有的注册的ID都是windows live ID，可以享受所有的windows live服务，比如直接登录live messenger.<BR>5.注册的用户默认使用hotmail来管理自己的邮箱，但是可以申请使用windows live mail。hotmail支持250MB空间，而live mail支持2GB，as well as被提供了良好的操作界面和整合的联系人功能。无论使用哪一种，使用windows mobile的用户都有良好的pocket端支持。对于中小型企业来说，这种公司邮件服务器搭配模式和Groove都是在未来绝对不可缺少的。<BR>6.WLCD为21个国家提供了15种语言版本。<BR>7.通过Microsoft SmartScreen技术用户不必再为垃圾邮件所严重骚扰。<BR>8.邮件享有病毒检查和清除服务。<BR>9.公开了web services供用户以可编程的方式来管理用户。web版本的WLCD只提供了对单个用户的操作，借助SDK我们就可以方便的将现有用户从当前的mail server上迁移到WLCD上，下面的几篇我们就来具体看一下windows live custom domains的SDK。<BR><BR></P>
<P><FONT face=Verdana size=2>To Be Continued ...</FONT></P></FONT><img src ="http://www.cnblogs.com/lovewangshu/aggbug/572667.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47901/" target="_blank">Chrome在Mac系统上的表现已超越Safari</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>vista中很酷的声音也不如win95时代的好听(flash)</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/11/17/563171.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Thu, 16 Nov 2006 17:51:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/17/563171.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/563171.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/17/563171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/563171.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/563171.html</trackback:ping><description><![CDATA[<A href="http://69.93.111.150/albino_flash16/winnoise(www.albinoblacksheep.com).swf">http://69.93.111.150/albino_flash16/winnoise(www.albinoblacksheep.com).swf</A><BR><BR>强烈推荐coding累了时候看一看:)<img src ="http://www.cnblogs.com/lovewangshu/aggbug/563171.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47895/" target="_blank">暴雪称《星际争霸II》因故耽误一年</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>Sidebar Gadget开发教程 [转自王洪超的blog]</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/11/17/563166.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Thu, 16 Nov 2006 17:25:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/17/563166.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/563166.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/17/563166.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/563166.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/563166.html</trackback:ping><description><![CDATA[<A id=_134471851aab9f5b_HomePageDays_DaysList__ctl7_DayItem_DayList__ctl0_TitleUrl href="http://blog.joycode.com/joy/archive/2006/10/24/85611.aspx">Sidebar Gadget开发教程(1)</A><BR><A id=_134471851aab9f5b_HomePageDays_DaysList__ctl5_DayItem_DayList__ctl0_TitleUrl href="http://blog.joycode.com/joy/archive/2006/11/01/86016.aspx">Sidebar Gadget开发教程(2)</A><BR><A id=_134471851aab9f5b_HomePageDays_DaysList__ctl2_DayItem_DayList__ctl0_TitleUrl href="http://blog.joycode.com/joy/archive/2006/11/04/86110.aspxhttp://blog.joycode.com/joy/archive/2006/11/04/86110.aspx">Sidebar Gadget开发教程(3)</A><img src ="http://www.cnblogs.com/lovewangshu/aggbug/563166.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47895/" target="_blank">暴雪称《星际争霸II》因故耽误一年</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/lovewangshu/archive/2006/11/07/552449.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Mon, 06 Nov 2006 18:57:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/07/552449.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/552449.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/07/552449.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/552449.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/552449.html</trackback:ping><description><![CDATA[<p>很常见的过程，简单一点，我们看看编译器需要做什么工作。简化一下问题，暂时忽略非法字符和数字溢出的可能性来讨论无符号整形：</p> <p>1。将十进制数字组成的串转化为一个整形数：</p> <ol> <li>将储存最终结果的变量清零</li> <li>如果串中没有数字了，则算法结束，该变量储存的就是对应的数</li> <li>从串中取下一个数字（左-&gt;右）</li> <li>将变量*10，然后+步骤3中取得的数字</li> <li>goto step 2</li></ol> <p>将整型数字换为字符串更麻烦了：</p> <ol> <li>初始化字符串为空串</li> <li>如果整数为0就输出0，结束</li> <li>将当前整数除以10，得到余数和商</li> <li>将余数转换成一个字符，把该字符接到字符串尾部</li> <li>如果商!=0，把它当作新的整形数，repeat step 3~5</li> <li>将字符串中的字符按放入顺序逆序输出（跟堆栈道理一样）</li></ol> <p>看到效率损耗了吗？要知道<strong>除法是非常慢的</strong>。</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/552449.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47892/" target="_blank">Windows Mobile 6.5部分图标赏析</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/lovewangshu/archive/2006/11/07/552443.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Mon, 06 Nov 2006 18:28:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/11/07/552443.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/552443.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/11/07/552443.html#Feedback</comments><slash:comments>30</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/552443.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/552443.html</trackback:ping><description><![CDATA[<P>这里所说的我女儿是指我<STRONG>三个月</STRONG>来买的<STRONG>第三辆</STRONG>自行车，折叠的粉红色的可变速的小自行车。<BR>昨天北京刮起了大风，由于最近项目比较紧，自身水平又不高，所以打算周末加班赶进度，但是苦于风大天冷，中午吃完饭后就回去了，打算过一会儿在去公司，于是就没有把车子搬回楼上。<BR>可恶的大风一直没停，加之LINQ的吸引力，一直到晚上2点睡觉也没觉得饥饿和去公司的事。但是自己却想过要不要把自行车搬上来（一般我都是扛到楼上的），但是同住一房的同事说车子都锁一块了，肯定没事！他们俩的车子在楼洞里放了快1个月了也没有什么问题，于是我也就不再打算把它费力抗上来了。<BR>当今天早上（准确的说是昨天早上，现在凌晨了）下楼后，我就愣在那里了，被剪断的锁丢在地下，我女儿已经没了。<BR>整整一天，心情都不是太好，以前有她的时候没觉得多好，现在没了，丢的不仅仅是人民币。<BR>来到北京就听说这里是自行车杀手城市，不丢车就是这个城市已经变态的表现，根据同事教导去修车的地方买了一辆算新的二手车，没想到在公司楼下丢了。先前同事说过公司下面车棚是不会丢的，结果我却碰上了。经大家分析，是车子太新，车锁不够好（5元的）。第二天去另一家修车的地方花120买了一辆18速自行车，好一顿讲价，“送”了一把据说价值20元的车锁，结果在从TechEd回来的时候惊奇的发现锁在楼下的车子没了，那天是星期天，下午6点多左右，据邻居说中午还看到了我的车子。<BR>而后思考认为买一辆好一点的小车子比较好，也买了一把好锁，以后每天都把车子扛回屋里。一直安逸untill上周日晚上的因懒惰和侥幸而丢失。</P>
<P><FONT color=#ff0000>总结：</FONT></P>
<P>1。懒惰和侥幸心理，是这次丢车的最主要的原因。当自己犹豫不定的时候外界因素的侵入（同事的“分析”）却起到了绝对性的作用。本身外因不占据事件产生的主导因素，但是当自身不坚定的时候，外界因素却几乎可以起到决定性作用。在项目开发过程中，这样的错误是常常见到的。举个例子，当我们从数据库里取出数据给实体类赋值时往往代码会是这样:<BR>domainObj.someProperty = (SomeType)IDataReader[index];<BR>这是想到的问题就是如果IDataReader[index]取出的数据是null的时候，可能会出现对象没有被引用到实例的错误。可是当前我的数据库设计和程序逻辑设计里读出的记录不会是null的。加上项目已有的类似处理方法里也没有做null处理，于是相对坚定的认为null出现的几率很小了，于是大片代码开始如此炮制。所以当null出现的时候.......后果可想而知。项目架构也是如此，同是.Text程序，跑在别的地方可能没问题，但是自己拿过来改动一些来用却是问题百出，相信有经验的开发人员在翻过.Text的代码后就对其中的隐患感触颇深了，但是看到很多成功运行的例子，加之自己的侥幸心理，就很容易使自己陷入焦油坑。在惨遭应试教育洗脑后，我们应该越来越多的相信自己对问题的分析和结果的权衡，就在N多年前人们还在认为地球是个正方体。</P>
<P>2。如何对待（<STRONG>++项目主版本号</STRONG>）。三次买车，价格分别为90，120，360。<STRONG>1：1.333：4</STRONG>的比例。当我们在项目上失败的次数越多的时候，对待下一个版本的功能期待和投入也是以几何级数的增长。都说失败是成功之母，但是每次我们犯的错误都是新的，按照这句谚语，我们得到的结果就是失败是成功之母=不断的失败+偶尔短暂的所谓的成功。根据常理来判断，结果是谚语=屁话。当然这个逻辑看起来很荒谬，其实跟那些所谓的“你们中国有句俗话”一样，只是后者常常和大学学位证/CET Cert一样，麻醉了一大批人。一个新版本项目的开启或功能重构的开启，就是出乎你意料的错误的即将来临的序幕。如果用正确的心态来对待才是重要的，不要期望这是一个best of the world或者完美无暇的结果，尽力去做就好了（一直以来我的车子安然无恙全在于我的悉心关照和仍然处于上次丢车的影响之中）</P>
<P>3。基础设施的重要性（infrastructure building ）和适度设计（Appropriate design）。我的车锁让我付出了仅40元。盖多高的楼挖多深的地基，这话是真的，不过一个产品不是盖楼的模式，想多加20层楼了我们不可能推翻楼房重建地基，而项目基础设施的构建工作成了很多sulotion provider极为关注的部分。高度的可扩展性必然伴随效率（运行效率和有效时段内的开发效率）的降低。如果我为我的车子买一把200多车锁，固然显得太为过分了，至少这次车锁是被剪断的，不是被破解开的，我认为这把车锁买的合适，下次买车我会选一把比这个再结实一点的但是价格又不会是太高的，因为即使再坚固只要有素质的贼盯上你了，它也会想尽办法来给你搞断。我认为项目的架构不必考虑太过长远，适度就已足够，需要的时候重构和推翻重做在总体看来是节省开发成本和缩短开发周期的。世界上没有最高的楼，只有更高的楼，而且更高的楼一般不会是曾经是世界上最高的楼的，但是本拉登（不可预知和不可控因素）的出现似乎使得这个几率增加了。没有银弹的同时也没有完美、坚实的设计。<BR>胡言乱语之后总觉得对不起读者，附送小文：&nbsp;<A id=_3edc5a128e81_HomePageDays_DaysList_ctl01_DayItem_DayList_ctl00_TitleUrl href="/lovewangshu/archive/2006/11/07/552449.html"><FONT color=#006400>效率！！！数和字符串的转换</FONT></A></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/552443.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47892/" target="_blank">Windows Mobile 6.5部分图标赏析</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>Windows Live Barcode</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/10/27/541460.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Fri, 27 Oct 2006 01:26:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/10/27/541460.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/541460.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/10/27/541460.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/541460.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/541460.html</trackback:ping><description><![CDATA[<P>刚刚看到.晚上再细看.</P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/541460.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47890/" target="_blank">FireFox 3.5正式版发布</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>如何在Virtual PC里高效运行Ubuntu</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/10/26/540125.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 25 Oct 2006 18:07:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/10/26/540125.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/540125.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/10/26/540125.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/540125.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/540125.html</trackback:ping><description><![CDATA[<p>此题目仅用来骗取搜索引擎的访问量。</p> <p>我试了很多种方法始终都不能解决Ubuntu 6.10在VPC里运行的效率问题。很多Linuxer都说在虚拟机里玩Linux类OS的人都属于比较那个的，但是有很多朋友肯定像我一样，绝大多数的工作都需要在windows里做，我的VS要跑在windows下，Sql Server也是，就连我装的Vista也很少进去。如果让我真真正正的装一次，我想我是不会去作出这个决定的。</p> <p>不知道有没有牛人可以写一个针对VPC的addition，也可以让大家通过VPC爱上Ubuntu，因为Ubuntu真的不错！</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/540125.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47888/" 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>IE7中的RSS功能和Windows RSS Platform的简单介绍</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/10/24/537820.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Mon, 23 Oct 2006 17:26:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/10/24/537820.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/537820.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/10/24/537820.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/537820.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/537820.html</trackback:ping><description><![CDATA[<p><font face="Verdana" size="2">IE7增加了对RSS的支持。IE7对该功能支持的核心部分是windows rss平台（windows rss platform），该平台提供了rss功能的基础组件，使得rss可以服务于所有的桌面应用程序。对于目前微软推出的产品中，ie7和outlook 2007就使用了这些基础组件从而增加了对rss的支持（windows sidebar的小器件里也使用了这个功能）。</font></p>
<p><font face="Verdana" size="2">ie7是这个平台的第一个应用，在安装ie7的过程中就会自动为系统添加这个平台了，而ie7只是使用其中的一部分功能实现了一个轻量级的rss订阅功能：<br>1.当访问的页面含有feeds的时候rss图标会出现<br>2.订阅:用户点击这个图标就可以看到feed的预览然后再点击可以订阅。<br>3.管理:用户通过收藏夹就可以管理feed，并且当feed有更新时会加粗显示。<br>4.同步：用户可以在ie7和office outlook 2007中同步feed</font></p>
<p><font face="Verdana" size="2">Because no server back-end manages network utilization, Microsoft has implemented RSS in such a way within Windows IE7 that update cycles for RSS feeds will alter themselves and not check for feed updates precisely as specified by users (e.g., something set for 12:00 might actually synchronize at 11:58). This “salting the interval” will disperse the checking of feed updates across large numbers of users. Also, Windows IE7 will not look at a site when it knows that the site has not been updated (based on the RSS file information). The Download Engine within the Windows RSS Platform also includes several capabilities, outlined here, that improve network usage. </font></p>
<p><font face="Verdana" size="2">大致意思是说微软使用了这样一种模式：在ie7里有一个循环更新机制，它不是靠用户手动触发检查更新的，而且根据rss的机制没有更新的feed也不会去检查。所有的这些检查都是分散开的这样不会占用过多的带宽。</font></p>
<p><font face="Verdana" size="2">需要注意的是outlook 2007不依赖于window rss平台，而是实现了自己的一套机制，但是他是可以和ie7进行feed的同步的，这样就可以实现使用一种工具订阅feed，而使用其它多种工具阅读。</font></p>
<p><font face="Verdana" size="2">windows rss platform由三部分组成：通用feed列表（common feed list），feed同步引擎(feed synchronization engine)和feed存储系统（feed store）。ie7订阅的feed可以通过通用feed列表被其他应用程序所共享，再通过同步引擎进行同步操作。</font></p>
<p><font face="Verdana" size="2">windows rss platform大大简化了开发人员的工作，开发人员甚至都不需要去深度学习rss格式，任务式同步（synchronization schedules），集中下载（enclosure downloads），甚至是xml。它提供给开发者：</font></p>
<p><font face="Verdana" size="2">1.支持大多数rss和atom格式和大多数流行的扩展<br>2.后台任务式的更新<br>3.支持像条件式的GETs和RFC 3229标准的技术<br>4.使用后台智能传输服务（Background Intelligent Transfer Service）提供更好的带宽占用方式（Bandwidth-friendly enclosure downloads ）<br>5.API提供了一个简单的对象模型以及对原始XML流的直接访问</font></p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/537820.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47887/" target="_blank">看阿里巴巴员工怎样快乐工作</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/lovewangshu/archive/2006/10/22/536252.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Sun, 22 Oct 2006 02:10:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/10/22/536252.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/536252.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/10/22/536252.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/536252.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/536252.html</trackback:ping><description><![CDATA[<P><FONT size=2>来到北京快3个月了，今天终于装上了ADSL，又可以自由自在的上网啦！<BR>dudu刚来北京我就跟他哭诉我的上网太不方便了，连博客都不方便写了（苦肉计），于是dudu老大第二天就帮忙弄到一个无线上网卡，俺立即怀着无比激动＋无比憧憬的跑到dudu那边把上网卡护送回家，结果，我的Dell Inspiron 6400竟然不支持PCMCIA插槽！恶心的Express Card技术还没有被大规模应用呢！<BR>今早房东拿来了ADSL的帐号，拨号成功后，检测是否能打开网页，下意识的输入<A href="">www.cnblogs.com</A>，恩，速度还很快！立马高兴坏了！朋友在旁边说打开百度看看速度，嘿嘿其实他们有所不知，以前我的上网条件访问博客园是非常辛苦的，现在的速度让我非常满意了！<BR>不多说了，该睡觉了，昨天从同事桌上掠夺到了Ajax in Action，虽然早有耳闻，但是因为与现在的工作关系不大所以一直没有看，昨天晚上2点多捧起书来看（机器在做虚机），看了没两页就深深被这本书吸引了，无论是作者的笔风还是写法，都让人觉得非常容易接受。<BR>看一本好书就是享受！<BR>能自由的写博客了就是享受！</FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/536252.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47886/" target="_blank">百度将编撰数字乡村百科全书</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>ASP.NET崩溃 - SiteMap里的疯狂循环(概译) </title><link>http://www.cnblogs.com/lovewangshu/archive/2006/10/12/527388.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Thu, 12 Oct 2006 06:59:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/10/12/527388.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/527388.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/10/12/527388.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/527388.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/527388.html</trackback:ping><description><![CDATA[<P>作者:tess<BR>原文地址:<A title="ASP.NET Crash - Crazy looping in a SiteMap" href="http://blogs.msdn.com/tess/archive/2006/10/10/ASP.NET-Crash-_2D00_-Crazy-looping-in-a-SiteMap.aspx">ASP.NET Crash - Crazy looping in a SiteMap</A><BR><BR>本文只是一个快速的概括性翻译, 如果敢兴趣还请您看原版.<BR><BR>我想快速创建一个并不美观的站点地图(site map), 所以我只简单的在我override的BuildSiteMap()函数里使用一个小循环添加了几个地图节点(sitemap node)<BR></P>
<P></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG id=Codehighlighter1_42_187_Open_Image onclick="this.style.display='none'; Codehighlighter1_42_187_Open_Text.style.display='none'; Codehighlighter1_42_187_Closed_Image.style.display='inline'; Codehighlighter1_42_187_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_42_187_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_187_Closed_Text.style.display='none'; Codehighlighter1_42_187_Open_Image.style.display='inline'; Codehighlighter1_42_187_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">public</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #0000ff">override</SPAN><SPAN style="COLOR: #000000">&nbsp;SiteMapNode&nbsp;BuildSiteMap()</SPAN><SPAN id=Codehighlighter1_42_187_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_42_187_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">&nbsp;(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i</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;myRoot.ChildNodes.Add(</SPAN><SPAN style="COLOR: #0000ff">new</SPAN><SPAN style="COLOR: #000000">&nbsp;SiteMapNode(</SPAN><SPAN style="COLOR: #0000ff">this</SPAN><SPAN style="COLOR: #000000">,&nbsp;i.ToString(),&nbsp;i.ToString(),&nbsp;i.ToString()));<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">return</SPAN><SPAN style="COLOR: #000000">&nbsp;myRoot;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN></DIV>
<P>当我运行这个web应用程序的时候我得到的却是"堆栈溢出(Stack overflow)",然后服务器就崩溃了. 然后我借助调试器调试这段代码,我所看到的东西非常奇怪:</P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">1</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">2</SPAN><SPAN style="COLOR: #000000">)&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">3</SPAN><SPAN style="COLOR: #000000">)&nbsp;myRoot<IMG src="http://www.cnblogs.com/images/dot.gif"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">4</SPAN><SPAN style="COLOR: #000000">)&nbsp;</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">)&nbsp;i&nbsp;</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>etc.&nbsp;<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top></SPAN></DIV>
<P>看起来i的值并没有增加,是编译器的bug还是CLR的?(暂时撇开sitemap的内部机制, 因为sitemap从设计上不允许我们这么使用,但是这个条语句你却可以随便写的)</P>
<P>在debug之前我们向后退几步重审一下:</P>
<OL>
<LI>堆栈溢出 
<LI>一个看起来像是无尽的循环</LI></OL>
<P>造成堆栈溢出是因为我们已经占用了大量的内存,而它们是当初为了在栈上分配太多的指向指向局部变量或参数的指针而服务的.(we have exceeded the amount of memory reserved for the stack by allocating too many function pointers, pointers to local vars and parameters on the stack.)但是往往我们都是因为死循环(never-ending recursion)而造成的, 换言之, funcitonA()调用了functionB(),而functionB()里又调用了functionA().<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG id=Codehighlighter1_26_96_Open_Image onclick="this.style.display='none'; Codehighlighter1_26_96_Open_Text.style.display='none'; Codehighlighter1_26_96_Closed_Image.style.display='inline'; Codehighlighter1_26_96_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" align=top><IMG id=Codehighlighter1_26_96_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_26_96_Closed_Text.style.display='none'; Codehighlighter1_26_96_Open_Image.style.display='inline'; Codehighlighter1_26_96_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" align=top><SPAN style="COLOR: #0000ff">void</SPAN><SPAN style="COLOR: #000000">&nbsp;MyRecursiveFunction()</SPAN><SPAN id=Codehighlighter1_26_96_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_26_96_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG id=Codehighlighter1_55_94_Open_Image onclick="this.style.display='none'; Codehighlighter1_55_94_Open_Text.style.display='none'; Codehighlighter1_55_94_Closed_Image.style.display='inline'; Codehighlighter1_55_94_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><IMG id=Codehighlighter1_55_94_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_94_Closed_Text.style.display='none'; Codehighlighter1_55_94_Open_Image.style.display='inline'; Codehighlighter1_55_94_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">)</SPAN><SPAN id=Codehighlighter1_55_94_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_55_94_Open_Text><SPAN style="COLOR: #000000">{<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" align=top></SPAN><SPAN style="COLOR: #000000">--&gt;</SPAN><SPAN style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MyRecursiveFunction();<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</SPAN></SPAN><SPAN style="COLOR: #000000"><BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</SPAN></SPAN><SPAN style="COLOR: #000000">&nbsp;</SPAN></DIV>
<P>所以此时我们的调用栈(callstack)看起来应该是这样的:<BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top><SPAN style="COLOR: #000000">functionB()<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>functionA()<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>functionB()<BR><IMG src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" align=top>functionA()</SPAN></DIV>
<P>好,那我们现在想象一下如果你现在有这样的函数: </P>
<P>当你第一次在断点位置上停止的时候i的值应该是0,调用栈看起来应该是 
<P>MyRecursiveFunction()<BR>... 
<P>现在我们用另一种方式执行进入函数内部(其实还是它本身) <BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">){<BR>&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i2</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i2</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i2</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i3</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i3</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i3</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i4</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i4</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i4</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i5</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i5</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i5</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i6</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i6</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i6</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</SPAN><SPAN style="COLOR: #0000ff">for</SPAN><SPAN style="COLOR: #000000">(</SPAN><SPAN style="COLOR: #0000ff">int</SPAN><SPAN style="COLOR: #000000">&nbsp;i7</SPAN><SPAN style="COLOR: #000000">=</SPAN><SPAN style="COLOR: #000000">0</SPAN><SPAN style="COLOR: #000000">;&nbsp;i7</SPAN><SPAN style="COLOR: #000000">&lt;</SPAN><SPAN style="COLOR: #000000">5</SPAN><SPAN style="COLOR: #000000">;&nbsp;i7</SPAN><SPAN style="COLOR: #000000">++</SPAN><SPAN style="COLOR: #000000">){<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<IMG src="http://www.cnblogs.com/images/dot.gif"><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;}<BR>}</SPAN></DIV>
<P>所以调用栈应该是这样的: <BR></P>
<DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><SPAN style="COLOR: #000000">MyRecursiveFunction()<BR>MyRecursiveFunction()<BR>MyRecursiveFunction()<BR>MyRecursiveFunction()<BR>MyRecursiveFunction()<BR>MyRecursiveFunction()<BR>MyRecursiveFunction()<BR><IMG src="http://www.cnblogs.com/images/dot.gif">&nbsp;</SPAN></DIV>
<P><STRONG>调试:</STRONG> 
<P>将windbg附属到w3wp.exe的进程上(文件/附属到进程),按下g运行.程序一会就终止了显示出了下列信息,表明是堆栈溢出(就像我们已经知道的一样) <BR><PRE class=debug><FONT color=#0000ff>(7e4.ddc): Stack overflow - code c00000fd (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=0fa4235c ebx=02beca74 ecx=02beca74 edx=02becb54 esi=02becb54 edi=02beca74
eip=686b5cb4 esp=02163000 ebp=02163004 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00210246
System_Web_ni+0xf5cb4:<BR>686b5cb4 56 push esi</FONT></PRE>
<P>如果我们用!clrstack看一下堆栈来确定我们是怎么结束的,我们只能看到这个: <BR><PRE class=debug><FONT color=#0000ff>0:016&gt; !clrstack
OS Thread Id: 0xddc (16)
ESP EIP <BR>02163000 686b5cb4 System.Web.StaticSiteMapProvider.GetChildNodes(System.Web.SiteMapNode)</FONT></PRE>
<P>可惜的这些不能告诉我们更多的东西, 当我们陷入堆栈溢出错误的时候!clrstack有时会在列举堆栈信息上出现一些问题,所以我们必须使用!dumpstack来看一下.<BR>(注意:!dumpstack不展示真实的堆栈,有一些函数可能是错误的,但是它能很好的让我们知道究竟怎么了) <BR><PRE class=debug><FONT color=#0000ff>0:016&gt; !dumpstack
OS Thread Id: 0xddc (16)
Current frame: (MethodDesc 0x68b03720 +0x4 System.Web.StaticSiteMapProvider.GetChildNodes(System.Web.SiteMapNode))
ChildEBP RetAddr Caller,Callee
02163004 686b1fc4 (MethodDesc 0x68aeff30 +0x18 System.Web.SiteMapNode.get_ChildNodes())
0216300c 0f765641 (MethodDesc 0xfa42328 +0x59 ViewSiteMapProvider.BuildSiteMap())
0216303c 686b5cdf (MethodDesc 0x68b03720 +0x2f System.Web.StaticSiteMapProvider.GetChildNodes(System.Web.SiteMapNode))
02163074 686b1fc4 (MethodDesc 0x68aeff30 +0x18 System.Web.SiteMapNode.get_ChildNodes())
0216307c 0f765641 (MethodDesc 0xfa42328 +0x59 ViewSiteMapProvider.BuildSiteMap())
021630ac 686b5cdf (MethodDesc 0x68b03720 +0x2f System.Web.StaticSiteMapProvider.GetChildNodes(System.Web.SiteMapNode))
021630e4 686b1fc4 (MethodDesc 0x68aeff30 +0x18 System.Web.SiteMapNode.get_ChildNodes())
021630ec 0f765641 (MethodDesc 0xfa42328 +0x59 ViewSiteMapProvider.BuildSiteMap())
0216311c 686b5cdf (MethodDesc 0x68b03720 +0x2f System.Web.StaticSiteMapProvider.GetChildNodes(System.Web.SiteMapNode))
02163154 686b1fc4 (MethodDesc 0x68aeff30 +0x18 System.Web.SiteMapNode.get_ChildNodes())
0216315c 0f765641 (MethodDesc 0xfa42328 +0x59 ViewSiteMapProvider.BuildSiteMap())
...</FONT></PRE>
<P>Ok,看起来问题出在ChildNodes属性上了, 它调用GetChildNodes()函数,而GetChildNodes()又再次调用我们的BuildSiteMap函数, 该函数调用了ChildNodes属性, 所以这样造成一个死循环. 
<P><STRONG>结论:</STRONG> 
<P>在<A title=创建站点地图 href="http://msdn2.microsoft.com/en-us/library/system.web.staticsitemapprovider.buildsitemap.aspx" target=_blank>创建站点地图</A>一文中你可以找到答案和解决文章开始时问题的正确处理方法.</P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/527388.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47885/" target="_blank">微软芝加哥、都柏林两大数据中心七月上线</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>ActiveSync45特性</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/10/11/526072.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 11 Oct 2006 03:32:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/10/11/526072.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/526072.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/10/11/526072.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/526072.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/526072.html</trackback:ping><description><![CDATA[<p></p> <p>ActiveSync 4.5不支持远程同步<br>ActiveSync 4.5不支持移动设备的数据备份和恢复<br>卸载ActiveSync 4.5安装之前版本的方法:<br>1.卸载ActiveSync 4.5<br>2.删除Windows\System32下的Rapi.dll<br>3.安装早期版本<br>ActiveSync 4.5需要repair的情况<br>1.当系统upgrad了或安装了一个Service Pack<br>2.升级到media player 10(11 beta也是)<br>如果是系统是windows xp sp1的话, EHCI USB 2.0 host controllers可能会造成USB连接断开,找KB822603可以解决.<br>某些局域网配置工具可能导致AS不能正常运行  <ul> <li>What's New:<br>增强USB支持:更快速的USB传输</li> <li>在PC上可以查看Exchange服务器同步的状态:当通过PC的internet连接与Exchange Server同步时可以看到同步状态</li> <li>可以通过outlook同步联系人的图片:需要Outlook XP,2003,2007版本的支持(4.2也可以)</li> <li>更容易的区别友好设备的名称:方便了蓝牙或红外同步的设备的名称的区别(ActiveSync 4.5使用你的windows登陆名生成一个唯一的设备标识(device partnership ID),这个登录名可以通过broadcast传递给拥有蓝牙寻找(bluetooth discovery)的broadcast).</li> <li>与windows media player 10集成(更容易的查找,配置和访问WMP10的音乐,视频和图片.当切当WMP10没有运行时也可以)(WMP11也是)<br>增强了用户界面和添加新协作机器(partnership)的向导</li> <li>同步IE移动收藏夹到SP(PPC原来的版本就可用)</li> <li>可以与outlook的同步更好</li> <li>一步就可以配置好所有的AS选项 </li></ul> <p>用于windows vista的mobile sync center还没有发现什么有特别提高的地方,这个4.5版本几乎就是vista上的XP版本(用于vista的不可以在xp上安装).需要注意的是第一次与outlook同步会时间很长,我取消选择了mail和calendar后一会就完成了,而我的mail和calendar里是没有内容的.环境:windows vista RC1, outlook 2007 with BR2</p><img src ="http://www.cnblogs.com/lovewangshu/aggbug/526072.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47884/" target="_blank">PHP 5.3.0正式版发布</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>中国工商银行A股今日开始招股，拟于下月27日在上海证券交易所挂牌上市。</title><link>http://www.cnblogs.com/lovewangshu/archive/2006/09/27/516020.html</link><dc:creator>维生素C.NET</dc:creator><author>维生素C.NET</author><pubDate>Wed, 27 Sep 2006 03:56:00 GMT</pubDate><guid>http://www.cnblogs.com/lovewangshu/archive/2006/09/27/516020.html</guid><wfw:comment>http://www.cnblogs.com/lovewangshu/comments/516020.html</wfw:comment><comments>http://www.cnblogs.com/lovewangshu/archive/2006/09/27/516020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/lovewangshu/comments/commentRss/516020.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/lovewangshu/services/trackbacks/516020.html</trackback:ping><description><![CDATA[<P><FONT face=Georgia size=2>中国工商银行A股今日开始招股，拟于下月27日在上海证券交易所挂牌上市。 </FONT></P>
<P><FONT face=Georgia size=2>昨日，中国证监会发行审核委员会召开2006年第43次会议，中国工商银行股份有限公司（首发）获通过。 </FONT></P>
<P><FONT face=Georgia size=2>据今日刊登的招股意向书摘要，工行A股发行初始发行规模为130亿股，发行人授予A股联席保荐人不超过A股初始发行规模15%的超额配售选择权（“绿鞋”），若A股绿鞋全额行使，则A股发行总股数将扩大至149.5亿股。A股的发行价格在经港元与人民币汇率差异做出调整后，将与H股发行价格一致。 </FONT></P>
<P><FONT face=Georgia size=2>同时，工行H股初始发行规模约为353.9亿股，发行人授予H股联席簿记管理人不超过H股初始发行规模15%的超额配售选择权，全额行使则发行总股数将扩大至约407亿股。 </FONT></P>
<P><FONT face=Georgia size=2>本次A股发行采用战略配售、网下配售与网上发行相结合方式。其中，战略配售约180亿元。每家战略投资者获配股票的50%锁定期12个月，其余50%锁定期18个月。 </FONT></P>
<P><FONT face=Georgia size=2>回拨机制启动前，网下配售股数为30亿股，约占本次初始发行规模的23.1％；其余部分向网上发行。发行人和联席保荐人将根据总体申购情况决定是否启动回拨机制，对网下配售和网上发行的规模进行调节。 </FONT></P>
<P><FONT face=Georgia size=2>招股书显示，在股票上市交易后的30个自然日内，受权实施绿鞋的主承销商中金公司可使用超额配售股票所获得的资金从二级市场买入股票，以稳定股价，但买入价不得高于发行价，累计买入股数不得超过超额配售股数。中金公司将在绿鞋操作结束后2个工作日内，把相应的股票划转给延期交付的战略投资者。<BR></FONT></P><img src ="http://www.cnblogs.com/lovewangshu/aggbug/516020.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47883/" target="_blank">图说苹果乔布斯七个重要时期</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>