当前位置: 首页 > news >正文

Ceph异地数据同步之-Cephfs异地同步复制

#作者:闫乾苓

文章目录

  • 1.核心原理
  • 2.部署步骤
  • 3.cephfs同步测试
  • 4.查看cephfs文件同步状态
  • 5.优化cephfs文件系统同步的时间间隔

1.核心原理

Cephfs异地同步基于CephFS-mirror,其工作原理是基于CephFS的快照功能和cephfs-mirror工具的异步复制机制。它通过将本地CephFS文件系统的快照异步复制到远程CephFS文件系统,实现了数据的异地备份和容灾。同时,通过增量复制和并发同步等技术手段,提高了同步效率和可用性。

本章节后续具体部署、测试步骤均基于以下2个ceph集群进行:

ceph集群site-a(源集群):
节点hostname	IP
ceph01	192.168.61.11
ceph02	192.168.61.12
ceph03	192.168.61.13ceph集群site-b(目标集群):
节点hostname	IP
ceph-a	192.168.61.31
ceph-b	192.168.61.32
ceph-c	192.168.61.33

2.部署步骤

(1).在源存储集群中,创建cephfs文件系统

登录到 Cephadm shell:
[root@ceph01 ~]# cephadm shell
创建cephfs文件系统cephfs_s,并创建子卷cephfs_s_subvol_1(因为子卷才能创建快照)
[ceph: root@ceph01 /]# ceph fs volume create cephfs_s
[ceph: root@ceph01 /]# ceph fs subvolume create cephfs_s cephfs_s_subvol_1 

(2).在源存储集群中,部署 CephFS 镜像守护进程:

[ceph: root@ceph01 /]# ceph orch apply cephfs-mirror ceph01
Scheduled cephfs-mirror update...

可选:部署多个 CephFS 镜像守护进程并实现高可用性

ceph orch apply cephfs-mirror --placement="3 host1 host2 host3"

(3).在目标存储集群中创建目标文件系统

登录到 Cephadm shell:
[root@ceph-a ~]# cephadm shell[ceph: root@ceph-a /]# ceph fs volume create cephfs_bak
[ceph: root@ceph-a /]# ceph fs subvolume create cephfs_bak cephfs_bak_subvol_1 

(4).在目标存储集群中,为每个 CephFS 对等文件系统创建一个用户:

[ceph: root@ceph-a /]#  ceph fs authorize cephfs_bak client.mirror / rwps
[client.mirror]key = AQCue6BnZ+ZqKRAASrc1YhuWa7uJDhXEINu4Og==caps mds = "allow rwps fsname=cephfs_bak"caps mon = "allow r fsname=cephfs_bak"caps osd = "allow rw tag cephfs data=cephfs_bak"

(5).在源存储集群中,启用 CephFS 镜像模块:

[ceph: root@ceph01 /]# ceph mgr module enable mirroring
module 'mirroring' is already enabled

(6).在源存储集群中,在 Ceph 文件系统上启用镜像功能:

[ceph: root@ceph01 /]# ceph fs snapshot mirror enable cephfs_s
{}

可选:禁用快照镜像:

ceph fs snapshot mirror disable cephfs

(7).在目标节点上,启用 mirroring Ceph Manager 模块

[ceph: root@ceph-a /]# ceph mgr module enable mirroring

(8).在同一个目标节点上,创建 peer bootstrap

remote-site 是用户定义的字符串,用于识别目标存储集群。
在双引号之间复制令牌字符串,以便在下一步中使用。
[ceph: root@ceph-a /]# ceph fs snapshot mirror peer_bootstrap create cephfs_bak client.mirror remote-site
{"token": "eyJmc2lkIjogImJhZWRjNmMwLWUwNTgtMTFlZi1hMjNhLTAwMGMyOWNmODMyOSIsICJmaWxlc3lzdGVtIjogImNlcGhmc19iYWsiLCAidXNlciI6ICJjbGllbnQubWlycm9yIiwgInNpdGVfbmFtZSI6ICJyZW1vdGUtc2l0ZSIsICJrZXkiOiAiQVFDdWU2Qm5aK1pxS1JBQVNyYzFZaHVXYTd1SkRoWEVJTnU0T2c9PSIsICJtb25faG9zdCI6ICJbdjI6MTkyLjE2OC42MS4zMTozMzAwLzAsdjE6MTkyLjE2OC42MS4zMTo2Nzg5LzBdIFt2MjoxOTIuMTY4LjYxLjMyOjMzMDAvMCx2MToxOTIuMTY4LjYxLjMyOjY3ODkvMF0gW3YyOjE5Mi4xNjguNjEuMzM6MzMwMC8wLHYxOjE5Mi4xNjguNjEuMzM6Njc4OS8wXSJ9"}

