6. 存储池配置与CephFS创建 ceph version 14.2.22
6. 存储池配置与CephFS创建
- 6.1 CRUSH规则管理
- 6.2 纠删码配置
- 6.3 为SSD和HDD创建专用CRUSH规则
- 6.4 创建CephFS存储池
- 6.5 验证存储池配置
- 记录OSD盘符 所有节点都执行
- 7. 客户端挂载CephFS
- 7.1 Ubuntu客户端配置
- 7.2 使用内核驱动挂载
- 7.3 设置开机自动挂载
说明:配置Ceph存储池和创建CephFS文件系统。创建专用的CRUSH规则,为SSD和HDD设备分别优化数据放置策略,并使用纠删码技术提高存储效率。
6.1 CRUSH规则管理
说明:CRUSH(Controlled Replication Under Scalable Hashing)是Ceph的核心算法,它决定了数据如何在集群中分布。CRUSH规则定义了数据的放置策略,影响数据的可靠性和性能。
# 查看现有CRUSH规则
ceph osd crush rule ls
该命令列出集群中所有已定义的CRUSH规则。默认情况下,Ceph会有一个名为replicated_rule
的规则。
# 查看规则详情
ceph osd crush rule dump replicated_rule
此命令显示指定规则(这里是replicated_rule
)的详细配置,包括规则ID、名称、类型、最小/最大副本数以及数据放置步骤。
# 删除规则(如需要)
# ceph osd crush rule rm <rule-name>
用于删除不再需要的CRUSH规则。注意:不能删除正在被存储池使用的规则。
6.2 纠删码配置
说明:纠删码(Erasure Coding,EC)是一种数据保护技术,比传统的多副本复制更节省存储空间。它将数据分割成多个数据块(k),并计算额外的校验块(m),只要有k个块可用,就能恢复完整数据。
# 查看现有纠删码配置
ceph osd erasure-code-profile ls
列出所有已定义的纠删码配置文件。默认会有一个名为default
的配置。
# 查看默认纠删码配置详情
ceph osd erasure-code-profile get default
显示默认纠删码配置的详细参数。通常默认配置为k=2, m=1,意味着数据分成2块,加1块校验块。
# 创建自定义纠删码配置
ceph osd erasure-code-profile set ec_profile_8_2_host_4096 \k=8 \m=2 \plugin=jerasure \technique=reed_sol_van \crush-failure-domain=host \crush-device-class=hdd \crush-root=default \stripe_unit=4096 \--force
创建名为ec_profile_8_2_host_4096
的纠删码配置,各参数说明:
k=8
:数据分成8块m=2
:生成2个校验块plugin=jerasure
:使用jerasure编码库technique=reed_sol_van
:使用Reed-Solomon编码算法crush-failure-domain=host
:确保数据和校验块分布在不同主机上,提高容错性crush-device-class=hdd
:只使用HDD设备存储这些数据crush-root=default
:在默认CRUSH树中选择设备stripe_unit=4096
:条带单元大小为4096字节--force
:强制创建,即使有些参数可能不是最优的
这个8+2的配置意味着数据存储效率提高了约20%,同时可以承受任意两个分片的丢失。
# 查看创建的纠删码配置
ceph osd erasure-code-profile get ec_profile_8_2_host_4096
验证新创建的纠删码配置参数是否符合预期。
6.3 为SSD和HDD创建专用CRUSH规则
说明:为了优化性能,通常会根据存储介质类型(SSD/HDD)创建不同的CRUSH规则,以便将不同类型的数据放置在最合适的设备上。
# 创建SSD专用CRUSH规则
ceph osd crush rule create-replicated ssd_rule default host ssd
创建名为ssd_rule
的复制规则,参数说明:
default
:使用默认CRUSH树host
:副本将分布在不同的主机上ssd
:只选择SSD类型的设备
这个规则将用于元数据池,确保元数据存储在高速的SSD上,提高元数据操作的性能。
# 创建HDD纠删码CRUSH规则
ceph osd crush rule create-erasure hdd_ec_rule ec_profile_8_2_host_4096
创建名为hdd_ec_rule
的纠删码规则,使用前面定义的ec_profile_8_2_host_4096
纠删码配置。这个规则会将数据分布在HDD设备上,因为纠删码配置中指定了crush-device-class=hdd
。
这个规则将用于数据池,利用纠删码提高存储效率,同时将数据存储在成本较低的HDD上。
# 验证规则创建
ceph osd crush rule dump ssd_rule
ceph osd crush rule dump hdd_ec_rule
查看创建的规则详情,确保配置正确。在输出中,应该能看到ssd_rule
使用default~ssd
作为数据源,而hdd_ec_rule
使用default~hdd
作为数据源。
6.4 创建CephFS存储池
说明:CephFS需要两个存储池:一个用于存储元数据,一个用于存储文件数据。通常元数据池使用SSD以提高性能,数据池使用HDD以降低成本。
# 创建元数据池(使用SSD)
ceph osd pool create cephfs_metadata 512 512 replicated
创建名为cephfs_metadata
的复制池,用于存储文件系统元数据。
512 512
:分别指定PG(放置组)和PGP(放置组伙伴)的数量replicated
:使用复制模式而非纠删码
ceph osd pool set cephfs_metadata size 3
设置元数据池的副本数为3,提高数据安全性。元数据对文件系统至关重要,因此使用更高的冗余度。
ceph osd pool set cephfs_metadata crush_rule ssd_rule
将元数据池绑定到前面创建的ssd_rule
,确保元数据存储在SSD上,提高元数据操作性能。
ceph osd pool application enable cephfs_metadata cephfs
将池标记为CephFS应用使用,这是Luminous版本后的要求,用于标识池的用途。
# 验证元数据池配置
ceph osd pool get cephfs_metadata crush_rule
确认元数据池使用了正确的CRUSH规则(应该是ssd_rule
)。
# 创建数据池(使用HDD,纠删码)
ceph osd pool create cephfs_data_ec 4096 4096 erasure ec_profile_8_2_host_4096 hdd_ec_rule
创建名为cephfs_data_ec
的纠删码池,用于存储文件数据。
4096 4096
:指定PG和PGP数量,数据池通常需要更多的PGerasure
:使用纠删码模式,节省存储空间ec_profile_8_2_host_4096
:使用前面创建的纠删码配置hdd_ec_rule
:使用前面创建的HDD专用CRUSH规则
# 允许EC池覆盖写
ceph osd pool set cephfs_data_ec allow_ec_overwrites true
默认情况下,纠删码池不支持部分对象修改(覆盖写),这个设置启用了该功能。这对CephFS是必需的,因为文件系统需要能够修改文件的部分内容。
# 创建CephFS文件系统
ceph fs new cephfs_ec cephfs_metadata cephfs_data_ec --force
创建名为cephfs_ec
的文件系统:
cephfs_metadata
:指定元数据池cephfs_data_ec
:指定数据池--force
:强制创建,即使有些配置可能不是最优的
# 验证文件系统创建
ceph fs ls
列出所有创建的文件系统,确认cephfs_ec
已成功创建。
6.5 验证存储池配置
说明:创建完成后,需要验证配置是否符合预期,确保元数据和数据分别存储在正确的设备类型上。
# 验证元数据池使用SSD
ceph osd pool get cephfs_metadata crush_rule
确认元数据池使用了正确的CRUSH规则(应该返回ssd_rule
)。
ceph osd crush rule dump ssd_rule
查看SSD规则的详细配置,确认它使用了default~ssd
作为数据源。
# 验证数据池使用HDD
ceph osd pool get cephfs_data_ec crush_rule
确认数据池使用了正确的CRUSH规则(应该返回hdd_ec_rule
)。
ceph osd crush rule dump hdd_ec_rule
查看HDD规则的详细配置,确认它使用了default~hdd
作为数据源。
# 查看集群状态
ceph -s
检查整个集群状态,包括新创建的文件系统、存储池和PG状态。应该能看到所有PG处于active+clean
状态,表示数据分布正常。
记录OSD盘符 所有节点都执行
ceph-volume lvm list > lvm.list
7. 客户端挂载CephFS
说明:创建好CephFS后,需要在客户端上挂载使用。这里以Ubuntu客户端为例,挂载CephFS文件系统。
7.1 Ubuntu客户端配置
# 安装ceph-common包
apt-get install -y ceph-common
安装Ceph客户端工具包,提供挂载CephFS所需的命令和库。
# 创建挂载点
mkdir -p /mnt/cephfs
创建本地挂载点目录,CephFS文件系统将挂载到这个目录。
# 从Ceph管理节点复制密钥
# 在Ceph管理节点上执行
ceph auth get-key client.admin > admin.secret
在Ceph管理节点上导出admin用户的密钥,用于客户端认证。admin用户拥有对文件系统的完全访问权限。在生产环境中,应该为不同的客户端创建权限更受限的用户。
# 将密钥文件复制到客户端
# scp admin.secret ubuntu-client:/etc/ceph/
# scp ceph.conf ubuntu-client:/etc/ceph/
将密钥文件和Ceph配置文件复制到客户端的/etc/ceph/目录。客户端需要这些文件来连接Ceph集群。
# 在客户端上设置密钥文件权限
chmod 600 /etc/ceph/admin.secret
限制密钥文件的权限,只允许文件所有者读写,提高安全性。
7.2 使用内核驱动挂载
说明:挂载CephFS文件系统。
# 挂载CephFS
sudo mount -t ceph 192.168.1.100:6789,192.168.1.101:6789,192.168.1.102:6789,192.168.1.103:6789,192.168.1.104:6789,192.168.1.105:6789,192.168.1.106:6789:/ /mnt/cephfs -o name=admin,secretfile=/etc/ceph/admin.secret
使用Linux内核的Ceph客户端挂载文件系统:
-t ceph
:指定文件系统类型为ceph192.168.1.100:6789,...
:指定所有MON节点的IP和端口,提供冗余连接/
:挂载CephFS的根目录-o name=admin,secretfile=/etc/ceph/admin.secret
:指定认证信息,使用admin用户和密钥文件
# 验证挂载
df -h /mnt/cephfs
显示挂载点的磁盘使用情况,确认挂载成功。应该能看到CephFS的总容量和可用空间。
7.3 设置开机自动挂载
说明:为了确保系统重启后CephFS能自动挂载,需要将挂载配置添加到/etc/fstab文件中。
# 编辑/etc/fstab
echo "192.168.1.100:6789,192.168.1.101:6789,192.168.1.102:6789,192.168.1.103:6789,192.168.1.104:6789,192.168.1.105:6789,192.168.1.106:6789:/ /mnt/cephfs ceph name=admin,secretfile=/etc/ceph/admin.secret,_netdev,noatime 0 0" >> /etc/fstab
将挂载配置添加到fstab,实现开机自动挂载:
192.168.1.100:6789,...:/
:指定MON节点和CephFS路径/mnt/cephfs
:本地挂载点ceph
:文件系统类型name=admin,secretfile=/etc/ceph/admin.secret
:认证信息_netdev
:标记为网络设备,确保网络准备好后再挂载noatime
:不更新文件访问时间,提高性能0 0
:不进行备份和fsck检查
这种配置实现了高效的存储分层:
- 元数据(如目录结构、文件属性)存储在SSD上,提供快速访问
- 实际文件数据存储在HDD上,以8+2的纠删码方式节省约20%的存储空间
- 整个系统仍然保持了高可用性,任何两个节点故障都不会导致数据丢失
相关文章:
6. 存储池配置与CephFS创建 ceph version 14.2.22
6. 存储池配置与CephFS创建 6.1 CRUSH规则管理6.2 纠删码配置6.3 为SSD和HDD创建专用CRUSH规则6.4 创建CephFS存储池6.5 验证存储池配置记录OSD盘符 所有节点都执行 7. 客户端挂载CephFS7.1 Ubuntu客户端配置7.2 使用内核驱动挂载7.3 设置开机自动挂载 说明:配置Cep…...
RocketMQ Kafka区别
架构 ZooKeeper:管理 Broker 注册、分区 Leader 选举及消费者组状态。Broker:存储 Partition数据,每个 Partition 为独立日志文件。Producer/Consumer:通过 ZooKeeper获取路由信息,实现消息分发与消费。 NameServer&am…...
linux和linux 、linux和windows实现文件复制笔记
前提:两设备得在同一局域网下,且启用了ssh 一、linux和linux实现文件复制 从 Ubuntu B 复制文件夹到 Ubuntu A 在 Ubuntu A 上打开终端,执行: scp -r userBubuntuB_IP:/home/userB/folder_to_copy /home/userA/destination/ 二、linux和…...
Flink 运维监控与指标采集实战
一、引言:实时任务为什么必须监控? 在实时任务中,任务失败、数据延迟、资源瓶颈往往并非由明显的代码异常引发,而是隐蔽地潜藏在: Kafka 积压无告警 Flink Checkpoint 卡顿却无人知晓 反压、TaskManager 内存 OOM 未实时感知 为了保障业务 SLA、高可用与可观测性,构建完…...
linux 开发小技巧之git增加指令别名
众所周知,git的指令执行时都得敲好几个字符才能补充上来,比如常用的git status,是不是要将全部的字符一个个地在键盘敲上来,有没有更懒惰点办法,可以将经常用到的git命令通过其他的别名的方式填充,比如刚刚…...
【八股消消乐】项目中如何优化JVM内存分配?
😊你好,我是小航,一个正在变秃、变强的文艺倾年。 🔔本专栏《八股消消乐》旨在记录个人所背的八股文,包括Java/Go开发、Vue开发、系统架构、大模型开发、机器学习、深度学习、力扣算法等相关知识点,期待与你…...
操作系统实验习题解析 上篇
孤村落日残霞,轻烟老树寒鸦,一点飞鸿影下。 青山绿水,白草红叶黄花。 ————《天净沙秋》 白朴 【元】 目录 实验一: 代码: 解析: 运行结果: 实验二: 代码解析 1. 类设计 …...
Yocto中`${B}`变量的作用
在Yocto项目中,${B}是一个关键路径变量,用于指定构建目录(Build Directory),其作用是存放编译过程中生成的中间文件(如Makefile、目标文件、日志等),从而将构建产物与源码目录分离,保持源码环境的独立性^1。 具体解析: 定义与默认路径 默认情况下,${B}的路径为${TM…...
JDBC执行sql过程
1. 加载数据库驱动 JDBC 通过 驱动(Driver) 实现与不同数据库的通信。驱动需提前加载到 JVM: 手动加载(JDBC 4.0 前): Class.forName("com.mysql.cj.jdbc.Driver"); // MySQL 驱…...
python如何提取Chrome中的保存的网站登录用户名密码?
很多浏览器都贴心地提供了保存用户密码功能,用户一旦开启,就不需要每次都输入用户名、密码,非常方便。作为python脚本,能否拿到用户提前保存在浏览器中的用户名密码,用以自动登录呢?必须有,小爬…...
【数据结构入门训练DAY-30】数的划分
文章目录 前言一、题目二、解题思路结语 前言 本次训练内容 训练DFS。训练解题思维。 一、题目 将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。 例如:n7,k3,下面三种分法被认为是相同的。 {1&a…...
CD37.【C++ Dev】string类的模拟实现(上)
目录 1.string基本知识的回顾 2.简单的模拟实现 准备操作 代码实现 成员变量 构造函数 C风格构造的函数 无参构造函数 C风格构造的函数与无参构造函数合二为一 析构函数 c_str() size() operator[ ] 可读可写 只可读 iterator(指针版) begin()和end() 编辑…...
Java代理
一、代理的基本定义 1.什么是Java代理模式:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用。 2.类是构建对象的模板 下面是最简单的代理实现(这只是一个演示会报错) package 代理;public class xiaoming {public static…...
源码示例:使用SpringBoot+Vue+ElementUI+UniAPP技术组合开发一套小微企业ERP系统
目录 一、系统架构设计 1、技术分层 2、开发环境 二、快速开发实践 1、后端搭建(Spring Boot) 2、前端管理端(VueElementUI) 3、移动端开发(UniAPP) 三、关键集成方案 1、统一接口处理 2、跨平台…...
.Net Mqtt协议-MQTTNet(一)简介
一、MQTTNet 简介 MQTTnet 是一个高性能的MQTT类库,支持.NET Core和.NET Framework。 二、MQTTNet 原理 MQTTnet 是一个用于.NET的高性能MQTT类库,实现了MQTT协议的各个层级,包括连接、会话、发布/订阅、QoS(服务质量࿰…...
路由策略和策略路由的区别以及配置案例
区别 路由策略:路由策略是通过ACL等方式控制路由发布,让对方学到适当路由条目,比如有20条路由,只想让某个路由器学到10条,可以通过路由策略进行过滤。 策略路由:策略路由是通过定义策略和应用,…...
【Debian】关于LubanCat-RK3588s开发板安装Debian的一些事
琐碎的事问题不少,甚至一度让我以为核心坏了 按照指引烧录完Debian11-gnome镜像后启动,此时输出的分辨率不一定匹配显示器,进而导致黑屏,此时需要使用MobaXterm的串口终端以运行一些指令,下载链接用xrandr指令查看显示…...
vmware环境ORACLE RAC环境数据库节点1无法启动问题分析处理
近期在一个客户数据库巡检时发现ORACLE RAC环境数据库一节点故障,只有二节点在运行。 RAC环境正常安装完成后,后期典型的节点无法启动问题就是私网异常、共享存储异常等,检查机器日志可以快速定位问题;本次问题就是因为心跳网络问…...
前端性能优化全攻略:从基础体验到首屏加载的深度实践
在移动互联网时代,用户体验已成为产品竞争力的核心要素。本文将从基础交互优化和首屏加载专项两个维度,系统梳理前端性能优化的关键策略。(对应图片1的整体框架设计) 一、基础性能优化四维模型 1. 首次打开加速方案 • 资源压缩…...
选对第三方软件测试公司,项目验收成功率提升90%
在当今数字化浪潮中,软件质量已成为企业竞争力的核心要素。然而,软件开发团队往往因资源有限或视角局限,难以全面发现潜在问题。这时,第三方软件测试公司凭借其独立性和专业性,成为企业确保软件质量的关键伙伴。尤其在…...
golang常用库之-protojson 库(json.Marshal 和 protojson.Marshal 序列化对比)
文章目录 golang常用库之-protojson 库(json.Marshal 和 protojson.Marshal 序列化对比)什么是protojson 库什么情况需要用 protojson? json.Marshal 和 protojson.Marshal 序列化对比简单示例json.Marshal 的潜在问题 (对于 Protobuf 结构体…...
嵌入式学习笔记 - 运算放大器的共模抑制比
一 定义 共模抑制比(Common Mode Rejection Ratio, CMRR)是衡量差分放大器(或差分电路)抑制共模信号能力的关键指标。它在电子工程中尤为重要,特别是在需要处理微弱信号或对抗环境噪声的场景中。 核心概念 共…...
Taccel:一个高性能的GPU加速视触觉机器人模拟平台
触觉感知对于实现人类水平的机器人操作能力至关重要。而视觉触觉传感器(VBTS)作为一种有前景的解决方案,通过相机捕捉弹性凝胶垫的形变模式来感知接触的方式,为视触觉机器人提供了高空间分辨率和成本效益。然而,这些传…...
高效Python开发:uv包管理器全面解析
目录 uv简介亮点与 pip、pip-tools、pipx、poetry、pyenv、virtualenv 对比 安装uv快速开始uv安装pythonuv运行脚本运行无依赖的脚本运行有依赖的脚本创建带元数据的 Python 脚本使用 shebang 创建可执行文件使用其他package indexes锁定依赖提高可复现性指定不同的 Python 版本…...
PyTorch 线性回归模型构建与神经网络基础要点解析
笔记 1 PyTorch构建线性回归模型 1.1 创建数据集 import torch from torch.utils.data import TensorDataset # 创建x和y张量数据集对象 from torch.utils.data import DataLoader # 创建数据集加载器 import torch.nn as nn # 损失函数和回归函数 from torch.optim impo…...
PyTorch API 2 - 混合精度、微分、cpu、cuda、可视化
文章目录 自动混合精度包 - torch.amp自动类型转换参数说明 梯度缩放自动转换操作符参考操作符适用性CUDA 操作特定行为可自动转换为 float16 的 CUDA 运算可自动转换为 float32 的 CUDA 运算提升至最宽输入类型的 CUDA 操作优先使用 binary_cross_entropy_with_logits 而非 bi…...
window 显示驱动开发-AGP 类型伸缩空间段
AGP 类型的伸缩空间段类似于线性光圈空间段。 但是,内核模式显示微型端口驱动程序(KMD)不会通过 AGP 类型的伸缩空间段公开 dxgkDdiBuildPagingBuffer 回调函数的DXGK_OPERATION_MAP_APERTURE_SEGMENT和DXGK_OPERATION_UNMAP_APERTURE_SEGMEN…...
异地多活单元化架构下的微服务体系
治理服务间的跨IDC调用,而数据库层面还是要跨IDC 服务注册中心拆开、 金融要求,距离太远,异地备库,如果延迟没读到数据就可能有资损,IDC3平时不能用,IDC1挂了还是有数据同步问题,IDC3日常维护…...
LinkedList源码解析
添加元素方法 add方法详解 /*E:创建LinkedList对象时泛型中设置好的数据类型e: 传递的参数boolean: 添加成功即为true,添加失败即为false */public boolean add(E e) {// 在链表最后一个结点后面插入新结点(根据待插入元素封装的结点) linkLast(e);/…...
Android 13 使能user版本进recovery
在 debug 版本上,可以在关机状态下,同时按 电源键 和 音量加键 进 recovery 。 user 版本上不行。 参考 使用 build 变体 debug 版本和 user 版本的差别之一就是 ro.debuggable 属性不同。 顺着这个思路追踪,找到 bootable/recovery/reco…...
Docker 使用总结及完整示例介绍
以下是一份详细的 Docker 使用总结及完整示例介绍,涵盖基础概念、常用命令和实际应用场景: 一、Docker 核心概念 镜像 (Image) 只读模板,用于创建容器。例如:ubuntu:22.04, nginx:alpine 容器 (Container) 镜像的运行实例&#x…...
[Linux]多线程(二)原生线程库---pthread库的使用
[Linux]多线程(二)原生线程库—pthread库的使用 水墨不写bug 文章目录 一、pthread原生线程库的使用1. pthread_create全面的看待线程返回值2. pthread_join3. pthread_exit对比理解线程退出?1、return退出2、调用C库函数exit()退出3、调用pt…...
1.短信登录
1.0 问题记录 1.0.1 redis 重复 token 问题 每次用户登录时,后端会创建一个新的 token 并存入 Redis,但之前登录的 token 还没有过期。这可能会导致以下问题: 1. Redis 中存在大量未过期但实际已不使用的 token2. 同一用户可能有多个有效 …...
Vue v-model 深度解析:实现原理与高级用法
一、v-model 的本质 v-model 是 Vue 中最常用的指令之一,它本质上是一个语法糖,用于在表单元素和自定义组件上实现双向数据绑定。在 Vue 2.x 和 Vue 3.x 中,v-model 的实现机制有所不同,但核心思想都是简化数据绑定的过程。 1.1…...
Java动态代理超详细解析:三步+内存图(堆栈分析)
0.本文适合谁? 1.刚学Java动态代理,被Proxy、InvocationHandler绕晕的同学 2.想彻底搞懂代理对象在内存中如何工作的开发者 3.需要面试突击动态代理知识的求职 1.动态代理的本质(三步走) 动态代理的核心可以拆解为三个关键…...
MySQL 从入门到精通(六):视图全面详解 —— 虚拟表的灵活运用
在数据库开发中,我们经常需要重复执行复杂的多表查询,或是需要限制用户只能访问特定数据。这时候,MySQL 的 视图(View)就能大显身手。作为一种 “虚拟表”,视图不存储实际数据,却能基于 SQL 查询…...
Linux 下 Java 部署环境搭建与项目部署详细步骤
目录 1. 软件环境准备 1.1 更新软件包库 1.2 安装 OpenJDK 1.3 安装 MySQL 数据库 2. 部署 Web 项目到 Linux 2.1 数据准备和配置 2.2 Maven 打包项目 2.3 上传 Jar 包至云服务器 2.4 启动应用程序 2.5 配置防火墙与端口开放 2.6 访问与验证项目 2.7 进程管理与问题…...
养生:为健康生活添彩
养生是对生活的热爱,是为健康生活注入活力的良方。从饮食、运动到生活习惯,每一个方面都能让我们离健康更近一步。以下是一些实用的养生之道,助你开启健康生活的新旅程。 饮食养生:营养均衡,健康基石 合理的饮食是养…...
Hypermesh四面体网格划分(二)
我们找到“3D-tetramesh”的命令,然后选择“tetra mesh”,以下就是这种四面体网格生成方式的面板。见图1所示。 图1 tetra mesh面板 下面以一个法兰盘的四面体网格划分作为案例,具体介绍基于表面网格的四面体网格生成方式。 首先导入几何模型…...
PySide6 GUI 学习笔记——常用类及控件使用方法(常用类边距QMargins)
文章目录 类概述方法总览使用注意事项简单示例 类概述 QMargins 类用于描述矩形四周边框尺寸,包含左(left)、上(top)、右(right)、下(bottom)四个整型边距值。当所有边距均为0时,isNull() 返回 True。该类支持流式操作和比较运算。 版本信息࿱…...
python笔记和练习----少儿编程课程【阶段二(二)】
第13课 列表元素的查找和删除 知识点 1、删除第一个出现的指定元素 列表.remove(元素) 2.删除末尾元素 列表.pop() 3、清空列表的所有数据 列表.clear() 4、删除指定位置的元素 del 列表[索引] del 关键字本质上是用来 将一个变量从内存中删除…...
Excel里面怎样批量去掉字串包含的标点符号
在Excel中批量去除字符串中的标点符号,可以通过以下几种方法实现: 方法1:使用SUBSTITUTE函数嵌套 适用于已知的特定标点符号(需手动列出): SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, ",&quo…...
Linux 信号终篇(总结)
前文:本文是对信号从产生到被处理的过程中的概念和原理的总结,如果想了解具体实现,请查看前两篇博客:Linux 信号-CSDN博客、Linux 信号(下篇)-CSDN博客 一、信号的产生 1.1 信号产生的五种条件 ①键盘组…...
Springboot之会话技术
会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。 会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求是否来自于同一浏览器ÿ…...
数字信号处理|| 离散系统的冲激响应和阶跃响应
一、实验目的 (1)加深对离散线性移不变(LSI)系统基本理论的理解,明确差分方程与系统函数之间的关系。 (2)初步了解用MATLAB语言进行离散时间系统研究的基本方法。 (3)掌…...
JVM 数据区域
JVM 数据区域 1 程序计数器 程序计数器(Program Counter Register) ,也有称作为PC寄存器。在汇编语言中,程序计数器是指CPU中的寄存器,它保存的是程序当前执行的指令的地址,当CPU需要执行指令时࿰…...
MRNet 数据集分享
MRNet 数据集分享 包括了2001年1月1日至2012年12月31日期间在斯坦福大学医学中心进行的1370次膝关节MRI检查(平均年龄38.0岁;569例(41.5%)女性患者)。该数据集包含 1,104 (80.6%) 次异常检查,其中319 (23.…...
MCP项目实例 - client sever交互
1. 项目概述 项目目标 构建一个本地智能舆论分析系统。 利用自然语言处理和多工具协作,实现用户查询意图的自动理解。 进行新闻检索、情绪分析、结构化输出和邮件推送。 系统流程 用户查询:用户输入查询请求。 提取关键词:从用户查询中…...
uniapp|实现商品分类与列表数据联动,左侧菜单右侧商品列表(瀑布流、高度自动计算、多端兼容)
基于uniapp实现商品分类与商品列表数据联动,提供完整代码与常见问题解决方案,通过实战案例演示,快速构建商品列表交互,开箱即用。 目录 前言应用场景介绍页面布局与样式整体结构分析左侧菜单样式右侧商品列表样式核心功能实现数据绑定与渲染点击事件交互性能优化图片懒加载…...
1.2.2.1.4 数据安全发展技术发展历程:高级公钥加密方案——同态加密
引言 在密码学领域,有一种技术被图灵奖得主、著名密码学家Oded Goldreich誉为"密码学圣杯",那就是全同态加密(Fully Homomorphic Encryption)。今天我们就来聊聊这个神秘而强大的加密方案是如何从1978年的概念提出&…...