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

FPGA故障注入测试软件使用指南

有数字芯片之母别称的FPGA,是国内在半导体行业率先取得重大突破的细分赛道,正迎来技术和市场形成共振的黄金发展期。

国内拥有最多的应用设计工程师与新兴从业人员,但到目前为止,还没有一款位流级别的专用EDA软件,服务用户日常应用开发所需的调试验证工作。

第一大厂商赛灵思,虽然早在二十年前,为高性能的SRAM FPGA能够应用在太空环境,就联合NASA推出的大型故障注入设备(XCRT),已成为包括火星车在内的诸多重大航天工程的基石,但只为境内联盟成员提供服务;

2012年,因应先进制程工艺(28nm)器件,芯片硬件电路对单粒子效应(SEU)更为敏感,用FPGA构造的产品更为“脆弱”的需求趋势,2012年正式将SEM IP核,作为FPGA在任务关键、安全关键等行业用户的首选解决方案。

包括航空、军工、汽车电子、医疗健康、数据中心、网络通信设备等的故障注入解决方案。

宣传语是“Error injection is a VERY Powerful tool”,就像自己就可以做“辐照”实验,但是更精准、功能更强大。

用户对设计进行非破坏性的日常故障注入测试,能够为产品的最终部署使用,注入更多信心。

理想丰满,现实骨感。FPGA应用开发难度大,全球用户都感同身受,应用设计不易,调试验证难度大,能够在真实硬件环境下对整个系统进行故障注入测试,难度系数再升两个等级。

有技术研发实力的申请发明专利,如军工巨头雷神技术2020年的“Fault injection can replace the beam test or mitigate risk of a failed beam test”;国内在体系结构研究走在最前沿的、也是FPGA应用研究最深之一的国防科大,2021年发表的《利用整帧翻转的SRAM型FPGA故障注入加速算法》等。

虽然赛灵思的故障注入解决方案已推出二十余年,要么是服务的不可获得性(XCRT),能获得甚至免费的SEM IP,又实在难以使用,把用工具直接提供的数据,做成了各个行业用户的学术论文。

从早年Jbits年代院士门生的博士毕业大论文,到现在各类政府资金资助项目的结题结项“学术论文”,汗牛不充栋,数量种类也是足够丰富。

调试是自动化最后的堡垒,数据是调试的生命线,而代表FPGA最先进调试能力的硬件辅助验证两大专用设备,配置的要么是太臃肿的复杂大软件,要不就是技术曲线过于陡峭,需要额外专业培训才能使用的昂贵EDA工具。

当软件早已不再只是单纯的工具,而是成为综合性的服务,在AI时代更是以成果为交付物的现在,我们希望全自主开发的forgedaFX软件,能成为帮助用户加快产品开发、提升质量的必备生产力工具:

轻量便捷、正版且花费不多

历经近十年的迭代优化,技术水平居于行业领先水平,化繁为简,事半功倍:Dancing with More People。

FPGA本身是建立在芯片基础上的软件生意:为用户节省时间,为芯片厂商节省人力成本支出! 简单的直接用EDA工具自动完成;复杂疑难问题,用EDA工具的自动化能力,辅助工程师完成。

本使用指南完整版本等更多产品资料,可通网站gitee.com/forgeda直接获取查阅,链接地址FPGA故障注入工具

以下为正文

非破坏性故障测试的主要目的,在于获取用于计算可靠性指标的“基础数据”,用来快速验证多模冗余、配置刷新等设计加固措施有效性等。

即便在非常特殊的空间领域应用场景,也已成为进入到物理故障注入前的最后确认测试环节,所需的事前准备工作。可避免如果直接进行“行业黄金法则”的破坏性辐照试验,因一次不成功造成的巨大成本风险。

forgedaFX软件的工作主界面,包含两大核心功能:第一部分是业内独创的位流数据分析,是用户在真实硬件环境下,实现对实物系统进行故障注入操作的基础;

第二部分是通过软件提供的故障注入数据库,对任意DUT快速搭建SEU 硬件仿真环境:由用户根据自己的测试向量,通过三种方式进行故障注入,并统计关键位(Critical bits)数量,包括可在刷新后恢复正常功能的Bits,以及最重要的持续性故障点(Persistent Bits)。

