中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

網(wǎng)站后臺(tái)開發(fā) 必備技能關(guān)鍵詞林俊杰百度云

網(wǎng)站后臺(tái)開發(fā) 必備技能,關(guān)鍵詞林俊杰百度云,做一個(gè)網(wǎng)站需要到哪里做,衡水做網(wǎng)站哪兒好文章目錄 1. 寫在最前面1.1 具體循環(huán)依賴的例子 2. 報(bào)錯(cuò)的位置2.1 代碼快速分析2.2 代碼總結(jié)2.3 關(guān)于 parser 的記錄 3. 碎碎念 1. 寫在最前面 筆者在使用 dockerfile 多階段構(gòu)建的功能時(shí),寫出了一個(gè)「circular dependency detected on stage: xx」的錯(cuò)誤。 解決方…

文章目錄

    • 1. 寫在最前面
      • 1.1 具體循環(huán)依賴的例子
    • 2. 報(bào)錯(cuò)的位置
      • 2.1 代碼快速分析
      • 2.2 代碼總結(jié)
      • 2.3 關(guān)于 parser 的記錄
    • 3. 碎碎念

1. 寫在最前面

筆者在使用 dockerfile 多階段構(gòu)建的功能時(shí),寫出了一個(gè)「circular dependency detected on stage: xx」的錯(cuò)誤。

解決方式:解耦互相依賴的構(gòu)建階段即可,構(gòu)建 A <=> 構(gòu)建 B 兩個(gè)階段是互相依賴的,改為構(gòu)建 A => 構(gòu)建 B

注:「多階段構(gòu)建」是 Docker 提供的一種功能,運(yùn)行用戶在一個(gè) Dockerfile 中定義多個(gè)構(gòu)建階段,從而優(yōu)化構(gòu)鏡像的大小和構(gòu)建過程的效率。通過這種方式,開發(fā)者可以在不同的階段使用不同的基礎(chǔ)鏡像和工具,最終只將所需要的文件和依賴項(xiàng)復(fù)制到最終的鏡像中。

但是,作為一個(gè)有求知精神的軟件開發(fā)工程師,筆者去翻看了一下源碼的位置。(ps: 其實(shí)就是自己感興趣 BuildKit 的源碼想要學(xué)習(xí)一下,而帶著問題學(xué)習(xí)的速度更快)

1.1 具體循環(huán)依賴的例子

FROM busybox AS stage0
COPY --from=stage0 f1 /sub/ 
  • FROM busybox AS stage0: 這行代碼定義了一個(gè)名為 stage0 的構(gòu)建階段,并使用 busybox 作為基礎(chǔ)鏡像。

  • COPY --from=stage0 f1 /sub/: 這行代碼嘗試從名為 stage0 的構(gòu)建階段復(fù)制文件 f1/sub/ 目錄。

在這個(gè)情況下,在同一個(gè)構(gòu)建階段中同時(shí)定義了一個(gè)新的階段并嘗試從該階段復(fù)制文件。這會(huì)導(dǎo)致 Docker 無法解析這個(gè)依賴關(guān)系,因?yàn)?stage0 還沒有完成構(gòu)建就被引用了。

2. 報(bào)錯(cuò)的位置

源碼倉庫:GitHub - moby/buildkit: concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit

具體位置:buildkit/frontend/dockerfile/dockerfile2llb/convert.go at master · moby/buildkit · GitHub

在這里插入圖片描述

2.1 代碼快速分析

得益于 Github 支持了 Codespaces 讓筆者可以無需代碼下載到本地,可以直接基于 Codespaces 對(duì) 「convert_test.go」的具體 case 直接做在線 debug ,逐行分析。

注:GitHub Codespaces 是一個(gè)基于云的開發(fā)環(huán)境,允許開發(fā)者在瀏覽器中創(chuàng)建和使用完整的開發(fā)環(huán)境。它旨在簡(jiǎn)化開發(fā)流程,特別是對(duì)于團(tuán)隊(duì)協(xié)作和快速啟動(dòng)項(xiàng)目。以下是 GitHub Codespaces 的一些關(guān)鍵特性和功能:

代碼 debug 效果:

在這里插入圖片描述

注:感慨一下 Codespaces 真的香!

2.2 代碼總結(jié)

核心的循環(huán)依賴檢測(cè)邏輯代碼如下:

func validateCircularDependency(states []*dispatchState) error {var visit func(*dispatchState, []instructions.Command) []instructions.Commandif states == nil {return nil}visited := make(map[*dispatchState]struct{})path := make(map[*dispatchState]struct{})visit = func(state *dispatchState, current []instructions.Command) []instructions.Command {_, ok := visited[state]if ok {return nil}visited[state] = struct{}{}path[state] = struct{}{}for dep, c := range state.deps {next := append(current, c)if _, ok := path[dep]; ok {return next}if c := visit(dep, next); c != nil {return c}}delete(path, state)return nil}for _, state := range states {if cmds := visit(state, nil); cmds != nil {err := errors.Errorf("circular dependency detected on stage: %s", state.stageName)for _, c := range cmds {err = parser.WithLocation(err, c.Location())}return err}}return nil
}

