saville

博客园 首页 新随笔 联系 订阅 管理

2011年9月14日 #

摘要: 一、概述在软件开发中,对某一项操作往往有固定的算法结构,而具体的子步骤会因为不同的需要而有所不同。如何可以在稳定算法结构的同时来灵活应对子步骤变化的需求呢?二、模板方法模板方法是一种常见的设计模式,它定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法的结构图如下AbstractClass是抽象类,定义了抽象的操作ConcreteClass实现了抽象操作中与子类相关的特定步骤。三、示例在这里以实现一个公司的薪资系统为例介绍一下模板方法的应用。首先定义抽象类,一般建议将抽象的操作定义为非虚public方法,将子类需要定 阅读全文
posted @ 2011-09-14 14:34 saville 阅读(9936) 评论(2) 推荐(0)

2011年8月17日 #

摘要: 一、概述通常来说,“行为请求者”与“行为实现者”是紧耦合的。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这些情况下,将“行为请求者”与“行为实现者”解耦,实现二者之间的松耦合就至关重要。命令模式是解决这类问题的一个比较好的方法。二、命令模式命令模式将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。命令模式的结构图如下Command定义了命令的接口ConcreteCommand实现Command接口,定义了具体的命令Client用于创建具体的命令并设定接收者Invoker要求 阅读全文
posted @ 2011-08-17 10:20 saville 阅读(3839) 评论(1) 推荐(0)

2011年7月19日 #

摘要: 一、例子在软件开发中,我们往往会想要给某一类对象增加不同的功能。比如要给汽车增加ESP、天窗或者定速巡航。如果利用继承来实现,就需要定义无数的类,Car,ESPCar,CCSCar,SunRoofCar,ESPCCSCar……很容易就导致“子类爆炸”问题。上述“子类爆炸”问题的根源在于该解决方案利用继承来扩展功能,缺乏灵活性。那么如何能在扩展功能的同时避免“子类爆炸”呢?二、装饰者模式装饰者模式装饰者模式可以动态地给一个对象增加一些额外的职责。就增加功能来说,装饰者模式相比生成子类更为灵活。装饰者模式的结构图如下Component定义了一个接口,可以利用Decorator为实现了这个接口的对象 阅读全文
posted @ 2011-07-19 17:17 saville 阅读(7867) 评论(9) 推荐(0)

2011年6月3日 #

摘要: 前阵子,运行一个执行ETL处理的SSIS包时一直报错:“The buffer manager cannot create a temporary storage file on any path in the BufferTempStoragePath property. There is an incorrect file name or no permission.”,“A buffer failed while allocating 4062864 bytes.”,“Error 0x8007000E while loading package file "D:\SSIS\ETL 阅读全文
posted @ 2011-06-03 09:20 saville 阅读(994) 评论(0) 推荐(0)

2011年5月22日 #

摘要: 委托是C#中的一种类型,它类似于C++中的函数指针,不同的是委托是类型安全的。在实际应用中,委托一个很大的作用就是实现了对方法变化的封装。前阵子我就碰到了一个例子,改动一下拿出来进行演示。需求大体是这样的,根据提供的人员名单得出这些人员手机号码的列表,人员与手机号码的对应关系保存在数据库中。很简单的一个需求,实现代码如下:View Code 1 public IList<string> GetSMSList(List<string> userList)2 {3 List<string> phoneList =new List<string>(); 阅读全文
posted @ 2011-05-22 11:08 saville 阅读(380) 评论(0) 推荐(0)

2011年4月20日 #

摘要: 上个月进行了一次SQL Server2000数据库服务器的迁移。由于过去做过类似的事情,因此没当一会事,结果在迁移过程中犯错,受到小小的惊吓。原来的迁移计划如下:先是在新的服务器上安装SQL Server2000,其中数据文件目录结构与原服务器保持一致,接着停止新旧2台服务器的SQL Server服务,并将数据文件由原服务器拷至新服务器,最后关闭原服务器,启动新服务器的SQL Server服务并将机器名和ip地址改成原服务器一样。可是在迁移过程中却碰到了不止一次的麻烦。首先,当我准备拷数据文件时,突然发现安装新服务器的SQL Server2000时忘了更改数据文件路径,导致目录结构与原服务器不 阅读全文
posted @ 2011-04-20 20:57 saville 阅读(2090) 评论(0) 推荐(0)

2011年3月18日 #

摘要: NoRM是.NET平台下MongoDB的第三方驱动,可以使用强类型的类操作MongoDB。使用NoRM非常简单,只需要在工程中引用Norm.dll即可。下面来看一个例子。首先建立一个表示人员信息的模型View Code class Person { [MongoIdentifier] publicstring ID { get { return _id; } } publicstring Name { get; set; }... 阅读全文
posted @ 2011-03-18 16:16 saville 阅读(801) 评论(0) 推荐(0)

2011年2月6日 #

摘要: .NET 4.0增加了不少新特性,并行计算库TPL的引入就是其中之一。TPL不仅大幅提升了并行计算的效率,同时也使得并行计算代码的编写更为简单和方便。最近对此进行了一个小小的测试。首先进行一下简单计算的测试,实现从1到10000000的累加。代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->staticvoid SimpleTest(){ Stopwatch watch =new Stopwatch(); watch.Start();... 阅读全文
posted @ 2011-02-06 20:21 saville 阅读(609) 评论(0) 推荐(0)

2011年1月9日 #

摘要: 去年,尝试使用了Nginx和Keepalived实现web负载均衡,现将部署心得总结一下1.安装Linux2. 为了确保能在Nginx 中使用正则表达式进行更灵活的配置,需要先安装Pcre。依次执行下列命令完成安装# tar zxvf pcre-8.10.tar.gz# cd pcre-8.10#./configure# make# make install需要将libpcre.a和libpcre.la拷到.lib目录下# mkdir /usr/local/lib/.libs# cp /usr/local/lib/libpcre.a /usr/local/lib/.libs/libpcre.a 阅读全文
posted @ 2011-01-09 20:18 saville 阅读(10944) 评论(0) 推荐(0)