【ai學習筆記】GitLab

CI/CD(持續集成/持續交付)是現代軟件開發中的關鍵實踐,通過自動化工具可以大幅提升開發效率和軟件質量。下面為你介紹CI/CD的核心概念、常用工具以及示例配置:

1. CI/CD 核心概念

  • 持續集成(CI):開發人員提交代碼后,自動觸發構建和測試流程,確保新代碼與現有代碼集成時不會產生沖突。
  • 持續交付(CD):在CI的基礎上,自動將通過測試的代碼部署到預生產環境或生產環境。

2. 常用CI/CD工具

Jenkins
  • 特點:開源、插件豐富、社區活躍。
  • 適用場景:需要高度定制化的復雜CI/CD流程。
GitLab CI/CD
  • 特點:與GitLab深度集成,配置簡單。
  • 適用場景:基于GitLab倉庫的項目。
GitHub Actions
  • 特點:與GitHub無縫集成,開箱即用。
  • 適用場景:GitHub托管的項目。
CircleCI
  • 特點:云原生、并行執行速度快。
  • 適用場景:需要快速構建和測試的項目。
Jenkinsfile 示例
pipeline {agent anystages {stage('Build') {steps {sh 'mvn clean package'}}stage('Test') {steps {sh 'mvn test'}}stage('Deploy') {when {branch 'main'}steps {sh 'deploy-to-prod.sh'}}}
}
GitHub Actions 示例
name: CIon:push:branches: [ main ]jobs:build:runs-on: ubuntu-lateststeps:- uses: actions/checkout@v3- name: Set up Pythonuses: actions/setup-python@v4with:python-version: 3.9- name: Install dependenciesrun: |python -m pip install --upgrade pippip install -r requirements.txt- name: Run testsrun: pytest

3. CI/CD 流程最佳實踐

  1. 原子提交:每次提交代碼專注于解決一個問題。
  2. 自動化測試:包括單元測試、集成測試和端到端測試。
  3. 環境隔離:開發、測試、生產環境保持一致。
  4. 版本控制:所有配置文件和腳本納入版本控制。
  5. 監控與回滾:部署后監控系統狀態,異常時能快速回滾。

4. 部署策略

  • 藍綠部署:同時維護兩個環境(藍/綠),切換流量完成部署。
  • 金絲雀發布:先向少量用戶發布新版本,驗證后再全量部署。
  • 滾動更新:逐步替換舊版本實例,適用于無狀態服務。

5. 工具選擇建議

  • 若項目已托管在GitHub,優先使用GitHub Actions。
  • 復雜場景或企業級需求,考慮Jenkins或GitLab CI/CD。
  • 云原生項目可選擇CircleCI或GitLab CI/CD。

根據具體需求選擇合適的工具和部署策略,能有效提升開發效率和軟件質量。選擇適合項目的CI/CD工具需要綜合考慮團隊規模、技術棧、集成需求、預算和使用習慣等因素。以下是關鍵決策維度和建議:

1. 項目規模與復雜度

  • 小型項目/個人項目

    • GitHub Actions:與GitHub無縫集成,配置簡單,適合快速上手。
    • GitLab CI/CD:如果使用GitLab作為代碼托管平臺,內置CI/CD無需額外配置。
  • 中大型項目/企業級

    • Jenkins:高度可定制,支持復雜工作流,但需要專業維護。
    • GitLab CI/CD:支持自托管和云版本,適合需要統一DevOps平臺的團隊。

2. 技術棧兼容性

  • 特定語言支持

    • GitHub Actions:提供官方和社區Action支持主流語言(Python、Java、Node.js等)。
    • CircleCI:預配置的Docker鏡像簡化了特定語言環境的搭建。
  • 容器與云原生

    • Jenkins:需自行配置Kubernetes插件或Docker集成。
    • GitLab CI/CD:內置容器注冊表和Kubernetes集成。
    • CircleCI:原生支持并行構建和Docker鏡像構建。

