摘要:
最近在用AngularJS进行开发时遇到了灵异事件,从某网站拷贝下来的看似无比正确的代码运行总是出错。经验告诉我们,看上去正确的代码可能实际上并不正确。我是指字符层面上。其中可能存在乱码,存在奇怪的空白字符,这些均会导致问题。然而我仔细检查了一番,并未发现乱码和多余空格。唯一的异常情况是,Angul... 阅读全文
摘要:
感谢大家的支持,本系列第2篇在此推出。朋友们还可关注我的新浪微博“同济王阳”,上面会定期分享一些本人所关注的技术热点资讯、博文、视频、国外教程等内容,相信我们品味还是比较一致的哦!1 概述1.1 设计模式概述设计模式属于面向对象软件设计方法论的范畴。我们知道,面向对象的概念是在过程化程序设计出现软件危机的时代背景中被提出的。在那时,这属于一个崭新的事物。在80年代末、90年代初,不仅我们现在认为的面向对象设计方法的集大成者——.NET平台的BCL类库和Java平台的JDK类库连影子都找不到,甚至随便找一个面向对象的代码都很困难。那时的软件开发者不了解面向对象的设计方法,即使纯粹为沾上面向对象而 阅读全文
摘要:
上篇博文《.NET开发规范教程》得到了广大园友的大力支持,本来应当很快推出后文《设计模式精要教程》,然而由于这突如其来的变故,这就耽误了下来。我的公司我这三年来供职的地方,不说是各种奇葩,也可以说是各种另类。这里没有任何贬义,只是突出其特别的地方。它不是一个软件公司。它是同济周边某大型规划设计院的一个附属机构。对建筑规划行业或者同济大学有些了解的同学可能知道,同济周边有很多教师工作室(Studio)性质的机构,老板有门路的往往是挂名在同济下属两大设计院——同济大学建筑设计院(集团)有限公司、上海同济城市规划设计研究院——下面,顶着同济的头衔接自己的生意。同济很多老师都是体制内外通吃、名利双收的 阅读全文
摘要:
这是1年多以前我在公司所做讲座的讲义,现在与园友们分享,欢迎拿去使用、一起讨论。文中有若干思考题,对园友们是小菜一碟。另有设计模式讲义一篇,随后发布。博文上了首页,感谢博客园团队推荐,也感谢所有园友的支持。经园友提醒,我们推荐新手使用ReSharper插件,它可以自动提示不符合代码规范的地方。1概述1.1意义“.NET平台开发规范”包括两方面内容:代码规范、最佳实践。(1)规范和优美的代码风格有助于思路清晰。(2)规范和优美的代码有助于团队沟通交流。(3)规范和优美的代码有助于学**20年(后设计模式时代)现代面向对象思想发展的精华。.NET平台是继Java平台之后又一伟大的带集大成面向对象类 阅读全文
摘要:
SignalR是微软ASP.NET技术体系中的新成员。在www.asp.net网站上的SignalR专区有一篇SignalR的入门级教程《Tutorial:ServerBroadcastwithASP.NETSignalR(C#)》,介绍了通过SignalR实现服务器端广播的方法。文章中实现了简单的股票信息实时推送,这是一个服务器-客户端双向实时通信的典型应用。然而我觉得这篇教程虽然简单,但是作为入门的话代码量(特别是无关代码量)显得太多了,当时我用此教程学习的时候不得不从几页代码中上下翻找与SignalR的使用有关的关键点,体验不是很好。于是我自己练习时,另外写了一个简化版的Hellowor 阅读全文
摘要:
感谢@DiryBoy的补充,他提到这个问题在MSDN上是有说明的:http://msdn.microsoft.com/en-us/library/vstudio/hh678682.aspx在VisualBasic.NET中,如果你写下类似下面的代码:PublicSubTest()Fori=0To100Dimfunc=Function(x)x*iNextEndSubVisualStudio会给出一个警告,说在lambda表达式(即匿名函数)中直接使用循环变量可能导致意料之外的结果,建议程序员先将循环变量复制一份,然后再使用。直接使用循环变量究竟会产生什么意外结果呢?本人并没有用VB.NET尝试过 阅读全文
摘要:
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE 最近园子里在讨论.NET程序员努力提高自身素质的问题。园子是.NET爱好者的大本营,大家都对这门技术充满了热情。然而不能不说的是,在国内说到.NET,80%以上的语境恐怕是指ASP.NET,这无形中助长了非.NET程序员,尤其是C++程序员和C++出身的技术主管对.NET的偏见和藐视,因为C++的领域大多看上去比做网站“更有技术性”。国内某C++出身的主管认为同样的逻辑用C++实现就会“更加底层”,用.NET就会被微软牵着鼻子走。不禁要问用C++难道能脱离调用Win32 API不成. 阅读全文
摘要:
MSDN官方文档中说,“扩展方法使您能够向现有类型‘添加’方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用。对于用C# 和Visual Basic 编写的客户端代码,调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异。”按照这种官方描述,扩展方法就是用一个静态类型去“扩展”另一个类型,使得另一个类型看起来像是被我们添加了很多“成员实例方法”。官方文档也说得很明白,“通常,您更多时候是调用扩展方法而不是实现您自己的扩展方法。”“通常,建议您只在不得已的情况下才实现扩展方法,并谨慎地实现。只要有可能,必须 阅读全文
摘要:
函数式编程与我们的距离并不遥远。虽然大部分人不会选择去学习F#,但是函数式编程的思想可以用C#来实践。自从C#3.0引入了Lambda表达式,虽然是作为LINQ的配角,但是其带来的改变远远超出LINQ的范围,C#从此一只脚迈入了FP的领地。回想Lambda在LINQ中的使用,我们就可轻易理解函数式编程的特征之一:函数作为参数传递(即“函数的函数”,函数作为自变量)。函数作为参数导致函数的复合(还记得高中数学中的f(g(x))吗)。经常用LINQ的人一定对此已经习以为常。今天我们讨论函数式编程的另外一个特征,即高阶函数。所谓高阶函数,就是“返回函数的函数&rd 阅读全文