核心分析:它使用深度優(yōu)先搜索(DFS)的方式來檢測(cè)循環(huán)依賴,并在發(fā)現(xiàn)循環(huán)時(shí)返回一個(gè)錯(cuò)誤。

注:看來不是算法沒有用,是業(yè)務(wù)邏輯的代碼中使用 DFS 這種算法的場(chǎng)景比較少,還是得多看源碼

2.3 關(guān)于 parser 的記錄

對(duì)于 dockerfile 的 parser 也有點(diǎn)興趣,后面要繼續(xù)抽個(gè)時(shí)間深入分析一下。筆者當(dāng)前負(fù)責(zé)的模塊重構(gòu)成一個(gè)通用的 parser 的話,代碼的復(fù)用率會(huì)更高一點(diǎn)。希望后面有時(shí)間可以優(yōu)化改進(jìn)一波

3. 碎碎念

抓住 2024 的尾巴,努力學(xué)習(xí)感興趣的知識(shí)。希望 2025 平安喜樂,萬事勝意!

  • 最好的選擇是,做自己的太陽

  • 幸福的秘訣是,擁有蘋果時(shí),只在意蘋果,不去管橘子,更不要想橙子的事情。

  • 終于明白朝花夕拾什么意思了,你一生追求的東西其實(shí)一開始就在,只是你后知后覺而已,人無法同時(shí)擁有青春和對(duì)于青春的感受,有些東西要靠消失才能證明它的珍貴。

http://m.risenshineclean.com/news/64987.html

相關(guān)文章:

  • 彈幕網(wǎng)站制作市場(chǎng)營(yíng)銷策劃書
  • wordpress tag導(dǎo)入2022年seo最新優(yōu)化策略
  • vb2010做網(wǎng)站企業(yè)營(yíng)銷網(wǎng)站建設(shè)系統(tǒng)
  • html網(wǎng)站開發(fā)工具下載北京網(wǎng)站優(yōu)化托管
  • 東莞專業(yè)網(wǎng)站建設(shè)公司站長(zhǎng)工具ping
  • 河南做網(wǎng)站公司排名全國(guó)十大跨境電商公司排名
  • 在環(huán)評(píng)備案網(wǎng)站上做登記后會(huì)怎么樣6淘寶直通車
  • 做跨境的網(wǎng)站有哪些網(wǎng)絡(luò)口碑營(yíng)銷案例
  • 如何做國(guó)外的網(wǎng)站網(wǎng)絡(luò)營(yíng)銷八大工具
  • 直播營(yíng)銷惠州seo推廣優(yōu)化
  • 哪些網(wǎng)站做財(cái)金的好seo網(wǎng)絡(luò)營(yíng)銷技巧
  • 相城做網(wǎng)站的公司東營(yíng)網(wǎng)站建設(shè)費(fèi)用
  • 如何修改網(wǎng)站后臺(tái)seo推廣效果
  • 免費(fèi)空間申請(qǐng)網(wǎng)站google關(guān)鍵詞搜索技巧
  • 大連建站企業(yè)域名注冊(cè)需要什么條件
  • 做外貿(mào)的數(shù)據(jù)網(wǎng)站鏈接檢測(cè)工具
  • 學(xué)校網(wǎng)站織夢(mèng)源碼騰訊中國(guó)聯(lián)通
  • 315網(wǎng)站專題怎么做google推廣費(fèi)用
  • 平面設(shè)計(jì)師長(zhǎng)逛的網(wǎng)站有哪些網(wǎng)站的網(wǎng)絡(luò)推廣
  • 世界網(wǎng)站制作百度app怎么找人工客服
  • 網(wǎng)站開發(fā)付費(fèi)視頻才能觀看小程序開發(fā)公司排行榜
  • 網(wǎng)站首頁的尺寸2022網(wǎng)站seo
  • 網(wǎng)站開發(fā)職業(yè)規(guī)劃實(shí)施網(wǎng)站模板之家
  • 做營(yíng)銷網(wǎng)站設(shè)計(jì)百度免費(fèi)咨詢
  • 河北住房和城鄉(xiāng)建設(shè)局網(wǎng)站首頁百度免費(fèi)推廣
  • 東莞推廣網(wǎng)站排名seo研究中心官網(wǎng)
  • 教育行業(yè)網(wǎng)站建設(shè)代做seo關(guān)鍵詞排名
  • 正確的企業(yè)郵箱格式seo百度發(fā)包工具
  • 網(wǎng)站備案 怎么建站廣州關(guān)鍵詞排名推廣
  • 電商網(wǎng)站怎么做權(quán)限控制潮州網(wǎng)絡(luò)推廣