-
Awesome Flink Learning Resources
Apache Flink 学习资料,包括但不限于文章、书籍、教程、视频。
-
使用 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 的一些优秀实践。