代码改变世界

适合C# Actor的消息执行方式(1):Erlang中的模式匹配

2009-07-09 00:18 by Jeffrey Zhao, 9607 阅读, 收藏, 编辑
摘要:Actor模型为并行而生。由于现在单台机器中独立的计算单元也越来越多,Actor模型的重要性也越来越大。Actor模型的理念是:天下万物皆为Actor,Actor之间通过发送消息进行通信。不同的Actor可以同时处理各自的消息,从而获得了大规模的并发能力。对于.NET平台下的开发人员来说,最常用的语言是C#。不过,无论您使用哪个Actor框架,在消息的执行阶段总是略显尴尬。本文的目的便是提出一种适合C# Actor的消息执行方式,而这种执行方式还会成为我以后公开的C#中“模式匹配”的基础。本文将分为三个部分,您目前正在阅读的第一部分,将会观察Erlang是如何执行消息的。有对比才会有差距,也正是由于Erlang在Actor模型上的示范作用,我们才会意识到C# Actor在使用上有多么的不方便。 阅读全文

关于网页*静态化*及SEO问题的一些补充

2009-07-06 00:08 by Jeffrey Zhao, 14263 阅读, 收藏, 编辑
摘要:前一篇讨论“静态页”的文章反响不错,不少朋友发表了自己的看法,也给老赵更多的想法。虽然也在前一篇文章后面回复了不少内容,但是就以往经验来看,总结为一篇新的文章会让我想表达的内容更为明确。对于“静态化”这一原本就非常容易让人混淆的概念来说更是如此。在这篇文章里,老赵也会谈谈自己对于SEO这个工作的看法——以及以前遇到过的一个SEO“专家”。欢迎围观。 阅读全文

谈*静态页*(或网页*静态化*)的时候,请区分一些概念

2009-07-05 01:37 by Jeffrey Zhao, 29275 阅读, 收藏, 编辑
摘要:“静态页”,在Web应用程序开发中是很常见的概念。只是我发现目前还是有相当部分的朋友,在这方面的存在一定的误区。不久前有朋友写了一篇题为《提供生成静态页核心代码》的文章,介绍了一种“向硬盘写入页面文件”的方式。这篇文章的内容在此并不多作讨论,只是它的摘要存在一个严重的问题,因为它混淆了两个概念。现在独立写一篇文章,也想把一些问题讲讲清楚,以后在讨论的时候也好有个准。 阅读全文

是什么造成了MVP的尴尬现状?我们该怎么办?

2009-07-02 01:49 by Jeffrey Zhao, 28197 阅读, 收藏, 编辑
摘要:MVP项目其实微软的“专家认证”活动之一,不过它并非根据培训或考试而来,而是根据个人在社区表现评选出来的内容。从这一方面来说,MVP应该是广受社区群众爱戴的群体。但是后来等我也评上MVP的时候,发现事实似乎并非如此。微软眼中的“社区英雄”,反而在社区中的评价越来越差。就2009年7月新当选的MVP来看,似乎绝大部分的声音都是“质疑”。我也在想,是什么造成了MVP的尴尬现状?我们又该怎么办?如果您有什么建议,能否说出来一起讨论一下? 阅读全文

龙芯一二事(转载)

2009-06-29 11:58 by Jeffrey Zhao, 23047 阅读, 收藏, 编辑
摘要:我不知道龙芯是否真是一个笑话。不过我也从一些在中科院计算所搞龙芯相关的朋友那里获得了一些信息(不是耳闻,而是一手信息)。这年头真假太难辨别,由于大伙儿对于例如gov或某些机构的某些做法的不满,导致即使是真的事情也变假了。龙芯从一开始其实就伴随着负面评价,从一开始的技术上的质疑,在技术上不知如何下手后,到政治方向上的反对等等。有时候我也不明白,对于一个错误的东西,使用错误的方式去反对它,这种做法是否正确。还是回到龙芯上吧,这次我转载的一些东西很显然是在做“解释”。可能某些朋友会说我五毛,但五毛就五毛吧。就当我只是把东西列举出来,大家一起判断。说实话,我也不知道究竟是正确不正确。在一个信息不对称的环境中,作为一个旁观者,我们究竟可以做出什么样的评价?说它好,理由何在?说它坏,难道也只是随口说说就可以了吗? 阅读全文

拯救C# 2.0,但是我们真做的到吗?

