Halt in Air

Lay burdens down and travel light!

Facade

外观模式

定义 外观模式,为子系统中的一组接口提供一个一致的界面。此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。[DP] 外观模式是结构型模式之一。 UML类图 Facade 外观类 需要了解所有子系统的方法或属性,进行组合,将客户的请求代理给适当的子系统对象。 Subsystem Classes 子系统类集合 ...

Composite

组合模式

定义 组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。[DP] 组合模式是结构型模式之一。 UML类图 Component 组合中的对象声明接口。在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理 Component 的子部件。 通常用 Add 和 ...

Bridge

桥接模式

定义 桥接模式,将抽象部分与它的实现部分分离,使它们都可以独立的变化。[DP] 桥接模式是结构型模式之一。 UML类图 Abstraction(抽象类) 用于定义抽象类的接口,并且维护一个指向 Implementor 实现类的指针。 RefinedAbstraction(扩充抽象类) 扩充由 Abstraction ...

Adapter

适配器模式

定义 适配器模式,将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。[DP] 适配器模式是结构型模式之一。 UML类图 在 GoF 的设计模式中,适配器有两种类型,分别是对象适配器模式和类适配器模式。 由上图可知,适配器模式存在三个角色,Adapter 类是适配器模式的核心。以对象组合方式实现即为对象适配器模式,以多...

Proxy

代理模式

定义 代理模式,为其他对象提供一种代理以控制对这个对象的访问。[DP] 代理模式是结构型模式之一。 UML类图 Subject 类,定义了 Proxy 和 RealSubject 的共用接口,这样在任何使用 RealSubject 的地方都可以使用 Proxy 代替了。 Proxy 类,保存一个引用使得代理可以访问实体,并提供一个与 S...

Singleton

单例模式

定义 单例模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。[DP] 单例模式是创建型模式之一。 实现 懒汉式 有一个简单实现如下: class CSingleton { private: CSingleton(){} // 构造函数私有 static CSingleton *m_pInstance; public: static CS...

A lock-free queue

无锁队列的一种实现

1. 数据结构 /** Ring producer status. */ struct prod_t { uint32_t watermark; /**< Maximum items before EDQUOT. Power of 2. */ uint32_t sp_enqueue; /**< True, if single producer....

打造 vim 编辑 C/C++ 环境

升级vim8 使用了 fedora 一个非官方源便捷升级。 # curl -L https://copr.fedorainfracloud.org/coprs/lantw44/vim-latest/repo/epel-7/lantw44-vim-latest-epel-7.repo -o /etc/yum.repos.d/lantw44-vim-latest-epel-7.repo # y...

Linux 进程间通信

信号、管道、I/O 重定向

1. 信号 信号是各种进程间通信机制中唯一的异步通信机制。 信号有可靠和不可靠之分,学名分别为实时信号和非实时信号。不可靠信号如果进程不及时处理就会出现的情况;可靠信号通过引入信号队列来保证信号不丢,没有处理过的信号会保存在队列中。可靠信号的请求号全部介于 SIGRTMIN 和 SIGRTMAX 之间。 1.1 信号的发生 信号的发生主要由两个来源:一是硬件来源,如按下键盘特殊按键组...