<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_DiggingDeeply</title><subtitle type="text">Try best to be a good programmer</subtitle><id>http://feed.cnblogs.com/blog/u/56494/rss</id><updated>2011-12-07T03:19:13Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><generator>feed.cnblogs.com</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/56494/rss"/><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2011/12/07/2278949.html</id><title type="text">轮子和做轮子</title><summary type="text">前言：上午无事，离午饭还有1小时的时间，弄篇文章。近日，被分配到一个工作，就是给之前一个同事写的tool加个UI，并且增加一些新的功能。之前的形式是一个功能的lib，一个前台的console。。从我陆续开始动手开始，UI设计我也就替代了，但是之前这位仁兄写的tool已经严重阻碍了我的新功能的开发，而且还有bug，近日已经遇到了2个。简单说一下这个tool的功能：就是dump生成文件里的resource，大家都知道resource是PE里最复杂的功能，其格式内容有字符串，图片，音视频，XML等。当然，我们的这个tool目前只有dump string的功能，能dump native和managed</summary><published>2011-12-07T03:13:00Z</published><updated>2011-12-07T03:13:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2011/12/07/2278949.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2011/12/07/2278949.html"/><content type="html">&lt;p&gt;前言：上午无事，离午饭还有1小时的时间，弄篇文章。&lt;/p&gt;&lt;p&gt;近日，被分配到一个工作，就是给之前一个同事写的tool加个UI，并且增加一些新的功能。之前的形式是一个功能的lib，一个前台的console。。从我陆续开始动手开始，UI设计我也就替代了，但是之前这位仁兄写的tool已经严重阻碍了我的新功能的开发，而且还有bug，近日已经遇到了2个。&lt;/p&gt;&lt;p&gt;简单说一下这个tool的功能：就是dump生成文件里的resource，大家都知道resource是PE里最复杂的功能，其格式内容有字符串，图片，音视频，XML等。当然，我们的这个tool目前只有dump string的功能，能dump native和managed PE的resource。一次只能dump一个PE file。&lt;/p&gt;&lt;p&gt;native的string功能实现，用的是win32 API，然后P/Invoke，略过不提。&lt;/p&gt;&lt;p&gt;managed PE，用的是BCL里的&lt;a href="http://msdn.microsoft.com/zh-cn/library/system.resources.resourcemanager(VS.80).aspx"&gt;ResoureManger&lt;/a&gt; class，其之前的功能已经实现，也确实能dump出resource string。&lt;/p&gt;&lt;p&gt;下面我来详细说一下期间我遇到的bug：&lt;/p&gt;&lt;p&gt;1 一个assembly从不同的location load进同一个appdomain，你会遇到一个exception：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;Unhandled Exception: System.IO.FileLoadException: API restriction: The assembly&lt;br /&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt;&lt;span style="color: #800000;"&gt;file:///D:\dll\new\main\FSharp.Core - Copy (2) - Copy - Copy - Copy.dll&lt;/span&gt;&lt;span style="color: #800000;"&gt;'&lt;/span&gt; has al&lt;br /&gt;ready loaded &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; a different location. It cannot be loaded &lt;span style="color: #0000ff;"&gt;from&lt;/span&gt; a &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; location&lt;br /&gt;within the same appdomain.&lt;/div&gt;&lt;p&gt;这个exception 是怎么产生的呢？&lt;/p&gt;&lt;p&gt;因为你要dump assembly 的resource吧，那么就要将assembly load到当前的appdomain里吧，这样你的ResourceManager才能分析其中的内容。但是如果同一个assembly，从不同的location load，文件名可以相同也可以不同，因为其判断唯一性不是根据其文件名，而是根据其metadata里的信息。&lt;/p&gt;&lt;p&gt;那么这个时候该怎么办呢？&lt;/p&gt;&lt;p&gt;两个办法：&lt;/p&gt;&lt;ol style="list-style-type: upper-roman;"&gt;&lt;li&gt;阻止同一个assembly load twice 到同一个appdomain&lt;/li&gt;&lt;li&gt;创建一个新的appdomain来load 相同的assembly&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;我一开始走的第2个方案，其sample code也是可行的，但是由于一下原因考虑，放弃了：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;创建新的appdomain之后，牵扯到跨appdomain通信的问题，代码复杂度增加&lt;/li&gt;&lt;li&gt;如果频繁创建appdomain，效率不高&lt;/li&gt;&lt;li&gt;如果在新的appdomain里load assembly，再回到default appdomain，我需要预先load此assembly的dependency的assembly，这样的话就需要分析assembly的metadata。复杂度剧增&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;那么我就开始转回到第一个方案，那么我怎么能确定assembly的唯一性呢，文件名是不可行的，我想到了两个方案：&lt;/p&gt;&lt;ol&gt;&lt;li&gt;分析PE的metadata&lt;/li&gt;&lt;li&gt;用checksum&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;我用了第二个方案，用了MD5的hash，来保证唯一性，简单易行，但是可能会耽误一些时间，尤其在大文件的loading的时候，会比较耗时。不过目前因为resource file超过10M的都很小，所以也是权宜之计。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;第2个bug：&lt;/p&gt;&lt;p&gt;在这个tool dump完之后，会以log的形式输出结果。但是当你在dump完之后再次按下dump按钮，就会抛出：&lt;/p&gt;&lt;p&gt;XXX文件被XXX进程占用&lt;/p&gt;&lt;p&gt;这个bug我目前还没怎么分析，估计应该不太难，或者很难。我猜应该是某个file handle没有正确的close吧。唉，我爱擦屁股。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;其实这些问题，都是太依赖微软工具的结果，用了某一个Class，从而导致之后的功能根本无法扩展，因为其核心功能是用的BCL的某一个class，某一个API。&lt;/p&gt;&lt;p&gt;关于这个tool，我想如果想通用一劳永逸的话，不如抛开API，直接去metadata里找resource。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;微软造就了dev，也弱化了dev。&lt;/p&gt;&lt;hr /&gt;&lt;p&gt;啰里吧唆半天，吃饭去&lt;/p&gt;&lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/2278949.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2011/12/07/2278949.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2011/10/07/Steve_Jobs_was_dead.html</id><title type="text">Steve Jobs死了</title><summary type="text">这几天铺天盖地的新闻都是Steve Jobs的死讯，我也是昨天早晨手机看新闻的时候惊闻，当时意识到Apple会不会因此而衰败。新的IPhone5没有按期而至，仅仅是多了个4S，当然这个已经被炒到7000RMB向上，估计早批拿到真货的中国人肯定的破万了。当然在4S发布之后在公布S Jobs的消息，也是为了稳定股价以及新品发布吧，估计老Jobs已经早死了几日无人知而已。虽然老乔死了，他的生平肯定会被拿来炒作赚钱的，他的传记，语录，故事会相应出版，唉。我也相应的看了一些语录，我觉得有两个字印象深刻：梦想。我们有梦想吗？我相信是有的，小时候大人最爱问的就是，XX，你长大了想当什么呀？“我想当老师，专门</summary><published>2011-10-07T00:12:00Z</published><updated>2011-10-07T00:12:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2011/10/07/Steve_Jobs_was_dead.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2011/10/07/Steve_Jobs_was_dead.html"/><content type="html">&lt;p&gt;这几天铺天盖地的新闻都是Steve Jobs的死讯，我也是昨天早晨手机看新闻的时候惊闻，当时意识到Apple会不会因此而衰败。&lt;/p&gt;&lt;p&gt;新的IPhone5没有按期而至，仅仅是多了个4S，当然这个已经被炒到7000RMB向上，估计早批拿到真货的中国人肯定的破万了。&lt;/p&gt;&lt;p&gt;当然在4S发布之后在公布S Jobs的消息，也是为了稳定股价以及新品发布吧，估计老Jobs已经早死了几日无人知而已。&lt;/p&gt;&lt;p&gt;虽然老乔死了，他的生平肯定会被拿来炒作赚钱的，他的传记，语录，故事会相应出版，唉。&lt;/p&gt;&lt;p&gt;我也相应的看了一些语录，我觉得有两个字印象深刻：梦想。&lt;/p&gt;&lt;p&gt;我们有梦想吗？&lt;/p&gt;&lt;p&gt;我相信是有的，小时候大人最爱问的就是，XX，你长大了想当什么呀？&lt;/p&gt;&lt;p&gt;&amp;ldquo;我想当老师，专门教教书&amp;rdquo;&amp;ldquo;我想当警察，抓小偷&amp;rdquo;&amp;ldquo;我想当科学家，发明一种药水隐身&amp;rdquo;&amp;hellip;&amp;hellip;&lt;/p&gt;&lt;p&gt;可是现在呢？你是不是离你的梦想越来越远了呢？还是渐行渐远？还是梦想统一变成了：房子！&lt;/p&gt;&lt;p&gt;远了不可怕，还可以继续追回，但是没有梦想了，人也就没了光，跟草履虫有什么区别？&lt;/p&gt;&lt;p&gt;经常跟朋友一起吃喝，聊天，也会聊起梦想，无奈多被人嘲笑是在痴人说梦，往往打击别人的梦想来掩盖自己已经丢失梦想的窘境，或者说是种嫉妒。&lt;/p&gt;&lt;p&gt;从老乔光辉的一生就可以看出梦想创造了辉煌，他改变了世界，他实现了他的梦想。他的人生是完美的了，最后的落幕完美无瑕。&lt;/p&gt;&lt;p&gt;鲁迅先生早有先见之明：中国人失掉自信力了吗？这句话延伸一下：我们失掉创造力了吗？&lt;/p&gt;&lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/2200350.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2011/10/07/Steve_Jobs_was_dead.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2011/06/03/liang_dao_ti.html</id><title type="text">C解两道题</title><summary type="text">偷懒间做了两道题，供大家把玩吧。我的解法不见得最好，但是是可以work的。大家有解法可以贴到评论里，我们可以切磋下。1.If p is the perimeter of a right angle triangle with integral length sides, {a,b,c}, there are exactly three solutions for p = 120. click{20,48,52}, {24,45,51}, {30,40,50}For which value of p &lt;=1000, is the number of solutions maximised?</summary><published>2011-06-03T02:52:00Z</published><updated>2011-06-03T02:52:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2011/06/03/liang_dao_ti.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2011/06/03/liang_dao_ti.html"/><content type="html">&lt;p&gt;偷懒间做了两道题，供大家把玩吧。我的解法不见得最好，但是是可以work的。大家有解法可以贴到评论里，我们可以切磋下。&lt;/p&gt;&lt;div role="problem" class="problem_content"&gt;&lt;p&gt;&lt;strong&gt;1.If &lt;i&gt;p&lt;/i&gt; is the perimeter of a right angle triangle with integral length sides, {&lt;i&gt;a&lt;/i&gt;,&lt;i&gt;b&lt;/i&gt;,&lt;i&gt;c&lt;/i&gt;}, there are exactly three solutions for &lt;i&gt;p&lt;/i&gt; = 120. &lt;span style="text-decoration: underline;"&gt;&lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=39"&gt;click&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;{20,48,52}, {24,45,51}, {30,40,50}&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;For which value of &lt;i&gt;p&lt;/i&gt; &amp;lt;=1000, is the number of solutions maximised?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;翻译过来就是：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;如果p是这样一个数，满足三元组{a,b,c}之和是p，且a，b，c能组成直角三角形的三个边。当p=120的时候，且有三个解：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;{20,48,52}, {24,45,51}, {30,40,50}&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;那么在p&amp;lt;=1000以内，满足以上条件的解的个数最多的p是几？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;答案：&lt;span style="font-size: 24pt;"&gt;840.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14px;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;div onclick="cnblogs_code_show('2b688d57-f9fa-4f89-b432-5eb3bc5159e9')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" class="code_img_closed" id="code_img_closed_2b688d57-f9fa-4f89-b432-5eb3bc5159e9" /&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" onclick="cnblogs_code_hide('2b688d57-f9fa-4f89-b432-5eb3bc5159e9',event)" class="code_img_opened" id="code_img_opened_2b688d57-f9fa-4f89-b432-5eb3bc5159e9" style="display: none;" /&gt;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_2b688d57-f9fa-4f89-b432-5eb3bc5159e9"&gt;&lt;div&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; a1[&lt;/span&gt;&lt;span style="color: #800080;"&gt;3000&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;{};&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; a&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;a&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1000&lt;/span&gt;&lt;span style="color: #000000;"&gt;;a&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; b&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;a;b&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1000&lt;/span&gt;&lt;span style="color: #000000;"&gt;;b&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; c&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;b;c&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800080;"&gt;1000&lt;/span&gt;&lt;span style="color: #000000;"&gt;;c&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(((a&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;a)&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;(b&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;b)&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #000000;"&gt;(c&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #000000;"&gt;c))&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;amp;&amp;amp;&lt;/span&gt;&lt;span style="color: #000000;"&gt;((a&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;b&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;c)&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;1000&lt;/span&gt;&lt;span style="color: #000000;"&gt;))&lt;br /&gt;                    a1[a&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;b&lt;/span&gt;&lt;span style="color: #000000;"&gt;+&lt;/span&gt;&lt;span style="color: #000000;"&gt;c]&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;int&lt;/span&gt;&lt;span style="color: #000000;"&gt; i&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800080;"&gt;3000&lt;/span&gt;&lt;span style="color: #000000;"&gt;;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(a1[i]&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;            cout&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;:&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;a1[i]&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;endl;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;2.A permutation is an ordered arrangement of objects. For example, 3124 is one possible permutation of the digits 1, 2, 3 and 4. If all of the permutations are listed numerically or alphabetically, we call it lexicographic order. The lexicographic permutations of 0, 1 and 2 are:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;012 021 102 120 201 210&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;What is the millionth lexicographic permutation of the digits 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9? &lt;a href="http://projecteuler.net/index.php?section=problems&amp;amp;id=24"&gt;click&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;翻译：&lt;strong&gt;A permutation is an ordered arrangement of objects。（这句我真翻译不好，大意就是排列的定义）比如，3124是数字1，2，3，4的一种可能排列。如果把所有的排列按照数字或者字母列出来，我们称为字典顺序。数字0，1，2的字典排序为：&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;012 021 102 120 201 210&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;那么数字0，1，2，3，4，5，6，7，8，9的字典排序的第1000000（100万&lt;/strong&gt;&lt;strong&gt;）个排列数字是几？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&amp;nbsp;答案：&lt;b&gt;&lt;span style="font-size: 24pt;"&gt;2783915460&lt;/span&gt;（貌似这个可以用笔算出来，我稍后再给出计算方法，或者哪位大大给算算。）&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14px;"&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div onclick="cnblogs_code_show('ef41ac2d-c6df-4ff6-b28c-2cb297b97eb8')" style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif" class="code_img_closed" id="code_img_closed_ef41ac2d-c6df-4ff6-b28c-2cb297b97eb8" /&gt;&lt;img src="http://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif" onclick="cnblogs_code_hide('ef41ac2d-c6df-4ff6-b28c-2cb297b97eb8',event)" class="code_img_opened" id="code_img_opened_ef41ac2d-c6df-4ff6-b28c-2cb297b97eb8" style="display: none;" /&gt;&lt;div class="cnblogs_code_hide" id="cnblogs_code_open_ef41ac2d-c6df-4ff6-b28c-2cb297b97eb8"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;__int64 m1&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;123456789&lt;/span&gt;&lt;span style="color: #000000;"&gt;,m2&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;9876543210&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;    __int64 count&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;    &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(m1&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;123456789&lt;/span&gt;&lt;span style="color: #000000;"&gt;;m1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;m2;m1&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;    {&lt;br /&gt;        __int64 i&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;m1;&lt;br /&gt;        __int64 a[&lt;/span&gt;&lt;span style="color: #800080;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;]&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;{};&lt;br /&gt;        __int64 len&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;while&lt;/span&gt;&lt;span style="color: #000000;"&gt;(i&lt;/span&gt;&lt;span style="color: #000000;"&gt;!=&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;        {&lt;br /&gt;            __int64 d&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;%&lt;/span&gt;&lt;span style="color: #800080;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            a[d]&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            i&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;i&lt;/span&gt;&lt;span style="color: #000000;"&gt;/&lt;/span&gt;&lt;span style="color: #800080;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            len&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;bool&lt;/span&gt;&lt;span style="color: #000000;"&gt; flag&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;true&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;for&lt;/span&gt;&lt;span style="color: #000000;"&gt;(__int64 k&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;len&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800080;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;?&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;:&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;;k&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800080;"&gt;10&lt;/span&gt;&lt;span style="color: #000000;"&gt;;k&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;        {&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(a[k]&lt;/span&gt;&lt;span style="color: #000000;"&gt;==&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;            {&lt;br /&gt;                flag&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;false&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(flag)&lt;br /&gt;        {&lt;br /&gt;            count&lt;/span&gt;&lt;span style="color: #000000;"&gt;++&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;if&lt;/span&gt;&lt;span style="color: #000000;"&gt;(count&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;1000000&lt;/span&gt;&lt;span style="color: #000000;"&gt;)&lt;br /&gt;            {&lt;br /&gt;                cout&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;count&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #800000;"&gt;::&lt;/span&gt;&lt;span style="color: #800000;"&gt;"&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;m1&lt;/span&gt;&lt;span style="color: #000000;"&gt;&amp;lt;&amp;lt;&lt;/span&gt;&lt;span style="color: #000000;"&gt;endl;&lt;br /&gt;            }&lt;br /&gt;            &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;else&lt;/span&gt;&lt;span style="color: #000000;"&gt;&lt;br /&gt;                &lt;/span&gt;&lt;span style="color: #0000ff;"&gt;break&lt;/span&gt;&lt;span style="color: #000000;"&gt;;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;    }&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;附上笔算解法：&lt;/p&gt;&lt;div style="background-color: #F5F5F5;border: 1px solid #CCCCCC;padding:10px;"&gt;&lt;div&gt;&lt;span style="color: #000000;"&gt;设最终的数字为X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;？？？？？？？？？？&lt;br /&gt;假设0&lt;/span&gt;&lt;span style="color: #000000;"&gt;~&lt;/span&gt;&lt;span style="color: #000000;"&gt;9这10个数字排队，排了10对，每队的排头分别是0&lt;/span&gt;&lt;span style="color: #000000;"&gt;~&lt;/span&gt;&lt;span style="color: #800080;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;，队伍是从小向大的方向站队。&lt;br /&gt;因为确定排头后，每队剩下的9个数字全排列就是9！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;3628880&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;br /&gt;每队都有9！个数字，那么第1000000个应该是在2开头的队里，从来确定X的首位数字是2？？？？？？？？？.&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #800080;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;！&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;1088640&lt;/span&gt;&lt;span style="color: #000000;"&gt;.那么X应该距离2队的队尾1088640&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;100000&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;88640&lt;/span&gt;&lt;span style="color: #000000;"&gt;.也就是说X在2队距离队尾88640个的位置之后。&lt;br /&gt;剩下的9个数字9，&lt;/span&gt;&lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;7&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;，0继续站队。继续按照上面的方式排队，确定排头，那么每队的人数是8！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;40320&lt;/span&gt;&lt;span style="color: #000000;"&gt;.那么从后向前数的话，X应该在队伍7里第88640&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;40320&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #800080;"&gt;2&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;8000个位置之后。&lt;br /&gt;好了，X的第2个数字也确定了，X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;27&lt;/span&gt;&lt;span style="color: #000000;"&gt;？？？？？？？？。&lt;br /&gt;继续，&lt;/span&gt;&lt;span style="color: #800080;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;8&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;，0继续站队。同样的确定排头，每队是7！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;5040个。那么X在队伍8里第8000&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;5040&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;2960的位置之后。所以，X的第3位数字定了，X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;278&lt;/span&gt;&lt;span style="color: #000000;"&gt;？？？？？？？&lt;br /&gt;继续，&lt;/span&gt;&lt;span style="color: #800080;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;，0排队，每队是6！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;720&lt;/span&gt;&lt;span style="color: #000000;"&gt;，同样，X在队伍3里第2960&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;720&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;80的位置之后。X的第4个数字确定，X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;2783&lt;/span&gt;&lt;span style="color: #000000;"&gt;？？？？？？&lt;br /&gt;继续，&lt;/span&gt;&lt;span style="color: #800080;"&gt;9&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;，0排队，每队是5！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;120个数字，那么毫无疑问，X在队伍9里第80&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;120&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;80的位置之后。X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;27839&lt;/span&gt;&lt;span style="color: #000000;"&gt;？？？？？&lt;br /&gt;继续，&lt;/span&gt;&lt;span style="color: #800080;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;，0排队，每队是4！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;24个数字，X在队伍队伍1里第80&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;24&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #800080;"&gt;3&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;8之后。X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;278391&lt;/span&gt;&lt;span style="color: #000000;"&gt;？？？？&lt;br /&gt;还剩6，&lt;/span&gt;&lt;span style="color: #800080;"&gt;5&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;，每队是3！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;6个 数字，那么X在队伍5里第8&lt;/span&gt;&lt;span style="color: #000000;"&gt;-&lt;/span&gt;&lt;span style="color: #800080;"&gt;6&lt;/span&gt;&lt;span style="color: #000000;"&gt;*&lt;/span&gt;&lt;span style="color: #800080;"&gt;1&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;2之后。X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;2783915&lt;/span&gt;&lt;span style="color: #000000;"&gt;？？？&lt;br /&gt;剩下6，&lt;/span&gt;&lt;span style="color: #800080;"&gt;4&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;0&lt;/span&gt;&lt;span style="color: #000000;"&gt;，排队是2！&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #000000;"&gt;2个数字。所以X在6队之后第一个，4队里的第一个。这时候的全排列为：&lt;/span&gt;&lt;span style="color: #800080;"&gt;640&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;604&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;460&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;406&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;064&lt;/span&gt;&lt;span style="color: #000000;"&gt;，&lt;/span&gt;&lt;span style="color: #800080;"&gt;046&lt;/span&gt;&lt;span style="color: #000000;"&gt;.&lt;br /&gt;所以最后X&lt;/span&gt;&lt;span style="color: #000000;"&gt;=&lt;/span&gt;&lt;span style="color: #800080;"&gt;2783915460&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/2070620.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2011/06/03/liang_dao_ti.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2011/02/22/using_and_dispose_resource.html</id><title type="text">using和回收资源</title><summary type="text">在之前我看的写出优雅简明代码的论题集 -- Csharp(C#)篇[1]后续的评论中，看到了这么个结论：“这点是却实，using如果出现异常不回收资源，使用using特别要注意这个问题”其实上面的群论很清晰，using会展成一个try-finally，会在finally里显示调用object的Dispose()方法。在这我想问的是：你既然都知道会展成什么，他凭什么就不会回收资源呢？难道不知道没有实现IDisposable的事不能using的吗？先从msdn上捞了一段IDisposable的模板，改了改代码，原来的太复杂，为了凸出重点，我酌情给了删减：using System;public cl</summary><published>2011-02-22T11:14:00Z</published><updated>2011-02-22T11:14:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2011/02/22/using_and_dispose_resource.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2011/02/22/using_and_dispose_resource.html"/><content type="html">&lt;p&gt;在之前我看的&lt;a href="http://www.cnblogs.com/multiplesoftware/archive/2011/02/12/1951793.html"&gt;写出优雅简明代码的论题集 -- Csharp(C#)篇[1]&lt;/a&gt;后续的评论中，看到了这么个结论：&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span size="5" color="#f79646" style="color: #f79646; font-size: large;"&gt;&amp;ldquo;这点是却实，using如果出现异常不回收资源，使用using特别要注意这个问题&amp;rdquo;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;其实上面的群论很清晰，using会展成一个try-finally，会在finally里显示调用object的Dispose()方法。&lt;/p&gt;&lt;p&gt;在这我想问的是：你既然都知道会展成什么，他凭什么就不会回收资源呢？难道不知道没有实现IDisposable的事不能using的吗？&lt;/p&gt;&lt;p&gt;先从msdn上捞了一段IDisposable的模板，改了改代码，原来的太复杂，为了凸出重点，我酌情给了删减：&lt;/p&gt;&lt;table width="540" cellpadding="2" cellspacing="0" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="538" valign="top"&gt;&lt;p&gt;using System;&lt;/p&gt;&lt;p&gt;public class DisposeExample&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class MyResource : IDisposable&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private bool disposed = false;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // The class constructor.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public MyResource(){}&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void ThrowException()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new Exception("Expected exception.");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispose(true);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GC.SuppressFinalize(this);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected virtual void Dispose(bool disposing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Dispose.");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Check to see if Dispose has already been called.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (!this.disposed)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (disposing)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //WILL DIPOSE RESOURE HERE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; disposed = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~MyResource()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dispose(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static void Main()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (MyResource my = new MyResource())&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my.ThrowException();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;这个代码不难读懂吧，在Main里，new了一个对象，让后再using里，call ThrowException()显式的抛出异常，关键是Dispose()方法会不会被调用呢？就是控制台能否打印出Dispose呢？&lt;/p&gt;&lt;p&gt;答案是肯定的。&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;结论：实现IDisposable接口是为了&lt;strong&gt;显式的&lt;/strong&gt;（因为Finalize()不能显式的来call）&lt;strong&gt;确定的&lt;/strong&gt;（Finalize()调用的不确定性）释放资源。将释放资源的操作放在Dispose()方法里完成，并且通过using来确保调用。至于dctor里Dispose（false）是因为我们不想让GC来释放资源，并且在Dispose()方法调用之后，不让GC去调用Finalize()（GC.SuppressFinalize(this);）。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;PLUS：如果在new 对象的过程中发生了异常，则Dispose()方法是无法调用的。可以在ctor里调用ThrowException()试一下。&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/1961608.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2011/02/22/using_and_dispose_resource.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2011/01/04/There-are-so-many-options-of-OS-on-HD2.html</id><title type="text">There are so many options of OS on HD2</title><summary type="text">The HD2 Android NAND method is finally published. As soon as I can I download the release and try it.Do exactly same as this post said http://forum.xda-developers.com/showthread.php?t=893948After installed android on my HD2 rom, I feel there is no obvious different between SD card method and NAND me</summary><published>2011-01-04T02:34:00Z</published><updated>2011-01-04T02:34:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2011/01/04/There-are-so-many-options-of-OS-on-HD2.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2011/01/04/There-are-so-many-options-of-OS-on-HD2.html"/><content type="html">&lt;p&gt;The HD2 Android NAND&amp;nbsp; method is finally published. &lt;/p&gt;&lt;p&gt;As soon as I can I download the release and try it.&lt;/p&gt;&lt;p&gt;Do exactly same as this post said &lt;a title="http://forum.xda-developers.com/showthread.php?t=893948" href="http://forum.xda-developers.com/showthread.php?t=893948"&gt;http://forum.xda-developers.com/showthread.php?t=893948&lt;/a&gt;&lt;/p&gt;&lt;p&gt;After installed android on my HD2 rom, I feel there is no obvious different between SD card method and NAND method. &lt;/p&gt;&lt;p&gt;The touching response speed is nearly close. And the most important improvement is save more battery. Great job form DFT.&lt;/p&gt;&lt;p&gt;Bad thing is there are 100MB space left after installation, so I can&amp;rsquo;t install other more 3rd applications.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Also I downloaded the Ubuntu for HD2 and re-flush WM 6.5 on my HD2, and boot Ubuntu from SD card.&lt;/p&gt;&lt;p&gt;The Ubuntu works fine ,but there&amp;nbsp; are still need lots of upgrade for real use. The icon is too small to touch, I miss-touch always.&lt;/p&gt;&lt;p&gt;Download &lt;a title="http://forum.xda-developers.com/showthread.php?t=889433" href="http://forum.xda-developers.com/showthread.php?t=889433"&gt;http://forum.xda-developers.com/showthread.php?t=889433&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;WM, Android, Ubuntu, three options for HD2. &lt;/p&gt;&lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/1925222.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2011/01/04/There-are-so-many-options-of-OS-on-HD2.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2010/12/29/DoubleStackQueue_and_DoubleQueueStack.html</id><title type="text">两个由栈组成的队列和两个由队列组成的栈</title><summary type="text">今天看《算法导论》看到两个如题的两个习题，遂做之。没有做参数检查以及异常处理，线程安全等。class DoubleStackQueue { private System.Collections.Stack stackA, stackB; public DoubleStackQueue() { stackA = new System.Collections.Stack(); stackB = new System.Collections.Stack(); } public void Enqueue(object obj) { stackA.Push(obj); } public object D</summary><published>2010-12-29T07:05:00Z</published><updated>2010-12-29T07:05:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/29/DoubleStackQueue_and_DoubleQueueStack.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/29/DoubleStackQueue_and_DoubleQueueStack.html"/><content type="html">&lt;p&gt;今天看《算法导论》看到两个如题的两个习题，遂做之。没有做参数检查以及异常处理，线程安全等。&lt;/p&gt;&lt;p&gt;class DoubleStackQueue&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.Collections.Stack stackA, stackB;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DoubleStackQueue()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stackA = new System.Collections.Stack();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stackB = new System.Collections.Stack();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Enqueue(object obj)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stackA.Push(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Dequeue()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (stackA.Count != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; stackB.Push(stackA.Pop());&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return stackB.Pop();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&lt;br /&gt;class DoubleQueueStack&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.Collections.Queue queueA, queueB;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DoubleQueueStack()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueA = new System.Collections.Queue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueB = new System.Collections.Queue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Push(object obj)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (queueA.Count != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueB.Enqueue(queueA.Dequeue());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueA.Enqueue(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (queueB.Count != 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueA.Enqueue(queueB.Dequeue());&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Pop()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return queueA.Dequeue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;改进的：DoubleQueueStack&lt;/p&gt;&lt;p&gt;class DoubleQueueStack&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private System.Collections.Queue queueA, queueB;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public DoubleQueueStack()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueA = new System.Collections.Queue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueB = new System.Collections.Queue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Push(object obj)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (queueA.Count == 0 &amp;amp;&amp;amp; queueB.Count == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueA.Enqueue(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (queueA.Count == 0) queueB.Enqueue(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else queueA.Enqueue(obj);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public object Pop()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (queueA.Count == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (queueB.Count != 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueA.Enqueue(queueB.Dequeue());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return queueB.Dequeue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if (queueB.Count == 0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (queueA.Count != 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; queueB.Enqueue(queueA.Dequeue());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return queueA.Dequeue();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/p&gt;&lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/1920699.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/29/DoubleStackQueue_and_DoubleQueueStack.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2010/12/23/My-husband-is-a-programmer-I-have-no-idea-what-that-means.html</id><title type="text">My husband is a programmer; I have no idea what that means.</title><summary type="text">Let us see how lucky this guy is.Best wishes to them.===================================================================================I met my husband 11 years ago. I was carrying my guitar into my dorm room on freshman move-in day at the University of Southern Maine. I saw him eyeing my guitar wi</summary><published>2010-12-23T09:35:00Z</published><updated>2010-12-23T09:35:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/23/My-husband-is-a-programmer-I-have-no-idea-what-that-means.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/23/My-husband-is-a-programmer-I-have-no-idea-what-that-means.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Let us see how lucky this guy is.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Best wishes to them.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;===================================================================================&lt;/p&gt;&lt;p&gt;I met my husband 11 years ago. I was carrying my guitar into my dorm room on freshman move-in day at the University of Southern Maine. I saw him eyeing my guitar with great interest. When he knocked on my door and introduced himself, he said, &amp;ldquo;Hey! I&amp;rsquo;m Adam. I live across the hall. I&amp;rsquo;m a computer geek!&amp;rdquo;&lt;/p&gt;&lt;p&gt;It was a bold move on his part. Being a computer geek ten years ago wasn&amp;rsquo;t exactly &amp;ldquo;hot&amp;rdquo; and he was either socially ignorant to this fact, or he just didn&amp;rsquo;t care. Regardless, I was in love. I wasn&amp;rsquo;t even a computer geek myself at the time, but I was smitten with his forwardness and his apparent lack of concern about his own geekery. Finding out that he also played guitar sealed the deal. Fate would have it that he lived directly across the hall from me.&lt;/p&gt;&lt;p&gt;In the following weeks, months and years, he was able to hold my attention as he ranted about hardware specs for his gaming machines, his god-like status in Unreal Tournament matches, his ColdFusion senior project application, and his long explanations on programming theory. I sat and watched in amazement as he built and tore down PCs. I listened to him talk through programming problems and watched him build websites. All the while I was planning some vague career with political science and english, but I was nonetheless interested in Adam&amp;rsquo;s life.&lt;/p&gt;&lt;p&gt;It was no accident that years later I knew that &amp;ldquo;Ruby&amp;rdquo; wasn&amp;rsquo;t just July&amp;rsquo;s birthstone and that &amp;ldquo;Ruby on Rails&amp;rdquo; wasn&amp;rsquo;t a rebellious act of sacrificing precious gems on railroad tracks in hipster neighborhoods. I spent years actually being engaged in his interests. And when he fell in love with Ruby in late 2005, I was supporting him all the way and knew exactly why Ruby was incredible. Several years later, when I decided to learn Ruby, I came out with a post on my blog about the &lt;a href="http://www.renaebair.com/2008/11/24/the-ranting-rubyists/" target="_blank"&gt;Ruby community&lt;/a&gt;. A lot of people were confused as to how a Ruby newb could already understand the Ruby community so well. Truth was, I had been following the community for quite some time before I ever decided to learn to program in Ruby. I knew all the big names, the trends, and the history before I ever opened up TextMate and saved a .rb file.&lt;/p&gt;&lt;p&gt;Do you get that glazed, faraway look in your eye when you partner starts talking about a programming problem, or the newest testing framework? There&amp;rsquo;s no need to be bored. Ask questions, try to understand! When I meet women today, I don&amp;rsquo;t avoid talking about the work that I do, my love for pc gaming, or my fascination with D&amp;amp;D and other such geekery. Often I&amp;rsquo;ll get a response along these lines: &amp;ldquo;Programming? My husband does something like that I think.&amp;rdquo; To which I always inquire, &amp;ldquo;Oh really? What language does he work with?&amp;rdquo; Their response is always the same: &amp;ldquo;Language? huh. I have no idea. There&amp;rsquo;s more than one? I don&amp;rsquo;t really know what he does. I don&amp;rsquo;t pay attention to that stuff.&amp;rdquo;&lt;/p&gt;&lt;p&gt;This always blows my mind. You&amp;rsquo;re married to someone, and you aren&amp;rsquo;t interested enough in the person to know anything about what they do with nearly 40-50% of their time, aside from their job title? Is it dangerous to draw a correlation between high divorce rates and the lack of interest that people have in their partners lives? It&amp;rsquo;s easy to fall in love with the &amp;ldquo;idea&amp;rdquo; of a person when you first meet them. But I think it would be hard to endure a lifetime of ups and downs, trials and tribulations and the everyday challenges that life throws at two people, if those partners didn&amp;rsquo;t have a truly vested interest in each other&amp;rsquo;s passions and life&amp;rsquo;s work. And if you don&amp;rsquo;t have even a basic understanding of what your spouse does with 40+hours of his/her week, then you&amp;rsquo;re not on a team.&lt;/p&gt;&lt;p&gt;I&amp;rsquo;m not suggesting that you give up your own individuality and personal interests when you meet someone special. But open your mind enough to experience the world through your partner&amp;rsquo;s eyes. I admit there were occasions when Adam would be on his third diatribe of the evening on meta-programming, and my mind would start to wander. But I was generally engaged in his interests. And why wouldn&amp;rsquo;t I be? Falling in love involves getting to know a person. And getting to know a person usually involves talking about and understanding each other&amp;rsquo;s personal interests. Adam certainly had to endure hundreds of hours listening to Ani Difranco, Dar Williams, and Iron &amp;amp; Wine albums, along with my absurdly psychotic analysis of all of the lyrics. He learned to play tennis at my prompting, although I have to swallow losing nearly every game to him now. He watched my ballet performances in college, and even knew how to pronounce a few of the positions. Below is a photo of Adam and I embarking on a hike up Tumbledown Mountain. It captures Adam&amp;rsquo;s willingness to step away from the computer for a day and partake in my interest in the outdoors. He was a trooper.&lt;/p&gt;&lt;div class="wp-caption aligncenter" style="width: 460px;"&gt;&lt;a href="http://farm3.static.flickr.com/2584/3751216922_e84ddc0699.jpg"&gt;&lt;img class=" " title="Tumbledown" src="http://farm3.static.flickr.com/2584/3751216922_e84ddc0699.jpg" alt="hiking up Tumbledown Mountain in Maine" width="450" height="296" /&gt;&lt;/a&gt;&lt;p class="wp-caption-text"&gt;hiking up Tumbledown Mountain in Maine&lt;/p&gt;&lt;/div&gt;&lt;p&gt;It should not be hard to be engaged in your partner&amp;rsquo;s interests. If it is that hard, you might want consider the possibility that you might be full of yourself. Even amongst my friends, I make a concerted effort to listen and understand their individual interests and passions. I always learn something new, and sometimes I get to discover a new passion for myself.&lt;/p&gt;&lt;p&gt;Professionally, I wouldn&amp;rsquo;t be where I am today, if I had daydreamed my way through Adam&amp;rsquo;s geek rants. Our relationship resulted in thousands of hours of video gaming, late-night programming tutorials, brainstorming sessions for new apps, some camping trips and lots of folk music. Even if you don&amp;rsquo;t follow a similar career path as your spouse, being interested in their work and their hobbies can open up other doors for you. It broadens your world view and helps you to suck less as a human being. It&amp;rsquo;s about being part of a team that works together. I don&amp;rsquo;t professionally program like Adam; I&amp;rsquo;m not built that way. I understand programming, but unfortunately I wasn&amp;rsquo;t given Legos to play with as a child, math skills were never encouraged in school or at home, and the engineering/problem-solving side was never nurtured. So, while I enjoy programming, it comes a lot harder to me than it does for others. But writing is a strength, and programming and technology is a huge interest of mine - so scoring a gig as &lt;a href="http://intridea.com" target="_blank"&gt;Intridea&amp;rsquo;s&lt;/a&gt; Community Manager really rocked my world. I keep my eye into the world that I love, my finger on the pulse of it, and the work that results is always rewarding and fun.&lt;/p&gt;&lt;p&gt;So if you&amp;rsquo;re with someone new, find a way to be interested in the the things they like to talk about. And if you&amp;rsquo;re with someone old, rediscover the love of your life by asking about their work and listening to their response. Don&amp;rsquo;t feign interest. And please, don&amp;rsquo;t be one of those girls that doesn&amp;rsquo;t know what language her husband programs in. Be the cool wife that surprises her husband&amp;rsquo;s dorky friends when she knows Java is, and can engage in a short discussion on the&amp;nbsp;evangelicalism&amp;nbsp;of the Ruby community without asking, &amp;ldquo;Honey, I didn&amp;rsquo;t know you were a jeweler!&amp;rdquo;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;=========================================================================&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&lt;strong&gt;我在11年前认识了的我丈夫。当时是南缅因州大学新生入校的日子，我带着吉他去宿舍。他饶有兴趣的盯着我的吉他。之后他敲响了我的房门，自我介绍道：&amp;ldquo;嗨，我叫Adam，我就住在走廊的对面。我是个计算机程序员！&amp;rdquo;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: 14pt;"&gt;他做了一很勇敢的决定。 10年前当程序员并不像今天这么&amp;ldquo;火&amp;rdquo;，这个行业并不被社会重视，他似乎也根本不在意这些。不管怎样，我们相爱了。我当时并不懂编程，但却被他那义无反顾 的精神和毫不在意被人当作怪人的态度打动。是发现了他也弹吉他使我们走到了一起。如果仅是他住在走廊我的对面，命运也不会做出这样的安排。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;在随后的一周周，一月月，一年年，他慢慢的吸引了我的注意力，他会对着他的游戏机的硬件清单大发雷霆，他能在虚拟世界里的游戏竞赛中为我独尊，他在ColdFusion平台上制作了他的毕业论文项目，他会用长篇大论来解释他的编程理论。我会安静的坐着，惊奇的看他把一台PC机拆成零碎。我听他讲编程上的问题，看他开发网站。与此同时，我还只是朦胧的感觉到我未来的职业应该是跟科技和英语有关，但我着实对Adam的生活发生了兴趣。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;几年以后，我很自然的就知道了，&amp;ldquo;Ruby&amp;rdquo;并不是指的七月的生日石，而&amp;ldquo;Ruby on Rails&amp;rdquo;也不是邻区的新潮人在火车轨道上举行的敬拜珍贵宝石的奇怪活动。几年时间里，我事实上也培养出了他的同样的兴趣。2005年末他深深的喜欢上了Ruby，我全力支持他，而且也知道Ruby的不可思议之处。几年后，当我决定了开始学习Ruby，我在博客上写了一篇关于Ruby社区的文章。很多人都很奇怪为什么一个像我这样的Ruby新手会对Ruby社区有如此的了解。答案是，我在决定学习Ruby编程之前已经关注这个社区很久了。在我曾经打开TextMate编辑器、保存第一个.rb文件之前，我就知道了这个社区里有那些大人物，Ruby的发展趋势，和历史事件。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;当你的伴侣开始跟你讲编程的问题时，或讲最新的测试框架时，你的眼神里是否显露出一种呆滞和恍惚？事情并不是你想象的单调乏味。问他问题，尝试着去理解！如今当我遇到女人们时，我并不回避给她们谈我的工作，谈我喜欢的电脑游戏，谈我着迷于 D&amp;amp;D 游戏以及其它这样的荒诞事情。通常我得到的回复是这样的几句：&amp;ldquo;编程？我想我丈夫做的好像也是这方面的。&amp;rdquo;对于此，我总是问道：&amp;ldquo;哦，真的吗？他用的是什么编程语言？&amp;rdquo;她们的回答每次都一样：&amp;rdquo;语言？哼，我可不知道。不止一种吗？我并不真正知道他在干什么。我对这些东西没兴趣。&amp;ldquo;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;这每次都让我感慨万分。你嫁给了一个人，可是你对这个人花去将近40-50%的时间去做的事情一无所知&amp;mdash;&amp;mdash;除了工作名称。我们是否可以把今天的高离婚率和他们对配偶的生活缺乏兴趣之间画一条危险的关联线呢？当两个人第一次相遇时，一个人很容易根据自己的&amp;rdquo;看法&amp;ldquo;而坠入爱河。但我认为如果配偶不能够对对方的爱好和生活工作有真正的了解，那么这两个人将很难经受的住生命的各种起起伏伏，艰难和考验，要知道，生活中每天都有挑战。如果你对配偶的每周40小时的工作内容没有一个基本的理解，你们就不能成为一体。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;我并不是在建议当你遇到钟情的对象时要放弃自己个性和个人兴趣。而是要你睁大眼睛，用你的伴侣的视野去体验这个世界。我承认，有时Adam会在某天晚上对元数据编程谩骂个没完没了，此时我也就跟他的思想走不到一起了。但通常情况下我会投入到他的兴趣当中。而且为什么不呢？我爱他，这就要求我去了解他。而了解一个人就是要你们去相互讨论和理解对方的兴趣。 Adam会花数百小时艰难的听&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;Ani Difranco， Dar Williams， 和 Iron &amp;amp; Wine 唱片，我会在一旁神经质的给他解释所有的歌词。在我的鼓励下他学会了打网球，尽管现在不得不忍受每次被他打败的结果。在大学里他看过我的芭蕾舞表演，他甚至都知道了不少其中的姿势的叫法了。下面的照片是我和Adam在徒步翻越缅因州Tumbledown山时拍的。它见证了Adam自愿从计算机旁走开，参加到我喜欢的户外运动中的事情。他很顽强。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;参与到你的伴侣的兴趣中并不是一件难事。如果你觉得很难，那你也许要思考一下自己是不是太自我了。即使朋友之间，我也努力的聆听和理解他们的兴趣和爱好。我经常会听到一些新奇的东西，经常我会为自己找到了一些新爱好。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;就我来说，如果当Adam在奇怪的跟计算机大喊大叫时，我只是发呆，那我就不会有今天的生活。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;那是无数的小时的一起玩视频游戏，一起深夜编写手册，一起为新应用做头脑风暴式的讨论，一起野营旅行，一起听乡村音乐才铸就了我们之间的关系。即使你跟你的伴侣在事业上并不是相似的道路，通过对他工作和喜好的了解，你也可以使他为你打开他的心扉。这能扩大你的视野，帮助你减少生活中的不愉快。你们应成为一起工作的一体。我并不是像Adam那样做职业编程的；我也没有向那方面发展。我懂编程，但不幸的是，自小就没人给我积木做训练，在学校和家里也从来没人鼓励我学数学。工程学和解决问题的才能从来就没有培养出来。所以，当我想对编程感兴趣时，这对我的难度看起来比其他人大。但我的强项是写作，编程方面和技术方面的题材对我是个巨大的兴趣&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;&amp;ndash; 所以，能得到Intridea社区管理员的工作让我的世界真正的兴奋起来。我关注着我喜爱的世界，我能感受到它的脉搏，我所做的一直给我带来回报，给我快乐。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size: 14pt;"&gt;所以，如果你和新朋友们在一起，想办法培养自己对他们爱说的事情的兴趣。如果你和老朋友在一起，通过询问他们的工作、倾听他们的回复来再次发掘你的生活爱好。不要假装爱好。不要做那种连她丈夫使用什么编程语言都不知的女孩子。你要做那种让你的丈夫的朋友吃惊于你还知道Java时什么的酷妻子，不做那种在讨论Ruby社区里的自由派时说出&amp;ldquo;亲爱的，我不知道你原来还是个珠宝商哪！&amp;rdquo;的妻子。&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;original:&lt;a href="http://www.renaebair.com/2010/08/11/my-husband-is-a-programmer-i-have-no-idea-what-that-means/"&gt;http://www.renaebair.com/2010/08/11/my-husband-is-a-programmer-i-have-no-idea-what-that-means/&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/1915143.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/23/My-husband-is-a-programmer-I-have-no-idea-what-that-means.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2010/12/22/Inside_WUA_Introduction.html</id><title type="text">Inside WUA---Introduction</title><summary type="text">Words before this article Abstract: about WUA What is WUA?How to use WUA?WUA API reference in MSDN End Words before this article I want to write series of articles about my current job. Short of time and energy , a little lazy, the idea is surround me last long. I finally make my decision today t</summary><published>2010-12-22T04:48:00Z</published><updated>2010-12-22T04:48:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/22/Inside_WUA_Introduction.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/22/Inside_WUA_Introduction.html"/><content type="html">&lt;p&gt;&lt;em&gt;Words before this article &lt;/em&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Abstract: about WUA&lt;/em&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;em&gt;What is WUA?&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;How to use WUA?&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;WUA API reference in MSDN&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;em&gt;End&lt;/em&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;Words before this article &lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;font style="background-color: rgb(0, 0, 255);"&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;I want to write series of articles about my current job. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;Short of time and energy , a little lazy, the idea is surround me last long.&lt;img class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://images.cnblogs.com/cnblogs_com/diggingdeeply/201012/201012221247381522.png" /&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;I finally make my decision today to finish this. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;Please hold on, guys. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font color="#0000ff"&gt;Here I coming soon.&lt;/font&gt;&lt;/p&gt; &lt;hr /&gt;  &lt;p&gt;&lt;strong&gt;About WUA &lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;What is WUA?&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Definition from MSDN: Windows Update Agent (WUA) automatically updates itself when it is connected to a Windows Server Update Services (WSUS) server or to Windows Update. WUA can also be manually updated by using a signed installation package that is available from Microsoft.&lt;img src="http://www.cnblogs.com/Emoticons/msn/lightbulb.gif"  alt="" /&gt;&lt;/font&gt; &lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;In one word, use WUA you can control the procedure of updates updating your machine.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;How to use WUA?&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;Because WUA is series of COM interface, so you can use it in many ways.&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt; &lt;ol&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;em&gt;In C#: you can call these functions directly via tlbImp. Or use class Type, such as Type.GetTypeFromProgID&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;em&gt;In PowerShell: New-Object &amp;#8211;ComObject ProgId&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;&lt;font size="3"&gt;&lt;em&gt;In C++, you can include &amp;lt;wuapi.dll&amp;gt;, use COM API, CoCreateIntance etc.&lt;/em&gt;&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;WUA API reference in MSDN&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt; &lt;p&gt;&lt;strong&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/aa387292(VS.85).aspx" href="http://msdn.microsoft.com/en-us/library/aa387292(VS.85).aspx"&gt;&lt;font size="3"&gt;http://msdn.microsoft.com/en-us/library/aa387292(VS.85).aspx&lt;/font&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt; &lt;p&gt; &lt;/p&gt;&lt;hr /&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;End&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I will read the design principle docs and source code to analyze WUA.&amp;nbsp; &lt;/p&gt;          &lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/1913735.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/22/Inside_WUA_Introduction.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2010/12/15/How_can_use_asm_directly_in_csharp.html</id><title type="text">C#里到底怎么样才能嵌入汇编?</title><summary type="text">这是一个老生常谈的问题，但是我昨天又遇到了。敝人不才，实在想象不出C#里怎么能在直接写汇编，直接操作寄存器，直接调用系统中断。。。。。。我回答：由于。net是虚拟了没有CPU的虚拟机，所以不能直接操作寄存器，所以也就不能直接nested汇编。我理解的嵌入就应该是C里的asm（C++里的_asm） 首先看看什么样才是嵌入，查了一下词典，是镶入，好了，不picky了，直接进入正题。 查了一下园子，有如下一些可参考的帖子： 《C#内嵌汇编代码的讨论》 《在.net程序中嵌入asm汇编代码》 《C#调用汇编dll （载）》 《一个C#内联汇编的类 》 诸如此类的，他们的方案大概分为两类: 1.将汇编写</summary><published>2010-12-15T04:52:00Z</published><updated>2010-12-15T04:52:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/15/How_can_use_asm_directly_in_csharp.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/15/How_can_use_asm_directly_in_csharp.html"/><content type="html">&lt;p&gt;这是一个老生常谈的问题，但是我昨天又遇到了。敝人不才，实在想象不出C#里怎么能在直接写汇编，直接操作寄存器，直接调用系统中断。。。。。。我回答：由于。net是虚拟了没有CPU的虚拟机，所以不能直接操作寄存器，所以也就不能直接nested汇编。我理解的&lt;strong&gt;嵌入&lt;/strong&gt;就应该是C里的asm（C++里的_asm）&lt;/p&gt; &lt;p&gt;首先看看什么样才是嵌入，查了一下词典，是镶入，好了，不picky了，直接进入正题。&lt;/p&gt; &lt;p&gt;查了一下园子，有如下一些可参考的帖子：&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.cnblogs.com/zxjay/archive/2010/06/22/1762808.html"&gt;《C#内嵌汇编代码的讨论》&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.cnblogs.com/zhongzf/archive/2010/03/23/1692481.html"&gt;《在.net程序中嵌入asm汇编代码》&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.cnblogs.com/tuyile006/archive/2006/12/06/583702.html"&gt;《C#调用汇编dll （载）》&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.cnblogs.com/scarroot/archive/2008/09/19/1293960.html"&gt;《一个C#内联汇编的类 》&lt;/a&gt;&lt;/p&gt; &lt;p&gt;诸如此类的，他们的方案大概分为两类:&lt;/p&gt; &lt;p&gt;1.将汇编写在native code的 dll里，然后通过DllImport来调用&lt;/p&gt; &lt;p&gt;2.利用DllImport Windows API，再将汇编码注入调用。&lt;/p&gt; &lt;p&gt;上面的方法看似不同，其实实质相同，都是托管代码对非托管的调用。而且这两种方法都不能叫做&lt;strong&gt;嵌入&lt;/strong&gt;，只能叫做&lt;strong&gt;调用&lt;/strong&gt;而已。第二种方法有些&amp;#8220;奇技淫巧&amp;#8221;的意味。而且两种方法有个巨大的弊端：均不能实现连调。还有离直接书写汇编相聚深远。&lt;/p&gt; &lt;p&gt;在上面的&lt;a href="http://www.cnblogs.com/zhongzf/archive/2010/03/23/1692481.html"&gt;《在.net程序中嵌入asm汇编代码》&lt;/a&gt; 文中的后面的评论中，敝人已经给这个问题发表了&lt;a href="http://www.cnblogs.com/zhongzf/archive/2010/03/23/1692481.html#1785533"&gt;评论&lt;/a&gt;。&lt;/p&gt; &lt;p&gt;可是不幸的是，大家没有看到，而且本人昨天还被人耻笑了一番。&lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-embarrassedsmile" alt="Embarrassed smile" src="http://images.cnblogs.com/cnblogs_com/diggingdeeply/201012/201012151252036035.png"&gt;遂有了此文&lt;/p&gt; &lt;p&gt;写个简单的：实现从一个数begin到end的累加，只是demo。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="703"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="701"&gt;新建一个C++的CLR类库&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="701"&gt; &lt;p&gt;&lt;font face="Batang"&gt;inline int SumASM(int begin, int end)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xor eax, eax&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //eax清零&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mov ecx, end&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //循环计数放入ecx，不解释&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;lable:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _asm&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmp ecx,begin&amp;nbsp;&amp;nbsp;&amp;nbsp; //查看ecx是否到达下限begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; jl exit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //如果小于begin则跳出&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; add eax,ecx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //开始累加&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loop lable&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //ecx循环，每次会自减1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;exit:;&lt;br&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="701"&gt;然后新建一个class，用作C++/CLI的wrapper&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="701"&gt;&lt;strong&gt;.h&lt;br&gt;&lt;/strong&gt; &lt;p&gt;using namespace System;&lt;/p&gt; &lt;p&gt;namespace CPPWrapper {&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public ref class Class1&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // TODO: Add your methods for this class here.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public: static int Sum(int begin,int end);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;br&gt;}&lt;/p&gt; &lt;p&gt;&lt;strong&gt;.cpp&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;int CPPWrapper::Class1::Sum(int begin, int end)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return SumASM(begin, end);&lt;br&gt;}&lt;/p&gt; &lt;p&gt;PS: &lt;font face="Batang"&gt;SumASM&lt;/font&gt; 如果放在同一个cpp里，要放在Sum方法的前面，这个也不解释。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="701"&gt;下面各建一个C++/CLI和C# 的Console application，用作caller。&lt;br&gt;记得同样得添加引用&lt;br&gt;&lt;br&gt;using namespace System;&lt;br&gt;using namespace CPPWrapper;&lt;br&gt;int main(array&amp;lt;System::String ^&amp;gt; ^args)&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp; int a=Class1::Sum(1,100);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br&gt;}&lt;br&gt;C#的我不写了。&lt;br&gt;用C++/CLI，这样就可以实现连调了。从托管代码到非托管调试。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;   &lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/1906593.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/15/How_can_use_asm_directly_in_csharp.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/diggingdeeply/archive/2010/12/07/Write_an_application_Output10Times.html</id><title type="text">Write an application Output10Times</title><summary type="text">Paper test in interview: Use below functions to finish a function that multiply one integer 10 times. Console.WriteLine() Console,ReadKey() String.Format() Int32.TryParse() To show result like: Please input an integer: good! Please input an integer: 6.4313 Please input an integer: 67 0 * 67 =01 * 6</summary><published>2010-12-07T08:20:00Z</published><updated>2010-12-07T08:20:00Z</updated><author><name>DiggingDeeply</name><uri>http://www.cnblogs.com/diggingdeeply/</uri></author><link rel="alternate" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/07/Write_an_application_Output10Times.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/07/Write_an_application_Output10Times.html"/><content type="html">&lt;p&gt;Paper test in interview:&lt;/p&gt; &lt;p&gt;Use below functions to finish a function that multiply one integer 10 times.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;em&gt;Console.WriteLine()&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Console,ReadKey()&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;String.Format()&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;em&gt;Int32.TryParse()&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;To show result like:&lt;/p&gt; &lt;p&gt;Please input an integer:&lt;/p&gt; &lt;p&gt;good!&lt;/p&gt; &lt;p&gt;Please input an integer:&lt;/p&gt; &lt;p&gt;6.4313&lt;/p&gt; &lt;p&gt;Please input an integer:&lt;/p&gt; &lt;p&gt;67&lt;/p&gt; &lt;p&gt;0 * 67 =0&lt;br&gt;1 * 67 =67&lt;br&gt;2 * 67 =134&lt;br&gt;3 * 67 =201&lt;br&gt;4 * 67 =268&lt;br&gt;5 * 67 =335&lt;br&gt;6 * 67 =402&lt;br&gt;7 * 67 =469&lt;br&gt;8 * 67 =536&lt;br&gt;9 * 67 =603&lt;/p&gt; &lt;p&gt;=================================================================================================&lt;/p&gt; &lt;p&gt;public void Output10Times()&lt;/p&gt; &lt;p&gt;{&lt;/p&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int n = 0;&lt;br&gt;BEGIN: &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("Please input an integer:");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (Int32.TryParse(Console.ReadLine(), out n))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for (int i = 0; i &amp;lt; 10; i++)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(String.Format("{0} * {1} ={2}", i, n, i * n));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; goto BEGIN;&lt;/p&gt; &lt;p&gt;}&lt;/p&gt; &lt;p&gt;&lt;a href="http://images.cnblogs.com/cnblogs_com/diggingdeeply/Windows-Live-Writer/Write-an-application-Output10Times_E326/New%20Bitmap%20Image_2.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="New Bitmap Image" border="0" alt="New Bitmap Image" src="http://images.cnblogs.com/cnblogs_com/diggingdeeply/Windows-Live-Writer/Write-an-application-Output10Times_E326/New%20Bitmap%20Image_thumb.jpg" width="671" height="333"&gt;&lt;/a&gt;&lt;/p&gt;  &lt;img src="http://www.cnblogs.com/diggingdeeply/aggbug/1899184.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/diggingdeeply/archive/2010/12/07/Write_an_application_Output10Times.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