(9).在源存储集群中,从目标存储集群导入 bootstrap 令牌:

[ceph: root@ceph01 /]# ceph fs snapshot mirror peer_bootstrap import cephfs_s eyJmc2lkIjogImJhZWRjNmMwLWUwNTgtMTFlZi1hMjNhLTAwMGMyOWNmODMyOSIsICJmaWxlc3lzdGVtIjogImNlcGhmc19iYWsiLCAidXNlciI6ICJjbGllbnQubWlycm9yIiwgInNpdGVfbmFtZSI6ICJyZW1vdGUtc2l0ZSIsICJrZXkiOiAiQVFDdWU2Qm5aK1pxS1JBQVNyYzFZaHVXYTd1SkRoWEVJTnU0T2c9PSIsICJtb25faG9zdCI6ICJbdjI6MTkyLjE2OC42MS4zMTozMzAwLzAsdjE6MTkyLjE2OC42MS4zMTo2Nzg5LzBdIFt2MjoxOTIuMTY4LjYxLjMyOjMzMDAvMCx2MToxOTIuMTY4LjYxLjMyOjY3ODkvMF0gW3YyOjE5Mi4xNjguNjEuMzM6MzMwMC8wLHYxOjE5Mi4xNjguNjEuMzM6Njc4OS8wXSJ9
{}

(10).在源存储集群中,列出 CephFS 镜像对等点:

[ceph: root@ceph01 /]# ceph fs snapshot mirror peer_list cephfs_s|jq
{"827caf22-d004-481d-bf6c-4cfd3765e35a": {"client_name": "client.mirror","site_name": "remote-site","fs_name": "cephfs_bak"}
}

可选:删除快照对等点:

ceph fs snapshot mirror peer_remove FILE_SYSTEM_NAME PEER_UUID

(11).在源存储集群中,为快照镜像配置目录:

[ceph: root@ceph01 /]# ceph fs snapshot mirror add cephfs_s /volumes/_nogroup/cephfs_s_subvol_1
{}

可选:停止目录的快照镜像:

ceph fs snapshot mirror remove FILE_SYSTEM_NAME PATH

3.cephfs同步测试

准备1台客户端主机,用户挂载源集群和目的集群的文件系统并查看镜像测试
查看源集群admin的keyring

[ceph: root@ceph01 /]# grep key /etc/ceph/ceph.keyring key = AQDsDJdnNm99KxAAzRBeGalZmX/8fgpcBiBCgA==

将源集群key写入到客户端主机配置文件

cat > /etc/ceph/ceph01.admin.secret <<EOF
AQDsDJdnNm99KxAAzRBeGalZmX/8fgpcBiBCgA==
EOF

查看目标集群admin的keyring

[ceph: root@ceph-a /]# grep key /etc/ceph/ceph.keyring key = AQCHqZ1nT1eEBBAAdW6WvPygeF2MjU7olkkjrQ==

将目标集群key写入到客户端主机配置文件

cat > /etc/ceph/ceph-a.admin.secret <<EOF
AQCHqZ1nT1eEBBAAdW6WvPygeF2MjU7olkkjrQ==
EOF

在客户端主机创建两个用于挂载源,目标集群cephfs文件系统的目录

