【存儲基礎】SAN存儲基礎知識

文章目錄

  • 1. 什么是SAN存儲?
  • 2. SAN存儲組網架構
  • 3. SAN存儲的主要協議
    • SCSI
    • 光纖通道(FC)協議
    • iSCSI
    • FCoE
    • NVMe-oF
    • IB
  • 4. SAN存儲的關鍵技術
    • Thin Provision:LUN空間按需分配
    • Tier:分級存儲
    • Cache:緩存機制
    • QoS:流控機制
    • Deduplication:數據重刪
    • Compression:數據壓縮
    • Migration:數據遷移
    • Virtualization:LUN虛擬化
    • Snapshot:數據快照
    • Clone:數據克隆
    • Replication:遠程復制
    • Metro:雙活

1. 什么是SAN存儲?

SAN是一個通過高速、專用網絡,將服務器連接到共享的存儲設備的存儲系統。
其核心目的是:提供對塊級存儲的訪問,服務器將SAN存儲視為本地連接的硬盤,可以直接在上面創建文件系統。

SAN存儲的關鍵特性有:

  • 專用網絡:通常獨立于常規的LAN/IP網絡,使用專門優化的協議和硬件(如光纖通道);
  • 高性能:為存儲I/O設計,提供低延遲、高帶寬的讀寫性能;
  • 可擴展性:能添加更多的服務器或存儲設備,而無需中斷服務;
  • 高可用性:支持多路徑,即從服務器到存儲的多條物理路徑,避免單點故障;
  • 集中化管理:存儲資源集中部署和管理,提高利用率,簡化備份和災難恢復;
  • 資源共享:多個服務器可共享同一存儲池,但通常一個存儲卷/LUN在同一時間只能被一個服務器訪問,除非使用集群文件系統。

LUN是什么?
在SAN存儲中,邏輯單元號Logical Unit number是用來標識一個邏輯單元的數字。存儲系統將物理硬盤進行分區,每個分區有自己的邏輯地址,允許主機單獨在該分區進行讀寫,這樣的一個分區就稱為一個LUN。(LUN也指在SAN存儲上創建的邏輯磁盤)

2. SAN存儲組網架構

在這里插入圖片描述

SAN的核心組件:

  • HBA卡:Host Bus Adapter,主機總線適配器,安裝在服務器中的專用網卡,用于連接服務器到SAN網絡。
  • 功能:
    • 提供主機和適配的設備/網絡之間的物理連接
    • 處理數據IO;
    • 在連接的設備和主機之前傳輸數據;
  • 線纜:線纜有光纖線纜、以太網線纜等
  • 交換機:SAN的核心互聯設備,提供服務器到存儲的多對多連接、分區管理、路由等,光纖通道交換機是傳統SAN的骨干。

3. SAN存儲的主要協議

SAN存儲中,協議的核心任務是將SCSI塊級命令通過不同網絡傳輸到存儲設備,協議棧主要分為兩層:

  • 上層:SCSI命令集——定義讀寫、查詢等存儲操作(通用層);(還有NVMe)
  • 下層:傳輸協議——負責封裝SCSI命令并通過網絡傳輸(差異層)

SCSI

SCSI:Small Computer System Interface,小型計算機系統接口,是在計算機和外圍設備之間進行物理連接和數據傳輸的一系列標準,SCSI標準定義了指令、協議、光電和邏輯接口,是實際的存儲命令集(如讀寫等),SAN協議本質上是將SCSI命令封裝在底層網絡協議中進行傳輸

SCSI傳輸模型:
在這里插入圖片描述

光纖通道(FC)協議

光纖通道FC(Fiber Channel)協議:是傳統的、高性能SAN的主流協議,用于計算機和外部設備之間傳輸數據的傳輸層協議,主要用于在服務器和SAN存儲之間傳輸SCSI數據包;運行在專用光纖通道網絡上(交換機、HBA、線纜)。

