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

独立部署及使用Ceph RBD块存储

Ceph RBD(RADOS Block Device) 是 Ceph 分布式存储系统中的块存储组件,类似于 AWS EBS、iSCSI 等。它独立于 OpenShift 或 IBM CP4BA,是一个分布式存储系统,提供高性能、可扩展性和容错能力,适用于数据库、业务自动化系统(如 CP4BA)等高负载应用

对比项Ceph RBD(推荐)NFS
性能高,适合数据库、业务自动化低,适合文件共享
一致性强一致性弱一致性
多 Pod 访问仅支持 ReadWriteOnce支持 ReadWriteMany
适用 CP4BA 组件数据库(DB2, PostgreSQL),FileNet P8,业务流程引擎共享配置、日志存储
扩展性高,可横向扩展低,单点故障风险

一、Ceph RBD 组件架构

一个完整的 Ceph RBD 部署 需要以下核心组件:

  1. MON(Monitor,监视器):管理集群状态、认证和一致性(建议3 个或以上)。

  2. OSD(Object Storage Daemon):存储数据,每个物理磁盘一个 OSD 进程(建议3 个或以上)。

  3. MDS(Metadata Server,可选):用于 CephFS,不影响 RBD。

  4. RADOS Gateway(RGW,可选):提供 S3 兼容的对象存储 API(非 RBD 必须)。

📌 Ceph RBD 主要使用 MON + OSD,可作为 iSCSI / Kubernetes CSI 存储后端。

二、独立部署 Ceph RBD(裸机环境)

适用于 物理机 / 虚拟机 / OpenStack 环境,步骤如下:

(1)安装 Ceph

方法一:

Ubuntu / Debian 服务器上安装 Ceph:

# 安装依赖
sudo apt update
sudo apt install curl gnupg -y# 添加 Ceph GPG 密钥
curl -fsSL https://download.ceph.com/keys/release.asc | gpg --dearmor -o /usr/share/keyrings/ceph.gpg# 添加 Ceph 软件源(强制用 bullseye)
echo "deb [signed-by=/usr/share/keyrings/ceph.gpg] https://download.ceph.com/debian-pacific/ bullseye main" | sudo tee /etc/apt/sources.list.d/ceph.list# 更新软件列表并安装
sudo apt update
sudo apt install ceph ceph-mds radosgw -y
# 安装 pyenv(如果你还没装)
curl https://pyenv.run | bash# 安装 Python 3.10
pyenv install 3.10.14# 创建虚拟环境
pyenv virtualenv 3.10.14 ceph-env-py310
pyenv activate ceph-env-py310# 安装 ceph-deploy
pip install ceph-deploy

方法二(建议):

#添加 Ceph 仓库密钥:
sudo apt update
sudo apt install -y ca-certificates gnupg
wget -q -O- https://download.ceph.com/keys/release.asc | sudo gpg --dearmor -o /etc/apt/keyrings/ceph.gpg#添加 Ceph 仓库源
#创建或编辑 /etc/apt/sources.list.d/ceph.list 文件,并添加以下内容(将 squid 替换为相应的版本代号):
deb [signed-by=/etc/apt/keyrings/ceph.gpg] https://download.ceph.com/debian-squid/ jammy main
#将 jammy 替换为你的 Ubuntu 版本代号 (例如,focal, kinetic 等),Debian 12用bookworm。#更新软件包列表并安装 Ceph:
sudo apt update
sudo apt install ceph-common cephadm -y
#也可以安装完整的ceph包
sudo apt install ceph -y#更新cephadm
sudo apt update
sudo apt upgrade cephadm# 启动集群(例如使用 podman)
cephadm bootstrap --mon-ip <your-ip> --initial-dashboard-user admin --initial-dashboard-password <password> 

通过以下命令确认(先启用ceph cli)

ceph mgr services

如果正常启用dashboard,会看到:

{"dashboard": "https://192.168.88.99:8443/","prometheus": "http://192.168.88.99:9283/"
}

如果忘记密码:

ceph dashboard set-login-credentials admin <your_password>

如果使用了方法二,建议通过Web界面进行管理。

如果国内比较慢,请:

方法一:

sudo nano /etc/ceph/ceph.conf

 在 [global] 部分添加或修改:

[global]
container_image_registry = mirrors.ustc.edu.cn

 或者使用其他国内常用的镜像加速器地址,例如:

  • 阿里云: registry.aliyuncs.com/google_containers (可能需要配置镜像加速)
  • 网易云: hub-mirror.c.163.com
  • 腾讯云: mirror.ccs.tencentyun.com
  • 中国科学技术大学 (ustc): mirrors.ustc.edu.cn
  • 清华大学: docker.mirrors.ustc.edu.cn (也是 ustc 的)

注意: 不同的镜像加速器提供的镜像可能略有不同,建议选择一个稳定且包含所需 Ceph 镜像的加速器。

然后使用命令:

# 启动集群(例如使用 podman)
cephadm bootstrap --mon-ip <your-ip> --initial-dashboard-user admin --initial-dashboard-password <password> --allow-overwrite

方法二:

修改 Ceph 的安装源配置: 编辑 Ceph 配置文件,替换为国内镜像。例如,修改 /etc/apt/sources.list.d/ceph.list 文件,将官方源替换为国内镜像。

deb http://mirrors.aliyun.com/ceph/debian/ pacific main
deb-src http://mirrors.aliyun.com/ceph/debian/ pacific main

 (2)初始化 Ceph 集群

ceph-deploy new mon1 mon2 mon3  # 部署 Monitor 节点
ceph-deploy install mon1 mon2 mon3 osd1 osd2 osd3  # 安装 OSD
ceph-deploy mon create-initial  # 初始化 MON

 (3)创建 OSD 并启动

ceph-deploy osd create --data /dev/sdb osd1
ceph-deploy osd create --data /dev/sdc osd2
ceph-deploy osd create --data /dev/sdd osd3

(4)创建 Ceph RBD 池

ceph osd pool create rbd-pool 128
rbd pool init rbd-pool

(5)映射 RBD 设备

rbd create mydisk --size 10G --pool rbd-pool
rbd map mydisk --pool rbd-pool --name client.admin

Ceph RBD 现在可以被挂载为块设备,例如:

mkfs.ext4 /dev/rbd0
mount /dev/rbd0 /mnt

三、安装Ceph Dashboard

为了方便管理,可以使用 Ceph Dashboard(一个官方提供的 Web UI)。它可以帮助:

  • 监控 OSD(存储节点)

  • 管理 Ceph Pools(存储池)

  • 监控 性能

  • 创建 用户和访问权限

  • 查看 集群健康状态 

1、启用 Ceph Dashboard

在管理节点(MON/MGR 节点)上执行

ceph mgr module enable dashboard

 然后,查看 Dashboard 的端口:

ceph mgr services

输出类似:

{"dashboard": "https://192.168.1.100:8443/"
}

这样,就可以访问 https://192.168.1.100:8443/ 了!

2、设置 Ceph Dashboard 登录密码

ceph dashboard set-login-credentials admin mypassword

然后就可以使用 admin/mypassword 登录 Dashboard。

3、配置 HTTPS 证书

默认情况下,Ceph Dashboard 使用自签名证书。如果需要 使用自己的 HTTPS 证书,可以执行:

ceph dashboard set-ssl-certificate -i my_cert.pem
ceph dashboard set-ssl-certificate-key -i my_cert.key

4、配置 Grafana + Prometheus(高级监控)

如果希望有更详细的性能监控,可以 安装 Grafana + Prometheus

ceph mgr module enable prometheus

 然后可以在 Grafana 里添加 Ceph 监控数据源。

5、总结

1.Ceph Dashboard 提供图形界面,可以监控 OSD、存储池、性能、集群健康状态。

2.启用 Dashboard

ceph mgr module enable dashboard

3. 获取访问地址

ceph mgr services

4.设置登录密码

ceph dashboard set-login-credentials admin mypassword

 然后访问 https://<你的Ceph管理节点>:8443/ 进行管理!🚀

 四、Linux、Windows使用Ceph RBD块存储

1、前提条件:Ceph 块存储(RBD)可用

需要先确保:Ceph 集群运行正常(ceph -s 显示 HEALTH_OK)

 1.创建 RBD 池 (Pool): 如果你还没有专门用于 RBD 的池,需要创建一个。例如,创建一个名为 rbd 的池:

ceph osd pool create rbd 128 128 replicated

 建议启用 RBD 特性:

