【Linux篇】深入理解文件系統:從基礎概念到 ext2 文件系統的應用與解析

文件系統的魔法:讓計算機理解并存儲你的數據

  • 一. 文件系統
    • 1.1 塊
    • 1.2 分區
    • 1.3 inode(索引節點)
  • 二. ext2文件系統
    • 2.1 認識文件系統
    • 2.2 Block Group (塊組)
      • 2.2.1 Block Group 的基本概念
      • 2.2.2 Block Group 的作用
    • 2.3 塊組內部結構
      • 2.3.1 超級塊(Super Block)
      • 2.3.2 GDT(Group Descriptor Table)
      • 2.3.3 塊位圖(Block Bitmap)
      • 2.3.4 inode位圖(Inode Bitmap)
      • 2.3.5 inode表
      • 2.3.6 Data Block(數據塊)
    • 2.4 目錄與文件名
    • 2.5 路徑解析
      • 2.5.1 路徑解析與文件系統一致性
    • 2.6 路徑緩存
    • 2.7 掛載分區
  • 三. 最后

本文將介紹文件系統的基本概念及其重要性。文件系統作為操作系統的一部分,負責管理存儲設備上的數據存儲、讀取和組織方式。它提供了一種高效且可靠的方法來存儲和檢索文件,使得操作系統能夠有效地管理大量數據。本文將從文件系統的基本架構、常見類型、以及其在實際應用中的表現和優化策略等方面展開討論,旨在幫助讀者理解文件系統如何支持現代計算環境中的數據存儲需求。

💬 歡迎討論:如果你在學習過程中有任何問題或想法,歡迎在評論區留言,我們一起交流學習。你的支持是我繼續創作的動力! 👍
點贊、收藏與分享:覺得這篇文章對你有幫助嗎?別忘了點贊、收藏并分享給更多的小伙伴哦!你們的支持是我不斷進步的動力! 🚀
分享給更多人:如果你覺得這篇文章對你有幫助,歡迎分享給更多對Linux OS感興趣的朋友,讓我們一起進步!

一. 文件系統

打開的文件被內存管理著,實際是進程通過相關數據結構將每個對象進行關聯;而未被打開的文件被保存在磁盤上,一般是未被打開的文件占據最多。

1.1 塊

文件系統塊(也稱為磁盤塊)是操作系統用來管理磁盤空間的基本單位。它的引入主要解決了兩個問題:一個是磁盤的訪問效率,另一個是存儲空間的管理。塊的大小最常見為4KB,即八個扇區組成一個塊。塊是文件存取的最小單位。

LBA(Logical Block Address)邏輯塊地址,本質是線性地址。

在這里插入圖片描述
塊號=LBA/8,因為LBA是線性的像數組一樣,8個扇區是一個塊。
LBA=塊號*8+n(n指的是指定扇區的第幾個位置)。

1.2 分區

文件系統分區是指將磁盤劃分為多個邏輯上獨立的區域,每個區域可以格式化為獨立的文件系統,用于存儲數據和文件。分區的引入主要是為了提高磁盤的管理效率,優化存儲空間的利用,同時也增強了系統的安全性和可擴展性。通過分區,操作系統能夠在同一物理磁盤上為不同類型的數據提供不同的存儲環境,例如操作系統、應用程序和用戶數據可以分別存儲在不同的分區中,從而避免它們之間的相互干擾。每個分區可以使用不同的文件系統格式(如NTFS、FAT32、ext4等),以滿足不同需求的性能和功能要求。此外,分區還可以提供數據隔離,一旦一個分區發生故障,其他分區的數據不會受到影響,增加了數據的安全性。通過分區,系統管理員可以更方便地管理磁盤,進行備份、恢復或擴展,也便于磁盤的高效利用和性能優化。

1.3 inode(索引節點)

文件=內容(數據)+ 屬性,文件的內容存儲在哪里呢???存在inode表中。

查看inode的命令格式:

ls -li

  • 示例:

