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

FFT加窗和抽取滤波

FFT加窗

在信号处理中,为了减少频谱泄漏(Spectral Leakage),在进行快速傅里叶变换(FFT)时通常会采用加窗(Windowing)技术。包括常见的窗函数及其特性对比。


MATLAB FFT 加窗流程

  1. 采样信号(时间域)。
  2. 选择窗函数(如汉宁窗、汉明窗、矩形窗等)。
  3. 对信号加窗(逐点相乘)。
  4. 执行 FFT 计算频谱。
  5. 分析频谱结果(幅度、相位等)。

常见窗函数及其 MATLAB 实现

% 参数设置
fs = 1000;         % 采样率 (Hz)
N = 1024;          % FFT 点数
t = (0:N-1)/fs;    % 时间序列
f = fs*(0:N/2)/N;  % 频率轴 (单边谱)% 生成测试信号(50Hz 正弦 + 120Hz 正弦 + 噪声)
x = 0.8*sin(2*pi*50*t) + 0.3*sin(2*pi*120*t) + 0.1*randn(1, N);% ===== 1. 不加窗(矩形窗) =====
X_rect = abs(fft(x, N));
P_rect = X_rect(1:N/2+1);  % 单边谱% ===== 2. 加汉宁窗 =====
win_hann = hann(N)';       % 生成汉宁窗
x_hann = x .* win_hann;    % 加窗
X_hann = abs(fft(x_hann, N));
P_hann = X_hann(1:N/2+1);% ===== 3. 加汉明窗 =====
win_hamm = hamming(N)';    % 生成汉明窗
x_hamm = x .* win_hamm;
X_hamm = abs(fft(x_hamm, N));
P_hamm = X_hamm(1:N/2+1);% ===== 绘制频谱对比 =====
figure('Position', [100, 100, 800, 400]);
subplot(1,2,1);
plot(f, 20*log10(P_rect/max(P_rect)), 'b', 'LineWidth', 1.5); hold on;
plot(f, 20*log10(P_hann/max(P_hann)), 'r', 'LineWidth', 1.5);
plot(f, 20*log10(P_hamm/max(P_hamm)), 'g', 'LineWidth', 1.5);
xlabel('Frequency (Hz)'); ylabel('Normalized Magnitude (dB)');
title('FFT 加窗对比(归一化对数坐标)');
legend('Rectangular', 'Hanning', 'Hamming');
grid on;subplot(1,2,2);
plot(f, P_rect/max(P_rect), 'b', 'LineWidth', 1.5); hold on;
plot(f, P_hann/max(P_hann), 'r', 'LineWidth', 1.5);
plot(f, P_hamm/max(P_hamm), 'g', 'LineWidth', 1.5);
xlabel('Frequency (Hz)'); ylabel('Normalized Magnitude (线性)');
title('FFT 加窗对比(归一化线性坐标)');
legend('Rectangular', 'Hanning', 'Hamming');
grid on;
窗函数(Window)MATLAB 命令主要应用场景
矩形窗(Rectangular)rectwin(N) 或不加窗时域截断干净,但频谱泄漏严重
汉宁窗(Hanning)hann(N)适用于一般频谱分析,抑制旁瓣较好
汉明窗(Hamming)hamming(N)适用于需要更高主瓣宽度的场景
布莱克曼窗(Blackman)blackman(N)旁瓣抑制最佳,但主瓣最宽
平顶窗(Flattop)flattopwin(N)幅值校准精度最高

关键结论

  1. 矩形窗

    • 优点:主瓣宽度最窄,适合瞬态信号分析。
    • 缺点:旁瓣泄漏严重(-13dB),导致虚假频率成分。
  2. 汉宁窗(Hanning)

    • 优点:旁瓣抑制较好(-31dB),适用于大多数频谱分析。
    • 缺点:主瓣比矩形窗宽,频率分辨率稍低。
  3. 汉明窗(Hamming)

    • 优点:主瓣宽度与汉宁窗类似,但第一旁瓣更低(-42dB)。
    • 缺点:其他旁瓣衰减较慢。
  4. 选择建议

    • 如果对幅值精度要求高 → 平顶窗(如校准应用)。
    • 如果对频率分辨率要求高 → 矩形窗(但需信号周期性完整)。
    • 通用场景 → 汉宁窗(平衡主瓣宽度和旁瓣抑制)。