ceph osd pool application enable rbd rbd

 2.创建 RBD 镜像 (Image): 在 RBD 池中创建你希望客户机使用的块设备镜像。例如,创建一个名为 my-image,大小为 100GB 的镜像:

rbd create rbd/my-image --size 100G

 3.创建 CephX 用户并授予权限: 为了安全地访问 Ceph 集群,你需要为客户机创建一个 CephX 用户,并授予其访问 RBD 池的权限。例如,创建一个名为 client.remote 的用户,并授予其对 rbd 池的读写权限:

ceph auth add client.remote mon 'allow r' osd 'allow rwx pool=rbd'

4.获取 Ceph 配置文件 (ceph.conf) 和用户密钥: 客户机需要 Ceph 配置文件来找到 Monitor 节点,以及用户的密钥来认证。

  • 获取 ceph.conf 通常位于 Ceph Monitor 节点上的 /etc/ceph/ceph.conf。你需要将此文件复制到客户机上。
  • 获取用户密钥: 在 Monitor 节点上获取 client.remote 用户的密钥:
ceph auth get-key client.remote

 将输出的密钥保存下来,客户机需要使用它进行认证。你可以将密钥保存到文件中(例如 client.remote.keyring)。

2、Linux 客户端访问 Ceph RBD 块存储

1. 安装 Ceph 客户端工具

sudo apt install ceph-common     # Ubuntu/Debian
sudo yum install ceph-common     # CentOS/RHEL

2. 准备 Ceph 配置文件和密钥

复制 ceph.conf 和密钥文件到客户机: 将你在 Ceph 集群端获取的 ceph.conf 和密钥文件(例如 client.remote.keyring)复制到 Linux 客户机上。通常建议将 ceph.conf 放在 /etc/ceph/ 目录下,并将密钥文件放在一个安全的位置。

 3. 映射 RBD 到本地块设备

 复制 ceph.conf 和密钥文件到客户机: 将在 Ceph 集群端获取的 ceph.conf 和密钥文件(例如 client.remote.keyring)复制到 Linux 客户机上。通常建议将 ceph.conf 放在 /etc/ceph/ 目录下,并将密钥文件放在一个安全的位置。

 映射 RBD 镜像到本地设备: 使用 rbd map 命令将 Ceph RBD 镜像映射为 Linux 上的一个块设备。

sudo rbd map my-image --pool rbd --id remote --keyring /path/to/client.remote.keyring
  • my-image: 你在 Ceph 集群中创建的 RBD 镜像名称。
  • rbd: 你创建的 RBD 池名称。
  • remote: 你创建的 CephX 用户名(client.remote 中的 remote 部分)。
  • /path/to/client.remote.keyring: 你保存密钥文件的路径。

成功映射后,RBD 镜像会出现在 /dev/rbd/<pool_name>/<image_name>,例如 /dev/rbd/rbd/my-image

4. 格式化并挂载

sudo mkfs.ext4 /dev/rbd/rbd/my-image
sudo mkdir /mnt/ceph-rbd
sudo mount /dev/rbd/rbd/my-image /mnt/ceph-rbd

 现在就可以像普通磁盘一样使用 Ceph 块存储了!

5.卸载设备: 当你不再需要使用 RBD 设备时,可以先卸载它,然后取消映射:

sudo umount /mnt/ceph-rbd
sudo rbd unmap /dev/rbd/rbd/my-image

3、Windows 访问 Ceph 块存储(较复杂)

Windows 默认 不支持 RBD,但可以通过以下方式间接使用:

方式一:通过 iSCSI 网关(推荐)

你可以部署 Ceph iSCSI Gateway(LIO Target)将 RBD 映射为标准 iSCSI 卷:

  • 在 Ceph 节点安装 ceph-iscsi
sudo dnf install ceph-iscsi gwcli
  • 使用 gwcli 配置 iSCSI 目标和映射 RBD。
  • Windows 端通过 iSCSI 发起连接(控制面板 → iSCSI Initiator)。

🔗 官方指南:https://docs.ceph.com/en/latest/rbd/iscsi-target-cli/

方式二:使用 VirtIO + QEMU/KVM 虚拟化访问(适合虚拟机)

