今天看 Caddy 源码,IDE 源码一层层点点下去,最后发现 net/http/transport.go 里有个 wantConnQueue 的实现很有意思。
Go 处理 CSV 的两个场景
有两种处理 CSV 的场景,我分别都封装了相应的处理代码,这里总结一下。
容器、tc、iperf3
使用 tc 实现对容器应用的限流,并使用 iperf3 测网速。
Go 操作 csv 简易指北
仅仅只是介绍一下简单使用以及遇到的两个坑
Go 封装一个重试函数
一个挺好用的重试函数封装
Mac iTerm2 安装 ranger
- MacOS 10.15.7
- iTerm2 3.4.3
go io 包再学习
一些我不怎么熟悉的接口和方法的总结
go 内存管理的变更
在 Linux 环境中,Go 的版本 1.12 - 1.15 由于使用到 Linux 的 MADV_FREE 特性,对内存进行 ”懒释放“ ,造成了 RSS (Resident Set Size,常驻内存集)虚高,容易出 OOM 的错误。可以采用设置 GODEBUG=madvdontneed=1 来解决。到 1.16 后,又改回了原有的 MADV_DONTNEED 。
参考文章如下:
go linkname 使用
在 go 中如果希望调用某些模块的私有方法,可以使用 //go:linkname 来实现,过程很简单,以调用 runtime.fastrand 为例
go http 中间件
在 go 里实现一个 http 中间件并不难,使用洋葱模型即可。本篇代码参考 https://github.com/urfave/negroni