博客园 - 五斗米
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=19983
2011-09-03T15:14:24Z
五斗米
https://www.cnblogs.com/zephrx/
feed.cnblogs.com
https://www.cnblogs.com/zephrx/archive/2011/09/01/2161518.html
知其所以然:为什么算法这么难? - 五斗米
广大码农同学们大多都有个共识,认为算法是个硬骨头,很难啃,悲剧的是啃完了还未必有用——除了面试的时候。实际工程中一般都是用现成的模块,一般只需了解算法的目的和时空复杂度即可。 不过话说回来,面试的时候面算法,包括面项目中几乎不大可能用到的算法,其实并不能说是毫无道理的。算法往往是对学习和理解能力的一块试金石,难的都能掌握,往往容易的事情不在话下。志于高者得于中。反之则不成立。另一方面,虽说教科书算...
2011-09-01T00:27:00Z
2011-09-01T00:27:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】广大码农同学们大多都有个共识,认为算法是个硬骨头,很难啃,悲剧的是啃完了还未必有用——除了面试的时候。实际工程中一般都是用现成的模块,一般只需了解算法的目的和时空复杂度即可。 不过话说回来,面试的时候面算法,包括面项目中几乎不大可能用到的算法,其实并不能说是毫无道理的。算法往往是对学习和理解能力的一块试金石,难的都能掌握,往往容易的事情不在话下。志于高者得于中。反之则不成立。另一方面,虽说教科书算... <a href="https://www.cnblogs.com/zephrx/archive/2011/09/01/2161518.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2011/08/31/2161375.html
[Design Pattern]一种基于抽象类的Singleton模式的实现 - 五斗米
namespaceUtilityLibrary.PatternAndPractice{usingSystem;usingSystem.Globalization;usingSystem.Reflection;///<summary>///Thebaseclassthatimplementedthesingletonpattern///</summary>///<typeparamname="T">Thetargettypeneedsthesingletonfeature.Tmust:///Haveandonlyhaveaprivatede
2011-08-31T14:11:00Z
2011-08-31T14:11:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】namespaceUtilityLibrary.PatternAndPractice{usingSystem;usingSystem.Globalization;usingSystem.Reflection;///<summary>///Thebaseclassthatimplementedthesingletonpattern///</summary>///<typeparamname="T">Thetargettypeneedsthesingletonfeature.Tmust:///Haveandonlyhaveaprivatede <a href="https://www.cnblogs.com/zephrx/archive/2011/08/31/2161375.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2009/09/16/1567806.html
[C# 3.0 入门] [第一章 Lambda表达式] 第五节:Lambda表达式的使用范例 & Lambda表达式的各种变体(日文翻译) - 五斗米
到现在为止的例子大多数,完全都是从文法上到功能上的说明,多数情况下不必使用Lambda表达式也能够写出来。最后,我还是来展示几个有一定实用性的Lambda表达式的实例。
Lambda表达式有各种变体。特别是在参数只有一个的情况下,因为在语法上可以省略参数两边的括弧,全面把握起来会比较困难。所以,下面的代码给出几种主流的变体的写法。
介绍到这里,Lambda表达式的大部分内容已经介绍过了。仅仅运用本章的知识,就能够使代码发生很大的质的变化了。
然而,如果说要完全理解了Lambda表达式的话,仅仅这样的话还为时尚早。
实际上,推断被省略了的类型声明的“类型推断”的麻烦事还在后头呢。下一章,就来说说类型推断。同时,也将会讨论一下使用Lambda表达式的代理类型在类库中的使用方法。例如,本章中的例子里就用到了Action类型和Func类型。
2009-09-16T07:29:00Z
2009-09-16T07:29:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】到现在为止的例子大多数,完全都是从文法上到功能上的说明,多数情况下不必使用Lambda表达式也能够写出来。最后,我还是来展示几个有一定实用性的Lambda表达式的实例。
Lambda表达式有各种变体。特别是在参数只有一个的情况下,因为在语法上可以省略参数两边的括弧,全面把握起来会比较困难。所以,下面的代码给出几种主流的变体的写法。
介绍到这里,Lambda表达式的大部分内容已经介绍过了。仅仅运用本章的知识,就能够使代码发生很大的质的变化了。
然而,如果说要完全理解了Lambda表达式的话,仅仅这样的话还为时尚早。
实际上,推断被省略了的类型声明的“类型推断”的麻烦事还在后头呢。下一章,就来说说类型推断。同时,也将会讨论一下使用Lambda表达式的代理类型在类库中的使用方法。例如,本章中的例子里就用到了Action类型和Func类型。
<a href="https://www.cnblogs.com/zephrx/archive/2009/09/16/1567806.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2009/09/10/1563840.html
[C# 3.0 入门] [第一章 Lambda表达式] 第四节:Lambda的用途 & 类型声明能够和不能够省略的情况(日文翻译) - 五斗米
习惯了C/C++编程风格的程序员,一定以为因C#语法与之很相似,所以用C#编写相对复杂的程序应该也没有问题。可是很遗憾,情况不是这样。那是因为C/C++具有能写出复杂功能的表达式的逗号表达式,而C#却没有。
但是C#有三元运算符?:和空接合运算符??。通过使用这些运算符,相当数量的代码都可以用Lambda表达式来写了。
Lambda表达式没有返回值的情况(void的情况),想使其内容为空的情况下(调用后什么也不执行的Lambda表达式选择使用的情况),可以使用内容为空的Lambda语句。
2009-09-10T02:30:00Z
2009-09-10T02:30:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】习惯了C/C++编程风格的程序员,一定以为因C#语法与之很相似,所以用C#编写相对复杂的程序应该也没有问题。可是很遗憾,情况不是这样。那是因为C/C++具有能写出复杂功能的表达式的逗号表达式,而C#却没有。
但是C#有三元运算符?:和空接合运算符??。通过使用这些运算符,相当数量的代码都可以用Lambda表达式来写了。
Lambda表达式没有返回值的情况(void的情况),想使其内容为空的情况下(调用后什么也不执行的Lambda表达式选择使用的情况),可以使用内容为空的Lambda语句。 <a href="https://www.cnblogs.com/zephrx/archive/2009/09/10/1563840.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2009/09/04/1560286.html
[C# 3.0 入门] [第一章 Lambda表达式] 第三节:Lambda与匿名方法的区别(日文翻译) - 五斗米
为什么Lambda表达式比匿名方法写起来要短呢?这种像变戏法一样的手法真的能用吗?有没有重要信息遗漏掉呢?为了回答这些问题,就让我们把匿名方法和Lambda表达式比较一下。
首先,Lambda表达式使用的“=>”,叫“=>运算符”,读作“向~输入”(日本读法,跟国情有关)。在上例中,就读作“向x、y输入x+y”(虽这样说,但如果不习惯也不必勉强这样读,笔者也不爱这样读,忒费劲)。delegate关键字并不是去掉了,如果理解为被“=>”运算符替换了的话可能更容易理解。这就是区分“匿名方法”与“Lambda表达式”的关键字。仅这一点,就从delegate的8个字母减到=>两个字母,少了6个字母呢!(这账算的,也不知是真傻还是精明过头了。对我们C#程序员来说,敲入delegate恐怕要比敲入=>快多了。鬼知道=、>这两个字符在哪个键上,每次都要低头去找,还要按Shift,麻烦!)
2009-09-04T05:45:00Z
2009-09-04T05:45:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】为什么Lambda表达式比匿名方法写起来要短呢?这种像变戏法一样的手法真的能用吗?有没有重要信息遗漏掉呢?为了回答这些问题,就让我们把匿名方法和Lambda表达式比较一下。
首先,Lambda表达式使用的“=>”,叫“=>运算符”,读作“向~输入”(日本读法,跟国情有关)。在上例中,就读作“向x、y输入x+y”(虽这样说,但如果不习惯也不必勉强这样读,笔者也不爱这样读,忒费劲)。delegate关键字并不是去掉了,如果理解为被“=>”运算符替换了的话可能更容易理解。这就是区分“匿名方法”与“Lambda表达式”的关键字。仅这一点,就从delegate的8个字母减到=>两个字母,少了6个字母呢!(这账算的,也不知是真傻还是精明过头了。对我们C#程序员来说,敲入delegate恐怕要比敲入=>快多了。鬼知道=、>这两个字符在哪个键上,每次都要低头去找,还要按Shift,麻烦!) <a href="https://www.cnblogs.com/zephrx/archive/2009/09/04/1560286.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2009/09/03/1559495.html
[C# 3.0 入门] [第一章 Lambda表达式] 第二节:Lambda表达式带来了什么(日文翻译) - 五斗米
Lambda表达式(λ表达式),用一句话来解释,(不算很严谨)就是使匿名方法文字上更短的语法。虽然这样说,单“仅仅是文字上的变化,源代码的性质没有变”这样的想法也是一种误解。规模变化了,其性质也会变化。例如,实验室的烧杯中产生的现象,不一定会在大型的工厂里产生。同样的道理也适用于源代码。
那么,就体验一下Lambda表达式吧。
以下,使用具体的code来说明一下,不是实际工程中的代码,而是实际代码使用C# 2.0重写的。
......
YAGNI是“You Aren't Going to Need It.”的简写,意思是:或许是必要的功能实际上并不必要的可能性非常高。一句话,为未知的未来而事先准备的代码,基本上是没用的。这样的教训很多。
2009-09-03T07:22:00Z
2009-09-03T07:22:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】Lambda表达式(λ表达式),用一句话来解释,(不算很严谨)就是使匿名方法文字上更短的语法。虽然这样说,单“仅仅是文字上的变化,源代码的性质没有变”这样的想法也是一种误解。规模变化了,其性质也会变化。例如,实验室的烧杯中产生的现象,不一定会在大型的工厂里产生。同样的道理也适用于源代码。
那么,就体验一下Lambda表达式吧。
以下,使用具体的code来说明一下,不是实际工程中的代码,而是实际代码使用C# 2.0重写的。
......
YAGNI是“You Aren't Going to Need It.”的简写,意思是:或许是必要的功能实际上并不必要的可能性非常高。一句话,为未知的未来而事先准备的代码,基本上是没用的。这样的教训很多。
<a href="https://www.cnblogs.com/zephrx/archive/2009/09/03/1559495.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2009/09/02/1558839.html
[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 每天生产大量代码的大有人在。笔者也是其中之一。
那么为什么他们
2009-09-02T08:14:00Z
2009-09-02T08:14:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】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 每天生产大量代码的大有人在。笔者也是其中之一。
那么为什么他们 <a href="https://www.cnblogs.com/zephrx/archive/2009/09/02/1558839.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2009/08/24/1553231.html
对SQL Server 2005中APPLY的学习 - 五斗米
通过对APPLY的学习,人感觉APPLY似乎意思就是用左表对右边的表值函数的每一个计算行都做一个join(对应前面的cross或outer两种方式)。有待验证。 之所以会增加了这么个玩意,就是因为join只能对实体表进行操作,apply 用于对使用参数为表列表值函数。个人理解,同样有待验证
2009-08-24T15:01:00Z
2009-08-24T15:01:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】通过对APPLY的学习,人感觉APPLY似乎意思就是用左表对右边的表值函数的每一个计算行都做一个join(对应前面的cross或outer两种方式)。有待验证。 之所以会增加了这么个玩意,就是因为join只能对实体表进行操作,apply 用于对使用参数为表列表值函数。个人理解,同样有待验证 <a href="https://www.cnblogs.com/zephrx/archive/2009/08/24/1553231.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zephrx/archive/2009/08/23/1552396.html
SQL Server 2008的窗口计算 - 五斗米
作者:张洪举,MVP 应用于:SQL Server 2005,SQL Server 2008 日期:2009/3/5 在SQL Server中,窗口被定义为用户指定的一组行。例如,在下面表1所示的Students表中,包含有3个班级的学生成绩,则其中的每一个班级都可以被看作是一个数据窗口,或是分区。 ClassID StudentName Achievement1 Grace 99.00...
2009-08-23T07:42:00Z
2009-08-23T07:42:00Z
五斗米
https://www.cnblogs.com/zephrx/
【摘要】作者:张洪举,MVP 应用于:SQL Server 2005,SQL Server 2008 日期:2009/3/5 在SQL Server中,窗口被定义为用户指定的一组行。例如,在下面表1所示的Students表中,包含有3个班级的学生成绩,则其中的每一个班级都可以被看作是一个数据窗口,或是分区。 ClassID StudentName Achievement1 Grace 99.00... <a href="https://www.cnblogs.com/zephrx/archive/2009/08/23/1552396.html" target="_blank">阅读全文</a>