golang
已收录文章:14425篇
-
一、使用带缓冲的通道限制并发数 1.1方案详情 先上代码如下, 逻辑很简单. package golimit type GoLimit struct { ch chan int } func NewGoLimit(max int) *GoLimit { return &GoLimit{ch: make(chan int, max)} func (g *GoLi135 收藏
-
附上: 博文实例demo:https://github.com/sunmi-OS/grpc-gateway-demo grpc-gateway官网:https://github.com/grpc-ecosystem/grpc-gateway 一,grpc-gateway介绍 grpc-gateway是protoc的一个插件 。它读取Grpc服务定义,并生成反向代135 收藏
-
select 监听进入通道的数据,也可以是用通道发送值的时候。 select 是 Go 在语言层面提供的多路 I/O 复用机制,用于检测多个管道是否就绪(即可读或可写),其特性与管道息息相关。 语法格式135 收藏
-
从 Go 1.24 的 weak.Pointer 和 runtime.AddCleanup 出发,讲清弱引用缓存、Value 判空、GC 回收、清理回调和生产场景的使用边界。134 收藏
-
缓存雪崩需用随机TTL打散过期时间,击穿需用singleflight或SETNX保证单次回源;二者必须分开处理,混用会增加延迟和故障风险。134 收藏
-
接口断言在Go中虽灵活但有性能开销,因运行时需检查类型并提取数据,频繁使用会累积性能瓶颈。其开销源于接口值由类型信息和数据指针组成,断言时需动态匹配类型并获取值,涉及内存访问和指针比较。优化方法包括:避免不必要的断言,优先使用类型switch减少多次检查,利用Go1.18泛型将类型确定移到编译期,缓存高频断言结果,以及面向具体类型设计API。通过pprof分析CPU和内存性能,结合基准测试与代码审查,可识别并优化断言热点,提升程序效率。134 收藏