如果 Windows 运行在虚拟机中(如 Proxmox、KVM),可以将 RBD 挂载给虚拟机使用。

方法三:RBD for Windows(推荐)

1.下载和安装 RBD for Windows:

  • 访问 RBD for Windows 的 GitHub 仓库:https://github.com/ceph/rbd-for-windows
  • 下载最新的稳定版本安装包。
  • 按照安装向导进行安装。

2.复制 ceph.conf 和密钥文件到客户机: 将你在 Ceph 集群端获取的 ceph.conf 和密钥文件(例如 client.remote.keyring)复制到 Windows 客户机上。建议将 ceph.conf 放在 C:\ProgramData\Ceph 目录下(如果该目录不存在则创建),并将密钥文件放在一个安全的位置。

3.映射 RBD 镜像到驱动器盘符: 可以使用 RBD for Windows 提供的命令行工具 rbd-wnbd.exe 或图形界面工具进行映射。

  • 使用命令行工具 (rbd-wnbd.exe): 打开命令提示符或 PowerShell,导航到 RBD for Windows 的安装目录(通常在 C:\Program Files\RBD for Windows\bin),然后执行以下命令:

rbd-wnbd.exe map --pool rbd --image my-image --id remote --keyfile "C:\path\to\client.remote.keyring" --conf "C:\ProgramData\Ceph\ceph.conf"
  • 成功映射后,RBD 镜像会显示为 Windows 上的一个虚拟磁盘。
  • --pool: 你创建的 RBD 池名称。
  • --image: 你在 Ceph 集群中创建的 RBD 镜像名称。
  • --id: 你创建的 CephX 用户名(client.remote 中的 remote 部分)。
  • --keyfile: 你保存密钥文件的路径。
  • --conf: ceph.conf 文件的路径。
  • 使用图形界面工具: 在开始菜单中搜索 "RBD for Windows Mapper" 并打开。点击 "Map Image",然后填写相应的池名称、镜像名称、CephX 用户名、密钥文件路径和 ceph.conf 文件路径。

4.格式化和使用驱动器: 映射成功后,你可以在磁盘管理工具中看到新添加的虚拟磁盘。你可以像使用任何其他磁盘一样对其进行格式化并分配驱动器盘符。

  • 取消映射驱动器:

    • 使用命令行工具:
rbd-wnbd.exe unmap <drive_letter>:

<drive_letter> 替换为分配给 RBD 镜像的驱动器盘符。

  • 使用图形界面工具: 在 "RBD for Windows Mapper" 中选择已映射的镜像,然后点击 "Unmap Image"。

安全注意事项:

  • 密钥管理: 安全地存储和分发 CephX 用户密钥至关重要。
  • 网络安全: 确保客户机和 Ceph 集群之间的网络连接安全。
  • 权限控制: 仔细控制 CephX 用户的权限,确保它们只能访问必要的资源。

4、总结

系统方式是否推荐
Linux直接使用 rbd map 挂载为块设备✅ 推荐
WindowsRBD for Windows✅ 推荐
Windows VM在虚拟化平台(如 KVM)使用 RBD磁盘✅ 推荐

相关文章:

独立部署及使用Ceph RBD块存储

Ceph RBD&#xff08;RADOS Block Device&#xff09; 是 Ceph 分布式存储系统中的块存储组件&#xff0c;类似于 AWS EBS、iSCSI 等。它独立于 OpenShift 或 IBM CP4BA&#xff0c;是一个分布式存储系统&#xff0c;提供高性能、可扩展性和容错能力&#xff0c;适用于数据库、…...

C++初阶-C++入门基础

目录 ​编辑 1.C的简介 1.1C的产生和发展 1.2C的参考文档 1.3C优势和难度 1.4C学习的建议 2.C的第一个程序 2.1打印Hello world 2.2头文件 2.3namespace命名空间 2.4&#xff1a;&#xff1a;作用域限定符 2.5namespace的延伸 2.6C的输入输出 3.总结 1.C的简介 …...

部署大模型不再难:DeepSeek + 腾讯云 HAI 实战教程

网罗开发 &#xff08;小红书、快手、视频号同名&#xff09; 大家好&#xff0c;我是 展菲&#xff0c;目前在上市企业从事人工智能项目研发管理工作&#xff0c;平时热衷于分享各种编程领域的软硬技能知识以及前沿技术&#xff0c;包括iOS、前端、Harmony OS、Java、Python等…...

