-
本地消息表必须与业务表同库,因需单机事务保证“业务操作+消息落库”原子性;跨库会导致订单成功但消息丢失,引发永久数据不一致。
-
防止SQL注入的关键在于正确使用预处理语句。1.始终使用占位符(如?或$1等)进行参数化查询,确保用户输入被自动转义而非当作SQL执行;2.避免手动拼接SQL字符串,即使动态构建查询也应使用参数化方式并维护条件与参数的分离;3.慎用ORM中的原始SQL,确保其内部仍采用参数化查询而非字符串拼接,以防止引入安全漏洞。坚持这些做法能有效防御SQL注入攻击。
-
百度翻译API签名需用UTF-8原始字节拼接q+app_id+salt+secret_key后MD5;有道API的curtime须为秒级时间戳且参与sign计算;q/input均不可URL编码,HTTP客户端须设超时与重试。
-
etcd服务注册不能只调用Put,必须结合Lease机制实现心跳与自动摘除:先Grant租约,再Put绑定key,最后KeepAlive续约;否则key残留或静默失效。
-
必须使用wechatpay-go处理微信支付v3,因其自动完成平台证书轮换、Authorization头注入及回调三元组校验;手写HTTP客户端易在时间格式、请求体哈希、证书解析等环节出错导致401。
-
Go集成测试数据库应通过Testcontainers动态启停容器实现环境隔离,结合事务回滚避免数据污染,并用接口抽象DB依赖便于mock单元测试,同时启用SQL日志和t.Log辅助快速定位问题。
-
mkcert生成的证书浏览器仍提示不安全,因其根证书仅加入系统信任库,而Safari、Chrome(macOS)、Edge等使用独立证书存储,需手动导入并设为始终信任;Go运行HTTPS时panic常见于路径错误、权限不足或证书/密钥格式不符(cert.pem需含完整链,key.pem须为PKCS#1格式);localhost证书默认不覆盖127.0.0.1和::1,须显式指定多SAN生成;禁用TLS校验风险极高,会破坏HTTPS安全性及ALPN协议支持。
-
PrintFields函数使用reflect包遍历并打印结构体导出字段名与值:先解引用指针,验证为结构体后,循环NumField()获取字段名和Interface()值。
-
dlvattach失败因ptrace权限限制,需调整kernel.yama.ptrace_scope或为dlv设置cap_sys_ptrace;断点未命中多因源码路径不匹配或二进制被strip;break不支持通配符,须用funcs查函数名后精确设置;CPU占高属正常调试开销,应避免条件断点和长时间停顿。
-
GOROOT指向Go安装目录,GOPATH为工作区路径;现代Go推荐使用Modules管理依赖,无需依赖GOPATH,但正确配置环境变量仍有助于项目管理与兼容性支持。
-
安全的fan-out需为每个goroutine显式复制数据流并监听原channel关闭;fan-in应通过goroutine+WaitGroup合并多channel,且必须用context控制生命周期以防卡死。
-
goget在国内超时或失败主因是proxy.golang.org及github.com等直连不稳定,需设GOPROXY=https://goproxy.cn,direct实现代理+直连兜底,并配GONOSUMDB解决私有模块校验问题。
-
Gonet/rpc默认无超时,需用context.WithTimeout封装Call实现超时控制,或改用gRPC;HTTP/JSON-RPC还需分层设置连接、响应头、读取超时。
-
gomoddownload下载失败时先看GO_PROXY和网络连通性它不走本地GOPATH,也不自动fallback到direct,失败几乎都卡在这两处。默认GO_PROXY是https://proxy.golang.org,direct,但国内访问前者常超时或被重置,direct又因模块服务器无认证/限流直接拒绝请求。临时解决:运行goenv-wGO_PROXY=https://goproxy.cn(或https://goproxy.io)验证是否生效:执行
-
最直接方式是用sort.Slice配合优先级映射map[string]int实现自定义排序,避免字符串字典序错误;推荐结构体用int型Priority字段配合常量,输入时校验转换,输出时查表转回字符串,兼顾安全、性能与可维护性。