Persistent Bits也被称为不可恢复异常比特位(Unrecoverable Critical Bits)——不能通过定时刷新修复,也是卫星等行业在地面故障注入试验需要重点关注、着重评估并优化改进的比特位。

只能通过系统重启方式,才能恢复正常功能。

具体地,用户可通过位流数据分析和故障注入测试,统计设计“关键位”数量,获得降级因子 ε,从而表征设计易受SEU影响的程度,即随机发生的配置编程点翻转导致系统功能错误的概率。

使用上述降级因子数据,易于对三模冗余设计等加固措施的有效性进行量化评估;计算动态翻转截面数据,用于失效率等可靠性指标的估算。

降级因子的值越小,说明SEU翻转导致系统设计故障的概率越低。相应的,可靠性就越高,系统就越健壮。

以KU040 FPGA上的复杂处理器系统加固设计为例,通过计算降级因子,如下图所示:

用户只需比较两个降级因子,便可知采用TMR加固后的设计,与之前的设计相比,系统健壮性提升14.87倍。

如果您需要任何使用帮助或问题建议,可发送电子邮件至viewall@forgeda.com,我们乐于为您详尽解答。

forgedaFX软件与FPGA芯片型号绑定使用,并以其作为软件产品具体型号的命名规则。以本指南使用的forgedaFX-325软件为例,可支持两大类别、共51款Xilinx 7K325T芯片(详见第七章的FPGA具体型号列表)。

如您使用的是forgedaFX-690软件,可支持赛灵思公司第七代的所有Virtex 690T芯片,共32款型号。其中,通用型24款,高等级芯片8款。如您使用的是forgedaFX-060软件,则支持的是赛灵思更先进工艺(UltraScale)的全部KU060芯片,包括通用性XCKU(18)、高等级XQ(4)和宇航级XQR(1),共23款具体型号。

初识forgedaFX

forgedaFX软件为您提供了一个友好、简洁的使用界面,启动后显示的全景GUI,主要功能已在主菜单栏清晰列明。

左侧是FPGA芯片基本信息以及CRAM配置存储器数据展示窗口、右边为项目配置信息,控制台消息输出窗口,共7个区域。

FPGA芯片型号、当前项目名称、工作目录等信息自动显示在主界面。

① 主菜单栏

包括【项目】、【分析】、【查看】、【测试】、【帮助】等功能,您可通过选择相应的菜单,完成所需的操作:

【项目】

用于故障注入测试项目的创建、导入、关闭以及软件退出操作

【分析】

对FPGA位流数据进行自动分析,智能过滤与设计无关的冗余编程点,快速创建故障注入测试数据库文件(Fault Injection DB File)。

【查看】

提供“风险地图”、“编程点记录”、以及“概要信息”三种方式,便于用户查看位流数据分析结果。

【测试】

用于对DUT应用设计有关的编程点进行SEU故障注入操作。

【帮助】

可用于打开forgedaFX软件用户使用指南(本文档)、显示软件版本信息等。

除了选择以上菜单项来执行操作,您也可通过“Alt+快捷键”方式,直接运行要使用的功能,如直接用“Alt+P”快捷键,选择【项目】菜单。

② 工具栏

显示快捷工具图标,执行以下常用操作:

③ 当前项目信息显示区域

位于界面右上方,显示当前测试项目名称、工作目录,目标FPGA型号,以及FPGA应用设计对应的.dcp文件。

④ DUT信息显示区域

显示目标FPGA芯片基本信息,以及在分析后得到的“配置存储器数据规模”、“故障注入数据库中的编程点总数”。

⑤ 控制台消息输出窗口

在数据分析启动后,实时显示当前进程和状态消息

⑥ 进度条窗口

用于表示“程序正处于运行状态”

⑦状态栏

显示当前项目的状态描述信息

技术虽不能直接解决问题,但肯定可以提升效率。

