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

【KWDB 2025 创作者计划】_从部署开始了解KWDB

一、概述

KaiwuDB 是一款面向 AIoT 场景的分布式、多模融合、支持原生 AI 的数据库产品,支持同一实例同时建立时序库和关系库并融合处理多模数据,具备时序数据高效处理能力,具有稳定安全、高可用、易运维等特点。面向工业物联网、数字能源、车联网、智慧产业等领域,KaiwuDB 提供一站式数据存储、管理与分析的基座。

我们先了解下什么是时序数据库?
时序数据库(Time Series Database, TSDB)是专门针对时间序列数据(按时间顺序记录的数据点)进行存储和管理的数据库。这类数据通常包含时间戳(Timestamp)和对应的数值,例如传感器读数、服务器监控指标、金融交易记录等。时序数据库的核心特点是高效处理时间范围内的聚合查询、高频数据写入和时间窗口分析。

KWDB优势‌

  1. ‌数据整合与统一性‌:KWDB能够将来自不同来源的数据进行整合,构建一个统一的知识库,提高数据的一致性和完整性。
  2. ‌知识图谱建模‌:KWDB支持知识图谱的建模和查询,帮助用户深入理解知识之间的关联和联系。
  3. ‌复杂查询与推理‌:KWDB提供强大的查询和推理功能,用户可以通过灵活的查询语言和规则来进行复杂的数据分析和推理操作。
  4. ‌可视化展示‌:KWDB支持数据的可视化展示,帮助用户更直观地理解和使用知识库中的信息。

KWDB的架构

相比传统的数据库,KWDB 提供多模数据管理能力,支持不同数据模型的统一存储,助力企业跨部门、跨业务统一管理数据,实现多业务数据融合,支撑多样化的应用服务。

二、安装要求

硬件要求

项目

要求
CPU 和内存单节点配置建议不低于 4 核 8G。对于数据量大、复杂的工作负载、高并发和高性能场景,建议配置更高的 CPU 和内存资源以确保系统的高效运行。
磁盘- 推荐使用 SSD 或者 NVMe 设备,尽量避免使用 NFS、CIFS、CEPH 等共享存储。
- 磁盘必须能够实现 500 IOPS 和 30 MB/s 处理效率。
文件系统建议使用 ext4 文件系统。

操作系统支持

操作系统暂时支持四大类,Anolis、KylinOS、Ubuntu和UOS,每个系统都有对应arm和x86的版本

操作系统版本架构
Anolis8.6ARM_64
8.6x86_64
KylinOSV10 SP3 2403ARM_64open in new window
V10 SP3 2303ARM_64
V10 SP3 2403x86_64open in new window
V10 SP3 2303x86_64
UbuntuV18.04x86_64
V20.04ARM_64
V20.04x86_64open in new window
V22.04ARM_64
V22.04x86_64open in new window
V24.04ARM_64
V24.04x86_64
UOS1060ex86_64
1060eARM_64

其他软件依赖

OpenSSL遇到的问题比较多,可以先检查下openssl的版本并检查protobuf是否安装

[root@localhost ~]# rpm -qa openssl
openssl-1.1.1f-31.p23.ky10.x86_64

[root@localhost kwdb_install]# rpm -qa protobuf
protobuf-3.14.0-7.ky10.x86_64

依赖版本说明
OpenSSLv1.1.1+N/A
libprotobufv3.6.1+注意:Ubuntu 18.04 默认的 libprotobuf 版b本不满足要求,用户需要提前安装所需版本(推荐 3.6.1 和 3.12.4)。
GEOSv3.3.8+可选依赖
xz-libsv5.2.0+N/A
squashfs-toolsanyN/A
libgccv7.3.0+N/A
mountanyN/A
squashfuseany可选依赖

更多详细可参考官方文档:https://www.kaiwudb.com/kaiwudb_docs/#/oss_v2.2.0/quickstart/install-kaiwudb/quickstart-bare-metal.html

三、环境介绍及安装准备