FC能提供極高的性能、非常低的延遲、以及高可靠性,但是成本相對較高。

iSCSI

iSCSI:Internet Small Computer System Interface,因特網小型計算機系統接口,它是用來描述SCSI數據如何在TCP/IP網絡中傳輸的傳輸層協議;將SCSI命令封裝在標準的TCP/IP協議包中,運行在標準的以太網網絡上。

優點:能利用現有的IP網絡基礎設施,成本顯著低于FC。易于部署和管理,距離不受FC限制(理論上可跨廣域網);
缺點:性能和延遲受TCP/IP協議棧和以太網擁塞影響,可能消耗服務器CPU資源。

FCoE

FCoE:Fiber Channel over Ethernet, 是一種使FC幀可以直接在以太網上傳輸的存儲協議;將光纖通道幀封裝在無損以太網中,運行在支持DCB的增強型以太網上。

NVMe-oF

NVMe:Non-Volatile Memory Express,非易失性存儲協議,是一種用于計算機和非易失性存儲(比如SSD)之前的數據交換接口規范
NVMe over Fabrics:新興的高性能協議,專為利用SSD的低延遲和高吞吐量而設計,將NVMe命令擴展到網絡結構,如FC-NVMe、NVMe/TCP、NVMe over RoCE,使得NVMe協議能工作在運行FC、TCP、RoCE等協議網絡上。

IB

IB:InfiniBand,是一種應用于需要高吞吐量和低時延的高性能計算場景下的網絡通信協議,常被用于服務器之間、服務器與存儲設備之間、以及存儲與存儲之間進行數據通信與連接。

4. SAN存儲的關鍵技術

Thin Provision:LUN空間按需分配

傳統方式下,當創建一個LUN時(假設大小為1TB),存儲系統會立即、完全的從物理磁盤池中劃分并預留1TB的物理空間給這個LUN,無論服務器上的應用程序實際僅使用了100GB空間,這1TB的物理空間都被這個LUN獨占,其他LUN無法使用。

Thin Provisioning 精簡配置的方式:

  • 當創建一個 Thin LUN時,假設1TB(這是邏輯容量),系統并不會立即分配1TB的物理空間,而是記錄這個LUN的“最大可用”空間是1TB;
  • 物理空間分配是按需的、延遲的、細粒度的
  • 只有當服務器上的應用程序實際向這個LUN寫入新數據時存儲系統才會根據寫入請求的大小,從共享的物理存儲池中動態分配一小塊物理空間(如4KB,8KB,64KB等,取決于具體實現)給這個LUN;
  • 隨著寫入數據的增加,分配的物理空間也逐步增加

Thin Provisioning的核心是邏輯容量遠大于實際分配的物理容量

Tier:分級存儲

Tier分級存儲的核心思想:將訪問頻率高的數據(熱數據)存放在高性能、高成本的存儲介質上;將訪問頻率低的數據(冷數據)存放在低性能、低成本的存儲介質上。其目的是在滿足性能需求的前提下,最大化降低總體存儲成本。

分級存儲的工作原理:自動化數據遷移

  1. 策略定義
    • 創建存儲池,該存儲池包含來自不同物理磁盤組的多個存儲層級;
    • 為存儲池配置分級策略
      • 數據遷移標準:最常用的是基于訪問頻率進行分級,也可結合訪問時間、數據類型、策略等進行分級;
      • 遷移閾值:定義數據塊需要多“熱”才能升到更高層;數據塊需要多“冷”才會降到更底層;
      • 遷移時間窗口:通常在業務低峰期進行遷移任務,避免影響生產性能;
      • 層級大小:需要給每個層級配置物理容量,比如給Tier 0分配10TB SSD,給Tier 1分配100TB NL-SAS。
  2. 持續監控
    • 存儲系統的后臺進程會持續跟蹤存儲池中的每塊數據的訪問活動
  3. 數據分析與決策
    • 系統根據預設的策略,定期(比如每小時、每天)分析收集到的訪問統計信息,并識別出符合升級或降級條件的數據塊
  4. 透明數據遷移
    • 在指定的遷移窗口或系統負載較低的時候,啟動遷移任務,遷移過程對鏈接的主機服務器和應用完全透明,應用訪問數據的邏輯地址(LUN和LBA)不變,存儲系統在后臺處理所有重定向