forgedaFX软件的核心能力, 是提供智能化的二进制数据分类标记、过滤等功能,对用户设计有关的测试点集合进行归集,进而在海量配置存储器中,快速过滤大量与用户原生设计无关的冗余测试点,并且这个工作阶段是完全自动化,零门槛。

经过数据分析获得的故障注入数据库文件,是后续故障注入操作的基础。可避免大量无效的冗余点注入,做到有的放矢。与采用无差别的全芯片随机或遍历方式,就直接进行故障注入的常规测试方式相比,可将验证效率至少提升300%以上。

本章将以时钟计数器为样例(详见附录1),介绍如何创建您的第一个故障注入测试项目。

该样例以1/4秒为周期,由时钟计数器驱动LED显示,所有设计文件位于forgedaFX软件的demo/Vivado_counter_demo子目录。

3.1 新建项目

在正式启用软件前,首先创建一个专用空白目录,用于保存和记录在软件工作过程中,新生成的项目文件和测试数据等。

请注意命名规范,不含中文字符、空格符等,以免影响顺畅的使用体验或软件任务报错。

然后启动软件,在主界面工具栏选择“创建新项目”。

在“项目参数设置”对话框中,分别输入以下信息:

(1) 选择事先已准备好的专用工作目录(即此时无任何内容的空白目录);

(2) 直接在软件界面上命名“项目名称”;

(3) 选择目标FPGA芯片的详细信息(型号、速度等级、管脚封装等);

(4) 选择设计文件.dcp(即设计在布局布线后最终产生的_routed命名文件)。

在本演示样例中,输入的.dcp文件,位于demo/Vivado_counter_demo/

counter-base.runs/impl_1/led_test_routed

Step1

创建专用文件夹(例如,本演示样例名为counter_demo),作为当前项目专用工作目录,用于保存和记录测试文件和结果数据;

在正式启用forgedaFX软件后,数据分析日志、起止时间、故障注入测试结果等项目文件,会自动放置在该“空白”文件夹内,以便于随时查阅或回溯分析。

Step2

在forgedaFX软件主界面工具栏选择“创建新项目”,通过项目参数对话框,对该新项目进行命名(例如,本演示样例将counter_inject作为项目名称)。

项目参数设置完成,点击“确定”,完成项目创建。

右下角状态栏显示“new project created successfully”提示,表明项目已成功创建。软件界面右上侧将显示您所创建的项目信息,包括:项目名称、项目工作目录、设计文件、FPGA芯片型号,便于您核对检查,确认是否已正确无误。

该步骤完成后,在项目工作目录下,自动产生后缀名为.ipr的项目描述文件(counter_inject.ipr)。该文件作为forgedaFX软件专用的项目描述信息,便于您在后续用于快速导入该测试项目。

3.2 数据分析

项目创建成功之后,启动软件“数据分析”功能。

在运行过程中,界面右侧的控制台消息窗口实时显示当前工作进度,并在右下角状态栏显示“data analysis started”。

进入数据解析阶段,对 FPGA位流数据的处理过程全自动化,无需任何人工干预。

分析所用时间与FPGA芯片规模、应用设计复杂度密切相关,请耐心等待。比如在本样例中,数据分析耗时2分钟,工作速度为每秒钟超过600,000 bits以上。

一旦结束,消息窗口提示“data analysis completed”,在控制台消息窗口显示运行时间以及分析结果。

与此同时,软件界面左侧显示目标FPGA 配置存储器(CRAM)规模,以及用户设计相关位总数(Essential bits),即故障注入数据库(Fault Injection DB)规模

如上图示,在该样例中,forgedaFX软件从目标器件(7K325T芯片)共计91530240 bits位流规模中,首先识别用于配置硬件电路的CRAM数据(72868672 bits),再过滤筛选与counter硬件电路结构、功能无关的冗余测试编程点,最后精准标记出只与该设计相关的Essential Bits(15114 bits),即FPGA故障注入所用数据。

该数据同时记录在故障注入测试数据库文件中(即图中的result_record.txt)。

分析过程结束,在当前项目工作目录下的report文件夹,产生日志文件biti.log,结果概要文件bits_summary.txt,以及完整的故障注入测试数据库文件result_record.txt,便于查阅。