3. 集成需求

  • 代碼托管平臺

    • GitHub → GitHub Actions
    • GitLab → GitLab CI/CD
    • Bitbucket → Bitbucket Pipelines或Jenkins
  • 外部工具集成

    • 測試工具(Jest、JUnit)
    • 代碼質量工具(SonarQube)
    • 部署目標(AWS、GCP、Azure)

4. 預算與維護成本

  • 開源免費:Jenkins、GitLab CE
  • 云服務
    • GitHub Actions(免費額度有限,超出需付費)
    • CircleCI(按構建分鐘數計費)
    • GitLab Premium/Ultimate(按用戶數計費)

5. 團隊技能與偏好

  • 若團隊熟悉Docker和Kubernetes → GitLab CI/CDCircleCI
  • 若需要可視化編排 → Jenkins PipelineConcourse
  • 若追求簡單易用 → GitHub Actions

6. 關鍵特性對比

工具并行構建緩存機制自托管矩陣構建社區支持
Jenkins????豐富
GitHub Actions????豐富
GitLab CI/CD????良好
CircleCI????良好

7. 評估方法

  1. 試用主流工具:在小型項目上實踐對比(如GitHub Actions vs. GitLab CI/CD)。
  2. 參考行業案例:同類型項目的選擇經驗(如開源項目多用GitHub Actions)。
  3. 關注工具趨勢:根據Stack Overflow、DevOps雷達等報告評估工具生命力。

8. 常見場景推薦

  • GitHub項目 + 云部署GitHub Actions
  • GitLab項目 + 容器化GitLab CI/CD
  • 復雜工作流 + 多技術棧Jenkins
  • 快速迭代 + 云原生CircleCI

通過以上維度的評估,結合項目的實際需求和團隊現狀,能更精準地選擇合適的CI/CD工具。以下是GitLab CI/CD的常見使用示例,涵蓋基本配置、測試、構建、部署等場景:

1. 基礎配置示例(.gitlab-ci.yml

# 定義階段順序
stages:- test- build- deploy# 所有作業共享的配置
default:image: python:3.9  # 使用Python鏡像# 測試作業
test:stage: testscript:- pip install -r requirements.txt- pytest  # 運行測試artifacts:paths:- test-results/  # 保存測試報告# 構建作業
build:stage: buildscript:- python setup.py sdist bdist_wheel  # 構建Python包artifacts:paths:- dist/  # 保存構建產物# 部署作業(僅主分支執行)
deploy:stage: deployenvironment: productionscript:- pip install twine- twine upload dist/*  # 上傳到PyPIonly:- main  # 僅在main分支觸發

2. 多環境部署示例

stages:- build- test- deploybuild:stage: buildscript:- docker build -t my-app:$CI_COMMIT_SHA .- docker push my-app:$CI_COMMIT_SHAdeploy_staging:stage: deployenvironment: stagingscript:- kubectl apply -f k8s/staging/  # 部署到測試環境- kubectl set image deployment/my-app my-app=my-app:$CI_COMMIT_SHAonly:- develop  # 開發分支部署到測試環境deploy_production:stage: deployenvironment: productionscript:- kubectl apply -f k8s/production/  # 部署到生產環境- kubectl set image deployment/my-app my-app=my-app:$CI_COMMIT_SHAonly:- main  # 主分支部署到生產環境when: manual  # 需要手動觸發

3. 使用緩存加速構建

cache:paths:- node_modules/  # 緩存npm依賴stages:- build- testbuild:image: node:16stage: buildscript:- npm install  # 首次安裝依賴會被緩存- npm run buildartifacts:paths:- dist/test:image: node:16stage: testscript:- npm install  # 從緩存中恢復依賴,加速測試- npm test

4. 并行執行測試

stages:- test# 定義矩陣構建
.test_template: &test_definitionstage: testscript:- pip install -r requirements.txt- pytest tests/ -k "$TEST_SUITE"  # 運行特定測試套件test_unit:<<: *test_definitionvariables:TEST_SUITE: "unit"  # 運行單元測試test_integration:<<: *test_definitionvariables:TEST_SUITE: "integration"  # 運行集成測試test_e2e:<<: *test_definitionvariables:TEST_SUITE: "e2e"  # 運行端到端測試

5. 部署到AWS ECS

deploy_to_ecs:stage: deployimage: amazon/aws-cliscript:- aws configure set region $AWS_REGION- aws configure set aws_access_key_id $AWS_ACCESS_KEY_ID- aws configure set aws_secret_access_key $AWS_SECRET_ACCESS_KEY# 登錄ECR- $(aws ecr get-login --no-include-email)# 構建并推送Docker鏡像- docker build -t $ECR_REPOSITORY:$CI_COMMIT_SHA .- docker tag $ECR_REPOSITORY:$CI_COMMIT_SHA $ECR_REPOSITORY:latest- docker push $ECR_REPOSITORY:$CI_COMMIT_SHA- docker push $ECR_REPOSITORY:latest# 更新ECS任務定義- aws ecs register-task-definition --cli-input-json file://task-definition.json- aws ecs update-service --cluster $ECS_CLUSTER --service $ECS_SERVICE --task-definition $TASK_DEFINITION

6. 使用GitLab環境變量

stages:- deploydeploy:stage: deployscript:- echo "Deploying to $ENVIRONMENT_URL with API key $API_KEY"- ./deploy.sh  # 使用環境變量的部署腳本environment:name: productionurl: $PROD_URL  # 在GitLab中設置的環境變量only:- main

7. 觸發外部Pipeline

trigger_downstream:stage: triggertrigger:project: my-group/downstream-project  # 下游項目路徑branch: mainstrategy: depend  # 等待下游Pipeline完成

8. 自動合并請求檢查

stages:- validatevalidate_merge_request:stage: validatescript:- git fetch origin $TARGET_BRANCH  # 獲取目標分支- git checkout -b $CI_COMMIT_REF_NAME origin/$CI_COMMIT_REF_NAME- git merge origin/$TARGET_BRANCH --no-commit --no-ff  # 模擬合并- mvn verify  # 驗證合并后的代碼only:- merge_requests  # 僅在合并請求時觸發variables:TARGET_BRANCH: main

使用提示

  1. 環境變量:在GitLab項目的Settings → CI/CD → Variables中配置敏感信息(如API密鑰、密碼)。
  2. Runner:確保有可用的Runner執行作業(可使用GitLab共享Runner或自建Runner)。
  3. 調試技巧:使用gitlab-ci-multi-runner exec在本地執行作業調試配置。

將以上示例根據項目需求調整后,放入項目根目錄的.gitlab-ci.yml文件中即可觸發CI/CD流程。配置GitLab Runner是執行CI/CD作業的關鍵步驟,以下是詳細的配置指南:

1. 安裝GitLab Runner

根據操作系統選擇安裝方式:

Linux(Debian/Ubuntu)
# 添加GitLab Runner倉庫
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash# 安裝最新版本
sudo apt-get install gitlab-runner
macOS
brew install gitlab-runner
Windows

下載并安裝二進制文件:

Invoke-WebRequest -Uri "https://gitlab-runner-downloads.s3.amazonaws.com/latest/binaries/gitlab-runner-windows-amd64.exe" -OutFile "gitlab-runner.exe"

2. 注冊Runner到GitLab

  1. 獲取注冊令牌

    • 進入GitLab項目 → Settings → CI/CD → Runners → Expand → 復制Registration token。
  2. 執行注冊命令

sudo gitlab-runner register
  1. 按提示輸入信息
    • GitLab實例URL(如https://gitlab.com
    • 注冊令牌
    • Runner描述(自定義名稱)
    • 標簽(用于匹配作業,如docker, python
    • 執行器(如docker, shell, kubernetes
Docker執行器示例
sudo gitlab-runner register \--non-interactive \--url "https://gitlab.com" \--registration-token "YOUR_TOKEN_HERE" \--description "docker-runner" \--tag-list "docker,build" \--executor "docker" \--docker-image alpine:latest

3. 配置Runner執行器

根據項目需求選擇執行器:

Shell執行器

直接在Runner所在主機執行命令,適合簡單項目:

# /etc/gitlab-runner/config.toml
[[runners]]name = "shell-runner"url = "https://gitlab.com"token = "YOUR_RUNNER_TOKEN"executor = "shell"
Docker執行器

使用Docker容器隔離環境,推薦使用:

# /etc/gitlab-runner/config.toml
[[runners]]name = "docker-runner"url = "https://gitlab.com"token = "YOUR_RUNNER_TOKEN"executor = "docker"[runners.docker]image = "docker:stable"privileged = true  # 允許Docker-in-Dockervolumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
Kubernetes執行器

在Kubernetes集群中動態創建Pod執行作業:

# /etc/gitlab-runner/config.toml
[[runners]]name = "k8s-runner"url = "https://gitlab.com"token = "YOUR_RUNNER_TOKEN"executor = "kubernetes"[runners.kubernetes]host = ""  # Kubernetes API地址namespace = "gitlab-runner"image = "alpine:latest"

4. 驗證Runner配置

  1. 查看已注冊的Runner
sudo gitlab-runner list
  1. 檢查Runner狀態
sudo gitlab-runner status
  1. 在GitLab界面確認
    • 進入項目 → Settings → CI/CD → Runners → 查看是否顯示已激活的Runner。

5. 高級配置選項

緩存配置

加速依賴安裝:

[[runners]]# ...其他配置[runners.cache]Type = "s3"ServerAddress = "s3.amazonaws.com"AccessKey = "YOUR_ACCESS_KEY"SecretKey = "YOUR_SECRET_KEY"BucketName = "gitlab-runner-cache"Insecure = false
并發限制

限制Runner同時執行的作業數:

concurrent = 2  # 全局并發數[[runners]]# ...其他配置limit = 1  # 單個Runner限制

6. 管理Runner服務

# 啟動服務
sudo systemctl start gitlab-runner# 停止服務
sudo systemctl stop gitlab-runner# 重啟服務
sudo systemctl restart gitlab-runner# 設置開機自啟
sudo systemctl enable gitlab-runner

7. 常見問題排查

  1. Runner未顯示在線

    • 檢查Runner服務是否運行
    • 確認令牌和URL配置正確
  2. 作業執行失敗

    • 查看GitLab CI/CD日志獲取詳細錯誤
    • 檢查Runner權限(如Docker執行器需要訪問docker.sock
  3. 緩存失效

    • 驗證緩存路徑和權限
    • 嘗試清除并重建緩存

8. 使用GitLab共享Runner

若不想自建Runner,可使用GitLab提供的共享Runner:

  1. 進入項目 → Settings → CI/CD → Runners
  2. 啟用"Shared runners"開關
  3. .gitlab-ci.yml中使用標簽匹配共享Runner

配置完成后,Runner會自動拾取符合標簽條件的CI/CD作業并執行。根據項目需求調整執行器和資源配置,以達到最佳性能。以下是在GitLab上創建項目并啟用CI/CD的完整步驟:

1. 創建新項目

  1. 登錄GitLab賬戶,點擊右上角的New project
  2. 選擇項目類型:
    • Create blank project:創建空項目
    • Create from template:從模板創建(含CI/CD配置)
  3. 填寫項目信息:
    • Project name:項目名稱
    • Project description:項目描述
    • Visibility Level:公開/內部/私有
  4. 點擊Create project完成創建。

2. 添加代碼到項目

方法1:從本地推送現有代碼
# 初始化本地倉庫
git init
git add .
git commit -m "Initial commit"# 添加GitLab遠程倉庫
git remote add origin git@gitlab.com:username/project-name.git# 推送代碼
git push -u origin main
方法2:使用GitLab Web IDE創建文件
  1. 進入項目主頁,點擊Web IDE
  2. 創建文件(如README.md)。
  3. 點擊Commit changes提交。

3. 添加CI/CD配置文件

在項目根目錄創建.gitlab-ci.yml文件:

示例1:Python項目
image: python:3.9stages:- test- deploytest:stage: testscript:- pip install -r requirements.txt- pytestdeploy:stage: deployscript:- echo "Deploying to production..."only:- main
示例2:Node.js項目
image: node:16stages:- install- test- buildinstall:stage: installscript:- npm installcache:paths:- node_modules/test:stage: testscript:- npm testbuild:stage: buildscript:- npm run buildartifacts:paths:- dist/

4. 配置Runner

確保項目有可用的Runner執行CI/CD作業:

方法1:使用GitLab共享Runner
  1. 進入項目 → SettingsCI/CDRunners
  2. 啟用Shared runners
方法2:注冊專用Runner
  1. 按前文指南安裝并注冊Runner。
  2. 為Runner添加匹配標簽(如python, docker)。
  3. .gitlab-ci.yml中指定標簽:
test:stage: testtags:- python  # 匹配具有"python"標簽的Runnerscript:- pytest

5. 觸發CI/CD Pipeline

  1. 提交代碼:每次push到倉庫時自動觸發Pipeline。
  2. 手動觸發
    • 進入項目 → CI/CDPipelines
    • 點擊Run pipeline

查看Pipeline狀態:

  • 綠色√:所有作業成功
  • 黃色●:作業正在運行
  • 紅色×:作業失敗,點擊查看詳細日志

6. 查看CI/CD結果

  1. Pipeline視圖:查看所有階段和作業的執行狀態。
  2. 作業日志:點擊作業名稱查看詳細輸出。
  3. Artifacts:下載作業生成的文件(如測試報告、構建產物)。

7. 高級配置

環境變量

在GitLab中設置敏感信息:

  1. 進入項目 → SettingsCI/CDVariables
  2. 添加變量(如API_KEY, DB_PASSWORD)。
  3. .gitlab-ci.yml中使用:
deploy:script:- ./deploy.sh $API_KEY  # 使用環境變量
分支策略
deploy_prod:stage: deployscript:- deploy-to-prod.shonly:- main  # 僅主分支觸發except:- tags  # 排除標簽
手動觸發作業
deploy_staging:stage: deployscript:- deploy-to-staging.shwhen: manual  # 需要手動觸發

8. 故障排查

  1. Runner未運行

    • 檢查Runner狀態:sudo gitlab-runner status
    • 確認Runner已注冊并激活
  2. 權限問題

    • 確保Runner有足夠權限(如Docker執行器需要訪問/var/run/docker.sock
  3. 依賴失敗

    • .gitlab-ci.yml中添加依賴安裝步驟
    • 使用緩存加速依賴下載

9. 示例項目結構

my-project/
├── .gitlab-ci.yml      # CI/CD配置文件
├── src/                # 源代碼
├── tests/              # 測試代碼
├── requirements.txt    # Python依賴
├── package.json        # Node.js依賴
└── README.md           # 項目說明

通過以上步驟,你可以在GitLab上創建項目并配置完整的CI/CD流程。根據項目需求調整.gitlab-ci.yml中的階段、作業和腳本,實現自動化構建、測試和部署。在GitLab上管理項目分支是協作開發的核心環節,以下是常用的分支管理操作指南:

1. 創建分支

方法1:Web界面創建
  1. 進入項目主頁 → RepositoryBranches
  2. 點擊New branch
  3. 輸入分支名稱(如feature/add-login)。
  4. 選擇源分支(通常為mainmaster)。
  5. 點擊Create branch
方法2:命令行創建并推送
# 創建本地分支
git checkout -b feature/add-login# 推送至遠程倉庫
git push origin feature/add-login

2. 查看和切換分支

Web界面查看
  • 進入項目主頁 → RepositoryBranches,查看所有分支列表。
命令行切換
# 查看本地分支
git branch# 查看遠程分支
git branch -r# 切換到已有分支
git checkout feature/add-login# 創建并切換到新分支
git checkout -b hotfix/bug-123

3. 合并分支

使用Merge Request(推薦)
  1. 進入項目 → Merge requestsNew merge request
  2. 選擇源分支(如feature/add-login)和目標分支(如main)。
  3. 填寫標題和描述,設置Assignee和Labels。
  4. 點擊Submit merge request
  5. 等待CI/CD Pipeline通過后,點擊Merge完成合并。
命令行合并(直接提交)
# 切換到目標分支
git checkout main# 合并源分支
git merge feature/add-login# 推送至遠程
git push origin main

4. 刪除分支

Web界面刪除
  1. 進入項目 → RepositoryBranches
  2. 找到要刪除的分支,點擊Delete圖標。
命令行刪除
# 刪除本地分支
git branch -d feature/add-login# 刪除遠程分支
git push origin --delete feature/add-login

5. 分支保護規則

限制對重要分支(如main)的修改權限:

  1. 進入項目 → SettingsRepositoryProtected branches
  2. 配置保護規則:
    • Branch name:輸入要保護的分支名(如main)。
    • Allowed to push:選擇允許推送的角色(如Maintainers)。
    • Allowed to merge:選擇允許合并的角色。
    • Require code owner approval:啟用代碼所有者審批。
  3. 點擊Protect

6. 處理合并沖突

當合并分支時發生沖突:

  1. Web界面解決

    • 在Merge Request中點擊Resolve conflicts
    • 使用在線編輯器手動修改沖突部分。
    • 點擊Commit changes
  2. 命令行解決

# 拉取最新代碼
git pull# 合并分支觸發沖突
git merge feature/add-login# 手動編輯沖突文件
vim conflict-file.txt# 標記沖突已解決
git add conflict-file.txt# 提交合并
git commit -m "Resolve conflicts"

7. 分支策略推薦

Git Flow
  • master:生產環境代碼
  • develop:開發主分支
  • feature/*:功能開發分支
  • release/*:版本發布分支
  • hotfix/*:緊急修復分支
GitHub Flow
  • 單一main分支
  • 所有功能通過Pull Request合并
  • 頻繁部署
GitLab Flow
  • 上游優先(Upstream First)原則
  • 使用環境分支(如staging, production

8. 常用分支管理命令

# 查看分支歷史
git log --oneline --graph --decorate --all# 重命名本地分支
git branch -m old-name new-name# 查看分支差異
git diff main..feature/add-login# 撤銷未提交的修改
git checkout -- file.txt# 重置到遠程分支狀態
git reset --hard origin/main

9. 可視化分支管理工具

  • GitLab Web界面:內置分支管理和可視化工具
  • SourceTree:跨平臺圖形化Git客戶端
  • GitKraken:功能強大的Git可視化工具
  • VS Code:集成Git功能,支持分支管理

通過合理使用分支策略和GitLab的分支管理功能,可以有效組織團隊開發流程,避免代碼沖突,提高協作效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/911916.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/911916.shtml
英文地址,請注明出處:http://en.pswp.cn/news/911916.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Solidity 從 0 到 1 |Web3 開發入門免費共學營

開啟你的 Web3 開發之旅&#xff0c;從 Sonic 開始&#xff01; 想進入區塊鏈開發的世界&#xff0c;卻不知道從哪里開始&#xff1f;選擇對的語言和平臺&#xff0c;才能事半功倍。 Solidity 是 Web3 中最主流、最通用的智能合約開發語言&#xff0c;被廣泛應用于以太坊及其…

【unitrix】 4.4 類型級整數比較系統(cmp.rs)

一、源碼 這段代碼實現了一個類型級別的整數比較系統&#xff0c;允許在編譯時進行整數比較操作。它定義了一套類型來表示比較結果&#xff0c;并為不同類型的整數實現了比較邏輯。 use core::cmp::Ordering; use core::default::Default; use crate::sealed::Sealed; use cr…

2025年滲透測試面試題總結-2025年HW(護網面試) 14(題目+回答)

安全領域各種資源&#xff0c;學習文檔&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各種好玩的項目及好用的工具&#xff0c;歡迎關注。 目錄 1. SQL注入原理 &#x1f4a5; 2. XXE攻擊&#xff08;XML外部實體注入&#xff09; &#x1f9e9; 3. SQ…

Android開發根據滑動距離標題欄進行漸變

Android開發根據滑動距離標題欄進行漸變 假設滑動控件是NestedScrollView。 先監聽NestedScrollView的滑動距離&#xff1a; nslv_preview_me.setOnScrollChangeListener(object :NestedScrollView.OnScrollChangeListener{override fun onScrollChange(v: NestedScrollView…

高中成績可視化平臺開發筆記

高中成績可視化平臺&#xff08;1&#xff09; 一、項目概述 本系統是一個基于 PyQt5 和 Matplotlib 的高中成績數據可視化分析平臺&#xff0c;旨在幫助教師快速了解學生成績分布、班級對比、學科表現等關鍵指標。平臺支持文科與理科的數據切換&#xff0c;并提供多個維度的圖…

自動化按需導入組件庫的工具rust版本完成開源了

背景 當我為每個Vue項目使用ui組件庫的時候&#xff0c;都會使用按需導入的方式來使用ui組件庫。但是每次按需導入&#xff0c;不可避免的就需要做以下三步。我們以element plus ui組件庫為例。 1. 安裝依賴 第一步&#xff0c;當然是需要安裝依賴。命令如下: pnpm add unp…

Linux內核中TCP分段的核心機制:tcp_fragment函數解析

引言:TCP分段的必要性 在TCP/IP協議棧中,MSS(最大分段大小) 限制了單次傳輸的數據量。當應用層發送的數據超過當前路徑的MSS時,內核必須執行分段操作。tcp_fragment函數正是Linux內核中處理TCP分段的核心機制,它巧妙地在協議合規性、內存安全和性能效率之間取得平衡。 一…

【趙渝強老師】OceanBase OBServer節點的SQL層

OceanBase OBServer節點的SQL層將用戶的SQL請求轉化成對一個或多個Tablet的數據訪問。SQL層會按照以下順序經過一系列組件來處理一個SQL&#xff1a; Parser -->Resolver-->Transformer-->Optimizer-->CodeGenerator-->Executor。視頻講解如下 【趙渝強老師】O…

從“高配”到“普惠”,黑芝麻智能攜手Nullmax打造輔助駕駛主流量產方案

近日&#xff0c;黑芝麻智能攜手Nullmax打造的輔助駕駛主流量產方案正式發布。該方案面向8-15萬元級別主流車型&#xff0c;基于單顆黑芝麻智能武當C1236跨域計算芯片&#xff0c;集成Nullmax全棧自研的軟件技術架構&#xff0c;結合領先的視覺感知算法&#xff0c;打造高性能輔…

信息安全認證體系全解析:從資質證明到行業準入的實踐指南

Hello&#xff01;大家好&#xff0c;小編是一名專注IT領域的資深探索家&#xff0c;大家發現了嗎&#xff1f;現在刷招聘軟件&#xff0c;國企安全崗必標 "CISP 優先"&#xff0c;外企招聘悄悄寫著 "CISSP 加分"—— 這些帶字母的證書到底是啥&#xff1f…

優雅地創建實體類——Builder 鏈式調用

我們來看以下的代碼。改造前構造實體類用重載構造器或用 setter 對變量進行賦值&#xff0c;一旦變量變多則需要對每個變量進行 set 賦值&#xff0c;并且有可能會賦值錯對象。 private static void test() {//1.構造器賦值Task task1 new Task("2023000000009439"…

如何輕松將照片從 iPhone 傳輸到 Android?

從 iPhone 換到 Android 手機后&#xff0c;你肯定不想丟掉珍貴的照片回憶吧&#xff1f;好在&#xff0c;本文分享了 6 種有效的解決方案&#xff0c;教你如何輕松地將照片從 iPhone 傳輸到 Android。 第 1 部分&#xff1a;如何通過 iReaShare Phone Transfer 將照片從 iPhon…

AI編程:[體驗]存量微服務架構下植入WebSocket的“踩坑”與“填坑”

一、核心需求 功能需求&#xff1a;用戶可以通過語音與AI對話&#xff0c;并實現類似ChatGPT的實時交互&#xff08;流式響應&#xff0c;打字機效果&#xff09;技術需求&#xff1a;在現有微服務架構中進行擴展&#xff08;SpringCloud&#xff09; 二、技術盲點 陌生領域 …

uniapp事件onLoad區分大小寫

區分大小寫。不然會不起作用。onLoad方法中的功能均不會被執行。 除了功能邏輯要檢查外。大小寫是要認真檢查的一部分

《打破微前端困局:樣式沖突與資源隔離破局指南》

微前端架構憑借其獨特優勢&#xff0c;正逐漸成為眾多大型項目的首選架構模式。它將一個龐大的前端應用拆解為多個相對獨立的子應用&#xff0c;每個子應用可以獨立開發、部署和維護&#xff0c;極大地提升了開發效率與團隊協作的靈活性。然而&#xff0c;隨著微前端架構的廣泛…

OpenCV——邊緣檢測

邊緣檢測 一、邊緣檢測二、邊緣檢測算子2.1、Sobel算子2.2、Scharr算子2.3、Laplacian算子 三、Canny邊緣檢測3.1、Canny邊緣檢測的步驟3.2、Canny算法的實現 一、邊緣檢測 邊緣是指圖像中像素的灰度值發生劇烈變化的區域&#xff1a; 圖像中的邊緣主要有以下幾種成因&#x…

2506認證資訊|工信部出手整治多品牌充電寶,WMC上海稍遜往年,RED修訂Common Charger,WiFi7 FCC測試

01 — 中國 工信部擬制定移動電源強制性國家標準 該標準將從以下方面全面提升移動電源安全性&#xff1a; 1. 擬在GB 31241、GB 4943.1基礎上&#xff0c;新增或加嚴過充電、針刺等試驗要求。 2. 擬提出影響電池安全的正負極材料、隔膜等關鍵材料要求。 3. 擬規范鋰離子電池…

Linux Regulator 子系統核心邏輯與關鍵問題全解析

Linux Regulator 子系統核心邏輯與關鍵問題全解析 一、什么是 regulator 子系統&#xff1f;核心作用&#xff1f; regulator 子系統是 Linux 內核為板級/SoC 多路可控電源設計的統一電源管理框架。它的主要作用是&#xff1a; 為每一路可控電源&#xff08;Buck、LDO、DCDC …

制造業官網3D應用,讓產品會“說話”

在當今數字化時代&#xff0c;裝備制造業正經歷著前所未有的變革。隨著消費升級和國內經濟的蓬勃發展&#xff0c;中國社會的經濟格局從傳統的“工業經濟”向多元化的“服務經濟”轉型。裝備制造業作為制造業與服務業融合的核心領域&#xff0c;積極探索全新的“服務化”發展模…

SCAU15--氣球狂歡節

15 氣球狂歡節 Time Limit:1000MS Memory Limit:65535K 題型: 編程題 語言: G;GCC 描述&#xff1a; 一個充滿魔法的國度中&#xff0c;存在一場年度的節日&#xff0c;名為“氣球狂歡節”。在這個節日中&#xff0c;有一個傳統的比賽&#xff0c;那就是“氣球挑戰賽”…