2009-06-27 18:55 by Jeffrey Zhao, 27657 阅读, 收藏, 编辑
摘要:似乎还有不少项目在用C# 2.0(本文最后我们来做一个调查),但是C# 2.0的生产力实在不如C# 3.0——如果您不信,那么一会儿就会意识到这一点。有朋友认为语言能力不重要,有了好用的框架/类库也可以有很高的生产力。所以这篇文章,我们就设法使用“类库”来弥补C# 2.0的缺陷。但是,我们真做的到吗? 阅读全文

天下无处不乒乓

2009-06-24 12:46 by Jeffrey Zhao, 20351 阅读, 收藏, 编辑
摘要:在消息传递(Message Passing)领域,PingPong是最常见的测试之一。它的功能简单的有些无聊,一个Ping Actor和一个Pong Actor之间互相传递消息,你Ping过来我Pong过去。也正因为如此简单,PingPong的目标仅仅是测试纯粹的消息传递机制的效率。也正因为如此,各Actor模型往往都将其作为展示自己功能的第一个示例。老赵从互联网上收集了一些最为常见的,不同语言/平台下Actor模型实现PingPong的示例,可作“观赏”之用。 阅读全文

编程小练习:拆分自然数

2009-06-21 17:54 by Jeffrey Zhao, 24915 阅读, 收藏, 编辑
摘要:上次的小练习的反响很不错,于是今天我们再来做一道小题目。上次有朋友指出,“反转数组”这种题目非常无聊,“写的再好,又会比框架自带的实现好吗?”。其实做这些小题目的作用是锻炼“编程解决问题”的能力,并非是为了替换框架的实现等等。咱们小学初中高中,不都会做数学题目,几何代数的吗?目的都是为了建立基本解题能力。现在的题目也是这样,请不要误会这些习题的目的。 阅读全文

贺计算机成*就业最困难专业*(转载)

2009-06-12 09:29 by Jeffrey Zhao, 25491 阅读, 收藏, 编辑
摘要:从99年开始的扩招,计算机专业是重灾区,全国各大高校,不管是工科的还是文科的,不管自身有没有足够的基础,只要买一批电脑,招几个老师就能开个计算机专业,没用几年,计算机专业成了规模最大的工科专业之一,可谓“计算机教育大跃进”,事实上,这些年来IT业在迅速扩张,对人才的需求一直是很旺盛的,在现在这个计算机无孔不入的信息时代,计算机专业本不应该成“最难就业专业”。 然而,这一现象居然在中国出现,说明了什么? 阅读全文

.NET中*延迟*特性的几个陷阱

2009-06-08 13:19 by Jeffrey Zhao, 25224 阅读, 收藏, 编辑
摘要:.NET发展至今,其实各处都有“延迟(Lazy)”的痕迹,一个小小的“Laziness”给我们带来了不少灵活性。“延迟”的关键就在于“只在需要的时候处理数据”,老赵曾经在多篇文章中提到了类似的概念,如《高阶函数、委托与匿名方法》及《您善于使用匿名函数吗?》。不过“延迟”本身也会给您带来一些陷阱,某些陷阱您很有可能也曾经遇到过。这篇文章便是总结了延迟特性的集中常见陷阱,并给出应对方案。 阅读全文

老赵谈IL(3):IL可以看到的东西,其实大都也可以用C#来发现

2009-06-06 00:04 by Jeffrey Zhao, 25914 阅读, 收藏, 编辑
摘要:IL的确比C#等高级语言来的所谓“底层”,但是很明显,IL本身也是一种高级抽象。而即使是机器码,它也可以说是基于CPU的抽象,CPU上如流水线,并行,内存模型,Cache Lock等东西对于汇编/机器码来说也可以说是一种“封装”。从不同层次可以获得不同信息,我们追求“底层”的目的肯定也不是“底层”这两个字,而是一种收获。了解自身需要什么,然后能够选择一个合理的层次进入,并得到更好的收益,这本身也是一种能力。追求IL的做法,本身并没有错,只是追求IL一定是当前情况下的最优选择吗?这是一个值得不断讨论的问题,我的这篇文章也只是表达了我个人对某些问题的看法。 阅读全文

自己动手生成评论RSS

2009-06-04 11:11 by Jeffrey Zhao, 25750 阅读, 收藏, 编辑
摘要:最近博客园讨论气氛热烈,有价值的评论也层出不穷。有时候我们会很希望订阅某篇文章的评论RSS,只可惜博客园目前没有这个功能。对于注册用户来说,我们可以通过点击评论框下方的“订阅回复”链接,这样就会在出现新评论的时候收到邮件。可惜匿名用户,只得不断刷新才能关注最近讨论到什么地方了。不过我们是什么人?我们是程序员,这点障碍对我们来说应该是在简单不过的小事了。自己搭一个站点,获取页面数据,分析HTML,输出为RSS,就这么简单。 阅读全文

