-
time.Now().Unix()返回自Unix纪元起的整秒数(int64),无毫秒精度;需毫秒用UnixMilli()或UnixNano()/1e6;还原时间须显式传纳秒偏移(如0);解析字符串务必指定时区,避免跨时区误判。471 收藏 -
告警规则应结构化为导出字段的Rule结构体,用JSON/YAML加载,operator存字符串以利扩展;通过fsnotify热加载并双变量+读写锁保障安全;构建device_id与metric两级索引优化匹配性能;增加duration_sec和suppress_window_sec支持时间窗口与去重抑制。471 收藏 -
直接用chanint易卡死因无缓冲需同步收发:生产者发送时消费者未启动即阻塞,导致死锁;须用make(chanint,N)设缓冲、go启动双端、生产者close()后消费者用range安全退出。471 收藏 -
Go结构体字段必须首字母大写(导出)才能被json.Marshal序列化;小写字母开头的字段会被忽略,导致输出空对象{}。本文详解结构体JSON转换原理、正确用法、标签控制及错误处理最佳实践。471 收藏 -
CGO中C.CString分配的内存不释放会导致持续内存泄漏,RSS不断上升直至OOM;必须配对C.free,且需根据C函数文档判断返回指针是否需手动释放。471 收藏 -
Go网络请求优化需复用连接、控制并发、设置超时、选合适协议:自定义http.Client调优Transport参数,用context设分级超时,限流防压垮,内部通信优先gRPC,避免JSON解析瓶颈。470 收藏 -
Go单元测试依赖gotest和testing包,命名需严格匹配(_test.go、TestXxx、*testing.T),t.Error继续执行而t.Fatal终止,推荐t.Run表驱动测试,-v查看日志,-cover统计覆盖率,依赖需接口抽象以保证快速隔离。470 收藏 -
Go标准库不内置Session支持,因设计哲学强调“小而明确”,需开发者自行实现存储与生命周期管理;Cookie须设HttpOnly、Secure、MaxAge,并用crypto/rand生成ID、登录后轮换ID防固定攻击,Redis是推荐存储方案。469 收藏 -
Go的http.ServeMux默认不防CSRF,需手动实现Token校验:服务端生成、绑定session、双向验证;Token要一次性或短时效、禁放URL、存session.Values、用crypt/rand安全生成、长度≥32字节、前端模板显式传入并正确渲染。469 收藏 -
不能安全跨包访问未导出变量或函数——go:linkname绕过可见性检查,但未导出符号不进导出表,易链接失败或运行时panic;仅支持标准包文档化符号或显式导出的小写符号。469 收藏 -
Go中需手写归并排序,因标准库未提供;应采用迭代式bottom-up实现,复用单个辅助切片,避免递归爆栈和频繁内存分配。469 收藏 -
不能直接用time.Now().UnixNano()生成分布式ID,因其纳秒级时间在高并发下仍会重复,且无机器/进程标识导致跨节点不唯一;加锁串行化则引发性能瓶颈。469 收藏 -
Go中实现线程安全单例最推荐用sync.Once,它保证初始化逻辑仅执行一次且并发安全;其次可选init()饿汉式(启动即创建)或sync.Mutex(不推荐,易出错)。468 收藏 -
本文介绍如何将Go编译的命令行程序封装为macOS原生应用包(.app),从而实现双击启动时不显示终端窗口,获得与图形界面应用一致的用户体验。468 收藏 -
能,iota定义的常量是编译期确定的整型常量,支持算术运算(+、-、*、/、%)和位运算(<<、&、|、^、&^),但须满足编译期可求值与类型兼容规则。468 收藏