如何恢復極狐GitLab?

極狐GitLab 是 GitLab 在中國的發行版,關于中文參考文檔和資料有:

  • 極狐GitLab 中文文檔
  • 極狐GitLab 中文論壇
  • 極狐GitLab 官網

恢復極狐GitLab (BASIC SELF)

極狐GitLab 提供了一個命令行界面來恢復整個安裝,足夠靈活以滿足您的需求。

恢復先決條件部分 包含關鍵信息。在嘗試在生產環境中執行之前,請務必至少閱讀和測試完整的恢復過程一次。

恢復先決條件

目標極狐GitLab 實例必須已經在工作

您需要有一個正在運行的極狐GitLab 安裝才能進行恢復。這是因為執行恢復操作的系統用戶(git)通常不被允許創建或刪除導入數據所需的 SQL 數據庫(gitlabhq_production)。所有現有數據要么被刪除(SQL),要么被移動到單獨的目錄(例如存儲庫和上傳)。恢復 SQL 數據跳過 PostgreSQL 擴展擁有的視圖。

目標極狐GitLab 實例必須具有完全相同的版本

您只能將備份恢復到創建它的極狐GitLab 的完全相同版本和類型(基礎版或企業版)。例如,基礎版 15.1.4。
如果您的備份版本與當前安裝版本不同,則必須在恢復備份之前降級或升級您的極狐GitLab 安裝。

極狐GitLab 密鑰必須恢復

要恢復備份,您還必須恢復極狐GitLab 密鑰。這些包括數據庫加密密鑰,CI/CD 變量,以及用于雙因素認證的變量。如果沒有這些密鑰,會發生多個問題,包括啟用雙因素認證的用戶無法訪問,以及極狐GitLab Runner 無法登錄。
恢復:

  • /etc/gitlab/gitlab-secrets.json(Linux 軟件包安裝)

  • /home/git/gitlab/.secret(自編譯安裝)

  • 恢復密鑰(云原生極狐GitLab)

    • 如果需要,極狐GitLab Helm chart 密鑰可以轉換為 Linux 軟件包格式。

某些極狐GitLab 配置必須與原始備份環境匹配

您可能還希望恢復之前的 /etc/gitlab/gitlab.rb(對于 Linux 軟件包安裝)或 /home/git/gitlab/config/gitlab.yml(對于自編譯安裝)以及任何 TLS 密鑰、證書(/etc/gitlab/ssl,/etc/gitlab/trusted-certs),或 SSH 主機密鑰。

某些配置與 PostgreSQL 中的數據相關。例如:

  • 如果原始環境有三個存儲庫存儲(例如,default、my-storage-1 和 my-storage-2),那么目標環境也必須至少在配置中定義這些存儲名稱。
  • 從使用本地存儲的環境恢復備份,即使目標環境使用對象存儲,仍會恢復到本地存儲。遷移到對象存儲必須在恢復之前或之后完成。

恢復作為掛載點的目錄

如果您要恢復到作為掛載點的目錄中,則必須確保這些目錄在嘗試恢復之前是空的。否則,極狐GitLab 會在恢復新數據之前嘗試移動這些目錄,從而導致錯誤。

關于配置 NFS 掛載的信息。

Linux 軟件包安裝的恢復

該過程假設:

  • 您已安裝了極狐GitLab 的完全相同版本和類型(基礎版/企業版),備份就是使用該版本創建的。
  • 您至少運行過一次 sudo gitlab-ctl reconfigure。
  • 極狐GitLab 正在運行。如果沒有,請使用 sudo gitlab-ctl start 啟動它。

首先確保您的備份 tar 文件位于 gitlab.rb 配置中描述的備份目錄中 gitlab_rails[‘backup_path’]。默認路徑是 /var/opt/gitlab/backups。備份文件需要由 git 用戶擁有。

sudo cp 11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar /var/opt/gitlab/backups/
sudo chown git:git /var/opt/gitlab/backups/11493107454_2018_04_25_10.6.4-ce_gitlab_backup.tar

停止連接到數據庫的進程。讓極狐GitLab 的其他部分繼續運行:

sudo gitlab-ctl stop puma
sudo gitlab-ctl stop sidekiq
# 驗證
sudo gitlab-ctl status

接下來,確保您已完成 恢復先決條件 步驟,并在從原始安裝復制極狐GitLab 密鑰文件后運行 gitlab-ctl reconfigure。
接下來,恢復備份,指定您要恢復的備份的 ID:
WARNING:
以下命令會覆蓋您的極狐GitLab 數據庫的內容!