安装方面可以选择以下任意一种方式部署 KWDB 数据库:
单节点裸机部署
单节点容器部署
源码编译

本次安装使用单节点裸机部署,源码编译比较耗时,单节点容器部署相对比较不安全,出问题后排查比较繁琐,后面再进行体验安装

环境信息:
操作系统cpu内存存储
Kylin-Server-V104C8G100G

附上操作系统地址:https://iso.kylinos.cn/web_pungi/download/cdn/9D2GPNhvxfsF3BpmRbJjlKu0dowkAc4i/Kylin-Server-V10-SP3-2403-Release-20240426-x86_64.iso

端口信息
端口号说明
8080数据库 Web 服务端口
26257数据库服务端口、节点监听端口和对外连接端口
安装依赖

安装依赖包,官网没有找到需要哪些包,处理报错后再Kylin-Server-V10安装如下包即可

yum install -y gcc-c++ protobuf

安装包下载

安装包下载链接:https://gitee.com/kwdb/kwdb/releases/download/V2.2.0/KWDB-2.2.0-kylinV10_2403-x86_64-rpms.tar.gz

如服务器可以联网可直接下载:

wget  https://gitee.com/kwdb/kwdb/releases/download/V2.2.0/KWDB-2.2.0-kylinV10_2403-x86_64-rpms.tar.gz

更多安装包下载

Gitee 社区下载地址:kwdb 发行版 - Gitee.com

安装包解压

tar -zxvf KWDB-2.2.0-kylinV10_2403-x86_64-rpms.tar.gz 

[root@localhost ~]# cd kwdb_install/
[root@localhost kwdb_install]# tree
.
├── add_user.sh
├── deploy.cfg
├── deploy.sh
├── packages
│   ├── kwdb-libcommon-2.2.0-kylin.ky10.x86_64.rpm
│   └── kwdb-server-2.2.0-kylin.ky10.x86_64.rpm
└── utils
├── container_shell.sh
├── kaiwudb_cluster.sh
├── kaiwudb_common.sh
├── kaiwudb_hardware.sh
├── kaiwudb_install.sh
├── kaiwudb_log.sh
├── kaiwudb_operate.sh
├── kaiwudb_uninstall.sh
├── kaiwudb_upgrade.sh
├── process_bar.sh
└── utils.sh

解压后的文件介绍

文件说明
add_user.sh安装、启动 KWDB 后,为 KWDB 数据库创建用户。
deploy.cfg安装部署配置文件,用于配置部署节点的 IP 地址、端口等配置信息。
deploy.sh安装部署脚本,用于安装、卸载、启动、状态获取、关停和重启等操作。
packages 目录存放 DEB、RPM 和镜像包。
utils 目录存放工具类脚本

四、环境部署

1、编辑deploy.cfg配置文件

编辑安装包目录下的 deploy.cfg 配置文件,设置安全模式、管理用户、服务端口等信息。

先备份一份deploy.cfg文件,以备修改错误恢复

cp deploy.cfg deploy.cfg_bak

如果是测试环境,对这些信息不敏感可以只修改node_addr剩余保持默认直接安装即可,单实例需要注释掉cluster内容

vi deploy.cfg

[global]
# Whether to turn on secure mode
secure_mode=tls
# Management KaiwuDB user
management_user=kaiwudb
# KaiwuDB cluster http port
rest_port=8080
# KaiwuDB service port
kaiwudb_port=26257
# KaiwuDB data directory
data_root=/var/lib/kaiwudb
# CPU usage[0-1]
# cpu=1
[local]
# local node configuration
node_addr=192.168.150.135
# section cluster is optional
[cluster]
# remote node addr,split by ','
#node_addr=127.0.0.2,127.0.0.3
# ssh info
#ssh_port=22
#ssh_user=admin

