摘要:
内存映射(Memory-mapped file)和共享内存(Shared memory)都是进程间通信(IPC)的机制,但它们在实现方式和使用场景上有一些区别: 内存映射(Memory-mapped file): 内存映射是一种将文件或设备的内容映射到进程的地址空间的技术。这样,进程可以像访问普通内 阅读全文
摘要:
ICMP(Internet Control Message Protocol,互联网控制报文协议)和ARP(Address Resolution Protocol,地址解析协议)都是网络层协议,它们在互联网通信中扮演着重要的角色。下面是它们各自的简要介绍: ICMP(互联网控制报文协议): ICMP 阅读全文
摘要:
智能指针,如C++中的std::shared_ptr和std::unique_ptr,通常不是线程安全的。这意味着在多线程环境中,如果多个线程尝试同时访问和修改同一个智能指针,而没有适当的同步机制,就可能导致未定义的行为。 std::shared_ptr:它使用引用计数机制来管理对象的生命周期。如果 阅读全文
摘要:
ps -e(-ef) 查看全部进程 pid pgrep <进程名> 查询进程的pid pmap <pid> 查看给这个进程分配的内存 阅读全文
摘要:
git submodule update --init --recursive 是一个 Git 命令,用于初始化和更新 Git 仓库中的子模块。下面是这个命令的详细解释: git submodule update: 这个命令用于更新子模块。子模块是项目中包含的另一个 Git 仓库,通常用于共享代码或 阅读全文
摘要:
单元测试的覆盖率(Code Coverage)是一种衡量软件测试完整性的重要指标,它表示代码在测试过程中被执行的比例。计算单元测试覆盖率主要有以下几种方法: 行覆盖率(Line Coverage):计算被测试的代码中有多少行被执行。公式如下: \[\text{行覆盖率} = \frac{\text{ 阅读全文
摘要:
#include <iostream> #include <unordered_map> #include <list> using namespace std; class LRUCache { private: int capacity; unordered_map<int, pair<int, 阅读全文
摘要:
std::optional 是 C++17 标准库中引入的一个模板类,用于表示一个可能存在、也可能不存在值的对象。它的设计目的是为了解决函数或方法可能返回空值的情况,避免使用指针或特殊值(如 -1 或 nullptr)来表示缺失值,从而提高代码的安全性和可读性。 主要特点和用法: 表示可能的空值: 阅读全文
摘要:
缺页中断(Page Fault Interrupt)是计算机操作系统中的一种中断类型,它发生在程序试图访问主存储器(通常是 RAM)中不存在的页面时。这种情况通常发生在以下情况: 程序首次访问某个数据:当程序运行并访问到一个尚未加载到物理内存中的页面时,会触发缺页中断。 页面置换:在内存受限的情况下 阅读全文
摘要:
在 C++ 中,一个空白的类(也就是没有任何成员变量的类)通常占用的内存大小是 1 字节。这个大小是由于 C++ 的内存对齐规则导致的。即使类中没有数据成员,编译器也会为这个类分配至少一个字节的空间以满足内存对齐的要求。 内存对齐是指编译器为了提高内存访问效率,按照特定的规则在内存中分配对象的起始地 阅读全文