摘要: demo代码地址 https://github.com/Me1onRind/go-demo 拦截器原理 和gin或django的middleware一样, 在请求真正到达请求方法之前, 框架会依次调用注册的middleware函数, 可以基于此方便的对每个请求进行身份验证、日志记录、限流等功能 拦截 阅读全文
posted @ 2021-08-29 00:38 Me1onRind 阅读(1435) 评论(0) 推荐(0) 编辑
摘要: https://me1onrind.github.io/2021/06/06/grpc_one/ demo代码地址 https://github.com/Me1onRind/go-demo 环境搭建 go go 1.13 以上 需安装的二进制文件 可执行文件名 安装方式 作用 protoc http 阅读全文
posted @ 2021-06-12 19:04 Me1onRind 阅读(711) 评论(0) 推荐(0) 编辑
摘要: 启用pprof分析 import ( "net/http" _ "net/http/pprof" ) func pprof() error { if err := http.ListenAndServe("0.0.0.0:8080", nil); err != nil { return err } 阅读全文
posted @ 2021-04-11 20:07 Me1onRind 阅读(713) 评论(0) 推荐(0) 编辑
摘要: 场景 需要使用go-playground/validator对入参进行更细致的验证, (一来相比其他grpc validator plugin, 这个包功能完善一些, 二来项目中使用的gin框架也是依赖于才此包, 保持统一) 当然其他场景可能有一些其他需求, 需要对protobuf文件编译出来的结构 阅读全文
posted @ 2021-01-10 22:38 Me1onRind 阅读(2751) 评论(0) 推荐(2) 编辑
摘要: go test基础用法拾遗 单元测试文件 TestMain func TestMain(m *testing.M) { os.Exit(m.Run()) } 一个目录下所有单元测试文件中只能有一个TestMain函数 执行go test时, 先执行TestMain, 执行至m.Run()时再执行具体 阅读全文
posted @ 2020-12-20 16:46 Me1onRind 阅读(750) 评论(0) 推荐(0) 编辑
摘要: 本文仅记录wire的具体使用方法, 而wire这个工具的作用, 功能和优缺点不再赘述 wire的github地址: https://github.com/google/wire demo中struct依赖关系 场景一 成员变量是结构体类型 用法一: 直接通过各struct的new函数拼装 自定义了所 阅读全文
posted @ 2020-09-08 22:54 Me1onRind 阅读(2471) 评论(0) 推荐(0) 编辑
摘要: 限流器模型 golang.org/x/time/rate 限流器目前提供了一种令牌桶算法的的限流器。 请求需要拿到令牌才能接着往下执行, 逻辑上有一个令牌桶,桶的最大容量是固定的。 当桶内令牌数 小于 桶的最大容量时, 以固定的频率向桶内增加令牌直至令牌数满。 每个请求理论上消耗一个令牌(实际上提供 阅读全文
posted @ 2020-06-25 12:43 Me1onRind 阅读(2925) 评论(0) 推荐(0) 编辑
摘要: 需求 使用pip 从 git仓库而不是pypi源安装python包 不是从master分支拉取而是其他分支(例子 test分支) setup.py 不在根目录下面 例子 github地址: https://github.com/Me1onRind/pip_demo test分支 + pip_demo 阅读全文
posted @ 2020-05-30 14:15 Me1onRind 阅读(1621) 评论(0) 推荐(0) 编辑
摘要: 1. go直接调用写在本文件的c函数 需要import "C", 目的是让go的编译器识别并提取出C代码, 做处理后才能真正让go代码直接调用c的函数 import "C" 和 上面的C代码之间不能有空行 这是语法规则 c 的 plus 函数返回的类型在go里并不是 int 而是 _Ctype_in 阅读全文
posted @ 2020-05-06 09:45 Me1onRind 阅读(1269) 评论(0) 推荐(0) 编辑
摘要: 原理 装饰器本质也是一个函数, 只不过这个函数需要遵循以下规则: 入参只能有一个,类型为函数。 被装饰的函数将入会被传入这个参数 返回值是必须是一个函数, 届时被调用的时候实际上调用的是返回出来的这个函数,所以返回的函数入参通常是 以满足所有函数需要 之后通过@语法糖即可装饰到任意函数上 简单装饰器 阅读全文
posted @ 2020-05-04 20:38 Me1onRind 阅读(1193) 评论(0) 推荐(0) 编辑