數據庫系統概論(二十)數據庫恢復技術

數據庫系統概論(二十)數據庫恢復技術

  • 前言
  • 一、事務的基本概念
    • 1. 什么是事務?
    • 2. 事務的兩種"打開方式"
      • 2.1 隱式事務
      • 2.2 顯式事務:自己動手打包操作
    • 3. 事務的四大"鐵律
      • 3.1 原子性
      • 3.2 一致性
      • 3.3 隔離性
      • 3.4 持久性
    • 4. 為什么需要事務?
  • 二、數據庫恢復概述
    • 1. 為什么說數據庫故障“不可避免”?
      • 1.1 計算機系統自身的故障
      • 1.2 人為導致的故障
    • 2. 故障會對數據庫造成什么影響?
      • 2.1 數據庫處于“不一致狀態”
      • 2.2 數據丟失
    • 3. 什么是數據庫的“恢復”?
    • 4. 數據庫恢復的核心
      • 介質故障
    • 5. 恢復的核心原理
    • 6. 恢復的兩大"武器"
      • 6.1 數據轉儲
      • 6.2 日志文件
      • 6.3 為什么必須"先寫日志,后改數據庫"?
  • 四、數據庫恢復策略
    • 1. 事務故障恢復: undo 讓錯誤操作“撤回”
    • 2. 系統故障恢復: redo + undo
    • 3. 介質故障恢復
    • 4. 檢查點技術
  • 五、數據庫鏡像


前言

  • 在前幾期博客中,我們探討了 SQL 查詢,數據插入,修改與刪除,視圖,數據庫安全性,數據庫規范化與五大范式,數據庫設計的概念,關系查詢處理與查詢優化技術等知識點。
  • 從本節開始,我們將深入講解數據庫恢復技術

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的數據庫系統概論專欄
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482


一、事務的基本概念

1. 什么是事務?

想象你去自動售貨機買飲料

  1. 你投了10元錢(相當于數據庫操作1)
  2. 售貨機彈出一瓶可樂(相當于數據庫操作2)

這兩個動作必須"捆綁"在一起:如果錢扣了但可樂沒出來,你肯定不樂意;如果可樂出來了但錢沒扣,售貨機老板要虧本。這種"要么都成功,要么都失敗"的一組操作,在數據庫里就叫事務

通俗定義事務是一組操作的"包裹",里面的操作要么全部完成,要么全部取消,就像用一個塑料袋把多個物品裝在一起,要拿就全拿走,不拿就全留下

2. 事務的兩種"打開方式"

2.1 隱式事務

  • 默認模式:數據庫自己決定什么時候把操作打包成事務,比如每條SQL語句自動成為一個事務。
  • 例子
    -- 向成績表SC插入數據(每條INSERT都是一個獨立事務)
    USE DBS
    GO
    DELETE SC  -- 刪除表中所有數據(這是一個事務)
    INSERT SC VALUES('95001','1',92);  -- 這是第二個事務
    INSERT SC VALUES('95001','2',85);  -- 第三個事務
    
  • 關鍵特點:如果某條SQL出錯(比如第三條插入寫錯了),只有這條會失敗,前面的操作可能已生效。

2.2 顯式事務:自己動手打包操作

  • 手動控制:用代碼明確告訴數據庫"開始打包"和"結束打包"。
  • 三個關鍵命令
    • BEGIN TRANSACTION:開始打包操作
    • COMMIT:確認打包完成,所有操作永久生效(類似結賬)
    • ROLLBACK:取消打包,所有操作全部回退(類似取消訂單)
  • 例子:回滾事務(取消操作)
    USE DBS
    GO
    BEGIN TRANSACTION  -- 開始打包
    SELECT * FROM SC  -- 查看刪除前的數據
    DELETE SC  -- 刪除所有數據
    SELECT * FROM SC  -- 查看刪除后的數據
    ROLLBACK  -- 取消打包,剛才的刪除被撤銷
    SELECT * FROM SC  -- 數據恢復到刪除前
    
  • 例子:提交事務(確認操作)
    USE DBS
    GO
    BEGIN TRANSACTION
    DELETE SC  -- 刪除數據
    COMMIT  -- 確認刪除,操作永久生效
    

3. 事務的四大"鐵律

