Hello World
Spiga

分类:.Net框架

基于DelegateEvent创建第一个IEvent对象

2009-09-11 13:47 by 老赵, 12602 visits
摘要:继续和“事件即对象”打交道。我们之前提到过两个“趣味编程”:DelegateEvent与Functional Reactive Programming,现在我们在它们两者之间架起一座桥梁。也就是说,我们要从一个DelegateEvent对象创建一个IEvent对象出来。这样,您就可以把它作为第一个IEvent对象,继续尝试Functional Reactive Programming了。 阅读全文

如何创建TextWriter的子类

2009-09-11 00:42 by 老赵, 12833 visits
摘要:如果您需要继承TextWriter实现自己的类型,您会怎么做?继承TextWriter不难,不过接下来,您打算覆盖(override)掉哪些方法?从Reflector的观察结果发现,其中所有的方法最终都会委托给Write(char)方法。但是只覆盖Write(char)方法只能保证最终成果“可以运行”,却无法保证是最优秀的结果。但是又有谁可以告诉我,究竟该怎么做呢? 阅读全文

监视程序中的死锁及其他

2009-09-10 00:08 by 老赵, 12972 visits
摘要:每天回家路上总有一段比较长的路一片漆黑无法看书。这种时候,如果我有兴致则会用手机上上网,但是大部分情况下还是用来想问题的。今天我回忆起今天园子首页的一篇文章谈到死锁,想到了一种可行的解决方案,只可惜到家一搜索……别人已经实现过了。于是,又没我什么事情了…… 阅读全文

我犯了一个错误,您能指出吗?(结论)

2009-09-08 15:55 by 老赵, 14870 visits
摘要:其实许多朋友已经在回复中发现问题所在了。泛型类中的静态变量会因为T的不同而产生不同的值,也就是说每个T所访问的静态变量都是独立的。因此,看似共享的静态ConnectionKey实际上是两个不同的Guid。 阅读全文

我犯了一个错误,您能指出吗?

2009-09-08 10:01 by 老赵, 16680 visits
摘要:这是我最近在项目中犯的一个错误,您能指出吗? 阅读全文

再谈ASP.NET Routing中的ParsedRoute

2009-08-24 14:10 by 老赵, 5440 visits
摘要:ParsedRoute是ASP.NET Routing中的内部类,作用是根据既定模式将一段URL解析为一个RouteValueDictionary。上次的文章中我主要谈了如何利用反射使用类库的内部成员,而这次则想分享一些使用ParsedRoute时产生的一些想法。 阅读全文

为什么是HttpContextBase而不是IHttpContext

2009-08-21 15:15 by 老赵, 6250 visits
摘要:由于HttpContext很难进行Mock,因此为了提高可测试性,微软随ASP.NET MVC发布了一个“抽象包”,专门用于对HttpContext及其相关组件进行抽象。不过在Preview 1版本中,这些抽象都是一个个接口,如IHttpContext,IHttpRequest等等。而在下一个版本中,立即就成为了一个个抽象类,如HttpContextBase,HttpRequestBase。现在我打算从“使用”角度来谈一下,为什么这里的确应该用抽象类而不是接口。 阅读全文

复用类库内部已有功能

2009-08-19 18:59 by 老赵, 7383 visits
摘要:经常看我博客的人可能会知道,我是一个喜欢搞点小技巧来实现某个功能的人。例如博客的皮肤,自己花了不少时间定义,也是为了效果丰富一些。当然,搞得最多的是从框架或类库内部取出一点小功能来用用,节省自己开发的时间。 阅读全文

再谈抽象类和接口

2009-08-19 12:15 by 老赵, 8736 visits
摘要:昨天我质疑了为什么定义RouteBase抽象类,而不是IRoute接口,我谈到对于一个“没有任何实现”的抽象类来说,开发人员应该使用接口。不过在后面的评论中,有朋友给了我启发,让我忽然想到更多的事情。晚上又再次翻了翻《Framework Design Guidelines》之后,打算再谈一些东西,把这个问题讨论地更加清楚一些。 阅读全文

从.NET中委托写法的演变谈开去(下):性能相关

2009-08-10 00:44 by 老赵, 12130 visits
摘要:在上一篇文章中,我们详细讲述了C# 3.0中Lambda表达式(构造委托)的使用方式,它在语义上的优势及对编程的简化——这些内容已经属于委托的“扩展内容”。不如这次谈得更远一些,就来讨论一下上文中“编程方式”的性能相关话题。 阅读全文

从.NET中委托写法的演变谈开去(中):Lambda表达式及其优势

2009-08-07 08:24 by 老赵, 17878 visits
摘要:在上一篇文章中我们简单探讨了.NET 1.x和.NET 2.0中委托表现形式的变化,以及.NET 2.0中匿名方法的优势、目的及注意事项。那么现在我们来谈一下.NET 3.5(C# 3.0)中,委托的表现形式又演变成了什么样子,还有什么特点和作用。 阅读全文

从.NET中委托写法的演变谈开去(上):委托与匿名方法

2009-08-05 12:50 by 老赵, 18675 visits
摘要:在《关于最近面试的一点感想》一文中,Michael同学谈到他在面试时询问对方“delegate在.net framework1.1,2.0,3.5各可以怎么写”这个问题。我也问过,那么我就先单独针对这个问题进行解释,然后谈谈自己为什么会提出这个问题吧。 阅读全文

快速计算表达式树

2009-07-29 09:25 by 老赵, 9066 visits
摘要:.NET 3.5中新增的表达式树(Expression Tree)特性,第一次在.NET平台中引入了“逻辑即数据”的概念,它是LINQ to Everything在技术实现上的重要基石之一。对表达式树进行计算,是处理表达式树时中最常见的工作了。根据我的本地测试结果,在一台P4 2.0 GHz的服务器上,单线程连续计算一万个简单的四则运算表达式便要花费超过1秒钟时间。这并非是一个可以忽略的性能开销,引入一种性能更好的表达式树计算方法势在必行。 阅读全文

浅谈线程池(中):独立线程池的作用及IO线程池

2009-07-24 09:21 by 老赵, 12800 visits
摘要:在上一篇文章中,我们简单讨论了线程池的作用,以及CLR线程池的一些特性。不过关于线程池的基本概念还没有结束,这次我们再来补充一些必要的信息,这样有助于我们在程序中选择合适的使用方式。例如,为什么要有独立的线程池,CLR线程池到底有什么不足,IO线程池又是什么呢?有了这些准备之后,最后的试验也就非常自然了。 阅读全文

浅谈线程池(上):线程池的作用及CLR线程池

2009-07-22 09:01 by 老赵, 18136 visits
摘要:线程池是一个重要的概念。不过我发现,关于这个话题的讨论似乎还缺少了点什么。作为资料的补充,以及今后文章所需要的引用,我在这里再完整而又简单地谈一下有关线程池,还有.NET中各种线程池的基础。更详细的内容就不多作展开了,有机会我们再详细讨论这方面的细节。这次,还是一个“概述”性质的,希望可以说明白这方面问题的一些概念。文章分两段,我们先来谈谈线程池的作用,及CLR自带的线程池。 阅读全文

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

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

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

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

驳文不看文,实在可怕

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

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

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

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

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