• MySQL 源码解读 —— Binlog 行日志事件解析

    Binlog 事件格式解析 一文中,笔者对 Format_description_event 的格式进行了解析,并在文末给出了 sysbench write-only test 的火焰图。本文将对火焰图中 MySQL 的行日志事件进行解析。

  • MySQL 源码解读 —— Binlog 事件格式解析

    Binary Log(i.e. Binlog) 是一组包含了 MySQL 数据库实例数据修改信息的日志文件,主要用于 主从复制(Replication)特定的数据恢复操作,是否开启由 log-bin 选项(Read Only)控制。本文对 Binlog 事件的格式进行解析,为深入理解 Binlog 的工作机理奠定基础。

  • Thread Pool

    本文使用 C++ 实现了一个简单的线程池。

  • libevent 源码分析

    Libevent 是一个C语言编写的、轻量级的开源高性能事件驱动库,支持 epoll、kqueue、/dev/poll、select、poll 等多种 I/O 多路复用。在学习 UNIX Network Programming 的时候笔者曾将书中的 tcpservpoll01.c 改写为 epoll 方式的 echo server。本文首先对 libevent 做一个简要的源码分析,然后给出两个使用 libevent 实现的 echo server。

  • Gprof 实践

    Profiling 是一种可以有效度量软件程序性能的方法,常用的技术包括 event-based, statistical, instrumented, and simulation methods 等。Linux 上常用的 Profiling 工具有 Gprof, perf, Valgrind, OProfile, Google 的 gperftools 等,这其中我用过 Gprof 和 Valgrind,但我后面会更关注 perf,本文简单介绍 Gprof 的使用方法。

  • Rust Learning Resources

    Rust 学习资料,包括但不限于文章书籍代码库教程视频

  • Effective Modern CMake 实践

    笔者去年有篇文章介绍了将团队项目整改为 CMake 用到的一些命令,虽然尽力遵从 Modern CMake 的写法,但还是由于经验不足用到了一些非 Modern 的语法。今年三月初,公司层面开始推广 CMake 构建,项目群请了个专家带领某产品的各子系统进行 CMake 整改,我负责其中一个子系统,跟专家学到了很多规范和技巧。笔者结合最近的实践及网上的 CMake 资料写下本文,记录 CMake 的一些优秀实践。

  • 初始化二维 vector 的几种方法

    本文列举几种二维 vector 的初始化方法。

  • VS Code Shortcuts

    终于,又换编辑器了,之前就听人说 VS Code 特别好用,但由于懒,一直没有尝试。最近公司在推广 VSCode-huawei,大概就是在开源 vscode 的基础上去掉微软专有的插件,再提供一个内部的插件市场。笔者也借此机会,把家里(之前用的 sublime text 3)和公司(之前用 sublime text 3 和 source insight 4)的编辑工具统一一下。本文仅仅是 VS Code 常用快捷键及扩展插件的列举。

  • 匿名 struct 的前向声明

    C/C++ 中的前向声明经常用于当头文件中的接口参数为指针时,做前向声明而非引用头文件。

  • CMake 基本用法介绍

    最近着手把部门项目从手写 makefile 改为了 cmake 构建,由于之前使用了不知道哪年哪个不一定在职的员工写了一个貌似通用的构建框架,每个模块内部写一个 makefile.d 并 include 公共 makefile,然后使用一个 python 脚本调用 make -f 来执行最终的构建,虽然也 work,但是丑陋且难以维护。改为 cmake 之后一是构建逻辑更加清晰,二是能够指导优化代码结构。本文主要介绍一些常用的 cmake 命令,并列举一些有助于学习 cmake 的资源。

  • C/C++ Learning Resources

    C/C++ 学习资料,包括但不限于文章书籍代码库教程视频