-
ReceiverQueueSize设为0会被自动修正为1000,因客户端消费依赖非空缓冲区触发消息分发,强行设0将导致Receive()阻塞在waiting状态;其本质是控制Broker推送批量大小,而非拉取粒度。147 收藏 -
Golang · Go教程 | 12小时前 | 并发编程 · 数据竞争 · Go教程 · 生产实践 · race detector · golang Go 数据竞争 并发 sync atomic race detector go test -race
从共享计数器和订单状态缓存出发,讲清 Go race detector 的运行方式、报告解读、修复策略、CI 阻断和上线检查。147 收藏 -
GitHubActions中gotest卡住主因是未设超时及遗留goroutine,须加-timeout60s、用httptest.NewUnstartedServer、跳过真实DB连接;发布失败因路径权限错,需清理dist并设GITHUB_TOKEN写权限;私有模块拉取失败因漏配GOPRIVATE和go.sum缓存key。145 收藏 -
模块发布前必须设置正确的go.mod文件,其modulepath需与代码托管地址一致(如github.com/yourname/yourmodule),打tag必须为vX.Y.Z格式,且需在全新环境验证goget和gobuild是否正常。145 收藏 -
异步写入避免阻塞:通过内存缓冲和独立goroutine解耦日志写入;2.合理轮转策略:按大小轮转、限制备份数、延迟压缩;3.优化库配置:调整lumberjack的MaxSize、MaxBackups,复用文件句柄;4.减少日志开销:去除冗余、结构化输出、高频日志采样。需持续调优以避免性能瓶颈。145 收藏 -
围绕 Go 1.24 新增的 os.Root、OpenInRoot 和 Root.Open,讲清路径遍历防护、符号链接边界、文件上传、安全解压、测试用例和老项目迁移方式。144 收藏 -
Cursor生成的Go网络状态机代码类型不安全、测试覆盖不足、存在竞态与泄漏、缺乏Mock隔离——因用string定义状态致编译期无法校验非法赋值,测试仅覆盖主路径而忽略非法转移与并发场景,HandleEvent混入耗时操作且未用context管控生命周期,未抽象网络依赖接口导致测试不稳定。143 收藏 -
逃逸分析本身不直接导致内存碎片,而是因小对象逃逸至堆、高频分配释放及GC延迟,造成mheap中大量不连续小span堆积形成外部碎片。143 收藏 -
从生产排障角度讲 Go log/slog 的结构化字段、context logger、错误日志、脱敏、日志级别和 trace/metrics 关联。143 收藏 -
Go语言中无法原子检测channel关闭状态,只能通过接收操作v,ok:=<-ch判断,ok为false表示已关闭;其他如IsNil()、ch==nil、len/cap判断均无效。142 收藏 -
Go原生错误不带堆栈,需用github.com/pkg/errors.Wrap或runtime/debug.Stack()手动添加;Go1.20+支持错误链但不自动记录堆栈;日志加Lshortfile标志更轻量实用。142 收藏 -
Go接口无运行时方法签名,reflect无法获取接口要求的方法列表;只能通过具体实现类型的实例反射其方法,且需用指针接收者确保完整性。141 收藏 -
原型模式通过复制现有对象创建新对象,在Go中利用接口和结构体实现克隆,支持浅拷贝与深拷贝,结合注册表可管理原型实例,适用于频繁创建相似对象的场景。141 收藏 -
用带缓冲channel实现多生产者多消费者队列,tasks:=make(chanstring,100)创建共享队列,生产者并发写入、消费者forrange监听,关闭由生产者统一执行。141 收藏 -
Go的map默认非并发安全,多goroutine读写会触发panic;sync.Map适用于高读低写场景,但不支持遍历且无泛型;推荐用泛型SyncMap+RWMutex封装以兼顾类型安全与并发控制。141 收藏