Cache:緩存機制

Cache緩存機制的核心思想是:利用更快、但容量更小、成本更高的存儲介質,臨時存放訪問最頻繁或預計即將訪問的數據和元數據,從而避免每次都去訪問相對較慢的后端物理磁盤。

SAN存儲通常采用分層緩存架構:

  1. L1緩存
    • 存儲介質:DRAM,是系統主存的一部分;
    • 特點:速度最快、容量相對較小、易失性(斷電數據丟失)
    • 用途:存放“最熱的”讀數據塊;存放待寫入后端磁盤的寫數據;存放關鍵的元數據。
    • 位置:通常位于存儲控制器的內存中。
  2. L2緩存
    • 存儲介質:非易失性內存,主要有高性能SSD等;
    • 特點:速度介于L1緩存和后端磁盤之間;非易失性(斷電數據不丟失)
    • 核心功能:作為L1緩存的擴展和持久化層,專注于加速寫入和容納次熱數據。

QoS:流控機制

QoS :Quality of Service,智能服務質量控制,其核心功能包括流控機制(Flow Cntrol),流控機制是QoS功能落地的最核心技術,它通過對I/O請求的速率和隊列深度進行主動干預和控制來實現性能保障、性能隔離、資源公平、可預測性等目標,流控的主要控制對象是IOPS和BW帶寬

Deduplication:數據重刪

Deduplication:數據重刪是現代存儲系統中一項空間優化技術,旨在通過消除冗余數據塊,顯著提高存儲空間利用率,降低總體擁有成本。

其核心思想是:相同的數據內容,在存儲系統中僅保留一份物理副本,當檢測到新寫入的數據塊與已存儲的某個數據塊內容完全相同時,不再存儲新副本,而是創建一個指向已有數據塊的指針引用。

數據重刪的關鍵工作流程:

  1. 數據分塊:主機寫入新數據時,存儲系統將寫入的數據流切割成更小的、大小固定或可變的
  2. 計算哈希指紋:對每個分塊后的數據塊應用一個加密級哈希函數,生成一個唯一且長度固定的哈希值,最為該數據塊的數字指紋
  3. 查找索引:系統維護一個全局哈希索引表,該表中記錄了哈希指紋key->物理存儲位置value,用新數據塊的哈希值去查詢這個索引表,有兩種情況:
    • 命中:表中已存在相同的哈希值,意味著該數據塊的內容已經物理存儲在系統中了;
    • 未命中:表中不存在該哈希值,表明這是一個全新的、唯一的數據塊
  4. 存儲處理
    • 情況1 未命中:
      • 將數據塊寫入物理存儲介質;
      • 在哈希表中添加一個新條目:新哈希值->新物理位置
      • 更新該LUN的元數據映射表:將主機寫入的邏輯塊地址LBA映射到新物理位置
    • 情況2 命中:
      • 不存儲數據塊的內容本身;
      • 直接更新該LUN的元數據映射表:將主機寫入的邏輯塊地址LBA映射到索引表中查詢到的已有物理位置
      • 更新該已有數據塊的引用計數
  5. 讀取處理(透明):當主機讀取某個LBA時,存儲系統進行如下處理:
    • 查詢該LUN的元數據映射表,找到該LBA映射的物理位置
    • 從該物理位置讀取數據塊,將數據返回給主機;
    • 整個過程對主機完全透明,主機感知不到重刪的存在。

Compression:數據壓縮

數據壓縮的核心目標是:在將數據寫入物理磁盤前,利用算法識別并消除數據中的冗余模式,從而用更少的物理空間來表示原始數據。