ls usercode.c -li
1061373 -rw-rw-r-- 1 wch_1 wch_1 404 Apr 12 17:37 usercode.c

  • 1061273:inode編號
  • -rw-rw-r-- :權限
  • 1:硬鏈接數
  • wch_1 :擁有者
  • wch_1:所屬組
  • 404:文件大小
  • Apr 12 17:37:最近修改時間
  • usercode.c:文件名

還有另一個方式:stat 文件名

  • 示例:

stat usercode.c
在這里插入圖片描述
inode是文件的唯一標識符,有且僅有一個,叫做inode號。

二. ext2文件系統

前言:文件系統有很多的分類,如:

  • ext3/ext4: Linux 中廣泛使用的文件系統,ext4 是其更先進的版本,支持更大的文件系統和更高效的數據存儲。
  • JFS(Journaled File System): IBM 開發的日志文件系統,廣泛應用于高性能服務器。
  • ReiserFS: 另一個支持日志的文件系統,主要用于 Linux 系統。

雖然文件種類很多,本文章主要以ext2文件系統為例。

2.1 認識文件系統

文件系統的目的是組織和管理硬盤上的文件,確保文件能夠在磁盤上高效、安全地存儲和訪問。格式化硬盤是將硬盤轉化為特定文件系統的過程,這樣硬盤就能夠被操作系統識別并使用。文件系統的設計和選擇影響文件存儲的性能、安全性以及后續的擴展能力,因此根據應用需求選擇合適的文件系統非常重要。

“只要能管理一個分區,就能管理所有分區,也就能管理所有磁盤文件” 這句話的含義是:ext2 文件系統通過將硬盤分區劃分成多個相同大小的塊組來管理數據,每個塊組都有獨立的管理機制。只要操作系統能夠理解和管理一個分區中的塊組結構,它就能通過相同的方式管理其他分區和整個磁盤中的所有文件。這個設計使得文件系統管理的過程更加簡潔和高效,便于擴展。
在這里插入圖片描述
上面可以看到分區的前面存在Boot Sector。下面將介紹一下它。

  • Boot Sector(啟動扇區)

Boot Sector(啟動扇區)是計算機存儲設備(如硬盤、固態硬盤、U盤等)上的一個特殊區域,用于存放引導操作系統的相關信息。它是系統啟動過程中的重要組成部分,負責將操作系統加載到內存并開始執行。

  • Boot Sector 是存儲設備上的特殊區域,負責啟動操作系統。
  • 在傳統的 BIOS 系統中,它通常指的是 MBR,包含引導程序和分區表信息。
  • 在現代的 UEFI 系統中,啟動信息存儲在 EFI System Partition (ESP) 中。
  • Boot Sector 是計算機啟動過程的關鍵,確保操作系統能夠加載并執行。

2.2 Block Group (塊組)

Block Group 是一種用于文件系統中存儲和組織數據的結構,尤其在 ext2、ext3 和 ext4 等文件系統中應用廣泛。它是一種將文件系統數據劃分成更小單元的方式,以便提高磁盤訪問的效率并確保數據的組織性。

2.2.1 Block Group 的基本概念

在 ext2/3/4 文件系統中,磁盤分區(或硬盤)被劃分為多個 Block Group。每個 Block Group 是磁盤上的一個邏輯單位,通常由以下幾個部分組成:

  • 數據塊(Data Blocks): 存儲文件的實際數據。
  • inode 表(Inode Table): 存儲文件的元數據,如文件的權限、大小、創建時間等信息。
  • 超級塊(Superblock): 存儲關于文件系統的總體信息,如文件系統的大小、已用空間、剩余空間等。
  • 塊位圖(Block Bitmap): 用于標記哪些數據塊是空閑的,哪些是已經使用的。
  • inode 位圖(Inode Bitmap): 用于標記哪些 inode 是空閑的,哪些是已經使用的。

2.2.2 Block Group 的作用