老赵谈IL(2):CLR内部有太多太多IL看不到的东西,包括您平时必须了解的那些

2009-06-03 14:34 by Jeffrey Zhao, 29917 阅读, 收藏, 编辑
摘要:CLR作为承载IL的平台,就像一个溺爱孩子的父母,操办了孩子生活所需要的一切。这个孩子一嚷嚷“我要吃苹果”,则父母就会拿过来一个苹果。您咋看这个孩子,都还是无法了解父母是如何获得苹果的(new一个Apple对象),怎么为孩子收拾残局的(GC)。虽然这些经常是所谓的“成年人(.NET程序员)必知必会”。而您如果盯着孩子看了半天,耐心分析他吃苹果的过程(使用IL编写的逻辑),最后终于看懂了,可惜发现——tmd老子自己也会吃苹果啊(从C#等高级语言中也能看出端倪来)! 阅读全文

驳文不看文,实在可怕

2009-06-02 09:17 by Jeffrey Zhao, 22052 阅读, 收藏, 编辑
摘要:一早看到包同学的驳文《批驳小赵之IL无用论(1)》,甚是期待,但看了第一个回复,却让我大失所望。包同学能否看清了老赵以前说过的,自己以前说过的,以及老赵昨天说的东西以后再进行反驳呢?我们很多明明是同样的观点,为什么变成相互驳斥了呢? 阅读全文

老赵谈IL(1):IL是什么,它又不是什么?那么汇编呢?

2009-06-01 21:00 by Jeffrey Zhao, 30906 阅读, 收藏, 编辑
摘要:我们.NET开发人员必定离不开IL,就算您没有学习,也一定可以在各处看到它的身影。最近在博客园上活跃的IL文章译者包建强同学的一些看法让老赵大为震惊,决定独立开篇,希望可以让大家看到不同的声音。真理越辩越明,也欢迎大家来一起讨论,发表自己意见。老赵也会尽量把朋友们留在老赵博客上的看法汇总起来,并加以回应。《老赵谈IL》也是系列文章,目前的计划有4篇,您现在看到的便是本系列的第1篇:IL是什么,它又不是什么。 阅读全文

谈表达式树的缓存(7):五种缓存方式的总体分析及改进方案

2009-05-31 22:47 by Jeffrey Zhao, 22479 阅读, 收藏, 编辑
摘要:终于到了这个系列的最后一篇文章了,这个系列的文章本是许多话题的基础,却拖了那么长时间还没有完结。这篇文章主要讨论五种缓存方式各自的优劣,以及他们的性能关键在什么地方,如果要进行改进又有什么可选方案。在这个问题上,老赵的思考可能会有遗漏,如果您有任何补充,也请不吝指出。 阅读全文

从汇编入手,探究泛型的性能问题

2009-05-30 05:21 by Jeffrey Zhao, 24979 阅读, 收藏, 编辑
摘要:经过了《泛型真的会降低性能吗?》一文中的性能测试,已经从实际入手,从测试数据上证明了泛型不会降低程序效率。只是还是有几位朋友谈到,“普遍认为”泛型的代码性能会略差一些,也有朋友正在进一步寻找泛型性能略差的证据。老赵认为这种探究问题的方式非常值得提倡。不过,老赵忽然想到,如果从能从汇编入手,证明非泛型和泛型的代码之间没有性能差距——好吧,或者说,存在性能差距,那么事情不就到此为止了吗?任何理论说明,都抵不过观察计算机是如何处理这个问题来的“直接”。因此,老赵最终决定通过这种极端的方式来一探究竟,把这个问题彻底解决。 阅读全文

泛型真的会降低性能吗?

2009-05-29 16:41 by Jeffrey Zhao, 29261 阅读, 收藏, 编辑
摘要:在《.NET,你忘记了么?(八)—— 从dynamic到特性误用》一文中,飞林沙同学提到,使用范型会略微降低程序性能,因此在程序中使用List<Ojbect>是不合理的行为,应该使用ArrayList。这一点和老赵平时的观点相悖,老赵一直提倡,在.NET 2.0之后,要尽可能使用List<T>,情愿是List<Object>也不要使用ArrayList。不过个中原因与性能无关,我们稍候再叙述。飞同学的文章让我有了将范型与非范型进行性能比较的想法。这个比较非常容易,不过也得出了一些非常有意思的结论。 阅读全文

写程序时该追求什么,什么是次要的?

2009-05-29 15:14 by Jeffrey Zhao, 24579 阅读, 收藏, 编辑
摘要:就我看来,一段程序,最该关注的是“逻辑表现”,不该追求的是“性能”。当然,肯定也会有需要追求性能的场景,不过这并不是“追求”出来的,而是在大量经验累计情况下做出的正确决策。就算在那种情况下,“逻辑表现”还是非常重要的。 阅读全文

一道简单的编程题,不过您做对了吗?

2009-05-27 19:45 by Jeffrey Zhao, 26052 阅读, 收藏, 编辑
摘要:CSDN学生中心是个好地方,如果善于利用,应该能够对大众产生正面影响。老赵也去那里安了家,并给出了一个编程问题。题目如下:Reverse方法的作用是将array数组中,从begin下标到end下标之间的元素反序一下,如一个数组初始值是[1, 2, 3, 4, 5, 6],begin为1,end为4,那么当调用了Reverse之后,array数组中的元素便依次成为[1, 5, 4, 3, 2, 6],其中从array[1]到array[4]之前的元素被反序了。此外补充一点……其实本不用补充:这个方法需要对传入参数的正确性进行校验,如果用户调用该方法时传入了非法的参数,那么则需要抛出异常,并写清原因。简单,不是吗?只可惜截止到目前,也只有1人给出了正确答案。 阅读全文

谈表达式树的缓存(6):五种缓存方式的性能比较

2009-05-26 21:06 by Jeffrey Zhao, 25882 阅读, 收藏, 编辑
摘要:目前我们已经涉及了五种不同的缓存实现(SimpleKeyCache、PrefixTreeCache、SortedListCache、HashedListCache和DictionaryCache),如果要从一个已经包含n个表达式树的存储中,查找一个有m个节点的表达式树,根据几篇文章的分析,从理论上说除了HashedListCache的时间复杂度是O(m * log(n))之外,其它几种实现的时间复杂度都是O(m)。不过,理论上的结果和实际使用中的效果完全符合吗?那么我们就写一个程序,让数据说话。这是一个控制台应用程序,接受用户参数,并由此生成试验数据,或进行性能比较。 阅读全文

在简单控制台程序中获取并使用参数

2009-05-24 23:12 by Jeffrey Zhao, 26657 阅读, 收藏, 编辑
摘要:一个简单的处理控制台参数输入的代码片断,没有技术含量,只是在博客上做一个“备份”,方便以后查询。 阅读全文

正在构建一个新的版式

2009-05-20 20:55 by Jeffrey Zhao, 21994 阅读, 收藏, 编辑
摘要:老赵对目前博客园中的模板都不太满意:样式单调,元素不够丰富,不容易Hack,不够“标准”,不够充分利用屏幕横向距离等等。因此和dudu商量后,准备为博客园新增一个模板。 阅读全文

ActorLite:一个轻量级Actor模型实现(下)

2009-05-16 17:52 by Jeffrey Zhao, 25644 阅读, 收藏, 编辑
摘要:在上一篇文章中,我们实现了一个简单的Actor模型。如果要构建一个Actor,便只是简单地继承Actor类型并实现其Receive方法即可。在上次文章的末尾,我们使用C#演示了该Actor模型的使用。不过现在我们将尝试一下F#。 阅读全文

ActorLite:一个轻量级Actor模型实现(中)

2009-05-14 09:29 by Jeffrey Zhao, 29042 阅读, 收藏, 编辑
摘要:从上一篇文章的反响来看,似乎大家对于这一话题并没有太大兴趣。而这篇文章将会为大家带来一个简单但完整的Actor模型实现。此外,在下一篇文章中……可能会出现一些让您觉得有趣的东西。:) 阅读全文

