12 2012 档案
摘要:这篇博文是从实际生活中,提炼出来的设计理念,它现在是骨架,现在我加以代码实例,完成程序的血肉,以求让大家活生生的体会设计中的精髓。 自从我们学习面向对象编程以来,它方便了我们的思维思考模式,一个事物具备什么,就以对应的属性及方法加之。( ̄▽ ̄) 没有什么难的,但是你学到的是最基础的语法和连自己都不是很了解的语言,用一段C语言程序,你可以很轻松的把它改成C#,JAVA等,这有什么难的?大多数程序员们扭曲了C#语言,把C的语法都移植到C#上(在我不了解C#的时候,我自己都这么做过),错了不可怕,可怕的是错了还不肯改。 语言是一种工具,学会了都是想通的,但是设计思想不同决定了语言的本质区别。...
阅读全文
摘要:C#线程基础在前几篇博文中都介绍了,现在最后来挖掘一下线程池的管理机制,也算为这个线程基础做个完结。 我们现在都知道了,线程池线程分为工作者线程和I/O线程,他们是怎么管理的? 对于Microsoft设计的CLR线程池,线程池会随着CLR的每个版本的发布,都会发生变化,很难去挖掘,这里的提议是: 最好将线程看成一个黑盒。不要拿单个应用程序去衡量这个黑盒的性能,因为它对任何一个应用程序来说都无法做到完美。 相反,它是一种常规用途的线程调度技术,面向大量应用程序;它对某些应用程序的效果要好于其他应用程序。目前,它的工作情况非常理想,这里建议你信任它,因为你很难高出一个比CLR自带的那个更好...
阅读全文
摘要:在上篇最后一个例子之后,我们发现了怎么去使用线程池,调用ThreadPool的QueueUserWorkItem方法来发起一次异步的、计算限制的操作,例子很简单,不是吗? 然而,在今天这篇博客中,我们要知道的是,QueueUserWorkItem这个技术存在许多限制。其中最大的问题是没有一个内建的机制让你知道操作在什么时候完成,也没有一个机制在操作完成是获得一个返回值,这些问题使得我们都不敢启用这个技术。 Microsoft为了克服这些限制(同时解决其他一些问题),引入了任务(tasks)的概念。顺带说一下我们得通过System.Threading.Tasks命名空间来使用它们。 现...
阅读全文
摘要:网上坑爹的打分工具有木有?我要多个打分啊!一条打分有个毛用啊~网上找了个打分工具,没用啊~!没能满足我的需求,我就自己改了一个。虽然改的不辛苦,但是还是自己摸索出来的~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
阅读全文
摘要:线程的创建和销毁都要耗费大量的时间,有什么更好的办法?用线程池!太多的线程浪费内存资源,有什么更好的办法?用线程池!太多线程有损性能,有什么更好的办法?用线程池!(⊙_⊙)?线程池是什么?继前三篇线程基础之后,我们要来学学线程池了。注意,这些信息相当有用!为了设计和实现可伸缩的、可响应的和可靠的应用程序或组建,线程池是你必须采用的核心技术。线程池是CLR的,线程池自动为你管理线程的创建和销毁,线程池创建的一组线程将为各种任务而重用,极大提高了使用线程的成本,这也就意味着,你的应用程序其实只需要几个线程即可完成全部工作。大概的讲了一下,来看看线程池的细节: 大家可以想象一下:一个应用程序就好比.
阅读全文
摘要:Windows本身就是一个抢占式操作系统,它的实现,必定有某种算法在里面,比如什么时候调度哪些线程,需要花费多长时间等问题。我们时时在用Windows,作为程序员,我们有必要知道其中最贴近我们的算法。为什么这么说?我们对系统发出的命令,获取信息等操作,Windows为什么能这么快作出反应吗?这仅仅是上下文切换那30毫秒的功劳吗?操作系统能依照人的操作,处理当前用户最迫切的请求,并在最短时间内给出反应,这些原因我们应该知道。 有人会提,这是线程的功劳,对。这是线程的功劳,你在操作的时候,都是线程在处理你的请求,现在来了解下线程的属性吧? 打开开始菜单,win7直接在搜索框中输入spy,然后会..
阅读全文