摘要: 关于笔者对简单工厂模式的分析,可以参考:http://www.cnblogs.com/maodouzi/archive/2010/12/29/1920918.html简单工厂模式的最大缺点,在于:添加一个新的功能类时,简单工厂类需要相应地添加其构造过程。虽然运用某些语言本身的反射和自省机制,可以省却一些改变。但当创建过程越发复杂之后,比如在新类创建之前,需要很多准备工作,而且不同的类,准备过程各个不同。此时,就没有办法再借助反射机制来偷懒,毕竟,反射机制只能根据类名或者方法名,返回相应的类和方法,其它的事,他也干不了。这时候,工厂模式就应运而生。工厂模式和简单工厂模式的区别就在于工厂类。简单工 阅读全文
posted @ 2010-12-30 10:00 毛豆子 阅读(367) 评论(0) 推荐(0) 编辑
摘要: 简单工厂模式的作用是为了把对象的建立和使用分隔开。具体描述如下:简单工厂模式的代码可以分为三块:1. 第一块是在后台工作的一组类的定义,用于向调用者(客户端)提供服务。2. 第二块是简单工厂类,用于创建第一块中提到的类的对象。3. 第三块是客户端,客户端通过第二块中提到的简单工厂类来创建第一块中提到的类的对象,然后在使用这些类的对象来干活。把代码分开是为了解耦合,最终是为了可扩展。什么是可扩展呢?简单地说,当我需要一个新的类,我首先需要在第一块里加上这个一个类的定义(具体操作是添加一个文件,里面包含我要定义的新类)。然后,我需要在第二块中增加这个类的创建过程。随后,我就可以在客户端消费这个类了 阅读全文
posted @ 2010-12-29 17:35 毛豆子 阅读(1868) 评论(0) 推荐(0) 编辑
摘要: 前段时间见过一段代码,用于判断CPU的类型,是Big-Endian还是Little-Endian。代码如下(小端返回1,大端返回0):[代码]这段代码巧妙地利用了C语言中联合的特点,联合中的元素总是从低字节开始分配。但是这一特征我没有在TCPL上找到,不是到是不是与编译器的实现有关。但是C语言数组元素的地址分配却与CPU无关,无论大端小端,都是从低地址往高地址分配依次分配数组元素。所以,可以利用这... 阅读全文
posted @ 2010-10-17 12:54 毛豆子 阅读(1176) 评论(0) 推荐(0) 编辑
摘要: C语言的内存分配方式在X86架构的CPU上是小端存放,低位存在低字节,高位存在高字节,在ARM上大小端均支持。以前经常会忘记,今天用到 memset 函数,可以很容易地推断出结论。代码如下:[代码]在X86的机器上输出结果如下:testArray[0] --> 3221203424testArray[1] --> 3221203428testArray[2] --> 322120... 阅读全文
posted @ 2010-10-15 17:32 毛豆子 阅读(1450) 评论(0) 推荐(0) 编辑
摘要: Artistic Style是一款GNU的排版工具。支持Windows,Linux,Mac OS平台,能单独使用,也可以嵌入source Insight等IDE工具使用,非常强大。用法如下:1. 单个文件:astyle --style=ansi –s4 -S -N -L -m0 -M40 -U --convert-tabs --suffix=.pre hello.c--style=an... 阅读全文
posted @ 2010-09-26 10:58 毛豆子 阅读(3939) 评论(2) 推荐(0) 编辑
摘要: 1. 配置在工作站上做事情,不能用root为所欲为了,呵呵。在自己的目录下新建一个vim的配置文件吧。touch ~/.vimrc编辑内容如下:syntax onset hlsearchset tabstop=4"set nuset softtabstop=4set shiftwidth=4set expandtabset cindentset ai基本够用了,以后不够再添吧。注意:语法颜色不是及... 阅读全文
posted @ 2010-09-20 14:11 毛豆子 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 又要用clearcase来做事了,点点滴滴都记录下来,以备查考(注:还是喜欢svn)。1. 简写  为了避免输入clearcase云云,特此简写!在~/.bashrc中追加输入如下内容:[代码]2. mkview.py 内容[代码]3. setview.py 内容[代码]4. create_dev_branch.pl 就不贴了。 阅读全文
posted @ 2010-09-20 09:46 毛豆子 阅读(826) 评论(0) 推荐(0) 编辑
摘要: 1. Queue  Queue实现了一个线程安全的队列。其中get和put是两个最常用的方法。  get和put方法均有两个参数block和timeout。  先说get,当block为True,若timeout为None(默认),则Queue中没有item即阻塞,直到Queue中有item可取;若timeout为一个数,则阻塞timeout时间,若时间到了仍然没有item,就raise exce... 阅读全文
posted @ 2010-08-09 10:41 毛豆子 阅读(401) 评论(0) 推荐(0) 编辑
摘要: 在Unix/Linux系统中,创建一个子进程使用fork。当需要用exec另起门户的时候,fork的复制开销纯属多余,所以有了vfork。如果担心fork开销大,为什么不直接在thread里面用exec呢?换句话说,在这种情景下,vfork比thread好在哪? 阅读全文
posted @ 2010-08-09 10:19 毛豆子 阅读(309) 评论(0) 推荐(0) 编辑
摘要: 去英特尔面试,被无声无息了。据说是headcount取消了,呜呜。发出上机题,供广大程序兄弟参考。题目(上机,一个小时时间):输入一串数字,如:3 3 1 2 3 4 5 6 7 8 9第一个数字表示行数,第二个表示列数,后面的表示矩阵里的值。生成的矩阵如下:1 2 34 5 67 8 9然后按顺时针方向螺旋输出,在上面的例子中,顺序是:1 2 3 6 9 8 7 4 5要求输入输出如下:Inpu... 阅读全文
posted @ 2010-07-22 11:00 毛豆子 阅读(1301) 评论(3) 推荐(0) 编辑