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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…