【KWDB 创作者计划】一文掌握KWDB的时序表管理
前言
本文是在对时序数据库有一定了解,并且KWDB的数据库操作了解后进行学习的文章安排,如果对时序数据库与KWDB的数据库操作还不怎么了解的可以查阅官网的文档进行提前学习,当有了这些基础后,本文就是对时序数据表的一个管理操作。
注:时序表(TIME SERIES TABLE)是用于存储时间序列数据的数据表。
准备KWDB的数据库
这里不能直接create来创建一定要加上TS的参数,这样创建的才是时序数据库:【TIME SERIES】。
CREATE TS DATABASE ts_db;
我们已经有了要操作的时序数据库了。
KWDB的时序表创建语法
语法格式需要注意:
CREATE TABLE <table_name> (<column_list>)
[TAGS|ATTRIBUTES] (<tag_list>)
PRIMARY [TAGS|ATTRIBUTES] (<primary_tag_list>)
[RETENTIONS <keep_duration>]
[ACTIVETIME <active_duration>]
[PARTITION INTERVAL <interval>]
[DICT ENCODING];
参数说明
参数 | 说明 |
---|---|
table_name | 待创建的时序表的名称,表名的最大长度为 128 字节。在指定数据库中,时序表名称必须唯一,并且遵循标识符命名规范。 |
column_list | 待创建的数据列列表,支持添加两个以上的列定义,最多可指定 4096 列。列定义包括列名、数据类型和默认值。 列名的最大长度为 128 字节,支持指定 NOT NULL,默认为空值。支持自定义第一列的列名,但数据类型必须是 TIMESTAMPTZ 或 TIMESTAMP 且非空。默认时区为 UTC。 对于非时间类型的数据列,默认值只能是常量。对于时间类型的列(TIMESTAMPTZ 或 TIMESTAMP),默认值可以是常量,也可以是 now() 函数。如果默认值类型与列类型不匹配,设置默认值时,系统报错。支持默认值设置为 NULL。 时间戳列支持设置时间精度。目前,KWDB 支持毫秒、微秒和纳秒的时间精度。默认情况下,KWDB 采用毫秒时间精度。 |
tag_list | 标签列表,支持添加一个或多个标签定义,最多可指定 128 个标签。标签定义包含标签名和数据类型,标签名的最大长度为 128 字节,支持指定 NOT NULL,默认为空值。不支持 TIMESTAMP、TIMESTAMPTZ、NVARCHAR 和 GEOMETRY 数据类型。 |
primary_tag_list | 主标签列表,支持添加一个或多个主标签名称,最多可指定 4 个。主标签必须包含在标签列表内且指定为 NOT NULL,不支持浮点类型和除 VARCHAR 之外的变长数据类型。VARCHAR 类型长度默认 64 字节,最大长度为 128 字节。 |
keep_duration | 可选参数,指定表的生命周期。超过设置的生命周期后,系统自动从数据库中清除目标表中数据。默认值为 0d ,即不会过期删除。支持配置的时间单位包括:秒(S 或 SECOND)、分钟(M 或 MINUTE)、小时(H 或 HOUR)、天(D 或 DAY)、周(W 或 WEEK)、月(MON 或 MONTH)、年(Y 或 YEAR)。取值必须是整数值,最大值不得超过 1000 年。 说明 - 当用户单独指定或者修改数据库内某一时序表的生命周期或分区时间范围时,该配置只适用于该时序表。 - 生命周期的配置不适用于当前分区。当生命周期的取值小于分区时间范围的取值时,即使表的生命周期已到期,由于数据存储在当前分区中,用户仍然可以查询数据。 - 当时间分区的所有数据超过生命周期时间点(now() - retention time )时,系统尝试删除该分区的数据。如果此时用户正在读写该分区的数据,或者系统正在对该分区进行压缩或统计信息处理等操作,系统无法立即删除该分区的数据。系统会在下一次生命周期调度时再次尝试删除数据(默认情况下,每小时调度一次)。 - 生命周期和分区时间范围设置与系统的存储空间密切相关。生命周期越长,分区时间范围越大,系统所需的存储空间也越大。 |
active_duration | 可选参数,指定数据的活跃时间。超过设置的时间后,系统自动压缩表数据。默认值为 1d ,表示系统对表数据中 1 天前的分区进行压缩。支持配置的时间单位包括:秒(S 或 SECOND)、分钟(M 或 MINUTE)、小时(H 或 HOUR)、天(D 或 DAY)、周(W 或 WEEK)、月(MON 或 MONTH)、年(Y 或 YEAR)。默认时间单位为天(D 或 DAY)。取值必须是整数值,最大值不得超过 1000 年。如果设置为 0 ,表示不压缩表数据。 |
interval | 可选参数,指定表数据目录分区的时间范围。默认值为 10d ,即每 10 天进行一次分区。支持配置的时间单位包括:天(D 或 DAY)、周(W 或 WEEK)、月(MON 或 MONTH)、年(Y 或 YEAR)。取值必须是整数值,最大值不得超过 1000 年。 |
DICT ENCODING | 可选参数,启用字符串的字典编码功能,提升字符串数据的压缩能力。表中存储的字符串数据重复率越高,压缩优化效果越明显。该功能只适用于 CHAR 和 VARCHAR 长度小于等于 1023 的字符串,且只能在建表时开启。开启后不支持禁用。 |
以下是 MySQL 创建数据库和上述创建时序数据库语法的区别对比表格:
对比维度 | MySQL 创建数据库语法 | 创建时序数据库语法 | ||
---|---|---|---|---|
基本语法结构 | CREATE DATABASE <database_name>; 创建数据库后,使用 CREATE TABLE 语句创建表,基本语法为 CREATE TABLE <table_name> (<column_definition_list>); | `CREATE TABLE <table_name> (<column_list>) [TAGS | ATTRIBUTES] (<tag_list>) PRIMARY [TAGS | ATTRIBUTES] (<primary_tag_list>) [RETENTIONS <keep_duration>] [ACTIVETIME <active_duration>] [PARTITION INTERVAL ] [DICT ENCODING];` |
列定义 | 主要定义列名、数据类型、约束等,如 CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(255), age INT); | 除了列名和数据类型等基本定义外,还通过 TAGS 或 ATTRIBUTES 定义标签列,用于对数据进行分类和索引,例如 CREATE TABLE sensor_data (ts TIMESTAMP, value FLOAT) TAGS (sensor_id VARCHAR(50), location VARCHAR(50)); | ||
主键定义 | 通常在列定义中直接指定主键,如 id INT PRIMARY KEY | 通过 `PRIMARY [TAGS | ATTRIBUTES]明确指定主键,且主键可以是标签列或普通列的组合,例如 PRIMARY TAGS (sensor_id, ts)` | |
数据保留策略 | 一般通过存储过程、定时任务等方式实现数据的定期清理或归档 | 直接在创建表语句中通过 RETENTIONS <keep_duration> 明确指定数据保留时长,如 RETENTIONS 30d 表示保留 30 天的数据 | ||
活跃时间设置 | 无直接相关语法 | 可以使用 ACTIVETIME <active_duration> 设置数据的活跃时间,用于优化存储和查询性能,如 ACTIVETIME 7d 表示最近 7 天的数据为活跃数据 | ||
分区设置 | 可通过 PARTITION BY 子句进行分区,如按日期、范围等分区,但语法和功能与时序数据库不同 | 通过 PARTITION INTERVAL <interval> 设置分区间隔,如 PARTITION INTERVAL 1d 表示按天进行分区 | ||
数据编码 | 有自己的存储引擎和数据编码方式,但不是在创建表语句中直接这样定义 | 可以通过 DICT ENCODING 开启字典编码等特殊编码方式,用于优化存储和查询 |
KWDB时序表实操训练
建表DDL语句:
CREATE TABLE users (k_timestamp TIMESTAMP NOT NULL,user_age INT NOT NULL,user_height FLOAT,user_weight FLOAT
) TAGS (user_id INT NOT NULL,user_role VARCHAR(30) NOT NULL
) PRIMARY TAGS (user_id);
运行测试:
查看表结构
\d users;
可以清晰的看到主键以及其他数据列的信息。
查看建表语句
SHOW CREATE users;
DML测试语句操作
插入一条用户数据:
INSERT INTO users (k_timestamp, user_age, user_height, user_weight, user_id, user_role)
VALUES ('2025-04-16T12:00:00Z', 30, 175.5, 70.0, 1, '张三');
由于是时序数据库更新数据操作会报错:
-- 将用户ID为1的用户年龄更新为31岁
UPDATE users
SET user_age = 31
WHERE user_id = 1;
我们这里需要变向的来完成更新,需要先删除再添加。
delete from users where user_id = 1;
INSERT INTO users (k_timestamp, user_age, user_height, user_weight, user_id, user_role)
VALUES ('2025-04-16T12:00:00Z', 15, 175.5, 70.0, 1, '张三');
修改表操作
ALTER TABLE`语句用于修改以下表信息:
- 修改表名、设置表的数据生命周期、活跃时间和数据目录分区的时间范围
- 添加列、修改列名、列的数据类型或宽度、设置列的默认值、删除列的默认值
- 添加标签、修改标签名、标签的数据类型或宽度、删除标签
注:
- 删除列时,原表至少保留两列数据列,且不支持删除第一列(时间戳列)。
- 不支持添加、删除、重命名主标签。
- 目前,不支持一次添加、删除多个列或标签。
修改语法格式:
ALTER TABLE <table_name>
[ADD [COLUMN] [IF NOT EXISTS] <colunm_name> <data_type> [DEFAULT <expr> | NULL ]
|ADD [TAG | ATTRIBUTE] <tag_name> <tag_type>
|ALTER [COLUMN] <colunm_name> [SET DATA] TYPE <new_type> [SET DEFAULT <default_expr> | DROP DEFAULT ]
|ALTER [TAG | ATTRIBUTE] <tag_name> [SET DATA] TYPE <new_type>
|DROP [COLUMN] [IF EXISTS] <colunm_name>
|DROP [TAG | ATTRIBUTE] <tag_name>
|RENAME TO <new_table_name>
|RENAME COLUMN <old_name> TO <new_name>
|RENAME [TAG | ATTRIBUTE] <old_name> TO <new_name>
|SET [RETENTIONS = <keep_duration> | ACTIVETIME = <active_duration> | PARITITION INTERVAL = <interval>]];
参数说明:
ADD COLUMN:添加列,需指定列名和数据类型,也支持指定列的默认值。每张表最多支持 4096 列。
ADD TAG/ATTRITBUTE:添加标签,需指定标签的名称和数据类型,不支持添加主标签。
ALTER COLUMN: 修改列的数据类型或宽度,设置或删除列的默认值。
ALTER TAG/ATTRITBUTE:修改标签的数据类型或宽度,其中 SET DATA 为可选关键字,是否使用不影响修改标签的数据类型和宽度,不支持修改主标签的数据类型和宽度。
DROP COLUMN: 删除列,需指定列名。
RENAME TO: 修改表的名称。
RENAME COLUMN:修改列的名称。
RENAME TAG/ATTRIBUTE:修改标签的名称。
SET RETENTIONS:设置表的生命周期。
SET ACTIVETIME:设置表数据的活跃时间。
SET PARTITION INTERVAL:设置表数据目录分区的时间范围。
实操示例:
-- 修改表的名称。ALTER TABLE users RENAME TO tstable;-- 修改表的生命周期。ALTER TABLE users SET RETENTIONS = 20d;-- 修改表数据的活跃时间。ALTER TABLE users SET ACTIVETIME = 20d;-- 修改表数据目录分区的时间范围。ALTER TABLE users SET PARTITION INTERVAL = 2d;-- 新增列。ALTER TABLE users ADD COLUMN c3 INT NULL;-- 新增列并设置列的默认值。ALTER TABLE users ADD COLUMN c4 VARCHAR(50) DEFAULT 'aaa';-- 删除列。ALTER TABLE users DROP c3;-- 修改列的名称。ALTER TABLE users RENAME COLUMN c2 TO c4;-- 修改列的数据类型。ALTER TABLE users ALTER COLUMN c3 TYPE INT8;-- 修改列的默认值。ALTER TABLE users ALTER COLUMN c4 SET DEFAULT '789';-- 删除列的默认值。ALTER TABLE users ALTER COLUMN c4 DROP DEFAULT;-- 新增标签。ALTER TABLE users ADD TAG color VARCHAR(30);-- 删除标签。ALTER TABLE users DROP TAG color;-- 修改标签名。ALTER TABLE users RENAME TAG site TO location;-- 修改标签的宽度。ALTER TABLE users ALTER color TYPE VARCHAR(50);
总结
我们已经将时序表的基础操作全部搞定,收获的内容还是比较多的,对于表的创建注意事项还有在实操的注意事项我这里也都所有说明,具体的还需要进行练习操作,希望大家能更好更快的成长。
欢迎来到KWDB社区
KWDB开源库地址:https://gitee.com/kwdb/kwdb
KWDB学习地址:https://www.kaiwudb.com/learning/
KWDB活动地址:https://mp.weixin.qq.com/s/ZKQo7eQj_AtwamONCSl07A
希望本文能为大家带来一些价值,欢迎留言讨论。
相关文章:
【KWDB 创作者计划】一文掌握KWDB的时序表管理
前言 本文是在对时序数据库有一定了解,并且KWDB的数据库操作了解后进行学习的文章安排,如果对时序数据库与KWDB的数据库操作还不怎么了解的可以查阅官网的文档进行提前学习,当有了这些基础后,本文就是对时序数据表的一个管理操作…...
《算法导论(第4版)》阅读笔记:p9-p9
《算法导论(第4版)》学习第 6 天,p9-p9 总结,总计 1 页。 一、技术总结 1. data structure A data structure is a way to store and organize data in order to facilitate access and modifications(数据结构是一种存储和组织数据的方式,…...
Facebook隐私保护措施的优缺点解析
在这个数字化的时代,隐私保护已成为公众关注的热点话题。Facebook,作为全球最大的社交媒体平台之一,其隐私保护措施自然也受到了广泛的关注和讨论。本文将对Facebook的隐私保护措施进行解析,探讨其优点与缺点,并探讨如…...
深入了解linux系统—— 进程地址空间
前言 程序地址空间 在之前,我们学习C/C时,多多少少都看过这样的一张图 我们现在通过下面这一段代码看一下: #include <stdio.h> #include <unistd.h> #include <stdlib.h> int g_unval; int g_val 100; int main(int…...
电动加长杆金属硬密封法兰式蝶阀泄漏等级解析:水、蒸汽、油品介质的可靠选择-耀圣
电动加长杆金属硬密封法兰式蝶阀泄漏等级解析:水、蒸汽、油品介质的可靠选择 在工业流体控制领域,电动金属硬密封蝶阀凭借其卓越的密封性能和耐高温高压特性,成为水、蒸汽、油品等介质的核心控制设备。其泄漏等级作为衡量阀门性能的关键指标…...
win11共享打印机主机设置
1.首先打开设置,选择打印机和扫描仪点击打印机属性,将共享窗口的共享这台打印机和在客户端计算机上呈现打印作业这两项勾选上。 2.通过cmd命令 gpedit.msc 打开本地组策略编辑器。 3.网络访问选择仅来宾 4.将账户来宾状态选择启用 5.将拒绝从网络访问这台…...
Flowable7.x学习笔记(二十)查看流程办理进度图
前言 本文是基于继承Flowable的【DefaultProcessDiagramCanvas】和【DefaultProcessDiagramGenerator】实现的自定义流程图生成器,通过自定义流程图生成器可以灵活的指定已经执行过的节点和当前正在活跃的节点样式,比如说已经执行完成的节点我们标绿&…...
【计算机网络 第8版】谢希仁编著 第四章网络层 地址类题型总结
小结 个人觉得地址类在网络层算好做的题,这部分知识本身并不多,理解到位了就是2进制和10进制的换算题了。而且这种题给你一小时例题和标答,肯定自己都能悟出来。但是计网网络层的整体我感觉很散,老师讲的也乱七八糟的,…...
一种基于条件生成对抗网络(cGAN)的CT重建算法
简介 简介:该文提出了一种基于条件生成对抗网络(cGAN)的CT重建算法,通过引入CBAM注意力机制增强网络对关键特征的提取能力,有效解决了CT成像中因噪声干扰导致的重建精度下降问题。实验采用固体火箭发动机模拟件数据集,将正弦图分为五组并添加不同程度的噪声进行训练。结…...
欧拉系统(openEuler)上部署OpenStack的完整指南 ——基于Yoga版本的全流程实践
(资源区里有上传的配置好的openstack镜像) 一、环境规划与前置准备 1. 硬件与节点规划升级 存储节点(可选):若需Cinder后端,建议配置SSDHDD混合存储网络拓扑强化: 管理网络:启用V…...
oceanbase不兼容SqlSugarCore的问题
问题发现 C#程序使用SqlSugarCore5.1.4.166进行数据库操作,而且项目需要在多台服务器上面部署,结果发现A服务器部署运行没有问题, B服务器部署却报错:SqlSugar.SqlSugarException:Connect timeout expired. 但是我们的C#代码是一…...
深入理解分布式锁——以Redis为例
一、分布式锁简介 1、什么是分布式锁 分布式锁是一种在分布式系统环境下,通过多个节点对共享资源进行访问控制的一种同步机制。它的主要目的是防止多个节点同时操作同一份数据,从而避免数据的不一致性。 线程锁: 也被称为互斥锁(…...
OrangePi Zero 3学习笔记(Android篇)1 - 搭建环境
目录 1. 下载安装Ubuntu22.04 1.1 安装增强功能 1.2 设置共享文件夹 1.3 创建AOSP.vdi 1.4 更新相关软件包 2. 解压AOSP源代码 3. 编译代码 3.1 编译uboot/Linux 3.2 编译AOSP源代码 3.3 内存问题调试记录 3.3.1 查看具体什么问题 3.3.2 关闭dex2oat(无…...
RabbitMq(尚硅谷)
RabbitMq 1.RabbitMq异步调用 2.work模型 3.Fanout交换机(广播模式) 4.Diret交换机(直连) 5.Topic交换机(主题交换机,通过路由匹配) 6.Headers交换机(头交换机) 6…...
OpenAI的“四面楚歌”:从营利到非营利,一场关于AGI控制权的革命
引言 当“奥特曼妥协”与“四面楚歌”并置时,OpenAI的这次重大调整,仿佛在科技史上投下一颗震撼弹。这家曾因“拒绝盈利”而备受争议的人工智能公司,如今却在资本与理想之间艰难抉择——放弃营利性转型,回归非营利初心。这不仅是对…...
[250505] Arch Linux 正式登陆 Linux 的 Windows 子系统
目录 Arch Linux 正式登陆 Windows Subsystem for Linux (WSL) Arch Linux 正式登陆 Windows Subsystem for Linux (WSL) Arch Linux 社区与 Microsoft 合作,正式宣布 Arch Linux 现已提供官方的 Windows Subsystem for Linux (WSL) 镜像。这意味着 Windows 用户现…...
MySQL 日期格式化:DATE_FORMAT 函数用法
MySQL 日期格式化:DATE_FORMAT 函数用法 在 MySQL 中,DATE_FORMAT() 函数用于将日期或时间值格式化为指定的字符串格式。 正确语法 DATE_FORMAT(date, format)常用格式说明符 说明符描述%Y四位数的年份(例如:2023)…...
java springboot解析出一个图片的多个二维码
引入 <dependencies><!-- ZXing --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.4.1</version></dependency><dependency><groupId>com.google.zxing…...
【四川省专升本计算机基础】第一章 计算机基础知识(上)
前言 对计算机专业的同学来说这门课程可能很简单,容易拿高分(125分以上),但也可能很容易大意丢分。因为本门课程人称:背多分。大意丢分者的心态觉得计算机基础都学过,内容很简单,最后才开始背计…...
406错误,WARN 33820 --- [generator] [nio-8080-exec-4] .w.s.m.s.DefaultHa
在接口调用过程中,后端出现.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotAcceptableException: No acceptable representation]错误。检查了一个小时才发现我返回的对象没有写getter方法, 当Spring B…...
基于STM32、HAL库的SST26VF064B NOR FLASH存储器驱动应用程序设计
一、简介: SST26VF064B是Microchip公司生产的一款64Mbit(8MB)串行闪存器件,采用SPI接口通信,具有以下特点: 工作电压:2.7-3.6V 最高104MHz时钟频率 统一4KB扇区结构 快速擦除和编程时间 低功耗特性 支持标准SPI、Dual SPI和Quad SPI模式 二、硬件接口: STM32L4引脚SST26V…...
美信监控易:全栈式自主可控的底层架构优势
在当今数字化时代,企业的运维管理面临着越来越多的挑战。为了确保业务的稳定运行,企业需要一款高效、可靠的运维管理软件。北京美信时代的美信监控易运维管理软件,以其全栈式自主可控的底层架构优势,成为了运维团队的理想选择。 …...
Class AB OPA corner 仿真,有些corenr相位从0开始
Class AB OPA做 STB 仿真时,会遇到有些corner(c0_0、c0_4、c0_5)相位从0开始的情况。 首先应该去检查电路,电路里是否有正反馈;排除没有正反馈后,考虑是图中的红框中的线性跨导环中的Vds 太大导致了碰撞电离导致的。 查找了网上…...
【JEECG】BasicTable单元格编辑,插槽添加下拉组件样式错位
1.功能说明 BasicTable表格利用插槽,添加组件实现单元格编辑功能,选择组件下拉框错位 2.效果展示 3.解决方案 插槽内组件增加::getPopupContainer"getPopupContainer" <template #salesOrderProductStatus"{ column, re…...
第十五届蓝桥杯单片机国赛-串口解析
串口通信像是蓝桥杯单片机组国赛中一个若隐若现的秘境,总在不经意间为勇者们敞开大门。然而,初次探索这片领域的冒险者,常常会被其神秘莫测的特性所震慑,黯然退场(编不下去了,直接进入正题)。 附…...
Flutter开发HarmonyOS实战-鸿蒙App商业项目
Flutter开发HarmonyOS实战内容介绍: Flutter开发HarmonyOS 鸿蒙App商业项目(小米商城APP)实战视频教程 Flutter开发鸿蒙APP是在《FlutterGetx仿小米商城》项目基础之上讲解的,调试Flutter HarmonyOS应用需要有HarmonyOS Next的手机…...
【回眸】香橙派Zero2 超声波模块测距控制SG90舵机转动
前言 知识准备 超声波模块时序图 gettimeofday()函数作用 gettimeofday()函数原型 tv结构体 获取当前系统时间与格林威治时间的时间差 获取香橙派数10万秒花费的时间 使用超声波模块获取到障碍物距离 SG90舵机模块 舵机模块的作用 舵机模块方波时序图 舵机模块工作原…...
RabbitMQ 添加新用户和配置权限
以下是关于使用 sudo rabbitmqctl add_user 命令创建新用户的详细示例,同时包含创建用户后进行权限设置、角色设置等相关操作的示例。 1. 前提条件 确保你的 RabbitMQ 服务已经正常运行,并且你具有执行 sudo 命令的权限。 2. 创建新用户 假设我们要创…...
【前缀和】矩阵区域和
文章目录 1314. 矩阵区域和解题思路1314. 矩阵区域和 1314. 矩阵区域和 给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和: i - k <= r <= i + k, j - k <= c <= j + k …...
编程日志4.25
栈的stl模板 可直接用<stack>库进行调用 #include<iostream> #include<stack>//栈的模板库 using namespace std; int main() { stack<int> intStk;//整数 栈 stack<double> doubleStk;//浮点数 栈 intStk.push(1); intStk.pu…...
【中间件】brpc之工作窃取队列
文章目录 BRPC Work Stealing Queue1 核心功能2 关键数据结构2.1 队列结构2.2 内存布局优化 3 核心操作3.1 本地线程操作(非线程安全)3.2 窃取操作(线程安全) 4 设计亮点4.1 无锁原子操作4.2 环形缓冲区优化4.3 线程角色分离 5 性…...
用OMS从MySQL迁移到OceanBase,字符集utf8与utf8mb4的差异
一、问题背景 在一次从MySQL数据库迁移到OceanBase的MySQL租户过程中,出现了一个转换提示: [WARN][CONVER] he table charset:utf8->utf8mb4, 你可能会担心这种转换可能导致字符集不兼容的问题。但通过查阅相关资料可知,utf8m…...
知乎前端面试题及参考答案
Webpack 和 Vite 的区别是什么? 构建原理: Webpack 是基于传统的打包方式,它会将所有的模块依赖进行分析,然后打包成一个或多个 bundle。在开发过程中,当代码发生变化时,需要重新构建整个项目,构建速度会随着项目规模的增大而变慢。Vite 利用了浏览器对 ES 模块的支持,…...
项目中为什么选择RabbitMQ
当被问及为什么选择某种技术时,应该结合开发中的实际情况以及类似的技术进行分析,适合的技术才是最好的。 在项目中为什么选择RabbitMQ 作为消息中间件,主要可以基于以下几方面进行分析: 1. 可靠性 消息持久化:Rabbi…...
深入解析二维矩阵搜索:LeetCode 74与240题的两种高效解法对比
文章目录 [toc]**引言** **一、问题背景与排序规则对比****1. LeetCode 74. 搜索二维矩阵****2. LeetCode 240. 搜索二维矩阵 II** **二、核心解法对比****方法1:二分查找法(适用于LeetCode 74)****方法2:线性缩小搜索范围法&…...
Qt案例 以单线程或者单生产者多消费者设计模式实现QFTP模块上传文件夹功能
前文:Qt案例 使用QFtpServerLib开源库实现Qt软件搭建FTP服务器,使用QFTP模块访问FTP服务器 已经介绍了Qt环境下搭建FTP服务器或者使用QFTP上传的方式示例, 这里主要介绍下使用QFTP模块上传整个文件夹的案例示例。 目录导读 前因后果单线程处理1.定义FTPFolderUpload 继承 QT…...
含锡废水回收率提升技术方案
一、预处理环节优化 物理分离强化 采用双层格栅系统(孔径1mm0.5mm)拦截悬浮物,配套旋流分离器去除密度>2.6g/cm的金属颗粒,使悬浮物去除率提升至85%。增设pH值智能调节模块,通过在线pH计联动碳酸钠/氢氧化钠投加系…...
第八章,STP(生成树协议)
广播风暴----广播帧在二层环路中形成逆时针或顺时针的转动的环路,并且无限循环,最终导致设备宕机,网络瘫痪。 MAC地址表的翻摆(漂移)----同一个数据帧,顺时针接收后将记录MAC地址及接口的对应信息ÿ…...
《面向对象程序设计-C++》实验五 虚函数的使用及抽象类
程序片段编程题 1.【问题描述】 基类shape类是一个表示形状的抽象类,area( )为求图形面积的函数。请从shape类派生三角形类(triangle)、圆类(circles)、并给出具体的求面积函数。注:圆周率取3.14 #include<iostream> #in…...
PCIe - ZCU106(RC) + KU5P(EP) + 固化
目录 1. 简介 1.1 Data Mover 1.2 描述符 2. ZCU102 2.1 Ubuntu OS 2.2 USB Host 2.2.1 连接拓扑 2.2.2 设备类型 2.2.3 USB 跳帽设置 2.3 无线网卡 2.4 PCIe Info 2.4.1 Diagram 2.4.2 lspci -tv 2.4.3 lspci -v 2.4.2.1 设备基本信息 2.4.2.2 控制与状态寄存…...
网络编程核心技术解析:从Socket基础到实战开发
网络编程核心技术解析:从Socket基础到实战开发 一、Socket编程核心基础 1. 主机字节序与网络字节序:数据传输的统一语言 在计算机系统中,不同架构对多字节数据的存储顺序存在差异,而网络通信需要统一的字节序标准,这…...
SQL注入总结
一.sql注入 原理:当一个网站存在与用户交互的功能(如登录表单、搜索框、评论区等),并且用户输入的数据未经充分过滤或转义,直接拼接到后台数据库查询语句中执行时,就可能引发SQL注入漏洞。攻击者可以通过构…...
conda 安装cudnn
通过 Conda 安装 cuDNN 确保你有 NVIDIA GPU 和 CUDA Toolkit:首先,确保你的系统上安装了 NVIDIA GPU 和 CUDA Toolkit。你可以通过运行以下命令来检查 CUDA 是否已安装:nvcc --version 如果没有安装 CUDA,你需要先从 NVIDIA CU…...
强啊!Oracle Database 23aiOracle Database 23ai:使用列别名进行分组排序!
大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构! 从 Oracle Database 23ai 开始,您可以在 GROUP BY 和 HAVING 子句中直接使用列别名。此功能在早期版本的 Oracle Database 中不…...
RAG 2.0 深入解读
一、Introduction 过去一年可谓是RAG元年,检索增强生成技术迅速发展与深刻变革,其创新与应用已深刻重塑了大模型落地的技术范式。站在2025年,RAG不仅突破了早期文本处理的局限,更通过多模态融合、混合检索优化和语义鸿沟跨越等突…...
Excel Vlookup
VLOOKUP(A2, Sheet2!A:B, 2, 0) 代表的是检查A2,匹配源是sheet2表AB两列 Sheet2!A:B:指定要在其中查找数据的范围,这里是 Sheet12中的 A 列和 B 列,A 列是查找的依据列,B 列是要返回值的列。2:表示要返回查找区域中的…...
css媒体查询及css变量
媒体查询是 CSS 样式表最重要的功能之一,所谓媒体查询指的就是根据不同的媒体类型(设备类型)和条件来区分各种设备(例如:电脑、手机、平板电脑、盲文设备等),并为它们分别定义不同的 CSS 样式。…...
CSS网格布局
网格布局将元素占用的空间划分为二维格子,下级元素放置在格子所在的位置上。划分格子的元素叫做网格容器,其 display 属性是 grid (块元素)或 inline-grid (内联块元素)。网格容器的下级元素叫做网格项。容…...
Windows远程连接MySQL报错,本地navicat能连接MySQL
一、报错 telnet 119.87.111.79 3306“无法打开到主机的连接。在端口 3306: 连接失败” 表明无法通过 TCP 协议连接到目标服务器的 3306 端口。 二、目的 (1)Telnet 测试的目的 Telnet 仅用于测试 TCP 端口是否开放ÿ…...
Github打不开怎么办?
国内无法打开github,使有watt toolkit一键加速即可打开。 加速器 加速器直接加速Github原站,在开发者使用或者需要登录账号时非常有效 Watt Toolkit(原Steam) 官网地址:Watt Toolkit 一、进入官网后,点…...