golang
已收录文章:806篇
-
map是引用类型,传递时无需指针即可修改内容。使用*map仅在需重置map本身或保持接口一致时必要,避免过度使用以减少复杂度。279 收藏
-
配置GoModule代理可解决国内依赖下载失败问题。使用goenv-w设置GO111MODULE=on和GOPROXY=https://goproxy.cn,direct,推荐阿里云代理goproxy.cn提升下载速度。对于私有仓库如git.example.com,需配置GONOPROXY、GONOSUMDB和GOPRIVATE避免代理。通过goenv验证配置,并用goget测试拉取效果,确认代理生效后即可稳定获取模块。279 收藏
-
先用gomodgraph发现github.com/kr/pretty存在v0.1.0和v0.2.0多版本,再通过gomodwhy定位到引入v0.1.0的间接依赖路径,确认是某个旧版库导致;结合replace或升级该库解决冲突,避免盲目更新。278 收藏
-
管道模式利用goroutine和channel实现数据的多阶段处理,适用于ETL、图像处理等场景。示例中通过gen生成数据、square计算平方,最后消费结果,形成“生产-传输-消费”流程。可扩展为多阶段,并通过扇出(多个worker并行)和扇入(合并结果)提升性能。使用定向channel增强类型安全,合理使用buffer和context控制生命周期,避免goroutine泄漏。278 收藏
-
采用Docker容器化部署并结合CI/CD自动化流程,通过Nginx反向代理与负载均衡提升服务稳定性;优化性能需减少内存分配、合理设置GOMAXPROCS、控制goroutine数量,并优化数据库访问;部署后应启用pprof、Prometheus+Grafana监控、结构化日志及压测工具,持续调优确保服务高效稳定运行。277 收藏
-
Go语言HTTPClient优化需配置连接复用、超时控制和资源管理:1.设置MaxIdleConns、MaxIdleConnsPerHost和IdleConnTimeout以复用TCP连接;2.启用Keep-Alive并设置TLSHandshakeTimeout减少握手开销;3.通过client.Timeout或context.WithTimeout设置请求超时,避免资源堆积;4.全局复用Client实例,提升并发安全的连接效率;5.显式关闭resp.Body并读取完整响应体以释放连接。合理配置可显著提升277 收藏