Known unknowns

行为型设计模式-策略模式

行为型设计模式-策略模式模式示例记录 1. 背景 通过示例(C++)加强对设计模式的体感。 2. 23种设计模式简要说明 这里说明策略模式 3. 策略模式(Strategy Pattern) 策略模式(Strategy Pattern)是一种行为设计模式,它使你能够定义一系列算法,并将每一个算法封装起来,使它们可以互相替换。策略模式使得算法可以独立于使用它的客户端变化。 策...

行为型设计模式-观察者模式

行为型设计模式-观察者模式示例记录 1. 背景 通过示例(C++)加强对设计模式的体感。 2. 23种设计模式简要说明 这里说明观察者模式 3. 观察者模式(Observer Pattern) 观察者模式(Observer Pattern) 是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。 这个主题对象在状态发生变化时,会通知所有依...

创建型设计模式-原型模式

创建型设计模式-原型模式示例记录 1. 背景 最近梳理项目模块代码,其中部分模块和工具涉及一些设计模式,画了一些相关的流程图和草图。重新打开极客时间里设计模式课程,通过示例(C++)加强一些体感。 2. 23种设计模式简要说明 这里说明原型模式 3. 原型模式(Prototype Pattern) 如果对象的创建成本比较大,而同一个类的不同对象之间差别不大(大部分字段都相同)...

创建型设计模式-建造者模式

创建型设计模式-建造者模式示例记录 1. 背景 最近梳理项目模块代码,其中部分模块和工具涉及一些设计模式,画了一些相关的流程图和草图。重新打开极客时间里设计模式课程,通过示例(C++)加强一些体感。 2. 23种设计模式简要说明 这里说明建造者模式 3. 建造者模式(Builder Pattern) Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模...

创建型设计模式-工厂模式

创建型设计模式-工厂模式示例记录 1. 背景 最近梳理项目模块代码,其中部分模块和工具涉及一些设计模式,画了一些相关的流程图和草图。重新打开极客时间里设计模式课程,通过示例(C++)加强一些体感。 2. 23种设计模式简要说明 工厂模式通常分为简单工厂模式、工厂方法模式和抽象工厂模式。 在 GoF 的《设计模式》一书中,它将简单工厂模式看作是工厂方法模式的一种特例,所以工厂模式...

创建型设计模式-单例模式

创建型设计模式-单例模式示例记录 1. 背景 最近梳理项目模块代码,其中部分模块和工具涉及一些设计模式,画了一些相关的流程图和草图。重新打开极客时间里设计模式课程,通过示例(C++)加强一些体感。 2. 23种设计模式简要说明 23种设计模式:创建型(5种)、结构型(7种)、行为型(11种) 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一...

服务究竟被谁kill了? -- 利用SystemTap监测

利用SystemTap监测服务被谁kill了 1. 背景 Linux环境上一个应用服务会被定期异常kill掉,但是未直接找到是谁来操作的,后面绕了不少弯后找到了罪魁祸首(简单来说是其他程序bug导致操作错了进程号)。 这种场景若有更针对性的监测手段,会高效很多。基于该背景检索后尝试两种手段:audit审计 和 SystemTap。 本文对SystemTap进行实验。 2. 基本用法...

服务究竟被谁kill了? -- 利用audit审计监测

利用audit审计监测服务被谁kill了 1. 背景 Linux环境上一个应用服务会被定期异常kill掉,但是未直接找到是谁来操作的,后面绕了不少弯后找到了罪魁祸首(简单来说是其他程序bug导致操作错了进程号)。 这种场景若有更针对性的监测手段,会高效很多。基于该背景检索后尝试两种手段:audit审计 和 SystemTap。 本文先对audit进行实验。 2. 实验 网上(同质...

从1万空文件占用空间大小看Linux文件系统结构

当一个目录中包含1万个空文件时,目录会占用多大的空间? 1. 背景 项目中使用空文件来标记模块数量,正常情况下模块不会太多。但由于误用和边界限制不完备,标记空文件生成了1000万个而导致这个目录很大,且主备间会rsync同步该目录,进而导致系统资源异常。 本文结合实验和Linux文件系统的结构代码进行对照验证,小结以加深理解。 2. 相关知识 Linux 文件系统会为每个文件分配两...