# NOTE: "_gitlab_backup.tar" 是省略的名稱
sudo gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce

如果您的備份 tar 文件和安裝的極狐GitLab 版本之間存在版本不匹配,恢復命令會以錯誤消息中止:

極狐GitLab 版本不匹配:您當前的極狐GitLab 版本(16.5.0-ee)與備份中的極狐GitLab 版本不同!請切換到以下版本并重試:version: 16.4.3-ee

安裝正確的極狐GitLab 版本,然后重試。
WARNING:
恢復命令需要附加參數,當您的安裝使用 PgBouncer 時,出于性能原因或與 Patroni 集群一起使用時。
接下來,重啟并檢查極狐GitLab:

sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

驗證數據庫值是否可以解密,特別是如果 /etc/gitlab/gitlab-secrets.json 已恢復,或如果不同的服務器是恢復目標。

sudo gitlab-rake gitlab:doctor:secrets

為增加保證,您可以對上傳文件執行完整性檢查:

sudo gitlab-rake gitlab:artifacts:check
sudo gitlab-rake gitlab:lfs:check
sudo gitlab-rake gitlab:uploads:check

恢復完成后,建議生成數據庫統計數據以提高數據庫性能并避免 UI 中的不一致:

1.進入數據庫控制臺。

2.運行以下命令:

SET STATEMENT_TIMEOUT=0 ; ANALYZE VERBOSE;

Docker 鏡像和極狐GitLab Helm chart 安裝的恢復

對于在 Kubernetes 集群上使用 Docker 鏡像或極狐GitLab Helm chart 的極狐GitLab 安裝,恢復任務期望恢復目錄是空的。然而,使用 Docker 和 Kubernetes 卷掛載時,可能會在卷根目錄創建一些系統級目錄,例如在 Linux 操作系統中發現的 lost+found 目錄。這些目錄通常由 root 擁有,這可能導致訪問權限錯誤,因為恢復 Rake 任務以 git 用戶身份運行。要恢復極狐GitLab 安裝,用戶必須確認恢復目標目錄是空的。

對于這兩種安裝類型,備份 tarball 必須可用于備份位置(默認位置是 /var/opt/gitlab/backups)。

Helm chart 安裝的恢復

極狐GitLab Helm chart 使用恢復極狐GitLab Helm chart 安裝中記錄的過程。

Docker 鏡像安裝的恢復

如果您使用 Docker Swarm,容器可能會在恢復過程中重啟,因為 Puma 被關閉,導致容器健康檢查失敗。為了解決這個問題,暫時禁用健康檢查機制。

1.編輯 docker-compose.yml:

healthcheck:
disable: true

2.部署堆棧:

docker stack deploy --compose-file docker-compose.yml mystack可以從主機運行恢復任務:# 停止連接到數據庫的進程
docker exec -it <name of container> gitlab-ctl stop puma
docker exec -it <name of container> gitlab-ctl stop sidekiq# 在繼續之前驗證所有進程都已關閉
docker exec -it <name of container> gitlab-ctl status# 運行恢復。NOTE: "_gitlab_backup.tar" 是省略的名稱
docker exec -it <name of container> gitlab-backup restore BACKUP=11493107454_2018_04_25_10.6.4-ce# 重啟極狐GitLab 容器
docker restart <name of container># 檢查極狐GitLab
docker exec -it <name of container> gitlab-rake gitlab:check SANITIZE=true

自編譯安裝的恢復

首先,確保您的備份 tar 文件位于 gitlab.yml 配置中描述的備份目錄中:

## 備份設置
backup:path: "tmp/backups"   # 相對路徑相對于 Rails.root(默認:tmp/backups/)

默認路徑是 /home/git/gitlab/tmp/backups,并且需要由 git 用戶擁有。現在,您可以開始備份過程:

# 停止連接到數據庫的進程
sudo service gitlab stopsudo -u git -H bundle exec rake gitlab:backup:restore RAILS_ENV=production

示例輸出:

解壓備份... [完成]
恢復數據庫表:
-- create_table("events", {:force=>true})-> 0.2231s
[...]
- 加載固定事件...[完成]
- 加載固定議題...[完成]
- 加載固定密鑰...[跳過]
- 加載固定合并請求...[完成]
- 加載固定里程碑...[完成]
- 加載固定命名空間...[完成]
- 加載固定備注...[完成]
- 加載固定項目...[完成]
- 加載固定受保護分支...[跳過]
- 加載固定 schema_migrations...[完成]
- 加載固定服務...[跳過]
- 加載固定代碼片段...[跳過]
- 加載固定標記...[跳過]
- 加載固定標簽...[跳過]
- 加載固定用戶...[完成]
- 加載固定用戶項目...[完成]
- 加載固定 web_hooks...[跳過]
- 加載固定 wiki...[跳過]
恢復存儲庫:
- 恢復存儲庫 abcd... [完成]
- 對象池 1 ...
刪除臨時目錄...[完成]

接下來,如果需要恢復 /home/git/gitlab/.secret,如前所述。
重啟極狐GitLab:

sudo service gitlab restart

從備份中僅恢復一個或幾個項目或組

雖然用于恢復極狐GitLab 實例的 Rake 任務不支持恢復單個項目或組,但您可以通過將備份恢復到單獨的臨時極狐GitLab 實例,然后從那里導出項目或組來使用一種解決方法:

1.安裝一個新的極狐GitLab 實例,版本與您要恢復的備份實例相同。
2.將備份恢復到這個新實例,然后導出您的項目或組。有關導出的內容和未導出的內容的更多信息,請參閱導出功能的文檔。
3.導出完成后,轉到舊實例,然后導入它。
4.完成您想要的項目或組導入后,您可以刪除新的臨時極狐GitLab 實例。

恢復增量存儲庫備份

每個備份檔案都包含一個完整的自包含備份,包括通過增量存儲庫備份過程創建的備份。要恢復增量存儲庫備份,請使用與恢復任何其他常規備份檔案相同的說明。

恢復選項

極狐GitLab 提供的命令行工具可以接受更多選項來從備份中恢復。

在存在多個備份時指定恢復的備份

備份文件使用以備份 ID 開頭的命名方案 starting with a backup ID。當存在多個備份時,您必須通過設置環境變量 BACKUP= 來指定要恢復的 _gitlab_backup.tar 文件。

在恢復期間禁用提示

在從備份恢復期間,恢復腳本會提示確認:

  • 如果啟用了 Write to authorized_keys 設置,則在恢復腳本刪除并重建 authorized_keys 文件之前。
  • 在恢復數據庫時,在恢復腳本刪除所有現有表之前。
  • 在恢復數據庫后,如果恢復架構時出現錯誤,則在繼續之前,因為可能會出現進一步的問題。

要禁用這些提示,請將 GITLAB_ASSUME_YES 環境變量設置為 1。

  • Linux 軟件包安裝:
sudo GITLAB_ASSUME_YES=1 gitlab-backup restore
  • 自編譯安裝:
sudo -u git -H GITLAB_ASSUME_YES=1 bundle exec rake gitlab:backup:restore RAILS_ENV=production

force=yes 環境變量也會禁用這些提示。

在恢復時排除任務

您可以通過添加環境變量 SKIP 來排除恢復時的特定任務,其值是以下選項的逗號分隔列表:

  • db(數據庫)

  • uploads(附件)

  • builds(CI 作業輸出日志)

  • artifacts(CI 作業制品)

  • lfs(LFS 對象)

  • terraform_state(Terraform 狀態)

  • registry(容器注冊表鏡像)

  • pages(Pages 內容)

  • repositories(Git 存儲庫數據)

  • packages(軟件包)

要排除特定任務:

  • Linux 軟件包安裝:
sudo gitlab-backup restore BACKUP=<backup-id> SKIP=db,uploads
  • 自編譯安裝:
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=<backup-id> SKIP=db,uploads RAILS_ENV=production

恢復特定存儲庫存儲

  • 引入于極狐GitLab 15.0。

WARNING:
極狐GitLab 17.1 及更早版本受競爭條件影響,可能導致數據丟失。該問題影響了已被 fork 并使用極狐GitLab 對象池的存儲庫。為了避免數據丟失,僅使用極狐GitLab 17.2 或更高版本恢復備份。

當使用多個存儲庫存儲時,可以使用 REPOSITORIES_STORAGES 選項單獨恢復特定存儲庫存儲的存儲庫。該選項接受逗號分隔的存儲名稱列表。

例如:

  • Linux 軟件包安裝:
sudo gitlab-backup restore BACKUP=<backup-id> REPOSITORIES_STORAGES=storage1,storage2
  • 自編譯安裝:
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=<backup-id> REPOSITORIES_STORAGES=storage1,storage2