3.1 原子性

  • 類比:像吃包子,要么一口吞下去(全做),要么一口都不吃(全不做),不能吃一半吐出來(部分做)。
  • 例子:銀行轉賬
    -- 從賬戶1212轉1000元到3434
    Update savingCard set balance=balance-1000 where account=1212;
    Update savingCard set balance=balance+1000 where account=3434;
    
    • 如果只完成第一個操作(扣錢),第二個沒完成(沒加錢),就會導致用戶少了1000元,這就是原子性失敗。

3.2 一致性

  • 類比:你錢包里有100元,花了50元買東西,錢包里必須剩下50元,不能變成150元或-50元。
  • 核心:事務執行前數據庫是正確的,執行后也必須正確,中間狀態可能暫時錯誤,但最終要回歸正確。
  • 例子:轉賬前后,兩個賬戶的總金額必須一致:
    • 轉賬前:1212賬戶有5000元,3434賬戶有3000元,總和8000元
    • 轉賬后:1212賬戶4000元,3434賬戶4000元,總和還是8000元

3.3 隔離性

  • 類比:就像在公共廁所里,你在隔間里做的事(比如洗手),外面的人看不到,也不會影響你。
  • 例子:兩個事務同時操作同一個數據A:
    事務T1事務T2
    ① 讀取A=16
    ② 讀取A=16
    ③ A=A-1,寫回A=15
    ④ A=A-3,寫回A=13
    • 如果沒有隔離性,T2可能讀到T1還沒完成的中間值(比如A=15),導致最終結果出錯(正確結果應該是A=12)。
    • 隔離性確保每個事務都像"獨自使用數據庫"一樣,不受其他事務干擾。

3.4 持久性

  • 類比:你在紙上寫了字,就算把筆扔掉,字也不會消失。
  • 核心:當事務提交(COMMIT)后,所有操作會永久寫入數據庫,即使數據庫突然斷電、崩潰,重啟后數據也不會丟失。

4. 為什么需要事務?

  • 場景1:轉賬時突然斷網——事務會回滾,避免錢扣了卻沒到賬。
  • 場景2:多個用戶同時買同一件商品——隔離性確保不會超賣(比如只剩1件,不會賣給兩個人)。
  • 場景3:程序出錯導致部分操作完成——原子性確保數據不會停留在中間錯誤狀態。

二、數據庫恢復概述

1. 為什么說數據庫故障“不可避免”?

其實就像我們用手機會遇到死機、電腦會中病毒一樣,數據庫運行中也會遇到各種“意外”。這些意外主要分兩類:

1.1 計算機系統自身的故障

  • 硬件故障:比如硬盤突然損壞、服務器斷電。就像你寫作業時筆突然沒水了,之前寫的字可能就沒寫完。
  • 軟件故障:數據庫程序出錯、系統崩潰。比如你用文檔編輯軟件時,軟件突然閃退,沒保存的內容可能就丟了。

1.2 人為導致的故障

  • 操作失誤:比如管理員不小心執行了刪除整個數據表的命令(就像你刪文件時手滑點了“刪除所有”)。
  • 惡意破壞:黑客攻擊、病毒篡改數據。比如你的手機被惡意軟件入侵,通訊錄被修改或刪除。

2. 故障會對數據庫造成什么影響?

想象一下你在銀行轉賬,剛從A賬戶扣了錢,還沒轉到B賬戶時系統突然崩潰了——這時候數據庫就可能出問題,主要有兩種情況:

2.1 數據庫處于“不一致狀態”

  • 例子:轉賬事務只完成了一半(A賬戶扣了錢,但B賬戶沒收到),此時數據庫里的總金額對不上,這就是“數據不一致”。
  • 本質:事務沒完整執行,導致數據邏輯矛盾,就像賬本上“支出1000元”但沒記“收入”,賬算不平。

2.2 數據丟失

  • 例子:硬盤損壞導致存儲的用戶信息、交易記錄全部消失;或者被惡意刪除后沒備份。
  • 影響:就像你手機里的聯系人列表突然全沒了,重要信息找不回來,數據庫也會失去部分或全部有用數據。

3. 什么是數據庫的“恢復”?

既然故障會讓數據庫“生病”,那“恢復”就是給數據庫“治病”的過程:

核心目標
把數據庫從“錯誤狀態”(比如數據不一致、丟失)變回“正確狀態”(數據完整、邏輯正確)。