故障注入测试数据库文件,提供了FPGA芯片内部,与DUT有关的完整配置编程点地址,是后续实现故障注入的基础。

3.3 查看分析结果

在数据分析过程结束之后,forgedaFX软件提供三种方式显示分析结果,可直接在软件工具栏点击对应图标按钮,直接“查看”相关的数据结果。

对数据分析结果的含义,具体解释如下:

3.3.1 编程点记录

选择“查看数据分析结果文件 ”后,软件分页加载并显示配置硬件电路的编程点信息,以列表方式展示各编程点的详细地址,即故障注入测试数据库文件。

也可在创建的工作目录下,点击/report/result_record.txt,查看完整的编程点地址数据。

forgedaFX软件在位流数据分析工作完成后,自动提供与硬件电路设计相关的所有编程点信息,100%全覆盖:具体列明每个编程点的详细物理帧地址、线性逻辑地址、以及详细的位置坐标,数据加载所需时间在10秒左右,如下图示:

各数据栏的详细释义如下:

① 物理帧地址(Physical Frame Address)

FPGA芯片位流数据按帧进行编址,物理帧地址是最直接的编程点寻址方式,也是故障注入操作所需的关键参数之一。在对实物进行故障注入操作时,按照提供的物理帧地址,实现对编程点所在配置帧的读写访问。

例如,上图中序号为1的编程点,物理帧地址为0x00000002,后续可在forgedaFX软件故障注入测试界面,直接作为指定的故障注入地址。

② 逻辑地址(Logic Address)

forgedaFX软件提供的逻辑地址,与芯片原厂商所使用的FPGA芯片编程点专用线性地址格式保持一致,数值是一个长度为9的16进制数。其中,前6位为逻辑帧地址(L),后3位为编程点所在的配置字(W)和配置位序号(B)。

③ 编程点位置

表示编程点在芯片内部的坐标,是物理帧地址、编程点序号的具体化。

④ 逻辑区域序号

forgedaFX软件提供编程点的逻辑区域SLR序号,当SLR序号为0,表示DUT芯片为非堆叠、平面架构的芯片。例如,本使用指南中的具体样例使用的FPGA 为7K-325T,就是非堆叠、只有一个维度的平面架构芯片。

当使用forgedaFX对多维堆叠架构的先进大容量FPGA进行自动解析时,例如目标型号为Kintex UltraScale KU115,当SLR序号值为1时,则表明该编程点位于第二个SLR,以此类推。

3.3.2 风险地图

forgedaFX软件为用户提供应用设计在FPGA芯片内部对应的配置视图,用于展现ε1(配置资源利用率) ”的物理意义。以数据图谱方式,使得原本处于不可见“黑盒”状态的配置编程点,进行全景展示。

选择“查看编程点风险地图 ”后直接显示如下:

FPGA

相关文章:

FPGA故障注入测试软件使用指南

有数字芯片之母别称的FPGA,是国内在半导体行业率先取得重大突破的细分赛道,正迎来技术和市场形成共振的黄金发展期。 国内拥有最多的应用设计工程师与新兴从业人员,但到目前为止,还没有一款位流级别的专用EDA软件,服务用户日常应用开发所需的调试验证工作。 第一大厂商赛…...

Oracle 数据库查询:单表查询

作者:IvanCodes 日期:2025年6月22日 专栏:Oracle教程 在 Oracle 数据库操作中,查询数据是最频繁、最核心的操作之一。单表查询,即仅从一个表中检索信息,是所有复杂查询的基础。本笔记将系统梳理单表查询的关…...

【DDD】——带你领略领域驱动设计的独特魅力

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大三学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…...

阿里云CentOS系统搭建全攻略:开启云端技术之旅

前期准备:开启云端征程前的必备事项 在当今数字化时代,云计算已成为企业和开发者构建应用和服务的重要基础设施。阿里云作为全球领先的云计算服务提供商,提供了丰富的云计算产品和服务,其中 CentOS 系统在阿里云上的应用非常广泛…...

Flink图之间流转解析:从逻辑构建到物理执行的深度剖析

