LevelDB 源码阅读一:基础数据结构 继上文搭建完 LevelDB 调试环境后,我们开始阅读源码。本文介绍 LevelDB 中最基础的一些数据结构,按照源文件组织的层次结构,自底向上阅读源码。本文涉及的主要源代码包括以下文件: include/leveldb/export.h include/leveldb/slice.h port/thread_annotations.h port/port_stdcxx.h por 2024-05-29 数据库 > 读源码 #LevelDB #设计模式
LevelDB 调试环境搭建 LevelDB 是知名的 C++/数据库/K-V 存储/LSM Tree 相关的项目,由 Google 的 Jeffrey Dean 等知名大牛编写。阅读源码是学习提升的必经之路,这条道路上的第一个障碍就是如何把代码跑起来,并自己上手运行、调试。本文以 LevelDB 为例,介绍如何搭建 LevelDB 的调试环境,为后续阅读源码做好铺垫工作。 本文的环境为 Linux + VS Cod 2024-05-25 数据库 > 读源码 #LevelDB
重学操作系统:内存虚拟化 内存是操作系统需要管理的另一重要资源。同管理 CPU 类似,操作系统在管理物理内存时想要达到以下目的: 共享:多个进程可以同时使用物理内存,每个进程都感觉自己在独占内存空间。 安全:共享带来的另一个问题就是安全,操作系统要隔离不同进程的内存访问,确保它们访问的是属于进程本身的物理内存,而不可以随意读写其它进程的内存空间。 高效:尽可能减少时间空间资源的占用,以更高效的方式管理内存。 2024-05-24 操作系统 #内存虚拟化 #内存管理 #LRU
从 BusTub 看 Architecture of a Database System CMU 15-445/645 课程对应的项目 BusTub 以及数据库领域的经典综述论文 Architecture of a Database System 都可以说是入门数据库的必备材料。BusTub 通过几个 Project,让我们对数据库的缓冲区管理、索引、执行引擎、事务控制等关键模块有相对深入的了解;Architecture of a Database System 则介绍了数据 2024-05-13 数据库 #bustub #DBMS #CMU 15-445/645
信号与定时器 本文是《Linux 高性能服务器编程》阅读记录,供以后查阅参考。推荐阅读原书。 所有函数未标明需要包含什么头文件,可使用 man 命令自行查询。 1. 信号 信号是由用户、系统或者进程发送给目标进程的信息,以通知目标进程某个状态的改变或系统异常。服务器程序必须处理(或至少忽略)一些常见的信号,以免异常终止。 1.1 Linux 信号相关 API 1.1.1 发送信号 使用 2024-05-08 Linux > 网络编程 #信号 #定时器
I/O 复用 本文是《Linux 高性能服务器编程》阅读记录,供以后查阅参考。推荐阅读原书。 所有函数未标明需要包含什么头文件,可使用 man 命令自行查询。 1. select select 系统调用用于:在一段指定的时间内,监听用户感兴趣的文件描述符上的可读、可写和异常等事件。 1.1 select API select 函数原型: 123456789101112/* Check 2024-05-04 Linux > 网络编程 #select #poll #epoll
高级 I/O 函数 本文是《Linux 高性能服务器编程》阅读记录,供以后查阅参考。推荐阅读原书。 所有函数未标明需要包含什么头文件,可使用 man 命令自行查询。 1. pipe 函数声明: 12345/* Create a one-way communication channel (pipe). If successful, two file descriptors are stored 2024-05-02 Linux > 网络编程 #Linux
C++ 并发编程入门 本文介绍 Modern C++ 标准库提供的关于多线程编程的工具。如标题所示,本文定位是入门,不讨论内存序、无锁编程等并发编程的高级主题。本文内容主要参考《C++ 并发编程实战(第二版)》一书,对并发编程感兴趣推荐阅读原书。 1. 线程 C++ 中使用线程的方式非常简单,只需要包含 thread 头文件,然后向 thread 构造函数传入可调用函数和实参即可。一些示例如下: 1234 2024-04-19 编程语言 > C++ #并发 #多线程 #RAII #锁 #条件变量 #原子类型
DBMS for ANNS 一览 自 2023 年 ChatGPT 带动的大语言模型热以来,向量相似度检索得到了很多数据库系统的支持。实际上,早在 2023 年之前,就已经有很多 DBMS 支持了向量数据存储、索引、查询优化等功能。其中,最重要的功能就是提供支持近似最近邻检索(ANNS)的索引结构。在 ANN Benchmark 中,列出了许多支持 ANNS 的库或者 DBMS,并在主要的数据集上进行了性能测试。本文简 2024-03-26 数据库 > 向量数据库 #ANN #数据库 #向量数据库 #Vector Database
重学操作系统:CPU 虚拟化与进程 操作系统是每名程序员必须掌握的内容。回想大学时学习操作系统时,总是陷于一些算法方面的细节,习题则多为计算不同算法的性能指标,而忽略了从更高层面来看待和理解操作系统。因此,最近开始阅读备受好评的操作系统书籍:《操作系统导论》(英文版名称为:Operating Systems: Three Easy Pieces,OSTEP)。 OSTEP 从虚拟化、并发、持久化三大方面展开对操作系统的介绍,通 2024-03-09 操作系统 #CPU 虚拟化 #进程调度