抽取滤波(Decimation Filter)

抽取滤波是一种降低数字信号采样率的重要技术,在数字信号处理系统中广泛应用。抽取滤波系统主要包括两部分:抗混叠滤波降采样

基本概念

**抽取(Decimation)**是指按整数因子D降低采样率的过程,将采样率Fs降低为Fs/D。

抽取滤波的原理结构

典型的抽取滤波系统包含以下步骤:

  1. 抗混叠滤波:先对原始信号进行低通滤波,截止频率为新的Nyquist频率(Fs/(2D))
  2. 抽取(降采样):按整数D抽取,只保留每D个样本中的一个
 

<TEXT>

原始信号 → 抗混叠滤波器 → 降采样(D) → 抽取后的信号

实现方法

1. 直接实现方法

先滤波后抽取虽然直观,但计算效率低,因为计算了D-1个将被丢弃的样本。

2. 多相抽取结构

更高效的多相实现方法将抗混叠滤波器分解为D个子滤波器:

 

<TEXT>

原始信号 → 分成D路 → 每路单独滤波 → 抽取 → 合并输出

这种结构可以显著降低计算复杂度。

3. CIC滤波器

常用于高抽取率的积分梳状滤波器(CIC):

  • 无需乘法器,适合大抽取因子
  • 由积分器和梳状滤波器级联构成
  • 结构简单适合硬件实现

设计考虑因素

  1. 抽取因子D:决定采样率降低程度
  2. 滤波器设计:包括截止频率、过渡带宽、阻带衰减等
  3. 幅度补偿:某些结构如CIC滤波器需要幅度补偿
  4. 计算复杂度:实时系统需要考虑计算负荷

应用场景


二、两者的协作流程


三、应用场景对比

​场景​​滤波作用​​抽取作用​​典型技术​
Sigma-Delta ADC抑制高频量化噪声,整形频谱将1-bit码流转换为高分辨率低速数据Sinc滤波器、CIC滤波器
数字下变频(DDC)抗混叠滤波,限制中频信号带宽降低数据速率至基带处理需求FIR滤波器、多相结构
多速率通信系统分离子带信号,抑制邻频干扰按子带需求调整采样率半带滤波器(HB Filter)

四、关键差异总结


五、设计注意事项


综上,滤波和抽取是协同而非相同的步骤:​​滤波负责频域净化,抽取负责时域压缩​​,两者共同实现信号的高效降采样与噪声抑制。

  1. 软件无线电接收机
  2. 数字下变频处理
  3. 过采样ADC输出处理
  4. 音频信号处理
  5. 通信系统中的载波恢
  6. 滤波和抽取是数字信号处理中密切相关但功能不同的两个步骤,其核心区别与协作机制如下:


    一、滤波与抽取的定义与分工

  7. ​滤波(Filtering)​

    • ​功能​​:通过低通滤波器(如FIR、CIC或Sinc滤波器)滤除高频噪声和混叠成分,保留低频有效信号。
    • ​必要性​​:若不先滤波直接抽取,高频成分会因频谱混叠污染低频信号。例如,在Sigma-Delta ADC中,数字滤波器需抑制高频量化噪声,否则降采样后信号会失真。
  8. ​抽取(Decimation)​

    • ​功能​​:降低采样率,减少数据冗余。例如,将每M个输入样本保留1个输出样本。
    • ​实现方式​​:抽取因子M决定了采样率降低的倍数,如M=3时,输出数据速率降为原来的1/3。
  9. ​抗混叠滤波优先​

    • 抽取前需通过低通滤波器将信号带宽限制至新采样率的1/2(即满足Nyquist定理)。例如,原始采样率100kHz、抽取因子M=4时,滤波器的截止频率需设为12.5kHz。
    • ​典型滤波器选择​​:
      • ​CIC滤波器​​:适合高倍数抽取(如128倍),结构简单且无需乘法器。
      • ​Sinc滤波器​​:通过滑动平均实现高频抑制,常用于Sigma-Delta ADC后级处理。
  10. ​降采样操作​

    • 滤波后,按抽取因子M保留间隔样本。例如,输入序列1,2,3,4,5,6经M=2抽取后输出为1,3,5,数据速率减半。
    • ​效果​​:数据量减少,同时保留有效频段信息,适用于通信系统下变频等场景。
  11. ​目标不同​​:
    • 滤波是频域操作,旨在选择性保留或抑制特定频率成分;
    • 抽取是时域操作,旨在降低数据速率。
  12. ​顺序固定​​:
    降采样必须​​先滤波后抽取​​,否则混叠不可避免;而升采样则需​​先插值后滤波​​(抗镜像滤波)。
  13. ​资源消耗​​:
    滤波计算复杂度高(尤其是高阶FIR),而抽取仅涉及采样点选择,但两者常集成于同一模块(如CIC抽取滤波器)。
  14. ​滤波器参数匹配​​:截止频率需严格匹配目标采样率,避免过度设计导致资源浪费。
  15. ​硬件优化​​:
    • CIC滤波器利用积分-梳状结构减少乘法器,适合FPGA实现;
    • 多相滤波器通过并行化降低实时计算压力。
  16. ​噪声与失真平衡​​:
    高阶滤波器可改善阻带衰减,但可能引入通带纹波或相位非线性。