恢復特定存儲庫

  • 引入于極狐GitLab 15.1。

WARNING:
極狐GitLab 17.1 及更早版本受競爭條件影響,可能導致數據丟失。該問題影響了已被 fork 并使用極狐GitLab 對象池的存儲庫。為了避免數據丟失,僅使用極狐GitLab 17.2 或更高版本恢復備份。

您可以使用 REPOSITORIES_PATHS 和 SKIP_REPOSITORIES_PATHS 選項恢復特定存儲庫。這兩個選項都接受項目和組路徑的逗號分隔列表。如果您指定了組路徑,則所有項目中的所有存儲庫以及子組中的存儲庫都被包括在內或跳過,具體取決于您使用的選項。這些組和項目必須存在于指定的備份或目標實例中。

NOTE:
REPOSITORIES_PATHS 和 SKIP_REPOSITORIES_PATHS 選項僅適用于 Git 存儲庫。它們不適用于項目或組數據庫條目。如果您使用 SKIP=db 創建了存儲庫備份,單獨它不能用于將特定存儲庫恢復到新實例。

例如,要恢復 群組 A(group-a)中所有項目的所有存儲庫,群組 B 中 項目 C(group-b/project-c)的存儲庫,并跳過 群組 A 中的 項目 D(group-a/project-d):

  • Linux 軟件包安裝:
sudo gitlab-backup restore BACKUP=<backup-id> REPOSITORIES_PATHS=group-a,group-b/project-c SKIP_REPOSITORIES_PATHS=group-a/project-d
  • 自編譯安裝:
sudo -u git -H bundle exec rake gitlab:backup:restore BACKUP=<backup-id> REPOSITORIES_PATHS=group-a,group-b/project-c SKIP_REPOSITORIES_PATHS=group-a/project-d

恢復未打包的備份

如果發現未打包的備份(使用 SKIP=tar 創建),并且沒有使用 BACKUP= 選擇備份,則使用未打包的備份。
例如:

  • Linux 軟件包安裝:

sudo gitlab-backup restore

  • 自編譯安裝:

sudo -u git -H bundle exec rake gitlab:backup:restore

故障排除

以下是您可能遇到的問題以及潛在的解決方案。

使用 Linux 軟件包安裝時輸出警告恢復數據庫備份

如果您使用備份恢復程序,可能會遇到以下警告消息:

ERROR: 必須是擴展 pg_trgm 的所有者
ERROR: 必須是擴展 btree_gist 的所有者
ERROR: 必須是擴展 plpgsql 的所有者
WARNING: "public" 沒有權限可以撤銷(出現兩次)
WARNING: "public" 沒有權限被授予(出現兩次)

請注意,備份已成功恢復,盡管有這些警告消息。
Rake 任務以 gitlab 用戶身份運行,該用戶沒有數據庫的超級用戶訪問權限。當恢復啟動時,它也以 gitlab 用戶身份運行,但它也嘗試改變它沒有訪問權限的對象。這些對象對數據庫備份或恢復沒有影響,但顯示警告消息。

有關更多信息,請參閱:

  • PostgreSQL 問題跟蹤:

    • 不是超級用戶。
    • 具有不同所有者。

由于 Git 服務器鉤子導致恢復失敗

在備份恢復期間,如果以下條件為真,您可能會遇到錯誤:

  • 使用極狐GitLab 版本 15.10 及更早版本的方法配置了 Git 服務器鉤子(custom_hook)
  • 您的極狐GitLab 版本是版本 15.11 及更高版本
  • 您創建了指向極狐GitLab 管理位置之外的目錄的符號鏈接

錯誤看起來像:

{"level":"fatal","msg":"restore: pipeline: 1 failures encountered:\n - @hashed/path/to/hashed_repository.git (path/to_project): manager: restore custom hooks, \"@hashed/path/to/hashed_repository/<BackupID>_<GitLabVersion>-ee/001.custom_hooks.tar\": rpc error: code = Internal desc = setting custom hooks: generating prepared vote: walking directory: copying file to hash: read /mnt/gitlab-app/git-data/repositories/+gitaly/tmp/default-repositories.old.<timestamp>.<temporaryfolder>/custom_hooks/compliance-triggers.d: is a directory\n","pid":3256017,"time":"2023-08-10T20:09:44.395Z"}

