登录
原创

Spring Cloud + Vue 前后端分离 开发企业级在线视频课程系统

发布于 2021-04-08 阅读 472
  • Vue.js
  • Spring Cloud
原创

download:Spring Cloud + Vue 前后端分离 开发企业级在线视频课程系统

在线学习一夕之间席卷南北,互联网教育的未来潜力已毋庸置疑。视频作为在线教育的核心载体,其相关系统开发也是各大在线教育企业的重中之重。本课程用当下热门的微服务架构Spring Cloud和前端架构Vue,带领你一起开发企业级的在线视频课程系统,了解视频学习系统的核心业务特色,用一门课程掌握前后端技术,并拥有专属于自己的高质量线上作品。
适合人群
想要进入大厂工作的初中级Java开发人员;
对全栈技术有需求的开发人员;
想要做技术创业的人员
技术储备要求

  1. Java基础
    2.MySQL基础
    3.HTML + CSS+ JavaScript基础
    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)
})

评论区

励志做一条安静的咸鱼,从此走上人生巅峰。

0

0

0

举报