ActorLite:一个轻量级Actor模型实现(上)

2009-05-11 20:10 by Jeffrey Zhao, 35538 阅读, 收藏, 编辑
摘要:Actor模型为并行而生,具Wikipedia中的描述,它原本是为大量独立的微型处理器所构建的高性能网络而设计的模型。而目前,单台机器也有了多个独立的计算单元,这就是为什么在并行程序愈演愈烈的今天,Actor模型又重新回到了人们的视线之中了。在这篇文章中,我们会先对Actor Model的相关知识进行简单的介绍。 阅读全文

老赵书托(1):写在前面

2009-05-06 00:11 by Jeffrey Zhao, 42531 阅读, 收藏, 编辑
摘要:从现在开始,老赵将推荐一些自认为非常优秀且重要的书籍,并和大家一起交流自己的读书体会。这些书都是老赵认为的“.NET开发人员必读书籍”,但是您会发现,它们不一定是和.NET有关的书籍。基于老赵一贯的风格,我会尽可能地认真对待每一本书,甚至会把它们重新浏览一番,因此无法保证“书托”行动的周期长度,请大家谅解。 阅读全文

语言真是不重要的吗?谈语言的*层次*与技术的三六九等

2009-05-03 17:24 by Jeffrey Zhao, 27408 阅读, 收藏, 编辑
摘要:关注——或“专注”于多语言编程之后,老赵对于语言的关注也越来越多,对于语言在编程中所带来的“美感”也有了越来越深的体会,还在博客的标题中加上“追求编程之美”。关注语言多了,关注纯粹的编程实践多了,自会有所比较,然后写出了引人注目的《为啥老赵不喜欢Java*语言*》。这篇文章所得到的负面评论的确也和想象中差不多,大部分朋友的观点是“语言不是关键”或类似说法,似乎对语言的讨论和比较非常没有必要。有个朋友说的更是直接:“在看到这些文章之前,我还是比较敬重老赵的,不过现在发现你也就这点高度”。老赵认为,这是对这方面的误解,而有这种误解无论是对于社区还是个人的发展都是没有益处的,因此单独开篇,讨论一下这个问题。 阅读全文

