【KWDB 创作者计划】Docker单机环境下KWDB集群快速搭建指南
【KWDB 创作者计划】Docker 单机环境下 KaiwuDB集群快速搭建指南
- 前言
- 一、KWDB介绍
- 1.1 KWDB简介
- 1.2 主要特点
- 1.3 典型应用场景
- 二、环境介绍
- 2.1 部署环境要求
- 2.2 本地环境规划
- 2.3 本次部署介绍
- 三、下载容器镜像
- 四、创建相关证书文件
- 4.1 创建部署目录
- 4.2 创建证书文件
- 4.3 查看证书相关文件
- 五、安全部署模式
- 5.1 创建KWDB数据库实例1
- 5.2 创建KWDB数据库实例2
- 5.3 创建KWDB数据库实例3
- 5.4 检查各容器实例状态
- 5.5 初始化集群
- 六、访问KWDB集群
- 6.1 访问KWDB集群
- 6.2 查询数据库版本
- 6.3 查询集群状态
- 七、测试数据同步
- 7.1 创建用户和密码
- 7.2 查询实例1的用户
- 7.3 在实例2与实例3中查询用户
- 八、实践总结
前言
KWDB
是一款高性能、强一致的分布式数据库,具备高可用、易扩展、安全可靠等特性,适用于金融、物联网、实时大数据分析等多种场景。本文档旨在指导用户在Docker单机环境下快速搭建KWDB集群
,体验其核心功能与部署流程。通过本指南,用户将掌握安全部署模式下的集群搭建、数据访问与同步测试等关键操作,为后续深入使用打下坚实基础。本实践面向技术爱好者和开发者,帮助其快速上手国产自研数据库的前沿代表——KWDB
。
一、KWDB介绍
1.1 KWDB简介
KWDB
是一款面向 AIoT 场景的分布式、多模融合数据库产品。 支持在同一个实例中建立时序库和关系库,并统一处理多种类型的数据,具备对海量时序数据的高效读写与分析能力。 产品具备高可用、安全稳定、易运维等特性,广泛应用于工业物联网、数字能源、车联网、智慧矿山等多个行业领域,为用户提供一站式数据存储、管理与分析的基础平台。
1.2 主要特点
- 高性能处理能力:支持海量时序数据高速读写,提供插值查询、数学函数等丰富的时序特色功能,提升应用效率。
- 低运管成本:统一存储与管理多模数据,一套系统满足跨业务、跨部门数据融合需求,降低企业IT与运维投入。
- 低存储成本:支持 5-30 倍数据压缩比,结合数据生命周期管理策略,灵活控制数据保留时间,显著节省存储资源。
- 高安全性:提供数据库审计与加密机制,保障数据在复杂业务场景下的安全稳定运行。
- 易用性强:提供标准 SQL 接口、高速写入、极速查询、集群部署等能力,与第三方工具无缝集成,开发运维更便捷。
1.3 典型应用场景
应用场景 | 场景描述 |
---|---|
工业物联网 | 支持 SCADA/DCS 系统对接,统一存储设备实时数据与生产管理数据,助力智能化生产分析。 |
数字能源 | 融合传感器与业务数据,实现调峰调频分析与实时预警,推动能源系统智能化升级。 |
车联网 | 高速写入车端传感器数据,支撑车辆状态监控与上层业务分析,打造智能车联网解决方案。 |
智慧矿山 | 统一处理采选冶全流程中的关系与时序数据,打通多业务系统,提升矿山数字化水平。 |
二、环境介绍
2.1 部署环境要求
- KWDB数据库的硬件规格要求
项目 | 要求 |
---|---|
CPU 和内存 | 单节点建议配置不低于 4 核心 CPU 和 8 GB 内存。对于数据量大、复杂的工作负载、高并发以及对性能要求较高的场景,建议增加 CPU 核心数和内存容量,以确保系统的高效运行和稳定性。 |
磁盘 | - 推荐使用 SSD 或 NVMe 存储设备,避免使用 NFS、CIFS、CEPH 等共享存储。 - 磁盘需具备至少 500 IOPS(每秒输入输出操作次数)和 30 MB/s 的处理效率,以满足数据库的读写需求。 |
文件系统 | 建议使用 ext4 文件系统,以提供良好的兼容性和性能表现。 |
备注 | 在实际部署过程中,用户应根据具体的业务规模和性能需求灵活规划硬件资源,确保系统能够高效稳定地运行。 |
- KWDB 支持在以下已安装 Docker的操作系统中进行容器部署
操作系统 | 版本 | 架构 |
---|---|---|
Anolis | 7.9 | ARM_64、x86_64 |
Anolis | 8.6 | ARM_64、x86_64 |
CentOS | 7 | x86_64 |
CentOS | 8 | x86_64 |
Debian | V11 | ARM_64 |
KylinOS | V10 SP3 2403 | ARM_64、x86_64 |
KylinOS | V10 SP3 2303 | ARM_64、x86_64 |
openEuler | 22.03 | x86_64 |
Ubuntu | V18.04 | x86_64 |
Ubuntu | V20.04 | ARM_64、x86_64 |
Ubuntu | V22.04 | ARM_64、x86_64 |
Ubuntu | V24.04 | ARM_64、x86_64 |
UOS | 1050e | x86_64 |
UOS | 1060e | ARM_64、x86_64 |
UOS | 1070e | x86_64 |
2.2 本地环境规划
本次实践为个人测试环境,操作系统版本为Ubuntu 22.04.1。
hostname | IP地址 | 操作系统版本 | Docker版本 | 部署项目 | 备注 |
---|---|---|---|---|---|
jeven01 | 192.168.3.88 | Ubuntu 22.04.1 LTS | 27.1.1 | KaiwuDB集群 | 安全模式部署 |
2.3 本次部署介绍
本次实践将在Docker环境中以安全模式快速部署KaiwuDB单机集群,用于体验KWDB数据库的基本功能。整个过程操作简便,适合快速上手。
三、下载容器镜像
执行以下命令,拉取KWDB容器镜像。本次实践所使用的KWDB镜像为
kwdb/kwdb:2.2.0
。
root@jeven01:/data/kwdb# docker pull kwdb/kwdb:2.2.0
2.2.0: Pulling from kwdb/kwdb
Digest: sha256:9dda946922a69557e20be9f1d99c504c467fba6351bb8af0a34fe42711cde73f
Status: Image is up to date for kwdb/kwdb:2.2.0
docker.io/kwdb/kwdb:2.2.0
四、创建相关证书文件
4.1 创建部署目录
在我们需要先提前创建好部署目录,这里直接创建
/data/kwdb
目录
mkdir -p /data/kwdb && cd /data/kwdb/
4.2 创建证书文件
如需以安全模式部署KWDB集群,需使用命令创建CA证书、root用户客户端证书及节点服务器证书。若为跨节点部署,还需为每个节点生成并分发证书和密钥,并将root用户证书复制到需要访问集群的其他节点。
docker run --rm --privileged \-v /data/kwdb/certs:/kaiwudb/certs \-w /kaiwudb/bin \kwdb/kwdb:2.2.0 \bash -c './kwbase cert create-ca --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key && \./kwbase cert create-client root --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key && \./kwbase cert create-node 127.0.0.1 localhost 0.0.0.0 192.168.3.88 --certs-dir=/kaiwudb/certs --ca-key=/kaiwudb/certs/ca.key'
4.3 查看证书相关文件
- 查看证书目录/data/kwdb/certs,可以看到已经生成相关证书文件,包括CA证书、root用户客户端证书及节点服务器证书等。
root@jeven01:/data/kwdb# ll certs/
total 32
drwxr-xr-x 2 root root 4096 May 3 13:35 ./
drwxr-xr-x 3 root root 4096 May 3 13:28 ../
-rw-r--r-- 1 root root 1123 May 3 13:35 ca.crt
-rw------- 1 root root 1679 May 3 13:35 ca.key
-rw-r--r-- 1 root root 1127 May 3 13:35 client.root.crt
-rw------- 1 root root 1679 May 3 13:35 client.root.key
-rw-r--r-- 1 root root 1192 May 3 13:35 node.crt
-rw------- 1 root root 1679 May 3 13:35 node.key
五、安全部署模式
5.1 创建KWDB数据库实例1
我们以安全模式部署KWDB集群,创建KWDB数据库实例1,注意将本机的192.168.3.88替换为自己服务器的本地IP地址。
docker run -d --name kwdb1 --privileged \--ulimit memlock=-1 --ulimit nofile=1048576 \-p 26257:26257 -p 8080:8080 \-v /data/kwdb/certs:/kaiwudb/certs \-v /data/kwdb/kaiwudb1:/kaiwudb/deploy/kaiwudb-container \--ipc shareable -w /kaiwudb/bin \kwdb/kwdb:2.2.0 \./kwbase start --certs-dir=/kaiwudb/certs --listen-addr=0.0.0.0:26257 \--advertise-addr=192.168.3.88:26257 --http-addr=0.0.0.0:8080 \--store=/kaiwudb/deploy/kaiwudb-container --join 192.168.3.88:26257
- 主要参数解释:
参数 | 说明 |
---|---|
--privileged | 赋予容器扩展权限,提升容器内操作的灵活性和控制能力。 |
--ulimit memlock=-1 | 取消内存锁定限制,避免因内存不足导致数据库异常。 |
--ulimit nofile=1048576 | 设置容器内进程可打开的最大文件数为 1048576,满足高并发场景需求。 |
-p 26257:26257 | 映射数据库服务端口(宿主机端口:容器端口),用于客户端连接访问。 |
-p 8080:8080 | 映射 HTTP 管理界面端口(宿主机端口:容器端口),用于通过浏览器访问监控页面。 |
-v /data/kwdb/certs:/kaiwudb/certs | 挂载证书目录,用于安全模式下存放 CA 证书、节点证书及密钥。 |
-v /data/kwdb/kaiwudb1:/kaiwudb/deploy/kaiwudb-container | 数据持久化挂载点,确保容器重启后数据不丢失。 |
--ipc shareable | 启用共享 IPC 命名空间,允许其他容器与其进行进程间通信。 |
-w /kaiwudb/bin | 设置容器内工作目录为 /kaiwudb/bin ,启动命令在此目录下执行。 |
kwdb/kwdb:2.2.0 | 使用的 Docker 镜像名称及标签,表示具体的镜像版本。 |
./kwbase start ... | 容器启动时执行的数据库初始化与运行命令,包含集群配置参数。 |
--certs-dir=/kaiwudb/certs | 指定证书存储目录(仅适用于安全模式)。 |
--listen-addr=0.0.0.0:26257 | 监听所有网络接口的指定端口,接受来自外部的数据库连接请求。 |
--advertise-addr=192.168.3.88:26257 | 指定该节点在集群中对外公布的地址和端口,供其他节点通信使用。 |
--http-addr=0.0.0.0:8080 | 指定 HTTP 接口监听地址和端口,用于访问 Web 控制台。 |
--store=/kaiwudb/deploy/kaiwudb-container | 设置数据库数据文件的存储路径。 |
--join 192.168.3.88:26257 | 加入现有集群时使用的节点地址,可指定一个或多个初始节点。 |
5.2 创建KWDB数据库实例2
我们以安全模式部署KWDB集群,创建KWDB数据库实例2,注意将本机的192.168.3.88替换为自己服务器的本地IP地址。
docker run -d --name kwdb2 --privileged \--ulimit memlock=-1 --ulimit nofile=1048576 \-p 26258:26257 -p 8081:8080 \-v /data/kwdb/certs:/kaiwudb/certs \-v /data/kwdb/kaiwudb2:/kaiwudb/deploy/kaiwudb-container \--ipc shareable -w /kaiwudb/bin \kwdb/kwdb:2.2.0 \./kwbase start --certs-dir=/kaiwudb/certs --listen-addr=0.0.0.0:26257 \--advertise-addr=192.168.3.88:26258 --http-addr=0.0.0.0:8080 \--store=/kaiwudb/deploy/kaiwudb-container --join 192.168.3.88:26257
5.3 创建KWDB数据库实例3
我们以安全模式部署KWDB集群,创建KWDB数据库实例3,注意将本机的192.168.3.88替换为自己服务器的本地IP地址。
docker run -d --name kwdb3 --privileged \--ulimit memlock=-1 --ulimit nofile=1048576 \-p 26259:26257 -p 8082:8080 \-v /data/kwdb/certs:/kaiwudb/certs \-v /data/kwdb/kaiwudb3:/kaiwudb/deploy/kaiwudb-container \--ipc shareable -w /kaiwudb/bin \kwdb/kwdb:2.2.0 \./kwbase start --certs-dir=/kaiwudb/certs --listen-addr=0.0.0.0:26257 \--advertise-addr=192.168.3.88:26259 --http-addr=0.0.0.0:8080 \--store=/kaiwudb/deploy/kaiwudb-container --join 192.168.3.88:26257
5.4 检查各容器实例状态
检查各KWDB容器状态,确保容器正常运行。
root@jeven01:/data/kwdb# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
01f1dc5471bc kwdb/kwdb:2.2.0 "./kwbase start --ce…" 56 seconds ago Up 55 seconds 0.0.0.0:8082->8080/tcp, :::8082->8080/tcp, 0.0.0.0:26259->26257/tcp, :::26259->26257/tcp kwdb3
2581b7166274 kwdb/kwdb:2.2.0 "./kwbase start --ce…" About a minute ago Up About a minute 0.0.0.0:8081->8080/tcp, :::8081->8080/tcp, 0.0.0.0:26258->26257/tcp, :::26258->26257/tcp kwdb2
e9b13a92fd0b kwdb/kwdb:2.2.0 "./kwbase start --ce…" 2 minutes ago Up 2 minutes 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:26257->26257/tcp, :::26257->26257/tcp kwdb1
5.5 初始化集群
执行以下命令,初始化KWDB集群。
docker exec kwdb1 ./kwbase init --certs-dir=/kaiwudb/certs --host=192.168.3.88:26257
六、访问KWDB集群
6.1 访问KWDB集群
使用
kwbase
CLI 工具连接 KaiwuDB,如下所示:
docker exec -it kwdb1 ./kwbase sql --certs-dir=/kaiwudb/certs --host=192.168.3.88:26257
6.2 查询数据库版本
我们查询当前安装的KWDB数据库版本,可以看到当前安装的版本为2.2.0版本。
SELECT version();
6.3 查询集群状态
退出KWDB集群,执行以下命令,查询当前KWDB集群状态。
root@jeven01:/data/kwdb# docker exec -it kwdb1 ./kwbase node status --certs-dir=/kaiwudb/certsid | address | sql_address | build | started_at | updated_at | locality | start_mode | is_available | is_live
-----+--------------------+--------------------+-------+----------------------------------+----------------------------------+--------------+------------+--------------+----------1 | 192.168.3.88:26257 | 192.168.3.88:26257 | 2.2.0 | 2025-05-03 13:50:13.477659+00:00 | 2025-05-03 13:59:49.518005+00:00 | region=NODE1 | start | true | true2 | 192.168.3.88:26258 | 192.168.3.88:26258 | 2.2.0 | 2025-05-03 13:50:13.742053+00:00 | 2025-05-03 13:59:49.767398+00:00 | region=NODE2 | start | true | true3 | 192.168.3.88:26259 | 192.168.3.88:26259 | 2.2.0 | 2025-05-03 13:50:14.102759+00:00 | 2025-05-03 13:59:50.12104+00:00 | region=NODE3 | start | true | true
(3 rows)
七、测试数据同步
7.1 创建用户和密码
我们再次进入KWDB集群内,执行以下命令:
docker exec -it kwdb1 ./kwbase sql --certs-dir=/kaiwudb/certs --host=192.168.3.88:26257
创建用户 jeven,设置密码为 jeven1234,并赋予管理员权限(角色为 admin)。
CREATE USER jeven WITH PASSWORD 'jeven1234';
GRANT admin TO jeven;
7.2 查询实例1的用户
在KWDB实例1中,我们查询新建jeven用户。
root@192.168.3.88:26257/defaultdb> SHOW USERS;username | options | member_of
-----------+------------+------------admin | CREATEROLE | {}jeven | | {admin}root | CREATEROLE | {admin}
(3 rows)Time: 10.348748ms
7.3 在实例2与实例3中查询用户
退出当前的 KWDB 数据库会话,连接到KWDB实例2中,可以看到用户jeven已经成功同步创建。
root@jeven01:/data/kwdb# docker exec -it kwdb2 ./kwbase sql --certs-dir=/kaiwudb/certs --host=192.168.3.88:26257
#
# Welcome to the KWDB SQL shell.
# All statements must be terminated by a semicolon.
# To exit, type: \q.
#
# Server version: KaiwuDB 2.2.0 (x86_64-linux-gnu, built 2025/03/31 07:20:02, go1.16.15, gcc 11.4.0) (same version as client)
# Cluster ID: f8c4840f-e0b9-44bc-a16e-fab1877b1daa
#
# Enter \? for a brief introduction.
#
root@192.168.3.88:26257/defaultdb> show users;username | options | member_of
-----------+------------+------------admin | CREATEROLE | {}jeven | | {admin}root | CREATEROLE | {admin}
(3 rows)Time: 5.067895ms
退出当前的 KWDB数据库会话,连接到KWDB实例3中,可以看到用户jeven已经成功同步创建。
docker exec -it kwdb3 ./kwbase sql --certs-dir=/kaiwudb/certs --host=192.168.3.88:26257
show users;
八、实践总结
本次基于Docker的
KWDB
安全部署实践顺利完成,成功搭建了多节点集群并完成了数据访问与同步测试,验证了KWDB
强大的分布式能力与稳定性。整个部署过程逻辑清晰、操作高效,体现出KWDB良好的文档支持和易用性。通过直观的命令行工具和可视化监控界面,进一步展示了其在集群管理与运维方面的优势。作为一款优秀的国产自研数据库,KWDB
在性能、功能与安全性方面表现突出,具备广阔的应用前景,值得深入研究与推广使用。
相关文章:
【KWDB 创作者计划】Docker单机环境下KWDB集群快速搭建指南
【KWDB 创作者计划】Docker 单机环境下 KaiwuDB集群快速搭建指南 前言一、KWDB介绍1.1 KWDB简介1.2 主要特点1.3 典型应用场景 二、环境介绍2.1 部署环境要求2.2 本地环境规划2.3 本次部署介绍 三、下载容器镜像四、创建相关证书文件4.1 创建部署目录4.2 创建证书文件4.3 查看证…...
基于51单片机和LCD1602、矩阵按键的小游戏《猜数字》
目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、LCD16022、矩阵按键3、定时器0 四、主函数总结 系列文章目录 前言 用的是普中A2开发板,用到板上的矩阵按键,还需要外接一个LCD1602液晶显示屏。 【单片机】STC89C52RC 【频率】12T11.05…...
从广义线性回归推导出Softmax:理解多分类问题的核心
文章目录 引言:从回归到分类广义线性模型回顾从二分类到多分类Softmax函数的推导建模多类概率基于最大熵原理具体推导步骤Softmax函数的数学形式 Softmax回归模型参数的可辨识性 最大似然估计与交叉熵损失似然函数交叉熵损失梯度计算 Softmax回归的实现要点数值稳定…...
传奇各版本迭代时间及内容变化,屠龙/嗜魂法杖/逍遥扇第一次出现的时间和版本
【早期经典版本】 1.10 三英雄传说:2001 年 9 月 28 日热血传奇正式开启公测,这是传奇的第一个版本。游戏中白天与黑夜和现实同步,升级慢,怪物爆率低,玩家需要靠捡垃圾卖金币维持游戏开销,遇到高级别法师…...
云计算-私有云-私有云运维开发
三、私有云运维开发(15) 使用自动化运维工具 Ansible 完成系统的自动化部署与管理。 基于 OpenStack APIs 与SDK,开发私有云运维程序 1.OpenStack Python运维开发:实现镜像管理(7分) 编写Python代…...
hadoop存储数据文件原理
Hadoop是一个开源的分布式计算框架,可以用于存储和处理大规模数据集。Hadoop的存储系统基于Hadoop Distributed File System(HDFS),它的主要原理如下: 数据切块:当用户向HDFS中存储一个文件时,该…...
spring2.x详解介绍
一、核心架构升级 Spring 2.x 是 Spring 框架的重要迭代版本(2006-2009年间发布),其核心改进体现在 模块化设计 和 轻量化配置 上。相较于 1.x 版本,2.x 通过以下方式重构了架构: XML Schema 支持:弃用 D…...
探索Grok-3的高级用法:功能与应用详解
引言 随着人工智能技术的迅猛发展,xAI推出的Grok-3模型以其卓越的性能和创新功能,成为AI领域的新标杆。Grok-3不仅在计算能力上实现了十倍提升,还引入了多种高级模式和实时数据处理能力,适用于学术研究、技术分析、市场洞察等多场…...
PyTorch_张量转换为numpy数组
使用 tensor.numpy 函数可以将张量转换为 ndarray 数组,但是共享内存,可以使用 copy 函数避免共享。共享内存会导致张量或者numpy中的其中一个更改后,另外一个会受到影响。 代码 import torch # 张量转换为 numpy 数组 def test01():data_te…...
什么是“原子变量”?
原子变量(std::atomic)在C++中是一个非常关键的机制,特别是在多线程编程中保持数据安全和避免竞争条件。它的设计目标就是让一段操作在多线程环境下变得“原子性”,即不可被中断,保证操作的完整与一致。 一、什么是“原子变量”? 简单来说: 普通变量:在多线程环境中,…...
[Linux开发工具]gcc/g++
C语言文件编译运行 gcc code.c -o mycode gcc -o mycode code.c 预处理 汇编 编译 链接 预处理(进行宏替换/去注释/条件编译/头文件展开) gcc -E code.c -o code.i -E ->从现在开始进行程序的编译,当我们 的程序预处理完毕后,翻译工作,就停下来 code.i预处理之后的结果 …...
【Mytais系列】Type模块:类型转换
MyBatis 的 类型系统(Type System) 是框架处理 Java 类型与数据库类型之间映射的核心模块,它通过 类型处理器(TypeHandler)、类型别名(TypeAlias) 和 类型转换器 等机制,实现了数据库…...
C++类_虚基类
在 C 里,虚基类是用来解决菱形继承问题的。菱形继承问题是指当一个派生类从两个或更多基类派生,而这些基类又从同一个基类派生时,派生类会包含多份间接基类的数据副本,这可能会引发数据冗余和二义性问题。虚基类可以保证在派生类中…...
【自然语言处理与大模型】使用Xtuner进行模型合并与导出
在上一篇文章中我为大家介绍了Xtuner框架如何进行QLoRA微调,这个框架在微调过后会得到适配器权重文件,它的后缀是.pth。但原模型都是huggingface模型,其后缀是safetensors。所以呢我们在使用这个框架导出模型之前要合并,合并之前要…...
数据结构4.0
大家好,今天是栈的知识点~ 目录 一、栈的概念 1.0 栈的概念 2.0 概念区分 二、栈的方法 1.0 MyStack方法: 2.0 将元素压入栈顶 3.0 移除并返回栈顶元素 4.0 返回栈顶元素但不移除 三、栈的题目 1.0括号匹配 2.0逆波兰表达式求值 3.0 出栈…...
SMT贴片检验标准核心要点与实施规范
内容概要 SMT贴片检验标准是确保电子产品组装质量的核心框架,其核心要点覆盖从原材料到成品的全流程工艺控制。该标准体系以焊点质量、元件定位精度及锡膏印刷检测为技术基线,结合IPC-A-610电子组装验收规范,对PCBA加工中的缺陷类型、判定阈…...
探索 C++23 std::to_underlying:枚举底层值获取的利器
文章目录 引言基本概念作用使用示例与之前方法的对比在 C23 中的意义总结 引言 在 C 的发展历程中,每一个新版本都带来了许多令人期待的新特性和改进,以提升代码的安全性、可读性和可维护性。C23 作为其中的一个重要版本,也不例外。其中&…...
PyTorch学习之张量(Tensor)(一)
1. 张量的基本概念 1.1. 定义与特性 张量是PyTorch中最基础的数据结构,可视为多维数组的泛化形式,支持标量(0维)、向量(1维)、矩阵(2维)及更高维度的数据存储。其核心特性包括&…...
理解数学概念——支集(支持)(support)
1. 支集(support)的定义 在数学中,一个实函数 f 的支集(support)是函数的不被映射到 0 的元素域(即定义域)的子集。若 f 的(定义)域(domain)是一个拓扑空间(即符合拓扑的集合),则 f 的支集则定义为包含( f 的元素域中)不被映射到0的所有点之最小闭集…...
Python 部分内置函数及其用法详解
在 Python 编程的世界里,内置函数是我们强大的 “工具箱”,它们提供了丰富而便捷的功能,帮助我们高效地完成各种任务。本文将带你深入了解这些常用内置函数及其用法,通过简单易懂的实例,让你轻松掌握它们。 一、数据类…...
[蓝桥杯真题题目及解析]2025年C++b组
移动距离(填空)** 小明初始在二维平面的原点,他想前往坐标 (233,666)。在移动过程中,他只能采用以下两种移动方式,并且这两种移动方式可以交替、不限次数地使用: 水平向右移动,即沿着 x 轴正方…...
yolov5 train笔记4 roboflow
How to Train a YOLOv5 Model On a Custom Dataset Sign in to Roboflow https://www.youtube.com/watch?vr3Ke7ZEh2Qo 他的ai懂中文的 还是得训练,明天再搞 https://www.youtube.com/watch?vEmYCpbFQ5wo&t2s 很香但是我没有马内...
工作记录 2015-06-01
工作记录 2015-06-01 序号 工作 相关人员 1 修改了FnetFax 修改了iConverter 修改了iCDA 郝 FNSR识别引擎 统计了最近几个星期0223医院的打字和录音的时间比。上周的比值是3.42,是近8个星期中最低的值。和05/03/2015 - 05/09/2015的3.74相比,下降…...
创意Python爱心代码分享
在代码的世界里,程序员以独特方式书写浪漫。他们精心打造的一个个 demo,宛如熠熠星辰。这些 demo 不仅是技术结晶,更饱含对编程的热爱与执着。从简洁的算法示例到复杂的系统雏形,每一行代码都凝聚着思考与智慧。它们被无私分享&am…...
【RAG】向量?知识库的底层原理:向量数据库の技术鉴赏 | HNSW(导航小世界)、LSH、K-means
一、向量化表示的核心概念 1.1 特征空间与向量表示 多维特征表示:通过多个特征维度(如体型、毛发长度、鼻子长短等)描述对象,每个对象对应高维空间中的一个坐标点,来表示狗这个对象,这样可以区分出不同种…...
降维大合集
1. 主成分分析(PCA,Principal Component Analysis) 基本原理 PCA 是一种线性降维方法,其核心思想是: 找到数据中方差最大的方向(称为主成分),并将数据投影到这些方向上。 利用正交变…...
AWS上构建基于自然语言和LINDO API的线性规划与非线性规划的优化计算系统
我想要实现一个通过使用C#、Semantic Kernel库、OpenAI GPT 4的API和附件文档里提到的LINDO API 15.0实现通过中文自然语言提示词中包含LATEX代码输入到系统,通过LINDO API 15.0线性规划与非线性规划的优化计算程序输出计算结果和必要步骤的应用,结果用中…...
26考研 | 王道 | 计算机网络 | 第三章 数据链路层
26考研 | 王道 | 第三章 数据链路层 数据链路层所处的地位 数据链路层 使用 物理层 提供的“比特传输”服务数据链路层 为 网络层 提供服务,将网络层的 IP数据报(分组)封装成帧,传输给下一个相邻结点物理链路:传输介质…...
学习黑客资产威胁分析贴
第一天作业: 完成作业奖励: 🎁 奖励 1 ── Week 2《Web 渗透手册》预览 Day主题关键目标练手靶场 / 工具1HTTP 基础 & Burp 入门抓包、改包、重放PortSwigger Academy:“HTTP basics”2SQL 注入原理手工注入 sqlmapDVWA →…...
CSS元素动画篇:基于当前位置的变换动画(合集篇)
CSS元素动画篇:基于当前位置的变换动画(合集篇) 前言位移效果类元素动画水平抖动效果效果预览代码实现 垂直抖动效果效果预览代码实现 摇头动画效果效果预览代码实现 点头动画效果效果预览代码实现 旋转效果类元素动画摇摆动画效果效果预览代…...
Spring 容器相关的核心注解
以下是 Spring 容器中用于 Bean 管理、依赖注入、配置控制 的关键注解,按功能分类说明: 1. Bean 声明与注册 注解作用示例Component通用注解,标记一个类为 Spring Bean(自动扫描注册) Compo…...
经典算法 最小生成树(prim算法)
最小生成树 题目描述 给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。 求最小生成树的树边权重之和。如果最小生成树不存在,则输出 impossible。 给定一张边带权的无向图 G (V, E),其中:…...
机器学习中的分类和回归问题
1. 分类问题 机器学习中的分类问题是一种监督学习任务,其核心目标是将数据样本分配到预定义的离散类别中,例如判断邮件是否为垃圾邮件、识别图像中的物体类型等。 分类通过已知标签的训练数据(如带类别标注的样本)学习特征与类别…...
pip命令
安装&卸载 -- 安装numpy pip install numpy1.26.4 -- 从索引安装(自定义源) pip install package_name --index-url https://custom_url -- 安装本地文件或目录 pip install /path/to/package.whl pip install D:\Downloads\transformers-4.40.0-py…...
n8n工作流自动化平台的实操:Cannot find module ‘iconv-lite‘
解决问题: 1.在可视化界面,执行const iconv require(iconv-lite);,报Cannot find module iconv-lite [line 2]错误; 查看module的路径 进入docker容器 #docker exec -it n8n /bin/sh 构建一个test.js,并写入如何代码 vi tes…...
AIGC时代——语义化AI驱动器:提示词的未来图景与技术深潜
文章目录 一、技术范式重构:从指令集到语义认知网络1.1 多模态语义解析器的进化路径1.2 提示词工程的认知分层 二、交互革命:从提示词到意图理解2.1 自然语言交互的认知进化2.2 专业领域的认知增强 三、未来技术图谱:2025-2030演进路线3.1 20…...
基于Springboot高校网上缴费综合务系统【附源码】
基于Springboot高校网上缴费综合务系统 效果如下: 系统登陆页面 个人中心页面 论坛交流页面 发表评论页面 付款页面 教师缴费页面 新增缴费类型页面 审核页面 研究背景 随着高校信息化建设进程的加速,传统手工缴费模式因效率低、错误率高、管理成本高…...
返回倒数第k个节点题解
这题要用到快慢指针的思想。 1.定义两个指针,一个快指针,一个慢指针,初始都指向头结点 2.先让快指针往后走k步,也就是移动k个节点,这个时候快指针比慢指针领先k 3.现在让快慢指针同时往后移动,两指针之间…...
《操作系统精髓与设计原理》第4章课后题答案-线程、对称多处理器和微内核
1.表3.5列出了在一个没有线程的操作系统中进程控制块的基本元素。对于多线程系统,这些元素中哪些可能属于线程控制块,哪些可能属于进程控制块? 对于不同的系统来说通常是不同的,但一般来说,进程是资源的所有者…...
《ATPL地面培训教材13:飞行原理》——第4章:亚音速气流
翻译:刘远贺;工具:Cursor & Claude 3.7;过程稿 第4章:亚音速气流 目录 翼型术语气流基础二维气流总结习题答案 翼型术语 翼型 一种能够以较高效率产生升力的特殊形状。 弦线 连接翼型前缘和后缘曲率中心的直…...
5月3日星期六今日早报简报微语报早读
5月3日星期六,农历四月初六,早报#微语早读。 1、五一假期多地政府食堂对外开放:部分机关食堂饭菜“秒没”; 2、2025年五一档电影新片票房破3亿; 3、首日5金!中国队夺得跳水世界杯总决赛混合团体冠军&…...
2024 虚拟电厂与大电网三道防线的关系探讨【附全文阅读】
本文围绕虚拟电厂与大电网三道防线展开探讨。大电网三道防线包括第一道防线的预防性控制和继电保护、第二道防线的稳控系统、第三道防线的失步解列及频率电压紧急控制装置 ,新型电力系统建设对第三道防线带来频率稳定等挑战。当前新型配电网第三道防线建设存在问题&…...
【c++】模板详解
目录 泛型编程模板的使用函数模板函数模板的本质函数模板的实例化显式实例化隐式实例化 函数模板的模板参数的匹配原则 类模板类模板的本质类模板的实例化 非类型模板参数模板特化函数模板特化类模板特化类模板全特化类模板偏特化(半特化) 模板分离编译t…...
【Linux】驱动开发方法
使用Petalinux学习驱动开发时的一些经验。 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 基础——字符设备驱动 1.1 分配设备号(驱动入口使用)…...
BUUCTF——禁止套娃
BUUCTF——禁止套娃 进入靶场 一个近乎空白的页面 看一下框架 没什么有用的信息,扫个目录吧 只扫出来给flag.php,但是0B,估计又是个空网站 拼接访问一下 果然又是什么都没有 没有突破口 githack找找看看也没有源码吧 <?php include …...
Spring MVC @RequestBody 注解怎么用?接收什么格式的数据?
RequestBody 注解的作用 RequestBody 将方法上的参数绑定到 HTTP 请求的 Body(请求体)的内容上。 当客户端发送一个包含数据的请求体(通常在 POST, PUT, PATCH 请求中)时,RequestBody 告诉 Spring MVC 读取这个请求体…...
线性DP(动态规划)
线性DP的概念(视频) 学习线性DP之前,请确保已经对递推有所了解。 一、概念 1、动态规划 不要去看网上的各种概念,什么无后效性,什么空间换时间,会越看越晕。从做题的角度去理解就好了,动态规划…...
Qt中实现工厂模式
在Qt中实现工厂模式可以通过多种方式,具体选择取决于需求和场景。以下是几种常见的实现方法: 1. 简单工厂模式通过一个工厂类根据参数创建不同对象。cppclass Shape {public: virtual void draw() 0; virtual ~Shape() default;};class Circle : publ…...
基于 Dify + vLLM插件 + Qwen3 构建问答机器人Docker版
前提条件 硬件要求: 推荐 NVIDIA GPU (至少 16GB 显存,Qwen3 可能需要更多) 至少 32GB 内存 足够的存储空间 (Qwen3 模型文件较大) 软件要求: Docker 和 Docker Compose Python 3.8 CUDA 和 cuDNN (与你的 GPU 兼容的版本) 安装步骤…...
【Linux】Linux应用开发小经验
基于Petalinux工具链的Linux应用开发小经验,未完待续... 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录…...