Linux: RAID(磁盤冗余陣列)配置全指南

Linux:RAID(磁盤冗余陣列)配置

在這里插入圖片描述

一、RAID 核心概念

RAID(Redundant Array of Independent Disks,磁盤冗余陣列)通過將多個物理磁盤組合為一個邏輯存儲設備,實現提升讀寫性能增強數據安全性平衡兩者的目的。不同RAID級別采用不同的技術實現,適用于不同場景。

二、常見RAID級別及特性

RAID級別最少磁盤數核心原理性能安全性
RAID 02塊數據分割為N份,并行寫入各磁盤(無冗余)讀寫速度大幅提升無冗余,單盤故障數據全丟
RAID 12塊數據完全鏡像,每塊磁盤存儲相同內容讀速提升,寫速略降單盤故障不丟數據
RAID 53塊數據分割存儲+分布式校驗(每塊盤均含校驗信息)讀寫性能較好允許單盤故障(可重建)
RAID 104塊(2的倍數)先做RAID 1鏡像,再將鏡像組組成RAID 0(1+0)讀寫性能優異允許每組鏡像中一塊盤故障
RAID 506塊(3的倍數)先做多個RAID 5,再將這些RAID 5組成RAID 0(5+0)讀寫性能優異每個RAID 5允許單盤故障

三、RAID 實現方式

  1. 硬件RAID:通過獨立RAID控制器實現,性能好、穩定性高,支持熱插拔,適合企業級場景。
  2. 軟件RAID:通過操作系統工具(如Linux的mdadm)實現,無需額外硬件,成本低,適合個人或小型場景。本文重點介紹mdadm工具配置。

