09 2013 档案
十二、结构模式之门面(Facade)模式
摘要:什么是门面模式 门面模式(也有翻译为外观模式)是对象的结构模式,外部与一个子系统的通信必须通过一个统一的门面进行。其为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 其结构图如下所示(源自大话设计模式) 在什么情况下使用门面模式 为一个复杂子系统提供一个简单接口 子系统往往因为不断演化而变得越来越复杂,使用门面模式可以使得子... 阅读全文
posted @ 2013-09-27 14:35 @且听风吟@ 阅读(230) 评论(0) 推荐(0)
十一、结构模式之享元(Flyweight)模式
摘要:什么是享元模式 享元模式是对象的结构模式,是运用共享技术来有效的支持大量细粒度的对象。享元对象能做到共享的关键是区分内蕴状态和外蕴状态。一个内蕴状态是存储在享元对象内部,并且是不会随环境改变而有所不同的,因此一个享元可以具有内蕴状态并可以共享。一个外蕴状态是随环境改变而改变的、不可以共享的状态。享元的外蕴状态必须由客户端保存,并在享元对象被创建之后,在需要使用的时候再传入到享元对象内部。外蕴状态... 阅读全文
posted @ 2013-09-25 11:11 @且听风吟@ 阅读(241) 评论(0) 推荐(0)
十、设计模式之代理(Proxy)模式
摘要:什么是代理模式 代理模式是对象的结构模式,为其他对象提供一种对象以控制对这个对象的访问。 代理模式的结构图如下:(源自大话设计模式) Subject:定义了RealSubject和Proxy的公共接口,这样在任何使用RealSubject的地方都可以使用Proxy 代理模式就是在代理类中持有RealSubject的对象句柄,这样调用接口时,都执行RealSubject的对应方法,... 阅读全文
posted @ 2013-09-25 08:57 @且听风吟@ 阅读(224) 评论(0) 推荐(0)
C++ 虚函数和多重继承的内存布局初探
摘要:C++ 对象的内存布局 一切以事实说话: 代码: 1: #include 2: 3: class A { 4: public: 5: int a; 6: int b; 7: int c; 8: }; 9: 10:... 阅读全文
posted @ 2013-09-23 16:31 @且听风吟@ 阅读(358) 评论(0) 推荐(1)
test
摘要:图片备用 阅读全文
posted @ 2013-09-17 11:53 @且听风吟@ 阅读(141) 评论(0) 推荐(0)
STL sort源码剖析
摘要:转载自:http://www.cnblogs.com/imAkaka/articles/2407877.html STL的sort()算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort。如果递归层次过深,还会改用Heap Sort。本文先分别介绍这个三个Sort,再整合... 阅读全文
posted @ 2013-09-16 16:01 @且听风吟@ 阅读(295) 评论(0) 推荐(0)
常用排序算法比较
摘要:平均时间复杂度 最差时间复杂度 空间复杂度 是否稳定 总结 冒泡排序 O(n^2) O(n^2) O(1) 是 最慢的排序算法 选择排序 O(n^2) ... 阅读全文
posted @ 2013-09-16 15:27 @且听风吟@ 阅读(394) 评论(0) 推荐(0)
IO复用: select 和poll 到epoll
摘要:linux 提供了select、poll和epoll三种接口来实现多路IO复用。下面总结下这三种接口。 select 该函数允许进程指示内核等待多个事件中的任何一个发生,并只在有一个或多个事件发生或经历一段指定的时间后才唤醒它。 函数接口: 1: #include 2: #include 3: 4: int select(i... 阅读全文
posted @ 2013-09-10 18:27 @且听风吟@ 阅读(489) 评论(0) 推荐(0)
九、结构模式之装饰(Decorator)模式
摘要:装饰模式又叫包装模式,装饰模式以客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式可以在不使用创造更多的子类的情况下,将对象的功能加以扩展。 装饰模式结构图如下: 其包含的角色就分为: 抽象构建角色Component:给出一个抽象结构,以规范准备接受附加责任的对象。 具体构建角色Concrete Component:定义一个将要接受附加责任的类。 装饰角色Decora... 阅读全文
posted @ 2013-09-08 11:06 @且听风吟@ 阅读(216) 评论(0) 推荐(0)
fork和vfork的区别
摘要:参见百度百科API说明: fork 头文件: #include #include 函数原型: pid_t fork( void); (pid_t 是一个宏定义,其实质是int 被定义在#include中) 返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1 函数说明: 一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进... 阅读全文
posted @ 2013-09-08 08:33 @且听风吟@ 阅读(8597) 评论(1) 推荐(1)
八、结构模式之组合(Composite)模式
摘要:组合模式属于对象的结构模式,有时又叫做部分-整体模式,组合模式将对象组织到树结构中,可以用来描述整体与部分的联系。其可以使客户端将单纯元素和组合元素同等对待。 当需求中是体现部分与整体层次的结构时,以及你希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑使用组合模式了。 组合模式(或叫合成模式)是将对象组合成树形结构以表示部分-整体的层次结构。组合模式使得用... 阅读全文
posted @ 2013-09-06 22:16 @且听风吟@ 阅读(291) 评论(0) 推荐(0)
七、结构模式之-适配器模式
摘要:适配器模式是一种结构模式。所谓结构模式是指将类或者对象结合在一起形成更大的结构。结构模式又分为类的结构模式和对象的结构模式。类的结构模式就是通过使用继承把 类和接口等结合在一起,已形成更大的结构。当一个类从父类继承并实现接口时,这个新的类就把父类的结构和接口的结构结合起来了。类的结构模式是静态的(就是由开始的继承结构决定了结构模式的结构)。一个类的结构模式的典型例子就是类形式的适配器模式。对象的... 阅读全文
posted @ 2013-09-06 17:57 @且听风吟@ 阅读(257) 评论(0) 推荐(0)
六、原型(Prototype)模式
摘要:原型模式是对象的创建模式,通过给出一个原型对象来指明所要创建的对象的类型。然后用复制这个原型对象的方法来创建出更多同类型的对象。 原型模式可以不用重新初始化对象,而动态的获取对象运行时的状态。使用原型模式需要注意浅复制和深复制的问题。即如果字段是值类型的,那么逐位复制是可以的。但是如果是引用类型或者指针,那么复制的对象和和原来对象都指向同一对象,即只有一份副本。 浅复制:被复制的对象所含有的... 阅读全文
posted @ 2013-09-06 15:22 @且听风吟@ 阅读(240) 评论(0) 推荐(0)
linux的锁比较
摘要:spinlock spinlock介绍 spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器多线程环境的场景中有很广泛的使用,一般要求使用spinlock的临界区尽量简短,这样获取的锁可以尽快释放,以满足其他忙等的线程。Spinlock和mutex不同,spinlock不会导致线... 阅读全文
posted @ 2013-09-06 12:58 @且听风吟@ 阅读(765) 评论(0) 推荐(0)