Block Group 的設計目的有幾個,主要包括以下幾點:

  1. 提高訪問效率: 將硬盤分為多個 Block Group 有助于提高文件系統的性能。每個 Block Group 內的數據結構相對獨立,這樣操作系統可以更快地定位文件。每個塊組中的 inode 表 和 數據塊盡量靠近,這樣可以減少磁盤尋道時間,提高文件讀取速度。
  2. 避免碎片化: 通過將文件的 inode 和 數據塊 組織在同一個塊組內,ext系列文件系統能有效地減少碎片化。這樣,文件的數據和它的元數據被存放在同一塊區域,讀寫操作更加連續,減少了由于尋址不連續帶來的磁盤碎片。
  3. 管理和分配空間 :每個 Block Group 都有一個獨立的位圖,標記數據塊和 inode
    的使用情況。這使得文件系統可以靈活地管理磁盤空間,減少不必要的磁盤訪問和沖突。在一個文件系統中,如果所有數據都集中在一個大塊區域,訪問時可能需要更多的尋址和空間管理,使用Block Group 的方法可以使得空間管理更加高效。
  4. 容錯性與恢復:由于文件系統是通過多個塊組管理磁盤空間,一些塊組發生錯誤時,其他塊組仍然能夠正常工作,這提高了文件系統的容錯性。損壞的塊組可以通過文件系統的修復工具進行恢復,而不必影響整個磁盤。

下面將詳細介紹塊組內部的結構即功能。😆

2.3 塊組內部結構

2.3.1 超級塊(Super Block)

Superblock(超級塊)是文件系統中的一個重要結構,負責存儲有關文件系統的元數據。它是文件系統的核心部分之一,用于描述文件系統的總體信息,包括文件系統的大小、空閑空間、塊的大小、文件系統的狀態等。每個文件系統都有一個 超級塊,它是文件系統結構的關鍵。

Superblock 的作用

Superblock 存儲了文件系統的基本信息,這些信息對于文件系統的運行和維護至關重要。它主要包括以下內容:

  1. 文件系統的總大小: 文件系統的總大小(以字節為單位)以及文件系統使用的總塊數。
  2. 塊大小(Block Size): 文件系統中每個塊的大小(通常為 512 字節、1 KB、2 KB、4 KB等)。塊大小決定了文件系統數據存儲的最小單位。
  3. 空閑空間的信息: 包括文件系統中空閑塊的數量、空閑 inode 的數量等。這些信息用于文件分配和空間管理。
  4. inode 信息: 包括文件系統總共有多少個 inode、每個 inode 占用多少空間,以及 inode 表的位置等。
  5. 文件系統狀態: 用于記錄文件系統的健康狀態(如是否需要修復),并存儲文件系統的版本信息。
  6. 文件系統的創建時間、最后掛載時間、文件系統的版本等: 用于文件系統管理和維護。
  7. 塊位圖(Block Bitmap)和 inode 位圖(Inode Bitmap)的狀態信息: 用于跟蹤哪些數據塊和 inode是空閑的,哪些已經被分配。

一個超級塊存在很多備份,防止丟失,可以系統調用(如 Linux 中的 fsck 命令)來檢查和修復文件系統。在文件系統損壞時,fsck 會使用 superblock 中的信息來嘗試恢復文件系統的狀態。

總結:
Superblock 是文件系統中最重要的數據結構之一,它包含文件系統的總體配置信息、空閑空間、inode 信息等。文件系統的初始化、掛載、空間管理、數據恢復等操作都離不開 superblock 的幫助。在文件系統損壞或異常的情況下,superblock 還提供了修復文件系統所需要的關鍵數據。

2.3.2 GDT(Group Descriptor Table)

塊組描述表(Block Group Descriptor Table) 是在一些文件系統中用于管理塊組(Block Group)信息的數據結構,尤其是在 ext2、ext3、ext4 等文件系統中,塊組描述表是管理磁盤空間的核心部分之一。

用于描述塊組的屬性信息,塊組與塊組描述符一一對應。

塊組描述表的結構

