golang
已收录文章:235篇
-
接口断言在Go中虽灵活但有性能开销,因运行时需检查类型并提取数据,频繁使用会累积性能瓶颈。其开销源于接口值由类型信息和数据指针组成,断言时需动态匹配类型并获取值,涉及内存访问和指针比较。优化方法包括:避免不必要的断言,优先使用类型switch减少多次检查,利用Go1.18泛型将类型确定移到编译期,缓存高频断言结果,以及面向具体类型设计API。通过pprof分析CPU和内存性能,结合基准测试与代码审查,可识别并优化断言热点,提升程序效率。134 收藏
-
缓存雪崩需用随机TTL打散过期时间,击穿需用singleflight或SETNX保证单次回源;二者必须分开处理,混用会增加延迟和故障风险。134 收藏
-
从 Go 1.24 的 weak.Pointer 和 runtime.AddCleanup 出发,讲清弱引用缓存、Value 判空、GC 回收、清理回调和生产场景的使用边界。134 收藏
-
通过轮询、重试与健康检查实现Go中HTTP负载均衡与高可用:1.使用RoundRobinTransport按序分发请求;2.每请求最多重试三次,跳过失败节点;3.后台定期探测节点健康状态,动态更新可用列表;4.自定义Transport注入http.Client,透明处理负载均衡与容错,提升系统稳定性与吞吐能力。129 收藏
-
Go通过返回error类型显式处理网络错误,需每次操作后检查;2.常见错误包括连接超时、主机不可达、连接重置等,可通过*net.OpError类型断言判断;3.利用Temporary()和Timeout()方法区分临时性与永久性错误,指导重试策略。129 收藏
-
围绕 Go 1.25 实验性 Green Tea GC,讲清 GOEXPERIMENT=greenteagc 的开启方式、适用负载、GC CPU/alloc/op/P99 观察指标、压测和灰度发布流程。128 收藏