参数说明:

  • global:全局配置
    • secure_mode:是否开启安全模式,支持以下两种取值:
      • insecure:使用非安全模式。
      • tls:(默认选项)开启 TLS 安全模式。开启安全模式后,KWDB 生成 TLS 证书,作为客户端或应用程序连接数据库的凭证。生成的客户端相关证书存放在 /etc/kaiwudb/certs 目录。
    • management_user:KWDB 的管理用户,默认为 kaiwudb。安装部署后,KWDB 创建相应的管理用户以及和管理用户同名的用户组。
    • rest_port:KWDB Web 服务端口,默认为 8080
    • kaiwudb_port:KWDB 服务端口,默认为 26257
    • data_root:数据目录,默认为 /var/lib/kaiwudb
    • cpu: 可选参数,用于指定 KWDB 服务占用当前节点服务器 CPU 资源的比例,默认无限制。取值范围为 [0,1],最大精度为小数点后两位。注意:如果部署环境为 Ubuntu 18.04 版本,部署集群后,需要将 kaiwudb.service 文件中的 CPUQuota 修改为整型值,例如,将 180.0% 修改为 180%,以确保设置生效。
  • local:本地节点配置
    • node_addr:本地节点对外提供服务的 IP 地址,监听地址为 0.0.0.0,端口为 KWDB 服务端口。

2、授权及安装

#对deploy.sh授予可执行权限chmod +x ./deploy.sh#执行安装./deploy.sh install --single

安装成功返回如下:

[root@localhost kwdb_install]# ./deploy.sh install --single
[WARN] 2025-05-20 13:49:51 The number of CPU cores does not meet the requirement. KaiwuDB may running failed.
Please input kaiwudb's password: [INSTALL COMPLETED]:KaiwuDB has been installed successfully! To start KaiwuDB, please execute the command 'systemctl daemon-reload'.

3、重新加载 systemd 守护进程的配置文件及启动数据库

#重新加载守护进程配置文件

systemctl daemon-reload

#启动数据库

./deploy.sh start

启动成功如下:

[root@localhost kwdb_install]# systemctl daemon-reload
[root@localhost kwdb_install]# ./deploy.sh start
[START COMPLETED]:KaiwuDB start successfully.

4、kwdb状态查看

安装完成后,安装脚本会把KaiwuDB封装成系统服务kaiwudb,可以是用系统命令进行启停

#可以使用

./deploy.sh status

也可以使用

systemctl status kaiwudb