在 ext2、ext3 和 ext4 文件系統中,塊組描述表的每個條目通常包含以下信息:

  1. 塊組的起始地址(Block Group Start Address): 用于表示該塊組在磁盤上的物理起始位置。
  2. 數據塊位圖的地址(Block Bitmap): 存儲塊組內所有數據塊的分配情況。它是一個位圖,每一位代表一個數據塊,0 表示空閑,1表示已分配。
  3. inode 位圖的地址(Inode Bitmap): 存儲塊組內所有 inode 的分配情況。它同樣是一個位圖,每一位表示一個inode,0 表示空閑,1 表示已分配。
  4. inode 表的地址(Inode Table): 存儲該塊組內所有 inode 的數據結構,每個 inode
    包含一個文件的元數據。文件的創建、刪除、修改等操作都與 inode 表的管理緊密相關。
  5. 塊組的空閑塊數(Free Block Count): 記錄該塊組內空閑數據塊的數量。
  6. 塊組的空閑 inode 數量(Free Inode Count): 記錄該塊組內空閑 inode 的數量。
  7. 已分配的目錄項數(Used Directory Count): 記錄該塊組中目錄 inode
    的數量,這對于管理文件系統中的目錄結構非常重要。

塊組描述表與超級塊的關系

超級塊 和 塊組描述表 是密切相關的。在 ext2/3/4 文件系統中,超級塊 存儲文件系統的整體信息,如文件系統的總大小、塊大小、inode 數量等,而 塊組描述表 則存儲每個塊組的管理信息。超級塊會包含一個指向塊組描述表的指針,操作系統通過這個指針來訪問并更新塊組的狀態。

2.3.3 塊位圖(Block Bitmap)

Block Bitmap中記錄著Data Block中哪個數據塊已經被占?,哪個數據塊沒有被占?。

2.3.4 inode位圖(Inode Bitmap)

每個bit表??個inode是否空閑可?。

2.3.5 inode表

  • 存放?件屬性 如 ?件??,所有者,最近修改時間等
  • 當前分組所有Inode屬性的集合
  • inode編號以分區為單位,整體劃分,不可跨分區

2.3.6 Data Block(數據塊)

Data Block(數據塊)是文件系統中用于存儲實際文件內容的最小單位。它是文件系統中存儲數據的基本結構。每個 Data Block 都包含文件的實際數據,而不僅僅是元數據(如文件的權限、所有者、修改時間等),這些元數據通常存儲在 inode(索引節點)中。數據塊使得文件系統能夠高效地管理和存儲文件內容。

思考:知道inode號的情況下,在指定分區,請解釋:對?件進?增、刪、查、改是在
做什么?

  1. 查(查找文件):查找inode,通過inode指針訪問數據塊。
  2. 增(增添數據):查找數據塊(通過塊位圖和inode位圖查找空閑的數據塊),修改inode,寫入數據。
  3. 刪(刪除文件):查找inode和數據塊,釋放數據塊和inode,同時更改目錄項。
  4. 改(修改文件):查找inode,更新數據塊同時修改文件大小。

上述文件系統結構還是沒看到文件名存在哪里???它存在哪里呢?下面將揭曉此答案。

2.4 目錄與文件名

目錄保存的內容是:文件名與inode號的映射關系。
OS會記錄當前的工作路徑,通過文件名與映射關系深度進行路徑解析。

2.5 路徑解析

路徑解析 是操作系統和文件系統用來確定文件或目錄在存儲介質(如硬盤)上的位置的過程。路徑解析的目的是從文件的路徑名稱中找到與其對應的 inode,并通過文件系統中的目錄結構和索引節點,最終定位到實際的數據塊(Data Block)。在這個過程中,操作系統需要解析給定的文件路徑,找到文件的 inode 號,然后通過這個 inode 號 獲取文件的元數據以及文件的存儲位置。

2.5.1 路徑解析與文件系統一致性

文件系統需要確保在路徑解析過程中保持一致性。例如,在路徑解析時,如果文件或目錄被刪除或移動,操作系統需要更新目錄項和 inode 信息,以保持文件系統的一致性和可靠性。很多現代文件系統通過 日志記錄(journaling) 或 寫時復制(Copy-on-Write) 技術確保路徑解析和其他文件系統操作的原子性。

