i18n 国际化多语言本质上就是先写好一堆映射,在根据想要的语言取对应的文字。 Golang 的 i18n 多语言方案网上查了一下,文章都讲的不太细致,而且代码看起来也不太
[阅读全文]
Golang JSON 序列化时 HTML 特殊字符转义问题分析
场景复现 在 API 实现中返回一个 JSON 结果,其中有一个字段为 URL 链接,客户端拿到该链接后做请求,URL 链接中存在多个使用 & 连接的 querystring 参数。 服务端实现时,通
[阅读全文]
Golang 运行时除数为 0 返回 Inf
在 Golang 中,除数为 0 时,常规情况下是无法编译通过的,但是如果除数是由运行时决定的,那么为除数为 0 时则不会 panic,而是实现为 IEEE 754 标准,返回 In
[阅读全文]
Traefik 简介以及中间件插件开发
Traefix 简介 Traefik 是整个系统的网关大门,负责拦截并路由每个传入的请求,它不需要像Nginx这类反向代理一样需要一个配置文件来配置所有可能路由,而是实时
[阅读全文]
使用 Github Actions 自动部署 Golang 应用到 VPS 服务器
环境说明 使用 GitHub Actions 可以在你提交代码后自动将最新代码编译发布部署到你的 VPS 服务器,这里记录一下配置步骤。 服务没有使用 Docker 部署,直接通过 supervisord 启动二进制文
[阅读全文]
实现自定义的 Gin Logger 中间件
gin 的中间件原理解析 在 gin 中,中间件是一系列 gin.HandlerFunc 链,它的函数签名类型和我们业务中写的URL对应的 handler 是一样的,都是gin.HandlerFunc。 gin
[阅读全文]
Golang 并发 append slice 时的并发安全问题分析与总结
背景 导出数据库中的数据,由于数据量巨大且查询复杂,完成导出的时间很长,因此通过将并发查询然后将结果合并到一起。 在导出的数据量只有30多万时,
[阅读全文]
Go 单元测试 gostub 打桩使用方法
golang 单元测试中常用以下 4 个库方便测试代码的编写: gostub 主要用来给变量、函数、过程打桩 但是给函数打桩时,需要做侵入式修改 convey 主要用途是用来组织测试用例
[阅读全文]
在 Zap 中集成 Sentry 自动上报 Error 事件
在项目中发生了错误时我们都会打印 Error 级别的日志,但是即使有日志采集,在对发生 Error 时的告警通知和信息采集都不一定能快速且完善,目前对日志的告警也只
[阅读全文]
Zap 源码阅读笔记
zap.Logger 日志Logger结构体,以此调用打印日志内容,定义如下: type Logger struct { core zapcore.Core development bool name string errorOutput zapcore.WriteSyncer addCaller bool addStack zapcore.LevelEnabler callerSkip int } zapcore.Entry 日志主体内容结构体,表示一条具体日志,定义
[阅读全文]