Go语言技术文章
-
Go 变量仍在作用域不等于对象仍然可达:函数参数或接收者可在最后一次提及后失去活性,weak.Pointer.Value 随后可能返回 nil。本文还原根因,并给出强所有者与 runtime.KeepAlive 的正确放置方式。195 收藏 -
io_uring 固定缓冲区适合反复复用少量长期内存的高频 I/O,尤其常与 O_DIRECT 配合。本文说明注册映射、buf_index、内存锁定成本、最小 READ_FIXED 写法,以及和 provided buffer ring 的选择边界。220 收藏 -
sqlite3.Connection.backup 的 progress 回调会直接给出 remaining 和 total。本文用可复用记录器计算剩余页数、完成比例与单轮增量,并解释 pages、status、并发写入和进度回退边界。264 收藏 -
Go 1.24 引入的 weak.Pointer 可以让缓存只保存弱引用。本文用元数据缓存示例拆解 weak.Make、Value、GC 可达性和并发重建边界,帮助你写出可安全丢弃、失效后可回源的缓存。118 收藏 -
解释 weak.Pointer.Value 返回 nil 的正常回收语义,区分共享引用容器与目标字段的数据竞争,并给出锁、KeepAlive 和 race detector 的排查写法。153 收藏 -
Java 24+ 的 Class-File API 把 LineNumberTable 映射为 CodeModel 中的 LineNumber 元素。本文用 CodeTransform 只重写指定方法的行号,说明保留字节码、筛选方法和处理调试信息时的边界。418 收藏 -
介绍 Go weak.Pointer 的可达性语义,并用 weak.Make、Value、互斥锁与惰性清理实现不延长对象生命周期的并发安全索引。242 收藏 -
PHP 7.4+ 可用 ReflectionReference::fromArrayElement() 判断数组元素是否为引用,再严格比较 getId() 判断两个元素是否共享同一引用。本文覆盖非引用、缺失键、foreach 残留引用与解除引用后的反向验证。376 收藏 -
并行基准测试不能把 RunParallel 回调里的 PB.Next 直接替换成 B.Loop。本文区分普通基准循环与并行工作分配,给出 B.Loop 迁移范围、RunParallel 正确写法、计时器边界和 Go 版本兼容检查。142 收藏 -
Go 1.27 为 80 字节及以下堆对象引入按 span class 专用的分配函数,通过缩短分派、定长清零和记账路径降低开销。本文比较通用分配、专用分配与应用层减少分配,并给出升级评估方法。114 收藏 -
用 Go B.Run 与 B.Loop 对比 1 KiB、4 KiB、32 KiB、128 KiB 缓冲区,固定负载并隐藏 io.CopyBuffer 快速路径,结合吞吐和内存指标选型。444 收藏 -
多模态模型的视觉令牌主要受图片预处理分辨率和图片数量影响。本文以 Transformers 与 Qwen2.5-VL 为例,说明如何用 min_pixels、max_pixels 和任务分级配置控制显存、延迟与识别细节。196 收藏 -
解释 Go testing.B.Loop 如何接管基准测试的迭代扩容、计时边界和防编译器消除职责,并说明 b.N 仍可在循环结束后用于自定义指标。497 收藏 -
Go 1.24 引入的 testing.B.Loop 可以把基准测试的一次性初始化和清理放到计时边界之外。本文用固定输入的哈希基准说明正确写法、b.N 迁移边界、编译器优化注意事项和 go test 检查命令。117 收藏 -
Redis 的 lfu-decay-time 表示访问频率计数每减少 1 所需的分钟数,默认值 1,设为 0 则不衰减。它不是 TTL,也不是后台定时清零。本文结合 8 位计数器、OBJECT FREQ 和调参场景说明如何选择。461 收藏