Go语言技术文章
-
Go 的 weak.Pointer 不会阻止对象回收,但 finalizer 会临时复活对象。本文说明旧弱指针为何在 finalizer 排队时失效,以及如何通过禁止强引用逃逸、改用 runtime.AddCleanup、按缓存未命中重建对象来消除复活风险。483 收藏 -
Go 变量仍在作用域不等于对象仍然可达:函数参数或接收者可在最后一次提及后失去活性,weak.Pointer.Value 随后可能返回 nil。本文还原根因,并给出强所有者与 runtime.KeepAlive 的正确放置方式。195 收藏 -
Go 1.24 引入的 weak.Pointer 可以让缓存只保存弱引用。本文用元数据缓存示例拆解 weak.Make、Value、GC 可达性和并发重建边界,帮助你写出可安全丢弃、失效后可回源的缓存。118 收藏 -
解释 weak.Pointer.Value 返回 nil 的正常回收语义,区分共享引用容器与目标字段的数据竞争,并给出锁、KeepAlive 和 race detector 的排查写法。153 收藏 -
介绍 Go weak.Pointer 的可达性语义,并用 weak.Make、Value、互斥锁与惰性清理实现不延长对象生命周期的并发安全索引。242 收藏 -
并行基准测试不能把 RunParallel 回调里的 PB.Next 直接替换成 B.Loop。本文区分普通基准循环与并行工作分配,给出 B.Loop 迁移范围、RunParallel 正确写法、计时器边界和 Go 版本兼容检查。142 收藏 -
用 Go B.Run 与 B.Loop 对比 1 KiB、4 KiB、32 KiB、128 KiB 缓冲区,固定负载并隐藏 io.CopyBuffer 快速路径,结合吞吐和内存指标选型。444 收藏 -
解释 Go testing.B.Loop 如何接管基准测试的迭代扩容、计时边界和防编译器消除职责,并说明 b.N 仍可在循环结束后用于自定义指标。497 收藏 -
Go 1.24 引入的 testing.B.Loop 可以把基准测试的一次性初始化和清理放到计时边界之外。本文用固定输入的哈希基准说明正确写法、b.N 迁移边界、编译器优化注意事项和 go test 检查命令。117 收藏 -
B.Loop 只负责迭代与计时,不会恢复循环外可变状态。切片长度、容量、map 内容或缓冲区会跨轮累积,导致每次操作不再等价。本文用可运行示例区分新建成本与复用成本,并说明重置是否计时。105 收藏 -
讲解如何把 Go 旧式 b.N 基准测试迁移到 testing.B.Loop,处理一次性准备、循环内输入重置、计时器控制、自定义指标和结果对比,并说明不能混用的边界。315 收藏 -
说明 Go CrossOriginProtection 与 CORS 同时配置时的职责差异:前者决定非安全跨源请求能否进入业务处理器,后者决定浏览器能否跨源读取响应,并给出共享白名单、中间件顺序和测试矩阵。367 收藏 -
讲清 Go net/http CrossOriginProtection 如何放进已有恢复、日志、认证和路由中间件链,配置可信 Origin、自定义 403 拒绝处理和精确例外,并区分它与 CORS 的职责。316 收藏 -
Golang · Go问答 | 6天前 | 故障排查 · net/http · Go问答 · 反向代理 Sec-Fetch-Site Go CrossOriginProtection Origin Host 403误判
定位 Go CrossOriginProtection 在反向代理改写 Host、请求缺少 Sec-Fetch-Site 时的 403 误判,给出精确可信 Origin、Host 保留与安全测试方案。201 收藏 -
Golang · Go教程 | 6天前 | web安全 · Go教程 · net/http · CSRF防护 Go CrossOriginProtection AddTrustedOrigin 可信子域 跨源写请求
以控制台和 API 分处不同子域的场景,讲清 Go CrossOriginProtection 的精确 Origin 放行、启动校验、拒绝日志、CORS 边界与回归测试。467 收藏