这是 Steins;Lab 在另一条世界线的收束点。
并非所有定理都需要用万字剖析。这里是团子日常记录碎片灵感、速览概念和吐槽技术坑点的备忘录。它很轻,不需要消耗你太多脑力,但依然保持着团子云技术的严格写作标准。
阅读下方轻量日志,或跃迁至 主站 观测深层代码。
Recent Posts
-
C++ Lambda 拆开看:一个匿名 struct 和它 const 的 operator()
把 lambda 逐层拆回编译器生成的匿名 struct:为什么 operator() 默认 const、mutable 改了什么,以及 C++14 初始化捕获、泛型 lambda 与 C++20 模板 lambda 的底层展开。
-
迭代器失效规则不用背:从绑定关系一句话推完五种容器
五种 STL 容器的迭代器/引用失效规则,不用背表——迭代器绑定组织结构,引用绑定元素本体,一句话全部推完。附可编译运行的审计代码。
-
erase 一刀下去删错了行:C++ 反向迭代器 base() 的偏移陷阱
从一道日志删除练习题出发,拆解 reverse_iterator 的 base() 为什么指向后一个元素、erase 为什么要人工换算一位,以及三条自问自答和替代方案。
-
shared_ptr 线程安全的三层与四层:从 enable_shared_from_this 说起
"shared_ptr 线程安全吗"的流行答案是三层,但多数教程漏掉了最容易踩坑的一层:同一个实例的并发写会导致指针撕裂。
-
shared_ptr 引用计数的内存序:加用 relaxed,减用 acq_rel
引用计数 +1 用 memory_order_relaxed、-1 用 memory_order_acq_rel,为什么同一个计数器要用两种内存序?从原子性与内存可见性的拆分讲起。
-
std::vector<bool>:C++ 标准库埋得最深的一颗雷
auto 拿到的是代理对象不是值,快照变实时视图。聊聊这个坑的成因和工程上怎么绕。
-
传 > 会找出最小值:max_element 比较器的严格小于陷阱
max_element 传 > 比较器不会找最大,反而会找出最小值——因为 STL 所有比较器的语义都是严格小于,不是'谁赢了'。从一份错卷说起。
-
空区间会撒谎:all_of 与 any_of 的空真陷阱
对空集合调用 all_of 返回 true、any_of 返回 false——这不是 C++ 的怪癖,而是数理逻辑的死规矩。空配置导致鉴权裸奔,就是从这里开始的。
-
emplace_back 省了什么,vector 扩容为什么是 1.5 倍:一次容器基础的重挖
emplace_back 的真实收益边界、push_back 的四种优先场景、1.5 倍 vs 2 倍扩容的底层逻辑,以及 Go/Java/Python/Rust 扩容策略横向对比。
-
从 /proc/self/maps 说起:堆、协程栈、缺页中断与 OOM
从一组真实的进程内存地址出发,把 Linux 虚拟地址空间、brpc 协程栈的去向、brk 与 mmap 的分工、栈池化对缺页中断的消解,以及 malloc/new 对 OOM 的不同姿势,一次讲透。