數據壓縮的工作原理:

  1. 數據接收:主機服務器通過SAN網絡向存儲陣列發起寫IO請求,數據塊被發送到陣列控制器;
  2. 緩存處理:數據塊通常先被寫入到控制器的高速緩存中;
  3. 壓縮引擎處理:
    • 壓縮引擎(硬件或軟件)獲取緩存中的原始數據塊;
      • 使用特定壓縮算法(如哈夫曼算法、LZ77算法等)分析數據塊:算法查找重復的字節序列、空格、可預測的模式等,用更短的“代碼”或“引用”替換這些冗余部分;
      • 生成一個壓縮后的數據塊。
  4. 元數據記錄:存儲系統會記錄每個數據塊是否被壓縮、使用的壓縮算法、原始大小、以及壓縮后的大小等信息,用于后續的讀取和解壓;
  5. 寫入磁盤:壓縮后的數據塊(以及相關的元數據)寫入特定的物理磁盤;
  6. 讀取過程(解壓):
    • 主機發起讀請求,存儲控制器定位到包含所需數據的物理位置,并從磁盤讀取壓縮的數據塊;
    • 根據元數據信息,壓縮引擎執行解壓操作,將數據還原為原始的、未壓縮的形式;
    • 解壓后的原始數據塊通過高速緩存發送回請求的主機服務器。

Migration:數據遷移

數據遷移功能,是在不影響主機應用訪問的情況下,將數據在存儲系統內部或不同存儲系統之間移動。
其核心目標是:將數據從源物理位置透明地移動到目標物理位置,主機服務器和應用感知不到遷移過程,業務連續性得到保障。

應用場景:

  • 存儲硬件升級/更換:將數據從舊存儲陣列遷移到新陣列中;
  • 負載均衡:將繁忙的LUN從低性能的磁盤上遷移到高性能磁盤上;
  • 存儲分層場景;
  • 空間優化等

Virtualization:LUN虛擬化

虛擬化功能主要用于本地存儲對異構存儲LUN進行接管,簡化存儲系統的管理,或實現異構存儲間業務無中斷LUN數據遷移。

其核心思想:LUN虛擬化解除了主機服務器看到的邏輯磁盤單元LUN與底層物理磁盤驅動器(或RAID組)之前的嚴格、靜態綁定關系,向主機呈現一個統一的、簡化的存儲資源視圖,隱藏底層物理磁盤的復雜性。

Snapshot:數據快照

數據快照:snapshot是源數據在特定時間點一致性數據副本,捕獲了改時間點數據的狀態
快照的主要特點:

  • 瞬時創建:創建快照通常僅需幾秒鐘,無論源數據量有多大,對生產系統性能的影響非常小;
  • 空間高效:快照本身并不復制該時間點的所有數據塊,它主要記錄的是數據變化的元數據信息(指針映射),初始快照占用的額外存儲空間非常小;
  • 只讀:創建后的快照通常是只讀的,用于數據恢復或一致性檢查,不能直接寫入,但基于快照可創建可寫的克隆;
  • 時間點保護:快照提供了特定時刻數據的副本,是數據保護的重要一環。