在Flink强大的数据处理体系中,Table Connectors实现了与外部结构化数据的高效交互,而Flink作业从代码到实际执行的背后,是各类图结构之间的流转与转换。这些图结构承载着作业的逻辑定义、任务划分与资源调度等关键信息,其流转过程…...

详解Redis数据库和缓存不一致的情况及解决方案

数据库与缓存不一致是分布式系统中常见问题,本质是数据在缓存层和存储层出现版本差异。 一、并发写操作导致不一致(最常见) 场景描述 线程A更新数据库 → 线程B更新数据库 → 线程B更新缓存 → 线程A更新缓存 结果:缓存中存储的…...

【CSS】CSS3媒体查询全攻略

媒体查询教程 媒体查询(Media Queries)是CSS3中引入的强大功能,允许内容根据设备特性(如屏幕尺寸、分辨率、方向等)进行自适应调整。以下是媒体查询的详细教程: 基本语法 media mediatype and (media feature) {/* CSS规则 */ }常用媒体类型 all - 所…...

深入理解Spring的ResponseBodyAdvice接口

什么是ResponseBodyAdvice? ResponseBodyAdvice是Spring框架4.2版本引入的一个非常有用的接口,它允许我们在控制器方法执行后、响应体写入前对响应进行统一处理。这个接口为开发者提供了对返回数据进行统一拦截和修改的能力,是Spring MVC响应处理流程中…...

C++法则5: 在函数调用过程中,具有非引用类型的参数要进行拷贝初始化。