要解決此問題,可以更新極狐GitLab 版本 15.11 及更高版本的 Git 服務器鉤子,并創建新的備份。

使用 fapolicyd 時恢復成功但存儲庫顯示為空

使用 fapolicyd 增強安全性時,極狐GitLab 可以報告恢復成功,但存儲庫顯示為空。有關更多故障排除幫助,請參閱Gitaly 故障排除文檔。

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

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

相關文章

面試高階問題:android后臺任務(如數據同步、定位)消耗過多電量,導致用戶投訴。你會如何分析和優化后臺任務的執行?

在現代移動設備生態中,安卓系統以其開放性和靈活性占據了全球智能手機市場的絕大部分份額。作為一款功能強大的操作系統,安卓允許應用程序在后臺執行各種任務,例如數據同步、定位服務、消息推送以及其他周期性更新。這些后臺任務在提升用戶體驗方面扮演了不可或缺的角色——…

最近在學習web搞大屏看板

人到中年&#xff0c;delphi發展越來越不行&#xff0c;就業環境是真差啊&#xff0c;沒辦法&#xff0c;學唄 中國地圖&#xff1a; // 中國地圖function getChinaMapChart() {// 初始化echarts實例var myEcharts echarts.init(document.getElementById("china_box"…

117.在 Vue 3 中使用 OpenLayers 實現 CTRL 控制拖拽和滾動縮放

? 前言 在使用 OpenLayers 開發地圖類項目時,我們有時會希望用戶必須按下 CTRL(或 Mac 的 Command ? 鍵)才能拖拽地圖或使用鼠標滾輪縮放。這種交互方式能夠避免用戶在瀏覽頁面時意外滑動或拖動地圖,尤其是在地圖嵌入頁面中時非常有用。 本文將帶你一步一步實現在 Vue …

MATLAB 控制系統設計與仿真 - 34

多變量系統知識回顧 - MIMO system 這一章對深入理解多變量系統以及魯棒分析至關重要 首先,對于如下系統: 當G(s)為單輸入,單輸出系統時: 如果: 則: 所以 因此,對于SISO,系統的增益跟w有關系, 當G(s)為MIMO時,例如2X2時, 假設輸入信號為:

ARCGIS PRO DSK 利用兩期地表DEM數據計算工程土方量

利用兩期地表DEM數據計算工程土方量需要準許以下數據&#xff1a; 當前地圖有3個圖層&#xff0c;兩個柵格圖層和一個矢量圖層 兩個柵格圖層&#xff1a;beforeDem為工程施工前的地表DEM模型 afterDem為工程施工后的地表DEM模型 一個矢量圖層&#xf…

最快打包WPF 應用程序

在 Visual Studio 中右鍵項目選擇“發布”&#xff0c;目標選“文件夾”&#xff0c;模式選“自包含”&#xff0c;生成含 .exe 的文件夾&#xff0c;壓縮后可直接發給別人或解壓運行&#xff0c;無需安裝任何東西。 最簡單直接的新手做法&#xff1a; 用 Visual Studio 的“…

物聯網通信協議——TCP與MQTT的對比

在物聯網通信中&#xff0c;MQTT和TCP的實現方式和原理完全不同&#xff0c;因為兩者屬于協議棧的不同層級&#xff0c;解決的問題也不同。以下從協議層級、工作機制和典型場景三個角度詳細解釋&#xff1a; 1. 協議層級與定位 特性TCPMQTT協議層級傳輸層&#xff08;第4層&am…

【信息系統項目管理師】高分論文:論信息系統項目的成本管理(媒體融合采編平臺)

更多內容請見: 備考信息系統項目管理師-專欄介紹和目錄 文章目錄 論文1、規劃項目成本管理2、估算成本3、制訂項目預算4、控制成本論文 2017年7月,我作為項目經理參與了 XX省媒體融合采編平臺的建設,該項目總共投資530萬元,其中服務器、存儲、網絡等硬件設備投資200萬元、軟…

策略模式簡單介紹

什么是策略模式&#xff1f;一般用于什么場景&#xff1f; 策略模式一種行為型設計模式&#xff0c;它定義了一系列算法&#xff0c;并將每個算法封裝起來&#xff0c;使得它們可以相互替換&#xff0c;這樣&#xff0c;客戶端可以根據需要在運行時選擇合適的算法&#xff0c;…

基于PAI+專屬網關+私網連接:構建全鏈路 Deepseek 云上私有化部署與模型調用架構

