arcsin2's blog
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  • 友链
  • English

GoogleTest 与 Benchmark 库使用:以位图 countOnes 函数为例

单元测试与性能测试都是我们实际进行项目开发中常见的需求,一个优秀的库能够帮助我们高效地完成上述需求,专注于项目本身逻辑的开发,而不是额外花费精力于单元测试库和性能测试库的编写。就 C++ 而言,最常用的单元测试和性能测试库应该就是 Google 开源的 GoogleTest 和 Benchmark 库了,二者源代码都可在 GitHub 获取。 本文中,我们以计算一块连续内存中的位 1 的数量
2024-06-30
工具
#GoogleTest #Benchmark #bitmap #countOnes

LevelDB 源码阅读三:工具函数一览

前面两篇文章,我们分别介绍了 LevelDB 的部分基础数据结构和 LevelDB 对操作系统功能的封装,本文我们继续按照自底向上的原则,来看 util 目录下的我们尚未阅读的源代码。涉及的源文件包括: util/arena.h 和 util/arena.cc util/coding.h 和 util/coding.cc util/crc32c.h 和 util/crc32c.cc
2024-06-14
数据库 > 读源码
#LevelDB

LevelDB 源码阅读二:操作系统接口封装

本文继续介绍 LevelDB 源码,重点是 LevelDB 中对操作系统相关接口的封装,也即 Env 接口及相关实现类。本文涉及的相关源码路径如下: include/leveldb/env.h util/env.cc util/posix_logger.h util/env_posix.cc 1 env.h 在 include/leveldb/env.h 源文件中,定义了
2024-06-03
数据库 > 读源码
#LevelDB #单例模式

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
12345

搜索

Hexo Fluid
总访问量 次 总访客数 人
苏ICP备2021026429号-1