智能指针

前言 现代C++中,涉及的智能指针主要有:unique_ptr, shared_ptr, weak_ptr三个,智能指针并非线程安全的,需要额外的互斥手段。 unique_ptr 这是独占指针,有以下特性: 两个指针不能指向同一资源 无法进行拷贝赋值与拷贝构造,只有移动赋值和移动构造 离开作用域自动

进程通信方式

管道 匿名管道:在Linux中,使用|来建立一个管道,实质上是创建了两个进程,将左边的输出发送给右边 命名管道:通过mkfifo来创建 mkfifo mypi echo "hello" > mypi # 将数据写入管道,会阻塞直至为空 cat < mypi # 读取管道数据 也可以使用系统调用

同步技术

线程同步技术 可以参考线程同步技术 进程同步技术 进程间同步技术常常利用锁和信号量来解决,而锁页分为悲观锁和乐观锁。 悲观锁:先加锁再操作临界区,适用于冲突概率高的情况 乐观锁:先操作临界区,再检查是否发生了冲突,发生冲突就需要回溯,只适用于冲突概率极低的情况,因为回溯的成本是巨大的 通过pthre

进线程调度算法

进程 进程的状态 PS:图片来源于:小林coding 创建状态(new):进程正在被创建的状态 结束状态(exit):进程退出的状态 运行状态(running):此时进程正在CPU中运行 就绪状态(ready):可运行状态,但是未运行状态,等待CPU时间 阻塞状态(blocked):等待事件的状态,

多态

前言 C++多态分为运行时多态和编译时多态,编译时多态的实现主要是模板,重载等,运行时多态就是使用虚函数来实现的 运行时多态 虚函数的底层实现原理是依托于虚函数指针和虚函数表实现的,虚函数指针也是一个成员变量,是编译器自动生成的,存在于实例对象的最前面位置。 虚函数指针工作原理 虚函数指针是一个成员

物理内存管理

前言 内核不仅需要管理虚拟内存,还需要管理具体的物理内存。 先简单介绍一下两个概念,一致性内存访问(Uniform Memory Access, UMA)和非一致性内存访问(Non-uniform Memory Access),前者表示同一个CPU对所有内存访问速度一致,后者则表示不一致。CPU通过

HTTP

前言 超文本传输协议(HyperText Transfer Protocol,HTTP)是一种应用层协议,经历了三个比较重要的版本,http/1.0,http/1.1,http/2.0 三个常用版本 除此之外,还加入了一个http/3.0版本 | HTTP 1.0 | HTTP 1.1 | HTTP

虚拟内存技术

前言 本文的虚拟内存,需要区别于Windows上的虚拟内存,Windows上的虚拟内存应该对应于Linux上的交换内存,是一种把磁盘当内存使用的技术。 本文的虚拟内存,是一种内存管理技术。区别于嵌入式中的应用程序,直接运行在物理内存上。操作系统(如Linux)的应用程序,是直接运行在虚拟内存上,而由

HTTPS

使用RSA TLS一次握手:Client Hello,发送TLS版本,客户端随机数,密码套件(密钥交换算法_签名算法_WITH_对称加密算法_摘要算法组成) TLS二次握手: Server Hello:确认TLS版本,服务器随机数,选择的密码套件,如TLS_RSA_WITH_AES_128_GCM_