舉個生活中的例子理解

  • 錯誤狀態:你寫了一篇作文,中途電腦死機,沒保存的部分丟了,剩下的內容可能還缺胳膊少腿(類似數據不一致或丟失)。
  • 恢復過程:如果之前有備份(比如自動保存的草稿),就用備份還原;如果記得中間寫了什么(類似數據庫的“日志”記錄),可以補全缺失的部分。最終讓作文回到“完整正確”的狀態。

數據庫恢復的關鍵點

  • 正確狀態:通常是指最近一次“正常狀態”(比如所有事務都完整提交的時刻)。
  • 恢復手段:通過備份數據、事務日志(記錄每一步操作)等機制,把數據庫“回退”或“補全”到正確狀態。

4. 數據庫恢復的核心

介質故障

想象一下:你存著重要資料的U盤突然插電腦沒反應了,或者硬盤被摔了——這就是數據庫里的介質故障(硬故障)。具體包括:

  • 硬盤物理損壞(磁盤磁道壞了)
  • 磁頭碰撞(像CD光盤被刮花)
  • 強磁場干擾(比如硬盤靠近磁鐵)
  • 破壞數據的病毒(像專門撕毀賬本的小偷)

特點:直接破壞數據庫文件,就像U盤里的文件直接消失或損壞,而且正在讀寫這些數據的操作都會中斷。

5. 恢復的核心原理

如果你的U盤壞了,但你提前把資料復制到了云端——這就是"冗余"。數據庫恢復的核心就是:用額外存儲的數據副本,重建被破壞的數據

  • 冗余數據 = 數據庫的"備胎",可以是完整備份或操作記錄(日志)。

6. 恢復的兩大"武器"

6.1 數據轉儲

1. 什么是數據轉儲?
就像給手機相冊定期備份到電腦:DBA把整個數據庫復制到硬盤、磁帶等介質上,生成一個"后備副本"。

  • 作用:數據庫被破壞時,用這個副本還原數據。
  • 缺點:副本只能還原到備份那一刻的狀態,之后的新數據需要額外處理。

2. 轉儲的兩種"拍照"方式:靜態VS動態

  • 靜態轉儲
    ? 條件:數據庫完全"靜止",沒有任何事務在運行時備份。
    🌰 類比:你把手機關機后,再復制相冊(這時相冊不會變化)。
    ? 優點:備份出來的數據絕對完整一致(就像定格照片)。
    ? 缺點:必須等所有操作結束,期間數據庫不能用(手機關機時你也用不了)。

  • 動態轉儲
    ? 條件:邊用數據庫邊備份(事務和備份同時進行)。
    🌰 類比:你一邊拍照一邊往相冊里添加新照片,備份程序同時復制所有內容。
    ? 優點:不影響數據庫使用(手機邊用邊備份)。
    ? 缺點:需要搭配"日志文件"(后面會講),因為備份時數據可能正在被修改。

3. 全量備份VS增量備份:省時間還是省空間?

  • 海量轉儲:每次都備份整個數據庫(像把整個相冊復制一遍)。
  • 增量轉儲:只備份上次備份后變化的數據(像只復制新拍的照片)。
  • 差異備份:基于上一次全量備份,只記之后所有變化(比如上周全量備份后,這周每天只記新照片和修改過的照片)。

6.2 日志文件

1. 日志文件是什么?
就像銀行的交易記錄:每一筆轉賬、存款都會被記在賬本上。日志文件記錄了所有事務對數據庫的修改操作,包括:

  • 事務開始(BEGIN TRANSACTION)、提交(COMMIT)、回滾(ROLLBACK)
  • 具體操作:比如"用戶A從賬戶轉1000元到用戶B"前后的數據變化

2. 日志文件的格式:兩種"記賬方式"

  • 以記錄為單位:記清楚每筆操作的"前因后果"
    🌰 記錄樣例:
    T1 U AA 18 20 → 事務T1,修改了AA字段,從18改成20
    T1 I TU 1 → 事務T1,插入了一條ID為1的記錄
  • 以數據塊為單位:記哪個數據塊被修改了(適合大規模批量操作)

3. 日志文件的關鍵作用:補全"備份照片"的缺口
假設上周日全量備份了數據庫,周一到周五又做了很多操作:

  • 如果周五數據庫崩潰,只靠周日的備份,周一到周五的數據就沒了。
  • 但如果有日志文件,就可以通過日志重演周一到周五的所有成功操作,把數據恢復到崩潰前的狀態。

6.3 為什么必須"先寫日志,后改數據庫"?