[root@localhost kwdb_install]# ./deploy.sh status
[STATUS COMPLETED]:KaiwuDB is runnning now.
[root@localhost kwdb_install]# systemctl status kaiwudb
● kaiwudb.service - KaiwuDB Service
Loaded: loaded (/etc/systemd/system/kaiwudb.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2025-05-20 13:59:31 CST; 2min 34s ago
Process: 39267 ExecStartPre=/usr/bin/sudo /usr/sbin/sysctl -w vm.max_map_count=10000000 (code=exited, status=0/SUCCESS)
Main PID: 39279 (kwbase)
Tasks: 39
Memory: 452.3M
CGroup: /system.slice/kaiwudb.service
└─39279 /usr/local/kaiwudb/bin/kwbase start-single-node --certs-dir=/etc/kaiwudb/certs --listen-addr=0.0.0.0:26257 --adv>

5月 20 13:59:32 localhost.localdomain kwbase[39279]: sql: postgresql://root@192.168.150.135:26257?sslcert=%2Fetc%2F>
5月 20 13:59:32 localhost.localdomain kwbase[39279]: RPC client flags: /usr/local/kaiwudb/bin/kwbase <client cmd> --host=192.168>
5月 20 13:59:32 localhost.localdomain kwbase[39279]: logs: /var/lib/kaiwudb/logs
5月 20 13:59:32 localhost.localdomain kwbase[39279]: temp dir: /var/lib/kaiwudb/kwbase-temp052302502
5月 20 13:59:32 localhost.localdomain kwbase[39279]: external I/O path: /var/lib/kaiwudb/extern
5月 20 13:59:32 localhost.localdomain kwbase[39279]: store[0]: path=/var/lib/kaiwudb
5月 20 13:59:32 localhost.localdomain kwbase[39279]: storage engine: rocksdb
5月 20 13:59:32 localhost.localdomain kwbase[39279]: status: initialized new cluster
5月 20 13:59:32 localhost.localdomain kwbase[39279]: clusterID: 4df52272-fdea-4e45-8429-b1e704fe84fd
5月 20 13:59:32 localhost.localdomain kwbase[39279]: nodeID: 1

5、add_user.sh 脚本创建数据库用户

kwdb封装了一个创建用户的脚本,一键创建用户,初始化用户很方便,大大的赞

[root@localhost kwdb_install]# ./add_user.sh
Please enter the username:banjin
Please enter the password:

[ADD USER COMPLETED]:User creation completed.

6、配置开机启动

因为kwdb已经自动封装为操作系统服务kaiwudb,可以直接一条命令配置开机启动,测试环境也建议打开每次启动服务器数据库自动启动

systemctl enable kaiwudb

7、数据库连接

#非安全模式,参照deploy.cfg修改时设置的secure_mode参数

#使用部署时的操作系统用户登录

kwbase sql --insecure --host=<your-host-ip>

#使用自定义的用户登录,如使用add_user.sh脚本创建的用户

kwbase sql --insecure --host=<your-host-ip> -u <user-name>

#tls安全模式,参照deploy.cfg修改时设置的secure_mode参数

#使用部署时的操作系统用户登录

kwbase sql --certs-dir=etc/kwdb/certs --host=<your-host-ip>

#使用自定义的用户登录,如使用add_user.sh脚本创建的用户

kwbase sql --certs-dir=etc/kwdb/certs --host=<your-host-ip> -u <user-name>

#参数介绍

--certs-dir 数据库客户端相关证书存放目录

--host  数据库地址

-u 用户

-d 数据库,不指定默认为defaultdb

登录使用

[root@localhost kaiwudb]# kwbase sql --certs-dir=/etc/kaiwudb/certs --host=192.168.150.135
#
# 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:16, go1.16.15, gcc 7.3.0) (same version as client)
# Cluster ID: 4df52272-fdea-4e45-8429-b1e704fe84fd
#
# Enter \? for a brief introduction.
#
root@192.168.150.135:26257/defaultdb> \l
database_name | engine_type
----------------+--------------
defaultdb | RELATIONAL
postgres | RELATIONAL
system | RELATIONAL
(3 rows)

Time: 1.512288ms

root@192.168.150.135:26257/defaultdb> \du
username | options | member_of
-----------+------------+------------
admin | CREATEROLE | {}
banjin | | {admin}
root | CREATEROLE | {admin}
(3 rows)

Time: 3.842555ms

五、模板数据库sampleDB使用

SampleDB 是一个用于展示示例数据与场景的项目。其核心目标是助力用户快速掌握 KWDB 数据库的使用方法,为用户提供便捷的测试与学习环境,SampleDB数据库模型是一个智能电表项目,包含关系库rdb和时序库tsdb

下载地址:登录 - Gitee.com

下载后上传服务器解压

mkdir cd /var/lib/kaiwudb/extern

#上传rdb.tar.gz,tsdb.tar.gz到此目录

cd /var/lib/kaiwudb/extern

tar xvf rdb.tar.gz
tar xvf tsdb.tar.gz

导入关系库 rdb 数据

import database csv data ("nodelocal://1/rdb");

#登录

 kwbase sql --certs-dir=/etc/kaiwudb/certs --host=192.168.150.135

#导入

import database csv data ("nodelocal://1/rdb");

root@192.168.150.135:26257/defaultdb> import database csv data ("nodelocal://1/rdb");

job_id | status | fraction_completed | rows | abandon_rows | reject_rows | note
----------------------+-----------+--------------------+------+--------------+-------------+-------
1073655494850838529 | succeeded | 1 | 305 | 0 | 0 | None
(1 row)

Time: 157.913643ms

#验证 --切换rdb数据库登录

root@192.168.150.135:26257/defaultdb> use rdb;
SET

Time: 403.717µs

root@192.168.150.135:26257/rdb> show tables;
table_name | table_type
--------------+-------------
alarm_rules | BASE TABLE
area_info | BASE TABLE
meter_info | BASE TABLE
user_info | BASE TABLE
(4 rows)

导入时序库 tsdb 数据

import database csv data ("nodelocal://1/tsdb");

#导入

root@192.168.150.135:26257/rdb> import database csv data ("nodelocal://1/tsdb");
job_id | status | fraction_completed | rows | abandon_rows | reject_rows | note
---------+-----------+--------------------+-------+--------------+-------------+-------
- | succeeded | 1 | 10100 | 0 | 0 | None
(1 row)

Time: 526.048817ms

root@192.168.150.135:26257/rdb> \q

#切换tsdb数据库

root@192.168.150.135:26257/defaultdb> use rdb;
SET

Time: 403.717µs

root@192.168.150.135:26257/tsdb> show tables;
table_name | table_type
-------------+--------------------
meter_data | TIME SERIES TABLE
(1 row)

Time: 1.576363ms

场景实例

故障电表信息

SELECT mi.meter_id,u.user_name,u.contact,a.area_name
FROM rdb.meter_info mi
JOIN rdb.user_info u ON mi.user_id = u.user_id
JOIN rdb.area_info a ON mi.area_id = a.area_id
WHERE mi.status = 'Fault';

root@192.168.150.135:26257/tsdb> SELECT
-> mi.meter_id,
-> u.user_name,
-> u.contact,
-> a.area_name
-> FROM rdb.meter_info mi
-> JOIN rdb.user_info u ON mi.user_id = u.user_id
-> JOIN rdb.area_info a ON mi.area_id = a.area_id
-> WHERE mi.status = 'Fault';
meter_id | user_name | contact | area_name
-----------+-----------+-------------+------------
M100 | User 1 | 13800138001 | Area 1
M20 | User 21 | 13800138021 | Area 21
M40 | User 41 | 13800138041 | Area 41
M60 | User 61 | 13800138061 | Area 61
M80 | User 81 | 13800138081 | Area 81
(5 rows)

Time: 2.224859ms

区域用电量top10

SELECT a.area_name,SUM(md.energy) AS total_energy
FROM tsdb.meter_data md
JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id
JOIN rdb.area_info a ON mi.area_id = a.area_id
GROUP BY a.area_name
ORDER BY total_energy DESC
LIMIT 10;

root@192.168.150.135:26257/tsdb> SELECT
-> a.area_name,
-> SUM(md.energy) AS total_energy
-> FROM tsdb.meter_data md
-> JOIN rdb.meter_info mi ON md.meter_id = mi.meter_id
-> JOIN rdb.area_info a ON mi.area_id = a.area_id
-> GROUP BY a.area_name
-> ORDER BY total_energy DESC
-> LIMIT 10;
area_name | total_energy
------------+---------------
Area 2 | 5.556e+06
Area 1 | 5.55499e+06
Area 100 | 5.55398e+06
Area 99 | 5.55297e+06
Area 98 | 5.55196e+06
Area 97 | 5.55095e+06
Area 96 | 5.54994e+06
Area 95 | 5.54893e+06
Area 94 | 5.54792e+06
Area 93 | 5.54691e+06
(10 rows)

Time: 21.137013ms

至此kwdb的部署及关系库和时序库安装体验完成,安装相对比较简单,整个体验对用户比较友好,特别是贴心的准备了add_user.sh用户创建脚本,简化了用户创建操作,特地准备了模板数据库sampledb,列举了很多实例场景,可以更好的体验kwdb

相关文章:

【KWDB 2025 创作者计划】_从部署开始了解KWDB

一、概述 KaiwuDB 是一款面向 AIoT 场景的分布式、多模融合、支持原生 AI 的数据库产品&#xff0c;支持同一实例同时建立时序库和关系库并融合处理多模数据&#xff0c;具备时序数据高效处理能力&#xff0c;具有稳定安全、高可用、易运维等特点。面向工业物联网、数字能源、…...

高等数学-微分

一、一元函数&#xff1a; 在实际应用中&#xff0c;经常需要近似计算函数yf(x)的增量Δyf(x)-f(x0)f(x0Δx)-f(x0),其中一种近似称为函数的微分。 定义&#xff1a;若函数yf(x)在点x0处的增量Δy可表达为自变量增量Δx的线性函数AΔx和Δx的高阶无穷小量之和&#xff0c;即Δ…...

有没有开源的企业网盘,是否适合企业使用?

开源选项丰富、灵活定制能力强、需要额外运维投入、适合特定场景但不一定适合所有企业&#xff0c;是开源企业网盘的主要特征。从表面看&#xff0c;开源网盘往往具有免费或低成本优势&#xff0c;但企业要投入一定的人力与技术资源来完成安装、维护与升级&#xff0c;从而保障…...

基于系统整合的WordPress个性化配置方法深度解析:从需求分析到实现过程

文章目录 引言一、理解WordPress页面与文章的区别二、主题与模板层级&#xff1a;自定义的基础三、自定义页面模板&#xff1a;打造专属页面风格四、自定义文章模板&#xff1a;打造个性化文章呈现五、使用自定义字段和元数据&#xff1a;增强内容灵活性六、利用WordPress钩子&…...

离线服务器Python环境配置指南

离线服务器Python环境配置指南&#xff1a;避坑与实战 0. 场景分析&#xff1a;当服务器与世隔绝时 典型困境&#xff1a; 无法访问国际网络&#xff08;如PyPI、Conda官方源&#xff09;服务器处于内网隔离环境安全策略限制在线安装 解决方案矩阵&#xff1a; 方法适用场…...

(第94天)OGG 微服务搭建 Oracle 19C CDB 架构同步

前言 Oracle GoldenGate Microservice Architecture (OGGMA) 是在 OGG 12.3 版本推出的全新架构。相比传统架构,OGGMA 基于 Rest API,通过 WEB 界面即可完成 OGG 的配置和监控,大大简化了部署和管理流程。 本文将详细介绍如何在 Oracle 19C CDB 环境中部署 OGG 19.1.0.4 微…...

参与开发的注意事项

1.开发期间&#xff0c;不要擅自修改架构的内容 使用技术官发的项目文件夹来开发&#xff0c;而不是自己建立项目&#xff0c; 否则会导致环境不统一 架构内容&#xff1a;&#xff08;不能更改&#xff09; 1.类型定义&#xff0c;全局变量声明 2.函数申明&#xff08;函数名称…...

使用pm2 部署react+nextjs项目到服务器

记录一下 next.config.js中&#xff1a; output: standalone,package.json配置&#xff1a; "scripts": {"dev": "cross-env NODE_OPTIONS--inspect next dev","build": "next build","start": "cp -r .nex…...

从0到1打造AI Copilot:用SpringBoot + ChatGPT API实现智能开发助手

本文将从0到1系统性地讲解如何基于SpringBoot与OpenAI ChatGPT API打造一款智能开发助手&#xff08;AI Copilot&#xff09;。文章首先介绍AI Copilot的背景与价值&#xff0c;接着深入架构设计与环境准备&#xff0c;然后通过详尽的代码示例演示SpringBoot项目的搭建、依赖配…...

LeetCode Hot100 (双指针)

283. 移动零 标记指针&#xff0c;当前位置为0向后面移动即可 class Solution {public void moveZeroes(int[] nums) {int l 0;for(int i0;i<nums.length;i){if(nums[i]0){if(l<i){li1;}while(l<nums.length&&nums[l]0) l;if(l<nums.length){nums[i]nums…...

JVM常量池(class文件常量池,运行时常量池,字符串常量池)

文章目录 问题JVM运行时数据区JVM中的常量池Class文件常量池运行时常量池字符串常量池创建了几个对象String的定义intern()问题 超过1W字深度剖析JVM常量池&#xff08;全网最详细最有深度&#xff09; - 跟着Mic学架构 - 博客园 问题 jdk1.8之后 元空间是独立存在的&#xf…...

开源免费无广告专注PDF编辑、修复和管理工具 办公学术 救星工具

各位PDF处理小能手们&#xff01;我跟你们说啊&#xff0c;今天要给大家介绍一款超牛的国产开源PDF处理工具&#xff0c;叫PDFPatcher&#xff0c;也叫PDF补丁丁。它就像一个PDF文档的超级修理工&#xff0c;专门解决PDF编辑、修复和管理的各种难题。 这软件的核心功能和特点&a…...

鸿蒙Flutter实战:24-混合开发详解-4-初始化Flutter

概述 将 Flutter 模块添加至宿主鸿蒙项目中后&#xff0c;接下需要实现页面跳转、消息通信等功能&#xff0c;本文重点介绍如何初始化 Flutter。 项目配置 添加依赖 编辑 ohos_app/oh-package.json 文件 如果通过 Har 包方式引入 Flutter 模块&#xff0c;则需要添加如下内…...

我爱学算法之—— 二分查找(中)

一、搜索插入位置 题目解析 这道题&#xff0c;给定一个数组nums和一个目标值target&#xff0c;让我们在数组nums中找到目标值&#xff1b;如果目标值存在就返回它的下标&#xff0c;如果不存在就返回数target被顺序插入的位置下标。 算法思路 这道题&#xff0c;我们可以使…...

Golang 并发小结

并发问题概览 问题类型描述数据竞争多个协程对共享变量进行非同步读写操作死锁多个协程互相等待对方释放资源活锁协程不断尝试获取资源但始终失败协程泄漏协程未能及时退出&#xff0c;程序中 goroutine 数量飙升Channel 误用通道未关闭、重复关闭、关闭后写入等问题调度抖动非…...

RTC技术

什么是RTC RTC&#xff08;Real time communication&#xff09;实时通信&#xff0c;是实时音视频的一个简称&#xff0c;我们常说的RTC技术一般指的是WebRTC技术&#xff0c;已经被 W3C 和 IETF 发布为正式标准。由于几乎所有主流浏览器都支持 WebRTC 标准 API &#xff0c;…...

基于Matlab建立不同信道模型

在MATLAB中建立不同的信道模型是无线通信系统仿真的重要组成部分。信道模型用于模拟信号在传输过程中受到的各种影响&#xff0c;如衰减、多径效应、噪声等。以下是一些常见的信道模型及其在MATLAB中的实现方法&#xff1a; 1. 理想信道模型 理想信道假设信号在传输过程中不受…...

uni-app 排坑

记录代码中遇到的一些问题的解决方案 目录 1.自定义弹框 点击弹框以外地方关闭弹框 2.拦截uni-app的tabbar跳转 1.自定义弹框 点击弹框以外地方关闭弹框 1.声明一个变量 const isDialog ref(false) 2.在根容器里面声明一个蒙版 <view class"network-list-wrapper&q…...

军事目标系列之迷彩作战人员检测数据集VOC+YOLO格式2755张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2755 标注数量(xml文件个数)&#xff1a;2755 标注数量(txt文件个数)&#xff1a;2755 …...

Qt C++实现马的遍历问题

在这个项目中,我们面对的是一个基于中国象棋的马的遍历问题,使用了C++编程语言,并结合了Qt5库来实现图形界面和棋盘的绘制。以下是这个项目涉及的关键知识点: 马的移动规则:马在象棋中具有独特的“日”字形移动方式,即每次可以向前、后、左或右移动一格,然后在同一行或同…...

node12.22.12在nvm中安装

1、安装nvm 官网&#xff1a;https://nvm.uihtm.com/ 下载&#xff0c;安装 nvm -v 1.2.22、通过 nvm install 12.22.12 安装报错&#xff0c;找不到此版本 通过下载 https://nodejs.org/zh-cn/downloadzip文件 解压 3、查看nvm 安装路径 nvm root4、在目录下新建文件夹 v…...

技术篇-2.3.Golang应用场景及开发工具安装

Golang 虽然语法简洁&#xff0c;上手也较快&#xff0c;但其在高并发、微服务和云原生领域的优势明显&#xff0c;要真正精通并灵活运用仍需积累大量实践经验。与 Java 借助重量级框架不同&#xff0c;Go 倾向于使用标准库和轻量级第三方包来构建高性能、低延迟的系统。 1.1应…...

高效缓存设计的哲学

文章目录 引言基于缓存存储运算结果锁分段散列减小锁粒度异步化提升处理效率原子化避免重复运算小结参考 引言 基于缓存存储运算结果 利用缓存避免非必要的计算&#xff0c;提升结果获取速度&#xff0c;但还是存在问题&#xff0c;每个线程都需要等待锁才能看结果和运算&…...

【生态信息】开源软件全方位解析

开源软件(0pen Source Software&#xff0c;0ss)是指其源代码可以公开发布、查看、使用和修改的软件。这一概念的核心在于开放性和共享性&#xff0c;允许开发者自由地使用、修改、分发以及改进软件。开源软件通常遵循特定的开源许可证&#xff0c;这些许可证确保了软件的自由使…...

FastAPI在 Nginx 和 Docker 环境中的部署

目录 实现示例1. 项目结构2. FastAPI 应用 (app/main.py)3. 依赖文件 (app/requirements.txt)4. Dockerfile5. Nginx 配置 (nginx/nginx.conf)6. Docker Compose 配置 (docker-compose.yml) 使用方法修改代码后更新 实现示例 接下来创建一个简单的示例项目&#xff0c;展示如何…...

计算机网络相关面试题

一、HTTP1.1和HTTP2的区别 HTTP/1&#xff08;主要指 HTTP/1.1&#xff09;和 HTTP/2 是 Web 协议发展中的两个重要版本&#xff0c;二者在性能、协议机制和功能特性上有显著差异。以下从多个维度对比分析&#xff0c;并结合具体案例说明&#xff1a; 一、连接与请求处理方式 1…...

根据当前日期计算并选取上一个月和上一个季度的日期范围,用于日期控件的快捷选取功能

1.选择月份范围 代码如下&#xff1a; <el-date-picker v-model"value" type"monthrange" align"right" unlink-panels range-separator"至"start-placeholder"开始月份" end-placeholder"结束月份" :picker-…...

【C++】set、map 容器的使用

文章目录 1. set 和 multiset 的使用1.1 set类的介绍1.2 set的构造和迭代器1.3 set 的增删查1.4 insert和迭代器调用示例1.5 find和erase使用示例1.6 multiset和set的差异 2. map 和 multimap 的使用2.1 map 类的介绍2.2 pair 类型介绍2.3 map 的构造和迭代器2.4 map 的增删查2…...

【MySQL】第1节|全面理解MySQL架构

快速安装MySQL 使用Docker快速安装mysql8 docker run -d \ --name mysql8 \ --privilegedtrue \ --restartalways \ -p 13306:3306 \ -v /home/mysql8/data:/var/lib/mysql \ -v /home/mysql8/config:/etc/mysql/conf.d \ -v /home/mysql8/logs:/logs \ -e MYSQL_ROOT_PAS…...

YOLOv8模型剪枝笔记(DepGraph和Network Slimming网络瘦身)

文章目录 一、DepGraph剪枝&#xff08;1&#xff09;项目准备1&#xff09;剪枝基础知识2&#xff09;DepGraph剪枝论文解读12&#xff09;DepGraph剪枝论文解读23&#xff09;YOLO目标检测系列发展史4&#xff09;YOLO网络架构 &#xff08;2&#xff09;项目实战&#xff08…...