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

体系结构论文(八十二):A Comprehensive Analysis of Transient Errors on Systolic Arrays

研究背景与动机

  • TPU架构(Tensor Processing Unit)广泛应用于DNN推理,其核心是脉动阵列,由大量的乘加单元(MAC)组成。

  • 由于使用了纳米级CMOS技术,TPU对辐射引发的瞬态错误(SET)高度敏感。

  • 现有研究多关注存储器中的永久性错误,对组合逻辑中的瞬态传播关注较少。

研究方法

作者提出一种两阶段评估方法

  1. 静态分析(Static Analysis)

    • 利用自研工具 SETA,分析电路拓扑结构,识别最易受SET影响的节点。

    • 模拟不同脉冲宽度,观察SET脉冲的传播与展宽特性

    • 在敏感触发器(FF)前加入延迟滤波器进行缓解。

  2. 动态分析(Dynamic Analysis)

    • 在运行时(如执行图像卷积任务中)注入SET,评估对输出结果的影响(软错误率)。

    • 分析不同数据模式(如滤波器权重)下的SET敏感性。

一、intro

近年来,深度神经网络(DNN)技术在多个领域的广泛应用推动了对新型硬件架构的需求,以支持其高计算负载。

TPU 是一种为 AI 推理设计的专用硬件,其核心是脉动阵列型矩阵乘法单元(MMU),以高并发乘加运算结构闻名,广泛应用于深度学习任务。

本研究聚焦于瞬态单粒子翻转(SET)对 TPU 中 MMU 的影响,这种错误由高能粒子辐射引起,在高性能计算芯片中尤为关键。
作者通过图像滤波任务评估 SET 对 MMU 功能正确性的干扰影响,揭示其在执行任务时可能引发的软错误(Soft Error)

研究通过实验,分别进行了静态敏感性分析动态注入评估,并发现错误影响与滤波器权重(kernel)值存在显著的数据依赖性

1. 深度学习的计算需求推动硬件演化

DNN 在图像分类、自动驾驶、医疗等领域中快速发展,为了实现并行计算与实时响应,需要高计算能力硬件平台

2. 传统架构的局限

传统 CPU/GPU 架构在 DNN 推理中效率受限,主要瓶颈在于频繁的中间结果读写,带来高延迟与能耗

3. TPU的优势

TPU 专为 DNN 推理优化,核心目标是减少内存访问次数、提高乘法密集型运算性能(如矩阵乘加)。
TPU 的计算核心是脉动阵列(systolic array),由多个乘加单元(MAC)组成,支持流水线式的矩阵计算,实现高效并行处理。

4. 研究背景:SET问题

由于采用纳米级 CMOS 工艺,TPU 极易受到辐射导致的瞬态单粒子翻转(SET)影响,这是一种非永久性硬件故障,但在关键路径上可引发严重错误。

尽管已有研究关注了 SET 导致的 bit-flip 问题,但大多集中在存储器上对组合逻辑中 SET 的传播特性和采样机制缺乏系统研究

本文贡献点:

双阶段 SET 敏感性评估方法

  • 静态评估(Static Assessment):构建电路拓扑图,识别易传播 SET 的节点。

  • 动态评估(Dynamic Assessment):在运行时注入脉冲,观察是否导致实际输出错误。

非侵入式缓解策略

  • 不改动架构,而是在敏感节点前加延迟电路实现 SET 过滤。

  • 实验验证其有效性

二、背景

DNN在推理阶段本质上是多个大矩阵的乘法(如输入 × 权重),对乘法运算的效率提出极高要求。

虽然GPU具备强大的通用并行计算能力,但其通用性也带来:

  • 多任务支持需求,导致资源共享;

  • 需要频繁地访问寄存器或共享内存,进而引起高延迟与能耗

  • 结构无法专门优化乘加运算路径

TPU 是为 DNN 推理定制的专用硬件,加速目标清晰:

  • 固定连接的脉动阵列结构避免了中间结果频繁存取;

  • 每个 Processing Element(PE) 中包含一个 MAC单元(Multiply-Accumulate)