C法则5: 在函数调用过程中,具有非引用类型的参数要进行拷贝初始化。 在 C 中,法则5指的是:当函数参数是非引用类型(即按值传递)时,传递给函数的实参会进行拷贝初始化(copy initializ…...

Python 使用 Requests 模块进行爬虫

目录 一、请求数据二、获取并解析数据四、保存数据1. 保存为 CSV 文件2. 保存为 Excel 文件打开网页图片并将其插入到 Excel 文件中 五、加密参数逆向分析1. 定位加密位置2. 断点调试分析3. 复制相关 js 加密代码,在本地进行调试(难)4. 获取 …...

day039-nginx配置补充

文章目录 0. 老男孩思想-如何提升能力?1. nginx登录认证功能1.1 创建密码文件1.2 修改子配置文件1.3 重启服务 2. nginx处理请求流程3. 配置默认站点4. location 命令5. 案例1-搭建大型直播购物网站5.1 配置本地hosts解析5.2 编写子配置文件5.3 创建相关目录/文件并…...

K8s入门指南:架构解析浓缩版与服务间调用实战演示

目录 前言一、k8s概念理解1、k8s整体架构(1) Master 主节点(2) Node 工作节点(3) Etcd 键值存储数据库 2、Pod被视为最小的部署单元3、k8s的五种控制器类型(1&#xff09…...

如何用AI开发完整的小程序<10>—总结

通过之前9节的学习。 如何用Ai制作一款简单小程序的内容就已经都介绍完了。 总结起来就以下几点: 1、搭建开发制作环境 2、创建页面(需要手动) 3、在页面上制作UI效果(让Ai搞,自己懂了后可以自己调) 4…...

Javaweb - 3 CSS

CSS 层叠样式表(Cascading Style Sheets),能够对网页中元素位置的排版进行像素级精确控制,支持几乎所有的字体字号样式,拥有对网页对象和模型样式编辑的能力。 简单来说,HTML 搭建一个毛坯房,C…...

【算法】【优选算法】优先级队列

目录 一、1046.最后一块石头的重量二、703. 数据流中的第 K 大元素三、692. 前 K 个⾼频单词四、295. 数据流的中位数 一、1046.最后一块石头的重量 题目链接:1046.最后一块石头的重量 题目描述: 题目解析: 题意就是让我们拿出提供的数组…...

PaddleOCR + Flask 构建 Web OCR 服务实战

1、前言 随着图像识别技术的发展,OCR(光学字符识别)已经成为很多应用场景中的基础能力。PaddleOCR 是百度开源的一个高性能 OCR 工具库,支持中英文、多语言、轻量级部署等特性。 而 Flask 是一个轻量级的 Python Web 框架,非常适合快速构建 RESTful API 或小型 Web 应用…...

openapi-generator-maven-plugin自动生成HTTP远程调用客户端

Java开发中调用http接口的时候,有很多可选的技术方案,比如:HttpURLConnection、RestTemplate、WebClient、Feign、Retrofit、Okhttp等,今天我们来看一个更优的技术方案OpenAPI Generator(http://openapi-generator.tech/) OpenAP…...

ms-swift 部分命令行参数说明

参考链接 命令行参数 — swift 3.6.0.dev0 文档 Qwen Chat num_train_epochs 训练的epoch数,默认为3 假设你有 1000 条训练样本,并且设置了: num_train_epochs 3 这意味着: 模型会完整地遍历这 1000 条数据 3 次。每一次…...

【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化

第10章 前端编译与优化 10.1 概述 1>前端编译器:Javac命令。 【.java文件->.class文件】 2>即时编译器:Hotspot.C1.C2 【.class文件->机器码】 3>提前编译器:JDK的Jaotc等【.java->机器码】 10.2 Javac 编译器 10.2.1 …...

删除node并且重装然后重装vue

参考第一篇文章 node.js卸载与安装超详细教程_node卸载重装-CSDN博客 第二篇文章安装vue Vue安装与配置教程(非常详细)_安装vue-CSDN博客...

Flink源码阅读环境准备全攻略:搭建高效探索的基石

想要深入探索Flink的底层原理,搭建一套完整且适配的源码阅读环境是必经之路。这不仅能让我们更清晰地剖析代码逻辑,还能在调试过程中精准定位关键环节。接下来,结合有道云笔记内容,从开发工具安装、源码获取导入到调试配置&#x…...

【破局痛点,赋能未来】领码 SPARK:铸就企业业务永续进化的智慧引擎—— 深度剖析持续演进之道,引领数字化新范式

摘要 在瞬息万变的数字时代,企业对业务连续性、敏捷创新及高效运营的需求日益迫切。领码 SPARK 融合平台,秉持“持续演进”这一核心理念,以 iPaaS 与 aPaaS 为双擎驱动,深度融合元数据驱动、智能端口调度、自动化灰度切换、AI 智…...

Flink SQL Connector Kafka 核心参数全解析与实战指南

Flink SQL Connector Kafka 是连接Flink SQL与Kafka的核心组件,通过将Kafka主题抽象为表结构,允许用户使用标准SQL语句完成数据读写操作。本文基于Apache Flink官方文档(2.0版本),系统梳理从表定义、参数配置到实战调优…...

Linux 服务器运维:磁盘管理与网络配置

🤵‍♂️ 个人主页:布说在见 ✍🏻作者简介: 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏…...

PyTorch 入门学习笔记

目录 1 张量 1)张量的初始化和属性 2)张量操作 3)使用 NumPy 进行桥接 2 torch.autograd 1)背景 2)在 PyTorch 中的使用 3)Autograd 的微分机制 4)计算图原理 3 神经网络 1&#xff…...

9大策略深度解析MySQL多表JOIN性能优化

一、多表JOIN的现实挑战 在实际开发中,MySQL多表JOIN场景主要源于两类场景: • 历史遗留系统:老代码中未严格遵循范式设计的SQL语句• 数据库迁移:从Oracle迁移至MySQL时保留的复杂关联查询 这类操作潜藏多重风险: …...

CSS 逐帧动画

CSS 逐帧动画实现指南 逐帧动画(frame-by-frame animation)是一种通过快速连续显示一系列静态图像来创造运动效果的技术。以下是使用CSS实现逐帧动画的几种方法。 1. 使用 steps() 计时函数 这是实现逐帧动画最常用的方法,通过animation-timing-function的steps(…...

UE5 游戏模板 —— ThirdPersonGame

UE5 游戏模板 —— ThirdPersonGame 前言一、初始化旋转控制参数1.参数一2.参数二3.参数三4.参数四 二、输入系统总结 前言 有了前面的铺垫,第三人称模板简直是手到擒来了,我们只需要注意一些初始化的变量是做什么的即可,因为UE的Character …...

java中关于异步转同步的一些解决方案的对比与思考。【spring mvc堵塞式】

文章目录 1、Spring MVC堵塞式编程中的技术方案a) 最简单的方案,使用 DeferredResult 代码如下,代码解读:最终控制台输出如下。用户收到的结果 b) 上点难度,使用redis监听事件,根据事件的不同返回不同的数据…...

