i18n国际化多语言本质上就是先写好一堆映射,在根据想要的语言取对应的文字。
Golang的i18n网上查了一下,文章都讲的不太细致,而且代码看起来也不太好理解。
之前写Python代码时有使用过babel做多语言集成,通过命令生存pot、po、mo等文件,然后动态获取即可,当时没有详细去研究其原理,今天了解了一下,其实是封装的的[GNU gettext](https://www.gnu.org/software/gettext/manual/gettext.html),gettext就是专门用来做多语言的,它由一系列命令行工具,比如xgettext、msginit、msgmerg
......#### 场景描述
接收到P99超时告警,定位到某接口导致,接口是由新同事实现的,逻辑较简单,是一个MySQL的INSERT OR UPDATE逻辑,
一个请求过来,判断某个非主键字段是否存在,不存在则INSERT插入,存在则按该字段UPDATE更新其他字段。
超时告警在触发与恢复之间反复触发,平均耗时6秒,接口最近无改动,已上线一段时间运行正常。
表结构:
CREATE TABLE `CAPTION` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`created_at` int(1
#### 场景
在API实现中返回一个json结果,其中有一个字段为URL链接,客户端拿到该链接后做请求,URL链接中存在多个使用 `&` 连接的 query string 参数。服务端实现时,通过构造结构体后返回对应的json数据。
但是请求接口时发现 URL 链接中的 `&` 符号被 Golang 自动转义为 `\u0026`,导致客户端无法解析URL中的参数。
一段代码模拟该场景:
package main
import (
"encoding/json"
"fmt"
)
type Data struct {
Link st
在Golang中,除数为0时,常规情况下是无法编译通过的,但是如果除数是由运行时决定的,那么为除数为0时则不会panic,而是实现为IEEE 754标准,返回Inf。
> The result of a floating-point or complex division by zero is not specified beyond the IEEE-754 standard; whether a run-time panic occurs is implementation-specific.
> IEEE 754 specifies five arithmetic excep
......### Traefik 简介
Traefik是整个系统的网关大门,负责拦截并路由每个传入的请求,它不需要像Nginx这类反向代理一样需要一个配置文件来配置所有可能路由,而是实时的通过服务发现来自动更新路由规则,由服务自己告诉它该服务负责处理哪些请求。
Traefik的架构设计:

#### 服务配置自动发现原理
Traefik的配置分为静态配置和动态配置,静态配置是Traefik实例的启动配置;动态配置由Provider自
......### 关于作者

霍华德·马克斯 (英语:Howard Stanley Marks, 1946年4月23日-)是一位美国投资者,企业家和作家。橡树资本管理创办人。
1946年,霍华德·马克斯出生于美国纽约的一个犹太裔家庭,在皇后区长大。尽管他是犹太家族,但却以基督科学家模式培养成长。
1967年,霍华德毕业于宾夕法尼亚大学沃顿商学院金融和日本研究专业[
......#### 节点负载不均衡
##### 现象:
每个索引使用默认的1个分片,1个副本,在3节点集群出现__负载不均衡__现象,两个节点cpu负载很高,另外一个节点cpu负载更低。
##### 原因:
分片+副本一共2个,只能被分散到两个节点上,查询请求只能命中这两个节点。
##### 解决方案:
Es 创建索引后无法动态修改分片数,但是可以动态修改副本数,增加副本数可以分散查询请求。在不改变分片数的情况下,通过调整分片的副本数,使分片副本数+原始分片数的总数为节点数基数或倍数,以达到节点负载均衡,将索引的分片副本数增加到2,加上分片自身,一共3个,刚好均分给3个节
......使用GitHub Actions可以在你提交代码后自动将最新代码编译发布部署到你的VPS服务器,这里记录一下配置步骤。
服务没有使用 Docker 部署,直接通过supervisord启动二进制文件,期望每次提交代码后自动完成编译部署发布上线,通过Github Actions可以实现自动化。
## 部署步骤说明:
0. 提交代码到主分支
1. Github拉取最新代码跑单元测试后编译二进制文件
2. scp 二进制文件到VPS服务器
3. ssh 在VPS上远程执行服务重启命令
## 创建SSH KEY
由于是使用 ssh 进行部署,需要让github能登录服务
......