图中模块说明
Unified Buffer存储输入特征图与输出结果的共享缓存区。
Systolic Data输入数据流横向(从左至右)传播通道。
Weight Memory储存权重,向所有列同步广播(垂直流动)。
MAC<sub>i,j</sub> 单元i 行、第 j 列的乘加器单元:执行 input × weight + previous_sum。
Activation Unit最后一层对累加结果进行激活函数处理(如ReLU)。 

 

如图所示,PE 垂直连接:每列中上一个MAC的结果,作为下一行MAC的加法输入,实现乘加累加流。

  • 横向数据流(输入):从左到右依次传入 MAC;

  • 纵向数据流(权重结果):从上到下传递累加结果;

  • 实现了流水线式矩阵乘法

每个 MAC 的权重是静态不变的(称为 weight stationary 策略),只传输输入激活值。这减少了频繁的数据调入调出,优化能效。

由于DNN层的权重矩阵巨大,无法一次性映射进固定大小的脉动阵列(如 256×256)。因此需要按块切分多轮运行(tiling),每轮的结果通过累加器(accumulator)暂存,直到全部计算完成。

三、SINGLE EVENT TRANSIENT ANALYSIS ON TPU

整体目标:

对基于 45nm 工艺实现的 TPU 脉动阵列执行 两阶段 SET 敏感性分析流程

  1. 静态分析(Static Analysis):识别哪些电路节点易受 SET 干扰;

  2. 动态分析(Dynamic Analysis):在运行时仿真中注入脉冲,评估软错误率。

图2可分为三大模块:

1. Commercial Circuit Design 流程(上方蓝色区域)

这是常规芯片设计流程:

  • 输入:HDL代码 + 时序/引脚约束

  • 工艺步骤:合成、布局布线

  • 输出:Post-layout Netlist + 时序数据 + 物理设计描述

这些信息将用于后续SET分析。

2. SET Static Analyzer(左侧橙色区域)

这是 静态SET敏感性分析 流程:

  • 使用作者开发的 SETA 工具,以“物理设计描述(PDD)”为输入。

  • SETA 将电路建模为图结构,组合逻辑节点为中间节点,触发器/端口为终端节点。

  • 工具会向每个组合逻辑节点注入SET脉冲,并模拟其传播是否可达终端节点(即是否可能采样进FF)。

  • 分析中考虑脉冲传播时的展宽效应(broadening)

  • 输出:

    • SET Pulse Database(各类SET脉冲模式)

    • Sensitive Circuit Nodes(易受影响的触发器等)

3. SET Dynamic Analyzer(下方绿色区域)

这是 动态SET注入仿真流程

  • 使用来自静态分析的脉冲位置与宽度信息;

  • 搭建运行时仿真环境,在执行实际应用(如2D卷积)过程中注入脉冲

  • 注入方式:通过强制信号为高电平一段时间来模拟SET;

  • 将输出结果与“golden model”对比,检测是否发生软错误(Soft Error)

  • 通过多轮仿真统计动态错误率

 输入:

  • 电路的后布局网表(post-layout netlist)

  • 电路的时序信息

  • 电路的物理描述文件(PDD)

分析方法:

  • 将组合逻辑抽象为图结构;

  • 向每个中间节点注入SET;

  • 模拟其传播路径,判断是否能在终端节点被采样;

  • 记录 SET 被传播的脉冲宽度变化(broadening);

  • 无需实际设备运行,完全基于仿真。

 优势:

  • 提前识别脆弱区域;

  • 为后续的硬件增强或设计优化提供依据。

 目的:

在真实应用执行中评估 SET 对系统的功能影响(是否导致输出错误)。

 方法:

  • 使用 SET Injection Manager 模块,在敏感节点注入SET;

  • 应用场景如图像卷积处理;

  • 通过 HDL 仿真器执行任务,收集输出;

  • 输出与正确结果比对,判断软错误(soft error)是否发生。

 特点:

  • 不仅关注 SET 是否被采样,还考虑:

    • 当前时钟周期是否使用该数据;

    • 错误是否传播至最终输出;

    • 电路逻辑/物理屏蔽效应对SET的过滤作用。

四、分析

