08 2011 档案
摘要:抽象工厂模式(Abstract Factory Pattern)引入:在前面介绍的两个创建型模式里面,我们解决的都是有关"new"的问题,用它们来避免显式指定类创建对象。我写的也非常简单易懂,相信看过的朋友们都应该对简单工厂模式、工厂方法模式的意图、所能解决的问题及适用情景有一定的了解了。但是若要达到灵活运用,什么时候用,怎样用合适还不是看一篇文章就能解决的问题。呵呵..这需要你对OO的理解程度,你的项目开发经验等等许多方面的积累。一起努力喔。。好了,咱们言归正传,通过对这两个模式的了解,我们掌握一种思想,就是在创建一个对象时,需要把容易发生变化的地方给封装起来,来控制变化
阅读全文
摘要:工厂方法模式(Factory Method Pattern)介绍:在简单工厂模式中,我们提到,工厂方法模式是简单工厂模式的一个延伸,它属于Gof23中设计模式的创建型设计模式。它解决的仍然是软件设计中与创建对象有关的问题。它可以更好的处理客户的需求变化。引入我们继续来说"new"的问题,我们在简单工厂模式中,将实例化对象的工作推迟到了专门负责创建对象的工厂类中,这样,在我们事先预知的情况下,可以根据我们的需要动态创建产品类。但是,我们的预知是有限的,客户的变化可能是无限的。所以,就出现了问题,一旦客户的变化超越了我们的预知,我们就必须修改我们的源代码了。这是设计模式所不允许
阅读全文
摘要:昨天参加面试,遇到一个关于new修饰符的题,由于本人不慎,给搞错了,纠其原因,还是因为我的C#基础知识不牢固,关于override与new的区别平时没有太注意。在此,为大家分享一下:代码如下:publicclassbaseClass{publicbaseClass(){Method1();}publicvirtualvoidMethod1(){Console.WriteLine("Method1inbaseClass");}}publicclassderivedClass:baseClass{privateintvalue;publicderivedClass(){valu
阅读全文
摘要:抽象工厂设计模式Client Invokeprotected void btnAbstract_Click(object sender, EventArgs e) { AbstractRoadFactory roadfactory ; roadfactory = new RoadFactory1(); client c1 ; c1 = new client(roadfactory); lblMessage.Text += c1.Run() + "--"; roadfactory = new RoadFactory2(); c1 = new client(roadfactor
阅读全文
摘要:做的一些项目都比较小,而且时间紧,有好多东西都没来得急总结,趁这会还有点时间把前面项目中的用到的知识点分享下,只为以后方便使用。功能:用脚本取CheckBoxList中的值,并用"|"将其分开,之后将取到的值放入文本框,返回数据库做添加或者修改前台页面代码<!--关键字--> <div id="keyWordsDiv" style="border: 2px solid #6FA1D9; display: none; position: absolute; top: 0px; left: 0px; width: 260px; h
阅读全文
摘要:delegate是C#中的一种类型,C# event的处理实际上是一种具有特殊签名的delegate,本文就介绍了C# delegate和C# event。AD:在基于Windows平台的程序设计中,事件(event)是一个很重要的概念。因为在几乎所有的Windows应用程序中,都会涉及大量的异步调用,比如响应点击按钮、处理Windows系统消息等,这些异步调用都需要通过事件的方式来完成。即使在下一代开发平台——.NET中也不例外。那么什么是事件呢?所谓事件,就是由某个对象发出的消息,这个消息标志着某个特定的行为发生了,或者某个特定的条件成立了。比如用户点击了鼠标、socket上有数据到达等。
阅读全文
摘要:简单的测试了一下IE前进和后退的过程.依次访问网站A,B,C,D.后退至 B,然后重新请求网站E,则记录的保存顺序则是 A,B,EC,D将会从记录列表中删除.下面看代码(以下操作均在内存中进行):一个History对象,用来生成一个记录对象,该对象包含 url,title,html三个属性.classHistory{privatestringTitle_="";privatestringWmlSource_="";privatestringUrl_="";publicstringTitle{get{returnTitle_;}set{
阅读全文
摘要:using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; /// <summary> /// DListNode 的摘要说明 /// </summary> pub
阅读全文
摘要:在多线程中,为了使数据保持一致性必须要对数据或是访问数据的函数加锁,在数据库中这是很常见的,但是在程序中由于大部分都是单线程的程序,所以没有加锁的必要,但是在多线程中,为了保持数据的同步,一定要加锁,好在Framework中已经为我们提供了三个加锁的机制,分别是Monitor类、Lock关键字和Mutex类。其中Lock关键词用法比较简单,Monitor类和Lock的用法差不多。这两个都是锁定数据或是锁定被调用的函数。而Mutex则多用于锁定多线程间的同步调用。简单的说,Monitor和Lock多用于锁定被调用端,而Mutex则多用锁定调用端。例如下面程序:由于这种程序都是毫秒级的,所以运行下
阅读全文
摘要:.NET 基础类库的System.Threading命名空间提供了大量的类和接口支持多线程。这个命名空间有很多的类。System.Threading.Thread类是创建并控制线程,设置其优先级并获取其状态最为常用的类。他有很多的方法,在这里我们将就比较常用和重要的方法做一下介绍:Thread.Start():启动线程的执行; Thread.Suspend():挂起线程,或者如果线程已挂起,则不起作用; Thread.Resume():继续已挂起的线程; Thread.Interrupt():中止处于 Wait或者Sleep或者Join 线程状态的线程; Thread.Join():阻塞调用线
阅读全文
摘要:能过URL进行传值.把要传递的信息接在URL上.Post.htm<inputtype="text"name="username"><inputtype="text"name="sex"><inputtype="button"value="Post"><scriptlanguage="javascript">functionPost(){//单个值Read.htm?username=baobao;//多全值Re
阅读全文
摘要:/// <summary> /// 1+2+3+....+n的递归算法 /// </summary> /// <param name="i"></param> /// <returns></returns> public static int Process1(int i) { //计算1+2+3+4+...+100的值 if (i == 0) return 1; if (i == 1) return 1; return Process1(i - 2) + Process1(i - 1); } ///
阅读全文
摘要:我们今天主要向大家介绍的是SQL Server数据库锁,以及对引入SQL Server数据锁的原因以及对锁的区分类别的两种方法的介绍,以下就是具体内容的描述,希望在你今后的学习中会有所帮助。一. 为什么要引入锁当多个用户同时对数据库的并发操作时会带来以下数据不一致的问题:丢失更新A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统脏读A用户修改了数据,随后B用户又读出该数据,但A用户因为某些原因取消了对数据的修改,数据恢复原值,此时B得到的数据就与数据库内的数据产生了不一致不可重复读A用户读取数据,随后B用户读出该数据并修改,此时A用户再读取数据时发现
阅读全文
摘要:在使用MSSql的时候,在多用户的情况下不免要进行并发控制。微软提供了锁机制。这里锁分为两个部分,一个是锁的范围(行锁、页面锁、表锁),另一个是锁的粒度(共享锁、持有锁等)在锁定数据的时候要配合锁的范围和粒度。例如 select * from Table with(RowLock,XLock) where ID=1 就可以将Table的一行设置独占锁。一般情况下在事务的开始可以先使用Update操作一个表的行进行加独占锁。还可以使用应用程序锁来防止多客户端同时执行某个操作。创建应用程序锁 exec SP_GetAppLock @Resource=‘锁名',@LockMode='
阅读全文
摘要:目录基础篇怎样创建一个线程受托管的线程与 Windows线程前台线程与后台线程名为BeginXXX和EndXXX的方法是做什么用的 异步和多线程有什么关联WinForm多线程编程篇我的多线程WinForm程序老是抛出InvalidOperationException ,怎么解决?Invoke,BeginInvoke干什么用的,内部是怎么实现的每个线程都有消息队列吗?为什么Winform不允许跨线程修改UI线程控件的值有没有什么办法可以简化WinForm多线程的开发线程池线程池的作用是什么?所有进程使用一个共享的线程池,还是每个进程使用独立的线程池?为什么不要手动线程池设置最大值?.Net线程池
阅读全文