令人失望的智器Smart Q5

2009-05-02 01:42 by Jeffrey Zhao, 26152 阅读, 收藏, 编辑
摘要:前一段时间看到有人提到了“智器Smart Q5(以下简称Q5)”这个手持上网设备,从网上的介绍来看,几乎可以用“划时代”来形容了:4.3寸屏幕,1600万色,800*480分辨率,内置MS Office兼容的编辑器、电子书阅读器(支持pdf,chm等常用格式)和媒体播放器(支持rmvb,mp3,mp4,ape,flac等各种媒体格式),并且可以使用wifi,兰牙,并可外接edge网卡——而且只要9... 阅读全文

关于争论中的*专业*,老赵谈一下自己的看法

2009-04-30 22:01 by Jeffrey Zhao, 24038 阅读, 收藏, 编辑
摘要:又到了一周一次的总结时间,经历了两周前的“Java语言风波”和“图书通病”,可以发现最容易引起大家关注的还是这样的讨论——嗯嗯,或者说是吵架。吵着吵着就会有各种“典型”的声音冒出来,使用各种形式从不同人口中反复出现,每次都看得老赵“心花怒放”,“欲仙欲死”。老赵觉得“争论”是有价值的,但是“我们的争论”至少有一半是没有太多营养价值的。实事求是地说,那篇Java文贴了4个地方,声音最大,但是收获最少的便是博客园(当然,如果贴去CSDN和cnbeta的话,情况自然就可能不一样了)。为什么会产生这个原因呢?老赵认为,关键还是在于“不专业”。 阅读全文

为视图自定义辅助方法(下)

2009-04-29 22:35 by Jeffrey Zhao, 25064 阅读, 收藏, 编辑
摘要:在上一篇文章中,我们把繁冗的客户端脚本变成了可以由Visual Studio提示并轻易输出的服务器端辅助方法。但是,目前的做法还有不少可以改进的地方。我们编写辅助方法的目的便是为了简化开发,因此我们还可以在这条路上走的更远,让开发人员可以在使用我们的API时觉得更流畅,更有快感。 阅读全文

为视图自定义辅助方法(上)

2009-04-29 00:24 by Jeffrey Zhao, 23785 阅读, 收藏, 编辑
摘要:在编写ASP.NET MVC应用程序时,只依赖内置的视图辅助方法很难达到很高的生产力,即使是定义在MvcFutures中的补充类库,也很难满足项目的具体需求。此外,不同的项目有不同的特点,在很多时候也需要定义较为特殊的辅助方法,使开发人员能够更快,更方便地写出更容易维护的代码。这也是自定义视图辅助方法最主要的目的(没有之一)。而这次的文章,便是给出一个这方面的示例,可作为此类问题的一个参考。 阅读全文

关于基础与能力,谈一点我的看法

