Go语言技术文章
-
直接用golang.org/x/time/rate。它是官方维护的生产级令牌桶实现,基于原子操作和单调时钟,支持rate.Limit和burst参数,避免自行实现的并发安全、时钟漂移等问题。118 收藏 -
GoRPC默认同步阻塞,性能瓶颈在于连接与序列化开销;优化核心是异步调用(goroutine+channel)和连接池复用,需用唯一ID、sync.Map缓存channel、context超时控制防泄漏。454 收藏 -
Go语言利用goroutine和channel实现高效并发,通过WebSocket协议构建聊天室,核心在于使用Hub模式管理客户端连接与消息广播,结合sync.Mutex保证并发安全,以非阻塞方式处理消息发送,确保高并发下服务稳定。264 收藏 -
time.Sub()计算时间差必须确保两时间点时区一致,否则结果为UTC偏移差而非钟表时间差;Duration支持纳秒级精确运算但不提供年月方法,因日历逻辑复杂;解析字符串需显式指定时区,推荐用ParseInLocation;判断相对日期应优先用AddDate而非Sub后换算。349 收藏 -
接口能否接收值取决于方法集匹配:值接收者时Person和Person均可;指针接收者时仅Person可赋值,Person{}因无法取地址而编译失败。103 收藏 -
根本原因是Go模块依赖解析默认锁定go.mod中精确版本,手动升级可能引入不兼容API变更;官方方案是通过/v2等主版本路径区分不兼容大版本,而非自动降级。182 收藏 -
本文详解Godep在多包单仓库项目中的正确使用方式,指出在子目录执行godepsave会导致本地包被错误vendoring的根本原因,并提供从项目根目录统一管理依赖的标准实践。376 收藏 -
etcd分布式锁不能直接用Put+Delete模拟,因裸Put无自动过期、裸Delete无法校验所有权;必须用Lease绑定TTL,并通过CAS(PrevKV+Txn)确保加锁和释放的原子性与安全性。112 收藏 -
errgroup.WithContext是并发错误处理的起点,需传入带cancel的context并在子任务中显式检查ctx.Err(),否则无法及时中断;Wait仅返回首个非nil错误,不汇总全部错误。336 收藏 -
gvm切不动版本主因是GOROOT或GOBIN被硬编码覆盖,需检查并删除相关export语句,确保gvm初始化脚本位于shell配置末尾;gomodtidy报错多因GO111MODULE/GOPROXY配置不当;GOPATH不隔离导致冲突应改用gowork或动态GOPATH;install卡住常因缺失C工具链或OpenSSL头文件。186 收藏 -
Go直连Ollama只需HTTP请求http://localhost:11434/api/chat;需配置OLLAMA_HOST=0.0.0.0:11434、确认模型loaded、非流式设Stream=false、流式需手动剥离data:前缀并逐块解码。407 收藏 -
Go语言中不能直接对map取地址,因为map本身是引用类型;声明*map[K]V虽合法但极少实用,仅在需替换整个map实例或统一管理生命周期时才需使用。333 收藏 -
Kubernetes中滚动更新Deployment和StatefulSet的核心是修改Spec.Template触发控制器重建,配合RollingUpdate策略控制节奏;必须变更Pod模板字段(如镜像或加时间戳annotation)才能生效,否则被忽略或拒绝。200 收藏 -
Go调试首选fmt.Println和fmt.Printf:前者自动换行空格、适合快速查值;后者需格式符(如%v、%+v)、支持精准控制。注意行号标记、避免循环狂打、防止Printf参数错配等坑。259 收藏 -
Go的http.ResponseWriter实现SSE时需保持连接不关闭:设置正确响应头、使用http.Flusher显式刷新、监听上下文取消信号防goroutine泄漏,并严格遵循SSE协议格式发送消息。423 收藏