download:架构师训练营

哪些人适合报名架构师训练营?

想跳槽到一线大厂做架构师
想要提高自己的系统架构能力
缺乏大项目架构认知
想要进阶成长为架构师却无从下手
想要开阔眼界,汲取专家的经验
传统 IT 开发人员想转型互联网开发

Q:参加架构师训练营,需要具备什么基础?
需要你具备最基本的编程技能和经验,想要在训练营有所收获,你还必须要善于思考,勤于思辨,积累收获。

Q:通过培训,我可以成为什么级别的架构师?
极客大学·架构师训练营区别于市面上任何一种架构培训课程,是李智慧老师基于多年的一线互联网大厂工作经验进行设计的。课程中的大厂架构案例,不仅仅让你练习了技能,同时也培养了你进入一线互联网大厂必备的思维能力。按照老师的路径规划,用心努力学习,就可以具备成为架构师和进入一线大厂的能力。
func AsyncAdd(run func() error) {
//TODO: 扔進異步協程池
go run()
}
func GetInstance(ctx context.Context,id uint64) (string, error) {
data,err := GetFromRedis(ctx,id)
if err != nil && err != redis.Nil{
return "", err
}
// 沒有找到數據
if err == redis.Nil {
data,err = GetFromDB(ctx,id)
if err != nil{
return "", err
}
AsyncAdd(func() error{
return UpdateCache(ctx,id,data)
})
}
return data,nil
}
func GetFromRedis(ctx context.Context,id uint64) (string,error) {
// TODO: 從redis獲取信息
return "",nil
}
func GetFromDB(ctx context.Context,id uint64) (string,error) {
// TODO: 從DB中獲取信息
return "",nil
}
func UpdateCache(ctx context.Context,id interface{},data string) error {
// TODO:更新緩存信息
return nil
}
func main() {
ctx,cancel := context.WithTimeout(context.Background(), 3 * time.Second)
defer cancel()
_,err := GetInstance(ctx,2021)
if err != nil{
return
}
}
剖析
我們先简單剖析一下,這一段代码要幹什麼?其實很简單,我們想要獲取一段信息,首先會從緩存中獲取,假如緩存中獲取不到,我們就從DB中獲取,從DB中獲取到信息後,在協程池中放入更新緩存的辦法,異步去更新緩存。整個設計是不是很圆滿,但是在實践工作中,異步更新緩存就沒有勝利過?

招致失敗的缘由就在這一段代码:

AsyncAdd(func() error{
return UpdateCache(ctx,id,data)
})
复制代码
錯誤的缘由只要一個,就是這個ctx,假如改成這樣,就啥事沒有了。

AsyncAdd(func() error{
ctxAsync,cancel := context.WithTimeout(context.Background(),3 * time.Second)
defer cancel()
return UpdateCache(ctxAsync,id,data)
})

©著作权归作者所有:来自51CTO博客作者mb6050319fe3496的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. Web前端架构师
  2. 最新高清IT职业技能图谱:机器学习、架构师、大数据、前端、运维,全
  3. 一万亿张图片的存储架构与4个9可用性的重构丨腾讯技术工程
  4. 马哥架构班第四周作业
  5. 2021必修 首门CSS架构系统精讲 理论+实战玩转蘑菇街
  6. 阿里云Redis技术架构演进
  7. Shopify 是如何迁移到模块化单体架构的?
  8. 想要改变世界的 Rust 语言
  9. 我看好数据湖的未来,但不看好数据湖的现在

随机推荐

  1. XposedHook:hook敏感函数
  2. Android(安卓)反编译
  3. 如何把Eclipse工程导入到Android(安卓)St
  4. Android单元测试之Robolectric
  5. 从Android到React Native开发(一、入门)
  6. Android多线程(三)HandlerThread源码原理解
  7. 一个查看xhprof数据文件的docker镜像
  8. 教你用php读写csv格式的文件
  9. 详解PHP位运算符
  10. 初学php,你遇到过这个低级问题吗?