算法训练之位运算

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨ 个…...

初识Linux:常见指令与权限的理解,以及相关衍生知识

目录 前言 关于linux的简介 代码开源 网络功能强大 系统工具链完整 一、Linux下的基本指令 1.ls指令 2.pwd指令 3.cd指令 4.whoami指令 5.touch指令 6.mkdir指令 7.rm指令 8.man指令 9.cp指令 10.mv指令 11.nano指令 12.cat指令 13.tac指令 14.more指令 15.less指令 16.head指令…...

PostgreSQL-数据库的索引 pg_operator_oid_index 损坏

报错信息&#xff1a; 连接测试失败 Error connecting to database: Connection failed: ERROR: index "pg_operator_oid_index" contains unexpected zero page at block 3 Hint: Please REINDEX it. 这个错误表明 PostgreSQL 数据库的索引 pg_operator_oid_index …...

数字图像处理作业4

数字图像处理 作业4 Project 4&#xff1a;Image Restoration The scoring method for this project is as follows&#xff1a; 1&#xff0e;Implement a blurring filter using the equation&#xff08;5&#xff0e;6&#xff0d;11&#xff0c;数字图像处理&#xff08;…...

Simulink中Signal Builder在新版中找不到怎么办

在较新的MATLAB版本中&#xff0c;新版Simulink中的Signal Builder用Signal Editor作为替代工具。 signal builder not shown in matlab - MATLAB Answers - MATLAB Central signalBuilderToSignalEditor 1.打开上面第二个链接 2.点击拷贝 3.然后在命令行中粘贴 4.然后就会…...

STM32——RTC实时时钟

RTC简介 RTC&#xff08;Real Time Clock, RTC&#xff09;实时时钟&#xff0c;其本质是一个计数器&#xff0c;计数频率常为秒&#xff0c;专门用来记录时间。 其具有能提供时间(秒钟数)&#xff0c;能在MCU掉电后运行&#xff0c;低功耗的特性 内部框图 1. RTC预分频器 2. …...

sqli-labs靶场 less4

文章目录 sqli-labs靶场less 4 联合注入 sqli-labs靶场 每道题都从以下模板讲解&#xff0c;并且每个步骤都有图片&#xff0c;清晰明了&#xff0c;便于复盘。 sql注入的基本步骤 注入点注入类型 字符型&#xff1a;判断闭合方式 &#xff08;‘、"、’、“”&#xf…...

指针数组 vs 数组指针

一、指针数组&#xff1a;「数组装指针」—— 每个元素都是指针 &#x1f50d; 核心定义 语法&#xff1a;类型* 数组名[长度]; &#xff08;[]优先级高于*&#xff0c;先形成数组&#xff0c;元素是指针&#xff09;本质&#xff1a;一个 数组&#xff0c;数组的每个元素是 …...

GitHub优秀项目:数据湖的管理系统LakeFS

lakeFS 是一个开源工具&#xff0c;它将用户的对象存储转换为类似Git的存储库。使用户可以像管理代码一样管理数据湖。借助 lakeFS&#xff0c;可以构建可重复、原子化和版本化的数据湖操作--从复杂的ETL作业到数据科学和分析。 Stars 数11090Forks 数3157 主要特点 强大的数据…...

数据库视图讲解(view)

一、为什么需要视图 二、视图的讲解 三、总结 一、为什么需要视图 视图一方面可以帮我们使用表的一部分而不是所有的表&#xff0c;另一方面也可以针对不同的用户制定不同的查询视图。 比如&#xff0c;针对一个公司的销售人员&#xff0c;我们只想给他看部分数据&#xff0c…...

pip install pytrec_eval失败的解决方案

1、问题描述 在使用华为云 notebook 的时候&#xff0c;想要&#xff1a; !pip install transformer结果失败&#xff0c;阅读报错后&#xff0c;疑似是 pytrec_eval 库的下载问题。 于是&#xff0c;单独尝试&#xff1a; !pip install pytrec_eval发现确实是这个库安装失…...

使用stream的Collectors.toMap()方法常见问题