2009-04-25 00:14 by Jeffrey Zhao, 28203 阅读, 收藏, 编辑
摘要:时不时会有朋友写信问老赵学习上的一些迷茫,其中都有一些共性。例如说不知道该如何学习,说不知道朝哪个方向前进。也例如大家虽然基本上都知道“算法”的重要性,但是却总觉平时用不到。说它锻炼能力,但“能力”是看不见摸不着的,学着学着就会“麻木”,感觉就“学不进去”了。当然这方面有几个原因,有主观也有客观的,有需要周围环境的改变,也有需要自己精神上“强壮度”的提高。这里呢,我们有时就不提“算法”这个太具体的... 阅读全文

使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性

2009-04-23 01:51 by Jeffrey Zhao, 22467 阅读, 收藏, 编辑
摘要:关于可测试性的重要性,老赵觉得已经不需要再过多强调了。如果您想要获得高生产力,为代码编写单元测试似乎已经是必经之路了。不过可惜的是,ASP.NET应用程序给人的感觉,始终是对可测试性不太友好,其最重要的原因之一在于对HttpContext对象的高度依赖,而我们很难对HttpContext编写Mock或Stub。而现在,我们可以基于ASP.NET Abstraction来辅助ASP.NET开发,改进代码的可测试性。 阅读全文

事理越辩越明,那么就来详细说说为什么我不喜欢Java*语言*

2009-04-19 02:56 by Jeffrey Zhao, 37316 阅读, 收藏, 编辑
摘要:最近我对Java语言唱衰似乎凶狠了一点,让有些朋友不是很爽,认为我不负责任凭个人感觉乱说话,影响不好。这讨论事情事小,否认我做事方式就不好了。因此我这里也继续整理一下我对Java语言的观点,这样大家不必四处查看我的说辞,再者也可以控制一下讨论事情的方式,以免大家舞蹈半天尘土飞扬最后停下一看——得,双方在自说自话,这怎能辩明事理,您说呢? 阅读全文

高阶函数、委托与匿名方法

2009-04-18 12:25 by Jeffrey Zhao, 29814 阅读, 收藏, 编辑
摘要:这是几个月前就写的文章,只是一直忙于QCon的各项事宜,最近才发表出来。这篇是对.NET中委托,匿名方法和高阶函数使用的一个介绍,非常简单,目的是强调一下C#中对于高阶函数的使用,体现一下现在C#的高度生产力。 阅读全文

.NET平台下Web测试工具横向比较

2009-04-13 22:29 by Jeffrey Zhao, 24015 阅读, 收藏, 编辑
摘要:为InfoQ写的一篇新闻。由于我有三不写原则(不翻译、不介绍、不重复),觉得有些值得介绍并推广的东西,还是放在InfoQ上吧。 阅读全文

辅助方法不嫌多

2009-04-12 19:25 by Jeffrey Zhao, 21797 阅读, 收藏, 编辑
摘要:在开发项目过程中,总是会出现大量的辅助方法,例如字符串处理,代码检验,格式输出等等。如果您发现自己在多次编写类似的代码,可能就要想着如何把这些代码进行提取,变成辅助方法(亦或是类库甚至框架,关于这方面粒度问题在此不作讨论)。辅助方法的作用除了遵循DRY原则之外,也能让代码更容易编写,更为清晰,可读性也能更好——而且只要您“去做”,就会发现要得到这些好处并不困难。 阅读全文

使用WinDbg获得托管方法的汇编代码

2009-04-01 22:42 by Jeffrey Zhao, 27085 阅读, 收藏, 编辑
摘要:有时候,我们需要查看一个.NET方法的汇编指令是怎么样的。记得在大学的时候,我们使用gcc -s和objdump来获得一个c程序代码的汇编指令。但是对于.NET程序来说,我们肯定无法轻松地获得这些内容。因为所有的.NET程序都是编译成IL代码的,而只有在运行时才会被JIT编译成本机代码。老赵这里演示一下如何使用WinDbg来做到这一点。 阅读全文

浅谈尾递归的优化方式

2009-04-01 01:00 by Jeffrey Zhao, 53834 阅读, 收藏, 编辑
摘要:在上文《尾递归与Continuation》里,我们谈到了尾递归的概念和示例,不过有些朋友对于尾递归的功效依然有所怀疑。因此现在,老赵再简单讲解一下尾递归的优化原理,希望能给大家以一定理性认识。 阅读全文
共 16 页: 首页 上一页 3 4 5 6 7 8 9 10 11 下一页 末页