04 2021 档案

摘要:话说一个美滋滋的上午, 突然就出现大量报警, 接口大量请求都响应超时了. 排查过程 查看服务器的监控系统, CPU, 内存, 负载等指标正常 排查日志, 日志能够响应的结果也正常. request.log 中响应时长高达数秒 查看数据库, codis 监控, 各项指标正常 不得已, 只能打开线上 p 阅读全文
posted @ 2021-04-27 10:29 haohongfan 阅读(1193) 评论(1) 推荐(0)
摘要:说道面向对象(OOP)编程, 就不得不提到下面几个概念: 抽象 封装 继承 多态 其实有个问题Is Go An Object Oriented Language?, 随便谷歌了一下, 你就发现讨论这个的文章有很多: reddit google group 那么问题来了 Golang是OOP吗? 使用 阅读全文
posted @ 2021-04-26 10:52 haohongfan 阅读(842) 评论(0) 推荐(2)
摘要:Go 获取随机数是开发中经常会用到的功能, 不过这个里面还是有一些坑存在的, 本文将完全剖析 Go math/rand, 让你轻松使用 Go Rand. 开篇一问: 你觉得 rand 会 panic 吗 ? 源码剖析 math/rand 源码其实很简单, 就两个比较重要的函数 func (rng * 阅读全文
posted @ 2021-04-25 10:32 haohongfan 阅读(1252) 评论(1) 推荐(1)
摘要:hi,大家好,我是 haohongfan。 本篇文章会从源码角度去深入剖析下 sync.Cond。Go 日常开发中 sync.Cond 可能是我们用的较少的控制并发的手段,因为大部分场景下都被 Channel 代替了。还有就是 sync.Cond 使用确实也蛮复杂的。 比如下面这段代码: packa 阅读全文
posted @ 2021-04-23 10:57 haohongfan 阅读(633) 评论(1) 推荐(0)
摘要:面试题: package main func a() []int { a1 := []int{3} a2 := a1[1:] return a2 } func main() { a() } 看到这个题, 你的第一反应是啥? (A) 编译失败 (B) panic: runtime error: ind 阅读全文
posted @ 2021-04-22 10:26 haohongfan 阅读(432) 评论(0) 推荐(0)
摘要:struct 是我们写 Go 必然会用到的关键字, 不过当 struct 遇上一些比较特殊类型的时候, 你注意过你的程序是否正常吗 ? 一段代码 type URL struct { Ip string Port string mux sync.RWMutex params url.Values } 阅读全文
posted @ 2021-04-21 10:27 haohongfan 阅读(551) 评论(1) 推荐(1)
摘要:Hi,大家好,我是 haohongfan。 上一篇文章《一文完全掌握 Go math/rand》,我们知道 math/rand 的 global rand 有一个全局锁,我的文章里面有一句话:“修复方案: 就是把 rrRand 换成了 globalRand, 在线上高并发场景下, 发现全局锁影响并不 阅读全文
posted @ 2021-04-20 10:17 haohongfan 阅读(520) 评论(0) 推荐(1)
摘要:hi,大家好,我是haohongfan。 本篇主要介绍 WaitGroup 的一些特性,让我们从本质上去了解 WaitGroup。关于 WaitGroup 的基本用法这里就不做过多介绍了。相对于《这可能是最容易理解的 Go Mutex 源码剖析》来说,WaitGroup 就简单的太多了。 源码剖析 阅读全文
posted @ 2021-04-19 10:35 haohongfan 阅读(463) 评论(2) 推荐(2)
摘要:hi, 大家好,我是 haohongfan。 本篇文章会从使用方式和原码角度剖析 sync.Map。不过不管是日常开发还是开源项目中,好像 sync.Map 并没有得到很好的利用,大家还是习惯使用 Mutex + Map 来使用。 下面这段代码,看起来很有道理,其实是用错了(背景:并发场景中获取注册 阅读全文
posted @ 2021-04-16 14:43 haohongfan 阅读(4238) 评论(0) 推荐(1)