總結

路徑解析是操作系統查找文件或目錄在文件系統中的過程。根據給定的路徑(無論是絕對路徑還是相對路徑),操作系統逐級查找目錄項并通過 inode 號 獲取文件的元數據和數據塊。在符號鏈接存在的情況下,路徑解析還需要處理鏈接的目標路徑。路徑解析涉及到文件系統中的 目錄項 和 inode 表,并通過它們來定位文件的實際內容。

2.6 路徑緩存

訪問任何文件到要從/目錄開始進行路徑解析嗎?原則上是,實際LinuxOS會緩存歷史的路徑結構,存在于一個數據結構對象struct dentry,本質上是一個多叉樹結構。所有文件都有dentry結構,所有被打開的文件就可以在內存中形成樹形結構。

2.7 掛載分區

掛載分區是將物理磁盤分區、光盤、USB 驅動器等存儲設備與操作系統的文件系統結構相連接的過程。一旦掛載,操作系統可以將該分區或設備的文件與其它文件進行交互,就像它們是計算機本地的文件一樣。掛載后,文件系統中的路徑可以直接訪問該分區的數據。

本人理解:實際就是將需要訪問的設備或數據尾插入到目錄,

  • 掛載命令

在大多數 Linux 系統中,可以使用 mount 命令掛載分區。基本的掛載命令格式如下:

mount <設備文件> <掛載點>

例如,要將設備 /dev/sdb1 掛載到 /mnt/usb 目錄,可以使用以下命令:

sudo mount /dev/sdb1 /mnt/usb

  • 掛載選項

mount 命令可以使用不同的選項來控制掛載過程。例如:

-t:指定文件系統類型,如 ext4、ntfs、vfat 等。例如:

sudo mount -t ext4 /dev/sdb1 /mnt/usb

-o:指定掛載選項,如只讀(ro)、讀寫(rw)、設置文件權限等。例如:

sudo mount -o ro /dev/sdb1 /mnt/usb

-a:掛載 /etc/fstab 中列出的所有文件系統。例如:

sudo mount -a

總結:掛載分區 是將物理分區或設備連接到操作系統目錄結構中的過程,使得分區上的文件和目錄能夠在操作系統中被訪問。

  1. 使用 mount 命令可以將設備掛載到指定的目錄,掛載成功后,文件系統中的路徑就能訪問分區數據。
  2. 可以通過 /etc/fstab 配置文件設置自動掛載,確保分區在系統啟動時自動掛載。
  3. 卸載分區 使用 umount 命令,這樣可以確保文件系統完整性。
  4. 通過掛載分區,操作系統能夠靈活地管理不同存儲設備,使得用戶能夠方便地訪問各類存儲介質上的數據。

三. 最后

本文介紹了文件系統的基本概念及其在操作系統中的重要性。文件系統通過分區、塊、inode等結構管理磁盤上的數據,并提供高效的數據存儲與訪問方式。重點講解了ext2 文件系統,介紹了其基本架構、塊組(Block Group)的設計與作用,以及 超級塊、GDT、inode 位圖 和 數據塊等組成部分。文件路徑解析和文件名映射也被詳細說明,強調了操作系統如何通過 inode號定位文件數據塊。最后,介紹了如何掛載分區,使不同存儲設備的數據能與文件系統結構連接,便于訪問和管理。

路雖遠,行則將至;事雖難,做則必成

親愛的讀者們,下一篇文章再會!!! \color{Red}親愛的讀者們,下一篇文章再會!!! 親愛的讀者們,下一篇文章再會!!!

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

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

相關文章

3 VS Code 配置優化與實用插件推薦:settings.json 詳解、CodeGeeX 智能編程助手及插件離線安裝方法

1 優化 settings.json 文件 1.1 settings.json 簡介 settings.json 是 VS Code 的核心配置文件&#xff0c;用于存儲用戶的個性化設置和偏好。通過該文件&#xff0c;用戶可以自定義和覆蓋 VS Code 的默認行為&#xff0c;包括但不限于以下方面&#xff1a; 編輯器外觀&#…

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識