【数据结构与算法】数据结构核心概念系统梳理

第一章 绪论:基础概念体系 🚩算法:问题求解步骤的描述。 🚩非递归的算法效率更高。 1.1 逻辑结构 vs 存储结构 维度逻辑结构存储结构(物理结构)定义数据元素之间的逻辑关系数据结构在计算机中的实现方式分类线性/树形/图/集合顺序/链式/索引/散列独立性独立于存储结构…...

《HTTP权威指南》 第7章 缓存

带着问题学习: 缓存如何提高性能如何衡量缓存的有效性缓存置于何处作用最大HTTP如何保持缓存副本的新鲜度缓存如何与其他缓存及服务器通信 web缓存是可以自动保存常见文档副本的HTTP设备。 缓存优点 减少冗余的数据传输,节省网络费用缓解网络瓶颈问题&…...

【Zephyr 系列 28】MCU 闪存文件系统详解:LittleFS + NVS + 块设备设计实战

🧠关键词:Zephyr 文件系统、LittleFS、NVS、Flash 分区、嵌入式存储、断电保护、wear leveling 📌 1. 为什么 MCU 上需要文件系统? 在嵌入式开发中,很多开发者起初直接操作 Flash 保存参数,但随着需求增长…...

ICML 2025 | 时间序列(Time Series)论文总结

ICML 2025将在2025年7月13日至7月19日(周六)在温哥华会议中心举行,本文总结了ICML 2025有关时间序列(Time Series)相关文章,共计63篇。 时间序列Topic:预测,分类,异常检测,生成&…...

理解后端开发中的中间件(以gin框架为例)

中间件(Middleware)是后端开发中的一个核心概念,它在请求(Request)和响应(Response)之间扮演着桥梁角色。以下是关于中间件的详细解释: 基本概念 中间件是在请求到达最终处理程序之前或响应返回客户端之前执行的一系列函数或组件。它可以: 访…...

【分布式技术】Bearer Token以及MAC Token深入理解

Bearer Token以及MAC Token深入理解 **Bearer Token 详解****1. 什么是 Bearer Token?****2. Bearer Token 的构建详情****(1)生成流程****(2)Token 示例(JWT)****(3)Tok…...

WebRTC(七):媒体能力协商

目的 在 WebRTC 中,每个浏览器或终端支持的音视频编解码器、分辨率、码率、帧率等可能不同。媒体能力协商的目的就是: 确保双方能“听得懂”对方发的媒体流;明确谁发送、谁接收、怎么发送;保障连接的互操作性和兼容性。 P2P的基…...

(线性代数最小二乘问题)Normal Equation(正规方程)

