上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 24 下一页
摘要: CLR非异步操作读取文件的过程图非异步操作主要是因为每次请求硬件如(硬盘,网卡等)的线程都处于阻塞状态,导致以后的请求都需要重新创建新的线程。导致线程上下文的切换频繁。异步IO操作主要是通过每次的请求完硬件创造好IRP,线程就会返回到线程池中,将来硬件完成任务时,会主动去线程池中找线程来继续完成的操作。这样返回到线程池的线程就可以去做自己的事情了。可以使用一个去本市旅游乘车的例子来说明:可以请一班车,送到旅游地方,车该去哪里去哪里,回去的时间给公交公司打电话,来一辆车,这样不用让来的那个车在旅游地点一直等着,造成资源的浪费。下面是使用IO异步操作的一个实例{m_pipe.BeginRead(d 阅读全文
posted @ 2013-11-13 18:30 haiziguo 阅读(421) 评论(0) 推荐(0) 编辑
摘要: 线程基础进程是一个应用程序实例要使用资源的集合。无法与windows内核的数据和代码沟通,维持系统的健壮性。线程是一个虚拟的cpu,防止和其他的程序混在一起,最终是操作系统瘫痪掉。线程的要素:线程内核对象、线程环境块、用户模式栈、内核模式栈、Dll线程链接和线程分离通知。A、线程内核对象:每个线程初始化时都带有这种数据结构。数据结构包括描述线程的属性和线程上下文(上下文是内存块,主要包含CPU的寄存器集合,寄存器是cpu的组成部分,可以用来暂存指令,数据和地址。)B、线程环境块:是在用户模式中分配和初始化的内存块(内存是是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据)C、用 阅读全文
posted @ 2013-11-13 10:53 haiziguo 阅读(913) 评论(0) 推荐(0) 编辑
摘要: 一、模板方法模式定义模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。从定义中,应该可以看出一部分,为了更好理解,下面就直接上例子:二、模板方法例子在敲代码时,累了喝杯咖啡或者喝杯茶,会精神倍增。其实无论咖啡还是茶在冲的时间都是有讲究的。这个在本文不是重点。下面分别描述一下冲泡咖啡和冲泡茶的过程:两种茶其分别的做法如下代码: 1 public class Coffee 2 { 3 public void PrepareRecipe() 4 { 5 //烧水 6... 阅读全文
posted @ 2013-11-03 00:25 haiziguo 阅读(6062) 评论(1) 推荐(3) 编辑
摘要: 为什么要把适配器模式和外观模式放在同一篇文章中,主要是其相对前面的几个模式来讲会简单些并且具有相似之处。下面就分别通过例子来看理解一下两种模式,然后再进行对其进行比较。一、适配器模式1.1适配器模式的定义适配器模式定义:将一个类的接口,转化成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。感觉是从定义就可以看出来怎么实现的设计模式。简单的来说就是把不符合要求的类,通过实现期望的接口来来达到以假乱真的效果。好了,废话不多说,还是通过例子来说明。1.2适配器的例子最常见的例子是三孔插座和两孔插座,如果墙上有一个三孔插座,但是我们的充电器又只能使用两孔的插座,那么我们通常是接一条带有两 阅读全文
posted @ 2013-11-01 18:34 haiziguo 阅读(3986) 评论(6) 推荐(3) 编辑
摘要: 一、命令模式定义命令大家都不会陌生,那么在开始命令模式之前,可以想象一下生活中的命令模式的特点:如老板命令你完成一个OA项目是一个命令,接着看看其特点:1、在上面的命令中,命令的执行者肯定是聪明的你了。具体的执行方法,可能是通过vs实现,或者是通过eclipse实现,由此看来:命令要有个命令的执行者,还要有个命令的执行方法。2、命令的发出者很明显是老板,老板还有个发出方法,可能是通过电话给你说,也可能给你邮件给你说,也可能是通过开会给你说。所以命令的发出者要有一个命令,还要有个发出的方法。3、最后看看命令,命令有个名字,命令的肯定要执行。而且命令是在boss给你发出通知后执行的。接下来看看命令 阅读全文
posted @ 2013-10-29 23:27 haiziguo 阅读(28295) 评论(3) 推荐(2) 编辑
摘要: 所谓工厂,肯定是和生产有关。工厂模式主要包括工厂方法模式和抽象工厂模式,有些人把简单工厂也作为一种模式,在本文我分别讨论简单工厂模式,工厂方法模式,抽象工厂模式。这些模式中同样也和生产有关。接下来,我们来看看各种工厂的特点。简单工厂模式上面说了只是有些人把简单工厂看做是设计模式,其实是一种编程习惯,无论是否是设计模式,本文将先看看其用法,然后简单给出其类图,最后说出其特点。本节将面对多种比萨,先看看当顾客需要一个比萨时的过程:1.根据类型,制作一个比萨形状。2.然后进行烘烤3.切4.打包如果不熟悉的话,完全可以把其想想成面包的做法。当顾客根据自己的需求要一个比萨时,用代码模拟这个过程如下:pu 阅读全文
posted @ 2013-10-17 21:22 haiziguo 阅读(2940) 评论(1) 推荐(1) 编辑
摘要: 上面实例代码展示如何将tabitem中的字段绑定到menuitem上,先通过TemplateBinding获取属性值赋值到DataContext属性,然后再通过指定的控件类型和第几个来绑定IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ContextMenu},AncestorLevel=1},Path=DataContext}" >具体说明可以参考:http://www.cnblogs.com/lzhp/archive/2012/09/11/26 阅读全文
posted @ 2013-10-13 12:07 haiziguo 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 装饰者模式定义装饰者模式动态的将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。从定义来看,除了提到比继承更有弹性,其他的还是非常模糊,下面就先给出其UML类图。从UML类图可以看到装饰者基类(Decorator)主要使用了一个其基类的组合,另外装饰者分别含有自己的新特性,如ConcreteDecoratorA,有自己特有的字段,ConcreteDecoratorB有自己特有的方法。该模式设计的巧妙的地方就在于以上的特点。为什么说巧妙呢?因为装饰者都含有一个Component的引用,就好比你是老板要找c#开发的,遇到了一个不仅会c#的,还会java的你一样,这样的好处是不 阅读全文
posted @ 2013-10-09 23:18 haiziguo 阅读(1849) 评论(2) 推荐(2) 编辑
摘要: 单个字符的匹配一.单个字符或字符串二.匹配任意的字符使用“.”,可以像.ea来匹配所有三个字符,三个字符中第一个字符是任意的。如果想单个字符的话,可以使用[dt],匹配d或t。三.匹配区间[a-z][0-9]如果是想即表示字母和数字的话,[0-9a-z]四.可以使用^来表示取反,经常和单个字符使用或范围模式使用如[^a]:表示不为a的匹配,[^1-3^a-z]表示不为1-3和a-z的匹配。注意^的优先级是最弱的,也就是其他的匹配完才会匹配。五.匹配特殊字符,可以使用转义字符\,如果经常写[0-9]或者[^0-9]还是比较累的。现在给出其简化形式\d,\D,字母数字下划线的写法为[a-z0-9A 阅读全文
posted @ 2013-10-09 10:07 haiziguo 阅读(352) 评论(0) 推荐(1) 编辑
摘要: 1.1观察者模式定义在给出观察者模式的定义之前,我们先来看个报纸和杂志的订阅是怎么回事:1.报社的业务就是出版报纸2.向某家报社订阅报纸,只有新报纸出版,报社才会送给你,只要你是用户,他就会一直向你发送。3.当你不向看报纸了,取消订阅,他们就不会发送报纸。4.只要报社还在运营,就会有人订阅报纸或取消报纸订阅其实这个过程就和我们的观察者模式的过程相似。所以我们可以简单的将观察者模式定义为:出版社+订阅者=观察者模式这个毕竟是简单的,下面我们给出正式的定义:观察者模式定义了对象之间的一对多依赖,当一个被依赖者改变状态时,他所有的依赖者都会收到通知并自动更新。通过出版社和正式定义应该很容易理解观察者 阅读全文
posted @ 2013-10-06 15:01 haiziguo 阅读(1840) 评论(0) 推荐(2) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 24 下一页