Ceph异地数据同步之-RBD异地同步复制(上)
#作者:闫乾苓
文章目录
- 前言
- 基于快照的模式(Snapshot-based Mode)
- 工作原理
- 单向同步配置步骤
- 单向同步复制测试
- 双向同步配置步骤
- 双向同步复制测试
前言
Ceph的RBD(RADOS Block Device)支持在两个Ceph集群之间进行异步镜像复制,提供了两种主要模式:基于日志(Journal-based)和基于快照(Snapshot-based)。这两种模式各有优缺点,适用于不同的场景和需求。
根据所需的复制需求,RBD 镜像可以配置为单向或双向复制:
- 单向复制:当数据仅从主群集镜像到辅助群集时,rbd-mirror守护进程仅在辅助群集上运行。
- 双向复制:当数据从一个集群上的主映像镜像到另一个集群上的非主映像(反之亦然)时, rbd-mirror守护进程在两个集群上运行。
基于快照的模式(Snapshot-based Mode)
工作原理
- 使用定期计划或手动创建的RBD镜像快照来进行集群间的复制。
- 远程集群会比较两个快照之间的数据或元数据更新,并将差异部分复制到其本地副本。
- 利用RBD的快速差异(fast-diff)功能,可以快速确定哪些数据块发生了变化,而无需扫描整个RBD镜像。
优点:
- 低延迟写入:不需要额外的日志记录,写操作不会显著增加延迟。
- 灵活性:可以根据需要手动创建快照或设置自动快照策略,灵活适应不同的业务需求。
缺点:
- 较粗粒度:与基于日志的模式相比,快照模式不够精细,需要同步完整的差异部分,而不是逐个写操作。
- 恢复时间较长:在故障切换时,如果部分差异未完全应用,则需要回滚到上一个完整快照状态,可能会导致更长的恢复时间。
适用场景:
对写性能要求较高且能接受一定延迟的应用,如文件存储、备份等。
单向同步配置步骤

