Liangjf

The darkest hour is that before the dawn.

grpc

grpc压缩编解码

grpc压缩编解码 encoding/encoding.go:23 源码分析 压缩接口 type Compressor interface { Compress(w io.Writer) (io.WriteCloser, error) Decompress(r io.Reader) (io.Reader, error) Name() string } 编码接口 typ...

gin

gin 从路由响应函数看Engine和Context的关系

gin 从路由响应函数看Engine和Context的关系 g.POST("/v1/push", controllers.PushMsg) func PushMsg(c *gin.Context) { } Engine gin的抽象实例 type Engine struct { RouterGroup ... allNoRoute HandlersChain a...

gin

gin 路由注册分析

gin 路由注册分析 源码分析 重要结构体 Engine是gin的“引擎”, 负责整个路由的工作 type Engine struct { //配置管理路由器 RouterGroup ... FuncMap template.FuncMap allNoRoute HandlersChain allNoMethod HandlersC...

gin

gin http从请求到响应的步骤分析

gin http从请求到响应的步骤分析 源码分析 对于gin的分析, 以以下为例子: g := gin.Default() g.Use(gin.Recovery()) g.NoRoute(func(c *gin.Context) { c.String(http.StatusNotFound, "The incorrect API route") }) g.POST("/v1/...

CI/CD

三台机器搭建gitlab+jenkins+docker cicd

三台机器搭建gitlab+jenkins+docker cicd 1、机器信息代码仓库cicd gitlab+jenkins: 本地环境(cicd.code.com) 远程服务器1(阿里云): 39.108.116.154远程服务器 2(腾讯云): 106.54.32.932、配置ssh免密gitlab + jenkins 生成ssh秘钥 ...

etcd3

etcd3 client/client.go设计分析

etcd3 client/client.go设计分析 pkg/mod/github.com/coreos/etcd@v3.3.17+incompatible/client/client.go:176 Client接口 etcd3的client接口 newHTTPClientFactory对象 Client接口的...

go pprof

go pprof分析goroutine阻塞情况

go pprof分析goroutine阻塞情况 go pprof命令介绍 pprof web http://172.16.7.16:8998/debug/pprof 动态图查看 http://172.16.7.16:8998/debug/charts 火焰图 pprof -http 172.16.7.16:7070 http://17...

插件化和设计模式

从go-micro中看插件化和设计模式的思想

从go-micro中看插件化和设计模式的思想 go-micro以组件插件化著称,那么是如何实现的? 先抛出结论:go-micro的插件化基本是借助 函数选项模式实现默认参数和可选初始化参数;借助接口来实现多态的特性,只要实现对应插件的接口就可以注册;借助map来实现存放支持的插件,并通过导入包import _,调用init函数来初始化插件,或者代码注入的方式。 以服务注册插件来进行分析...

C++内存泄漏排查

内存泄漏排查

内存泄漏排查 问题背景:内存泄漏, 90分钟100M 项目是c++写的,出现内存泄漏,肯定马上检查内存相关的系统调用是否合理。 查找new delete,malloc new暂未发现异常调用(非成对使用) 底层内存管理使用jemalloc,监控页面显示还是一直内存泄漏,暂时通过每天凌晨重启来解决 查看日志,有个地方比较奇怪,写本地日志文件,但是写失败。追踪发现日志文件的目录没有创建...

validator.v10库提高参数校验效率

validator.v10库提高参数校验效率

通过gopkg.in/go-playground/validator.v10提高参数校验效率 😎修改前 [proto.go] type AddWorkOrder struct { Order string `json:"order" validate:"required" msg:"lost order param"` Customer u...