相关文章:

FFT加窗和抽取滤波

FFT加窗 在信号处理中&#xff0c;为了减少频谱泄漏&#xff08;Spectral Leakage&#xff09;&#xff0c;在进行快速傅里叶变换&#xff08;FFT&#xff09;时通常会采用加窗&#xff08;Windowing&#xff09;技术。包括常见的窗函数及其特性对比。 MATLAB FFT 加窗流程 采…...

CentOS 10:启动telnet服务

参考&#xff0c; 鳥哥私房菜 - 第七章、網路安全與主機基本防護&#xff1a;限制埠口, 網路升級與 SELinux 7.3.3 埠口与服务的启动/关闭及开机时状态设定 我们知道系统的 Telnet 服务通常是以 super daemon 来控管的&#xff0c;请您启动您系统的 telnet 试看看。 1 要启动 …...

腾讯位置服务重构出行行业的技术底层逻辑

位置智能&#xff1a;重构出行行业的技术底层逻辑 在智慧城市建设与交通出行需求爆发的双重驱动下&#xff0c;位置服务正从工具层跃升为出行行业的核心基础设施。腾讯位置服务以“连接物理世界与数字空间”为核心理念&#xff0c;通过构建高精度定位、实时数据融合、智能决策…...

webpack5所用依赖以及对应的版本