- 在两个ceph集群上登录到cephadm shell
[root@ceph01 ~]# cephadm shell
[root@ceph-a ~]# cephadm shell
- 在site-b集群中ceph-b节点部署 rbd-mirror 守护进程
[ceph: root@ceph-a /]# ceph orch apply rbd-mirror ceph-b
Scheduled rbd-mirror update...
查看守护进程是否正常启动
[ceph: root@ceph-a /]# ceph orch ls |grep rbd-mirror
rbd-mirror 1/1 5m ago 4h ceph-b
- 在源集群site-a新建1个存储池名为data,并启用 RBD 应用程序,在池data中创建1个名为image1的image
[ceph: root@ceph01 /]# ceph osd pool create data
pool 'data' created
[ceph: root@ceph01 /]# ceph osd pool application enable data rbd
enabled application 'rbd' on pool 'data'
[ceph: root@ceph01 /]# rbd create --size 1024 data/image1
- 在目标集群site-b新建1个同名存储池data,并启用 RBD 应用程序,不用创建image
[ceph: root@ceph-a /]# ceph osd pool create data
pool 'data' created
[ceph: root@ceph-a /]# ceph osd pool application enable data rbd
enabled application 'rbd' on pool 'data'
- 在site-a,site-b两个存储集群中选择 mirroring 模式为image
[ceph: root@ceph01 /]# rbd mirror pool enable data image
[ceph: root@ceph-a /]# rbd mirror pool enable data image
- 验证两个集群都已成功启用了镜像模式为pool
[ceph: root@ceph01 /]# rbd mirror pool info data
Mode: image
Site Name: 0978cb18-dc68-11ef-b0d7-000c29460ffd
Peer Sites: none
[ceph: root@ceph-a /]# rbd mirror pool info data
Mode: image
Site Name: baedc6c0-e058-11ef-a23a-000c29cf8329
Peer Sites: none
- 在site-a集群创建 Ceph 用户帐户,并将存储集群对等注册到池,将 bootstrap 令牌文件复制到site-b存储集群。
[ceph: root@ceph01 /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a
- 在site-b集群中导入bootstrap令牌
[ceph: root@ceph-a /]# rbd mirror pool peer bootstrap import --site-name site-b --direction rx-only data /root/bootstrap_token_site-a
注意:对于单向 RBD 镜像功能,必须使用–direction rx-only参数,因为在引导 对等时双向镜像是默认设置。
- 在site-a集群 data池中为需要同步的image启用镜像快照同步功能
[ceph: root@ceph01 /]# rbd mirror image enable data/image1 snapshot
Mirroring enabled
- site-a集群验证镜像同步复制状态
[ceph: root@ceph01 /]# rbd mirror image status data/image1
image1:global_id: 6f6c3690-df01-49dd-9508-f7c944fbcd9asnapshots:3 .mirror.primary.6f6c3690-df01-49dd-9508-f7c944fbcd9a.3da61eb1-7512-44c2-b4e9-8d6a987e1a9c (peer_uuids:[f9128159-df9f-43eb-be57-4f798da002cc])
- site-b集群验证镜像同步复制状态
[ceph: root@ceph-a /]# rbd mirror image status data/image1
image1:global_id: 6f6c3690-df01-49dd-9508-f7c944fbcd9astate: up+replayingdescription: replaying, {"bytes_per_second":0.0,"bytes_per_snapshot":0.0,"last_snapshot_bytes":0,"last_snapshot_sync_seconds":0,"local_snapshot_timestamp":1738897439,"remote_snapshot_timestamp":1738897439,"replay_state":"idle"}service: ceph-b.tglrho on ceph-blast_update: 2025-02-07 03:06:22
如果镜像处于up+replaying状态,表示可以正常工作。up表示rbd-mirror守护进程正在运行,replaying表示此镜像是从另一个存储集群复制的目标。
单向同步复制测试
在同一个client端服务器映射及挂载2个集群的rbd image, 在源集群site-a写入测试数据,手动触发快照,查看数据是否同步到目标集群site-b的同名池。
- 准备两个集群的conf,keyring文件
将cephadm shell 所在容器中/etc/ceph/下的conf,keyring文件复制到client服务器/etc/ceph目录并修改文件名字以示区别。
[ceph: root@ceph01 /]# ls -l /etc/ceph/
-rw------- 1 ceph ceph 323 Jan 27 05:48 ceph.conf
-rw------- 1 root root 151 Feb 7 02:35 ceph.keyring[root@cilent ~]# ll /etc/ceph/
-rw-r--r--. 1 root root 92 10月 18 2023 rbdmap
-rw-r--r-- 1 root root 186 2月 5 19:14 site-a.client.admin.keyring
-rw-r--r-- 1 root root 304 2月 5 19:13 site-a.conf
-rw-r--r-- 1 root root 186 2月 5 19:20 site-a.keyring
-rw-r--r-- 1 root root 186 2月 5 19:15 site-b.client.admin.keyring
-rw-r--r-- 1 root root 337 2月 5 19:13 site-b.conf
- 使用rbd map 映射源集群site-a中data/image到client本地dev设备
[root@cilent ~]# rbd map image1 --pool data -c /etc/ceph/site-a.conf -k /etc/ceph/site-a.client.admin.keyring
/dev/rbd0[root@cilent ~]# lsblk |grep rbd0
rbd0 252:0 0 1G 0 disk
- 将rbd0格式化并mount到目录
[root@cilent mnt]# mkfs.xfs /dev/rbd0
Discarding blocks...Done.
[root@cilent mnt]# mkdir site-a site-b
[root@cilent mnt]# ll
drwxr-xr-x 2 root root 4096 2月 7 11:41 site-a
drwxr-xr-x 2 root root 4096 2月 7 11:41 site-b
[root@cilent mnt]# mount /dev/rbd0 /mnt/site-a
[root@cilent mnt]# df -h |grep site-a
/dev/rbd0 1014M 40M 975M 4% /mnt/site-a
- 在挂载点/mnt/site-a 使用dd写入2个100M大小的测试文件
[root@cilent mnt]# dd if=/dev/zero of=/mnt/site-a/100M-$(date +%F_%H%M%S) bs=1M count=100
[root@cilent mnt]# tree
.
├── site-a
│ ├── 100M-2025-02-07_114953
│ └── 100M-2025-02-07_115007
└── site-b
在没同步前查看两个集群data pool的磁盘使用信息


- 在源集群site-a中手动为data/image1创建快照
[ceph: root@ceph01 /]# rbd mirror image snapshot data/image1
Snapshot ID: 4
- 在site-b集群查看同步信息已更新


- 在client服务器将site-a集群rbd image取消挂载,删除map映射,
[root@cilent mnt]# umount /mnt/site-a
[root@cilent mnt]# rbd unmap image1 --pool data -c /etc/ceph/site-a.conf -k /etc/ceph/site-a.client.admin.keyring[root@cilent mnt]# tree
.
├── site-a
└── site-b
- 在site-a集群将data/image1降级为非主image
[ceph: root@ceph01 /]# rbd mirror image demote data/image1
Image demoted to non-primary
在site-b集群将data/image1提升为主image
[ceph: root@ceph-a /]# rbd mirror image promote data/image1
Image promoted to primary
- site-b集群map映射及挂载rbd image并查看数据是否同步
[root@cilent mnt]# rbd map image1 --pool data -c /etc/ceph/site-b.conf -k /etc/ceph/site-b.client.admin.keyring/dev/rbd0[root@cilent mnt]# lsblk |grep rbd
rbd0 252:0 0 1G 0 disk
数据已同步
[root@cilent mnt]# mount /dev/rbd0 /mnt/site-b/
[root@cilent mnt]# tree
.
├── site-a
└── site-b├── 100M-2025-02-07_114953└── 100M-2025-02-07_115007
- 此时rab map不能映射site-a集群的data/image,因为已降级为非主,因只有主镜像有写权限,以避免数据冲突。

11. 在client服务器上取消挂载及site-b集群的data/image的映射。
[root@cilent mnt]# umount /mnt/site-b/
[root@cilent mnt]# rbd unmap image1 --pool data -c /etc/ceph/site-b.conf -k /etc/ceph/site-b.client.admin.keyring
- 在site-b集群将data/image降级为非主image
[ceph: root@ceph-a /]# rbd mirror image demote data/image1
Image demoted to non-primary
13.在site-a集群将data/image提升为主image
[ceph: root@ceph01 /]# rbd mirror image promote data/image1
Image promoted to primary
14.在site-b集群查看镜像同步状态,此时为split-brain(脑裂)状态

- 在site-b集群请求到site-a源镜像的重新同步
[ceph: root@ceph-a /]# rbd mirror image resync data/image1
Flagged image for resync from primary
Site-b同步状态过程如下:
[ceph: root@ceph-a /]# rbd mirror image status data/image1
rbd: error opening image image1: (2) No such file or directory[ceph: root@ceph-a /]# rbd mirror image status data/image1
image1:global_id: 6f6c3690-df01-49dd-9508-f7c944fbcd9astate: down+unknowndescription: status not foundlast_update:
此时恢复正常同步状态
[ceph: root@ceph-a /]# rbd mirror image status data/image1
image1:global_id: 6f6c3690-df01-49dd-9508-f7c944fbcd9astate: up+replayingdescription: replaying, {"bytes_per_second":10615398.4,"bytes_per_snapshot":106153984.0,"last_snapshot_bytes":0,"last_snapshot_sync_seconds":0,"local_snapshot_timestamp":1738909767,"remote_snapshot_timestamp":1738909767,"replay_state":"idle"}service: ceph-b.tglrho on ceph-blast_update: 2025-02-07 06:38:22
- 设置镜像快照定时策略
使用基于快照的镜像时,每当需要镜像 RBD 映像的更改内容时,都需要创建镜像快照。
默认情况下,每个image映像最多可创建5个快照。如果达到限制,则会自动删除最新的镜像快照。如果需要,可以通过配置选项覆盖该限制rbd_mirroring_max_mirroring_snapshots 。此外,当删除映像或禁用镜像时,会自动删除镜像快照。
可自定义了镜像快照计划,用于定期自动创建镜像快照。
镜像快照可以全局、按池或按映像级别进行安排。可以在任何级别定义多个镜像快照计划,但只有与单个镜像匹配的最具体的快照计划才会运行。
可以分别使用d、h、m、start-time后缀以天、小时或分钟为单位指定。
rbd mirror snapshot schedule add [--pool {pool-name}] [--image {image-name}] {interval} [{start-time}]
比如:在site-a集群中对data池下的image1制定每分钟创建1个快照的策略。
[ceph: root@ceph01 /]# rbd mirror snapshot schedule add --pool data --image image1 1m
[ceph: root@ceph01 /]# rbd mirror snapshot schedule ls --pool data --recursive
POOL NAMESPACE IMAGE SCHEDULE
data image1 every 1m
双向同步配置步骤
双向同步并非双向实时同步,只是在单向同步的基础上通过在源集群也部署rbd-mirror守护进程,在出现故障时,通过手动切换集群镜像的主辅角色,实现快速可以反向同步。

- 在两个ceph集群上登录到cephadm shell
[root@ceph01 ~]# cephadm shell
[root@ceph-a ~]# cephadm shell
- 在site-a集群中ceph02节点部署 rbd-mirror 守护进程
[ceph: root@ceph01 /]# ceph orch apply rbd-mirror ceph02
Scheduled rbd-mirror update...
在site-b集群中ceph-b节点部署 rbd-mirror 守护进程
[ceph: root@ceph-a /]# ceph orch apply rbd-mirror ceph-b
Scheduled rbd-mirror update...
查看守护进程是否正常启动
[ceph: root@ceph01 /]# ceph orch ls|grep rbd
rbd-mirror 1/1 8s ago 20s ceph02[ceph: root@ceph-a /]# ceph orch ls |grep rbd
rbd-mirror 1/1 14s ago 24s ceph-b
- 在源集群site-a新建1个存储池名为data,并启用 RBD 应用程序,在池data中创建1个名为image1的image
[ceph: root@ceph01 /]# ceph osd pool create data
pool 'data' created
[ceph: root@ceph01 /]# ceph osd pool application enable data rbd
enabled application 'rbd' on pool 'data'
[ceph: root@ceph01 /]# rbd create --size 1024 data/image1
查看创建的image的信息

- 在目标集群site-b新建1个同名存储池data,并启用 RBD 应用程序,不用创建image
[ceph: root@ceph-a /]# ceph osd pool create data
pool 'data' created
[ceph: root@ceph-a /]# ceph osd pool application enable data rbd
enabled application 'rbd' on pool 'data'
- 在site-a,site-b两个存储集群中选择 mirroring 模式为image
[ceph: root@ceph01 /]# rbd mirror pool enable data image
[ceph: root@ceph-a /]# rbd mirror pool enable data image
- 验证两个集群都已成功启用了镜像模式为pool
[ceph: root@ceph01 /]# rbd mirror pool info data
Mode: image
Site Name: 0978cb18-dc68-11ef-b0d7-000c29460ffd
Peer Sites: none [ceph: root@ceph-a /]# rbd mirror pool info data
Mode: image
Site Name: baedc6c0-e058-11ef-a23a-000c29cf8329
Peer Sites: none
- 在site-a集群创建 Ceph 用户帐户,并将存储集群对等注册到池,将 bootstrap 令牌文件复制到site-b存储集群。
[ceph: root@ceph01 /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a
- 在site-b集群中导入bootstrap令牌
[ceph: root@ceph-a /]# rbd mirror pool peer bootstrap import --site-name site-b data /root/bootstrap_token_site-a
- 在site-a集群 data池中为需要同步的image启用镜像快照同步功能
[ceph: root@ceph01 /]# rbd mirror image enable data/image1 snapshot
Mirroring enabled
- site-a集群验证镜像同步复制状态
[ceph: root@ceph01 /]# rbd mirror image status data/image1

up 表示 rbd-mirror 守护进程正在运行,stopped 意味着此镜像不是从另一个存储集群复制的目标。这是因为镜像是这个存储集群的主要部分
peer_sites 显示了对等节点(site-b)的状态为up+replaying
说明此时的同步方向为site-a site-b
- site-b集群验证镜像同步复制状态
[ceph: root@ceph-a /]# rbd mirror image status data/image1

如果镜像处于up+replaying状态,表示可以正常工作。up表示rbd-mirror守护进程正在运行,replaying表示此镜像是从另一个存储集群复制的目标。
peer_sites 显示了对等节点的状态为up+stopped
双向同步复制测试
- 在client服务器端映射site-a集群的data池的image1,格式化并mount到挂载点目录。
[root@cilent mnt]# rbd map image1 --pool data -c /etc/ceph/site-a.conf -k /etc/ceph/site-a.client.admin.keyring
/dev/rbd0
[root@cilent mnt]# mkfs.xfs /dev/rbd0
[root@cilent mnt]# mount /dev/rbd0 /mnt/site-a
- dd写入1个100M的文件进行测试
[root@cilent site-a]# dd if=/dev/zero of=100M-$(date +%F_%H%M%S) bs=1M count=100
[root@cilent site-a]# tree /mnt/
/mnt/
├── site-a
│ └── 100M-2025-02-07_174949
└── site-b
- site-a集群为data/image1手动创建快照,查看是否同步到site-b集群
[ceph: root@ceph01 /]# rbd mirror image snapshot data/image1
Snapshot ID: 4


[ceph: root@ceph01 /]# rbd mirror image status data/image1

(4)查看两个集群data/image1的信息
[ceph: root@ceph01 /]# rbd --image data/image1 info


- 模拟site-a集群故障,手动将site-a data/image1降级为非主image
[ceph: root@ceph01 /]# rbd mirror image demote data/image1
Image demoted to non-primary
此时site-a集群的date/image1高级特性自动被设置为non-primary

- 手动将site-b data/image1提升为主image,如果因为site-a集群已经宕机,降级无法传播到site-a存储集群,可以使用 --force 选项
[ceph: root@ceph-a /]# rbd mirror image promote data/image1
Image promoted to primary
此时site-b集群的date/image1高级特性non-primary被取消,允许客户端进行挂载写入数据。

- client服务器端取消site-a集群data/image1的挂载和映射,改为site-b集群data/image1的挂载和映射.
[root@cilent ~]# umount /mnt/site-a
[root@cilent ~]# rbd unmap image1 --pool data -c /etc/ceph/site-a.conf -k /etc/ceph/site-a.client.admin.keyring[root@cilent ~]# rbd map image1 --pool data -c /etc/ceph/site-b.conf -k /etc/ceph/site-b.client.admin.keyring
/dev/rbd0
[root@cilent ~]# mount /dev/rbd0 /mnt/site-b
查看之前的数据同步
[root@cilent ~]# tree /mnt/
/mnt/
├── site-a
└── site-b└── 100M-2025-02-07_174949
- 再查看2个集群的同步状态
site-a集群的因为也部署了rbd-mirror守护程序,data/image1在被降级为非主镜像后,自动与设置过对等关系的site-b集群进行同步(up+replaying)。

site-b集群的data/image1因为被提升为主镜像,所以其状态为up+stopped

- 在site-b集群的data/image1的挂载目录写入测试数据并手动创建快照,观察同步情况。
[root@cilent ~]# cd /mnt/site-b/
[root@cilent site-b]# dd if=/dev/zero of=100M-$(date +%F_%H%M%S) bs=1M count=100
[root@cilent site-b]# tree /mnt/
/mnt/
├── site-a
└── site-b├── 100M-2025-02-07_174949└── 100M-2025-02-07_183332[ceph: root@ceph-a /]# rbd mirror image snapshot data/image1
Snapshot ID: 7


- 如果site-b恢复正常,可以再将主镜像切换回来。
先降级site-b集群的data/image1
[ceph: root@ceph-a /]# rbd mirror image demote data/image1
Image demoted to non-primary
再提升site-a集群的data/image1
[ceph: root@ceph01 /]# rbd mirror image promote data/image1
Image promoted to primary
等待片刻,查看两集群同步状态已恢复原始状态。


(11) client服务器上重新挂载site-a集群的data/image1,并查看数据是否正常。
[root@cilent ~]# umount /mnt/site-b/
[root@cilent ~]# rbd unmap image1 --pool data -c /etc/ceph/site-b.conf -k /etc/ceph/site-b.client.admin.keyring[root@cilent ~]# rbd map image1 --pool data -c /etc/ceph/site-a.conf -k /etc/ceph/site-a.client.admin.keyring
/dev/rbd0[root@cilent ~]# rbd showmapped -c /etc/ceph/site-b.conf -k /etc/ceph/site-b.client.admin.keyring
id pool namespace image snap device
0 data image1 - /dev/rbd0[root@cilent ~]# mount /dev/rbd0 /mnt/site-b
[root@cilent ~]# tree /mnt/
/mnt/
├── site-a
└── site-b├── 100M-2025-02-07_174949└── 100M-2025-02-07_183332
相关文章:
Ceph异地数据同步之-RBD异地同步复制(上)
#作者:闫乾苓 文章目录 前言基于快照的模式(Snapshot-based Mode)工作原理单向同步配置步骤单向同步复制测试双向同步配置步骤双向同步复制测试 前言 Ceph的RBD(RADOS Block Device)支持在两个Ceph集群之间进行异步镜…...
【C++】STL库_stack_queue 的模拟实现
栈(Stack)、队列(Queue)是C STL中的经典容器适配器 容器适配器特性 不是独立容器,依赖底层容器(deque/vector/list)通过限制基础容器接口实现特定访问模式不支持迭代器操作(无法遍历…...
前端对接下载文件接口、对接dart app
嵌套在dart app里面的前端项目 1.前端调下载接口 ->后端返回 application/pdf格式的文件 ->前端将pdf处理为blob ->blob转base64 ->调用dart app的 sdk saveFile ->保存成功 async download() {try {// 调用封装的 downloadEContract 方法获取 Blob 数据const …...
一周学会Pandas2 Python数据处理与分析-编写Pandas2 HelloWord项目
锋哥原创的Pandas2 Python数据处理与分析 视频教程: 2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 我们首先准备一个excel文件,用来演示pandas操作数据集(数据的集合)。excel文件属于数据集的一种…...
【易订货-注册/登录安全分析报告】
前言 由于网站注册入口容易被机器执行自动化程序攻击,存在如下风险: 暴力破解密码,造成用户信息泄露,不符合国家等级保护的要求。短信盗刷带来的拒绝服务风险 ,造成用户无法登陆、注册,大量收到垃圾短信的…...
AI赋能股票:流通股本与总股本:定义、区别及投资意义解析
一、基本定义 总股本(Total Shares Outstanding) 指一家公司已发行的所有股票数量,包括流通股和非流通股(如限售股、员工持股计划股票等)。总股本反映公司的整体股权结构,是计算市值(总股本 股…...
如何在Windows上找到Python安装路径?两种方法快速定位
原文:如何在Windows上找到Python安装路径?两种方法快速定位 | w3cschool笔记 在 Windows 系统上找到 Python 的安装路径对于设置环境变量或排查问题非常重要。本文将介绍两种方法,帮助你找到 Python 的安装路径:一种是通过命令提…...
第五课:高清修复和放大算法
文章目录 Part.01 高清修复(Hi-Res Fix)Part.02 SD放大(SD Upscale)Part.03 附加功能放大Part.01 高清修复(Hi-Res Fix) 文生图中的高清修复/高分辨率修复/超分辨率修复先低分辨率抽卡,再高分辨率修复。不能突破显存限制放大重绘幅度安全范围是0.3-0.5,如果想让AI更有想象力0…...
lvgl避坑记录
一、log调试 #if LV_USE_LOG && LV_LOG_LEVEL > LV_LOG_LEVEL_INFOswitch(src_type) {case LV_IMG_SRC_FILE:LV_LOG_TRACE("lv_img_set_src: LV_IMG_SRC_FILE type found");break;case LV_IMG_SRC_VARIABLE:LV_LOG_TRACE("lv_img_set_src: LV_IMG_S…...
Java 8 的流(Stream API)简介
Java 8 引入的 Stream API 是一个强大的工具,用于处理集合(如 List、Set)中的元素。它支持各种操作,包括过滤、排序、映射等,并且能够以声明式的方式表达复杂的查询操作。流操作可以是中间操作(返回流以便进…...
液态神经网络技术指南
一、引言 1.从传统神经网络到液态神经网络 神经网络作为深度学习的核心工具,在图像识别、自然语言处理、推荐系统等领域取得了巨大成功。尤其是卷积神经网络(CNN)、循环神经网络(RNN)、长短期记忆网络(LS…...
element-plus中,表单校验的使用
目录 一.案例1:给下面的表单添加校验 1.目的要求 2.步骤 ①给需要校验的el-form-item项,添加prop属性 ②定义一个表单校验对象,里面存放了每一个prop的检验规则 ③给el-form组件,添加:rules属性 ④给el-form组件࿰…...
PyTorch复现线性模型
【前言】 本专题为PyTorch专栏。从本专题开始,我将通过使用PyTorch编写基础神经网络,带领大家学习PyTorch。并顺便带领大家复习以下深度学习的知识。希望大家通过本专栏学习,更进一步了解人更智能这个领域。 材料来源:2.线性模型_…...
Kafka+Zookeeper从docker部署到spring boot使用完整教程
文章目录 一、Kafka1.Kafka核心介绍:核心架构核心特性典型应用 2.Kafka对 ZooKeeper 的依赖:3.去 ZooKeeper 的演进之路:注:(本文采用ZooKeeper3.8 Kafka2.8.1) 二、Zookeeper1.核心架构与特性2.典型…...
RK3568驱动 SPI主/从 配置
一、SPI 控制器基础配置(先说主的配置,后面说从的配置) RK3568 集成高性能 SPI 控制器,支持主从双模式,最高传输速率 50MHz。设备树配置文件路径通常为K3568/rk356x_linux_release_v1.3.1_20221120/kernel/arch/arm64/boot/dts/rockchip。 …...
【全队项目】智能学术海报生成系统PosterGenius--风格个性化调整
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏🏀大模型实战训练营 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 1.前言 PosterGenius致力于开发一套依托DeepSeek…...
【系统移植】(六)第三方驱动移植
【系统移植】(六)第三方驱动移植 文章目录 【系统移植】(六)第三方驱动移植1.编译驱动进内核方法一:编译makefile方法二:编译kconfig方法三:编译成模块 2.字符设备框架 编译驱动进内核a. 选择驱…...
STM32实现一个简单电灯
新建工程的步骤 建立工程文件夹,Keil中新建工程,选择型号工程文件夹里建立Start、Library、User等文件夹,复制固件库里面的文件到工程文件夹工程里对应建立Start、Library、User等同名称的分组,然后将文件夹内的文件添加到工程分组…...
【shiro】shiro反序列化漏洞综合利用工具v2.2(下载、安装、使用)
1 工具下载 shiro反序列化漏洞综合利用工具v2.2下载: 链接:https://pan.baidu.com/s/1kvQEMrMP-PZ4K1eGwAP0_Q?pwdzbgp 提取码:zbgp其他工具下载: 除了该工具之外,github上还有其他大佬贡献的各种工具,有…...
vue进度条组件
<div class"global-mask" v-if"isProgress"><div class"contentBox"><div class"progresstitie">数据加载中请稍后</div><el-progress class"progressStyle" :color"customColor" tex…...
【C++游戏引擎开发】《线性代数》(2):矩阵加减法与SIMD集成
一、矩阵加减法数学原理 1.1 定义 逐元素操作:运算仅针对相同位置的元素,不涉及矩阵乘法或行列变换。交换律与结合律: 加法满足交换律(A + B = B + A)和结合律( ( A + B ) + C = A + ( B + C ) )。 减法不满足交换律(A − B ≠ B − A)。1.2 公式 C i j = …...
UE5Actor模块源码深度剖析:从核心架构到实践应用
UE5 Actor模块源码深度剖析:从核心架构到实践应用 a. UE5 Actor模块架构概述 在UE5引擎中,Actor扮演着至关重要的角色,它是整个游戏世界中各类可交互对象的基础抽象。从本质上来说,所有能够被放置到关卡中的对象都属于Actor的范畴,像摄像机、静态网格体以及玩家起始位置…...
【3.软件工程】3.6 W开发模型
W模型全解析:开发与测试并行的质量保障框架 ⚡ 一、W模型核心流程图 #mermaid-svg-YfU8WQvqa6iDUKz3 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-YfU8WQvqa6iDUKz3 .error-icon{fill:#552222;}#merm…...
基于大模型的主动脉瓣病变预测及治疗方案研究报告
目录 一、引言 1.1 研究背景 1.2 研究目的 1.3 研究意义 二、大模型预测主动脉瓣病变原理 2.1 大模型介绍 2.2 数据收集与处理 2.3 模型训练与优化 三、术前预测与评估 3.1 主动脉瓣病变类型及程度预测 3.2 患者整体状况评估 3.3 手术风险预测 四、术中应用与监测…...
CSRF跨站请求伪造——入门篇【DVWA靶场low级别writeup】
CSRF跨站请求伪造——入门篇 0. 前言1. 什么是CSRF2. 一次完整的CSRF攻击 0. 前言 本文将带你实现一次完整的CSRF攻击,内容较为基础。需要你掌握的基础知识有: 了解cookie;已经安装了DVWA的靶场环境(本地的或云的)&am…...
拦截、限流,针对场景详细信息(一)
以下是一个基于Java Spring Boot Redis 的完整限流实现案例,针对同一接口前缀(如 /one/ )的IP访问频率控制: 场景:用户不用登录即可访问接口,网站会有被攻击的风险 URL:one/two/three one/…...
Qt基础:主界面窗口类QMainWindow
QMainWindow 1. QMainWindow1.1 菜单栏添加菜单项菜单项信号槽 1.2 工具栏添加工具按钮工具栏的属性设置 1.3 状态栏1.4 停靠窗口(Dock widget) 1. QMainWindow QMainWindow是标准基础窗口中结构最复杂的窗口, 其组成如下: 提供了菜单栏, 工具栏, 状态…...
第十四届蓝桥杯大赛软件赛省赛Python 研究生组:4.互质数的个数
题目1 互质数的个数 给定 a,b,求 1≤x<ab 中有多少个 x 与 ab 互质。 由于答案可能很大,你只需要输出答案对 998244353 取模的结果。 输入格式 输入一行包含两个整数分别表示 a,b,用一个空格分隔。 输出格式 输出一行包含一个整数表…...
32f4,usart2fifo,2025
usart2fifo.h #ifndef __USART2FIFO_H #define __USART2FIFO_H#include "stdio.h" #include "stm32f4xx_conf.h" #include "sys.h" #include "fifo_usart2.h"//extern u8 RXD2_TimeOut;//超时检测//extern u8 Timer6_1ms_flag;exte…...
激光模拟单粒子效应试验如何验证CANFD芯片的辐照阈值?
在现代航天电子系统中,CANFD(Controller Area Network with Flexible Data-rate)芯片作为关键的通信接口元件,其可靠性与抗辐射性能直接关系到整个系统的稳定运行。由于宇宙空间中存在的高能粒子辐射,芯片可能遭受单粒…...
