知其然,知其所以然
Python 2026-09-25

with 语句:上下文管理器如何保证资源释放

本机真实用自定义__enter__/__exit__验证:正常退出、内部抛异常、__exit__返回True吞掉异常,三种场景下__exit__真实都会被调用,第三种场景真实能让外面完全感知不到异常发生过。

Python 真实验证 动画演示
Python 2026-09-25

contextlib.contextmanager:一个生成器怎么变成上下文管理器

本机真实对比没有try/finally和有try/finally的@contextmanager生成器,验证前者在内部异常时清理代码真实会被跳过(资源泄漏),后者真实总能执行到。

Python 真实验证 动画演示
Python 2026-09-25

描述器 Descriptor:property 和绑定方法背后的机制

本机真实实现一个数据描述器拦截属性读写,验证即使直接往实例__dict__里塞同名key,读取真实依然会被描述器拦截——数据描述器的优先级真实高于实例字典,property本身也真实是用这套协议实现的。

Python 真实验证 动画演示
Python 2026-09-25

__getattribute__ 和 __getattr__:属性查找失败后发生了什么

本机真实统计__getattribute__和__getattr__的真实调用次数:8次属性访问全部真实触发__getattribute__,只有3次真正失败的访问触发了__getattr__,并真实复现了__getattr__里误用self.x导致的无限递归陷阱。

Python 真实验证 动画演示
Redis 2026-09-25

List 的 quicklist 结构

本机真实起Redis 8.10.1,把list-max-listpack-size设成128,真实验证一个list在128个元素时是listpack编码,加第129个元素的瞬间真实变成quicklist。

Redis 真实验证 动画演示
Redis 2026-09-25

ListPack 如何替代 ZipList

本机真实验证list、hash、zset三种类型的小集合,OBJECT ENCODING真实都统一显示listpack,不再是老版本Redis的ziplist——三种类型变大后真实分别转向quicklist、hashtable、skiplist三种不同的结构。

Redis 真实验证 动画演示
Redis 2026-09-25

IntSet 的升级过程

本机真实验证一个全是整数的set用intset编码,加一个非整数成员立刻变成listpack;另一个intset真实超过set-max-intset-entries数量限制时,却直接跳过listpack变成hashtable——两条真实不同的升级路径。

Redis 真实验证 动画演示
Redis 2026-09-25

String 的 EMBSTR 与 RAW

本机真实验证44字节的字符串是embstr编码,45字节立刻变成raw——精确卡在字节数上的分界线,再验证哪怕再短的字符串,一次APPEND操作也会立刻真实把它变成raw。

Redis 真实验证 动画演示
Redis 2026-09-25

String 编码转换

本机真实验证纯数字字符串是int编码,INCR之后依然是int,但一次APPEND立刻把int转成raw;真实还发现超过64位整数范围的数字,压根不会被编码成int,而是直接变成embstr。

Redis 真实验证 动画演示
Redis 2026-09-25

Redis 对象共享整数

本机真实按老版本Redis文档描述的条件测试小整数共享池:OBJECT REFCOUNT真实一直是1,不是预期的巨大共享计数;真实又用10万个key的内存对比做了独立验证,证实这个版本真实没有观察到共享效果。

Redis 真实验证 动画演示
Redis 2026-09-25

Key 过期字典

本机真实验证PERSIST能让TTL从100变回-1,一个200毫秒过期的key在300毫秒后访问真实返回不存在(被动过期),另一个100毫秒过期的key即使完全不访问,500毫秒后DBSIZE也真实自动减少了(主动过期)。

Redis 真实验证 动画演示
Redis 2026-09-25

大 Key 的内存占用

本机真实用MEMORY USAGE测5种大小的字符串,发现100000字节的value真实要多付出14717字节的额外开销(14.7%),比1000字节value的51字节开销比例高得多;再对比1000个字段的hash和1000个元素的list,真实内存占用相差6.4倍。

Redis 真实验证 动画演示
京ICP备2026067502号-1京公网安备11010502063487号