![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go基础知识笔记
遥不可及梦
这个作者很懒,什么都没留下…
展开
-
缓存击穿策略singleFlight
简介 缓存击穿:缓存失效时,有大量并发请求过来。大量请求从缓存上拿不到数据,请求压力全部打到数据库上。 场景1:活动结束前。为了完成活动任务,请求活动配置数据请求一般会有爆发性增长。当你的服务没有做防止缓存击穿的话,就有可能让你的数据库宕机 singleFlight包 singleFlight会将对同一个key的所有请求,变成一个请求,所有请求共享一个请求返回的数据。 场景:活动尾声大量并发请求获取活动配置数据。设置该活动key为activity_key,所有请求都会开个goroutine处理。所有请求都通原创 2020-09-16 16:17:26 · 567 阅读 · 0 评论 -
go-redis库使用笔记
安装 go get -u github.com/go-redis/redis 连接 普通连接 func NewClient() (c *redis.Client, err error) { c = redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", DB: 0, }) _, err = c.Ping().Result() if err != nil { retur原创 2020-05-14 12:10:43 · 836 阅读 · 0 评论 -
Go编译器原理笔记
阶段 前端(frontend):对源码进行分析,生成AST源代码语法结构物。 后端(backend):将源代码转换为机器码,并进行优化。 1. parsing 2. AST transformation 3. SSA generation 4. machine code generation example go1.14.0 package main func main() { a := 1 b := 2 if true { add(a, b) } }原创 2020-05-12 11:32:14 · 345 阅读 · 0 评论 -
golang context笔记
context type Context interface { Deadline() (deadline time.Time, ok bool) Done() <-chan struct{} Err() error Value(key interface{}) interface{} } Deadline:返回的第一个值是 截止时间,到了这个时间点,Co...原创 2020-05-08 15:17:02 · 186 阅读 · 0 评论