快照的主要技術有COW和ROW:

  • COW:Copy-On-Write,寫時復制,其核心邏輯是先備份舊數據,再寫入新數據
    1. 創建快照時:僅記錄源數據的元數據映射表,不復制實際數據;
    2. 寫入新數據時(關鍵步驟):應用嘗試修改源數據中的某個數據塊時(比如Block X)
      • 系統將Block X的原始數據(修改前的內容)復制到快照專用區(保留區);
      • 新數據寫入源數據Block X的原始位置
      • 在這個過程中確保快照始終指向修改前的舊數據。
    3. 讀取快照時
      • 若請求的數據塊未被修改過,則直接從源卷讀取;
      • 若數據塊被修改過,則從快照保留區讀取舊數據、
  • ROW:Redirect-On-Write,重定向寫,核心邏輯:新數據寫入新位置,源數據保持凍結
    1. 創建快照時:
      • 記錄源卷的元數據映射表
      • 源卷數據保持只讀狀態(凍結);
    2. 寫入新數據時(關鍵步驟):當應用程序嘗試修改任意數據塊(例如Block Y)
      • 系統將新數據直接寫入全新的存儲區域(非原始位置);
      • 更新源卷的元數據,指向新數據位置(源卷Block Y物理內容不變)
      • 原始數據塊始終保持快照創建時的狀態
    3. 讀取數據時
      • 讀快照:始終從源卷原始位置讀取(數據未被覆蓋);
      • 讀源卷:若數據塊未被修改,從原始位置讀取;若數據塊已被修改,從新寫入區域讀取最新數據
特性COW(寫時復制)ROW(重定向寫)
寫入性能修改數據時需復制舊數據,寫延遲高直接寫入新位置,寫延遲低
讀取性能讀源卷快(多數數據未移動)讀源卷需跳轉位置,可能略慢
空間占用快照大小隨數據修改量增長源卷空間凍結,但新數據區域持續增長
數據保護性源卷損壞可能影響快照源卷原始數據物理凍結,更安全
恢復速度快照回滾較快回滾需重置元數據,速度極快
典型場景讀多寫少環境寫密集型應用(如數據庫、VDI)

Clone:數據克隆

數據克隆是一種基于快照的高級功能,它能即時創建源卷的完整可寫副本,它與快照技術的主要區別:

特性Snapshot(快照)Clone(克隆)
可寫性只讀(不可修改)完全可讀寫
空間占用僅存儲差異數據(節省空間)初始占用小,隨寫入增長(空間高效)
數據獨立性依賴源卷(物理存儲未分離)獨立于源卷(可脫離存在)
用途數據恢復、備份源生產級讀寫(如測試、容災)

Replication:遠程復制

遠程復制是實現業務連續性最核心的跨站點數據同步技術,通過將主存儲陣列的數據實時或近實時地復制到異地備端,確保災難發生時業務秒級切換。

遠程復制是一種容災技術,關鍵指標:

  • RTO:恢復時間目標,故障后業務恢復所需時間;
  • RPT:恢復點目標,災難發生時允許丟失的數據量

遠程復制分為兩種核心模式:同步復制和異步復制
同步復制
在這里插入圖片描述

  • 關鍵特性:
    • 數據強一致性:主站點收到遠端確認后才向主機返回寫成功(RPO=0)
    • 距離限制:通常要求距離<=100km
    • 性能影響:網絡延遲直接疊加到主機IO延遲
  • 適用場景:金融核心交易系統、醫療HIS系統等

異步復制
在這里插入圖片描述

  • 關鍵特性
    • 最終一致性:數據按策略批量同步(RPO>0)
    • 無距離限制:支持跨國復制
    • 性能無損:主機IO不受遠端網絡影響
  • 適用場景:ERP系統、郵件服務器等

Metro:雙活

雙活是一種跨站點的高可用架構,其核心目標是實現零感知故障切換和零數據丟失
雙活與傳統主備架構的差異:

雙活技術將兩個地理分散的數據中心融合為單一邏輯存儲池,業務可在任意站點無差別訪問數據。

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

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

相關文章

TDengine 運維——巡檢工具(定期檢查)

背景 TDengine 在運行一段時間后需要針對運行環境和 TDengine 本身的運行狀態進行定期巡檢&#xff0c;本文檔旨在說明如何使用巡檢工具對 TDengine 的運行環境進行自動化檢查。 安裝工具使用方法 工具支持通過 help 參數查看支持的語法 Usage: taosinspect [OPTIONS]Check…

DHCP應用

