Go教程技术文章
-
背景描述 如下图所示,负载均衡做为反向代理,将请求方的请求转发至后端的服务节点,实现服务的请求。 在nginx中可以通过upstream配置server时,设置weight表示对应server的权重。 若存在多个服481 收藏 -
浏览器的请求去请求目标地址,然后获得结果它再发送给浏览器。对于Go语言来说,实现转发只需要简单的一行代码即可实现,如下所示: httputil.NewSingleHostReverseProxy(address) 基于此功能,进行481 收藏 -
go work sync 会用 MVS 计算工作区构建列表,再把相关依赖版本同步回各模块的 go.mod。本文给出执行、审查、tidy 分工与 CI 独立验证方法。480 收藏 -
用 go.work 在本地联调多个 Go 模块,理解 use、GOWORK=off 与 go work sync 的职责,避免把临时 replace 带进正式发布。480 收藏 -
Go 的 //go:embed 资源属于 embed.FS,os.Stat 查询的是当前工作目录。本文用 fs.ValidPath、fs.Stat 和路径层级排查嵌入静态资源找不到的原因。480 收藏 -
Go 文件下载接口不能只拼接用户传入的文件名。本文用 filepath.Rel 计算相对路径,拒绝跳出下载根目录的请求,并通过 http.ServeFile 返回文件。480 收藏 -
Go 的 html/template 会按 HTML、属性、URL 和 JavaScript 上下文自动转义;template.HTML 只适合经过可信构造的片段。本文用最小示例说明安全边界、常见误区和可核验写法。480 收藏 -
用 Go io.SectionReader 把大文件的一段变成受限 Reader,弄清 NewSectionReader 的偏移、EOF 边界、Seek 行为与并发复用条件。480 收藏 -
Go用户注册登录需验证输入、bcrypt加密密码、参数化存储、JWT或Redis会话;校验邮箱、密码强度、用户名;禁用明文存储和SQL拼接;设HttpOnly/SecureCookie。480 收藏 -
Go1.21+可直接使用内置min()函数比较两个time.Duration值;旧版本需手动实现,本文详解两种方案及最佳实践。480 收藏 -
oam-go-sdk不能直接用于普通Go应用,因其仅为OAM控制平面内部使用的类型定义和编解码工具,不提供DeployApplication()等部署方法,仅导出结构体和Unmarshal辅助函数。480 收藏 -
Go通过error接口实现错误处理,使用errors.New和fmt.Errorf创建错误,支持自定义错误类型、哨兵错误及错误包装。480 收藏 -
Go程序在Debian上调用外部命令(如cwebp)失败,常因系统缺少运行时共享库(如libwebp.so.5),而非PATH或权限问题;需通过ldd检查依赖、统一使用包管理器安装库,并确保运行环境与编译环境一致。480 收藏 -
生产环境Go镜像必须CGO_ENABLED=0静态编译,用scratch或alpine基础镜像;进程需优雅处理SIGTERM、实现/healthz健康检查;配置通过Secret/ConfigMap注入,禁止硬编码。480 收藏 -
用rate.Limiter做单机限流最稳妥,它基于令牌桶算法、线程安全、可扛突发;需复用实例、用Wait(ctx)避免阻塞;按用户/IP/路径限流时须用sync.Map缓存并定期清理过期key;集群场景必须用Redis+Lua原子实现。480 收藏