-
bufio.Scanner是流式读取大文件最轻量的选择,但默认缓冲区仅64KB,遇超长行会报错;需调用scanner.Buffer(make([]byte,64*1024),1<<30)扩容缓冲区。
-
Go中创建文件用os.Create(清空重写,不建父目录),创建单层目录用os.Mkdir(父目录须存在),嵌套目录用os.MkdirAll(自动递归创建);均需检查错误并合理设置权限。
-
Go中time.Time没有内置过期时间概念,业务定义的过期时间可通过Unix()(秒)、UnixMilli()(毫秒)或UnixNano()(纳秒)转为时间戳;JWT的exp字段在v5库中已自动转为time.Time;Redis的EXPIREAT需传Unix秒级时间戳,而Set方法传time.Duration;判断过期应先检查IsZero()再调用Before(time.Now())。
-
在Golang中,使用strings.Builder可高效处理字符串拼接。由于字符串不可变,频繁拼接会导致内存浪费,而strings.Builder通过内部[]byte缓冲区减少拷贝;循环中应避免+=拼接,改用Builder并预分配空间(b.Grow(n)),仅在最后调用b.String();WriteString优于Write,fmt.Fprintf可用于简化拼接,但性能略低;对固定文本建议缓存复用以减少调用次数。
-
因为关闭channel的唯一安全主体是发送方,且必须确保所有发送操作彻底完成后再关闭;若任一生产者提前关闭,其余生产者继续向已关闭channel发送数据将触发panic:sendonclosedchannel。
-
直接用http.FileServer默认不缓存、不压缩、不fallback、路径校验松散,易致404或性能低下;核心问题在于其隐式路径假设(如不自动补/、不查index.html)、相对路径风险、缺失Cache-Control与gzip、未防护目录遍历,且无SPAfallback机制。
-
生产环境必须用pgxpool.Pool,因其支持连接复用、健康检查、自动重连和context取消;pgx.Connect和sql.Open+lib/pq均不满足高并发与稳定性要求。
-
本文介绍如何使用Go工具链中的oracle(现已被guru取代,但原理相通)准确查询某结构体类型满足的所有接口,重点解决位置参数格式错误问题,并提供替代方案与实用技巧。
-
sync.Map.Delete每秒超50次即明显变慢,因其属高成本写路径操作,需原子读写read/dirty、检查amended、跳指针、内存屏障,开销高于RWMutex+map;它仅为读多写少场景设计,高频删应换分片锁、concurrent-map或定时重建。
-
从 Kubernetes CPU limit、cgroup 配额和尾延迟出发,讲清 Go 1.25 容器感知 GOMAXPROCS 的默认行为、验证方法、迁移注意点和线上落地清单。
-
Go图片水印失败主因是解码未校验错误、坐标硬编码、透明度未用draw.Over及NRGBA类型、批量处理内存溢出;需检查err、动态计算位置、调整alpha并流式处理。
-
Go的json.Marshal默认忽略函数字段,但可通过实现json.Marshaler接口,将方法调用结果动态注入JSON输出,从而优雅地将计算型字段(如Value()、Size())作为JSON字段导出。
-
Go中收集goroutine错误的四种方式:1.带缓冲error通道;2.共享error变量+Mutex;3.errgroup.Group自动传播首个错误;4.锁保护切片汇总全部错误。
-
应构造完整HTTPhandler链(middleware(handler))进行基准测试,复用request/recorder、调用b.ResetTimer(),降级依赖(如ioutil.Discard日志)、重置req.Body,用-benchtime=10s-count=5和benchstat对比版本差异,并结合pprof火焰图与allocs/op分析真实瓶颈。
-
NSQ线上静默失效主因是连接与配置误用:Producer须全局复用并显式Connect(),ConnectToNSQLookupd()才用于生产服务发现,地址须为TCP端口(4160),PublishAsync错误回调不可为空且需异步处理,消息可靠性依赖幂等设计而非NSQ自身。