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

RevIN(Reversible Instance Normalization)及其在时间序列中的应用

详细介绍 RevIN(Reversible Instance Normalization)及其在时间序列中的应用

1. RevIN 的定义与背景

RevIN(可逆实例归一化)是一种专门为时间序列预测设计的归一化方法,旨在处理非平稳数据(non-stationary)和分布漂移(distribution shift)。其核心思想是通过可逆的归一化-反归一化步骤,在保留实例(instance)特有统计特性的同时,提升模型对分布变化的鲁棒性。RevIN 在训练时对每个时间序列实例独立归一化,并在预测后通过存储的统计量还原数据,确保输出与原始尺度一致。


2. RevIN 的步骤详解

1. 归一化阶段(Normalization)

步骤 1.1:计算均值与标准差

对输入时间序列的每个样本(或通道)独立计算均值和标准差:

  • 输入:时间序列 X ∈ R B × T × C X \in \mathbb{R}^{B \times T \times C} XRB×T×C(Batch × 时间步 × 通道)
  • 计算
    μ c = 1 T ∑ t = 1 T X t , c , σ c = 1 T ∑ t = 1 T ( X t , c − μ c ) 2 + ϵ \mu_c = \frac{1}{T} \sum_{t=1}^T X_{t,c}, \quad \sigma_c = \sqrt{\frac{1}{T} \sum_{t=1}^T (X_{t,c} - \mu_c)^2 + \epsilon} μc=T1t=1TXt,c,σc=T1t=1T(Xt,cμc)2+ϵ
    (每个通道 c c c 独立计算, ϵ \epsilon ϵ 为数值稳定项)
步骤 1.2:标准化(Standardization)

对输入数据进行标准化:
X ^ t , c = X t , c − μ c σ c \hat{X}_{t,c} = \frac{X_{t,c} - \mu_c}{\sigma_c} X^t,c=σcXt,cμc

步骤 1.3:Affine 变换(可学习缩放与平移)

引入可学习的参数 γ ∈ R C \gamma \in \mathbb{R}^C γRC β ∈ R C \beta \in \mathbb{R}^C βRC(每个通道独立),对标准化后的数据进行仿射变换:
X ~ t , c = γ c ⋅ X ^ t , c + β c \tilde{X}_{t,c} = \gamma_c \cdot \hat{X}_{t,c} + \beta_c X~t,c=γcX^t,c+βc

  • 作用:允许模型自适应调整归一化后的分布,增强对不同时间序列模式的适应性。

2. 模型处理阶段

将归一化后的数据 X ~ \tilde{X} X~ 输入模型(如 Transformer、RNN 等),模型输出预测结果 Y ~ \tilde{Y} Y~

3. 反归一化阶段(Denormalization)

步骤 3.1:逆 Affine 变换

利用学习到的 γ \gamma γ β \beta β,反向恢复标准化后的数据:
Y ^ t , c = Y ~ t , c − β c γ c \hat{Y}_{t,c} = \frac{\tilde{Y}_{t,c} - \beta_c}{\gamma_c} Y^t,c=γcY~t,cβc

步骤 3.2:恢复原始尺度

使用原始均值 μ c \mu_c μc 和标准差 σ c \sigma_c σc 恢复数据分布:
Y t , c = Y ^ t , c ⋅ σ c + μ c Y_{t,c} = \hat{Y}_{t,c} \cdot \sigma_c + \mu_c Yt,c=Y^t,cσc+μc

关键点说明

  1. Affine 变换的作用

    • 提供可学习的线性变换,使模型能动态调整归一化后的数据分布。
    • 增强对不同时间序列通道(特征)的适应性(如某些通道需要保留更大方差)。
  2. 参数共享与学习

    • γ \gamma γ β \beta β 在训练中通过梯度下降学习,初始值通常为 γ = 1 , β = 0 \gamma=1, \beta=0 γ=1,β=0
    • 参数按通道(C)维度定义,支持多变量时间序列的独立调整。
  3. 可逆性保障

    • 在反归一化时严格逆序操作(先逆 Affine,再恢复均值和标准差),确保数值稳定。