DeepSeek - R1 是由深度求索公司推出的首款推理模型&#xff0c;該模型在數學、代碼和推理任務上的表現優異&#xff0c;市場反饋火爆。在大模型技術商業化進程中&#xff0c;企業級用戶普遍面臨四大核心挑戰&#xff1a; 算力投入成本高昂&#xff1a;構建千億參數級模型的訓…

【APM】How to enable Trace to Logs on Grafana?

系列文章目錄 【APM】Observability Solution 【APM】Build an environment for Traces, Metrics and Logs of App by OpenTelemetry 【APM】NET Traces, Metrics and Logs to OLTP 【APM】How to enable Trace to Logs on Grafana? 前言 本文將介紹如何在Grafana上啟用 …

在 Excel 中使用通義靈碼輔助開發 VBA 程序

VBA 簡介 VBA 是一種用于微軟辦公套件&#xff08;如 Word、Excel、PowerPoint 等&#xff09;的編程語言&#xff0c;它本質上是一種內嵌的腳本&#xff0c;或者可以認為是一段命令&#xff0c;其標準叫法被稱為宏。 VBA 只能依賴于對應的軟件進行開發&#xff0c;例如本文就…

vscode終端運行windows服務器的conda出錯

遠程windows服務器可以運行&#xff0c;本地vscode不能。 打開vscode settings.json文件 添加conda所在路徑

紫外相機的應用范圍及介紹

&#xff08;一&#xff09;工業領域 半導體制造&#xff1a;在晶圓制造和檢測過程中&#xff0c;紫外相機起著關鍵作用。它可用于裸晶圓檢測&#xff0c;能準確識別出制造過程中偶然引入的微粒&#xff08;如灰塵&#xff09;或因處理不當造成的劃痕等缺陷。對于圖案晶圓檢查…

08軟件測試需求分析案例-刪除用戶

刪除用戶是后臺管理菜單的一個功能模塊&#xff0c;只有admin才有刪除用戶的權限。不可刪除admin。 1.1 通讀文檔 通讀需求規格說明書是提取信息&#xff0c;提出問題&#xff0c;輸出具有邏輯、規則、流程的業務步驟。 信息&#xff1a;此功能應為用戶提供確認刪除的功能。…

Oracle DBMS_SCHEDULER 與 DBMS_JOB 的對比

Oracle DBMS_SCHEDULER 與 DBMS_JOB 的對比 一 基本概述對比 特性DBMS_JOB (舊版)DBMS_SCHEDULER (新版)引入版本Oracle 7 (1992年)Oracle 10g R1 (2003年)當前狀態已過時但仍支持推薦使用的標準設計目的基礎作業調度企業級作業調度系統 二 功能特性對比 2.1 作業定義能力 …

Linux網絡編程實戰:從字節序到UDP協議棧的深度解析與開發指南

網路通信的三大要素&#xff1a;協議&#xff0c;端口和IP 知識點1【字節序】 多字節在主機中的存放數據 把多字節看成一個整體存儲的順序。 為什么我們在文件中沒有這個概念呢&#xff1f; 因為文件是字節流&#xff08;流指針&#xff09;&#xff0c;流是以一個字節為操…

mvccc

. MVCC (多版本并發控制) 概念&#xff1a; MVCC 是一種并發控制技術&#xff0c;用于在數據庫中實現并發事務的讀寫操作&#xff0c;同時保證事務的隔離性。MVCC 的核心思想是&#xff0c;在數據庫中維護數據的多個版本&#xff0c;每個事務在讀取數據時&#xff0c;讀取的是…

Kotlin整數相除精度損失roundToInt

Kotlin整數相除精度損失roundToInt import kotlin.math.roundToIntfun main() {val a 0.0fval delta 0.1ffor (i in 0..10) {val r a i * deltaprintln("float${r} toInt${r.toInt()} (0.5 toInt)${(r 0.5).toInt()} round${Math.round(r)} roundToInt${r.roundToInt…

“星睿O6” AI PC開發套件評測 - Windows on Arm 安裝指南和性能測評

引言 Radxa聯合此芯科技和安謀科技推出全新的"星睿O6"迷你 ITX 主板。該系統搭載了 CIX P1&#xff08;CD8180&#xff09;12 核 Armv9 處理器&#xff0c;擁有高達30T算力的NPU和高性能的GPU&#xff0c;最高配備64GB LPDDR內存&#xff0c;并提供了如 5GbE、HDMI …