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

数据预处理之数据平滑处理详解

信号数据收到噪声干扰,影响检测的准确性。数据平滑处理的关键步骤,旨在降低噪声同时保留信号特征。

1.1 移动平均(Moving Average

原理:通过计算窗口内数据的平均值来平滑噪声,适用于快速去除高频噪声。

数据定义

设原始信号为 ,窗口大小为  (奇数),则第  i 个点的平滑值为:

其中 ,边缘点需特殊处理。

步骤:

(1)选择窗口大小:窗口宽度 N=2m+1 (奇数),如5点、7点等。

(2)滑动窗口:对每个数据点 xi ,取其前后各 m 个点,计算均值:

(3)边缘处理:

截断法:舍弃无法构成完整窗口的边缘点,导致输出数据变短。

填充法:用镜像、常数或延拓值填充边缘,保持数据长度。

移动平均算法计算简单,实时性强。但汉斯可能导致峰形展宽,细节丢失;窗口过大易导致信号失真。

参数选择:

噪声频率:高频噪声选择较小窗口(如5点),低频噪声需较大窗口。

信号特征:窗口应小于FBG反射谱主瓣宽度,避免过度平滑。

MATLAB编程

对每个数据点  ,取其前后各  个点,计算均值:

需处理信号边缘的填充问题。

内部函数:smoothdata(data, 'movmean', N)

1.2 Savitzky-Golay滤波(SG滤波)

原理:基于局部多项式拟合平滑算法,其数学核心为最小二乘拟合,在平滑的同时保留信号高阶特征(如峰形、宽度)。

SG滤波数学推导

(1)多项式拟合模型 

对窗口内每个点 ,假设其满足 k 阶多项式:

其中  是窗口内的局部索引(中心点  )。

(2)矩阵形式与最小二乘解 

设计矩阵:构造范德蒙矩阵  ,维度为  :

目标向量:窗口内的观测值  。

拟合系数:通过最小二乘法解得:

a=XTX-1XTy

平滑值:取中心点 j=0 的拟合值,即 yi=a0 。

(3)卷积核生成 

SG滤波可通过预计算卷积系数 \(C\) 实现快速计算:

其中 10...0 对应 j0 项的系数 a0 。

步骤:

(1)选择参数:

窗口大小  (奇数)。

多项式阶数  (通常2-4阶)。

(2)多项式拟合:对每个窗口内的数据,用最小二乘法拟合多项式:

(3)计算平滑值:取拟合多项式在窗口中心点 i=0 的值作为平滑结果。

卷积实现:通过预计算的卷积系数(如SciPy的signal.savgol_filter)快速计算。

优缺点:

优点:保留信号细节,适合处理光谱峰。

缺点:计算量略大;需等间距数据。

参数选择:

窗口大小:通常5-15点,需平衡平滑与细节。

多项式阶数:2或3阶适用于多数光谱数据,高阶易过拟合。

边缘填充

MATLAB的 padarray 函数支持多种填充模式:

'symmetric': 镜像填充(对应Python的reflect)

'replicate': 复制边缘值(对应Python的edge)

'circular': 循环填充

MATLAB编程

数学原理

对窗口内数据拟合  阶多项式:

 

通过最小二乘求解系数  并取中心点 的拟合值  作为平滑结果

MATLAB内部函数sgolayfilt函数

1.3 领域平均滤波法(Adjacent Averaging

领域平均滤波法是一种基于局部均值运算的信号平滑方法,通过计算信号中每个数据点领域窗口内数据的平均值来抑制噪声。其核心思想是用局部数据的统计特性(均值)替代原始数据点,从而消除高频噪声,同时保留信号的主要趋势。

数学推导

设原始信号为  ,滤波窗口大小为  (奇数),则第 i 个点的滤波输出 (yi 定义为:

其中:

 i ,即窗口需完全覆盖信号范围。

边缘处理:对信号起始和结束的  个点需通过填充(如镜像、常数等)扩展数据。

步骤:

(1)边缘填充策略

镜像填充('symmetric'):复制边缘数据的镜像值,减少边界突变。

复制填充('replicate'):重复边缘值,适用于平稳信号。

常数填充('constant'):以固定值(默认0)填充,需额外参数指定填充值。

(2)窗口大小选择

小窗口,如5点,保留细节大噪声抑制弱。大窗口,如15点,强噪声抑制但可能导致信号失真。

1.4 三种平滑滤波方法对比表

以下是对 移动平均(Moving Average)、Savitzky-Golay滤波(SG滤波) 和 邻域平均滤波(Adjacent Averaging 的详细对比,涵盖数学原理、参数选择、性能特点及适用场景。

对比维度

移动平均(Moving Average

Savitzky-Golay滤波(SG滤波)

邻域平均滤波(Adjacent Averaging

数学原理

窗口内数据均值

窗口内多项式拟合,取中心点拟合值

窗口内数据均值(与移动平均本质相同)

核心参数

窗口大小(奇数)

窗口大小、多项式阶数

窗口大小(奇数)

优点

- 计算简单

- 实时性强

- 适合强噪声抑制

- 保留信号细节(峰形、宽度)

- 适合复杂峰形分析

- 实现简单

- 与移动平均效果一致

缺点

- 峰形展宽

- 高频细节丢失

- 计算复杂(需多项式拟合)<br>- 参数调整敏感

- 同移动平均

适用场景

- 实时数据处理

- 高频噪声抑制

- 光谱分析(FBG中心波长检测)

- 需要保留峰形特征

- 通用信号去噪

- 与移动平均应用场景一致

计算复杂度

 ON⋅W (滑动窗口)或 ON (卷积优化)

 (ON⋅W⋅k (多项式拟合, k 为阶数)

 ON⋅W (与移动平均相同)

边缘处理策略

镜像填充、常数填充、截断

同左

同左

MATLAB内置函数

smoothdata(data, 'movmean', W)

sgolayfilt(data, k, W)

无直接内置,需自定义(等同于移动平均)

信号保真度

低(平滑后信号展宽)

高(保留高阶特征)

低(同移动平均)

噪声抑制能力

强(适合高斯噪声)

中(依赖窗口与阶数)

强(同移动平均)

数学本质差异

移动平均 vs. 邻域平均:二者数学本质相同,均为窗口内均值计算。差异仅在于实现时的命名习惯(如“邻域平均”更强调局部邻域操作)。

SG滤波:基于最小二乘多项式拟合,通过保留高阶导数信息(如峰形曲率)实现高保真平滑。

参数选择建议

参数

移动平均/邻域平均

SG滤波

窗口大小

5-25点(噪声越强,窗口越大)

5-15点(需覆盖主峰宽度)

多项式阶数

不适用

2-3阶(阶数过高易过拟合)

适用场景推荐

选择移动平均/邻域平均: 

实时性要求高(如传感器数据流处理)。 

信号特征简单,无需保留高频细节(如温度趋势分析)。 

对实时性要求高或噪声简单,可用移动平均。

选择SG滤波: 

信号峰形关键(如FBG中心波长检测),优先选SG滤波。

光谱分析、色谱峰检测等需保留峰形特征的场景。 

信号含复杂高频成分但需抑制随机噪声(如ECG信号去噪)。

边缘处理策略

镜像填充('symmetric'):减少边界突变,适合多数信号。 

常数填充('constant'):适合信号首尾平稳的场景。 

截断处理:输出数据变短,适合后续插值。

1.5自定义函数编码

MATLAB实现

主要代码

clc
close all
clear
% 生成含噪声的正弦信号
t = linspace(0, 10, 1000);
signal = sin(t) + 0.5 * randn(size(t));
% 应用邻域平均滤波
window_size = 15;  % 窗口大小(奇数)
poly_order = 2;
tic;
smoothed_MA = moving_average(signal, window_size, 'symmetric');
elapsedTime = toc;    % 结束计时并返回耗时(秒)
fprintf('moving_average算法执行时间: %.4f 秒\n', elapsedTime);
% 使用Savitzky_Golay算法
tic;
smoothed_SG = Savitzky_Golay(signal, poly_order, window_size, 'symmetric');
elapsedTime = toc;    % 结束计时并返回耗时(秒)
fprintf('Savitzky_Golay算法执行时间: %.4f 秒\n', elapsedTime);
% 使用卷积实现邻域平均算法
tic;
smoothed_AAF = adjacent_averaging_fast(signal, window_size, 'symmetric');
elapsedTime = toc;    % 结束计时并返回耗时(秒)
fprintf('卷积邻域平均算法执行时间: %.4f 秒\n', elapsedTime);
% 绘图对比
figure
hold on
plot(t, signal, 'k', 'LineWidth', 0.5);
plot(t, smoothed_MA, 'r', 'LineWidth', 3);
plot(t, smoothed_SG, 'g', 'LineWidth', 1);
plot(t, smoothed_AAF, 'b--', 'LineWidth', 2);
legend('原始信号(含噪声)', '邻域平均滤波结果','Savitzky-Golay滤波结果','卷积邻域平均滤波结果');
title('邻域平均滤波效果对比');
xlabel('时间'); ylabel('幅值');
hold off

Python实现

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter
import time# 设置中文字体
# 设置全局字体配置
plt.rcParams['font.sans-serif'] = ['SimHei']  # 使用黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题def moving_average(data, window_size, padding_mode):"""移动平均滤波参数:data: 输入信号 (1D numpy array)window_size: 窗口大小 (必须为奇数)padding_mode: 边缘填充模式 ('symmetric', 'edge', 'wrap')返回:smoothed: 平滑后的信号"""n = len(data)m = (window_size - 1) // 2# 边缘填充padded_data = np.pad(data, m, mode=padding_mode)# 初始化平滑结果smoothed = np.zeros(n)# 滑动窗口计算均值for i in range(n):window_start = iwindow_end = i + 2 * m + 1  # 注意Python切片不包含结束索引smoothed[i] = np.mean(padded_data[window_start:window_end])return smootheddef Savitzky_Golay(data, poly_order, window_size, padding_mode):"""Savitzky-Golay局部多项式拟合滤波参数:data: 输入信号 (1D numpy array)window_size: 窗口大小 (必须为奇数)poly_order: 多项式阶数padding_mode: 边缘填充模式 ('symmetric', 'edge', 'wrap')返回:smoothed: 平滑后的信号"""n = len(data)m = (window_size - 1) // 2# 生成范德蒙矩阵(设计矩阵)j = np.arange(-m, m + 1)X = np.zeros((window_size, poly_order + 1))for p in range(poly_order + 1):X[:, p] = j ** p# 计算卷积核系数(提取a0)C = np.linalg.inv(X.T @ X) @ X.TC = C[0, :]# 边缘填充padded_data = np.pad(data, m, mode=padding_mode)# 初始化平滑结果smoothed = np.zeros(n)# 对每个点应用卷积核for i in range(n):window = padded_data[i:i + window_size]smoothed[i] = np.sum(C * window)return smootheddef adjacent_averaging_fast(data, window_size, padding_mode):"""使用卷积实现邻域平均(高效版)参数:data: 输入信号 (1D numpy array)window_size: 窗口大小 (必须为奇数)padding_mode: 边缘填充模式 ('symmetric', 'edge', 'wrap')返回:smoothed: 平滑后的信号"""# 确保输入是numpy数组data = np.asarray(data)m = (window_size - 1) // 2# 创建卷积核(均匀权重)kernel = np.ones(window_size) / window_size# 边缘填充padded_data = np.pad(data, m, mode=padding_mode)# 使用卷积计算平滑结果smoothed = np.convolve(padded_data, kernel, mode='valid')return smoothed# 生成含噪声的正弦信号
t = np.linspace(0, 10, 1000)
signal = np.sin(t) + 0.5 * np.random.randn(len(t))# 应用邻域平均滤波
window_size = 15  # 窗口大小(奇数)
poly_order = 2# 移动平均滤波
start_time = time.time()
smoothed_MA = moving_average(signal, window_size, 'symmetric')
elapsedTime_MA = time.time() - start_time
print(f'moving_average算法执行时间: {elapsedTime_MA:.4f} 秒')# Savitzky-Golay滤波
start_time = time.time()
smoothed_SG = Savitzky_Golay(signal, poly_order, window_size, 'symmetric')
elapsedTime_SG = time.time() - start_time
print(f'Savitzky_Golay算法执行时间: {elapsedTime_SG:.4f} 秒')# 卷积邻域平均滤波
start_time = time.time()
smoothed_AAF = adjacent_averaging_fast(signal, window_size, 'symmetric')
elapsedTime_AAF = time.time() - start_time
print(f'卷积邻域平均算法执行时间: {elapsedTime_AAF:.4f} 秒')# 绘图对比
plt.figure(figsize=(10, 6))
plt.plot(t, signal, 'k', linewidth=0.5, label='原始信号(含噪声)')
plt.plot(t, smoothed_MA, 'r', linewidth=3, label='邻域平均滤波结果')
plt.plot(t, smoothed_SG, 'g', linewidth=1, label='Savitzky-Golay滤波结果')
plt.plot(t, smoothed_AAF, 'b--', linewidth=2, label='卷积邻域平均滤波结果')
plt.legend()
plt.title('邻域平均滤波效果对比')
plt.xlabel('时间')
plt.ylabel('幅值')
plt.grid(True, linestyle='--', alpha=0.7)
plt.tight_layout()
plt.show()

相关文章:

数据预处理之数据平滑处理详解

信号数据收到噪声干扰&#xff0c;影响检测的准确性。数据平滑处理的关键步骤&#xff0c;旨在降低噪声同时保留信号特征。 1.1 移动平均&#xff08;Moving Average&#xff09; 原理&#xff1a;通过计算窗口内数据的平均值来平滑噪声&#xff0c;适用于快速去除高频噪声。…...

deepseek梳理java高级开发工程师算法面试题

Java高级工程师算法面试题与答案 一、数据结构与算法基础 1. 红黑树与AVL树比较 题目&#xff1a;详细说明红黑树和AVL树的区别及各自的适用场景&#xff0c;并用Java实现红黑树的插入操作。 答案&#xff1a; 区别对比&#xff1a; ┌─────────────────…...

【SSL证书系列】SSL证书工作原理解读

SSL&#xff08;Secure Sockets Layer&#xff09;及其继任者TLS&#xff08;Transport Layer Security&#xff09;是用于保护网络通信安全的加密协议。SSL证书是实现HTTPS协议的核心&#xff0c;其工作原理涉及加密技术、身份验证和信任机制。以下是其工作原理的详细分步解析…...

模板源码建站、定制建站和SaaS 建站有什么区别?企业建站应该怎么选?

最近遇到不少客户问&#xff0c;为什么现在做一个网站为什么从几百到几万的都有呀&#xff1f;市面上五花八门有模板源码建站、SaaS建站和定制建站我该怎么选&#xff1f;有什么区别&#xff1f;今天小编就跟大家一起来唠一唠&#xff0c;接下来我们就一起来看看吧&#xff01;…...

OpenCV进阶操作:人脸检测、微笑检测

文章目录 前言一、OpenCV如何实现人脸检测1、haar特征2、级联分类器3、级联分类器的使用 二、人脸检测、微笑检测 案例实现1、预处理2、加载分类器3、标注人脸4、运行结果&#xff1a;4、微笑检测 总结 前言 要实现人脸识别首先要判断当前图像中是否出现了人脸&#xff0c;这就…...

论文查询的ai工具 —— SCAICH

&#xff08;1&#xff09;SCAICH的项目背景 SCAICH是由Scihub Web3 Community孵化的技术产品。SCAICH是一个非盈利性的平台&#xff0c;模式上采用免费邀请码模式&#xff0c;采用捐赠和广告维持成本。产品将会面向世界上所有国家的学者。 &#xff08;2&#xff09;SCAICH产品…...

Python+大模型 day01

Python基础 计算机系统组成 基础语法 如:student_num 4.标识符要做到见名知意,增强代码的可读性 关键字 系统或者Python定义的,有特殊功能的字符组合 在学习过程中,文件名没有遵循标识符命名规则,是为了按序号编写文件方便查找复习 但是,在开发中,所有的Python文件名称必须…...

elasticsearch硬件与资源配置优化

以下是Elasticsearch硬件与资源配置优化的综合方案,结合最新实践与核心优化逻辑: 一、硬件选型优化 ‌存储设备‌ 优先选用SSD作为存储介质,其随机读取性能比机械硬盘高5-10倍,尤其适合文档检索类高并发场景。单节点存储控制在2TB以内,避免超过5TB导致查询性能下降和系统…...

C++ 在 Windows 的开发经验与解决方案

一、开发环境搭建 在 Windows 上进行 C 开发&#xff0c;主流的集成开发环境&#xff08;IDE&#xff09;有 Visual Studio 和 CLion。Visual Studio 是微软官方推出的强大开发工具&#xff0c;对 Windows 平台有着原生的支持&#xff0c;集成了编译器、调试器、代码编辑器等一…...

1669上什么课

1.题目描述 暑假来了&#xff0c;晶晶报了四门课来充实自己的暑假生活&#xff1b;周一上游泳&#xff0c;周三上编程&#xff0c;周五上阅读&#xff0c;周六上数学&#xff1b;其余时间没课。请从键盘读入今天是星期几&#xff0c;输出晶晶今天应该上什么课。 请注意&#…...

通过MCP让LLM调用系统接口

场景 MCP的出现大大丰富了LLM的功能&#xff0c;对于存量系统&#xff0c;我们希望能让模型调用已有的接口&#xff0c;以最小的成本让AI能够获取系统内部数据。因此我们开发了一个名为http-api-call的MCP Server&#xff0c;来支持模型到内部API的调用 实现方案 使用用标准…...

Java NIO 深度解析:突破传统IO的性能瓶颈

一、Java NIO 核心价值与演进历程 1.1 传统IO的局限性 Java传统的BIO(Blocking I/O)模型在应对高并发场景时存在显著缺陷: 线程资源浪费:每个连接需要独立线程处理上下文切换开销:线程数增加导致CPU调度成本指数级增长吞吐量瓶颈:受限于线程池大小和操作系统限制响应延…...

AI-02a5a5.神经网络-与学习相关的技巧-权重初始值

权重的初始值 在神经网络的学习中&#xff0c;权重的初始值特别重要。实际上&#xff0c;设定什么样的权重初始值&#xff0c;经常关系到神经网络的学习能否成功。 不要将权重初始值设为 0 权值衰减&#xff08;weight decay&#xff09;&#xff1a;抑制过拟合、提高泛化能…...

sqlalchemy库详细使用

SQLAlchemy 是 Python 中最强大、最受欢迎的 ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它允许你使用 Python 对象来操作数据库&#xff0c;而不需要直接编写 SQL 语句。同时&#xff0c;它也提供了对底层 SQL 的完全控制能力&#xff0c;适用于从简单脚本到大型企…...

最短路和拓扑排序知识点

1、在一个有权无向图中&#xff0c;如果顶点b到顶点a的最短路径长度是10&#xff0c;顶点c与顶点b之间存在一条长度为3的边。&#xff08;c与a的最短路径长度不超过13&#xff1b;c与a的最短路径不小于7&#xff09; 2、我们用一个有向图来表示航空公司所有航班的航线。最适合…...

【Alist+RaiDrive挂载网盘到本地磁盘】

1.安装准备 安装RaiDrive RaiDrive - 像 USB 驱动器一样安装云存储 安装alist 安装方式请查看官网: AList文档 2.启动Alist(docker) docker官网 Install | Docker EngineDocker Desktop | Docker Docs 运行容器 docker run -d --restartalways -v /home/alist:/opt/alist/…...

达梦数据库 【-6111: 字符串转换出错】问题处理

达梦数据库 【-6111: 字符串转换出错】问题处理 问题背景问题分析问题总结 问题背景 今天在更新数据库某一个值属性的时候&#xff0c;执行更新语句报错提示 -6111: 字符串转换出错&#xff0c;但是自己检查了sql语句&#xff0c;只是一个简单的sql&#xff0c;并没有需要字符…...

Java的多线程笔记

创建一个线程的方法有多种&#xff0c;比如可以继承Thread类或者实现Runnable接口&#xff0c;结论是实现Runnable接口比前者更加优越。 二者代码对比 Java 不支持多继承&#xff0c;如果你继承了 Thread 类&#xff0c;就不能再继承其他类&#xff0c;实现 Runnable 接口后&am…...

学习51单片机01(安装开发环境)

新学期新相貌.......哈哈哈&#xff0c;我终于把贪吃蛇结束了&#xff0c;现在我们来学stc51单片机&#xff01; 要求&#xff1a;c语言的程度至少要到函数&#xff0c;指针尽量&#xff01;如果c语言不好的&#xff0c;可以回去看看我的c语言笔记。 1.开发环境的安装&#x…...

互联网协议的多路复用、Linux系统的I/O模式

目录 1. 互联网协议栈-多路复用 1.1. 应用层的多路复用 2.2. 传输层的多路复用 3.3. 网络层的多路复用 2. Linux系统的I/O模式 2.1. I/O 2.2. Socket 2.3. 从网卡到操作系统 2.4. Socket 编程模型 2.5. I/O多路复用 2.6. 阻塞/非阻塞、同步/异步 2.7. Question 1. …...

vue中,created和mounted两个钩子之间调用时差值受什么影响

在 Vue 中&#xff0c;created 和 mounted 是两个生命周期钩子&#xff0c;它们之间的调用时差主要受以下几个因素影响&#xff1a; &#x1f7e2; 1. 模板复杂度与渲染耗时&#xff08;最主要因素&#xff09; mounted 的触发时间是在组件的 DOM 被挂载之后&#xff08;也就是…...

软件设计师考试《综合知识》计算机编码考点分析——会更新软设所有知识点的考情分析,求个三连

2019-2023年真题深度解析与备考策略 分值占比分析 75分中编码相关分值分布与核心考点 年份编码相关题量分值占总分比例核心考点20232题2分2.67%补码表示范围、IEEE 754偏移量20223题3分4.00%原码/反码比较、浮点数规格化20211题1分1.33%补码表示-1的能力20202题2分2.67%移码…...

剖析提示词工程中的递归提示

递归提示:解码AI交互的本质,构建复杂推理链 递归提示的核心思想,正如示例所示,是将一个复杂任务分解为一系列更小、更易于管理、逻辑上前后关联的子任务。每个子任务由一个独立的提示来驱动,而前一个提示的输出(经过必要的解析和转换)则成为下一个提示的关键输入。这种…...

【SSL证书系列】https双向认证中客户端认证的原理

HTTPS双向认证&#xff08;也称为双向SSL/TLS认证&#xff09;是一种增强安全性的机制&#xff0c;其中客户端和服务器都需要验证彼此的数字证书&#xff0c;以确保双方身份的真实性。以下是其核心原理和步骤的详细解析&#xff1a; 一、双向认证的核心目标 双向身份验证&#…...

map格式可以接收返回 fastjson2格式的数据 而不需要显示的转换

Fastjson2 JSONObject 与 Map 的关系 Fastjson2 的 JSONObject 类定义如下&#xff1a; public class JSONObject extends JSON implements Map<String, Object>, Cloneable {// 实现了 Map 接口的所有方法&#xff08;put、get、keySet 等&#xff09; }解释&#xff…...

NHANES稀有指标推荐:PWI

文章题目&#xff1a;Association between plain water intake and the risk of osteoporosis among middle-aged and elderly people in the United States: a cross-sectional study DOI&#xff1a;10.3389/fnut.2025.1527771 中文标题&#xff1a;美国中老年人白开水摄入与…...

CN 第二章 应用层-单选题

非并行TCP连接 HTTP非持续连接 假定在同一Web服务器上的某HTML文件引用了3个非常小的对象&#xff08;例如图片&#xff09;。忽略传输时延&#xff0c;往返时延为RTT&#xff0c;不考虑连接释放时间&#xff0c;采用非并行TCP连接的HTTP非持续连接方式将该页面完整接收下来需…...

游戏引擎学习第279天:将实体存储移入世界区块

黑板讲解&#xff1a;为什么使用SOA&#xff08;结构体数组&#xff09;而不是AOS&#xff08;数组结构体&#xff09;来构建实体系统 我们在构建游戏实体系统时&#xff0c;探讨了使用结构体数组&#xff08;SOA, Struct of Arrays&#xff09;而不是结构体组成的数组&#x…...

zabbix7.2最新版本 nginx自定义监控(三) 设置触发器

安装zabbix-get服务 在zabbix-server端口安装zabbix-get服务 [rootlocalhost ~]# dnf install -y zabbix-get Last metadata expiration check: 1:55:49 ago on Wed 14 May 2025 09:24:49 AM CST. Dependencies resolved. Package Architectur…...

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- OpenAI AGI 五阶段

解密企业级大模型智能体Agentic AI 关键技术:MCP、A2A、Reasoning LLMs- OpenAI AGI 五阶段 然后第三个阶段就是agent,注意这里面的agent和我们说应用程序开发的这个agent是一个不同的概念。AI just can take actions autonomously自动的去执行一些动作。但大家像今天我们看到…...

Flink实时统计任务CPU异常排查与解决方案

一、核心原因分析 ‌资源配置不合理‌ ‌CPU核数与并行度不匹配‌:TaskManager的taskmanager.numberOfTaskSlots设置过高,导致单个节点负载过载(如32核节点设置2个slot被多个任务占用,总需求超过物理CPU核数)。‌内存与CPU分配不均‌:内存不足引发频繁GC,间接导致CPU利…...

Vue3指令(二)--v-text、v-html数据渲染,计算属性

目录 &#xff08;一&#xff09;数据渲染 1.插值表达式渲染数据 1.1实战案例 1.1.1代码&#xff1a; 1.1.2实现截图&#xff1a; 2.使用v-text和v-html来渲染数据 2.1实战案例&#xff1a; 2.1.1代码&#xff1a; 2.1.2实现截图&#xff1a; &#xff08;二&#xff…...

【深入Spring系列】源码级深入剖析SpringBoot如何实现自动装载

1. SpringBoot自动装载 Spring Boot 实现“自动装载”&#xff08;Auto Configuration&#xff09;是其最核心、最强大的功能之一&#xff0c;使得开发者可以快速搭建项目而无需进行复杂的 XML 配置。这一机制的底层实现主要依赖于 Spring Framework 的条件注解机制 和 Spring…...

【AI News | 20250514】每日AI进展

AI Repos 1、ocr-workbench OCR Workbench 是一款使用 AI&#xff08;Gemini 或 Tesseract&#xff09;进行文档光学字符识别&#xff08;OCR&#xff09;并生成 Markdown 或 HTML 转录的开源 Web 应用。它专为处理需要大量编辑的 OCR 文本而设计&#xff0c;特别是老旧文档。…...

嵌入式设计模式基础--C语言的继承封装与多态

继承&#xff0c;封装和多态是OOP的三大核心特性&#xff0c;它们共同构了面向对象的基础.但嵌入式开发中大量的使用到的却是C语言这种面向过程的语言&#xff0c;那么我们就需要了解如何在C中使用设计模式的思想做功能开发。要了解设计模式&#xff0c;我们就需要先搞清楚 继承…...

【python爬虫】python+selenium实现Google Play Store应用信息爬虫+apk下载

实验要求&#xff1a;利用pythonselenium实现Google Play Store应用信息爬虫apk下载。 其中&#xff1a; 1、热门应用列表包含200个app&#xff0c;需要点击右侧按钮滑动产生下一页数据&#xff0c;所以需要Selenium来控制页面操作。 2、每个应用的爬虫信息包括&#xff1a;ap…...

RPC协议及库介绍

一.RPC介绍 RPC(Remote Procedure Call)&#xff0c;远程过程调用协议&#xff0c;客户端在不知道调用细节的情况下&#xff0c;调用存在于远程计算机上的某个对象&#xff0c;就像调用本地应用程序中的对象一样&#xff0c;即允许像调用本地服务一样调用远程服务。 RPC框架的…...

【教程】Docker更换存储位置

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 背景说明 更换教程 1. 停止 Docker 服务 2. 创建新的存储目录 3. 编辑 Docker 配置文件 4. 迁移已有数据到新位置 5. 启动 Docker 服务 6…...

vue3实现JSON格式化和JSONPath提取功能

功能简介 1、JSON数据的格式化 2、通过JSONPath语法对格式化后的数据匹配提取 基础环境参考 vue3flasksqlite前后端项目实战 包安装 npm install jsonpath src/views/JsonFormat.vue <template><div class"json-formatter-container"><el-card cla…...

【springcloud学习(dalston.sr1)】服务消费者通过restTemplate来访问服务提供者(含源代码)(五)

该系列项目整体介绍及源代码请参照前面写的一篇文章​​​​​​【springcloud学习(dalston.sr1)】项目整体介绍&#xff08;含源代码&#xff09;&#xff08;一&#xff09; 一般情况下&#xff0c;我们远程调用服务&#xff0c;可以用restTemplate来进行http请求的访问。接…...

在 Angular 中, `if...else if...else`

在 Angular 中&#xff0c;模板语法本身并不直接支持 if...else if...else 这样的多条件分支结构。不过&#xff0c;你可以通过使用 *ngIf 指令结合其else模板功能来实现类似的效果。下面是如何模拟if...else if...else逻辑的方法&#xff1a; 示例&#xff1a;实现if...else …...

深入掌握 Python 切片操作:解锁数据处理的高效密码

在 Python 的编程宇宙中&#xff0c;每一个开发者都在不断探索各种强大且实用的工具&#xff0c;以提升代码的效率与灵活性。其中&#xff0c;切片操作作为 Python 数据处理领域的核心技能之一&#xff0c;就像是一把精巧的瑞士军刀&#xff0c;无论是处理文本信息、分析数据列…...

基于 Kubernetes 部署容器平台kubesphere

一 前言&#xff1a; k8s 大家都已经非常熟悉了&#xff0c;网上流传着非常多的搭建部署文档&#xff0c;有kubeadmin的有二进制的&#xff0c;还有基于第三方的部署工具的&#xff0c;反正是各种部署方法都有&#xff0c;k8s部署技术热门可见一斑。但是不管哪种部署都需要了解…...

lua 作为嵌入式设备的配置语言

从lua的脚本中获取数据 lua中栈的索引 3 | -1 2 | -2 1 | -3 可以在lua的解释器中加入自己自定的一些功能,其实没啥必要,就是为了可以练习下lua...

NVMe简介2

共分2部分&#xff0c;这里是第2部分。 NVMe数据结构 NVMe协议中规定每个提交命令的大小为64字节&#xff0c;完成命令大小为16字节&#xff0c;NVMe命令分为Admin和IO两类&#xff0c;NVMe的数据块组织方式有PRP和SGL两种。提交命令的格式如图5所示。 图5 提交命令数据格 N…...

具身智能梳理以及展望

具身智能相关技术与发展历程 具身智能概念 具身智能指具有自身体验、改变物理世界的智能。 过去 5.4 亿年&#xff0c;地球所有生物智能由身体作用于世界的行为塑造。 1950 年&#xff0c;图灵在《Computing Machinery and Intelligence》论文中首次提出具身智能&#xff0…...

【Redis实战篇】秒杀优化

1. 秒杀优化-异步秒杀思路 我们来回顾一下下单流程 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分成如下几个步骤 1、查询优惠卷 2、判断秒杀库存是否足够 3、查询订单…...

【​​HTTPS基础概念与原理​】TLS握手过程详解​​

以下是 TLS握手过程的详细拆解&#xff0c;涵盖客户端与服务器之间的关键交互步骤&#xff0c;包括ClientHello、ServerHello、证书验证、密钥交换等核心阶段&#xff0c;并对比TLS 1.2与TLS 1.3的差异&#xff1a; 一、TLS握手的核心目标 协商协议版本&#xff1a;确定双方支…...

libmemcached库api接口讲解三

前言&#xff1a;讲解一下如何删除数据 &#x1f5d1;️ libmemcached 删除键操作教程&#xff1a;memcached_delete() / memcached_delete_by_key() &#x1f4d8; 1. 函数作用 用于从 Memcached 中删除指定的 key&#xff0c;包括&#xff1a; memcached_delete()&#xff…...

注解和 XML 两种方式有什么区别?

注解和 XML 是两种常见的配置方式&#xff08;尤其在 Java 开发中&#xff0c;如 Spring 框架&#xff09;&#xff0c;它们的主要区别体现在配置方式、代码耦合性、可读性、维护性等方面。以下是两者的对比&#xff1a; 1. 配置方式 注解&#xff08;Annotation&#xff09; 在…...