一個致命場景:轉賬時突然斷電
假設你給朋友轉1000元,操作流程如下:

  1. 事務開始,記錄日志(記上"準備轉賬1000元")
  2. 系統先把日志寫到硬盤(就像先在賬本上記一筆)
  3. 正要從你的賬戶扣錢時,突然停電了(數據庫還沒修改)

為什么這樣設計?

  • 如果先改數據庫再寫日志:
    萬一改完數據庫后停電,日志沒記錄,系統不知道這筆轉賬是否完成,可能導致數據不一致(你的賬戶少了錢,但朋友沒收到)。
  • 先寫日志再改數據庫:
    即使停電,日志已經記錄了"要轉賬",重啟后可以通過日志知道這筆操作該完成(重做),或者該取消(撤銷)。

四、數據庫恢復策略

1. 事務故障恢復: undo 讓錯誤操作“撤回”

什么是事務故障?
比如你轉賬時,銀行卡扣了錢,但錢還沒轉到對方賬戶,這時事務中途失敗了(比如網絡斷了),數據庫就會處于“錢扣了但沒到賬”的不一致狀態。

怎么恢復?
系統會自動用日志文件“撤回”(undo)這個事務做的所有修改:

  • 比如剛才的轉賬,系統發現事務沒完成,就會把扣掉的錢“退”回你的賬戶,就像什么都沒發生過。
  • 這個過程不需要人工操作,系統自己通過日志記錄的“舊值”(轉賬前的余額)來撤銷錯誤操作。

2. 系統故障恢復: redo + undo

系統故障的影響有多復雜?
比如突然停電時,可能有兩種情況:

  1. 某個事務沒完成,但它改的數據已經存進數據庫了(比如你寫了一半的文檔沒保存就關機了);
  2. 某個事務已經完成了,但數據還在緩存里沒來得及存進硬盤(比如你點了“保存”但電腦瞬間關機了)。

恢復方法:先撤回未完成的,再重做已完成的

  • undo 未完成事務:把那些沒走完流程的操作撤回,避免殘留錯誤數據;
  • redo 已完成事務:把那些已經提交但沒存進硬盤的操作“補做”一遍,確保數據真正保存。
    例子:停電前你提交了“刪除文件”的操作,但系統沒來得及刪硬盤數據,重啟后系統會執行 redo,把文件真正刪掉;而如果你正在刪除文件時停電了,系統會 undo,取消刪除操作。

3. 介質故障恢復

介質故障有多嚴重?
比如硬盤突然損壞,數據徹底丟失或損壞,這時候前面的小故障恢復方法都沒用了,必須“大動干戈”。

恢復步驟:

  1. 重裝數據庫備份:用最近的后備副本(比如上周的全量備份)恢復數據庫,就像給電腦重裝系統;
  2. 重做所有已完成的事務:因為備份之后到故障發生前的新數據(比如這一周新增的文件)都沒了,需要用日志文件把這些新操作重新執行一遍(redo)。
    例子:你的硬盤壞了,里面存了100張照片,上周備份過80張。恢復時先還原這80張,然后通過日志找到這一周新增的20張照片的上傳記錄,重新“上傳”一遍,讓數據庫回到故障前的狀態。

4. 檢查點技術

為什么需要檢查點?
如果每次恢復都要從最早的日志開始掃描,效率太低了。檢查點就像游戲里的“存檔點”,定期記錄數據庫狀態,讓恢復時不用從頭開始。

檢查點的作用:

  • 定期把內存中已提交的數據刷到硬盤,并在日志里記錄一個“檢查點標記”;
  • 恢復時,只需要從最近的檢查點之后的日志開始處理,之前的都默認已經完成了。
    例子:你寫作業時每30分鐘存一次檔(檢查點),如果中途停電,重啟后只需要從最后一次存檔后的內容開始補,不用重新寫前30分鐘的作業。

五、數據庫鏡像

什么是數據庫鏡像?
就像給數據庫找一個實時復制的“雙胞胎”,主數據庫每次修改,鏡像數據庫都會同步更新。

鏡像如何用于恢復?

  • 當主數據庫因介質故障損壞時,直接切換到鏡像數據庫,就像你用備用鑰匙開門,不用等修鎖;
  • 鏡像還能用于日常查詢,減輕主庫壓力(比如查歷史數據時用鏡像庫,主庫專注處理新業務)。
    例子:你手機相冊自動同步到云端,手機壞了(主庫故障),直接從云端(鏡像庫)恢復所有照片,不用依賴備份文件。

