柏拉图式的编程

有困难找组织!

导航

2011年9月1日 #

知其所以然:为什么算法这么难?

摘要: 广大码农同学们大多都有个共识,认为算法是个硬骨头,很难啃,悲剧的是啃完了还未必有用——除了面试的时候。实际工程中一般都是用现成的模块,一般只需了解算法的目的和时空复杂度即可。 不过话说回来,面试的时候面算法,包括面项目中几乎不大可能用到的算法,其实并不能说是毫无道理的。算法往往是对学习和理解能力的一块试金石,难的都能掌握,往往容易的事情不在话下。志于高者得于中。反之则不成立。另一方面,虽说教科书算... 阅读全文

posted @ 2011-09-01 08:27 五斗米 阅读(800) 评论(0) 推荐(0) 编辑

2011年8月31日 #

[Design Pattern]一种基于抽象类的Singleton模式的实现

摘要: namespaceUtilityLibrary.PatternAndPractice{usingSystem;usingSystem.Globalization;usingSystem.Reflection;///<summary>///Thebaseclassthatimplementedthesingletonpattern///</summary>///<typeparamname="T">Thetargettypeneedsthesingletonfeature.Tmust:///Haveandonlyhaveaprivatede 阅读全文

posted @ 2011-08-31 22:11 五斗米 阅读(320) 评论(0) 推荐(0) 编辑

2009年9月16日 #

[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体(日文翻译)

摘要: 到现在为止的例子大多数,完全都是从文法上到功能上的说明,多数情况下不必使用Lambda表达式也能够写出来。最后,我还是来展示几个有一定实用性的Lambda表达式的实例。 Lambda表达式有各种变体。特别是在参数只有一个的情况下,因为在语法上可以省略参数两边的括弧,全面把握起来会比较困难。所以,下面的代码给出几种主流的变体的写法。 介绍到这里,Lambda表达式的大部分内容已经介绍过了。仅仅运用本章的知识,就能够使代码发生很大的质的变化了。 然而,如果说要完全理解了Lambda表达式的话,仅仅这样的话还为时尚早。 实际上,推断被省略了的类型声明的“类型推断”的麻烦事还在后头呢。下一章,就来说说类型推断。同时,也将会讨论一下使用Lambda表达式的代理类型在类库中的使用方法。例如,本章中的例子里就用到了Action类型和Func类型。 阅读全文

posted @ 2009-09-16 15:29 五斗米 阅读(2627) 评论(13) 推荐(2) 编辑

2009年9月10日 #

[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况(日文翻译)

摘要: 习惯了C/C++编程风格的程序员,一定以为因C#语法与之很相似,所以用C#编写相对复杂的程序应该也没有问题。可是很遗憾,情况不是这样。那是因为C/C++具有能写出复杂功能的表达式的逗号表达式,而C#却没有。 但是C#有三元运算符?:和空接合运算符??。通过使用这些运算符,相当数量的代码都可以用Lambda表达式来写了。 Lambda表达式没有返回值的情况(void的情况),想使其内容为空的情况下(调用后什么也不执行的Lambda表达式选择使用的情况),可以使用内容为空的Lambda语句。 阅读全文

posted @ 2009-09-10 10:30 五斗米 阅读(1064) 评论(1) 推荐(1) 编辑

2009年9月4日 #

[C# 3.0 入门] [第一章 Lambda表达式] 第三节:Lambda与匿名方法的区别(日文翻译)

摘要: 为什么Lambda表达式比匿名方法写起来要短呢?这种像变戏法一样的手法真的能用吗?有没有重要信息遗漏掉呢?为了回答这些问题,就让我们把匿名方法和Lambda表达式比较一下。 首先,Lambda表达式使用的“=>”,叫“=>运算符”,读作“向~输入”(日本读法,跟国情有关)。在上例中,就读作“向x、y输入x+y”(虽这样说,但如果不习惯也不必勉强这样读,笔者也不爱这样读,忒费劲)。delegate关键字并不是去掉了,如果理解为被“=>”运算符替换了的话可能更容易理解。这就是区分“匿名方法”与“Lambda表达式”的关键字。仅这一点,就从delegate的8个字母减到=>两个字母,少了6个字母呢!(这账算的,也不知是真傻还是精明过头了。对我们C#程序员来说,敲入delegate恐怕要比敲入=>快多了。鬼知道=、>这两个字符在哪个键上,每次都要低头去找,还要按Shift,麻烦!) 阅读全文

posted @ 2009-09-04 13:45 五斗米 阅读(518) 评论(0) 推荐(1) 编辑

2009年9月3日 #

[C# 3.0 入门] [第一章 Lambda表达式] 第二节:Lambda表达式带来了什么(日文翻译)

摘要: Lambda表达式(λ表达式),用一句话来解释,(不算很严谨)就是使匿名方法文字上更短的语法。虽然这样说,单“仅仅是文字上的变化,源代码的性质没有变”这样的想法也是一种误解。规模变化了,其性质也会变化。例如,实验室的烧杯中产生的现象,不一定会在大型的工厂里产生。同样的道理也适用于源代码。 那么,就体验一下Lambda表达式吧。 以下,使用具体的code来说明一下,不是实际工程中的代码,而是实际代码使用C# 2.0重写的。 ...... YAGNI是“You Aren't Going to Need It.”的简写,意思是:或许是必要的功能实际上并不必要的可能性非常高。一句话,为未知的未来而事先准备的代码,基本上是没用的。这样的教训很多。 阅读全文

posted @ 2009-09-03 15:22 五斗米 阅读(819) 评论(3) 推荐(1) 编辑

2009年9月2日 #

[C# 3.0 入门] [第一章 Lambda表达式] 第一节:C# 3.0 是什么 & C# 3.0的适用范围(日文翻译)

摘要: C#也顺利的进行了版本升级,变成3.0了。在连载开始之初,就当作是前言吧,简单的介绍一下C# 3.0究竟是什么。 C# 3.0,是运行时绑定的类型安全(似乎我们称之为强类型)的面向对象(日语原文“object指向”)语言。运行时绑定(日语原文是“动的”),指的是程序运行时才能够确定,类型安全,是指所有数据都是有类型的,或编译的时候,或运行的时候,有严格的类型检查。然后,面向对象是指数据与object为基础的语言。 但是,这些调整是从C#2.0继承而来的,并不是C# 3.0所特有的。作为C# 3.0所特有的特征是什么呢? 根据笔者个人的印象,对于C# 3.0语言具有的各个机能的技术解说很多,但对于语言本身的说辞却很少。例如,经常会见到“与其他语言相比,Java(或者Ruby)是那么的优美”这样的词句。但是,关于C# 3.0的文章,大多是些个别技术内容及其使用的介绍,与其他语言相比较的文章,对语言优美性大家赞赏的文章却很少遇见。 难道是C# 3.0没人在用吗?肯定不能这么说。用C# 3.0 每天生产大量代码的大有人在。笔者也是其中之一。 那么为什么他们 阅读全文

posted @ 2009-09-02 16:14 五斗米 阅读(730) 评论(1) 推荐(1) 编辑

2009年8月24日 #

对SQL Server 2005中APPLY的学习

摘要: 通过对APPLY的学习,人感觉APPLY似乎意思就是用左表对右边的表值函数的每一个计算行都做一个join(对应前面的cross或outer两种方式)。有待验证。 之所以会增加了这么个玩意,就是因为join只能对实体表进行操作,apply 用于对使用参数为表列表值函数。个人理解,同样有待验证 阅读全文

posted @ 2009-08-24 23:01 五斗米 阅读(128) 评论(0) 推荐(0) 编辑

2009年8月23日 #

SQL Server 2008的窗口计算

摘要: 作者:张洪举,MVP 应用于:SQL Server 2005,SQL Server 2008 日期:2009/3/5 在SQL Server中,窗口被定义为用户指定的一组行。例如,在下面表1所示的Students表中,包含有3个班级的学生成绩,则其中的每一个班级都可以被看作是一个数据窗口,或是分区。 ClassID StudentName Achievement1 Grace 99.00... 阅读全文

posted @ 2009-08-23 15:42 五斗米 阅读(479) 评论(0) 推荐(0) 编辑