摘要: 好久没写博客了,时隔5个月,奉上一篇精心准备的文章,希望大家能有所收获,对async 和 await 的理解有更深一层的理解。async 和 await 有你不知道的秘密,微软会告诉你吗?我用我自己的例子,去一步步诠释这个技术,看下去,你绝对会有收获。(渐进描述方式,愿适应所有层次的程序员)从零开始, 控制台 Hello World:什么?开玩笑吧?拿异步做Hello World??下面这个例子,输出什么?猜猜? 1 static void Main(string[] args) 2 { 3 4 Task t = example1(); 5 } 6 7 static ... 阅读全文
posted @ 2013-06-05 09:42 肅 阅读(11058) 评论(20) 推荐(25) 编辑
摘要: 新手阅读Gof的《设计模式》有点难度,这里,要讲述的是,帮助大家奠定一下基础,使大家更好的去学习设计模式,去提升我们的思想,设计包含着抽象,又有些哲学,静下心来,你也可以学到优秀程序员的技术。设计模式,起初是从建筑学中开始发展的。在此来讲个故事。很久很久以前~~~(^_^),有一个建筑师,他修建了许多建筑,当地的人都十分尊敬他,因为他修建的房屋,是最牢固最美观的,但是他自己一直在问自己:“质量可以客观评价吗?”这位建筑师最感兴趣的一种美就是建筑质量:是什么让我感觉一个建筑设计是优秀的? “评价一个建筑物是否美观”不仅仅是一个品味的问题。还需要通过可以衡量的客观标准来描述美观程度,比如质量,创. 阅读全文
posted @ 2013-01-21 09:35 肅 阅读(2483) 评论(12) 推荐(10) 编辑
摘要: 应园友提议,本篇博将帮助大家解决“针对接口编程”这一疑惑。而我所讲的例子将从上一篇设计引导---一个鸭子游戏引发的设计(多态,继承,抽象,接口,策略者模式)的案例中,延伸下来,让大家更容易阅读。 上篇中有提到鸭子游戏。现在,假设那个鸭子游戏火了,火遍全球~~~公司大佬们因为这个游戏赚的盆满钵满,像愤怒的小鸟一样: 现在公司下一步计划!打造一个以游戏中鸭子个体为模型的玩具工厂!o(∩_∩)o就像愤怒的小鸟毛绒玩具一样~用这个比喻,大家应该会很简单的想象模拟场景。 下面来进入正题!渐进式描述,让大家有个进阶的梯度( ̄︶ ̄)↗ 。 (oh fuck... 阅读全文
posted @ 2013-01-06 09:35 肅 阅读(8157) 评论(40) 推荐(58) 编辑
摘要: 这篇博文是从实际生活中,提炼出来的设计理念,它现在是骨架,现在我加以代码实例,完成程序的血肉,以求让大家活生生的体会设计中的精髓。 自从我们学习面向对象编程以来,它方便了我们的思维思考模式,一个事物具备什么,就以对应的属性及方法加之。( ̄▽ ̄) 没有什么难的,但是你学到的是最基础的语法和连自己都不是很了解的语言,用一段C语言程序,你可以很轻松的把它改成C#,JAVA等,这有什么难的?大多数程序员们扭曲了C#语言,把C的语法都移植到C#上(在我不了解C#的时候,我自己都这么做过),错了不可怕,可怕的是错了还不肯改。 语言是一种工具,学会了都是想通的,但是设计思想不同决定了语言的本质区别。... 阅读全文
posted @ 2012-12-21 09:20 肅 阅读(6784) 评论(58) 推荐(53) 编辑
摘要: C#线程基础在前几篇博文中都介绍了,现在最后来挖掘一下线程池的管理机制,也算为这个线程基础做个完结。 我们现在都知道了,线程池线程分为工作者线程和I/O线程,他们是怎么管理的? 对于Microsoft设计的CLR线程池,线程池会随着CLR的每个版本的发布,都会发生变化,很难去挖掘,这里的提议是: 最好将线程看成一个黑盒。不要拿单个应用程序去衡量这个黑盒的性能,因为它对任何一个应用程序来说都无法做到完美。 相反,它是一种常规用途的线程调度技术,面向大量应用程序;它对某些应用程序的效果要好于其他应用程序。目前,它的工作情况非常理想,这里建议你信任它,因为你很难高出一个比CLR自带的那个更好... 阅读全文
posted @ 2012-12-13 09:55 肅 阅读(12328) 评论(8) 推荐(11) 编辑
摘要: 在上篇最后一个例子之后,我们发现了怎么去使用线程池,调用ThreadPool的QueueUserWorkItem方法来发起一次异步的、计算限制的操作,例子很简单,不是吗? 然而,在今天这篇博客中,我们要知道的是,QueueUserWorkItem这个技术存在许多限制。其中最大的问题是没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成是获得一个返回值,这些问题使得我们都不敢启用这个技术。 Microsoft为了克服这些限制(同时解决其他一些问题),引入了任务(tasks)的概念。顺带说一下我们得通过System.Threading.Tasks命名空间来使用它们。 现... 阅读全文
posted @ 2012-12-11 09:36 肅 阅读(86172) 评论(15) 推荐(35) 编辑
摘要: 网上坑爹的打分工具有木有?我要多个打分啊!一条打分有个毛用啊~网上找了个打分工具,没用啊~!没能满足我的需求,我就自己改了一个。虽然改的不辛苦,但是还是自己摸索出来的~o(∩_∩)o 废话不多说代码贴了:打分的图标样式: 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.or 阅读全文
posted @ 2012-12-04 16:30 肅 阅读(3823) 评论(4) 推荐(2) 编辑
摘要: 线程的创建和销毁都要耗费大量的时间,有什么更好的办法?用线程池!太多的线程浪费内存资源,有什么更好的办法?用线程池!太多线程有损性能,有什么更好的办法?用线程池!(⊙_⊙)?线程池是什么?继前三篇线程基础之后,我们要来学学线程池了。注意,这些信息相当有用!为了设计和实现可伸缩的、可响应的和可靠的应用程序或组建,线程池是你必须采用的核心技术。线程池是CLR的,线程池自动为你管理线程的创建和销毁,线程池创建的一组线程将为各种任务而重用,极大提高了使用线程的成本,这也就意味着,你的应用程序其实只需要几个线程即可完成全部工作。大概的讲了一下,来看看线程池的细节: 大家可以想象一下:一个应用程序就好比. 阅读全文
posted @ 2012-12-04 10:00 肅 阅读(9514) 评论(11) 推荐(8) 编辑
摘要: Windows本身就是一个抢占式操作系统,它的实现,必定有某种算法在里面,比如什么时候调度哪些线程,需要花费多长时间等问题。我们时时在用Windows,作为程序员,我们有必要知道其中最贴近我们的算法。为什么这么说?我们对系统发出的命令,获取信息等操作,Windows为什么能这么快作出反应吗?这仅仅是上下文切换那30毫秒的功劳吗?操作系统能依照人的操作,处理当前用户最迫切的请求,并在最短时间内给出反应,这些原因我们应该知道。 有人会提,这是线程的功劳,对。这是线程的功劳,你在操作的时候,都是线程在处理你的请求,现在来了解下线程的属性吧? 打开开始菜单,win7直接在搜索框中输入spy,然后会.. 阅读全文
posted @ 2012-12-03 09:20 肅 阅读(8771) 评论(16) 推荐(18) 编辑
摘要: 我们都知道,在这个行业,追求的就是用最少的时间学最多的知识,这是我写这个系列最想达到的目标,在最快的时间内,帮助更多的人学习更多的线程知识。 前一篇,讲述了线程基础,给大家铺垫了一个基础,这一篇着重介绍线程的作用及其工作方式,顺便小试牛刀一把。 现在我想提出,最直接的问题是: 为什么要使用线程? 为什么要使用线程?答案只有三点(欢迎补充^_^):使用线程可以将代码同其他代码隔离。这将提高应用程序的可靠性,这不仅仅是应用程序所需要的,更是Windows引入线程的真正原因。使用线程可以简化编程。这个答案有利有弊,需要从两方面考虑:第一点:使用线程的同时也就意味着会付出一些资源作为代价,对... 阅读全文
posted @ 2012-11-30 08:51 肅 阅读(5413) 评论(12) 推荐(10) 编辑