以上就是這篇博客的全部內容,下一篇我們將繼續探索更多精彩內容。

我的個人主頁,歡迎來閱讀我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的數據庫系統概論專欄
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482

非常感謝您的閱讀,喜歡的話記得三連哦

在這里插入圖片描述

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

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

相關文章

java將pdf文件轉換為圖片工具類

一、相關依賴 <!-- PDFBox for PDF processing --><dependency><groupId>org.apache.pdfbox</groupId><artifactId>pdfbox</artifactId><version>2.0.27</version></dependency>二、工具類 import org.apache.pdfbox.p…

零門檻探索國產數據庫硬核實力 —— 金倉數據庫在線體驗平臺體驗記

1、 金倉數據庫在線體驗平臺 最近&#xff0c;我發現了一個超棒的數據庫寶藏 —— 金倉數據庫在線體驗平臺。它在金倉社區上線后&#xff0c;憑借 “零門檻體驗 多場景交互” 的特點&#xff0c;迅速吸引了眾多數據庫愛好者的目光&#xff0c;我也忍不住去體驗了一番。 2、 …

Linux基本操作指令和vim編譯器

基本指令 查看日期與日歷 data 指令 顯示日期 用法1&#xff1a;data CST&#xff1a;China Standard Time 時區&#xff0c;中國標準時間 用法2&#xff1a; data 指定格式 常用格式&#xff1a; “%Y-%m-%d”(%F): 2025-06-16“%H:%M:%S”(%T): 20:19:45“%F%T”用法3&am…

“從HTTP到TCP/IP的旅程“-----深入淺出Java Web通信

先放結構圖&#xff1a; 一、引言&#xff1a;網絡通信就像寄快遞 想象一下我們在網上買了一本書&#xff0c;整個配送過程是這樣的&#xff1a; 應用層&#xff1a;你在購物網站填好收貨地址&#xff08;HTTP請求&#xff09;傳輸層&#xff1a;快遞公司把包裹打包&#xf…

docker build使用代理以實現構建過程中下載Github源碼等操作

在通過Dockerfile構建docker容器的過程中&#xff0c;經常會需要在構建過程中拉取Github上的代碼。當宿主機配好代理&#xff0c;但容器內是一個隔離的環境&#xff0c;若想在容器內訪問&#xff0c;則需再打通容器和宿主機之間的代理配置。 方法一&#xff1a; 若宿主機上的…

Docker 快速搭建一個基于 GPT-Vis 組件的統計圖表生成服務

以下是對工具簡單介紹&#xff1a; 可以在服務端使用 GPT-Vis 統計圖表組件直接渲染成圖片支持Docker一鍵部署&#xff0c;提供統計圖表渲染生成API接口支持多種GPT-Vis支持的組件&#xff0c;包括折線圖、柱形圖、餅圖、面積圖、條形圖、直方圖、散點圖、詞云圖、雷達圖、思維…

hal庫練習1

要求&#xff1a;一個按鍵實現呼吸燈的控制&#xff0c;一個按鍵控制LED燈的閃爍&#xff0c;串口發送數據控制燈的開關 定時器配置 1.選擇需要的定時器2.配置基礎參數&#xff08;根據時鐘樹給定時器輸入的時鐘&#xff09;3.打開中斷4.在主函數里打開中斷 定時器掃描按鍵 …

java線程(4)

程序(program) 是為完成制定任務,用某種語言編寫的一組指令的集合.簡單的話說:就是我們寫的代碼. 進程 1.進程是指進行中的程序,比如我們使用QQ,就啟動了一個進程,操作系統就會為該進程分配內存空間,當我們使用迅雷,又啟動了一個進程,操作系統將為迅雷分配新的內存空間. 2、…

02《F8Framework》核心入口 FF8.cs

FF8.cs類是 F8Framework的核心入口 采用單例模式 提供對各個功能模塊的全局訪問 【特點】通過靜態類FF8統一訪問所有功能 1.模塊化設計&#xff1a; 每個功能獨立 通過 ModuleCenter 統一管理 2.懶加載機制&#xff1a; …

【硬件】相機的硬件測試

相機測試 author: Alla Imatest 提供超過 30 種測試項目&#xff0c;主要包括&#xff1a; 1&#xff09;圖像基礎參數?&#xff1a;MTF&#xff08;調制傳遞函數&#xff09;、畸變、均勻性、動態范圍 2&#xff09;色彩與光學特性?&#xff1a;白平衡誤差、飽和度、gamma …

