上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 34 下一页

golang取地址操作采坑:for idx,item := range arr中的item是个独立对象

摘要: 先看代码: package main import "fmt" func main() { type s struct { A string B int32 } arr := []s{ {"123", 123}, {"456", 456}, {"789", 789}, } m := make(map 阅读全文
posted @ 2020-08-24 17:10 ahfuzhang 阅读(366) 评论(0) 推荐(0)

发现一个现象:golang中大量的go出新协程,必然在GC统计中出现1ms以上的GC延迟

摘要: 结论:协程池还是有必要的,能够有效减小GC的压力。 我的某个服务,为了方(tou)便(lan),一些异步处理的场合直接go出协程来处理。 服务中使用这样的代码来统计GC的延迟: var mem runtime.MemStats runtime.ReadMemStats(&mem) for _, ns 阅读全文
posted @ 2020-08-18 21:07 ahfuzhang 阅读(621) 评论(0) 推荐(0)

【解决了一个小问题】go.mod文件中引用另一个库,总会自动拉取新版本

摘要: 我的项目依赖某个旧的公共库: require ( git.xxx.com/myprj/mylib v0.0.43 ) 可以编译的时候,系统总会自动加上这样的路径: require ( git.xxx.com/myprj/mylib v0.0.43 git.xxx.com/myprj/mylib/sr 阅读全文
posted @ 2020-07-18 11:12 ahfuzhang 阅读(1376) 评论(0) 推荐(0)

【记录一个问题】一个golang中的BUG,为啥编译的时候无法发现,而单独跑测试用例就发现了

摘要: 代码大致如下: func DoSomething(){ log.Printf("a=%s, b=%s, c=%s", a, b) //忘记少写一个参数。但是编译正常通过 } func TestDoSomething(t *testing.T){ DoSomething() } 单独运行测试用例的时候 阅读全文
posted @ 2020-06-17 13:51 ahfuzhang 阅读(149) 评论(0) 推荐(0)

【犯傻经历】虽然用原子加减来限制协程总数,但是协程加上了永不退出的代码

摘要: 代码大致如下 var coroutineCount int64 = 0 const maxCoroutineCount = 4000 const defaultSleepMs = 100 func Inc(){ atomic.AddInt64(&coroutineCount, 1) } func D 阅读全文
posted @ 2020-06-09 21:24 ahfuzhang 阅读(143) 评论(0) 推荐(0)

【解决了一个小问题】gin框架中出现如下错误:"[GIN-debug] [WARNING] Headers were already written. Wanted to override status code 400 with 500"

摘要: POST到数据到一条gin框架的接口后,客户端收到400错误,并且返回了业务中返回的“decode json fail”。 关键代码是: func report(c *gin.Context) { req := pb.ReportRequest{} err := c.BindJSON(&req) i 阅读全文
posted @ 2020-05-27 11:07 ahfuzhang 阅读(4539) 评论(0) 推荐(0)

【get√】发现一个redis zset的新玩法:用ZINTERSTORE把value都置0

摘要: 直接上指令: redis cli h 192.168.0.5 p 6379 a test123 阅读全文
posted @ 2020-05-23 15:58 ahfuzhang 阅读(350) 评论(0) 推荐(0)

【代码分享】用redis+lua实现多个集合取交集并过滤,类似于: select key from set2 where key in (select key from set1) and value>=xxx

摘要: redis中的zset结构可以看成一个个包含数值的集合,或者认为是一个关系数据库中用列存储方式存储的一列。 需求 假设我有这样一个数据筛选需求,用SQL表示为: 总结起来就是: 输入: key的列表:key1, key2, key3... 任意多个 每个集合及其需要筛选的下限: set2中值大于v2 阅读全文
posted @ 2020-05-23 10:56 ahfuzhang 阅读(1272) 评论(0) 推荐(0)

【记录一个问题】golang神坑,明明返回了接口指针类型的nil值,却无法用if判断

摘要: 先看看导致异常的代码: 经yif同学介绍,搜索了这篇帖子来学习: "golang interface判断为空nil" 把代码修改成以下,问题解决: 方法1 方法2 阅读全文
posted @ 2020-05-20 18:56 ahfuzhang 阅读(602) 评论(0) 推荐(0)

【记录一个问题】神坑,自定义一个golang的error类型,居然运行崩溃了

摘要: 2020 05 20 18:20补充: 感谢yif同学提供指导,出现错误并且打印大量信息的原因是函数递归调用导致栈溢出。 而导致递归调用的关键代码是%v 1. 类型实现了error的interface 2. %v的时候会反射类型,发现实现了error接口,然后调用error的.Error()方法 3 阅读全文
posted @ 2020-05-20 17:24 ahfuzhang 阅读(265) 评论(0) 推荐(0)
上一页 1 ··· 20 21 22 23 24 25 26 27 28 ··· 34 下一页