摘要:
概念 死锁的四个必要条件 互斥 至少有一个资源必须处于非共享模式,即一次只有一个进程可使用。如果另一进程申请该资源,那么申请进程应等到该资源释放为止 占有并等待 —个进程应占有至少一个资源,并等待另一个资源,而该资源为其他进程所占有 非抢占 资源不能被抢占,即资源只能被进程在完成任务后自愿释放 循环 阅读全文
摘要:
CRTP 概念 Curiously Recurring Template Pattern,奇异模板递归模式,即基类为类模板,把派生类作为基类的模板参数,基类中的成员函数可以(通过 static_cast 转换为派生类类型)访问派生类的成员函数。 原理 这称作编译期(静态)多态,其原理是利用了基类(类 阅读全文
摘要:
前言 工作中经常会用到各种池,因此写几篇随笔学习并记录一下,最后附有实现代码。另见:线程池学习、对象池学习 概念 单结点 & 多结点 连接数量 故障恢复 获取多个结点 设计 连接池 监听多个动态结点 负载均衡 轮询 一致性哈希 相关设计模式 工厂模式 父类决定实例的生成方式,子类决定所要生成的具体的 阅读全文
摘要:
背景 分布式系统对于数据复制的需求: 可用性:防止单点故障引起的系统不可用 性能:通过负载均衡技术,能够让分布在不同地方的数据副本都能够为用户提供服务 分布式一致性问题:在分布式环境中引入数据复制机制后,不同数据节点间可能出现的,并无法依靠计算机程序自身解决的数据不一致情况。即指在对一个副本数据进行 阅读全文
摘要:
概念 自C++11起,标准库中包含了随机数程序库。在学习之前,我们需要明白随机有两方面的含义,一方面是指随机性(值)的源头,另一方面是指随机数的生成机制。通常情况下我们需要一个 引擎 和一个 分布。 引擎 随机性的源头 - 产生随机的无正负的值 有状态 - 状态决定了它将生成哪一个随机值序列 - 如 阅读全文
摘要:
概览 编译器驱动程序 通常包括 语言预处理器、编译器、汇编器、链接器,在各个阶段完成不同的操作 加载器 它将可执行文件中的代码和数据复制到内存,然后将控制转移到这个程序的开头 __链接__的主要内容就是把各个模块之间相互引用的部分都处理好,使得各个模块之间能够正确地衔接 静态链接 目标文件 可重定位 阅读全文
摘要:
安装 sudo yum install -y nginx 配置 修改配置 sudo vi /etc/nginx/nginx.conf sudo vi /etc/nginx/default.d/default.conf 检查配置 sudo nginx -t sudo vi /var/log/nginx 阅读全文
摘要:
预处理 编译之前(预处理阶段)执行 预处理功能举例 #include 头文件保护符 避免同一个文件被include多次 通过判断预处理变量是否已定义:#ifndef、#define、#endif 预处理变量名全局唯一(通常通过头文件中的类名来定义保护符的名字,个人感觉 namespace name 阅读全文
摘要:
概念 谓词 可调用的表达式 lambda表达式 一个可调用的代码单元 一个未命名的内联函数 lambda表达式 形式 [ capture list ] (parameter list) → return type 捕获列表 lambda所在函数中定义的局部变量列表 可直接使用局部static变量和l 阅读全文