3. 时序平稳性(Stationary)与 RevIN 的作用

  • 非平稳性问题:传统时间序列模型(如 ARIMA)需通过差分或变换使数据平稳(均值、方差不随时间变化)。但深度模型直接处理非平稳数据时,可能因分布变化而性能下降。
  • RevIN 的解决方案
    • 在归一化阶段消除实例内的非平稳性(如局部趋势),使模型更容易学习残差模式。
    • 反归一化时恢复原始分布,确保预测结果与实际物理意义一致。

4. 分布漂移(Distribution Shift)的应对

分布漂移指训练集与测试集数据分布不一致的问题,常见于时间序列的跨时段预测。RevIN 通过以下机制缓解该问题:

  • 实例级归一化:每个序列独立处理,避免跨实例的分布假设,适应测试阶段的未知分布。
  • 局部统计量:仅依赖当前实例的均值和方差,而非全局统计量,减少对历史数据分布的依赖。

5. Instance Normalization vs. 其他归一化方法

方法归一化维度适用场景时间序列中的局限性
Batch Norm (BN)跨批次的样本同一特征图像、固定分布数据破坏时间依赖关系,对分布漂移敏感
Layer Norm (LN)单个样本的所有神经元NLP、RNN/Transformer忽略特征间差异,对多变量时序效果有限
Group Norm (GN)将特征分组后归一化小批量或动态网络组划分需人工设定,不灵活
Instance Norm (IN)单个样本的每个特征独立归一化风格迁移、图像生成直接用于时序会丢失全局时序模式
RevIN实例级归一化 + 可逆性非平稳时间序列预测需存储统计量,对短序列敏感

RevIN 的独特优势

  • 可逆性:唯一支持无损反归一化的方法,确保预测结果可解释。
  • 实例自适应:克服全局归一化(如 BN)对分布漂移的脆弱性。

6. 应用场景与实验结果

  • 典型任务:多变量时间序列预测(如电力需求预测、股票价格预测)。
  • 效果验证
    • 在公开数据集(如ETTh1、Traffic)上,RevIN 显著提升 Transformer、N-BEATS 等模型的预测精度。
    • 对分布漂移场景(如COVID-19期间的突变数据)鲁棒性更强。

7. 总结与局限性

  • 优势
    • 显式处理非平稳性和分布漂移。
    • 兼容任意模型结构(如 LSTM、Transformer)。
  • 局限性
    • 对极短时间序列(统计量估计不准)效果有限。
    • 假设序列内部统计量稳定,对突变或异常值敏感。

未来方向:结合自适应归一化(如动态调整统计量)或异常检测机制,进一步提升鲁棒性。

8. 代码

class RevIN(nn.Module):def __init__(self, num_features: int, eps=1e-5):"""Args:num_features (int): 时间序列的特征维度(C)。eps (float): 用于数值稳定性的小值。"""super(RevIN, self).__init__()self.num_features = num_featuresself.eps = eps# 可学习的仿射参数self.affine_weight = nn.Parameter(torch.ones(num_features))self.affine_bias = nn.Parameter(torch.zeros(num_features))def forward(self, x, mode, mask = None):"""Args:x (torch.Tensor): 输入时间序列,形状为 (B, T, C)。mode (str): 操作模式,'norm' 或 'denorm'。Returns:torch.Tensor: 归一化或反归一化的时间序列。"""if mode == 'norm':self._get_statistics(x, mask)  # 计算均值和标准差x = self._normalize(x)  # 归一化elif mode == 'denorm':x = self._denormalize(x)  # 反归一化else:raise ValueError("mode 必须是 'norm' 或 'denorm'")return xdef _get_statistics(self, x, mask):"""计算均值和标准差"""if torch.isnan(x).any():if mask is None:mask = torch.isnan(x)else:raise ValueError("mask is given but x still contains nan values.")if mask is None:self.mean = x.mean(1, keepdim=True).detach()x_enc = x - self.meanvariance = torch.var(x_enc, dim=1, keepdim=True, unbiased=False) + self.epsself.stdev = torch.sqrt(variance).detach()else:missing_sum = torch.sum(mask, dim=1, keepdim=True) + self.epsmean = torch.sum(x * mask, dim=1, keepdim=True) / missing_sumx_enc = x - meanx_enc = x_enc.masked_fill(mask == 0, 0)variance = torch.sum(x_enc * x_enc, dim=1, keepdim=True) + self.epsstdev = torch.sqrt(variance / missing_sum)self.mean = meanself.stdev = stdevdef _normalize(self, x):"""归一化"""x = x - self.meanx = x / self.stdev# 应用仿射变换x = x * self.affine_weight + self.affine_biasreturn xdef _denormalize(self, x):"""反归一化"""# 撤销仿射变换x = (x - self.affine_bias) / self.affine_weightx = x * self.stdev + self.meanreturn x

