2011年10月21日

摘要: Mutex是提供同步访问多个进程的一个类。和Monitor极其类似。相同点:Mutex和Monitor都只能有一个线程拥有锁定。区别:Mutex可用于进程内的线程同步,也可用于进程同步,一般用于进程同步。Monitor则只能用于进程内的线程同步。当进行进程内的线程同步时,优先选择Monitor。因为Monitor应用在用户模式下的线程同步技术,而Mutex是应用于内核级别的线程同步技术,线程的执行是在用户模式下执行的,而要切换到内核模式大概要消耗1000个CPU时钟,所以进行进程内的线程同步时优先选择Monitor,而进行进程间的同步时,Mutex是不二之选。当声明Mutex时必须指定名称,否 阅读全文
posted @ 2011-10-21 00:15 李国清 阅读(6351) 评论(2) 推荐(0) 编辑

2011年10月16日

摘要: semaphore 可用于进程间同步也可用于同一个进程间的线程同步。semaphore 非常类似于mutex ,共同点:semaphore和mutex都是内核对象,都可用于进程间的同步,并且都特别占用系统资源(线程的同步包括用户模式下的同步和内核模式下的同步,如果用内核对象来同步被保护的资源,系统需要从用户模式切换到内核模式,这个时间大概是1000个cpu周期)。区别为:mutex只能由一个线程(进行)访问被保护的资源。semaphore 是一种带计数的mutex的锁定,可定义同时访问被保护的资源的线程数。信号量有一个使用计数器,这个使用计数器,是信号量的最大资源计数和当前资源计数的差值。信号 阅读全文
posted @ 2011-10-16 23:06 李国清 阅读(14715) 评论(6) 推荐(5) 编辑

2011年10月15日

摘要: lock(obj) 锁定 obj 对象lock(this) 锁定 当前实例对象,如果有多个类实例的话,lock锁定的只是当前类实例,对其它类实例无影响。直接上代码。主窗体代码如下:delegate void SetTextCallback(string text); public Form1() { InitializeComponent(); } /// <summary> /// 利用委托设置 文本框内容 /// </summary> /// <param name="t... 阅读全文
posted @ 2011-10-15 23:41 李国清 阅读(30242) 评论(15) 推荐(11) 编辑
摘要: delegate void SetTextCallback(string text); public Form1() { InitializeComponent(); } public void SetText(string text) { if (this.textBox1.InvokeRequired) { SetTextCallback d = new SetTextCallback(SetText); ... 阅读全文
posted @ 2011-10-15 21:47 李国清 阅读(4242) 评论(0) 推荐(0) 编辑

2011年9月18日

摘要: 参考:http://zhidao.baidu.com/question/2199616.html?an=0&si=5十天干:甲、乙、丙、丁、戊、己、庚、辛、壬、癸。十二地支:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。干支还是阴阳之分:甲、丙、戊、庚、壬为阳干,乙、丁、己、辛、癸为阴干;子、寅、辰、午、申、戌为阳支,丑、卯、巳、未、酉、亥为阴支。以一个天干和一个地支相配,排列起来,天干在前,地支在后,天干由甲起,地支由子起,阳干配阳支,阴干配阴支(阳干不配阴支,阴干不配阳支),共有六十个组合,称为“六十甲子”。1.甲子 2.乙丑 3.丙寅 4.丁卯 5.戊辰 6.己巳 7.庚午 8 阅读全文
posted @ 2011-09-18 10:51 李国清 阅读(8777) 评论(0) 推荐(0) 编辑
摘要: 速查干支纪日法: G = 4C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d - 3 Z = 8C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i 其中 C 是世纪数减一,y 是年份后两位,M 是月份,d 是日数。1月和2月按上一年的13月和14月来算。奇数月i=0,偶数月i=6。G 除以10的余数是天干,Z 除以12的余数是地支。 计算时带[ ]的数表示取整。 例如:查2011年1月18日干支日。 将数值代入计算公式。 G =4*(21-1) + [20 / 4] + 5*. 阅读全文
posted @ 2011-09-18 10:08 李国清 阅读(7993) 评论(2) 推荐(0) 编辑

2011年9月9日

摘要: -申明一个游标DECLARE MyCursor CURSOR FOR SELECT TOP 5 FBookName,FBookCoding FROM TBookInfo--打开一个游标 OPEN MyCursor--循环一个游标DECLARE @BookName nvarchar(2000),@BookCoding nvarchar(2000) FETCH NEXT FROM MyCursor INTO @BookName,@BookCodingWHILE @@FETCH_STATUS =0 BEGIN print 'name'+@BookName FETCH NEXT FRO 阅读全文
posted @ 2011-09-09 11:01 李国清 阅读(314) 评论(0) 推荐(0) 编辑

2011年9月5日

摘要: 关于抽象的笔记1、把问题的本质和其细节分离。忘掉细节,集中关注于根本的问题。什么是根本的问题?根本的问题即流程。关注流程。2、不基于行为的划分基本上都是严重错误的。正是系统的行为为我们提供了第一个关于应该如何划分系统的线索3、关联是对象之间发送消息的路径。关联和物理实体的流向没有任何关系。 阅读全文
posted @ 2011-09-05 23:41 李国清 阅读(325) 评论(0) 推荐(0) 编辑

2011年9月4日

摘要: 1、单一职责 不论是在设计类,接口还是方法,单一职责都会处处体现,单一职责的定义:我们把职责定义为系统变化的原因。所有在定义类,接口,方法的时候。定义完以后再去想一想是不能多于一个的动机去改变这个类,接口,方法。如果答案是肯定的,说明定义的类,接口,方法则多于一个职责。故违背单一职责,遇到这种情况应该重新细分职责,直到不会出现多种职责的类,接口方法为止(发现职责,并把那些职责相互分离)。单一职责的为最简单的五种原则之一。在软件设计的过程中处处体现。无处不在。2、开闭原则 开闭原则是指类、模块、方法是可以扩展的,但不可以修改。开即对扩张开放,闭即对修改关闭。开闭原则的应用体现在,开发人员应该.. 阅读全文
posted @ 2011-09-04 00:13 李国清 阅读(6043) 评论(2) 推荐(0) 编辑

2011年9月2日

摘要: 第一段程序: public static void change(int[] arr) { // both of the following changes will affect the original variables: arr[0] = 888; arr = new int[5] { -3, -1, -2, -3, -4 }; Console.WriteLine((arr[0]).ToString()); } public static void Main() { int[] myarray = new int[3]; myarray[0] = 1; myarray[1] = 4;. 阅读全文
posted @ 2011-09-02 02:43 李国清 阅读(393) 评论(3) 推荐(0) 编辑

导航