[root@cilent ~]# mkdir /mnt/{ceph01,ceph-a}
[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
└── ceph-a

客户端主机安装ceph-common

[root@cilent ~]# yum install ceph-common

分别挂载源、目标文件系统挂载到创建的目录

[root@cilent ~]# mount -t ceph 192.168.61.11:6789:/ /mnt/ceph01 -o name=admin,secretfile=/etc/ceph/ceph01.admin.secret 
[root@cilent ~]# mount -t ceph 192.168.61.31:6789:/ /mnt/ceph-a -o name=admin,secretfile=/etc/ceph/ceph-a.admin.secret 
[root@cilent ~]# df -h |grep ceph
192.168.61.11:6789:/      475G     0  475G    0% /mnt/ceph01
192.168.61.31:6789:/      475G     0  475G    0% /mnt/ceph-a

查看源、目标集群的镜像同步:

[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
│   └── volumes
│       ├── _:cephfs_s_subvol_1.meta
│       └── _nogroup
│           └── cephfs_s_subvol_1
│               └── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
└── ceph-a└── volumes└── _nogroup└── cephfs_s_subvol_19 directories, 1 file

在源集群文件系统子卷创建2个测试文件

[root@cilent ~]# cd /mnt/ceph01/volumes/_nogroup/cephfs_s_subvol_1/316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
[root@cilent 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1]# dd if=/dev/zero of=test100M-1 bs=1M count=100
[root@cilent 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1]# dd if=/dev/zero of=test100M-2 bs=1M count=100
[root@cilent 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1]# ll
总用量 204800
-rw-r--r--. 1 root root 104857600  2月  3 16:47 test100M-1
-rw-r--r--. 1 root root 104857600  2月  3 16:47 test100M-2

cephfs快照默认1小时创建1个,创建快照后,将快照同步到目标集群,刚在源集群创建了2个测试文件,因未到1小时,快照为创建,所有测试文件未同步。

[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
│   └── volumes
│       ├── _:cephfs_s_subvol_1.meta
│       └── _nogroup
│           └── cephfs_s_subvol_1
│               └── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
│                   ├── test100M-1
│                   └── test100M-2
└── ceph-a
└── volumes
└── _nogroup
└── cephfs_s_subvol_1
9 directories, 3 files

可以等1小时后自动触发镜像同步,也可以手动创建快照,手动同步以便检验镜像同步效果。
在源集群为文件系统ceph-s手动创建快照

[ceph: root@ceph01 /]# ceph fs subvolume snapshot create cephfs_s cephfs_s_subvol_1 snapshot_1

在客户端再此查看测试文件是否已经同步到目标集群

[root@cilent ~]# tree /mnt/
/mnt/
├── ceph01
│   └── volumes
│       ├── _:cephfs_s_subvol_1.meta
│       └── _nogroup
│           └── cephfs_s_subvol_1
│               └── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1
│                   ├── test100M-1
│                   └── test100M-2
└── ceph-a└── volumes└── _nogroup└── cephfs_s_subvol_1└── 316d3b1c-b767-425e-81ec-6ed5cf0fe7e1├── test100M-1└── test100M-210 directories, 5 files

4.查看cephfs文件同步状态

检查 cephfs-mirror守护进程状态

[ceph: root@ceph01 /]# ceph fs snapshot mirror daemon status|jq
[{"daemon_id": 54168,"filesystems": [{"filesystem_id": 1,"name": "cephfs_s","directory_count": 1,"peers": [{"uuid": "827caf22-d004-481d-bf6c-4cfd3765e35a","remote": {"client_name": "client.mirror","cluster_name": "remote-site","fs_name": "cephfs_bak"},"stats": {"failure_count": 0,"recovery_count": 0}}]}]}
]

如需更多信息,请使用 admin 套接字接口,如下所述。
在运行 CephFS 镜像守护进程的节点上查找 Ceph 文件系统 ID:
本例中的 Ceph 文件系统 ID 是 cephfs_s@1

[ceph: root@ceph01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.cephfs-mirror.ceph01.lieebi.7.94310288324944.asok help|grep @"fs mirror peer status cephfs_s@1 827caf22-d004-481d-bf6c-4cfd3765e35a": "get peer mirror status","fs mirror status cephfs_s@1": "get filesystem mirror status",

查看镜像状态

827caf22-d004-481d-bf6c-4cfd3765e35a 这是唯一的对等 UUID
[ceph: root@ceph01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.cephfs-mirror.ceph01.lieebi.7.94310288324944.asok fs mirror status cephfs_s@1                                     
{"rados_inst": "192.168.61.11:0/877331395","peers": {"827caf22-d004-481d-bf6c-4cfd3765e35a": {"remote": {"client_name": "client.mirror","cluster_name": "remote-site","fs_name": "cephfs_bak"}}},"snap_dirs": {"dir_count": 1}
}

查看对等状态:

[ceph: root@ceph01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.cephfs-mirror.ceph01.lieebi.7.94310288324944.asok fs mirror peer status cephfs_s@1 827caf22-d004-481d-bf6c-4cfd3765e35a
{"/volumes/_nogroup/cephfs_s_subvol_1": {"state": "idle","last_synced_snap": {"id": 4,"name": "snapshot_3","sync_duration": 1.645025513,"sync_time_stamp": "5004.206685s"},"snaps_synced": 3,"snaps_deleted": 0,"snaps_renamed": 0}
}

state 可以是以下三个值之一:

  • idle 表示目录当前没有同步。
  • syncing 意味着目录当前正在同步。
  • failed 表示目录连续失败已达到上限。
    默认连续故障数为 10,默认重试间隔为 60 秒。

显示 cephfs-mirror 守护进程映射到的目录:

[ceph: root@ceph01 /]# ceph fs snapshot mirror dirmap cephfs_s /volumes/_nogroup/cephfs_s_subvol_1
{"instance_id": "54261","last_shuffled": 1738571008.0191686,"state": "mapped"
}

5.优化cephfs文件系统同步的时间间隔

在源集群ceph01节点编写在cephadm shell中创建快照的脚本,后续可通过配置crontab定时任务,定时执行此脚本,从而缩短cephfs文件系统镜像同步的时间间隔(可规避cephfs快照默认最短间隔1小时的配置)

#!/bin/bash
CEPH_FSID="0978cb18-dc68-11ef-b0d7-000c29460ffd"
CEPH_CONFIG_PATH="/var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/mon.ceph01/config"cephadm shell \--fsid ${CEPH_FSID} \-c ${CEPH_CONFIG_PATH} \ceph fs subvolume snapshot create cephfs_s cephfs_s_subvol_1 snapshot_$(date +%Y%m%d_%H%M%S)

相关文章:

Ceph异地数据同步之-Cephfs异地同步复制

#作者&#xff1a;闫乾苓 文章目录 1.核心原理2.部署步骤3.cephfs同步测试4.查看cephfs文件同步状态5.优化cephfs文件系统同步的时间间隔 1.核心原理 Cephfs异地同步基于CephFS-mirror&#xff0c;其工作原理是基于CephFS的快照功能和cephfs-mirror工具的异步复制机制。它通过…...

大数据专业学习路线

大数据专业学习路线 目录 基础知识核心技术进阶技能实战项目职业发展学习资源学习计划常见问题 1. 基础知识 1.1 编程语言 Python&#xff1a;大数据分析的基础语言 基础语法和数据类型函数和模块面向对象编程文件操作和异常处理常用库&#xff1a;NumPy, Pandas, Matplot…...

每日文献(十)——Part two

今天从第四部分 级联RCNN开始介绍。 目录 四、级联RCNN 4.1 级联边界框回归 4.2 级联检测 五、实验结果 5.1 实现细节 5.1.1 基准工作 5.2 质量不匹配 5.3 与迭代bbox和积分损失的比较 5.4 消融实验 5.5 与最先进的方法对比 5.6 泛化能力 5.7 PASCAL VOC数据集结果…...

8.3.1 MenuStrip(菜单)控件

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的 MenuStrip控件提供了程序窗体的主菜单&#xff0c;即显示于窗体顶端部分的菜单。 MenuStrip常用属性&#xff1a; ImageScalingSize…...

仿真每日一练 | ABAQUS子程序DLOAD

ABAQUS中用户子程序DLOAD可用于定义分布载荷幅值随坐标、时间、单元编号、积分点编号等的变化&#xff0c;该功能主要应用于定义复杂的载荷工况&#xff0c;今天给大家举一个简单的例子介绍其使用方式&#xff1a; 图1 模型认识 回顾一下ABAQUS的有限元分析流程&#xff1a; 图…...

Kubernetes(k8s)-备份Etcd介绍

作者介绍&#xff1a;简历上没有一个精通的运维工程师。请点击上方的蓝色《运维小路》关注我&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们上一章介绍了Docker基本情况&#xff0c;目前在规模较大的容器集群基本都是Kubernetes&#xff0c;但是K…...

[leetcode]求最大公约数和最小公倍数(gcd和lcm算法)

求最大公约数和最小公倍数 Coding : 使用C的库 #include<iostream> #include<algorithm> using namespace std; int main() { int a, b; cout << "cin a and b of gcd : "; cin >> a >> b; int res __gcd(a, b);…...

B-tree 的原理源码分析及应用场景等

B-tree&#xff08;B树&#xff09;是一种自平衡的多路搜索树&#xff0c;广泛用于文件系统、数据库索引、键值存储系统等对大规模数据的高效插入、查找和删除有高要求的场景。相比于二叉搜索树&#xff08;BST&#xff09;&#xff0c;B-tree 可以减少磁盘I/O次数&#xff0c;…...

MySQL 中的聚簇索引和非聚簇索引有什么区别?

MySQL 中的聚簇索引和非聚簇索引有什么区别&#xff1f; 1. 从不同存储引擎去考虑 在MySIAM存储引擎中&#xff0c;索引和数据是分开存储的&#xff0c;包括主键索引在内的所有索引都是“非聚簇”的&#xff0c;每个索引的叶子节点存储的是数据记录的物理地址&#xff08;指针…...

重构居家养老安全网:从 “被动响应” 到 “主动守护”

随着全球老龄化加剧&#xff0c;居家养老安全成为社会关注的核心议题。 传统养老模式依赖人工巡检或单一传感器&#xff0c;存在响应滞后、隐私泄露、场景覆盖不足等问题。 由此智绅科技应运而生&#xff0c;七彩喜智慧养老系统构筑居家养老安全网。 而物联网&#xff08;Io…...

从静态绑定驱动模型到现代设备模型 —— 一次驱动架构的进化之旅

&#x1f50d; B站相应的视屏教程&#xff1a; &#x1f4cc; 内核&#xff1a;博文视频 - 从静态绑定驱动模型到现代设备模型 在 Linux 内核的发展历程中&#xff0c;设备驱动结构经历了从"硬编码 手动注册"的早期实现方式&#xff0c;到"设备模型统一管理&qu…...

MySQL学习笔记十五

第十七章组合查询 17.1组合查询 MySQL允许执行多个查询&#xff08;多条SELECT语句&#xff09;&#xff0c;并将结果作为单个查询结果集返回。这些组合查询通常称为并&#xff08;union&#xff09;或复合查询&#xff08;compound query&#xff09;。 以下几种情况需要使…...

NLP基础知识 与 词向量的转化方法 发展

目录 1.NLP 基础知识点 为什么需要自然语言处理? 自然语言处理有哪些分类? 自然语言处理有哪些实际应用? 为什么需要自然语言处理? 自然语言处理有哪些分类? 自然语言处理有哪些实际应用? 自然语言处理的技术/工作原理是什么? 2.NLP文本转化为词向量的方法 2…...

VectorBT量化入门系列:第四章 高级策略开发与优化

VectorBT量化入门系列&#xff1a;第四章 高级策略开发与优化 本教程专为中高级开发者设计&#xff0c;系统讲解VectorBT技术在量化交易中的应用。通过结合Tushare数据源和TA-Lib技术指标&#xff0c;深度探索策略开发、回测优化与风险评估的核心方法。从数据获取到策略部署&am…...

JVM虚拟机篇(七):JVM垃圾回收器全面解析与G1深度探秘及四种引用详解

JVM垃圾回收器全面解析与G1深度探秘及四种引用详解 JVM虚拟机&#xff08;七&#xff09;&#xff1a;JVM垃圾回收器全面解析与G1深度探秘及四种引用详解一、JVM有哪些垃圾回收器1. Serial回收器2. ParNew回收器3. Parallel Scavenge回收器4. Serial Old回收器5. Parallel Old回…...

【蓝桥杯】15届JAVA研究生组F回文字符串

一、思路 1.这题去年考的时候想的是使用全排列进行尝试&#xff0c;实际不用这么麻烦&#xff0c;只用找到第一个和最后一个非特殊字符串的位置&#xff0c;然后分别向内检查是否对称&#xff0c;向外检查是否对称直到左指针小于0(可以通过添加使其对称) 2.至于如何找到第一个…...

TDengine 语言连接器(Python )

简介 taospy 是 TDengine 数据库面向 Python 语言提供的官方连接器&#xff0c;连接器对外提供对数据库写入、查询、订阅等多种访问接口。 安装连接器命令如下&#xff1a; # 原生连接和 REST 连接 pip3 install taospy# WebSocket 连接&#xff0c;可选装 pip3 install tao…...

Android compose源码浅析——Modifier

Modifier浅析 Modifier的使用foldOutfoldInanyall总结Modifier的使用 先来一段代码1: @Preview(showBackground = true) @Composable fun GreetingPreview() {ComposeTestTheme {Box(modifier = Modifier.size(DpSize(Dp(100f),Dp(100f))).padding(Dp(10f)).background(Colo…...

基于机器视觉的多孔零件边缘缺陷检测(源码C++、opencv、凸包、凸缺陷检测)

&#x1f451;主页&#xff1a;吾名招财 &#x1f453;简介&#xff1a;工科学硕&#xff0c;研究方向机器视觉&#xff0c;爱好较广泛… ​&#x1f4ab;签名&#xff1a;面朝大海&#xff0c;春暖花开&#xff01; 基于机器视觉的多孔零件边缘缺陷检测&#xff08;源码C、ope…...

JAVAWeb_Servlet:前置准备与理论简易介绍

要写JAVA_Web&#xff1a;首先就得建个项目——如何在Eclipse新建一个Web项目-CSDN博客 然后我们考虑具体的代码细节&#xff08;接下来就是我们的前置准备&#xff09; 一、导包&#xff1a; 在 Eclipse 中&#xff0c;如果需要快速导入缺失的包&#xff08;例如&#xff0…...

反射 tcp

反射 临时越过权限 获取成员变量1并进行修改 成员方法 TCP客户端...

UML综合实验四

1. 计算机包含内存(RAM)、CPU等硬件设备&#xff0c;根据下面的“产品等级结构-产品族”示意图&#xff0c;使用抽象工厂模式实现计算机设备创建过程并绘制相应的类图。 2. 电脑组装工厂可以将CPU、内存、硬盘、主机、显示器等硬件设备组装在一起构成一台完整的电脑&#xff0c…...

<《AI大模型应知应会100篇》第8篇:大模型的知识获取方式及其局限性

第8篇&#xff1a;大模型的知识获取方式及其局限性 摘要 大模型&#xff08;如GPT、BERT、Qwen、DeepSeek等&#xff09;凭借其卓越的自然语言处理能力&#xff0c;已经成为人工智能领域的明星。然而&#xff0c;这些模型“知道”什么&#xff1f;它们如何获取知识&#xff1f…...

【回眸】Linux 内核 (十六) 之 多线程编程 下

前言 前面介绍了互斥锁&#xff0c;本篇博文介绍死锁及其他多线程遇到的情况。 什么情况会造成死锁 死锁指的是两个或两个以上的运算单元&#xff08;进程、线程或协程&#xff09;&#xff0c;互相持有对方所需的资源&#xff0c;导致它们都无法向前推进&#xff0c;从而导…...

学习笔记083——Java Stream API

文章目录 1、过滤数据 filter()2、转换元素 map()3、排序 sorted()3.1、自定义排序规则 4、去重 distinct()5、限制元素数量 limit()6、收集结果 collect()6.1、收集为List6.2、收集为Set6.3、转为Map6.4、基本用法&#xff08;注意键冲突会抛异常&#xff09;6.5、处理键冲突&…...

逍遥模拟器ARM过检测技术全解析

逍遥模拟器ARM框架安装magisk和修改设备型号隐藏应用隐藏root过检测 逍遥模拟器ARMmagisk改设备型号隐藏应用隐藏root 引言 逍遥模拟器以其出色的性能和丰富的功能&#xff0c;深受广大用户喜爱&#xff0c;让用户能在电脑上轻松运行各类安卓应用和游戏。然而&#xff0c;为保…...

Easysearch VS Opensearch 数据写入与存储性能对比

本文记录 Easysearch 和 Opensearch 数据写入和数据存储方面的性能对比。 准备 压测工具&#xff1a;INFINI Loadgen 对比版本&#xff1a; Easysearch 1.11.1&#xff08;lucene 8.11.4&#xff09;Opensearch 2.19.1&#xff08;lucene 9.12.1&#xff09; 节点 JVM 配置…...

C++中STL学习(一)——向量、栈、堆、集合

#include “bits/stdc.h” using namespace std; int main() { // -------------------- 1、向量vector&#xff1a;可以替换数组&#xff0c;不需要事先指定长度 // ------------------------- vector arr; // 构建int数组 vector arr1(100); // 构建初始长度100的int向量 ve…...

柑橘病虫害图像分类数据集OrangeFruitDataset-8600

文章目录 1. 前言2. 数据类别介绍3. 数据集地址 1. 前言 柑橘&#xff0c;作为水果界的 “宠儿”&#xff0c;不仅以其酸甜可口的味道深受大众喜爱&#xff0c;更是在全球水果产业中占据着举足轻重的地位。无论是早餐中的一杯橙汁&#xff0c;还是下午茶里的柑橘甜点&#xff…...

leetcode刷题-单调栈

代码随想录单调栈|739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II、42. 接雨水、84.柱状图中最大的矩形 739. 每日温度496.下一个更大元素 I503.下一个更大元素II42. 接雨水 -- 面试常考题84.柱状图中最大的矩形 739. 每日温度 leetcode题目链接 代码随想录文档讲…...

【设计模式】访问者模式

**简介 假设你有一个购物车&#xff08;对象结构&#xff09;&#xff0c;里面有多种商品&#xff08;元素&#xff09;&#xff0c;如苹果、牛奶、书籍。每个商品的计价规则不同&#xff1a; 水果按重量计价牛奶按数量计价书籍按固定价格计价 现在需要实现两种功能&#xff1…...

【ISP】ISP pipeline(AI)

ISP Pipeline 全流程概览 ISP&#xff08;Image Signal Processing&#xff0c;图像信号处理&#xff09;流程通常从原始 Bayer 数据出发&#xff0c;经过一系列模块处理&#xff0c;逐步完成图像校正和增强&#xff0c;最终生成用于显示或编码的标准图像。常见处理模块包括&a…...

【设计模式】模板模式

简介 假设你要冲泡咖啡和茶&#xff0c;两者的流程相似但部分步骤不同&#xff1a; 烧水&#xff08;公共步骤&#xff09;加入主材料&#xff08;咖啡粉/茶叶&#xff09;添加调料&#xff08;糖/牛奶&#xff09;→ 可选步骤倒进杯子&#xff08;公共步骤&#xff09; 模板…...

GDB调试程序的基本命令和用法(Qt程序为例)

1. 引言 GDB&#xff08;GNU Debugger&#xff09;是一个强大的命令行调试工具&#xff0c;它可以帮助开发者在程序运行时查找和修复错误。当调试Qt程序时&#xff0c;GDB同样适用&#xff0c;并且能够帮助开发者定位诸如数组越界挂死等复杂问题。 2. 基本命令 2.1 启动GDB …...

vue3腾讯云直播 前端推流

1、在index.html文件中引入&#xff08;在body体中&#xff09; <script src"https://video.sdk.qcloudecdn.com/web/TXLivePusher-2.1.1.min.js" charset"utf-8"></script> 2、vue文件中&#xff0c;添加video推流&#xff08;我用的推流地…...

DP_AUX辅助通道介绍

DisplayPort&#xff08;简称DP&#xff09;是一个由PC及芯片制造商联盟开发&#xff0c;视频电子标准协会&#xff08;VESA&#xff09;标准化的数字式视频接口标准。该接口免认证、免授权金&#xff0c;主要用于视频源与显示器等设备的连接&#xff0c;并也支持携带音频、USB…...

【微机及接口技术】- 第九章 串行通信与串行接口(下)

文章目录 第二节 串行通信协议一、异步串行通信协议二、同步串行通信协议 第三节 串行接口标准RS-232C一、RS-232C信号线定义二、电气特性 第四节 可编程串行接口芯片8251A一、基本性能二、内部结构三、外部引脚功能1. 同CPU的连接信号2. MODEM控制信号&#xff08;4个&#xf…...

人形机器人制造—3D打印推动微型化与轻量化设计

在人形机器人仿生架构的构建中&#xff0c;多模态传感器集群与仿生关节矩阵的拓扑融合&#xff0c;正催生第三代具身智能的力学革命。通过分布式触觉薄膜、双目视觉惯性测量单元&#xff08;200Hz采样率&#xff09;与肌电模拟传感器的三重耦合&#xff0c;机器人获得了超越人类…...

前端性能优化高频面试题解析与实战指南(2025版)

一、前端性能优化核心面试题汇总 1. 浏览器加载优化相关问题 Q1&#xff1a;浏览器从输入URL到页面渲染的完整流程中&#xff0c;有哪些关键性能节点&#xff1f; 核心流程&#xff1a;DNS解析 → TCP连接&#xff08;TLS握手&#xff09;→ HTTP请求 → 资源下载 → 解析HT…...

【教程】xrdp修改远程桌面环境为xfce4

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 xfce4 vs GNOME对比 配置教程 1. 安装 xfce4 桌面环境 2. 安装 xrdp 3. 配置 xrdp 使用 xfce4 4. 重启 xrdp 服务 5. 配置防火墙&#xff…...

递增子序列

递增子序列 难点&#xff1a; 结果集如何加&#xff1a;每次进入递归都判断是否sub中的个数>2&#xff1b;不允许对数组排序&#xff0c;如何在每层去重&#xff1a;不可以再用nums[i] nums[i-1]&#xff08;没有意义&#xff0c;重复的元素不一定挨着&#xff09;&#x…...

Linux磁盘管理双雄:lsblk与df深度解析

在Linux系统管理的日常工作里&#xff0c;磁盘管理占据着极为重要的地位&#xff0c;这里重点介绍lsblk和df这两个命令。 一、lsblk命令&#xff1a;呈现磁盘物理架构 lsblk是用于罗列块设备信息的实用命令&#xff0c;它以直观的树状结构呈现系统中的块设备&#xff0c;帮助…...

C#里设计Modbus-RTU(Remote Terminal Unit)协议

Modbus-RTU(Remote Terminal Unit)是一种串行通信协议,广泛用于工业自动化领域,支持主从式(Master-Slave)通信架构。它是Modbus协议的两种传输模式之一(另一种是ASCII模式),具有高效、简洁、可靠性强的特点,常用于RS-485或RS-232物理层通信。 核心特性 物理层 通常基…...

spark学习内容总结

Spark运行架构总结 一、核心结构 Spark框架的核心是一个计算引擎&#xff0c;整体采用标准的master-slave结构。其中&#xff0c;Driver作为master&#xff0c;负责管理整个集群中的作业任务调度&#xff1b;Executor作为slave&#xff0c;负责实际执行任务。 二、核心组件 ‌…...

MySQL多表查询、事务与索引的实践与应用

摘要&#xff1a;本文围绕MySQL数据库操作展开&#xff0c;通过构建部门与员工管理、餐饮业务相关的数据库表&#xff0c;并填充测试数据&#xff0c;系统地阐述了多表查询的多种方式&#xff0c;包括内连接、外连接和不同类型的子查询&#xff0c;同时介绍了事务的处理以及索引…...

MySQL【8.0.41版】安装详细教程--无需手动配置环境

一、MySQL 介绍 1. 概述 MySQL 是一个开源的关系型数据库管理系统&#xff0c;由瑞典公司 MySQL AB 开发&#xff0c;现属于 Oracle 旗下。它基于 SQL&#xff08;结构化查询语言&#xff09;进行数据管理&#xff0c;支持多用户、多线程操作&#xff0c;广泛应用于 Web 应用、…...

FRP练手:hello,world实现

方案一&#xff1a;使用 Flask&#xff08;推荐&#xff09; from flask import Flaskapp Flask(__name__)app.route(/) def hello_world():return "你好啊世界"if __name__ __main__:# 监听所有网络接口&#xff08;0.0.0.0&#xff09;&#xff0c;端口 3344app.…...

Mysql | 主从复制的工作机制

主从复制的工作机制 Mysql的主从复制 从库主要是读取主库的binlog日志来完成数据同步的, binlog中存储了对数据库所有修改SQL的语句。 首先Master开启BinLog二进制的写入。Slave从库通过ip、port、账号、密码链接到Master主数据库&#xff0c;链接成功后从库会向主数据库获取B…...

清明之后叙

经历了漫长的冬季&#xff0c;春天的脚步近了&#xff0c;要说讲这一年的开始&#xff0c;绝大数人说是从春季&#xff0c;但是我说应该是从冬季开始&#xff0c;中国传统讲冬至是一阳生&#xff0c;冬季收藏好了&#xff0c;开始收敛精气&#xff0c;养精蓄锐&#xff0c;好好…...

Docker新型容器镜像构建技术,如何正确高效的编写Dockerfile

一、容器与容器镜像之间的关系 说到Docker管理的容器不得不说容器镜像&#xff0c;主要因为容器镜像是容器模板&#xff0c;通过容器镜像我们才能快速创建容器。 如下图所示&#xff1a; Docker Daemon通过容器镜像创建容器。 二、容器镜像分类 操作系统类 CentOSUbuntu在do…...