设计选择:

  • 使用了基于开源 TinyTPU 的 3x3 MAC 脉动阵列(MMU) 作为实验模型;

  • 输入数据为 8-bit 整数

  • 采用 45nm FreePDK 工艺综合布局;

  • 目标是以简化模型全面评估SET传播路径与关键节点

  • 插入 SET 过滤延迟后,有效减少敏感触发器数量;

  • 但随着延迟加深,电路性能下降(频率降低)、功耗上升、逻辑门数增加

  • 600ps方案虽然代价高,但最有效缓解SET传播

  • 对 250ps 的SET注入,平均传播宽度分别为:

    • 原始电路:367ps

    • 300ps延迟电路:385ps(更宽,有副作用

    • 600ps延迟电路:276ps(展宽减少,效果理想

 结论

  • 300ps反而导致展宽更严重,可能加剧错误采样概率

  • 600ps 延迟可同时减少敏感FF数与SET展宽效应

图 4(a)(b):不同脉冲宽度下的SET敏感性分析

(a) 脉冲展宽统计:
  • 原始电路在注入不同宽度(150–450ps)SET下,展宽差异显著;

  • 特别是 250ps 和 450ps 被电路拓扑扩展得更明显,说明电路结构对某些宽度更“敏感”。

(b) 脆弱度指标 Vulnerability Factor:
  • 定义:传播成功的路径数 / 注入总数;

  • 各脉冲宽度下脆弱度大致稳定在3.8%

  • 表明 SET 传播成功概率受限于拓扑结构与脉冲宽度并不线性相关

主要目的:在 DNN 推理过程中评估 SET(瞬态单粒子翻转)在实际任务运行下对输出结果的影响。

分析策略分两步

  1. 在原始电路上注入 SET,看是否影响图像滤波任务结果(软错误);

  2. 对比插入 SET 过滤器(600ps 延迟)后系统的表现。

  • 采用了四种经典图像滤波器作为工作负载(见 Fig. 5):

    • Edge Detection(边缘检测)

    • Sharpen(锐化)

    • Emboss(浮雕)

    • Bottom Sobel(下Sobel)

  • 每种滤波器通过 3×3 kernel 执行卷积;

  • 所有 SET 注入目标为静态分析中识别出的敏感触发器

  • 每个 FF 注入 100 次 SET,注入时间为随机但固定(控制变量);

  • SET 模拟方式为“强制某一位为高电平一段时间”。

  • 大多数滤波器下,约 44–45% 的注入导致软错误,敏感节点数接近一半;

  • Sharpen 滤波器异常鲁棒,软错误率显著下降(约低 20%);

  • 表明:数据模式(权重矩阵)对 SET 传播有影响

  • 上图:正常结果;

  • 下图:SET 被采样后输出失真,明显看出图像异常;

说明SET可能影响多个像素输出,若传播至激活单元则会“放大影响”。

  • 动态仿真确认了静态分析的趋势;

  • 采用延迟缓解方法后,系统在运行时的SET敏感度和软错误率均下降。

五、通过数据模式调整来实现非侵入式SET缓解

  • 尽管脉动阵列的流水结构对 SET 有天然抑制能力,但关键的寄存器(特别是权重和输入寄存器)影响范围广、易引发连锁错误

  • 简单的脉冲注入就可能改变整个卷积核的作用,从而在输出图像中引入明显错误(如 Fig. 6)。

传统硬件缓解 vs 数据模式缓解

  • 硬件延迟过滤器(如300ps/600ps) 能减少SET敏感性,但需要额外电路和功耗;

  • 数据感知缓解(Data-aware mitigation)

    • 某些权重配置(如 Sharpen filter 的稀疏交替零值)天然“阻断”SET传播;

    • 图像卷积中有 0 的位置,即使输入被SET影响,也会被卷积乘 0 “抹掉”,从而阻止错误传播。

  • 左侧 (a)-(d):四种卷积核展开后的列向量形式;

  • 中部 (e):输入图像按滑动窗口展开为矩阵;

  • 右侧 (f):每个 w_i 映射到固定的 MAC 单元,采用 Weight Stationary 策略

  • 所有输入与内核做点积生成像素输出 pixel_i = flattened_window_i * kernel

Filter样例权重视觉效果
Edge Detection[-1 -1 -1; -1 8 -1; -1 -1 -1]轮廓锐利,敏感FF多
Sharpen[0 -1 0; -1 5 -1; 0 -1 0]比较平衡,错误传播少
Modified Edge[0 -3 0; -2 8 -2; 0 -1 0]类似视觉效果,但鲁棒性大增

  • 在自动驾驶场景中使用 Modified Edge 检测车道线(绿色) vs 原始版本(红色);

  • 两者功能相近,说明新内核在功能层面有效保持精度

  • 同时为下一步注入SET测试提供真实场景保障。

项目原始 Edge修改版 Edge改进幅度
Soft Error Rate≈45%≈25%↓约50%
Dynamic Sens. FFs≈48%≈28%↓约40%
  • 非侵入式容错设计新方向

    • 在神经网络训练前通过策略性初始化 kernel(如加入稀疏、零值交错);

    • 可借助已有深度学习框架中的 weight freezing / initialization 技术实现;

    • 兼顾性能与可靠性,在嵌入式/安全关键场景(如自动驾驶)极具实用价值。

相关文章:

体系结构论文(八十二):A Comprehensive Analysis of Transient Errors on Systolic Arrays

研究背景与动机 TPU架构&#xff08;Tensor Processing Unit&#xff09;广泛应用于DNN推理&#xff0c;其核心是脉动阵列&#xff0c;由大量的乘加单元&#xff08;MAC&#xff09;组成。 由于使用了纳米级CMOS技术&#xff0c;TPU对辐射引发的瞬态错误&#xff08;SET&#…...

综合案例:使用vuex对购物车的商品数量和价格等公共数据进行状态管理

文章目录 0.实现需求1.新建购物车模块cart2.使用json-server模拟向后端请求数据3.在vuex请求获取并存入数据,并映射到组件中,在组件中渲染【重点】3.1.安装axios3.2.准备actions和mutations,获取和存入数据到vuex中3.3.动态渲染:用mapState映射 其他1.为什么在axios在项目中要局…...

二叉搜索树的判断(双指针解决)

98. 验证二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:TreeNode*preNULL;bool isValidBST(TreeNode* root) {if(rootNULL){return true;}bool leftisValidBST(root->left);if(pre!NULL&&pre->val>root->val){return fals…...

关于CSDN创作的常用模板内容

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 好文评论新文推送 &#x1f4c3;文章前言 &…...

不小心误删了文件,找Windows数据恢复工具来帮忙

相信很多人都遇到过这样的情况&#xff1a;不小心在电脑上删除了一些重要的文件&#xff0c;等到想要找回来时&#xff0c;却感觉特别棘手。 今天我要给大家推荐一款超棒的Windows数据恢复工具&#xff0c;它能轻松帮你找回那些被误删的文件。 &#xff08;文末附下载链接&…...

[Verilog]跨时钟域数据传输解决方案

跨时钟域数据传输解决方案 摘要:跨时钟域数据传输 (Clock Domain Crossing, CDC) 是 SoC 设计中常见且关键的问题,因为现代 SoC 通常包含多个时钟域,不同模块可能运行在不同频率或相位的时钟下。跨时钟域传输数据时,如果处理不当,可能会导致亚稳态 (Metastability)…...

Linux——进程终止/等待/替换

前言 本章主要对进程终止&#xff0c;进程等待&#xff0c;进程替换的详细认识&#xff0c;根据实验去理解其中的原理&#xff0c;干货满满&#xff01; 1.进程终止 概念&#xff1a;进程终止就是释放进程申请的内核数据结构和对应的代码和数据 进程退出的三种状态 代码运行…...

数据结构与算法:图论——最短路径

最短路径 先给出一些leetcode算法题&#xff0c;以后遇见了相关题目再往上增加 最短路径的4个常用算法是Floyd、Bellman-Ford、SPFA、Dijkstra。不同应用场景下&#xff0c;应有选择地使用它们&#xff1a; 图的规模小&#xff0c;用Floyd。若边的权值有负数&#xff0c;需要…...

双指针(5)——有效三角形个数

题目&#xff1a; 这道题我们首先可能会想到暴力解法&#xff0c;三个for循环然后进行check&#xff08;&#xff09;。时间复杂度肯定是不允许的。 同时&#xff0c;验证可以组成三角形的条件是任意两边之和大于第三边&#xff0c;这就意味着我们每组要进行三次比较。但也有捷…...

Qt QGraphicsScene 的用法

背景&#xff0c;为什么要写这篇博客 今天学习 model - view 模式的时候还看到有 scene - view 模式。不知道还有这个模式&#xff0c;所以学习了下。 学习后总体的感觉是&#xff1a;其实没有也是可以的&#xff0c;但有了方便许多。 从两种画图的方法开始说 以前有个项目也…...

使用 Tesseract 实现藏文OCR

要识别藏文&#xff0c;最常用且有效的方法是使用Tesseract OCR&#xff08;谷歌开源的OCR工具&#xff09;&#xff0c;因为它拥有针对藏文的预训练模型支持。 &#x1f680; 一、安装 Tesseract OCR 软件&#xff1a; 下载链接&#xff1a;Tesseract OCR 下载页面 Windows用…...

数字智慧方案5873丨智慧交通设计方案(57页PPT)(文末有下载方式)

资料解读&#xff1a;智慧交通设计方案 详细资料请看本解读文章的最后内容。 智慧交通设计方案是一份详尽的交通规划文件&#xff0c;旨在通过科学的交通设计方法&#xff0c;优化交通系统&#xff0c;提升交通效率&#xff0c;确保交通安全&#xff0c;并促进可持续发展。该…...

【quantity】6 温度单位实现(temperature.rs)

一源码 以下代码实现了一个温度单位系统&#xff0c;支持开尔文(Kelvin)和摄氏度(Celsius)之间的转换和运算。 /// Temperature (kelvin) / 温度 (开尔文) use super::{Quantity, prefix::*}; use crate::unit::Kelvin; use derive_more::{Add, Sub, AddAssign, SubAssign};/…...

ARConv的复现流程

使用环境 Python 3.10.16 torch 2.1.1cu118 torchvision 0.16.1cu118 其它按照官方提供代码的requirements.txt安装 GitHub - WangXueyang-uestc/ARConv: Official repo for Adaptive Rectangular Convolution 数据准备 从官方主页下载pancollection数据集PanCollection…...

安卓游戏APK文件解密与编辑的完整攻略

在移动游戏开发中,保护游戏数据不被篡改是开发者的重要任务。然而,随着逆向工程技术的发展,破解游戏数据也变得可能。本文将详细介绍如何分析、解密和编辑APK安装包中的加密JSON文件,特别关注assets/task目录下的文件,并提供一种绕过checkfile.json中MD5校验的有效方法。通…...

JVM——JVM 是如何执行方法调用的?

JVM 是如何执行方法调用的&#xff1f; 在 Java 世界的底层运作中&#xff0c;方法调用机制是理解 Java 虚拟机&#xff08;JVM&#xff09;行为的关键之一。JVM 作为 Java 程序运行的核心&#xff0c;承担着执行字节码、管理内存、调度线程等多项职责。而方法调用作为程序逻辑…...

一天学完JDBC!!(万字总结)

文章目录 JDBC是什么 1、环境搭建 && 入门案例2、核心API理解①、注册驱动(Driver类)②、Connection③、statement(sql注入)④、PreparedStatement⑤、ResultSet 3、jdbc扩展(ORM、批量操作)①、实体类和ORM②、批量操作 4. 连接池①、常用连接池②、Durid连接池③、Hi…...

【愚公系列】《Manus极简入门》011-习惯养成教练:“习惯塑造师”

&#x1f31f;【技术大咖愚公搬代码&#xff1a;全栈专家的成长之路&#xff0c;你关注的宝藏博主在这里&#xff01;】&#x1f31f; &#x1f4e3;开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主&#xff01; &#x1f…...

精益数据分析(38/126):SaaS模式的流失率计算优化与定价策略案例

精益数据分析&#xff08;38/126&#xff09;&#xff1a;SaaS模式的流失率计算优化与定价策略案例 在创业和数据分析的领域中&#xff0c;我们不断探索如何更精准地把握业务发展的关键要素。今天&#xff0c;带着与大家共同进步的想法&#xff0c;深入研读《精益数据分析》&a…...

50.【必备】二分答案法与相关题目

本文的网课内容学习自B站左程云老师的算法详解课程&#xff0c;旨在对其中的知识进行整理和分享~ 网课链接&#xff1a;算法讲解051【必备】二分答案法与相关题目_哔哩哔哩_bilibili 一.爱吃香蕉的珂珂 题目&#xff1a;爱吃香蕉的珂珂 算法原理 整体思路 这是一个二分查找算法…...

C# 方法(局部变量和局部常量)

本章内容: 方法的结构 方法体内部的代码执行 局部变量 局部常量 控制流 方法调用 返回值 返回语句和void方法 局部函数 参数 值参数 引用参数 引用类型作为值参数和引用参数 输出参数 参数数组 参数类型总结 方法重载 命名参数 可选参数 栈帧 递归 局部变量 和第5章介绍的字段…...

MQTT 协议与 HTTP 协议的区别

在现代的网络通信中&#xff0c;MQTT 协议和 HTTP 协议都扮演着重要的角色&#xff0c;但它们有着不同的特点和适用场景。下面我们就从多个方面来详细探讨它们之间的区别。 一.协议设计理念 1. MQTT 协议 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;即…...

博弈论思维——AI与思维模型【90】

一、定义 博弈论思维模型是一种研究在相互影响的决策情境中&#xff0c;参与者如何通过策略选择来实现自身利益最大化的理论框架。它分析参与者之间的相互作用、策略组合以及由此产生的结果&#xff0c;帮助人们理解在竞争或合作环境下的决策逻辑和行为模式。 二、由来 博弈…...

【Bootstrap V4系列】学习入门教程之 表格(Tables)和画像(Figure)

Bootstrap V4系列 学习入门教程之 表格&#xff08;Tables&#xff09;和画像&#xff08;Figure&#xff09; 表格&#xff08;Tables&#xff09;一、Examples二、Table head options 表格头选项三、Striped rows 条纹行四、Bordered table 带边框的表格五、Borderless table…...

第 3 篇:有序的世界:有序表 (TreeMap/TreeSet) 的概念与优势

上一篇我们探讨了哈希表如何以牺牲顺序为代价换取极致的平均速度。然而&#xff0c;在现实世界的许多应用中&#xff0c;数据的有序性不仅是锦上添花&#xff0c;甚至是核心需求。想象一下&#xff1a; 你需要显示一个按价格排序的商品列表。你需要找到某个时间点之前或之后的…...

VulnHub-DC-2靶机

主机发现 sudo arp-scan -l 以sudo管理员权限扫描本地活动ip地址 Interface: eth0, type: EN10MB, MAC: 08:00:27:22:46:4f, IPv4: 192.168.252.230 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.252.6 4c:5f:70:74:3c:3b …...

论文笔记(八十三)STACKGEN: Generating Stable Structures from Silhouettes via Diffusion

STACKGEN: Generating Stable Structures from Silhouettes via Diffusion 文章概括摘要I. INTRODUCTIONII. 相关工作A. 从直觉物理学学习稳定性B. 用于姿态生成的扩散模型C. 自动化顺序装配 III. 方法A. 用于 S E ( 3 ) SE(3) SE(3)积木姿态生成的扩散模型B. 模型架构C. 数据生…...

论文阅读笔记——TesserAct: Learning 4D Embodied World Models

TesserAct 论文 采用RGB-DN&#xff08;RGB深度法线&#xff09; 作为 4D 场景中间表示&#xff0c;由此建模 4D 场景&#xff0c;比纯 2D 视频更准确地建模 3D 几何结构。相比现有的 4D 视频生成&#xff0c;优化速度快&#xff0c;收敛好&#xff0c;且首次从当前帧和文本描述…...

变转速振动信号分析处理与故障诊断算法模块

变转速振动信号分析处理与故障诊断算法模块&#xff0c;作为信号处理算法工具箱的主要功能模块&#xff0c;形成了以变转速振动信号分析处理与故障诊断算法模块的经典算法模型&#xff0c;可应用于各类关键机械部件&#xff08;轴承、齿轮、转子等&#xff09;的信号分析、故障…...

每日算法-250502

每日算法 - 2025.05.02 记录一下今天刷的几道 LeetCode 算法题。 3191. 使二进制数组全部等于 1 的最少操作次数 I 题目 思路 贪心 解题过程 遍历数组 nums。当我们遇到 nums[i] 时&#xff1a; 如果 nums[i] 是 1&#xff0c;我们不需要进行操作&#xff0c;因为目标是全 …...

如何在纯C中实现类、继承和多态(小白友好版)

基本实现原理 /* 通过结构体函数指针模拟类 */ typedef struct {// 成员变量int x; // 成员方法&#xff08;函数指针&#xff09; void (*print)(void* self); } MyClass;/* 成员函数实现 */ void my_print(void* self) {MyClass* obj (MyClass*)self;p…...

AE/PR插件 转场创建大师专业版 Transition Master Pro v2.0.2 Win+使用教程

Transition Master Pro v2.0.2是一款原生转场插件&#xff0c;专为Adobe Premiere Pro和After Effects设计。它提供了创建、导出和销售自己的转场效果&#xff0c;或从一个庞大的转场预设库中选择。使用Transition Master Pro v2.0.2&#xff0c;您可以快速轻松地创建令人惊叹的…...

[Linux]从零开始的STM32MP157 Buildroot根文件系统构建

一、前言 在前面的教程中&#xff0c;教了大家如何移植一个LInux的内核并且正确启动&#xff0c;我们发现Linux内核在启动后会出现一个错误&#xff0c;提示我们没有找到根文件系统。那么什么是根文件系统呢&#xff1f;之前我们使用Ubuntu编译了STM32MP157的TF-A,UBOOT,LINUX内…...

阿里云服务器 篇五(加更):短链服务网站:添加反垃圾邮件功能

文章目录 系列文章(可选)更新YOURLS版本安装 Compliance 插件安装 Phishtank-2.0 插件(可选)安装 httpBL 插件样例网站(不推荐)使用谷歌解决方案更多系列文章 阿里云服务器 篇一:申请和初始化 阿里云服务器 篇二:搭建静态网站 阿里云服务器 篇三:提交搜索引擎收录 阿…...

状压 DP 详解

文章目录 简介做法洛谷 P1171 简介 状压 DP 其实约等于一个 DP 的小技巧&#xff0c;一般应用在处理一个或多个集合的问题中&#xff08;因为状压 DP 的下标就是一个集合&#xff09;&#xff0c;而且在 n n n 太大的时候建议不要使用这种方法。&#xff08;如果你不懂&#…...

多模态大模型轻量化探索-视觉大模型SAM(Segment Anything Model)

往期&#xff0c;笔者基于LLava的数据对齐训练&#xff0c;搞了一个Reyes多模态大模型&#xff0c;并且看了些多模态大模型&#xff0c;相关开源的多模态大模型如&#xff1a;KimiVL、Internvl、QwenVL等&#xff0c;其视觉编码器的尺寸都比较大&#xff0c;如&#xff1a;Moon…...

数据分析_问题/优化

1 报表开发 1.1 数据问题 (1) 数据易错 问题描述 ①数据整合困难:数据来源多样、格式差异大,整合时处理不当易丢错数据. ②计算逻辑复杂:开发人员对复杂计算逻辑的理解产生偏差,会导致计算结果不准. 解决方案 ①建立数据标准,统一修正字段命名、数据类型、日期格式等 ②加强…...

我的stm32驱动电机驱动着突然就卡死程序死机了是为什么

电源不稳定或干扰 电机启动电流冲击&#xff1a;电机运行时可能导致电源电压跌落&#xff0c;影响STM32稳定性。需检查电源滤波电容、使用独立电源或增加稳压模块 地线干扰&#xff1a;电机与MCU共地时&#xff0c;高频噪声可能通过地线耦合&#xff0c;需采用隔离电路或磁耦芯…...

使用 Java 实现一个简单且高效的任务调度框架

目录 一、任务调度系统概述 &#xff08;一&#xff09;任务调度的目标 &#xff08;二&#xff09;任务调度框架的关键组成 二、任务状态设计 &#xff08;一&#xff09;任务状态流转设计 &#xff08;二&#xff09;任务表设计&#xff08;SQL&#xff09; 三、单机任…...

Git 完整教程:初学者分步指南

大家好&#xff0c;这里是架构资源栈&#xff01;点击上方关注&#xff0c;添加“星标”&#xff0c;一起学习大厂前沿架构&#xff01; Git 是一个分布式版本控制系统&#xff0c;可以帮助开发人员跟踪代码更改、与他人协作以及高效管理软件项目。无论您是初学者还是正在提升…...

数字智慧方案5856丨智慧环保综合解决方案(50页PPT)(文末有下载方式)

资料解读&#xff1a;智慧环保综合解决方案 详细资料请看本解读文章的最后内容。 随着城市化进程的加速和环境问题的日益严峻&#xff0c;智慧环保成为提升城市环境管理水平的重要手段。本文将对智慧环保综合解决方案进行详细解读&#xff0c;探讨其在实际应用中的需求、解决…...

VBA快速合并多列单元格

实例需求&#xff1a;工作表中第3行到第5行有如下图所示的数据表&#xff0c;为了方便展示&#xff0c;隐藏了部分列&#xff0c;实际数据为从C列到DO列。 现需要合并第3行和第4行相同内容的单元格&#xff0c;如第10行到第12行所示。 示例代码如下。 Sub MergeDemo()Dim dicM…...

区块链+IoT:创新场景落地背后的技术攻坚战

物联网&#xff08;IoT&#xff09;与区块链技术作为两大颠覆性技术&#xff0c;正通过深度融合推动各行各业的数字化转型。物联网通过连接海量设备实现数据互通与智能化管理&#xff0c;而区块链凭借去中心化、不可篡改和可追溯的特性&#xff0c;为物联网的安全性、隐私保护和…...

自动化测试项目2 --- 比特纵横 [软件测试实战 Java 篇]

目录 项目介绍 项目源码 库地址 项目功能测试 1. 自动化实施步骤 1.1 编写测试用例 1.2 自动化测试脚本开发 1.2.1 配置相关环境, 添加依赖 1.2.2 代码编写 2. 编写自动化脚本过程问题总结 2.1 Actons 方法的使用 2.2 等待的使用 2.3 页面操作 项目性能测试 1. 进…...

【学习笔记】深入理解Java虚拟机学习笔记——第1章 走进Java

第1章 走进Java 1.1 概述 Java成功的原因 1>一次编写到处运行 2>内存管理安全&#xff0c;自动回收 3>运行时编译 4>强大成熟的第三方库 1.2 Java技术体系 1>Java技术体系组成&#xff1a; -Java语言 -Java虚拟机实现 -class文件格式 -Java类库API -第三方J…...

JavaScript性能优化实战之运行时性能优化

在 JavaScript 开发中,运行时性能优化是确保网页响应迅速和流畅的重要环节。优化运行时性能不仅能提高用户体验,还能在高并发的情况下保证应用的稳定性。本文将细化几个常见的 JavaScript 运行时性能优化策略,帮助你提高代码执行效率。 1️⃣ 避免不必要的内存分配和释放 J…...

走进AI的奇妙世界:探索历史、革命与未来机遇

2022年11月30日&#xff0c;ChatGPT的横空出世像一枚深水炸弹&#xff0c;掀起了全球范围的AI狂潮。但这场革命并非偶然——它背后是80年AI发展史的厚积薄发。从图灵的哲学思辨到深度学习的技术突破&#xff0c;再到生成式AI的“涌现”时刻&#xff0c;AI正以惊人的速度模糊人机…...

用c 编写的笔记搜索程序

{XXX文本记录} 文本记录格式 xxx 搜索词条 #include <stdio.h> #include <string.h> #include <stdlib.h>int main(void){FILE *ffopen("help.txt","r");if(fNULL){perror("file");return -1;}char nr[2000];f…...

鼎讯信通 智能通信干扰设备:多频段多模态信号压制解决方案

在万物互联时代&#xff0c;通信安全已成为现代社会的核心基础设施防护重点。面对日益复杂的电磁环境挑战&#xff0c;新一代智能通信干扰设备通过技术创新实现了信号压制能力的革命性突破。本文将深入解析该设备的八大核心功能与技术特性&#xff0c;展现其在商业通信保障、工…...

软件测试概念

这里写目录标题 需求开发模型软件生命周期瀑布模型螺旋模型增量模型、迭代模型敏捷模型Scrum 测试模型V模型W模型&#xff08;双V模型&#xff09; 需求 用户需求&#xff1a;没有经过合理的评估&#xff0c;通常就是一句话 软件需求&#xff1a;是开发人员和测试人员执行工作…...