四、軟件RAID 配置實戰(基于mdadm

  • 在實際環境中,若物理磁盤數量有限,可通過磁盤分區模擬獨立硬盤來配置 RAID。以下以 RAID 0 和 RAID 5 為例,詳細演示基于分區的配置步驟。

1. 安裝mdadm工具

yum -y install mdadm  # CentOS/RHEL系統

2.新增物理磁盤

? 添加 1 塊足夠大的物理磁盤(如/dev/sdb,容量≥50GB),用于創建多個分區模擬獨立硬盤。

3. 創建RAID 0(追求性能)

(1)創建分區(模擬獨立硬盤)

? 創建/dev/sdb1 /de/sdb2 分區 大小設置為1G

[root@zhangyiwei ~]# parted /dev/sdb
GNU Parted 3.1
使用 /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p
錯誤: /dev/sdb: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)                                    
Disk /dev/sdb: 32.2GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 
(parted) mklabel 
新的磁盤標簽類型? gpt                                                    
(parted) unit                                                             
Unit?  [compact]? Mib                                                     
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 30720MiB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start  End  Size  File system  Name  標志(parted) quit                                                             
信息: You may need to update /etc/fstab.[root@zhangyiwei ~]# fdisk /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
歡迎使用 fdisk (util-linux 2.23.2)。更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。命令(輸入 m 獲取幫助):n
分區號 (1-128,默認 1):
第一個扇區 (34-41943006,默認 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-41943006,默認 41943006):+1G
已創建分區 1命令(輸入 m 獲取幫助):N
分區號 (2-128,默認 2):
第一個扇區 (34-41943006,默認 2099200):
Last sector, +sectors or +size{K,M,G,T,P} (2099200-41943006,默認 41943006):+1G
已創建分區 2命令(輸入 m 獲取幫助):W
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盤。
[root@zhangyiwei ~]# partprobe /dev/sdb
[root@zhangyiwei ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0  100G  0 disk 
├─sda1   8:1    0    1G  0 part /boot
├─sda2   8:2    0    4G  0 part [SWAP]
└─sda3   8:3    0   50G  0 part /
sdb      8:16   0   20G  0 disk 
├─sdb1   8:17   0    1G  0 part 
└─sdb2   8:18   0    1G  0 part 
sr0     11:0    1  4.3G  0 rom  /run/media/root/CentOS 7 x86_64

使用2個分區(/dev/sdb1/dev/sdb2)組成RAID 0:

[root@zhangyiwei ~]# mdadm -Cv /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.-Cv     # 創建并命名-/dev/md0#  作為設備必須在/dev目錄下-l 0   # RAID級別(0)-n 2   # 成員磁盤數量(2塊)/dev/sdb1 /dev/sdb1  # 參與的磁盤或分區
  • 輸出提示array /dev/“md0 started.已創建”即成功。
(2)查看RAID信息
mdadm -Ds  # 顯示所有RAID設備詳細信息
mdadm -D /dev/md0  # 查看指定RAID(md0)的狀態
lsblk   # 列出系統中所有塊設備
  • 關鍵信息:RAID Level: raid0Active Devices: 2(激活的設備數)。
(3)格式化并掛載
# 格式化為xfs文件系統(也可使用ext4)
[root@zhangyiwei ~]# mkfs.xfs /dev/md0
meta-data=/dev/md0               isize=512    agcount=8, agsize=65408 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=523264, imaxpct=25=                       sunit=128    swidth=256 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=8 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0# 創建掛載點并掛載
[root@zhangyiwei ~]# mkdir /md0
[root@zhangyiwei ~]# mount /dev/md0 /md0  #臨時掛載# 獲取RAID設備的UUID
[root@zhangyiwei ~]# blkid /dev/md0
/dev/md0: UUID="8759b45d-89ed-458e-b860-efb267ddd110" TYPE="xfs" # 寫入fstab
[root@zhangyiwei ~]# vim /etc/fstab   #永久掛載UUID=8759b45d-89ed-458e-b860-efb267ddd110 /md0 xfs      defaults 0 0   
(5)刪除RAID 0(清理環境)
# 卸載掛載點
umount /md0# 停止RAID設備
mdadm -S /dev/md0# 清除磁盤上的RAID信息(避免下次誤識別)
mdadm --zero-superblock /dev/sdb
mdadm --zero-superblock /dev/sdc# 刪除掛載點和fstab配置
rm -rf /raid0
sed -i '/\/raid0/d' /etc/fstab  # 刪除fstab中對應行

. 創建RAID 1(追求安全)

(1)創建RAID 1設備(/dev/md1
新建sdb3、sdb4分區
[root@zhangyiwei ~]# fdisk /dev/sdb**********
[root@zhangyiwei ~]# partprobe /dev/sdb

使用2個分區(/dev/sdb3/dev/sdb4、)組成RAID 1

[root@zhangyiwei ~]# mdadm -Cv /dev/md1 -l 1 -n 2 /dev/sdb3 /dev/sdb4  # 設置RAID級別為1
mdadm: Note: this array has metadata at the start andmay not be suitable as a boot device.  If you plan tostore '/boot' on this device please ensure thatyour boot-loader understands md/v1.x metadata, or use--metadata=0.90
mdadm: size set to 1046528K
Continue creating array? 
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.[root@zhangyiwei ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
************
├─sdb3    8:19   0    1G  0 part  
│ └─md1   9:1    0 1022M  0 raid1 
└─sdb4    8:20   0    1G  0 part  └─md1   9:1    0 1022M  0 raid1 
sr0      11:0    1  4.3G  0 rom   /run/media/root/CentOS 7 x86_64

#掛載同RAID 0步驟

4. 創建RAID 5(平衡性能與安全)

(1)創建RAID 5設備(/dev/md5

創建分區:

[root@zhangyiwei ~]# fdisk /dev/sdb****************************
[root@zhangyiwei ~]# partprobe /dev/sdb
[root@zhangyiwei ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT********************
├─sdb5    8:21   0    1G  0 part  
├─sdb6    8:22   0    1G  0 part  
├─sdb7    8:23   0    1G  0 part  
└─sdb8    8:24   0    1G  0 part  
sr0      11:0    1  4.3G  0 rom   /run/media/root/CentOS 7 x86_64

使用3個分區(/dev/sdb5/dev/sdb6/dev/sdb7)組成RAID 5,額外1塊/dev/sdeb8作為熱備盤(自動替換故障盤):

[root@zhangyiwei ~]# mdadm -Cv /dev/md5 -l 5 -n 3 /dev/sdb5 /dev/sdb6 /dev/sdb7 --spare-devices=1 /dev/sdb8
mdadm: layout defaults to left-symmetric
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 512K
mdadm: size set to 1046528K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md5 started.-l 5 \  # RAID級別(5)-n 3 \  # 成員磁盤數量(3塊)/dev/sdb /dev/sdc /dev/sdd \--spare-devices=1 /dev/sde  # 熱備盤數量及設備
(2)查看RAID 5狀態
[root@zhangyiwei ~]# mdadm -D /dev/md5
[root@zhangyiwei ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT***********************
├─sdb5    8:21   0    1G  0 part  
│ └─md5   9:5    0    2G  0 raid5 
├─sdb6    8:22   0    1G  0 part  
│ └─md5   9:5    0    2G  0 raid5 
├─sdb7    8:23   0    1G  0 part  
│ └─md5   9:5    0    2G  0 raid5 
└─sdb8    8:24   0    1G  0 part  └─md5   9:5    0    2G  0 raid5 
sr0      11:0    1  4.3G  0 rom   /run/media/root/CentOS 7 x86_64
  • 關鍵信息:RAID Level: raid5Active Devices: 3Spare Devices: 1(熱備盤就緒)。
(3)模擬磁盤故障與重建
  1. 標記磁盤為故障

    [root@zhangyiwei ~]# mdadm -f /dev/md5 /dev/sdb5  # 將/dev/sdb5標記為故障盤
    mdadm: set /dev/sdb5 faulty in /dev/md5
    
  2. 查看自動重建過程

    [root@zhangyiwei ~]# mdadm -D /dev/md5*******************Number   Major   Minor   RaidDevice State3       8       24        0      spare rebuilding   /dev/sdb81       8       22        1      active sync   /dev/sdb64       8       23        2      active sync   /dev/sdb70       8       21        -      faulty   /dev/sdb5
    • 此時/dev/sde(熱備盤)會自動替換/dev/sdb,并顯示“Rebuild Status: xx%”(重建進度)。
  3. 移除故障盤或分區

    # 從RAID中移除故障盤
    [root@zhangyiwei ~]# mdadm -r /dev/md5 /dev/sdb5
    mdadm: hot removed /dev/sdb5 from /dev/md5 
    

    4.添加硬盤或分區

  • sdb5可作為md5的熱備盤加入:

    [root@zhangyiwei ~]# mdadm /dev/md5 --add /dev/sdb5
    
  • 執行后 sdb5 狀態會變為 spare,當 md5 中任一盤故障時自動替換。

#掛載同RAID 0步驟

二、創建 RAID 10(1+0)

1. 核心原理

RAID 10 = RAID 1(鏡像)+ RAID 0(條帶化),先將磁盤兩兩鏡像(RAID 1),再將鏡像組條帶化(RAID 0),兼顧安全性和性能。

2. 分步配置

創建分區:

[root@zhangyiwei ~]# fdisk /dev/sdb****************************
[root@zhangyiwei ~]# partprobe /dev/sdb
[root@zhangyiwei ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT********************
├─sdb9    8:25   0    1G  0 part  
├─sdb10   8:26   0    1G  0 part  
├─sdb11   8:27   0    1G  0 part  
└─sdb12   8:28   0    1G  0 part  
sr0      11:0    1  4.3G  0 rom   /run/media/root/CentOS 7 x86_64
(1)創建 2 組 RAID 1
  • 第一組(/dev/md101):使用sdb9和sdb10

    [root@zhangyiwei ~]# mdadm -Cv /dev/md101 -l 1 -n 2 /dev/sdb9 /dev/sdb10
    mdadm: Note: this array has metadata at the start andmay not be suitable as a boot device.  If you plan tostore '/boot' on this device please ensure thatyour boot-loader understands md/v1.x metadata, or use--metadata=0.90
    mdadm: size set to 1046528K
    Continue creating array? y                                                 
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md101 started.
  • 第二組(/dev/md102):使用sdb11和sd12

    [root@zhangyiwei ~]# mdadm -Cv /dev/md102 -l 1 -n 2 /dev/sdb11 /dev/sdb12
    mdadm: Note: this array has metadata at the start andmay not be suitable as a boot device.  If you plan tostore '/boot' on this device please ensure thatyour boot-loader understands md/v1.x metadata, or use--metadata=0.90
    mdadm: size set to 1046528K
    Continue creating array? y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md2 started.
(2)將兩組 RAID 1 組成 RAID 0(即 RAID 10)
[root@zhangyiwei ~]# mdadm -Cv /dev/md10 -l 0 -n 2 /dev/md101 /dev/md102
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md10 started.
[root@zhangyiwei ~]# lsblk
NAME    MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT********************
├─sdb9       8:25   0    1G  0 part  
│ └─md101    9:101  0 1022M  0 raid1 
│   └─md10   9:10   0    2G  0 raid0 
├─sdb10      8:26   0    1G  0 part  
│ └─md101    9:101  0 1022M  0 raid1 
│   └─md10   9:10   0    2G  0 raid0 
├─sdb11      8:27   0    1G  0 part  
│ └─md102      9:2    0 1022M  0 raid1 
│   └─md10   9:10   0    2G  0 raid0 
└─sdb12      8:28   0    1G  0 part  └─md102      9:2    0 1022M  0 raid1 └─md10   9:10   0    2G  0 raid0 
sr0         11:0    1  4.3G  0 rom   /run/media/root/CentOS 7 x86_64

3. 驗證 RAID 10

mdadm -D /dev/md10
  • 關鍵信息:RAID Level: raid0,成員為/dev/md101/dev/md102(兩組 RAID 1)。

#格式化與掛載同RAID 0步驟

三、創建 RAID 50(5+0)

1. 核心原理

RAID 50 = RAID 5(分布式校驗)+ RAID 0(條帶化),先將磁盤分成多組 RAID 5(每組至少 3 個磁盤),再將各組條帶化,兼顧大容量、安全性和性能。

2. 分步配置

(1)創建 2 組 RAID 5

? #需要重新使用被分配的硬盤或分區可以停止他們的頂層陣列(如 md0、md1 等,根據實際情況替換)

[root@zhangyiwei ~]# mdadm --stop /dev/md1
mdadm: stopped /dev/md1
[root@zhangyiwei ~]# mdadm --stop /dev/md5
mdadm: stopped /dev/md5
[root@zhangyiwei ~]# mdadm --stop /dev/md10
mdadm: stopped /dev/md10
[root@zhangyiwei ~]# lsblk
NAME      MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT****************
sdb         8:16   0   30G  0 disk  
├─sdb1      8:17   0    1G  0 part  
├─sdb2      8:18   0    1G  0 part  
├─sdb3      8:19   0    1G  0 part  
├─sdb4      8:20   0    1G  0 part  
├─sdb5      8:21   0    1G  0 part  
├─sdb6      8:22   0    1G  0 part  
  • 第一組(/dev/md501):使用sdb1、sdb2、sdb3(無熱備盤)

    [root@zhangyiwei ~]# mdadm -Cv /dev/md501 -l 5 -n 3 /dev/sdb1 /dev/sdb2 /dev/sdb3
    mdadm: layout defaults to left-symmetric
    mdadm: layout defaults to left-symmetric
    mdadm: chunk size defaults to 512K
    mdadm: /dev/sdb1 appears to be part of a raid array:level=raid0 devices=2 ctime=Mon Aug 18 20:33:14 2025
    mdadm: /dev/sdb2 appears to be part of a raid array:level=raid0 devices=2 ctime=Mon Aug 18 20:33:14 2025
    mdadm: /dev/sdb3 appears to be part of a raid array:level=raid1 devices=2 ctime=Mon Aug 18 20:43:16 2025
    mdadm: size set to 1046528K
    Continue creating array? y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md501 started.
    
  • 第二組(/dev/md502):使用sdb4、sdb5、sdb6(無熱備盤)

    [root@zhangyiwei ~]# mdadm -Cv /dev/md502 -l 5 -n 3 /dev/sdb4 /dev/sdb5     /dev/sdb6
    mdadm: layout defaults to left-symmetric
    mdadm: layout defaults to left-symmetric
    mdadm: chunk size defaults to 512K
    mdadm: /dev/sdb4 appears to be part of a raid array:
    level=raid1 devices=2 ctime=Mon Aug 18 20:43:16 2025
    mdadm: /dev/sdb5 appears to be part of a raid array:level=raid5 devices=3 ctime=Mon Aug 18 20:49:51 2025
    mdadm: /dev/sdb6 appears to be part of a raid array:level=raid5 devices=3 ctime=Mon Aug 18 20:49:51 2025
    mdadm: size set to 1046528K
    Continue creating array? y
    mdadm: Defaulting to version 1.2 metadata
    mdadm: array /dev/md502 started.
    
(2)將兩組 RAID 5 組成 RAID 0(即 RAID 50)
[root@zhangyiwei ~]# mdadm --assemble /dev/md502 /dev/sdb4 /dev/sdb5 /dev/sdb6
mdadm: /dev/sdb4 is busy - skipping
mdadm: /dev/sdb5 is busy - skipping
mdadm: /dev/sdb6 is busy - skipping
[root@zhangyiwei ~]# mdadm -Cv /dev/md50 -l 0 -n 2 /dev/md501 /dev/md502
mdadm: chunk size defaults to 512K
mdadm: /dev/md502 appears to be part of a raid array:level=raid0 devices=2 ctime=Mon Aug 18 21:02:02 2025
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md50 started.
[root@zhangyiwei ~]# lsblk
NAME       MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT******************
sdb          8:16   0   30G  0 disk  
├─sdb1       8:17   0    1G  0 part  
│ └─md501    9:501  0    2G  0 raid5 
│   └─md50   9:50   0    4G  0 raid0 
├─sdb2       8:18   0    1G  0 part  
│ └─md501    9:501  0    2G  0 raid5 
│   └─md50   9:50   0    4G  0 raid0 
├─sdb3       8:19   0    1G  0 part  
│ └─md501    9:501  0    2G  0 raid5 
│   └─md50   9:50   0    4G  0 raid0 
├─sdb4       8:20   0    1G  0 part  
│ └─md502    9:502  0    2G  0 raid5 
│   └─md50   9:50   0    4G  0 raid0 
├─sdb5       8:21   0    1G  0 part  
│ └─md502    9:502  0    2G  0 raid5 
│   └─md50   9:50   0    4G  0 raid0 
├─sdb6       8:22   0    1G  0 part  
│ └─md502    9:502  0    2G  0 raid5 
│   └─md50   9:50   0    4G  0 raid0 

3. 驗證 RAID 50

[root@zhangyiwei ~]# mdadm -D /dev/md50
  • 關鍵信息:RAID Level: raid0,成員為/dev/md5/dev/md6(兩組 RAID 5)。

4. 格式化與掛載

mkfs.xfs /dev/md50
mkdir /raid50
mount /dev/md50 /raid50
df -Th /raid50  

五、RAID 運維常用命令

命令用途命令示例
創建RAIDmdadm -Cv /dev/mdX -l 級別 -n 數量 磁盤列表
查看RAID詳情mdadm -D /dev/mdX
停止RAIDmdadm -S /dev/mdX
標記故障盤mdadm -f /dev/mdX 故障磁盤
移除故障盤mdadm -r /dev/mdX 故障磁盤
添加新盤(替換故障盤)mdadm -a /dev/mdX 新磁盤
清除磁盤RAID信息mdadm --zero-superblock 磁盤

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

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

相關文章

《GPT-OSS 模型全解析:OpenAI 回歸開源的 Mixture-of-Experts 之路》

目錄 一、引言 二、GPT-OSS 模型簡介 1. 版本與定位 2. 架構設計與技術亮點 2.1 Mixture-of-Experts(MoE)架構 2.2 高效推理機制與優化技術 2.3 模型對比 三、模型部署 1. 安裝相關依賴 1.1 uv 安裝 1.2 conda 安裝 1.3 Transformers 運行 g…

【力扣熱題100】雙指針—— 接雨水

題目 給定 n 個非負整數表示每個寬度為 1 的柱子的高度圖,計算按此排列的柱子,下雨之后能接多少雨水。 注意:答案中不可以包含重復的三元組。輸入:height [0,1,0,2,1,0,1,3,2,1,2,1] 輸出:6 解釋:上面是由…

51單片機拼接板(開發板積木)

一、前言 1.1 背景 讀書那會兒(2013年左右)網上接了很多51單片機的設計。 當時有個痛點: 每張板子都是定制的,畫板子,打樣,寫代碼需要花費很多時間。 希望有一張板子,能夠實現絕大多數單片機的功能&#xf…

使用segment-anything將目標檢測label轉換為語義分割label

使用segment-anything將目標檢測label轉換為語義分割label一、segment-anything簡介二、segment-anything安裝2.1安裝方法2.2預訓練模型下載三、將目標檢測label轉換為語義分割label3.1示例代碼3.2代碼說明一、segment-anything簡介 segment-anything是facebookresearch團隊開…

【unitrix數間混合計算】3.3 無符號整數標記trait(bin_unsigned.rs)

一、源碼 這段代碼是用 Rust 語言實現的一個類型級無符號二進制整數系統,通過類型系統在編譯時表示和操作二進制數字。這是一種典型的"類型級編程"(type-level programming)技術。 use crate::number::{U0, Bin, Bit, BinInt};/// …

Python基本語法總結

1.類(Class)在Python中類(Class)是面向對象編程(OOP)的核心概念。1.1.類的基本定義最簡單的類class Cat:"""這是一個最簡單的類"""pass #創建實例 obj Cat()包含方法的類cl…

數據結構05(Java)-- ( 歸并排序實質,歸并排序擴展問題:小和問題)

前言 本文為本小白🤯學習數據結構的筆記,將以算法題為導向,向大家更清晰的介紹數據結構相關知識(算法題都出自🙌B站馬士兵教育——左老師的課程,講的很好,對于想入門刷題的人很有幫助&#x1f4…

稅務專業人員能力構建與發展路徑指南

CDA數據分析師證書含金量高,適應了未來數字化經濟和AI發展趨勢,難度不高,行業認可度高,對于找工作很有幫助。一、稅務專業人員的核心能力框架能力維度關鍵技能要素專業工具與方法論實踐輸出成果稅務法規應用稅種政策解讀、法規更新…

Linux中rsync使用與inotify實時同步配置指南

Linux中rsync使用與inotify實時同步配置指南 一、rsync 簡介 rsync(Remote Sync)是 Linux 系統下的一款高效數據鏡像和備份工具,用于在本地或遠程同步文件和目錄。 支持本地復制、基于 SSH 的遠程同步,以及使用自有 rsync 協議的同…

Unicode 字符串轉 UTF-8 編碼算法剖析

📊 Unicode 字符串轉 UTF-8 編碼算法剖析 ——從 C# char 到 C wchar_t 的編碼轉換原理 引用:UTF-8 編解碼可視化分析 🔍 1. 算法功能概述 該函數將 Unicode 字符串(C# string)轉換為 UTF-8 編碼的字節數組&#xf…

php的安全性到底怎么樣

PHP作為一種流行的服務器端腳本語言,被廣泛應用于Web開發。然而,由于PHP是一種較為靈活的語言,其安全性議題一直備受爭議。在這篇文章中,我將從多個方面來討論PHP的安全性,包括常見的安全漏洞、防范措施以及最佳實踐。…

mapbox高階,結合threejs(threebox)添加建筑glb模型,添加陰影效果,設置陰影顏色和透明度

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言 1.1 ??mapboxgl.Map 地圖對象 1.2 ??mapboxgl.Map style屬性 1.3 ??threebox loadObj加載模型 二、??…

SSM從入門到實戰:1.6 Spring數據訪問與JDBC模板

👋 大家好,我是 阿問學長!專注于分享優質開源項目解析、畢業設計項目指導支持、幼小初高的教輔資料推薦等,歡迎關注交流!🚀 06-Spring數據訪問與JDBC模板 📖 本文概述 本文是SSM框架系列Spri…

下一代IT服務管理:ITIL5會是什么樣?

ITIL4發布到現在也就5年多時間,按照以往的更新節奏,ITIL5最早也得2027年之后。但現在IT發展的速度,跟以前完全不是一個量級。AI都快把我們的飯碗搶了(開個玩笑),ITIL要是還按部就班,估計真要被時…

最新研究進展:2023-2025年神經機器翻譯突破性成果

文章目錄 一、模型架構創新 1.1 混合架構的崛起 1.2 多模態翻譯的突破 1.3 大語言模型與NMT的深度融合(2023-2024) 1.4 非自回歸翻譯(NAT)的效率革命(2024) 二、數據與訓練策略優化 2.1 低資源語言翻譯的飛躍 2.2 動態數據增強技術 三、效率與部署 3.1 模型壓縮與加速 3.…

OpenTelemetry WebSocket 監控終極方案:打通最后一公里

概述 OpenTelemetry,以下簡稱 OTEL,是由 CNCF 托管的“一站式可觀測性標準”,把指標、鏈路、日志三大信號統一為單一 SDK/API,零侵入地采集從瀏覽器、移動端到后端、容器、云服務的全棧遙測數據,并支持 40 后端一鍵導…

VS Code 出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題解決方案

針對 VS Code 或 Cursor (vscode系)中出現的 Web 視圖加載錯誤和服務工作者注冊失敗問題,以下是永久性解決方案的完整操作指南:解決方案步驟打開命令面板 使用快捷鍵 CtrlShiftP(Windows/Linux)或 CmdShift…

【qml-4】qml與c++交互(類型多例)

背景: 【qml-1】qml與c交互第一次嘗試(實例注入) 【qml-2】嘗試一個有模式的qml彈窗 【qml-3】qml與c交互第二次嘗試(類型注冊) 【qml-4】qml與c交互(類型多例) 【qml-5】qml與c交互&#…

圖數據庫如何構筑 Web3 風控防線 聚焦批量注冊與鏈上盜轉 悅數圖數據庫

隨著 Web3 生態的不斷演進,鏈上風險呈現出團伙化、隱蔽化和動態化的趨勢,傳統的單點風控手段已難以應對復雜多變的攻擊模式。尤其在批量注冊薅羊毛與鏈上交易盜轉洗錢等高頻風險場景中,攻擊者往往通過偽造身份、跨鏈操作、多層嵌套轉賬等方式…

恒流源電路學習

恒流源的設計原理: 如圖所示你可以看到右邊的的推到公式得到紅點處的電壓是一個和左邊相關的定值,所以呢右邊的電流就是電壓除以那個4Ω,所以得到右邊的電路的電流大體是一個定值,不管你再加什么東西都可以保持這個電流&#xff…