一、DHCP介紹 在LAN(局域網)中我們常會遇到以下的情況&#xff1a; 1.不知道如何配置IP地址及相關信息的員工&#xff0c;無法上網&#xff1b;2.IP地址配置沖突&#xff0c;無法上網&#xff1b;3.來訪用戶因不熟悉公司網絡情況無法上網&#xff1b; 以上這些情況都是日常最…

LabVIEW多按鍵自動化檢測系統

LabVIEW開發一套高精度按鍵力與行程自動化檢測系統&#xff0c;針對傳統檢測設備自動化程度低、定位誤差大等痛點&#xff0c;實現多按鍵產品的全流程自動化測試。系統集成 6 軸工業機器人、高精度傳感器及實時數據處理模塊&#xff0c;滿足汽車電子、消費電子等領域對按鍵手感…

嵌入式硬件篇---蜂鳴器

蜂鳴器是一種常用的電子發聲元件&#xff0c;主要分為有源蜂鳴器和無源蜂鳴器兩類。它們在結構、工作原理、驅動方式、應用場景等方面存在顯著差異。以下是詳細介紹&#xff1a; 一、核心定義與結構差異 1. 有源蜂鳴器 定義&#xff1a; “有源” 指內部自帶振蕩電路&#x…

600+純CSS加載動畫一鍵獲取指南

CSS-Loaders.com 完整使用指南&#xff1a;600純CSS加載動畫庫 &#x1f3af; 什么是 CSS-Loaders.com&#xff1f; CSS-Loaders.com 是一個專門提供純CSS加載動畫的資源網站&#xff0c;擁有超過600個精美的單元素加載器。這個網站的最大特色是所有動畫都只需要一個HTML元素…

國內高頻混壓PCB廠家有哪些?

一、技術領先型廠商&#xff08;聚焦材料與工藝突破&#xff09; 獵板PCB 技術亮點&#xff1a;真空層壓工藝實現FR-4與羅杰斯高頻材料&#xff08;RO4350B/RO3003&#xff09;混壓&#xff0c;阻抗公差3%&#xff0c;支持64單元/板的5G天線模塊&#xff0c;插損降低15%。 應用…

volatile,synchronized,原子操作實現原理,緩存一致性協議

文章目錄 緩存一致性協議&#xff08;MESI&#xff09;volatile1. volatile 的作用2.volatile的底層實現3,volatile 實現單例模式的雙重鎖&#xff08;面手寫&#xff09; synchronized1,基本用法2,可重入性3,Java對象頭4,實現原理&#xff08;1&#xff09;代碼塊同步的實現&a…

webfuture:如何屏蔽后臺發文界面的保存為新文章按鈕?

問題描述&#xff1a; 如何屏蔽后臺發文界面的保存為新文章按鈕&#xff1f; 問題解決&#xff1a;修改這個文件 /Admin/Content/Base/css/base.css 定義這個的id saveAsNewItemSubmit #saveAsNewItemSubmit{display: none;}

SpringBoot集成第三方jar的完整指南

原文地址&#xff1a;https://blog.csdn.net/weixin_43826336/article/details/141640152?ops_request_misc%257B%2522request%255Fid%2522%253A%25227d4118ef2d572ba4428caf83f1d2bb28%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id7d4118…

題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉

題目 3293: 藍橋杯2024年第十五屆決賽真題-數位翻轉 時間限制: 2s 內存限制: 192MB 提交: 1046 解決: 318 題目描述 小明創造了一個函數 f(x) 用來翻轉 x 的二進制的數位&#xff08;無前導 0&#xff09;。比如f(11) 13&#xff0c;因為 11 (1011)2&#xff0c;將其左右翻轉…

word為跨頁表格新加表頭和表名

問題&#xff1a; 當表格過長需要跨頁時&#xff08;如下圖所示&#xff09;&#xff0c;某些格式要求需要轉頁接排加續表。 方法一&#xff1a; 1、選中表格&#xff0c;在“表布局”區域點開“自動調整”&#xff0c;選擇“固定列寬”&#xff08;防止后續拆分表格后表格變…