Normal Equation(正规方程) 是线性代数中的一个重要概念,主要用于解决最小二乘问题(Least Squares Problem)。它通过直接求解一个线性方程组,找到线性回归模型的最优参数(如权重或系数&#xff…...

【机器学习】数学基础——标量

目录 一、标量的定义 二、标量的核心特征:无方向的纯粹量级 2.1 标量 vs 矢量 直观对比 三、 标量的数学本质:零阶张量 3.1 张量阶数金字塔 3.2 标量的数学特性 四、 现实世界的标量图谱 4.1 常见标量家族 4.2 经典案例解析 五、 标量的运算奥秘…...

基于python代码的通过爬虫方式实现TK下载视频(2025年6月)

Tk的视频页面通常需要登录才能获取完整数据,但通过构造匿名游客的请求,我们可以绕过登录限制,提取视频的元信息(如标题、ID和播放地址)。核心思路如下: 构造匿名Cookie:通过模拟浏览器的请求,获取Tk服务器分配的游客Cookie。解析网页:利用BeautifulSoup解析HTML,定位…...

Go 语言的堆糖图片爬虫

基于 Go 语言的堆糖图片爬取探索之旅 在互联网的浩瀚海洋中,堆糖网以其丰富多样的高清图片、美图壁纸等内容吸引了众多用户。对于图片爱好者来说,能高效获取心仪的图片资源无疑是一件极具吸引力的事情。今天,就带大家走进一段基于 Go 语言的…...

python+uni-app基于微信小程序的儿童安全教育系统

文章目录 具体实现截图本项目支持的技术路线源码获取详细视频演示:文章底部获取博主联系方式!!!!本系统开发思路进度安排及各阶段主要任务java类核心代码部分展示主要参考文献:源码获取/详细视频演示 ##项目…...

DAY 39 图像数据与显存

图像数据的格式:灰度和彩色数据模型的定义显存占用的4种地方 模型参数梯度参数优化器参数数据批量所占显存神经元输出中间状态 batchisize和训练的关系 import torch import torch.nn as nn import torch.optim as optim from torch.utils.data import DataLoader ,…...

ELK搭建

1、elasticsearch和kibana搭建配置见 https://blog.csdn.net/yh_zeng2/article/details/148812447?spm1001.2014.3001.5501 2、logstash 下载 下载和elasticsearch版本一致的logstash,下载地址: Past Releases of Elastic Stack Software | Elastic …...

【ELK(Elasticsearch+Logstash+Kibana) 从零搭建实战记录:日志采集与可视化】

ELK(ElasticsearchLogstashKibana) 从零搭建实战记录:日志采集与可视化 本文记录了我在搭建ELK(Elasticsearch, Logstash, Kibana)技术栈时的完整实战过程。使用Docker Compose快速搭建了ELK服务端(监控主机),并通过Filebeat实现…...

反无人机系统:技术利刃如何守护低空安全?

反无人机系统:技术利刃如何守护低空安全? ——从军事防御到城市安防的全景解析 一、技术体系:从“电磁软杀伤”到“激光硬摧毁”的立体防御网 反无人机技术本质是一场“降维打击”:用百万级防御系统对抗千元级消费无人机。当前…...

第十章——8天Python从入门到精通【itheima】-102-Python基础综合案例-数据可视化(pyecharts的入门使用+数据处理)

目录 102节——pyecharts的入门使用 1.学习目标 2.pyecharts入门——基础折线图 3.pyecharts的配置对象有哪些? 4.全局配置——set_global_opts 5.小节总结 103节——数据处理 1.学习目标 2.无法继续关于第一阶段的pyecharts的相关学习 因为关于JSON数据获…...

Neo4j 中存储和查询数组数据的完整指南

Neo4j 中存储和查询数组数据的完整指南 图形数据库 Neo4j 不仅擅长处理节点和关系,还提供了强大的数组(Array)存储和操作能力。本文将全面介绍如何在 Neo4j 中高效地使用数组,包括存储、查询、优化以及实际应用场景。 数组在 Neo4j 中的基本使用 数组…...

云原生/容器相关概念记录

文章目录 网络与虚拟化技术云平台与架构容器与编排容器网络方案性能优化与工具硬件与协议 网络与虚拟化技术 P4可编程网关 P4: Programming Protocol-independent Packet Processors一种基于P4语言的可编程网络设备,支持自定义数据包处理逻辑。P4可编程技术详解&am…...

uni-app项目实战笔记21--uniapp缓存的写入和读取

一、缓存的写入 uni.setStorageSync("storageClassList",classifyList.value) 二、缓存的读取,如果缓存不存在,则返回空数组 const storageClassList uni.getStorageSync("storageClassList") || []; 三、对读取到的数据进行转…...

操作系统概述

覆盖了操作系统概述、运行机制、中断、异常、操作系统的五大结构、虚拟机。 借鉴:王道、我的好朋友杨某、我的笔记。 一、操作系统概念 概念 1.操作系统体现了封装思想 由于底层硬件只接受二进制的指令不方便用户操作,所以操作系统把这些封装成简易的…...