摘要: 访问世纪流年BLOG站时看到的一段文字,对设计模式的解释很风趣,能够让人很快的了解其含义,学到了不少东西,以下是文章的内容:创建型模式 1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory 工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如何创建及如何向客户端提供。 2、BUILDER—MM最爱听的就是“我爱你”这句话了,见 阅读全文
posted @ 2013-02-13 21:42 Tony.J 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 参考了这篇博客的内容和思路:http://www.cnblogs.com/nokiaguy/archive/2013/01/29/2881476.html有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。算法实现的基本思路三种情况:全负数 全正数 正负皆有1:取最右 时间复杂度为o(1)2:取最左 时间复杂度为o(1)3:二分查找0, 找到为最小,否则最后查找区间,左右取绝对值最小,时间复杂度为o(log 阅读全文
posted @ 2013-02-13 21:36 Tony.J 阅读(214) 评论(0) 推荐(0) 编辑
摘要: .NET中的枚举我们一般有两种用法,一是表示唯一的元素序列,例如一周里的各天;还有就是用来表示多种复合的状态。这个时候一般需要为枚举加上[Flags]特性标记为位域,例如:[Flags] enum Styles{ ShowBorder =1, //是否显示边框ShowCaptio... 阅读全文
posted @ 2013-02-13 21:31 Tony.J 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 如何控制好多个线程相互之间的联系,不产生冲突和重复,这需要用到互斥对象,即:System.Threading 命名空间中的 Mutex 类。我们可以把Mutex看作一个出租车,乘客看作线程。乘客首先等车,然后上车,最后下车。当一个乘客在车上时,其他乘客就只有等他下车以后才可以上 车。而线程与Mute... 阅读全文
posted @ 2013-02-13 21:30 Tony.J 阅读(167) 评论(0) 推荐(0) 编辑
摘要: Timer类:设置一个定时器,定时执行用户指定的函数。定时器启动后,系统将自动建立一个新的线程,执行用户指定的函数。初始化一个Timer对象:Timer timer = new Timer(timerDelegate, s,1000, 1000);// 第一个参数:指定了TimerCallback ... 阅读全文
posted @ 2013-02-13 21:29 Tony.J 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 在多线程的程序中,经常会出现两种情况:一种情况: 应用程序中,线程把大部分的时间花费在等待状态,等待某个事件发生,然后才能给予响应这一般使用ThreadPool(线程池)来解决;另一种情况:线程平时都处于休眠状态,只是周期性地被唤醒这一般使用Timer(定时器)来解决;ThreadPool类提供一个... 阅读全文
posted @ 2013-02-13 21:28 Tony.J 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。C#提供了一个关键字lock,它可以把一段代码定义为互斥段(critical section),互斥... 阅读全文
posted @ 2013-02-13 21:25 Tony.J 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 下面我们就动手来创建一个线程,使用Thread类创建线程时,只需提供线程入口即可。(线程入口使程序知道该让这个线程干什么事)在C#中,线程入口是通过ThreadStart代理(delegate)来提供的,你可以把ThreadStart理解为一个函数指针,指向线程要执行的函数,当调用Thread.St... 阅读全文
posted @ 2013-02-13 21:22 Tony.J 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 什么是进程?当一个程序开始运行时,它就是一个进程,进程包括运行中的程序和程序所使用到的内存和系统资源。 而一个进程又是由多个线程所组成的。什么是线程?线程是程序中的一个执行流,每个线程都有自己的专有寄存器(栈指针、程序计数器等),但代码区是共享的,即不同的线程可以执行同样的函数。什么是多线程?多线程... 阅读全文
posted @ 2013-02-13 21:21 Tony.J 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 首先,我觉得,一个概念,如果不理解也不影响使用的话,那么,就没必要去理解 它、去学习它。闭包就是这样一个概念,你不理解它也能很好的用它。俺这两年写as3程序,是天天在和它打交道,甚至有过一个function套一个,一个 方法中套了20多个function的极端例子,但从未深究过它是怎么实现的,它就像... 阅读全文
posted @ 2013-02-13 20:14 Tony.J 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 假设一个xml文件内容如下: 张三 18 李四 20 创建xml代码如下:private void button1_Click(object sender, EventArgs e) { XmlDocu... 阅读全文
posted @ 2013-02-13 20:09 Tony.J 阅读(392) 评论(0) 推荐(0) 编辑
摘要: 昨天是演示了下简单的委托应用,还有一些比较比较稍微复杂一点委托应用或者委托协变~所谓委托协变,对于那些有着继承关系的类,为了避免在建立一个子类的 委托类型用来只想返回该子类的方法,我们可以使用委托协变~ 协变允许方法具有的派生返回类型比委托中定义的更多。逆变允许方法具有的派生参数类型比委托类型中的更... 阅读全文
posted @ 2013-02-13 20:05 Tony.J 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 时间越长越感觉自己学习的只是还是太少啊~,最近看了Head First这本书(好书啊有木有),这本书里面有个装饰者模式,用到了委托...突然想起来~以前一直用过,但是具体为什么用也没仔细想过,以前看了很多 网上的学习资料说委托,MSDN上的专业资料可能写的很全但有的人会感觉太抽象。 所谓委托:... 阅读全文
posted @ 2013-02-13 20:02 Tony.J 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 界面:源码:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.... 阅读全文
posted @ 2013-02-13 18:26 Tony.J 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 在开发基于三层架构的项目初期,都会按照数据库的表结构定义一堆的实体类,但是一个表里有那么多的字段,一个库又有那么多个表,建这些实体类的工作量不少,作为一个懒人,肯定想些法子解决这么麻烦的问题。写一个实体生成器。 为了生成器能兼容各仲类型的数据库,我把生成器的架构定义成如下形式 还是说明一下吧!在... 阅读全文
posted @ 2013-02-13 17:07 Tony.J 阅读(819) 评论(0) 推荐(0) 编辑
摘要: 一:什么是异常以及为什么要用异常在异常机制出现之前,应用程序普遍采用返回错误代码的方式来通知调用者发生了异常。本节将首先阐述为什么要用抛出异常的方式来代替返回错误代码的方式。对于一个成员方法而言,它要么执行成功,要么执行失败。成员方法执行成功的情况很好理解,但是如果执行失败了却并没有那么简单,因为我... 阅读全文
posted @ 2013-02-13 17:02 Tony.J 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 到此为止,打老鼠游戏还不能保存每次游戏的成绩,我们今天完成的任务就是要存储成绩到SQLSERVER的数据库中。一:数据库设计在上节课中,我们已经知道了如何创建数据库,所有,先创建数据库“MouseGame”,然后,按如下的数据格式建立一个数据表(表名:GameRecord):二:数据库读写数据库的读... 阅读全文
posted @ 2013-02-13 17:01 Tony.J 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 仿佛到了更进一步的时候了,每一个程序员迟早都会遇到数据存储的问题。我们拿什么来存储程序产生的数据?举例来说,用什么来存储我们的打老鼠游戏每次的成绩呢?选择如下:1:内存中。缺点,退出游戏,数据就没了;2:文件中。好办法!缺点,自己解析文本,把文本变成我们程序中的数据,这个解析的过程叫做协议。协议这个... 阅读全文
posted @ 2013-02-13 17:00 Tony.J 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 没有规矩,不成方圆。在代码的世界中,尤其这样。作为程序员,我们不想让我们的代码写出去之后被人耻笑:看,连个换行都换的这么不专业。作为开发主 管,我们则不想我们的组员写出来的代码各类风格都有,五颜六色的,极其丑陋。写出规范的代码,首先需要训练,其次,也有一定的手段或者工具来进行辅助。本 小节,我们就要... 阅读全文
posted @ 2013-02-13 16:55 Tony.J 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 有了上面两节的知识,尤其是第六节《.NET C# 在线培训之零基础入门 06:面向对象入门》,现在我们回过头看我们的打老鼠游戏,我们是不是会发现:这个程序也太不面向对象了。我们所有的代码逻辑都分布在Code-Hide中(UI的后台代码,称之为Code-Hide)。并且,UI的后台代码又负责显示,又负... 阅读全文
posted @ 2013-02-13 16:54 Tony.J 阅读(233) 评论(0) 推荐(0) 编辑