文章目录 一、常见问题二、key重复问题2.1、报错示例2.2、解决方法 三、value为空问题3.1、报错示例3.2、解决方法3.1、方案一3.2、方案二 一、常见问题 stream的Collectors.toMap()方法常见问题&#xff1a; 1、 key不能有重复&#xff0c;否则会报错。java.lang.IllegalStat…...

[C++面试] 初始化相关面试点深究

一、入门 1、C中基础类型的初始化方式有哪些&#xff1f;请举例说明 ​默认初始化​ 对于全局变量和静态变量&#xff0c;基础类型&#xff08;如int、float、double等&#xff09;会被初始化为 0&#xff1b;而对于局部变量&#xff0c;其值是未定义的&#xff0c;包含随机…...

ChatDBA:一个基于AI的智能数据库助手

今天给大家介绍一个基于 AI 大语言模型实现数据库故障诊断的智能助手&#xff1a;ChatDBA。 ChatDBA 是由上海爱可生信息技术股份有限公司开发&#xff0c;通过对话交互&#xff0c;提供数据库故障诊断、专业知识学习、SQL 生成和优化等功能&#xff0c;旨在提升 DBA 工作效率。…...

Java延迟队列

&#x1f4cc; 1. 场景背景 最近做项目&#xff0c;使用到了延迟队列。场景是这样的&#xff1a;在在线视频学习中&#xff0c;学生每隔几秒上报当前学习进度&#xff0c;为避免频繁写数据库、提升性能&#xff0c;采用以下方案&#xff1a; 先写入 Redis&#xff0c;再延迟一…...

神舟平板电脑怎么样?平板电脑能当电脑用吗?

在如今的数码产品市场上&#xff0c;神舟平板电脑会拥有独特的优势&#xff0c;其中比较受到大家关注的就是神舟PCpad为例&#xff0c;无论是设计还是规格也会有很多的亮点&#xff0c;那么是不是可以直接当成电脑一起来使用呢&#xff1f; 这款平板电脑就会配备10.1英寸显示屏…...

Ansible的使用3

#### 一、Ansible补充模块 try () { } catch () { } finally 等同于 block () { } rescue () { } always ##### 任务块 - block任务块 - 通过block关键字&#xff0c;将多个任务组合到一起 - 将整个block任务组&#xff0c;一…...

PS教学记录

PS制作手机壁纸和电脑壁纸 1. 思绪来源 找到了一位B站UP&#xff0c;分享了有关于灰原哀的动态壁纸。自身( •̀ ω •́ )也是名侦探柯南的爱好者&#xff0c;在此基础上&#xff0c;萌生了制作壁纸的想法。便在B站上搜寻有关于壁纸制作的教学。找到了一位壁纸分享者的教程镜…...

分析一下HashMap内部是怎么实现的

当然可以&#xff01;我们来深入分析一下 Java 中 HashMap 的内部实现机制&#xff08;以 JDK 8 为主&#xff09;&#xff0c;包括数据结构、核心算法、源码设计、以及适用场景。 &#x1f9e0; 一、HashMap 的核心结构 HashMap 是基于哈希表实现的 Map&#xff0c;底层结构是…...

面向对象的要素

理解面向对象 程序的三种基本结构 &#xff08;1&#xff09;顺序结构 &#xff08;2&#xff09;选择结构 &#xff08;3&#xff09;循环结构 面向对象程序设计简介 面向对象是一种更优秀的程序设计方法&#xff0c;它的基本思想是使用类、对象、继承、封装、消息等基本…...

Java基础 4.9

1.方法递归调用练习 //请使用递归的方式求出斐波那契数1, 1, 2, 3, 5, 8, 13 //给你一个整数n, 求出它的值是多少 /* 思路 n 1 1 n 2 1 n > 3 前两个数的和 递归的思路 */ public class RecursionExercise01 {public static void main(String[] args) {Mathod mathod ne…...

什么是堆?深入理解堆数据结构及其应用

粉丝提问 ⭐算法OJ⭐数据流的中位数【最小堆】Find Median from Data Stream 发表后收到一位粉丝的私信询问&#xff1a; “经常听说堆、堆排序、优先队列这些概念&#xff0c;但一直不太明白堆到底是什么&#xff0c;能简单解释一下吗&#xff1f;它和内存分配中的堆是一回事…...

程序化广告行业(73/89):买卖双方需求痛点及应对策略深度剖析