【Java面試系列】Spring Cloud微服務架構中的分布式事務處理與Seata框架實現原理詳解 - 3-5年Java開發必備知識 1. 引言 在微服務架構中&#xff0c;分布式事務處理是一個復雜且常見的問題。隨著業務規模的擴大&#xff0c;單體應用逐漸拆分為多個微服務&#xff0c;每個服務…

力扣面試150題--有效的數獨

Day 19 題目描述 思路 其實還挺簡單的&#xff0c;主要的難點在于如何判斷每個小數獨是否滿足要求 詳細見代碼 class Solution {public boolean isValidSudoku(char[][] board) {HashSet<Character> set new HashSet<>();//處理行HashSet<Character> set1…

達夢數據庫-學習-15-大內存SQL相關視圖介紹

目錄 一、環境信息 二、介紹 三、數據字典表 1、V$MEM_POOL 2、V$SQL_STAT 3、V$SQL_STAT_HISTORY 4、V$LARGE_MEM_SQLS 5、V$SYSTEM_LARGE_MEM_SQLS 四、總結 一、環境信息 名稱值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系統CentOS Linux release 7.9.2009 (Co…

從0到1使用C++操作MSXML

1. 引言 MSXML&#xff08;Microsoft XML Core Services&#xff09;是微軟提供的一套用于處理XML的COM組件庫&#xff0c;廣泛應用于Windows平臺的XML解析、驗證、轉換等操作。本文將詳細介紹如何從零開始&#xff0c;在C中使用MSXML解析和操作XML文件&#xff0c;包含完整的…

Windows 系統下用 VMware 安裝 CentOS 7 虛擬機超詳細教程(包含VMware和鏡像安裝包)

前言 資源 一、準備工作 &#xff08;一&#xff09;下載 VMware Workstation &#xff08;二&#xff09;下載 CentOS 7 鏡像 二、安裝 VMware Workstation&#xff08;比較簡單&#xff0c;按下面走即可&#xff09; 三、創建 CentOS 7 虛擬機 四、安裝 CentOS 7 系統…

應用安全系列之四十五:日志偽造(Log_Forging)之三

1、簡介 針對Java的日志系統有多種&#xff0c;本文主要描述如何通過修改配置文件來解決logback和log4j的日志偽造問題。 2、logback 2.1、系統提供的解決方案 在logback.xml中配置編碼器自動轉義特殊字符&#xff1a; 復制 <configuration><appender name"C…

(五)循環鏈表、雙向鏈表

循環鏈表 介紹 在單選鏈表基礎上&#xff0c;下一個節點指向前一個節點&#xff0c;最后一個節點指向起點 封裝循環鏈表 為了讓循環鏈表可以繼承自單向鏈表&#xff0c;對其進行重構 給其增加一個tail屬性&#xff08;尾節點&#xff09;&#xff0c;對各方法進行重寫整理 …

仙劍奇俠傳98柔情版游戲秘籍

戰斗秘技&#xff1a;在戰斗中輸入 “cheat”&#xff0c;然后輸入 “v” 直接取勝&#xff1b;輸入 “y” 敵人不攻擊。另外&#xff0c;在戰斗中按 “XJPXZ123” 加 “shift” 鍵&#xff0c;攻擊力增加 1000&#xff05;。等級提升秘籍&#xff1a;當李逍遙等級到達 99 級時…

常見的歸一化(Normalization)方法

本文詳解深度學習中常見的歸一化方法。 【歸一化是將數據按比例縮放&#xff0c;使之落入一個特定的區間】目錄 1. 批量歸一化&#xff08;Batch Normalization&#xff0c;BN&#xff09;1.1 數學原理1.2 代碼示例 2. 層歸一化&#xff08;Layer Normalization&#xff0c;LN&…

行星際激波在日球層中的傳播:Propagation of Interplanetary Shocks in the Heliosphere (參考文獻部分)

行星際激波在日球層中的傳播&#xff1a;Propagation of Interplanetary Shocks in the Heliosphere &#xff08;第一部分&#xff09;-CSDN博客 行星際激波在日球層中的傳播&#xff1a;Propagation of Interplanetary Shocks in the Heliosphere &#xff08;第二部分&…

大模型可視化應用敏捷開發方案:Dify+Echarts

大模型相關目錄 大模型&#xff0c;包括部署微調prompt/Agent應用開發、知識庫增強、數據庫增強、知識圖譜增強、自然語言處理、多模態等大模型應用開發內容 從0起步&#xff0c;揚帆起航。 Moe模式&#xff1a;或將是最好的大模型應用開發路徑一文帶你了解大模型RAG詳細記錄…

23種GoF設計模式

GoF&#xff08;Gang of Four&#xff09;設計模式是由四位計算機科學家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的書籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的設計模式 目錄 一、創建型模式&#xff08;Cre…

Losson 4 NFS(network file system(網絡文件系統))

網絡文件系統&#xff1a;在互聯網中共享服務器中文件資源。 使用nfs服務需要安裝:nfs-utils 以及 rpcbind nfs-utils : 提供nfs服務的程序 rpcbind &#xff1a;管理nfs所有進程端口號的程序 nfs的部署 1.客戶端和服務端都安裝nfs-utils和rpcbind #安裝nfs的軟件rpcbind和…

C++ 入門六:多態 —— 同一接口的多種實現之道

在面向對象編程中&#xff0c;多態是最具魅力的特性之一。它允許我們通過統一的接口處理不同類型的對象&#xff0c;實現 “一個接口&#xff0c;多種實現”。本章將從基礎概念到實戰案例&#xff0c;逐步解析多態的核心原理與應用場景&#xff0c;幫助新手掌握這一關鍵技術。 …

關于C使用Windows API獲取系統管理員權限和對文本屬性的操作,以及windows API的核心操作

關于windows系統的操作程序開發&#xff0c;本文介紹一部分重要的文本屬性操作&#xff0c;和運行計次器。 獲取系統管理員權限 #include <windows.h> VOID ManagerRun(LPCSTR exe, LPCSTR param, INT nShow) { //注意&#xff1a;會跳出提示。SHELLEXECUTEINFO ShExec…

Web 項目實戰:構建屬于自己的博客系統

目錄 項目效果演示 代碼 Gitee 地址 1. 準備工作 1.1 建表 1.2 引入 MyBatis-plus 依賴 1.3 配置數據庫連接 1.4 項目架構 2. 實體類準備 - pojo 包 2.1 dataobject 包 2.2 request 包 2.3 response 包 2.3.1 統一響應結果類 - Result 2.3.2 用戶登錄響應類 2.3.3…

從“被動跳閘”到“主動預警”:智慧用電系統守護老舊小區安全

安科瑞顧強 近年來&#xff0c;老舊小區電氣火災事故頻發&#xff0c;成為威脅居民生命財產安全的重要隱患。據統計&#xff0c;我國居住場所火災傷亡人數遠超其他場所&#xff0c;僅今年一季度就發生8.3萬起住宅火災&#xff0c;造成503人遇難。這些建筑多建于上世紀&#x…

【深入淺出 Git】:從入門到精通

這篇文章介紹下版本控制器。 【深入淺出 Git】&#xff1a;從入門到精通 Git是什么Git的安裝Git的基本操作建立本地倉庫配置本地倉庫認識工作區、暫存區、版本庫的概念添加文件添加文件到暫存區提交文件到版本庫提交文件演示 理解.git目錄中的文件HEAD指針與暫存區objects對象 …

Mybatis的簡單介紹

文章目錄 MyBatis 簡介 1. MyBatis 核心特點2. MyBatis 核心組件3. MyBatis 基本使用示例(1) 依賴引入&#xff08;Maven&#xff09;(2) 定義 Mapper 接口(3) 定義實體類(4) 在 Service 層調用 4. MyBatis 與 JPA/Hibernate 對比 MyBatis 簡介 MyBatis 是一款優秀的 持久層框…