avatar

Life of a Programmer

`Simplicity is prerequisite for reliability.’ - EWD

pwrite() & O_APPEND

Linux 的 pwrite() 有个 BUG: 当文件以 O_APPEND 模式打开时,虽然 file offset 不会变,但是写入的内容会追加到文件尾部。 此外,pwrite() 和 pwritev() 的 offset 参数不能为 -1, 否则会 EINVAL. 但是 pwritev2() 可

Future & Promise

基于异步事件的编程框架基本上都有 Future 和 Promise 的概念。比如, 主流编程语言中 C++11 有std::future 和std::promise, 而 Java 1.5 开始有Futu

Address Sanitizer

N 年前,调试 C/C++ 内存问题一般会选择用valgrind 或者efence. 目前 Address Sanitizer (ASan) 居多, 它已经被集成进了 LLVM 以及 GCC, 用来比较方便。 访问越界 🔗比如,下

A Trip to Wuxi

上次去鼋头渚已经是二十年前了,当时没有随身电脑更没有手机、相机,记忆也已经接近空白。现在只能回想起三件事: 当时湖心的太湖仙岛上还有猴群出没;

Linux AIO

对 Linux 的 AIO 一直是一些碎片化的知识,没有好好总结。我们知道,AIO 的推荐使用场景是访问块设备、结合 O_DIRECT 一起使用。比如,CephBlockDevic