Profinet與Modbus TCP協議轉換技術:西門子S7-1500(主站)和歐姆龍NJ PLC的高效數據交換

一、項目背景 某大型現代化智慧農業養殖場致力于打造全方位智能化的養殖環境。其養殖系統中&#xff0c;環境監測與調控部分選用了西門子S7-1500PLC作為Profinet協議主站。該PLC憑借強大的運算能力和豐富的功能模塊&#xff0c;能夠精準地采集和處理養殖場內的溫度、濕度、空氣…

希爾伯特變換,實信號轉復信號的FPGA實現思路

希爾伯特變換將實信號轉復信號的原理 將實信號的相位推遲90度后作為復信號的虛部。 錯誤實現方式 實信號經過希爾伯特濾波后得到復信號的虛部&#xff0c;之后直接與實信號組成復信號。而由于濾波器本身會對信號延時&#xff0c;故I路與Q路并不是相差90度&#xff0c;所以此方…

多模態大語言模型演進:從視覺理解到具身智能的技術突破

多模態大語言模型演進:從視覺理解到具身智能的技術突破 多模態大語言模型(MLLMs)正在重塑人工智能的邊界,實現從"看見"到"理解"再到"行動"的全鏈條智能。本文將深入解析蘋果最新多模態研究進展,揭示視覺-語言模型十年演進的技術脈絡,剖析…

window顯示驅動開發—渲染管道

支持 Direct3D 版本 10 的圖形硬件可以使用共享可編程著色器核心進行設計。 GPU) (圖形處理單元可以編程著色器核心&#xff0c;這些著色器核心可以跨構成呈現管道的功能塊進行計劃。 這種負載均衡意味著硬件開發人員不需要使用每種著色器類型&#xff0c;而只需要使用執行呈現…

時序數據庫Apache IoTDB核心技術深度解析

一、引言 ?背景?&#xff1a;5G技術加速了IoT領域的發展&#xff0c;物聯網設備數據的收集、存儲和計算需求日益增長。Apache IoTDB作為一款專為物聯網時序數據設計的軟件系統&#xff0c;在2020年被Apache基金會認可為頂級項目。 二、IoT領域發展趨勢 ?5G與IoT?&#x…

Next.js面試題:API深度解析

Next.js面試題&#xff1a;API深度解析 Next.js 通過 App Router 的引入徹底改變了 Web 開發范式。在這個新時代&#xff0c;深入理解 Next.js 的 API 函數不再只是錦上添花&#xff0c;而是技術面試中的關鍵區分點。這些函數構成了構建高性能、可擴展、現代化 Web 應用的基石…

Docker-MCP quickstart

項目概述 Docker-MCP 是一個 支持mcp的Docker 管理服務器&#xff0c;它允許 客戶端 通過 MCP&#xff08;Model Control Protocol&#xff09;接口直接與 Docker 進行交互。該項目提供了一套工具&#xff0c;使 AI 助手能夠創建容器、部署 Docker Compose 、獲取容器日志以及…

git 的變基操作(適合一個功能進行了多次commit提交,提交記錄過多不美觀)

git提交的 commit 的記錄很多&#xff0c;想多個 commit 進行合并&#xff0c;對代碼進行整理&#xff0c;幫助更好的閱讀代碼 IDEA 的操作步驟&#xff1a; 這里&#xff0c;給出你想進行合并的記錄 hash 值&#xff0c;完了點擊“Rebase”進行合并 點擊后&#xff0c;會進行…

【完整源碼+數據集+部署教程】路邊廣告牌實例分割系統源碼和數據集:改進yolo11-SEAMHead

研究背景與意義 研究背景與意義 隨著城市化進程的加快&#xff0c;路邊廣告牌作為重要的商業宣傳媒介&#xff0c;越來越多地出現在城市的各個角落。它們不僅承擔著信息傳播的功能&#xff0c;還對城市的視覺環境產生了深遠的影響。然而&#xff0c;隨著廣告牌數量的激增&…

C++ 中文件 IO 操作詳解

在C中&#xff0c;文件操作是通過流(stream)來實現的。標準庫提供了三種主要的文件流類來處理文件IO操作&#xff1a; ofstream&#xff1a;用于寫入文件&#xff08;output file stream&#xff09;ifstream&#xff1a;用于讀取文件&#xff08;input file stream&#xff0…