所有依赖以及版本 {"name": "market-web","version": "0.1.0","private": true,"scripts": {"dev": "cross-env NODE_ENVdevelopment webpack serve --config ./vue.config.js","buil…...

vue-cli 构建打包优化(JeecgBoot-Vue2 配置优化篇)

项目&#xff1a;jeecgboot-Vue2 在项目二次开发后&#xff0c;在本人电脑打包时间为3分35秒左右 webpack5默认优化&#xff1a; Tree Shaking&#xff08;摇树优化&#xff09;&#xff1a;删除未使用的代码base64 内联&#xff1a; 小于 8KB 的资源&#xff08;图片等&…...

Webpack 分包策略详解及实现

Webpack 的分包策略&#xff08;Code Splitting&#xff09;是优化前端应用性能的重要手段&#xff0c;它能将代码拆分成多个 bundle&#xff0c;实现按需加载或并行加载&#xff0c;从而减少初始加载时间。 分包策略的必要性 在大型项目中&#xff0c;如果将所有代码打包到一…...

大模型微调与高效训练

随着预训练大模型&#xff08;如BERT、GPT、ViT、LLaMA、CLIP等&#xff09;的崛起&#xff0c;人工智能进入了一个新的范式&#xff1a;预训练-微调&#xff08;Pre-train, Fine-tune&#xff09;。这些大模型在海量数据上学习到了通用的、强大的表示能力和世界知识。然而&…...

postgreSQL日常维护

目录 登录数据库 数据库操作列出列出库 创建库 删除库 切换库 查看库的大小 数据表操作 列出表 创建表 复制表 删除表 查看表的结构 模式操作命令 创建模式 默认模式 删除模式 查看所有模式 在指定模式中创建表 切换当前模式 查看当前所在schema 查看搜索…...

数据直观分析与可视化

数据直观分析与可视化 一、数据的直观分析核心价值 数据的直观分析旨在通过视觉化的方式&#xff0c;帮助人们更直观、更快速地理解数据的特征和模式&#xff0c;从而发现趋势、异常值、分布情况以及变量之间的关系&#xff0c;为决策提供支持。 数据可视化与信息图形、信息可…...

BeamDojo: Learning Agile Humanoid Locomotion on Sparse Footholds

BeamDojo: Learning Agile Humanoid Locomotion on Sparse Footholds 研究动机解决方案技术路线踏脚点奖励双Critic进行稀疏奖励学习两阶段学习地形感知运动马尔可夫决策空间Sim2Real 附录实验结果 BeamDojo: Learning Agile Humanoid Locomotion on Sparse Footholds 研究动机…...

Spark大数据分与实践笔记(第五章 HBase分布式数据库-02)

文章目录 每日一句正能量第五章 HBase分布式数据库章节概要5.2 HBase的集群部署 每日一句正能量 人有三样东西是无法隐瞒的&#xff0c;咳嗽&#xff0c;穷困和爱&#xff0c;你想隐瞒越欲盖弥彰。人有三样东西是不该挥霍的&#xff0c;身体&#xff0c;金钱和爱&#xff0c;你…...

【面经分享】微派网络一面

HashMap 如何解决 哈希冲突&#xff1f; HashMap 是拉链法解决。 发生哈希冲突时&#xff0c;同一个槽位上&#xff0c;会形成一个链表。 一个槽位上的节点达到树化的阈值后&#xff0c;会树化为红黑树。 拉链法&#xff1a;哈希冲突时&#xff0c;同一个哈希槽拉成一个链表…...

【寻找Linux的奥秘】第七章:虚拟地址空间

前言 本专题将基于Linux操作系统来带领大家学习操作系统方面的知识以及学习使用Linux操作系统。上一章我们简单认识了环境变量&#xff0c;本章将讲解操作系统中另一个重要的概念——程序地址空间。 1. 初步认识 之前在我们学习C语言和C时我们知道&#xff0c;在我们的程序中不…...

网络安全-等级保护(等保) 2-0 等级保护制度现行技术标准

################################################################################ 第二章&#xff1a;现行等保标准要求&#xff0c;通过表格方式详细拆分了等保的相关要求。 GB 17859-1999 计算机信息系统 安全保护等级划分准则【现行】 GB/T22240-2020 《信息安全技术…...

Linux:进程信号---信号的保存与处理

文章目录 1. 信号的保存1.1 信号的状态管理 2. 信号的处理2.1 用户态与内核态2.2 信号处理和捕捉的内核原理2.3 sigaction函数 3. 可重入函数4. Volatile5. SIGCHLD信号 序&#xff1a;在上一章中&#xff0c;我们对信号的概念及其识别的底层原理有了一定认识&#xff0c;也知道…...

【Linux】C语言模拟实现shell命令行(程序替换原理)

目录 一、自动化构建工具&#xff08;makefile&#xff09; 二、输出提示符 三、获取用户输入的数据 四、将用户输入的指令字符串进行分割&#xff1a; 五、执行用户输入的命令 六、发现cd命令用不了&#xff08;内建命令&#xff09; 原因在于&#xff1a; 七、处理内…...

WordPress Madara插件存在文件包含漏洞(CVE-2025-4524)

免责声明 本文档所述漏洞详情及复现方法仅限用于合法授权的安全研究和学术教育用途。任何个人或组织不得利用本文内容从事未经许可的渗透测试、网络攻击或其他违法行为。使用者应确保其行为符合相关法律法规,并取得目标系统的明确授权。 对于因不当使用本文信息而造成的任何直…...

【Java】泛型在 Java 中是怎样实现的?

先说结论 , Java 的泛型是伪泛型 , 在运行期间不存在泛型的概念 , 泛型在 Java 中是 编译检查 运行强转 实现的 泛型是指 允许在定义类 , 接口和方法时使用的类型参数 , 使得代码可以在不指定具体类型的情况下操作不同的数据类型 , 从而实现类型安全的代码复用 的语言机制 . …...

Lambda表达式的高级用法

今天来分享下Java的Lambda表达式&#xff0c;以及它的高级用法。 使用它可以提高代码的简洁度&#xff0c;使代码更优雅。 一、什么是lambda表达式 Lambda 表达式是 Java 8 引入的特性&#xff0c;用于简化匿名内部类的语法&#xff0c;使代码更简洁&#xff0c;尤其在处理函…...

ctfhub技能书http协议

http://challenge-ffe8afcf1a75b867.sandbox.ctfhub.com:10800/index.php curl -v -X CTFHUB http://challenge-ffe8afcf1a75b867.sandbox.ctfhub.com:10800/index.php curl&#xff1a;用于发送 HTTP 请求的命令行工具。 -v&#xff08;--verbose&#xff09;&#xff1a;开启…...

面试题 - 微服务相关的经典问题(33道)

1.什么是微服务&#xff1f; 微服务&#xff08;Microservices&#xff09;是一种软件架构风格&#xff0c;将一个大型应用程序划分为一组小型、自治且松耦合的服务。每个微服务负责执行特定的业务功能&#xff0c;并通过轻量级通信机制&#xff08;如HTTP&#xff09;相互协作…...

在C#中对List<T>实现多属性排序

本文介绍了四种实现多级排序的方法&#xff1a;1. LINQ链式调用&#xff1a;使用OrderBy和ThenBy实现多级排序&#xff0c;直观易读&#xff0c;适合动态需求&#xff0c;返回新列表。2. 自定义比较器&#xff08;IComparer&#xff09;&#xff1a;适用于复杂或高频排序&#…...

C++初阶-vector的模拟实现3

目录 1.预备知识&#xff1a;initializer_list 1.1初步了解 1.2关于initializer_list的deepseek的回答 C中的 std::initializer_list 主要特性 常见用途 1. 接受列表的构造函数和函数 2. 基于范围的 for 循环 重要注意事项 实现示例 2.vector::vector(initializer_li…...

详解鸿蒙仓颉开发语言中的日志打印问题

一门新的开发语言在诞生初期&#xff0c;由于它本身的特性和使用人数暂时较少&#xff0c;会容易出现一些大家不太容易理解的问题&#xff0c;或者说有一些坑。今天就详细分享一下仓颉开发语言中的日志打印相关内容&#xff0c;带大家踩一踩坑。 AppLog 在新创建的项目中&…...

dify基于文本模型实现微调Fine-tune语料构造工作流

主要是分为5个部分。分别是&#xff1a;开始、文档提取器、代码执行、LLM大语言模型、结束 5个部分 打开dify&#xff0c;创建一个空白页面-选择工作流&#xff0c;我们给应用起个名字。 创建完成后&#xff0c;进入工作流画布界面 开始 在开始节点中新建2个输入参数。1个是用…...

手机充电协议

1、手机快充 公有&#xff1a;PD、QC(高通骁龙芯片&#xff09; 私有&#xff1a; 华为&#xff1a;FCP&#xff08;fast charge protocol) 、SCP( super charge protocol) 、 小米&#xff1a; Mi Turbo Charge oppo&#xff1a;VOOC/SuperVOOC vivo&#xff1a;FlashCharge、…...

HarmonyOS 应用开发,如何引入 Golang 编译的第三方 SO 库

本指南基于笔者临时修复的 ohos_golang_go 项目fork&#xff0c;解决HO 应用导入 cgo编译产物时的 crash 问题。 1. 下载 ohos_golang_go git clone https://gitcode.com/deslord/ohos_golang_go.git&#x1f4cc; 该仓库为笔者临时修复版本&#xff0c;修复了 CGO 编译模式下…...

polarctf-web-[某函数的复仇]

考点&#xff1a; 匿名构造函数(create_function) 题目来源&#xff1a;polarctf-web-[某函数的复仇] 解题&#xff1a; 代码审计&#xff1a; <?phphighlight_file(__FILE__);//flag:/flagif(isset($_POST[shaw])){$shaw $_POST[shaw];$root $_GET[root];if(preg_mat…...

Node.js Express 项目现代化打包部署全指南

Node.js Express 项目现代化打包部署全指南 一、项目准备阶段 1.1 依赖管理优化 # 生产依赖安装&#xff08;示例&#xff09; npm install express mongoose dotenv compression helmet# 开发依赖安装 npm install nodemon eslint types/node --save-dev1.2 环境变量配置 /…...

华为云Flexus+DeepSeek征文|Flexus云服务器Dify-LLM资源部署极致体验Agent

前引&#xff1a;重磅来袭&#xff01;本次以DeepSeek-V3/R1商用大模型和Dify-LLM应用平台一键部署为核心&#xff0c;专为新手打造“开箱即用”的AI开发体验。无论你是想快速搭建企业级AI应用&#xff0c;还是探索大模型落地的无限可能&#xff0c;只需跟随小编实现三步走&…...

Java详解LeetCode 热题 100(18):LeetCode 73. 矩阵置零(Set Matrix Zeroes)详解

文章目录 1. 题目描述2. 理解题目3. 解法一&#xff1a;使用两个额外数组标记法3.1 思路3.2 Java代码实现3.3 代码详解3.4 复杂度分析3.5 适用场景 4. 解法二&#xff1a;使用矩阵的第一行和第一列作为标记4.1 思路4.2 Java代码实现4.3 代码详解4.4 复杂度分析4.5 适用场景 5. …...

MySQL刷题 Day08

LC 1341电影评分 本题思路简单&#xff0c;但一不注意就错了 &#xff1a; 不难想到用union&#xff0c;写出如下代码&#xff1a; (select u.name results from MovieRating mr left join Users u on mr.user_id u.user_id group by mr.user_id order by count(mr.user_id…...

linux查看本机服务器的外网IP命令

在 Linux 中查看本机服务器的外网 IP&#xff08;公网 IP&#xff09;可以通过以下几种方法&#xff1a; 1. 使用 curl 查询外部服务&#xff08;推荐&#xff09; curl ifconfig.me或&#xff1a; curl icanhazip.com或&#xff1a; curl ipinfo.io/ip这些服务会返回你的公…...

DVWA-XSS

DOM low 这是一个下拉框的形式&#xff0c;但是如果我们不让他等于English呢&#xff0c;换成js代码呢&#xff1f; <script>alert(xss);</script> Medium <script> 标签&#xff0c;但仅使用简单的字符串匹配进行替换&#xff08;比如移除 "<scr…...

第15天-NumPy科学计算实战:从基础到图像处理

一、NumPy核心优势 高效数组运算:矢量操作比纯Python快10-100倍 广播机制:不同形状数组的算术运算 内存优化:连续内存块存储,支持大数据处理 丰富API:线性代数、傅里叶变换、随机数生成等 二、环境准备 pip install numpy matplotlib 三、基础操作演示 1. 创建数组 im…...

Spring Boot + +小程序, 快速开发零工市场小程序

现在零工经济发展的越来越好&#xff0c;不止是很多人想要利用空余时间找零工赚外快&#xff0c;也有很多企业有灵活用工的需求&#xff0c;根据这样的需求&#xff0c;我们利用Spring Boot 和小程序&#xff0c;快速开发出了零工市场小程序。 利用 Spring Boot 开发零工市场小…...

Vue 3.0中核心的Composition API

在当今快速发展的前端生态系统中&#xff0c;Vue 3.0以其革命性的Composition API重新定义了组件开发的范式。作为Vue框架的一次重大进化&#xff0c;Composition API不仅解决了Options API在复杂组件中面临的逻辑复用和组织难题&#xff0c;更为开发者提供了更灵活、更强大的代…...

洛谷B3840 [GESP202306 二级] 找素数

题目描述 小明刚刚学习了素数的概念&#xff1a;如果一个大于 1 的正整数&#xff0c;除了 1 和它自身外&#xff0c;不能被其他正整数整除&#xff0c;则这个正整数是素数。现在&#xff0c;小明想找到两个正整数 A 和 B 之间&#xff08;包括 A 和 B&#xff09;有多少个素数…...

Axure设计之带分页的穿梭框原型

穿梭框&#xff08;Transfer&#xff09;是一种常见且实用的交互组件&#xff0c;广泛应用于需要批量选择或分配数据的场景。 一、应用场景 其典型应用场景包括&#xff1a; 权限管理系统&#xff1a;批量分配用户角色或系统权限数据筛选工具&#xff1a;在大数据集中选择特…...

VsCode开发环境之Node.js离线部署

1.下载node部署文件 地址为&#xff1a;CNPM Binaries Mirror 2.下载后解压 3.验证版本 4.配置环境变量 5.外网寻找一个对应项目的npm文件--node_modules 6.node_modules文件夹复制到node.js的路径下 7.接着就可以正常运行了。...

补充Depends 和 request: Request 依赖注入用法的注意事项

不要在非路由函数&#xff08;如类的 __init__ 方法或普通模块函数&#xff09;中直接使用 Depends() 或 request。 Depends 和 request: Request 是 FastAPI 提供的依赖注入机制的一部分&#xff0c;仅适用于FastAPI 路由函数或由 FastAPI 调用的依赖函数中。在类初始化、模块…...

uniapp-商城-64-后台 商品列表(商品修改---页面跳转,深浅copy应用,递归调用等)

完成了商品的添加和展示&#xff0c;下面的文字将继续进行商品页面的处理&#xff0c;主要为商品信息的修改的页面以及后天逻辑的处理。 本文主要介绍了商品信息修改页面的实现过程。首先&#xff0c;页面布局包括编辑和删除功能&#xff0c;未来还可添加上架和下架按钮。通过c…...

【MySQL】联合查询(上)

目录 一. 什么是联合查询 二. 笛卡尔积 三. 内连接查询 示例演示 四. 外连接 示例演示 五. 自连接 自连接 示例演示 一. 什么是联合查询 在之前学习的增删改查中都是对于单表进行查询&#xff0c;但是因为在数据库设计时需要遵循范式的要求&#xff0c;数据就会被拆分到多…...

Model 是 Agent 的大脑(以camel为例)

Model 是 Agent 的大脑&#xff0c;负责处理所有输入和输出数据。通过有效调用不同的模型&#xff0c;智能体可以根据任务需求执行文本分析、图像识别和复杂推理等操作。CAMEL 提供了一系列标准和可定制的接口&#xff0c;并与各种组件无缝集成&#xff0c;以赋能大语言模型&am…...

Linux条件变量

在 Linux 系统中&#xff0c;pthread_cond_init() 函数和条件变量&#xff08;Condition Variable&#xff09;是多线程编程中用于线程同步的核心机制。它们通过协调线程间的等待与通知逻辑&#xff0c;解决共享资源的竞争问题。以下从功能、工作机制、使用场景和注意事项等方面…...

k8s-NetworkPolicy

在 Kubernetes 中&#xff0c;NetworkPolicy 是一种资源对象&#xff0c;用于定义 Pod 之间的网络通信策略。它允许你控制哪些 Pod 可以相互通信&#xff0c;以及如何通信。通过使用 NetworkPolicy&#xff0c;可以实现更细粒度的网络访问控制&#xff0c;增强集群的安全性。 1…...

什么是“架构孤岛”?如何识别与整合?为什么现代企业在追求敏捷开发的同时,反而更容易陷入架构孤岛陷阱?

在现代信息技术飞速发展的时代,系统架构日益复杂,组织在构建与演进其信息系统时,面临着前所未有的挑战。然而,就在不断追求敏捷性、可扩展性与数字化创新的过程中,一个被广泛忽视却日益严峻的问题悄然浮现——“架构孤岛”。它们像岛屿一样,彼此孤立,通信不畅,数据难以…...

nfs存储IO等待,导致k8s业务系统卡慢问题处理

注:服务器配置:64C,128G,麒麟v10系统,系统磁盘使用空间(5T)均低于50%,存储磁盘iops约为800左右 发现业务系统卡慢,使用top 命令查看.系统负载较高长期保持在60以上,发现wa值的指标参数长期高于15,返现CPU用于写入磁盘IO等待的时间较高,系统的磁盘I/O压力较大. 配合开发查看日志…...

如何使用两块硬盘作为 Ubuntu24 的系统盘,实现坏掉一块不影响系统运行。

最近我想使用Ubuntu组一个NAS系统&#xff0c;想实现系统盘冗余&#xff0c;各位大佬可以给点建议吗。 Deep Seek 为了实现两块硬盘作为 Ubuntu 24 系统盘的冗余配置&#xff08;RAID 1&#xff09;&#xff0c;确保一块硬盘损坏时系统仍可运行&#xff0c;以下是详细步骤&am…...

电子电气架构 --- 细化造车阶段流程

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...