月度归档: 2022 年 8 月

3 篇文章

记一次gorm.ErrRecordNotFound踩坑记录
在某个项目中,有个数据验证的业务,即在数据库中查询数据是否存在,若数据已存在则返回错误并给前端提示。稍想了一下就能写出如下代码Func01 Func01 func (t *ServiceInfo) Find(c *gin.Context, tx *gorm.DB, search *ServiceInfo) (*ServiceInfo, error) { out := &ServiceInf…
Golang实现支持中间件的简易TCP框架
在golang的标准库中没有为tcp直接提供像http那样简单易用的服务框架,我们不妨自己手动实现一个 主体思路 我们的实现的主题思路分为以下四个内容 监听服务 获取构建新连接对象并设置超时时间及keepalive 设置方法退出时连接关闭 调用回调接口 TcpHandler 主要结构体和接口 首先是TCPServer的结构体,我们希望用户可以自由构建TcpServer并设置超时时间等自定义选项 t…
Golang实现四种负载均衡算法
负载均衡算法实现 在这篇文章中,我将实现最常见的四种负载均衡算法,即随机负载、轮询负载、加权负载和一致性hash负载 随机负载 随机挑选目标服务器ip type RandomBalance struct { curIndex int rss []string } // 添加新的服务ip func (r *RandomBalance) Add(params ...string) error { if…