golang context 协程      2020-12-18
### 由"并发控制"开始 golang语言层面提供了协程支持为我们开发高并发程序带来巨大便利,但是就因为太容易开辟协程引入了一个大部分时候我们都容易忽视的问题:协程泄露。 阅读下以下代码: ```go func main() { r := gin.Default() r.GET("/run", func(c *gin.Context) { for { fmt.Println
gdb mac golang      2020-08-21
## mac 下 gdb 安装及错误排查 ### 使用 brew 安装 gdb ```brew install gdb``` ### gdb签名 安装后直接使用会提示『Unable to find Mach task port for process-id』错误。这是因为 macos 下gdb 没有权限去访问其他进程,此时需要使用自签名系统证书并给 gdb 程序签名。 1. 在钥
golang redis 分布式 定时任务      2018-11-08
### 背景 最近项目中的定时任务越来越多,为了防止任务重复执行曾经使用过的方案: - 只启用了一个节点。 - 固定循环间隔,使用分布式事务锁。 第一种方案没有容错机制,当单个节点宕机,所有定时任务都无法正常执行。 第二种方案不能跟cron一样灵活设定时间,比如需要设定每天1点执行就必须借助数据库或者其他存储手段去轮询,非常低效。 在对比了市面上主流的分布式定时任务库后,发现要不就是过