Posted in

Go泛型约束类型系统深度解密:`comparable`、`~T`、`any`底层AST差异,以及为什么`type Number interface{ ~int | ~float64 }`不能用于map key

第一章:Go泛型约束类型系统深度 … Go泛型约束类型系统深度解密:comparable、~T、any底层AST差异,以及为什么type Number interface{ ~int | ~float64 }不能用于map keyRead more

Posted in

Go hashmap的“不可变幻觉”:为什么map[string]string赋值给interface{}后修改原map,interface{}值竟同步变化?unsafe.Sizeof揭穿底层指针陷阱

第一章:Go hashmap的“ … Go hashmap的“不可变幻觉”:为什么map[string]string赋值给interface{}后修改原map,interface{}值竟同步变化?unsafe.Sizeof揭穿底层指针陷阱Read more

Posted in

为什么Go map的hash seed在进程启动时仅初始化一次?——看entropy source选择、ASLR绕过风险与安全团队的红蓝对抗结论

第一章:Go map的hash … 为什么Go map的hash seed在进程启动时仅初始化一次?——看entropy source选择、ASLR绕过风险与安全团队的红蓝对抗结论Read more

Posted in

Go hashmap并发读写panic的13种触发路径:从for range遍历中delete到goroutine抢占点,每种附可复现最小代码块

第一章:Go hashmap并发 … Go hashmap并发读写panic的13种触发路径:从for range遍历中delete到goroutine抢占点,每种附可复现最小代码块Read more

Posted in

Go map的GC友好性真相:key为string时为何不会触发scanblock?runtime.makemap如何规避write barrier?实测GC pause减少17ms

第一章:Go map的GC友好性 … Go map的GC友好性真相:key为string时为何不会触发scanblock?runtime.makemap如何规避write barrier?实测GC pause减少17msRead more

Posted in

从C语言hash_table到Go map的范式跃迁:为什么Go放弃开放寻址而选择分离链+增量搬迁?看Linus与Russ Cox的架构思辨

第一章:Go map的底层架构全 … 从C语言hash_table到Go map的范式跃迁:为什么Go放弃开放寻址而选择分离链+增量搬迁?看Linus与Russ Cox的架构思辨Read more

Posted in

Go map扩容机制全解(含动态resize动画推演):何时触发?如何迁移?为什么oldbuckets要保留?答案藏在runtime.hmap结构体第17个字段

第一章:Go map扩容机制全解 … Go map扩容机制全解(含动态resize动画推演):何时触发?如何迁移?为什么oldbuckets要保留?答案藏在runtime.hmap结构体第17个字段Read more

Posted in

Go函数参数传递的5种误区:值拷贝、指针、slice header、map header与channel引用全对比(附pprof压测数据)

第一章:Go函数参数传递的本质与 … Go函数参数传递的5种误区:值拷贝、指针、slice header、map header与channel引用全对比(附pprof压测数据)Read more