TDengine 窗口预聚集
简介
在大数据量场景下,经常需要查询某段时间内的汇总结果,当历史数据变多或者时间范围变大时,查询时间也会相应增加。通过预聚集的方式可以将计算结果提前存储下来,后续查询可以直接读取聚集结果,而不需要扫描原始数据,如当前 Block 内的 SMA (Small Materialized Aggregates) 信息。
Block 内的 SMA 信息粒度较小,若查询时间范围是日,月甚至年时,Block 的数量将会很多,因此 TSMA (Time-Range Small Materialized Aggregates) 支持用户指定时间窗口进行预聚集。通过对固定时间窗口内的数据进行预计算,并将计算结果存储下来,查询时通过查询预计算结果以提高查询性能。
创建 TSMA
-- 创建基于超级表或普通表的 tsma
CREATE TSMA tsma_name ON [dbname.]table_name FUNCTION (func_name(func_param) [, ...] ) INTERVAL(time_duration);-- 创建基于小窗口 tsma 的大窗口 tsma
CREATE RECURSIVE TSMA tsma_name ON [db_name.]tsma_name1 INTERVAL(time_duration);time_duration:number unit
创建 TSMA 时需要指定 TSMA 名字,表名字,函数列表以及窗口大小。当基于一个已经存在的 TSMA 创建新的 TSMA 时,需要使用 RECURSIVE
关键字但不能指定 FUNCTION()
,新创建的 TSMA 已有 TSMA 拥有相同的函数列表,且此种情况下所指定的 INTERVAL 必须至少为所基于的 TSMA 窗口长度的整数倍,并且天不能基于 2h 或 3h 建立,只能基于 1h 建立,月也只能基于 1d 而非 2d、3d 建立。
其中 TSMA 命名规则与表名字类似,长度最大限制为表名长度限制减去输出表后缀长度,表名长度限制为 193,输出表后缀为_tsma_res_stb_
,TSMA 名字最大长度为 178。
TSMA 只能基于超级表和普通表创建,不能基于子表创建。
函数列表中只能指定支持的聚集函数 (见下文),并且函数参数必须为 1 个,即使当前函数支持多个参数,函数参数内必须为普通列名,不能为标签列。函数列表中完全相同的函数和列会被去重,如同时创建两个 avg(c1),则只会计算一个输出。TSMA 计算时将会把所有 函数中间结果
都输出到另一张超级表中,输出超级表还包含了原始表的所有 tag 列。函数列表中函数个数最多支持创建表最大列个数 (包括 tag 列) 减去 TSMA 计算附加的四列,分别为 _wstart
、_wend
、_wduration
,以及一个新增 tag 列 tbname
,再减去原始表的 tag 列数。若列个数超出限制,会报 Too many columns
错误。
由于 TSMA 输出为一张超级表,因此输出表的行长度受最大行长度限制,不同函数的 中间结果
大小各异,一般都大于原始数据大小,若输出表的行长度大于最大行长度限制,将会报 Row length exceeds max length
错误。此时需要减少函数个数或者将常用的函数进行分组拆分到多个 TSMA 中。
窗口大小的限制为 [1m ~ 1y/12n]。INTERVAL 的单位与查询中 INTERVAL 子句相同,如 a(毫秒)、b(纳秒)、h(小时)、m(分钟)、s(秒)、u(微秒)、d(天)、w(周)、n(月)、y(年)。
TSMA 为库内对象,但名字全局唯一。集群内一共可创建 TSMA 个数受参数 maxTsmaNum
限制,参数默认值为 3,范围:[0-3]。注意,由于 TSMA 后台计算使用流计算,因此每创建一条 TSMA,将会创建一条流,因此能够创建的 TSMA 条数也受当前已经存在的流条数和最大可创建流条数限制。
支持的函数列表
函数 | 备注 |
---|---|
min | |
max | |
sum | |
first | |
last | |
avg | |
count | 若想使用 count(*),则应创建 count(ts) 函数 |
spread | |
stddev | |
删除 TSMA
DROP TSMA [db_name.]tsma_name;
若存在其他 TSMA 基于当前被删除 TSMA 创建,则删除操作报 Invalid drop base tsma, drop recursive tsma first
错误。因此需先删除 所有 Recursive TSMA。
TSMA 的计算
TSMA 的计算结果为与原始表相同库下的一张超级表,此表用户不可见。不可删除,在 DROP TSMA
时自动删除。TSMA 的计算是通过流计算完成的,此过程为后台异步过程,TSMA 的计算结果不保证实时性,但可以保证最终正确性。
TSMA 计算时若原始子表内没有数据,则可能不会创建对应的输出子表,因此在 count 查询中,即使配置了 countAlwaysReturnValue
,也不会返回该表的结果。
当存在大量历史数据时,创建 TSMA 之后,流计算将会首先计算历史数据,此期间新创建的 TSMA 不会被使用。数据更新删除或者过期数据到来时自动重新计算影响部分数据。在重新计算期间 TSMA 查询结果不保证实时性。若希望查询实时数据,可以通过在 SQL 中添加 hint /*+ skip_tsma() */
或者关闭参数 querySmaOptimize
从原始数据查询。
TSMA 的使用与限制
- 客户端配置参数:
querySmaOptimize
,用于控制查询时是否使用 TSMA,True
为使用,False
为不使用即从原始数据查询。 - 客户端配置参数:
maxTsmaCalcDelay
,单位为秒,用于控制用户可以接受的 TSMA 计算延迟,若 TSMA 的计算进度与最新时间差距在此范围内,则该 TSMA 将会被使用,若超出该范围,则不使用,默认值:600(10 分钟),最小值:600(10 分钟),最大值:86400(1 天)。 - 客户端配置参数:
tsmaDataDeleteMark
,单位毫秒,与流计算参数deleteMark
一致,用于控制流计算中间结果的保存时间,默认值为 1d,最小值为 1h。因此那些距最后一条数据时间大于配置参数的历史数据将不保存流计算中间结果,因此若修改这些时间窗口内的数据,TSMA 的计算结果中将不包含更新的结果。即与查询原始数据结果将不一致。
查询时使用 TSMA
已在 TSMA 中定义的 agg 函数在大部分查询场景下都可直接使用,若存在多个可用的 TSMA,优先使用大窗口的 TSMA,未闭合窗口通过查询小窗口 TSMA 或者原始数据计算。同时也有某些场景不能使用 TSMA(见下文)。不可用时整个查询将使用原始数据进行计算。
未指定窗口大小的查询语句默认优先使用包含所有查询聚合函数的最大窗口 TSMA 进行数据的计算。如 SELECT COUNT(*) FROM stable GROUP BY tbname
将会使用包含 count(ts) 且窗口最大的 TSMA。因此若使用聚合查询频率高时,应当尽可能创建大窗口的 TSMA。
指定窗口大小时即 INTERVAL
语句,使用最大的可整除窗口 TSMA。窗口查询中,INTERVAL
的窗口大小、OFFSET
以及 SLIDING
都影响能使用的 TSMA 窗口大小。因此若使用窗口查询较多时,需要考虑经常查询的窗口大小,以及 offset、sliding 大小来创建 TSMA。
例如 创建 TSMA 窗口大小 5m
一条,10m
一条,查询时 INTERVAL(30m)
,那么优先使用 10m
的 TSMA,若查询为 INTERVAL(30m, 10m) SLIDING(5m)
,那么仅可使用 5m
的 TSMA 查询。
查询限制
在开启了参数 querySmaOptimize
并且无 skip_tsma()
hint 时,以下查询场景无法使用 TSMA。
- 某个 TSMA 中定义的 agg 函数不能覆盖当前查询的函数列表时
- 非
INTERVAL
的其他窗口,或者INTERVAL
查询窗口大小(包括INTERVAL,SLIDING,OFFSET
)不是定义窗口的整数倍,如定义窗口为 2m,查询使用 5 分钟窗口,但若存在 1m 的窗口,则可以使用。 - 查询
WHERE
条件中包含任意普通列 (非主键时间列) 的过滤。 PARTITION
或者GROUY BY
包含任意普通列或其表达式时- 可以使用其他更快的优化逻辑时,如 last cache 优化,若符合 last 优化的条件,则先走 last 优化,无法走 last 时,再判断是否可以走 tsma 优化
- 当前 TSMA 计算进度延迟大于配置参数
maxTsmaCalcDelay
时
下面是一些例子:
SELECT agg_func_list [, pseudo_col_list] FROM stable WHERE exprs [GROUP/PARTITION BY [tbname] [, tag_list]] [HAVING ...] [INTERVAL(time_duration, offset) SLIDING(duration)]...;-- 创建
CREATE TSMA tsma1 ON stable FUNCTION(COUNT(ts), SUM(c1), SUM(c3), MIN(c1), MIN(c3), AVG(c1)) INTERVAL(1m);-- 查询
SELECT COUNT(*), SUM(c1) + SUM(c3) FROM stable; ---- use tsma1
SELECT COUNT(*), AVG(c1) FROM stable GROUP/PARTITION BY tbname, tag1, tag2; --- use tsma1
SELECT COUNT(*), MIN(c1) FROM stable INTERVAL(1h); --- use tsma1
SELECT COUNT(*), MIN(c1), SPREAD(c1) FROM stable INTERVAL(1h); ----- can't use, spread func not defined, although SPREAD can be calculated by MIN and MAX which are defined.
SELECT COUNT(*), MIN(c1) FROM stable INTERVAL(30s); ----- can't use tsma1, time_duration not fit. Normally, query_time_duration should be multiple of create_duration.
SELECT COUNT(*), MIN(c1) FROM stable where c2 > 0; ---- can't use tsma1, can't do c2 filtering
SELECT COUNT(*) FROM stable GROUP BY c2; ---- can't use any tsma
SELECT MIN(c3), MIN(c2) FROM stable INTERVAL(1m); ---- can't use tsma1, c2 is not defined in tsma1.-- Another tsma2 created with INTERVAL(1h) based on tsma1
CREATE RECURSIVE TSMA tsma2 on tsma1 INTERVAL(1h);
SELECT COUNT(*), SUM(c1) FROM stable; ---- use tsma2
SELECT COUNT(*), AVG(c1) FROM stable GROUP/PARTITION BY tbname, tag1, tag2; --- use tsma2
SELECT COUNT(*), MIN(c1) FROM stable INTERVAL(2h); --- use tsma2
SELECT COUNT(*), MIN(c1) FROM stable WHERE ts < '2023-01-01 10:10:10' INTERVAL(30m); --use tsma1
SELECT COUNT(*), MIN(c1) + MIN(c3) FROM stable INTERVAL(30m); --- use tsma1
SELECT COUNT(*), MIN(c1) FROM stable INTERVAL(1h) SLIDING(30m); --- use tsma1
SELECT COUNT(*), MIN(c1), SPREAD(c1) FROM stable INTERVAL(1h); ----- can't use tsma1 or tsma2, spread func not defined
SELECT COUNT(*), MIN(c1) FROM stable INTERVAL(30s); ----- can't use tsma1 or tsma2, time_duration not fit. Normally, query_time_duration should be multiple of create_duration.
SELECT COUNT(*), MIN(c1) FROM stable where c2 > 0; ---- can't use tsma1 or tsam2, can't do c2 filtering
使用限制
创建 TSMA 之后,对原始超级表的操作有以下限制:
- 必须删除该表上的所有 TSMA 才能删除该表。
- 原始表所有 tag 列不能删除,也不能修改 tag 列名或子表的 tag 值,必须先删除 TSMA,才能删除 tag 列。
- 若某些列被 TSMA 使用了,则这些列不能被删除,必须先删除 TSMA。添加列不受影响,但是新添加的列不在任何 TSMA 中,因此若要计算新增列,需要新创建其他的 TSMA。
查看 TSMA
SHOW [db_name.]TSMAS;
SELECT * FROM information_schema.ins_tsma;
若创建时指定的较多的函数,且列名较长,在显示函数列表时可能会被截断 (目前最大支持输出 256KB)。
访问官网
更多内容欢迎访问 TDengine 官网
相关文章:
TDengine 窗口预聚集
简介 在大数据量场景下,经常需要查询某段时间内的汇总结果,当历史数据变多或者时间范围变大时,查询时间也会相应增加。通过预聚集的方式可以将计算结果提前存储下来,后续查询可以直接读取聚集结果,而不需要扫描原始数…...
高精度加法与乘法
原理就是模拟我们列竖式的过程。 一、加法 加法很简单,我们这里不再赘述 string solve(string s, string t) {string ans;int tmp 0;int n s.size()-1;int m t.size()-1;while(n>0||m>0||tmp){if(n>0){tmp s[n--]-0;}if(m>0){tmp t[m--]-0;}ans…...
macOS可视化桌面配置docker加速器
macOS可视化桌面配置docker加速器 在镜像settings->docker Engine改为国内镜像修改为国内镜像重启docker(可视化界面启动或者使用命令行)使用命令重启可视化界面重启 在镜像settings->docker Engine改为国内镜像 修改为国内镜像 {"registry-mirrors": ["…...
不用训练,集成多个大模型产生更优秀的输出
论文标题 Collab: Controlled Decoding using Mixture of Agents for LLM Alignment 论文地址 https://arxiv.org/pdf/2503.21720 作者背景 JP摩根,马里兰大学帕克分校,普林斯顿大学 动机 大模型对齐(alignment)的主要目的…...
【大模型】DeepSeek + 蓝耕MaaS平台 + 海螺AI生成高质量视频操作详解
目录 一、前言 二、蓝耘智能云MaaS平台介绍 2.1 蓝耘智算平台是什么 2.2 平台优势 2.3 平台核心能力 三、海螺AI视频介绍 3.1 海螺AI视频是什么 3.2 海螺AI视频主要功能 3.3 海螺AI视频应用场景 3.4 海螺AI视频核心优势 3.5 项目git地址 四、蓝耘MaaS平台DeepSeek海…...
RobotFrameWork环境搭建及使用
RF环境搭建 首先安装python并且配置python环境变量pip install robotframeworkpip install robotframework-ride 生产桌面快捷方式 不行换豆瓣源检查一下pip list RF类库和扩展库 标准库 按F5快捷键查询,可以看到rf自带的库不需要额外安装这些标准库在python的 …...
Flutter之设计与主题字体
目录: 1、共享主题样式2、文字3、使用自定义字体4、以 package 的方式使用字体1. 将字体添加到 package2. 将 package 和字体添加到应用3. 使用字体 1、共享主题样式 MaterialApp(title: appName,theme: ThemeData(// Define the default brightness and colors.col…...
发生梯度消失, 梯度爆炸问题的原因,怎么解决?
目录 一、梯度消失的原因 二、梯度爆炸的原因 三、共同的结构性原因 四、解决办法 五、补充知识 一、梯度消失的原因 梯度消失指的是在反向传播过程中,梯度随着层数的增加指数级减小(趋近于0),导致浅层网络的权重几乎无法更新…...
脑电学习笔记
一,原理简介 使用eprime或者matlab给被试呈现刺激,并在某个时间发送Mark,脑电帽会同步采集被试的脑电信号,经放大器放大后,控制盒会把脑电信号和mark 信号同步到一起,通过usb线传入到采集系统(比…...
Java面试黄金宝典37
1. 转发与重定向的区别 定义 转发:服务器内部的一种请求处理方式,当客户端向服务器发送请求后,服务器将该请求转发到另一个资源(如 JSP、Servlet)进行处理,整个过程在服务器端完成,客户端并不知道请求被转发,且使用的是同一个请求对象和响应对象。重定向:服务器向客户…...
嵌入式rodata段
在嵌入式软件开发中,将数据放入只读数据段(.rodata)具有以下好处及典型应用示例: 好处 数据保护 .rodata段的内容在程序运行时不可修改,防止意外或恶意篡改,提升系统稳定性。 节省RAM资源 只读数据可直接…...
Python学习之numpy
Python学习之numpy 数组是Numpy库的核心数据结构。 NumPy 是一个 Python 包。 它代表 “Numeric Python”。 它是一个由多维数组对象和用于处理数组的例程集合组成的库。 Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。 也开发了另一个包 Numarr…...
ext4磁盘扩容
ext4扩容示例 当前虚机中,逻辑卷名称data_lv,卷组名称data_vg,物理卷名称data_pv,他们的大小都为100G,由于磁盘空间不够使用,申请扩容硬盘至200G,以下操作将ext4的/data分区扩容至200G。 # 1.…...
PostgreSQL 16深度解析(从16.0-16.8)
作为开源关系型数据库的标杆,PostgreSQL持续通过版本迭代展现其技术生命力。本文将以技术视角深度剖析PostgreSQL 16系列(16.0至16.8)的核心演进,重点解读新增功能、性能优化及实践价值,为数据库管理者与开发者提供升级…...
10个DeepSeek、ChatGPT提示词更快更好的学术文献阅读!
目录 AIGC助力快速阅读文献 10个文献阅读提示词 大家好这里是AIWritePaper官方账号,官网👉AIWritePaper~ AIGC助力快速阅读文献 在当今学术界,海量的论文如潮水般涌来,想要跟上最新研究进展简直比在图书馆里找到一本没被借走的…...
基于spring boot 鲜花销售系统PPT(源码+lw+部署文档+讲解),源码可白嫖!
课题意义 随着网络不断的普及发展,鲜花销售系统依靠网络技术的支持得到了快速的发展,首先要从用户的实际需求出发,通过了解用户的需求开发出具有针对性的信息管理系统,利用目前网络给用户带来的方便快捷这一特点对系统进行调整&am…...
Spring Boot 与 TDengine 的深度集成实践(三)
创建 RESTful API 编写控制器类 在 Spring Boot 项目中,控制器类负责处理 HTTP 请求,并将请求转发到相应的服务或数据访问层进行处理,最后返回响应结果给客户端。我们通过使用RestController和RequestMapping注解来定义控制器类和 API 路由…...
物理日志和逻辑日志
在 MySQL 的日志系统中,物理日志 和 逻辑日志 是两种不同类型的日志记录方式,它们的设计目标和实现方式有本质区别。以下是它们的详细解释和对比: 1. 物理日志 定义 物理日志记录的是数据页(Page)的物理修改&#x…...
[Deep-ML]Reshape Matrix(重塑矩阵)
Reshape Matrix(重塑矩阵) 题目链接: Reshape Matrix(重塑矩阵)https://www.deep-ml.com/problems/3 题目描述: 难度: easy(简单)。 分类: Linear Alg…...
Linux文件系统中的Page Cache和内存管理中的Page之间的关系
Linux文件系统中的Page Cache和内存管理中的Page之间有密切的关联,两者在底层机制上紧密结合,共同实现高效的内存和文件系统管理。以下是它们的关系和关键点: 核心关系 Page Cache的底层是内存Page Page Cache是由内存管理中的物理内存页&…...
day25-回溯__491.递增子序列 __46.全排列__47.全排列 II
491.递增子序列 这道题要求输出一个数组的所有非递减子序列,并且数组中是可以存在重复元素的,那么我们需要考虑的就一定是之前的树层去重的方法 并且要求非递减,所以我们每次添加元素到path要先判断两个条件: 该元素的值是否在同…...
微型导轨的制造工艺中,热处理的目的是什么?
热处理是指将金属或合金加热到一定温度,保温一段时间,然后通过适当的冷却方式使其发生物理变化,从而使其性能发生改变的加工技术,而在微型导轨的制造工艺中,热处理是必须的,那么热处理的目的是什么呢&#…...
学透Spring Boot — 018. 优雅支持多种响应格式
这是我的专栏《学透Spring Boot》的第18篇文章,想要更系统的学习Spring Boot,请访问我的专栏:学透 Spring Boot_postnull咖啡的博客-CSDN博客。 目录 返回不同格式的响应 Spring Boot的内容协商 控制器不用任何修改 启动内容协商配置 访…...
数据结构与算法----顺序表和复杂度
嘻嘻,我们用c语言来手撕顺序表!!!全程高能比喻代码实战,保证你笑着学会!!! 引言 1、数据结构是计算机存储、组织数据的方式。算法是一系列计算步骤,用来将输入数据转化…...
Android studio局域网屏幕共享(旧手机可以用来当监控啦)
项目地址 https://github.com/Anyuersuper/ScreenSharing 百度网盘 通过网盘分享的文件:ScreenSharing-master.zip 链接: https://pan.baidu.com/s/1URQnyI8zJF-IFl5_-ttXBg?pwdyuer 提取码: yuer 📱 屏幕分享应用 (ScreenSharing) 📋 项目…...
Redis持久化之RDB
RDB持久化是将当前进程数据生成快照保存到硬盘的过程,触发RDB持久化过程分为手动触发和自动触发。 1.触发机制 手动触发费别对应save和bgsave命令: save命令:阻塞当前Redis服务器,直到RDB过程完成为止,对于内存比较…...
Ubuntu 64-bit 交叉编译 FFmpeg(高级用户指南)
适用于 ARM (aarch64)、Windows (mingw)、Android、Raspberry Pi 等平台的交叉编译。 🔹 1. 安装交叉编译工具链 ARM (aarch64) 示例 sudo apt update sudo apt install gcc-aarch64-linux-gnu g-aarch64-linux-gnu binutils-aarch64-linux…...
YOLO V8中的“中心点邻近区域 + 动态IoU匹配“
它是联合优化正样本分配的策略,旨在更精准地匹配预测框与真实目标的位置关系。以下分步详解其原理: 1. 中心点邻近区域(Central Region) 1.1 目标中心区域定义 基础思想:将真实边界框ÿ…...
【MySQL | 八、 事务管理】
文章目录 什么是事务?事务的特性:事务的意义事务的提交查看事务提交方式事务的自动提交事务的手动提交开始事务执行SQL操作事务操作提交事务示例: 事务的隔离级别并发访问的基本概念并发事务的典型问题对ACID特性的影响查看和设置隔离属性各个…...
Ubuntu 下搭建 MCU 开发环境全流程指南(以 STM32 为例)
在嵌入式开发中,许多工程师都习惯于在 Windows 平台使用 Keil、IAR 等 IDE。然而,随着对自动化、可定制性以及开放工具链的需求增长,越来越多的开发者开始尝试在 Linux 环境下进行 MCU 开发。 本篇文章将以 STM32F1 系列 为例,手把手带你在 Ubuntu 下搭建一个完整的 MCU 开…...
Redis淘汰策略详解!
目录 一、为什么需要淘汰策略? 🤔二、Redis 的淘汰策略详解 👇三、如何选择合适的淘汰策略? 🤔➡️✅四、如何切换 Redis 的淘汰策略? ⚙️🔧五、总结 🎉 🌟我的其他文章…...
基于51单片机和TM1638模块的小游戏《打地鼠》
目录 系列文章目录前言一、效果展示二、原理分析三、各模块代码1、TM1638模块2、定时器03、定时器1 四、主函数总结 系列文章目录 前言 有两个版本,普中开发板版本和最小系统板版本,两个版本差别在于晶振频率不一样,其他的都相同。 本文代码…...
机器学习之数据预处理(一):缺失值处理和异常值识别的几种常用方法
始终致力于将复杂知识通俗化的不断追求中,不足之处欢迎批评指正。 1、噪声处理 噪声是一个测量变量中的随机错误或偏差,是观测值和真实值之间的误差,包括错误值或偏离期望的孤立点值。对于噪声的处理,通常可以采用数据平滑技术来…...
25/4/6 算法笔记<仿真O2DES>基础知识学习
此文章就来整理一下我学习到的O2DES仿真框架的一些核心知识 核心概念: 模拟器(Simulator):模拟器是O2DES框架的核心组件,用来管理模拟时钟,事件调度和执行。可以通过Simulator类创建模拟环境&#…...
Three.js 系列专题 3:光照与阴影
内容概述 光照是 3D 场景真实感的关键。Three.js 提供了多种光源类型,每种光源有不同的效果和用途。本专题还将介绍如何启用和优化阴影效果,提升场景的深度感。 学习目标 理解不同光源类型及其应用场景。掌握在 Three.js 中添加光源并启用阴影。学会调整阴影效果以平衡真实…...
接口自动化学习五:mock工具使用
Moco简介: Mock是一个简单搭建模拟服务器的框架,可以用来模拟http、https、socket等协议。 原理: Mock会根据一些配置,启动一个真正的HTTP服务(会监听本地的某个端口),当发起的请求满足某个条件时…...
Java学习——day22(Java反射基础入门)
文章目录 1.反射的定义2. 认识反射的关键API2.1 Class2.2 Field2.3 Method2.4 Constructor 3. 示例代码讲解与分析4. 编写反射示例代码的步骤4.1 定义测试类4.2 编写主程序,使用反射获取信息4.3 通过反射创建对象并调用方法 5. 总结6.今日生词 Java反射笔记 1.反射的…...
字符串、列表、元组、字典
字符串 双引号或者单引号中的数据,就是字符串 字符串输入 之前在学习input的时候,通过它能够完成从键盘获取数据,然后保存到指定的变量中; 注意:input获取的数据,都以字符串的方式进行保存,即…...
数据分析-Excel-学习笔记
Day1 复现报表聚合函数:日期联动快速定位区域SUMIF函数SUMIFS函数环比、同比计算IFERROR函数混合引用单元格格式总结汇报 拿到一个Excel表格,首先要看这个表格个构成(包含了哪些数据),几行几列,每一列的名称…...
Nginx 常见面试题
一、nginx常见错误及处理方法 1.1 404 bad request 一般原因:请求的Header过大 解决办法: 配置nginx.conf 相关设置1. client_header_buffer_size 16k; 2. large_client_header_buffers 4 64k;1.2 413 Request Entity Too Large 一般原因࿱…...
Spring 中的 @Autowired 和 @Resource
🧩 一、Autowired 和 Resource 的基本作用 注解来源作用AutowiredSpring 提供(org.springframework.beans.factory.annotation.Autowired)按类型 自动注入ResourceJDK 提供(javax.annotation.Resource)默认按名称 注入…...
IAGCN:登上《Nature》的深度学习可解释性情感分析模型突破
IAGCN:登上《Nature》的深度学习可解释性情感分析模型突破 一、技术突破背景 社交媒体时代,用户生成内容的情感分析需求激增。传统方面级情感分析模型在复杂语境下存在特征交互捕捉不足、情感极性判定偏差等问题。微软亚洲研究院联合清华大学提出的交互…...
Go 学习笔记 · 进阶篇 · 第一天:接口与多态
🐶Go接口与多态:继承没了,但自由炸裂! 最近翻 Go 的代码,突然看到这么一段: type Animal interface {Speak() string }我一愣,咦?这不就是 Java 里常见的“接口”吗? …...
模运算:数字世界中的时空扭曲法则——从密码学到量子计算的跨维演绎
一、模宇宙基本定理:重构数字时空的底层逻辑 1.1 同余关系的时空折叠效应 在模运算创造的离散时空中,数字呈现出环状拓扑结构。当我们在模7空间观察时,12与5通过时空折叠达成量子纠缠:12 ≡ 5 (mod 7)。这种性质使得RSA加密算法…...
0303hooks-react-仿低代码平台项目
文章目录 1. 副作用2.其他内置hooks2.1 useEffect2.2 useRef2.3useMemo2.4 useCallback 3.自定义hooks4. 第三方hooks5. hooks使用原则6. hooks闭包陷阱7. 总结结语 1. 副作用 当组件渲染完成时,加载一个Ajax网络请求当某个state更新时,加载一个Ajax网络…...
Batch Normalization:深度学习训练的加速引擎
引言 在深度学习的发展历程中,训练深度神经网络一直是一项极具挑战性的任务。随着网络层数的增加,梯度消失、梯度爆炸以及训练过程中的内部协变量偏移(Internal Covariate Shift)问题愈发严重,极大地影响了模型的收敛…...
nacos的地址应该配置在项目的哪个文件中
在 Spring Boot 和 Spring Cloud 的上下文中,Nacos 的地址既可以配置在 bootstrap.yml 中,也可以配置在 application.yml 中,但具体取决于使用场景和需求。以下是两者的区别和最佳实践: 1. bootstrap.yml vs application.yml …...
【数据集】 PBMC(Peripheral Blood Mononuclear Cells)数据集
🧬 一、PBMC 数据集简介 内容描述名称Peripheral Blood Mononuclear Cells(外周血单个核细胞)细胞类型包括 B 细胞、T 细胞、NK 细胞、单核细胞等技术平台通常由 10x Genomics 提供(例如 3k、4k、6k、10k 版本)数据类…...
3. go-zero中如何使用redis
问题 go-zero项目相关文档中redis是这样配置的: Name: account.rpc ListenOn: 0.0.0.0:8080 Etcd:Hosts:- 127.0.0.1:2379Key: account.rpcMysql:Host: xxxx:3306User: rootPass: xxxData: mall-userCharset: utf8mb4Cache: - Host: 192.168.145.10:6379Type: nod…...
Redis基础知识
Redis基础知识 一、Redis简介 1.1 什么是Redis? Redis是一个开源的、基于内存的数据结构存储系统,可以用作: 数据库缓存消息中间件分布式锁 1.2 Redis特点 高性能:基于内存操作支持多种数据结构支持数据持久化支持主从复制支…...