Ubuntu上進行VS Code的配置

1. 安裝VS code sudo snap install code --classic 2. 安裝GCC sudo apt install build-essential 3. 安裝VS Code中文包 打開 VS Code 點擊左側活動欄中的擴展圖標(或按Ctrl+Shift+X) 在搜索框中輸入:Chinese (Simplified) 選擇由 Microsoft 提供的 中文(簡體)語言包…

vr中風--數據處理模型搭建與訓練2

位置http://localhost:8888/notebooks/Untitled1-Copy1.ipynb # -*- coding: utf-8 -*- """ MUSED-I康復評估系統&#xff08;增強版&#xff09; 包含&#xff1a;多通道sEMG數據增強、混合模型架構、標準化處理 """ import numpy as np impor…

【LLM vs Agent】從語言模型到智能體,人工智能邁出的關鍵一步

目錄 一、什么是 LLM&#xff1f;語言的天才&#xff0c;思維的起點 ? 特點小結&#xff1a; 二、什么是 Agent&#xff1f;智能的執行者&#xff0c;自主的決策者 ? 特點小結&#xff1a; 三、LLM 與 Agent 的關系&#xff1a;是工具&#xff0c;更是大腦 四、案例實戰…

安裝DockerDocker-Compose

Docker 1、換掉關鍵文件 vim /etc/yum.repos.d/CentOS-Base.repo ▽ [base] nameCentOS-$releasever - Base - Mirrors Aliyun baseurlhttp://mirrors.aliyun.com/centos/$releasever/os/$basearch/ gpgcheck1 enabled1 gpgkeyhttp://mirrors.aliyun.com/centos/RPM-GPG-KEY-C…

Perl One-liner 數據處理——基礎語法篇【匠心】

Perl&#xff08;Practical Extraction and Report Language&#xff09;是一種功能強大且靈活的腳本語言&#xff0c;因其強大的文本處理能力和簡潔的語法而廣受開發者和系統管理員的喜愛。特別是在命令行環境下&#xff0c;Perl 的 one-liner&#xff08;單行腳本&#xff09…

Go語言defer關鍵字:延遲執行的精妙設計

深度解析Go語言defer關鍵字&#xff1a;延遲執行的精妙設計 引言 在Go語言中&#xff0c;defer語句是一種獨特而強大的控制流機制&#xff0c;它通過??延遲執行??的方式解決資源管理、錯誤處理和異常恢復等關鍵問題。理解defer的工作原理是掌握Go并發編程和錯誤處理的關鍵…

C#項目07-二維數組的隨機創建

實現需求 創建二維數組&#xff0c;數組的列和寬為隨機&#xff0c;數組內的數也是隨機 知識點 1、Random類 Public Random rd new Random(); int Num_Int rd.Next(1, 100);2、數組上下限。 //定義數組 int[] G_Array new int[1,2,3,4];//一維數組 int[,] G_Array_T …

.NET WinForm圖像識別二維碼/條形碼并讀取其中內容

需求:圖像識別出一張圖片中的二維碼或者條形碼&#xff0c;并讀取其中內容。 一、安裝庫(特別注意&#xff0c;網上很多都沒說清楚) 如果是基于.net framework&#xff0c;則安裝ZXing.Net(建議0.14.0版本左右&#xff0c;具體看實際&#xff0c;版本太高&#xff0c;部分接口…

Guava限頻器RateLimiter的使用示例

文章目錄 1. 背景說明2. API與方法3. 示例代碼3.1 基礎工具方法3.2 測試任務類3.3 測試和統計方法3.4 測試兩種模式的限頻器3.5 測試緩沖時間與等待耗時 4. 完整的測試代碼5. 簡單小結 1. 背景說明 高并發應用場景有3大利器: 緩存、限流、熔斷。 也有說4利器的: 緩存、限流、…