8.1 代码关键点

假设时序数据集的输入 X ∈ R B ∗ T ∗ F X\in R^{B*T*F} XRBTF B , T , F B,T,F B,T,F分别代表batch_size, time steps和每个时间步的特征数量。在销量预测场景中,由于新品的存在,可能某些商品的历史销量并不足 T T T,这时候需要padding技术。所以需要在原始RevIN的实现上增加mask的处理。

相关文章:

RevIN(Reversible Instance Normalization)及其在时间序列中的应用

详细介绍 RevIN(Reversible Instance Normalization)及其在时间序列中的应用 1. RevIN 的定义与背景 RevIN(可逆实例归一化)是一种专门为时间序列预测设计的归一化方法,旨在处理非平稳数据(non-stationar…...

JSON 和 cJSON 库入门教程

第一部分:了解 JSON (JavaScript Object Notation) 什么是 JSON? JSON 是一种轻量级的数据交换格式。它易于人阅读和编写,同时也易于机器解析和生成。 JSON 基于 JavaScript 编程语言的一个子集,但它是一种独立于语言的文本格式…...

Unity 2D 行走动画示例工程手动构建教程-AI变成配额前端UI-完美游戏开发流程

🎮 Unity 2D 行走动画示例工程手动构建教程 ✅ 1. 新建 Unity 项目 打开 Unity Hub: 创建一个新项目,模板选择:2D Core项目名:WalkAnimationDemo ✅ 2. 创建文件夹结构 在 Assets/ 目录下新建以下文件夹&#xff1a…...

[Java][Leetcode middle] 45. 跳跃游戏 II

这题没做出来,看的答案解析 可以理解为希望采用最少得跳槽次数跳到最高级别的公司。 下标i为公司本身的职级,每个公司可以提供本身等级nums[i]的职级提升。 每次从这些选择中选择自己能够达到最大职级的公司跳槽。 public int jump(int[] nums) {if(nu…...

leetcode 3335. 字符串转换后的长度 I

给你一个字符串 s 和一个整数 t,表示要执行的 转换 次数。每次 转换 需要根据以下规则替换字符串 s 中的每个字符: 如果字符是 z,则将其替换为字符串 "ab"。否则,将其替换为字母表中的下一个字符。例如,a 替…...

Leetcode 3542. Minimum Operations to Convert All Elements to Zero

Leetcode 3542. Minimum Operations to Convert All Elements to Zero 1. 解题思路2. 代码实现 题目链接:3542. Minimum Operations to Convert All Elements to Zero 1. 解题思路 这一题的处理方法其实还是挺好想明白的,其实就是从小到大依次处理各个…...

如何使用C51的Timer0实现定时功能

在C51单片机中,使用定时器0(Timer0)实现定时功能需要以下步骤: 1. 定时器基础知识 时钟源:C51的定时器时钟来源于晶振(如12MHz)。机器周期:1个机器周期 12个时钟周期(1…...

Day1 时间复杂度

一 概念 在 C 中,时间复杂度是衡量算法运行时间随输入规模增长的趋势的关键指标,用于评估算法的效率。它通过 大 O 表示法(Big O Notation) 描述,关注的是输入规模 n 趋近于无穷大时,算法时间增长的主导因…...

PostgreSQL 配置设置函数

PostgreSQL 配置设置函数 PostgreSQL 提供了一组配置设置函数(Configuration Settings Functions),用于查询和修改数据库服务器的运行时配置参数。这些函数为数据库管理员提供了动态管理数据库配置的能力,无需重启数据库服务。 …...

美学心得(第二百七十六集) 罗国正

美学心得(第二百七十六集) 罗国正 (2025年4月) 3275、人类将迎来真、善、美快速发展的时期,人‐机合一的天人合一(可简称为“天人机合一”)的境界已渐露头角,在优秀的人群中迅猛地…...

描述性统计工具 - AxureMost 落葵网

描述性统计工具是用于汇总和分析数据,以更好地了解数据特征的工具1。以下是一些常见的描述性统计工具简介: 描述性统计工具 Excel 基本统计函数:提供了丰富的函数用于计算描述性统计量。例如,AVERAGE 函数用于计算平均值&#xf…...

mybatis中${}和#{}的区别

先测试&#xff0c;再说结论 userService.selectStudentByClssIds(10000, "wzh or 11");List<StudentEntity> selectStudentByClssIds(Param("stuId") int stuId, Param("field") String field);<select id"selectStudentByClssI…...

【OpenCV】网络模型推理的简单流程分析(readNetFromONNX、setInput和forward等)

目录 1.模型读取&#xff08;readNetFromONNX()&#xff09;1.1 初始化解析函数&#xff08;parseOperatorSet()&#xff09;1.2 提取张量&#xff08;getGraphTensors()&#xff09;1.3 节点处理&#xff08;handleNode()&#xff09; 2.数据准备&#xff08;blobFromImage() …...

代码随想录算法训练营第三十九天

LeetCode题目: 115. 不同的子序列583. 两个字符串的删除操作72. 编辑距离 其他: 今日总结 往期打卡 115. 不同的子序列 跳转: 115. 不同的子序列 学习: 代码随想录公开讲解 问题: 给你两个字符串 s 和 t &#xff0c;统计并返回在 s 的 子序列 中 t 出现的个数。 测试用例保…...

InternVL3: 利用AI处理文本、图像、视频、OCR和数据分析

InternVL3推动了视觉-语言理解、推理和感知的边界。 在其前身InternVL 2.5的基础上,这个新版本引入了工具使用、GUI代理操作、3D视觉和工业图像分析方面的突破性能力。 让我们来分析一下是什么让InternVL3成为游戏规则的改变者 — 以及今天你如何开始尝试使用它。 InternVL…...

力扣刷题Day 48:盛最多水的容器(283)

1.题目描述 2.思路 学习了Krahets佬的双指针思路&#xff0c;初始化两个边界作为容器边界&#xff0c;然后逐个向数组内遍历&#xff0c;直到左右两指针相遇。 3.代码&#xff08;Python3&#xff09; class Solution:def maxArea(self, height: List[int]) -> int:left,…...

基于单应性矩阵变换的图像拼接融合

单应性矩阵变换 单应性矩阵是一个 3x3 的可逆矩阵&#xff0c;它描述了两个平面之间的投影变换关系。在图像领域&#xff0c;单应性矩阵可以将一幅图像中的点映射到另一幅图像中的对应点&#xff0c;前提是这两幅图像是从不同视角拍摄的同一平面场景。 常见的应用场景&#x…...

《驱动开发硬核特训 · 专题篇》:深入理解 I2C 子系统

关键词&#xff1a;i2c_adapter、i2c_client、i2c_driver、i2c-core、platform_driver、设备树匹配、驱动模型 本文目标&#xff1a;通过实际代码一步步讲清楚 I2C 子系统的结构与运行机制&#xff0c;让你不再混淆 platform_driver 与 i2c_driver 的职责。 &#x1f9e9; 一、…...

Spark缓存-cache

一、RDD持久化 1.什么时候该使用持久化&#xff08;缓存&#xff09; 2. RDD cache & persist 缓存 3. RDD CheckPoint 检查点 4. cache & persist & checkpoint 的特点和区别 特点 区别 二、cache & persist 的持久化级别及策略选择 Spark的几种持久化…...

tails os系统详解

一、起源与发展背景 1. 项目初衷与历史 创立时间&#xff1a;Tails 项目始于 2004 年&#xff0c;最初名为 “Anonymous Live CD”&#xff0c;2009 年正式更名为 “Tails”&#xff08;The Amnesic Incognito Live System&#xff0c;“健忘的匿名实时系统”&#xff09;。核…...

[洛谷刷题9]

P2376 [USACO09OCT] Allowance G&#xff08;贪心&#xff09; https://www.luogu.com.cn/problem/P2376 题目描述 作为创造产奶纪录的回报&#xff0c;Farmer John 决定开始每个星期给Bessie 一点零花钱。 FJ 有一些硬币&#xff0c;一共有 N ( 1 ≤ N ≤ 20 ) N (1 \le …...

数据挖掘入门-二手车交易价格预测

一、二手车交易价格预测 1-1 项目背景 随着二手车市场的快速发展&#xff0c;二手车交易价格的预测成为了一个热门研究领域。精准的价格预测不仅能帮助买卖双方做出更明智的决策&#xff0c;还能促进市场的透明度和公平性。对于买家来说&#xff0c;了解合理的市场价格可以避免…...

【PostgreSQL数据分析实战:从数据清洗到可视化全流程】金融风控分析案例-10.4 模型部署与定期评估

&#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 &#x1f449; 点击关注不迷路 文章大纲 10.4 模型部署与定期评估10.4.1 模型部署架构设计1.1 模型存储方案1.2 实时预测接口 10.4.2 定期评估体系构建2.1 评估指标体系2.2 自动化评估流程2.3 模型衰退预警 10.4.3 …...

构建可信数据空间需要突破技术、规则和生态三大关键

构建可信数据空间需要突破技术、规则和生态三大关键&#xff1a;技术上要解决"可用不可见"的隐私计算难题&#xff0c;规则上要建立动态确权和跨境流动的治理框架&#xff0c;生态上要形成多方协同的标准体系。他强调&#xff0c;只有实现技术可控、规则可信、生态协…...

阳光学院【2020下】计算机网络原理-A卷-试卷-期末考试试卷

一、单选题&#xff08;共25分&#xff0c;每空1分&#xff09; 1.ICMP协议工作在TCP/IP参考模型的 ( ) A.主机-网络 B.网络互联层 C.传输层 D.应用层 2.下列关于交换技术的说法中&#xff0c;错误的是 ( ) A.电路交换适用于突发式通信 B.报文交换不能满足实时通信 C.报文…...

python: union()函数用法

在 Python 中&#xff0c;union() 是集合&#xff08;set&#xff09;类型的内置方法&#xff0c;用于返回两个或多个集合的并集&#xff08;即所有元素的合集&#xff0c;自动去重&#xff09;。以下是它的用法详解&#xff1a; 1. 基本语法 python 复制 下载 set.union(*…...

docker部署WeDataSphere开源大数据平台

GitHub&#xff1a;https://github.com/WeBankFinTech/WeDataSphere **WDS容器化版本是由Docker构建的一个能够让用户在半小时内完成所有组件安装部署并使用的镜像包。**无需再去部署Hadoop等基础组件&#xff0c;也不需要部署WDS的各功能组件&#xff0c;即可让您快速体验 WD…...

【计算机视觉】OpenCV项目实战:基于face_recognition库的实时人脸识别系统深度解析

基于face_recognition库的实时人脸识别系统深度解析 1. 项目概述2. 技术原理与算法设计2.1 人脸检测模块2.2 特征编码2.3 相似度计算 3. 实战部署指南3.1 环境配置3.2 数据准备3.3 实时识别流程 4. 常见问题与解决方案4.1 dlib安装失败4.2 人脸检测性能差4.3 误识别率高 5. 关键…...

uni-app学习笔记五-vue3响应式基础

一.使用ref定义响应式变量 在组合式 API 中&#xff0c;推荐使用 ref() 函数来声明响应式状态&#xff0c;ref() 接收参数&#xff0c;并将其包裹在一个带有 .value 属性的 ref 对象中返回 示例代码&#xff1a; <template> <view>{{ num1 }}</view><vi…...

阿克曼-幻宇机器人系列教程2- 机器人交互实践(Topic)

在上一篇文章中&#xff0c;我们介绍了两种登录机器人的方式&#xff0c;接下来我们介绍登录机器人之后&#xff0c;我们如何通过topic操作命令实现与机器人的交互。 1. 启动 & 获取topic 在一个终端登录树莓派后&#xff0c;执行下列命令运行机器人 roslaunch huanyu_r…...

Windows系统事件查看器管理单元不可用

报错&#xff1a;Windows系统事件查看器管理单元不可用 现象原因&#xff1a;为误触关闭管理单元或者该模块卡死 解决办法&#xff1a;重启Windows server服务&#xff0c;若不行&#xff0c;则重启服务器即可...

milvus+flask山寨《从零构建向量数据库》第7章case2

继续流水账完这本书&#xff0c;这个案例是打造文字形式的个人知识库雏形。 create_context_db: # Milvus Setup Arguments COLLECTION_NAME text_content_search DIMENSION 2048 MILVUS_HOST "localhost" MILVUS_PORT "19530"# Inference Arguments…...

前端如何应对精确数字运算?用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性

目录 前端如何应对精确数字运算&#xff1f;用BigNumber.js解决JavaScript原生Number类型在处理大数或高精度计算时的局限性 一、BigNumber.js介绍 1、什么是 BigNumber.js&#xff1f; 2、作用领域 3、核心特性 二、安装配置与基础用法 1、引入 BigNumber.js 2、配置 …...

多目应用:三目相机在汽车智能驾驶领域的应用与技术创新

随着汽车智能驾驶技术不断完善&#xff0c;智能汽车也不断加速向全民普惠迈进&#xff0c;其中智驾“眼睛”三目视觉方案凭借低成本、高精度、强适配性成为众多汽车品牌关注的焦点。三目相机在汽车智能驾驶领域的创新应用&#xff0c;主要依托其多视角覆盖、高动态范围&#xf…...

webpack重构优化

好的&#xff0c;以下是一个关于如何通过重构 Webpack 构建策略来优化性能的示例。这个过程包括分析现有构建策略的问题、优化策略的制定以及具体的代码实现。 --- ### 项目背景 在参与公司的性能专项优化过程中&#xff0c;我发现现有的 Webpack 构建策略存在一些问题&#…...

MySQL 8.0 OCP(1Z0-908)英文题库(31-40)

目录 第31题题目分析正确答案 第32题题目分析正确答案 第33题题目分析正确答案&#xff1a; 第34题题目解析正确答案 第35题题目分析正确答案 第36题题目分析正确答案 第37题题目分析正确答案 第38题题目分析正确答案 第39题题目分析正确答案 第40题题目分析正确答案 第31题 Y…...

aardio - 虚表 —— vlistEx.listbar2 多层菜单演示

在 近我者赤 修改版的基础上&#xff0c;做了些许优化。 请升级到最新版本。 import win.ui; import godking.vlistEx.listbar2; import fonts.fontAwesome; /*DSG{{*/ mainForm win.form(text"多层折叠菜单";right1233;bottom713) mainForm.add({ custom{cls"…...

22.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--增加公共代码

在拆分服务之前&#xff0c;我们需要先提取一些公共代码。本篇将重点新增日志记录、异常处理以及Redis的通用代码。这些组件将被整合到一个共享类库中&#xff0c;便于在微服务架构中高效复用。 Tip&#xff1a;在后续的教程中我们会穿插多篇提取公共代码的文章&#xff0c;帮助…...

EasyOps®5月热力焕新:三大核心模块重构效能边界

在应用系统管理中&#xff0c;我们将管理对象从「服务实例」优化为「部署实例」&#xff0c;这一改变旨在提升管理效率与数据展示清晰度。 此前&#xff0c;系统以 “IP Port” 组合定义服务实例。当同一 IP 下启用多个进程或端口时&#xff0c;会产生多个服务实例。比如一台…...

基于深度学习的工业OCR数字识别系统架构解析

一、项目场景 春晖数字识别视觉检测系统专注于工业自动化生产监控、设备运行数据记录等关键领域。系统通过高精度OCR算法&#xff0c;能够实时识别设备上显示的关键数据&#xff08;如温度、压力、计数等&#xff09;&#xff0c;并定时存储至Excel文件中。这些数据对于生产过…...

R语言绘图 | 渐变火山图

客户要求绘制类似文章中的这种颜色渐变火山图&#xff0c;感觉挺好看的。网上找了一圈&#xff0c;发现有别人已经实现的类似代码&#xff0c;拿来修改后即可使用&#xff0c;这里做下记录&#xff0c;以便后期查找。 简单实现 library(tidyverse)library(ggrepel)library(ggf…...

Go语言——docker-compose部署etcd以及go使用其服务注册

一、docker-compsoe.yml文件如下 version: "3.5"services:etcd:hostname: etcdimage: bitnami/etcd:latestdeploy:replicas: 1restart_policy:condition: on-failureprivileged: truevolumes:# 持久化 etcd 数据到宿主机- "/app/apisix/etcd/data:/bitnami/etc…...

Tomcat的调优

目录 一. JVM 1.1 JVM的组成 1.2 运行时数据区域的组成 二. 垃圾回收 2.1 如何确认垃圾 1. 引用计数法 2. 根搜索算法 2.2 垃圾回收基本算法 1. 标记-清除算法&#xff08;Mark-Sweep&#xff09; 2. 标记-压缩算法&#xff08;Mark-Compact&#xff09; 3. 复制算法…...

Tomcat和Nginx的主要区别

1、功能定位 Nginx&#xff1a;核心是高并发HTTP服务器和反向代理服务器&#xff0c;擅长处理静态资源&#xff08;如HTML、图片&#xff09;和负载均衡。Tomcat&#xff1a;是Java应用服务器&#xff0c;主要用于运行动态内容&#xff08;如JSP、Servlet&#xff09;&#xf…...

Python训练营打卡——DAY24(2025.5.13)

目录 一、元组 1. 通俗解释 2. 元组的特点 3. 元组的创建 4. 元组的常见用法 二、可迭代对象 1. 定义 2. 示例 3. 通俗解释 三、OS 模块 1. 通俗解释 2. 目录树 四、作业 1. 准备工作 2. 实战代码示例​ 3. 重要概念解析 一、元组 是什么​​&#xff1a;一种…...

【TDengine源码阅读】DLL_EXPORT

2025年5月13日&#xff0c;周二清晨 #ifdef WINDOWS #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT #endif为啥Linux和MacOS平台时宏为空&#xff0c;难道Linux和mac不用定义导出函数吗&#xff1f; 这段代码是一个跨平台的宏定义&#xff0c;用于处理不…...

电子科技浪潮下的华秋电子:慕尼黑上海电子展精彩回顾

为期3天的2025慕尼黑上海电子展&#xff08;electronica China 2025&#xff09;于17日在上海新国际博览中心落下帷幕。 展会那规模&#xff0c;真不是吹的&#xff01;本届展会汇聚了1,794家国内外行业知名品牌企业的展商来 “摆摊”&#xff0c;展览面积大得像个超级大迷宫&…...

TDengine编译成功后的bin目录下的文件的作用

2025年5月13日&#xff0c;周二清晨 以下是TDengine工具集中各工具的功能说明&#xff1a; 核心工具 taosd • TDengine的核心服务进程&#xff0c;负责数据存储、查询和集群管理。 taos • 命令行客户端工具&#xff0c;用于连接TDengine服务器并执行SQL操作。 taosBenchma…...

spark sql基本操作

Spark SQL 是 Apache Spark 的一个模块&#xff0c;用于处理结构化数据。它允许用户使用标准的 SQL 语法来查询数据&#xff0c;并且可以无缝地与 Spark 的其他功能&#xff08;如 DataFrame、Dataset 和 RDD&#xff09;结合使用。以下是 Spark SQL 的基本使用方法和一些常见操…...

采购流程规范化如何实现?日事清流程自动化助力需求、采购、财务高效协作

采购审批流程全靠人推进&#xff0c;内耗严重&#xff0c;效率低下&#xff1f; 花重金上了OA&#xff0c;结果功能有局限、不灵活&#xff1f; 问题出在哪里&#xff1f;是我们的要求太多、太苛刻吗&#xff1f;NO&#xff01; 流程名称&#xff1a; 采购审批管理 流程功能…...