• 使用 tcpdump 和 wireshark 分析 MySQL 协议握手过程

    使用 tcpdump 对 MySQL 进行抓包是一种定位线上问题的重要手段,如结合 pt-query-digest 识别慢查询;使用 wireshark 对报文内容进行分析,这对很多 MySQL Compatible 的产品非常重要。本文使用 tcpdump 和 wireshark 对 MySQL 的握手过程进行抓包分析。

  • MacOS 使用 qemu 创建虚拟机

    在 VirtualBox 和 VMware Fusion 不可用(比如 Cloud Shell 限制)的情况下,QEMU 可作为一个替代方式。

  • Z-order 技术简介

    Z-order 又叫作 Morton-order 或 Morton code(莫顿码),是一种空间填充曲线,将多维数据映射到一维,同时保留数据点的局部性,由 G. M. Morton 于 1966 年发明。

  • FusionStorage 8.0 Technical White Paper

    FusionStorage software architecture 👇🏼

  • 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 的初始化方法。