上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 25 下一页

2013年7月14日

结构型模式概述(Structural Pattern)

摘要: 结构型模式可以描述两种不同的东西:类与类的实例。结构型模式可以分为类结构型模式和对象结构型模式。类结构型模式关心类的组合,可以由多个类组合成一个更大的系统,在类结构型模式中只存在继承关系和实现关系;对象型结构型模式关心类与对象的组合,通过关联关系在一个类中定义另一个类的实例作为成员对象,再调用所定义的成员对象的方法;根据“合成复用原则”,在系统中尽量使用关联关系来替代继承关系,因此大部分结构型模式都是对象结构型模式。 阅读全文

posted @ 2013-07-14 10:20 阿加 阅读(351) 评论(0) 推荐(0) 编辑

适配器模式(Adapter Pattern)----------结构型模式

摘要: 对象适配器模式的缺点是:与类适配器模式相比,要在适配器中置换适配着类的某些方法比较麻烦。如果一定要置换掉适配者类的一个或多个方法,可以先做一个适配者类的子类,在子类中将适配者类的方法置换掉,然后再把适配者类的子类当做真正的适配着进行适配,实现过程较为复杂。优点:1、将目标类和适配者类解耦,通过引入一个适配器类来重用现有的适配者类,无须修改原有的结构。2、增加了类的透明性和复用性,将具体的业务实现过程封装在适配者类中,对于客户端类而言是透明的,而且提高了适配者类的复用性,同一个适配者类可以在多个不同的系统中复用。此外,类适配器模式还有如下优点:由于适配器类是适配者类的子类,因此可以在适配器类中置 阅读全文

posted @ 2013-07-14 10:01 阿加 阅读(342) 评论(0) 推荐(0) 编辑

2013年7月13日

CSAPP chapter2 记录(bit_level_coding)

摘要: p_154//5x/8define MSB_BIT (~(~0U >> 1)) int mul5div8(int val){ int sign = (val & MSB_BIT) == MSB_BIT; //取符号位 int bias = (7 + !sign) & 7; int q = val >> 3; int r = val - (q > 3; //向零取整 q = (q > 31; ... 阅读全文

posted @ 2013-07-13 12:33 阿加 阅读(614) 评论(0) 推荐(0) 编辑

2013年7月12日

常量和常量表达式

摘要: 问题出自于CSAPP:p_105的Web Aside DATA:TMIN#define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1)文中提出了“为什么INT_MIN 没有直接宏定义为-2147483648 ?"的疑问,但是没有解答。查了下,发现教材中又有一处错了。关于整型常量的定义: “An integer constant begins with a digit, but has no period or exponent part. It may have a prefix that specifies its base and 阅读全文

posted @ 2013-07-12 15:33 阿加 阅读(3028) 评论(0) 推荐(1) 编辑

2013年7月10日

write solid code Chapter 2 练习题4 的解答与扩展

摘要: 原题:4、When programmers add new elements to an enumeration, they sometimes forget to add new cases to the appropriate switch statements. How could you use assertions to help detect this problem?附录中的答案:...default: ASSERT(FALSE); /*We should never get here*/ break;把这个问题扩展下:看到上题的时候,想到了在u-boot中加入启动命令... 阅读全文

posted @ 2013-07-10 19:13 阿加 阅读(297) 评论(0) 推荐(0) 编辑

关于write solid code中的memset

摘要: 文中说明memset可以通过操作整形以加速程序执行速度,这一点值得肯定,问题在于unicore或arm中协处理器有地址访问对齐检查,如果我们如此操作,编译器最终使用str指令来完成,那么当地址未对齐时将会出现错误。上次和同学看了下rtems的编译器对于strncpy的实现,由于rtems的编译器本身做了大量优化,当stncpy的拷贝的长度较小时使用了编译器内嵌的实现版本(str完成),而未使用libc库的实现版本(strb),由于使能了地址对齐访问检查,所以程序运行后总是会运行错误。 阅读全文

posted @ 2013-07-10 13:36 阿加 阅读(214) 评论(0) 推荐(0) 编辑

2013年7月8日

如果返回结构体类型变量(named return value optimisation,NRVO)

摘要: 貌似这是一个非常愚蠢的问题,因为对于具有良好素质的程序员而言,在C中函数返回类型为结构体类型是不是有点不合格,干嘛不用指针做传入传出呢?测试环境:Linux IOS 3.2.0-45-generic-pae #70-Ubuntu SMP Wed May 29 20:31:05 UTC 2013 i686 i686 i386 GNU/Linux gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the sourc 阅读全文

posted @ 2013-07-08 16:29 阿加 阅读(1690) 评论(0) 推荐(0) 编辑

2013年7月6日

单例模式(singleton pattern)--------创造型模式

摘要: 缺点:1、单例模式没有抽象层,单例模式的扩展较困那(开闭原则)2、单例类的职责过重,既提供了业务方法,又提供了创建对象的方法,将对象的创建和对象本身的功能耦合在一起(违反单一职责原则,但是似乎又无法避免)优点:1、单例模式提供了对唯一实例的受控访问;2、由于在系统内存中只有一个对象,因此可以节约系统资源,提高系统性能3、允许可变数目的实例。使用与控制单例对象相似的方法来获得指定个数的实例对象。 阅读全文

posted @ 2013-07-06 21:26 阿加 阅读(144) 评论(0) 推荐(0) 编辑

原型模式(prototype pattern)---------创造型模式

摘要: 原型模式的缺点:1、需要为每一个类配备一个克隆方法,而且该克隆方法位于一个类的内部,当对已有的类进行改造时,需要修改源代码,违背了开闭原则(open-closed discipline)2、在实现深克隆时需要编写较为复杂的代码,而且当类之间存在多重继承时,为了实现深克隆,每一层对象对应的类都必须支持深克隆,实现起来比较麻烦。原型模式的优点:1、当创建新的对象实例较为复杂时,使用原型模式可以简化对象的创建过程,通过复制一个已有实例可以提高新实例的创建效率;个人认为,对于该中模式,最好还是使用工厂模式,在抽象产平中嵌入clone接口好一些,刘伟先生的书中,当我用C++实现时,依然选择用工厂模式进行 阅读全文

posted @ 2013-07-06 20:02 阿加 阅读(178) 评论(0) 推荐(0) 编辑

哈希----字符串----time33

摘要: //此处只是获得了字符串的hash值,但是该如何散列到hash表中呢?哪个算法会好些?! 1 //在处理以字符串为键值的哈希时,times33哈希算法有着极快的计算效率和很好的哈希分布 2 3 //小写英文单词 4 #if 1 5 unsigned int str_hash(const char* key) 6 { 7 unsigned int hashval = 0; 8 while(*key) 9 {10 hash = ((hash << 5) + hash) + (unsigned int)*key++;11 }12 13 ret... 阅读全文

posted @ 2013-07-06 19:00 阿加 阅读(613) 评论(0) 推荐(0) 编辑

上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 25 下一页

导航