Known unknowns

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

创建型设计模式-工厂模式示例记录 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 文件系统会为每个文件分配两...

MySQL单表超过2000万后会怎么样

实验学习:MySQL单表超过2000万条记录,分析现象。 1. 背景 使用MySQL存数据时,业内有个传言是单表不要超过2000万条记录,若超过则查询效率会显著降低。 本博客对该情况进行实验记录,在实践中加深学习。 1. 理论 回翻MySQL索引实现的文章:48、B+树:MySQL数据库索引是如何实现的?,结合本文场景加深一下理解。 InnoDB索引说明 ...

strace工具案例

记录利用strace排查问题的案例 1. 前言 当系统命令或者第三方工具执行有异常,尝试排查后无明确原因又无从下手时,不妨用strace跟踪下系统调用过程。或者最开始就尝试这个思路,问题可能一目了然。 此处记录几个strace排查问题的实际案例。 2. 排查案例 2.1. ssh时需要等待10s才跳出密码输入界面 现象描述: 有两台用作相同用途的服务器,...