程序化广告行业&#xff08;73/89&#xff09;&#xff1a;买卖双方需求痛点及应对策略深度剖析 大家好&#xff01;一直以来&#xff0c;我都热衷于在技术领域探索学习&#xff0c;也深知知识的分享能让我们共同进步。写这篇博客的目的&#xff0c;就是希望能和大家一起深入了…...

C++ RAII 的用途及业务代码实现案例

C RAII 的用途及业务代码实现案例 RAII 的核心概念 RAII (Resource Acquisition Is Initialization&#xff0c;资源获取即初始化) 是 C 的核心编程范式&#xff0c;其核心思想是&#xff1a; 资源获取与对象构造绑定资源释放与对象析构绑定利用 C 对象生命周期自动管理资源…...

神经网络入门—自定义神经网络续集

修改网络 神经网络入门—自定义网络-CSDN博客 修改数据集&#xff0c;yx^2 # 生成一些示例数据 x_train torch.tensor([[1.0], [2.0], [3.0], [4.0]], dtypetorch.float32) y_train torch.tensor([[1.0], [4.0], [9.0], [16.0]], dtypetorch.float32) 将预测代码改为&…...

【C语言】浮点数在内存的储存

前言&#xff1a; 在上章&#xff0c;了解了整数在内存中的储存&#xff0c;在本章节为大家继续讲解浮点数的储存&#xff0c;也是数据储存的最后一部分。 浮点数是计算机科学中一种重要的数据类型&#xff0c;用于表示实数。它能够表示非常大或非常小的数值&#xff0c;并且…...

安装 Calico 的两种主流方式对比

本文对比了 Calico 的两种主流安装方式&#xff1a; 使用 calico.yaml 的 Manifest 安装方式使用 Tigera Operator&#xff08;tigera-operator.yaml custom-resources.yaml&#xff09;安装方式 ✅ 1. 使用 Manifest 方式安装&#xff08;直接部署 calico.yaml&#xff09; …...

信用卡欺诈检测实战教程:从数据预处理到模型优化全解析

引言&#xff1a;为什么需要信用卡欺诈检测&#xff1f; 根据尼尔森报告&#xff0c;全球每年因信用卡欺诈造成的损失超过250亿美元&#xff0c;金融机构需要在0.1秒内完成交易风险评估。本文将带您从零构建基于机器学习的信用卡欺诈检测系统&#xff0c;完整代码可视化分析&a…...

android studio编译报错 Gradle

android studio 提示 Could not install Gradle distribution from https://services.gradle.org/distributions/gradle-8.0.2-bin.zip. Reason: java.net.SocketTimeoutException: Read timed out 一&#xff0c;手动下载 https://services.gradle.org/distributions/gradle…...

【Nodebb系列】Nodebb笔记写入方案

NodeBB写入方案 前言 最近在整理以前记录的碎片笔记,想把它们汇总到NodeBB中,方便管理和浏览。但是笔记内容有点多,并且用发帖的形式写到NodeBB中会丢失时间信息,因此整理了一套NodeBB写入方案,大致流程如下: 建立标准笔记格式导出原始笔记,并编写脚本将笔记内容转换为…...

Spring Boot 集成 POI

Spring Boot 集合 POI Apache POI 官站&#xff1a;https://poi.apache.org/ 基础概念 Apache POI 是一个开源项目&#xff0c;提供 Java API 用于操作 Microsoft Office 文件格式。Apache POI 对 Excel 文件的处理分为两个主要类库&#xff1a; HSSF (Horrible Spreadsheet …...

8个方向使用DeepSeek打磨完美课题申报书!

一份出色的课题申报书&#xff0c;往往就是项目获批的关键。撰写高质量课题申报书绝非易事&#xff0c;它需要您在选题切入点、研究价值论证、技术路线设计、团队优势呈现、经费规划和预期成果等多维度进行精心布局&#xff0c;确保论证有力、重点突出、结构清晰。 本文为您提供…...

Leetcode 34.在排序数组中查找元素的第一个和最后一个位置

题目描述 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 考察二…...

ctfshow VIP题目限免 密码逻辑脆弱

根据题目提示&#xff1a;公开的信息比如邮箱&#xff0c;可能造成信息泄露&#xff0c;产生严重后果 在页面上找一个邮箱号 从 QQ 上面搜索这个 QQ号&#xff0c;发现是一个叫大牛的人&#xff0c;地区是陕西西安 然后我们拼接访问 /admin 发现了一个后台登录系统的页面&…...

C++初级入门学习

数据结构初级部分的学习我们已经学完了&#xff0c;接下来就进入C初阶部分的学习&#xff0c;因为数据结构的高阶部分要用到C才能够更好的理解并书写&#xff0c;所以我们要先学习C&#xff0c;初阶部分学完就能继续学习我们对数据结构了。好了&#xff0c;直接进入今天的主题吧…...

2025年汽车加气站操作工证考试内容

汽车加气站操作工证是从事汽车加气站相关操作工作的人员需要考取的资格证书 考试内容 理论知识&#xff1a;包括加气站的工艺流程、设备原理、安全操作规程、气体性质、消防知识、环境保护等方面的知识。例如&#xff0c;需要了解压缩天然气或液化天然气的储存、运输和加注流…...

python爬虫:喜马拉雅案例(破解sign值)

声明&#xff1a; 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff…...

嵌入式AI前沿:精选工具与应用网站解析

1. Edge Impulse 网址&#xff1a;https://www.edgeimpulse.com/核心内容&#xff1a; 提供端到端的嵌入式AI开发平台&#xff0c;简化从数据收集到模型训练再到部署的全流程。支持多模态数据处理&#xff08;音频、视觉、运动等&#xff09;&#xff0c;并优化模型以在资源受…...

【论文精读】Multi-scale Neighbourhood Feature Interaction Network

摘要&#xff08;ABSTRACT&#xff09; 光伏发电是工业领域的关键组成部分&#xff0c;其能量转换效率受光伏电池表面缺陷的显著影响。近年来&#xff0c;深度学习模型的广泛应用推动了缺陷检测技术的进步。然而&#xff0c;由于光伏电池缺陷尺寸差异较大&#xff08;尤其是微…...

C++ 蓝桥云课代码练习

代码一 &#xff0c;小明的背包1&#xff0c;代码见下 #include <iostream> #include <cstring> using namespace std;#define maxn 110 #define maxm 1001 #define inf -1int w[maxn], v[maxn]; int dp[maxn][maxm];int main() {memset(dp, inf, sizeof(dp));dp[…...

微软庆祝它成立整整50周年

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

android 启动四大组件

在 Android 开发中&#xff0c;启动通常是指启动一个 Activity、Service、BroadcastReceiver 或其他组件。以下是一些常见的启动方式&#xff1a; 1. 启动一个 Activity 要启动一个 Activity&#xff0c;可以使用 Intent。以下是一个示例代码&#xff1a; 示例&#xff1a;启…...

C# 串口通信

1. 导入 using System.IO.Ports;2. 初始化定义 SerialPort sp new SerialPort(); // 设置串口 sp.PortName "COM3"; // 串口 sp.BaudRate 9600; // 波特率 sp.Parity Parity.None; // 校验位 sp.DataBits 8; // 数据位 sp.StopBits StopBits.One; // 停…...

Spring事务详解

一、Spring对事务的支持 1.事务概述 什么是事务 在一个业务流程当中&#xff0c;通常需要多条DML&#xff08;insert delete update&#xff09;语句共同联合才能完成&#xff0c;这多条DML语句必须同时成功&#xff0c;或者同时失败&#xff0c;这样才能保证数据的安全。 多…...

单片机FreeRTOSTickless低功耗模式应用示例

Tickless低功耗模式在很多需要延长电池寿命或减少能耗的场景中非常有用&#xff0c;特别是在那些大部分时间处于空闲状态的系统中。 以下是一些使用Tickless模式的场景和例子&#xff1a; 1.传感器节点在物联网&#xff08;IoT&#xff09;中&#xff0c;许多传感器节点需要长…...

2025.4.9总结

今天周三&#xff0c;晚上默认不加班&#xff0c;每到闲暇的时候&#xff0c;总会瞎想。 如今想想&#xff0c;是要多提升提升自身的软实力了。硬实力&#xff0c;是你的专业技能&#xff0c;是你吃饭的东西&#xff0c;而软实力则体现在人际交往&#xff0c;表达能力等方面。…...

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

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