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

图解AUTOSAR_SWS_SPIHandlerDriver

AUTOSAR SPI Handler/Driver 详解

AUTOSAR标准下的SPI通信模块详细设计与实现

目录

  • AUTOSAR SPI Handler/Driver 详解
    • 目录
    • 1. AUTOSAR SPI模块概述
      • 1.1 SPI模块的作用
      • 1.2 SPI模块在AUTOSAR中的位置
      • 1.3 SPI模块整体架构
    • 2. SPI模块状态机
      • 2.1 状态定义
      • 2.2 状态转换
      • 2.3 子状态机
    • 3. SPI数据传输机制
      • 3.1 同步传输流程
      • 3.2 异步传输流程
      • 3.3 传输完成处理
    • 4. SPI模块内部结构
      • 4.1 Handler层结构
      • 4.2 Driver层结构
      • 4.3 配置层结构
    • 5. SPI模块配置结构
      • 5.1 配置数据模型
      • 5.2 配置参数说明
    • 6. SPI模块API接口
      • 6.1 初始化与反初始化API
      • 6.2 传输相关API
      • 6.3 状态与控制API
    • 7. SPI模块错误处理
      • 7.1 错误类型
      • 7.2 错误检测机制
      • 7.3 错误处理流程
    • 总结

1. AUTOSAR SPI模块概述

1.1 SPI模块的作用

SPI Handler/Driver(简称SPI模块)是AUTOSAR标准中实现SPI总线通信的重要组件。SPI(Serial Peripheral Interface,串行外设接口)是一种同步串行通信接口,广泛应用于微控制器与各类外设(如传感器、存储器、显示器等)的高速通信。

SPI模块提供了以下主要功能:

  • 统一的API接口,简化应用软件对SPI通信的访问
  • 支持同步和异步通信方式
  • 管理SPI通信的序列和作业
  • 处理SPI总线的初始化、配置和关闭
  • 提供SPI通信的状态监控和错误处理

1.2 SPI模块在AUTOSAR中的位置

在AUTOSAR软件架构中,SPI模块位于微控制器抽象层(MCAL),它向上层提供标准化的接口,向下层直接控制SPI硬件。

SPI模块的主要交互对象包括:

  • 上层应用:通过SPI模块提供的标准API进行SPI通信
  • DET(Development Error Tracer):用于开发阶段的错误检测和报告
  • 硬件:直接操作SPI控制器的寄存器和数据缓冲区

1.3 SPI模块整体架构

SPI模块在AUTOSAR软件架构中与其他模块的交互关系如下图所示:

在这里插入图片描述

图1-1 AUTOSAR SPI Handler/Driver架构

如上图所示,SPI Handler/Driver模块处于AUTOSAR架构的MCAL层,其主要交互包括:

  1. 上层交互

    • 与应用软件组件通过RTE层的API调用进行交互
    • 与ECU抽象层的SPI接口模块进行功能协作
    • 向诊断服务模块提供状态信息
  2. 同层交互

    • 使用DIO驱动进行片选控制
    • 使用PORT驱动配置SPI引脚
    • 向DEM模块报告产品错误
    • 向DET模块报告开发错误
  3. 下层交互

    • 直接访问和控制SPI硬件控制器的寄存器

这种分层架构设计实现了硬件抽象和功能模块化,使得应用软件可以不依赖于具体硬件实现而进行开发。

2. SPI模块状态机

SPI Handler/Driver模块使用状态机来管理其工作状态,确保模块按照预定义的流程正确运行。

2.1 状态定义

SPI模块主要包含以下三种状态:

  1. 未初始化状态(UNINIT)

    • SPI模块上电后的初始状态
    • 该状态下只有Spi_Init()函数可用
    • 其他API调用将导致开发错误
  2. 空闲状态(IDLE)

    • 模块已初始化但当前无活动传输
    • 所有SPI API都可用
    • 可以接受新的传输请求
  3. 忙状态(BUSY)

    • 模块正在执行SPI数据传输
    • 部分API可用,部分API可能受限
    • 包含作业状态和序列状态两个子状态机

2.2 状态转换

SPI模块状态之间的转换由以下触发条件驱动:

  • UNINIT → IDLE:调用Spi_Init()函数完成初始化
  • IDLE → BUSY:调用Spi_SyncTransmit()Spi_AsyncTransmit()开始数据传输
  • BUSY → IDLE:所有传输完成,或调用Spi_MainFunction_Handling()处理完毕
  • IDLE → UNINIT:调用Spi_DeInit()函数反初始化模块

2.3 子状态机

在BUSY状态下,SPI模块包含两个子状态机:

  1. 作业状态机

    • 作业队列中(SPI_JOB_QUEUED):作业已被请求但尚未开始执行
    • 作业执行中(SPI_JOB_PENDING):作业正在执行传输
    • 作业成功(SPI_JOB_OK):作业成功完成传输
    • 作业失败(SPI_JOB_FAILED):作业因超时或其他错误而失败
  2. 序列状态机

    • 序列执行中(SPI_SEQ_PENDING):序列正在执行但尚未完成
    • 序列成功(SPI_SEQ_OK):序列中的所有作业都成功完成
    • 序列失败(SPI_SEQ_FAILED):序列中任一作业失败
    • 序列取消(SPI_SEQ_CANCELED):序列被显式取消

在这里插入图片描述

图2-1 AUTOSAR SPI Handler/Driver状态机

上图展示了SPI Handler/Driver模块的完整状态机,包括主状态和子状态。该状态机规定了模块的运行行为和API的可用性条件,确保模块在不同情况下的正确响应。

3. SPI数据传输机制

SPI模块支持两种数据传输模式:同步传输和异步传输。这两种模式满足了不同场景下的通信需求。

3.1 同步传输流程

同步传输(Synchronous Transmission)是一种阻塞式传输模式,应用程序调用Spi_SyncTransmit()后会一直等待,直到整个SPI传输完成才返回。

同步传输的主要流程:

  1. 应用层调用Spi_SyncTransmit(Sequence)请求传输
  2. SPI Handler检查传输序列的有效性
  3. SPI Handler获取序列中的所有作业
  4. 对序列中的每个作业:
    • 检查作业状态和准备数据缓冲区
    • 启动作业传输
    • Driver设置SPI硬件寄存器
    • Driver发送数据并轮询传输完成标志
    • 传输完成后更新作业状态
  5. 所有作业完成后,返回传输结果给应用层

3.2 异步传输流程

异步传输(Asynchronous Transmission)是一种非阻塞式传输模式,应用程序调用Spi_AsyncTransmit()后立即返回,实际传输在后台进行。

异步传输的主要流程:

  1. 应用层调用Spi_AsyncTransmit(Sequence)请求传输
  2. SPI Handler验证序列并添加到队列
  3. SPI Handler启动第一个作业
  4. Driver配置硬件并开始传输
  5. Handler立即返回SPI_SEQ_PENDING状态给应用层
  6. 传输在后台继续进行
  7. 当硬件完成传输时,触发中断
  8. 中断处理函数调用回调函数更新状态
  9. 如果序列中有更多作业,则启动下一个作业
  10. 序列完成后,调用通知回调函数通知应用层

3.3 传输完成处理

SPI模块使用以下机制处理传输完成:

  • 同步模式:主函数中轮询传输完成标志
  • 异步模式:使用中断或调度器定期调用Spi_MainFunction_Handling()函数

当所有传输完成后,SPI模块:

  1. 更新所有相关状态
  2. 触发配置的回调函数
  3. 释放使用的资源
  4. 从BUSY状态转换到IDLE状态

在这里插入图片描述

图3-1 AUTOSAR SPI Handler/Driver数据传输序列

上图展示了SPI Handler/Driver的同步和异步传输流程。可以看出,主要区别在于同步传输会阻塞等待所有作业完成,而异步传输则立即返回,通过中断和回调机制处理后续步骤。

4. SPI模块内部结构

SPI Handler/Driver模块内部结构可分为多个组件,每个组件具有特定的功能和职责。

4.1 Handler层结构

Handler层是SPI模块中的上层,负责序列和作业的管理,主要组件包括:

  • 作业队列管理(Job Queue Management):处理按优先级排序的SPI作业队列
  • 序列管理(Sequence Management):管理SPI序列,包含多个按特定顺序执行的作业
  • 缓冲区管理(Buffer Management):处理数据缓冲区的分配和释放
  • 中断处理器(Interrupt Handler):处理SPI传输完成中断和错误中断

4.2 Driver层结构

Driver层是SPI模块中的底层,负责直接与硬件交互,主要组件包括:

  • 硬件抽象(HW Abstraction):抽象硬件特定细节,支持不同的SPI控制器
  • 错误处理(Error Handling):处理SPI通信中的各类错误
  • 寄存器访问(Register Access):直接操作SPI硬件寄存器

4.3 配置层结构

配置层定义了SPI模块的静态配置,主要包括:

  • SPI通道(SPI Channels):定义数据宽度、默认值等通道参数
  • SPI作业(SPI Jobs):定义包含特定通道列表的通信作业
  • SPI序列(SPI Sequences):定义包含特定作业列表的通信序列
  • 外部设备(External Devices):定义通信参数如波特率、时钟极性等

在这里插入图片描述

图4-1 AUTOSAR SPI Handler/Driver内部结构

上图展示了SPI Handler/Driver模块的内部组件及其交互关系。模块采用层次化设计,每一层都有明确的职责,减少了组件间的耦合度,提高了模块的可维护性和可扩展性。主要数据和控制流包括:

  1. 从作业队列到序列管理的作业调度
  2. 从序列管理到缓冲区管理的数据准备
  3. 从缓冲区管理到硬件抽象的数据传输
  4. 从中断处理器到硬件抽象的中断管理

这种分层设计使得SPI模块能够适应不同的微控制器平台和应用场景,同时保持API接口的一致性。

5. SPI模块配置结构

SPI模块采用结构化的配置数据模型,使得可以灵活配置各种通信参数和资源分配。

5.1 配置数据模型

SPI模块的配置采用面向对象的数据结构,主要包括以下配置类型:

  • Spi_ConfigType:顶层配置结构,包含所有SPI配置参数
  • Spi_GlobalConfigType:全局配置,定义全局参数和策略
  • Spi_ChannelConfigType:通道配置,定义数据宽度、缓冲区类型等
  • Spi_JobConfigType:作业配置,定义硬件设置和关联的通道列表
  • Spi_SequenceConfigType:序列配置,定义执行顺序和作业列表

各配置结构之间存在组合和引用关系,形成一个完整的配置层次结构。

5.2 配置参数说明

SPI模块的主要配置参数包括:

  1. 全局参数

    • 最大通道、作业和序列数
    • 中断使用策略
    • 功能级别(Level)设置
  2. 通道参数

    • 数据宽度
    • 默认数据值
    • 缓冲区类型(内部/外部)
    • 传输启动方式
  3. 作业参数

    • 设备指派(控制器单元)
    • 通道列表
    • 优先级
    • 片选配置
    • 时钟配置(空闲电平、数据移位边沿)
    • 波特率
  4. 序列参数

    • 作业列表
    • 可中断性设置
    • 结束通知回调

在这里插入图片描述

图5-1 AUTOSAR SPI Handler/Driver配置结构

上图展示了SPI模块的配置数据结构及其关系。这种结构化的配置设计使得SPI模块能够:

  • 支持多种通信场景和需求
  • 优化资源使用(如缓冲区分配)
  • 提供灵活的通知机制
  • 适应不同的硬件平台特性

通过正确配置这些参数,可以实现高效、可靠的SPI通信功能。

6. SPI模块API接口

SPI模块提供了一组标准化的API接口,用于初始化、配置和执行SPI通信。

6.1 初始化与反初始化API

  • Spi_Init():初始化SPI驱动,必须在使用任何其他SPI函数前调用
  • Spi_DeInit():反初始化SPI驱动,释放资源
  • Spi_GetVersionInfo():获取SPI模块的版本信息

6.2 传输相关API

  • Spi_SyncTransmit():同步传输函数,会阻塞直到传输完成
  • Spi_AsyncTransmit():异步传输函数,立即返回并允许后台执行传输
  • Spi_ReadIB():从内部缓冲区读取数据
  • Spi_SetupEB():设置外部缓冲区
  • Spi_Cancel():取消当前进行的序列传输

6.3 状态与控制API

  • Spi_GetStatus():获取SPI模块当前状态
  • Spi_GetJobResult():获取指定作业的结果
  • Spi_GetSequenceResult():获取指定序列的结果
  • Spi_SetAsyncMode():设置异步传输模式(轮询或中断)
  • Spi_MainFunction_Handling():处理异步传输的任务级函数

在这里插入图片描述

图6-1 AUTOSAR SPI Handler/Driver API接口

上图展示了SPI模块提供的API接口分类。通过这些标准化的接口,应用软件可以:

  • 初始化和配置SPI硬件
  • 执行同步或异步数据传输
  • 监控传输状态和结果
  • 管理缓冲区和资源
  • 处理错误和异常情况

所有API都符合AUTOSAR标准规范,确保了应用软件的可移植性和兼容性。

7. SPI模块错误处理

SPI模块实现了全面的错误检测和处理机制,确保通信的可靠性和稳定性。

7.1 错误类型

SPI模块可能遇到的错误类型包括:

  • 开发错误:配置和API使用错误,如无效参数、错误的调用顺序等
  • 产品错误:硬件和通信错误,如总线冲突、硬件故障等
  • 超时错误:传输超时,数据传输未在预期时间内完成
  • 缓冲区错误:缓冲区配置问题,如缓冲区溢出或下溢

7.2 错误检测机制

SPI模块采用多种错误检测机制:

  • 参数验证:检查API调用的输入参数有效性
  • 状态检查:验证操作在正确的模块状态下执行
  • 超时监控:监控传输操作的时间限制
  • 硬件错误检测:读取SPI控制器的错误状态寄存器

7.3 错误处理流程

当检测到错误时,SPI模块将执行以下处理流程:

  1. 记录错误状态和详情
  2. 根据错误类型报告给相应模块:
    • 开发错误报告给DET模块
    • 产品错误报告给DEM模块
  3. 更新相关作业和序列的状态
  4. 触发配置的错误通知回调函数
  5. 返回适当的错误代码给调用者

在这里插入图片描述

图7-1 AUTOSAR SPI Handler/Driver错误处理流程

上图展示了SPI模块的错误检测和处理流程。这种全面的错误处理机制有助于:

  • 在开发阶段尽早发现和修复错误
  • 在运行时正确处理异常情况
  • 提供详细的错误诊断信息
  • 确保系统在出现错误后能够恢复或安全降级

通过实施这些错误处理机制,SPI模块能够在各种复杂场景中提供可靠的通信服务。

总结

AUTOSAR SPI Handler/Driver模块是实现微控制器与SPI外设通信的关键组件,它提供了标准化的接口和稳定可靠的传输机制。通过本文的详细分析,我们全面了解了SPI模块的设计、实现和工作原理。

该模块的主要特点包括:

  • 标准化接口:提供符合AUTOSAR规范的API,简化应用开发
  • 状态管理:采用状态机管理模块生命周期,保证操作顺序正确
  • 多种传输模式:支持同步和异步传输,适应不同场景需求
  • 层次化结构:分为Handler和Driver两层,职责明确
  • 可配置性:支持丰富的配置选项,适应不同硬件平台
  • 错误处理:实现全面的错误检测和处理机制,提高系统可靠性

通过对架构、状态机、传输序列、内部结构、配置、API接口和错误处理的详细分析,开发人员可以更好地理解和使用SPI模块,提高开发效率和代码质量,确保SPI通信的可靠性和稳定性。

相关文章:

图解AUTOSAR_SWS_SPIHandlerDriver

AUTOSAR SPI Handler/Driver 详解 AUTOSAR标准下的SPI通信模块详细设计与实现 目录 AUTOSAR SPI Handler/Driver 详解 目录1. AUTOSAR SPI模块概述 1.1 SPI模块的作用1.2 SPI模块在AUTOSAR中的位置1.3 SPI模块整体架构 2. SPI模块状态机 2.1 状态定义2.2 状态转换2.3 子状态机…...

华为HCIE网络工程师培训选机构攻略

从 官方授权机构 到 性价比黑马,结合价格、师资、通过率等维度,为你筛选出最适合的培训方案。 一、华为官方授权机构(优先推荐) 华为官方授权机构拥有 真机实验环境考官级讲师,适合预算充足、追求高通过率的学员。 机…...

【银河麒麟系统常识】命令:dotnet --list-sdks(列出已安装的 .NET SDK 版本)

命令&#xff1a; dotnet --list-sdks 功能 列出当前系统中所有已安装的 .NET SDK 版本&#xff1b; 返回值规则 # 1. 格式&#xff1a;<版本号>[<安装路径>]&#xff1b; # 2. 排序&#xff1a;按版本号从低到高排序&#xff1b;示例...

【数据仓库】湖仓一体的核心建模理论

湖仓一体&#xff08;Lakehouse&#xff09;是一种融合数据湖与数据仓库优势的新型架构&#xff0c;其建模理论在传统数据仓库与数据湖基础上进行了扩展和创新。以下从核心建模理论、关键技术支撑及与传统架构的差异三个维度进行解析&#xff1a; 一、湖仓一体的核心建模理论 …...

Go 语言规范学习(3)

文章目录 Properties of types and valuesRepresentation of valuesUnderlying types【底层类型】Core types【核心类型】Type identityAssignabilityRepresentabilityMethod sets BlocksDeclarations and scopeLabel scopesBlank identifierPredeclared identifiersExported i…...

基于django优秀少儿图书推荐网(源码+lw+部署文档+讲解),源码可白嫖!

摘要 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;图书推荐网当然不能排除在外。本次开发的优秀少儿图书推荐网是在实际应用和软件工程的开发原理之上&#xff0c;运用Python语言、爬虫技术…...

CS2 DEMO导入blender(慢慢更新咯)

流程&#xff1a;cs2-sourcefilmmaker-blender 工具&#xff1a;cs2tools&#xff0c;cs2manager&#xff0c;blender&#xff0c;blender插件sourceio&#xff0c;source2viewer 导入sfm 工具界面 选择这个 sourceio插件 sourceIO其中新版本导入相机路径不见了&#xff0c…...

SVTAV1函数分析-svt_av1_cost_coeffs_txb

一 函数作用 函数svt_av1_cost_coefss_txb是一个与AV1视频编码相关的函数&#xff0c;主要用于计算变换块(Transform Block)中系数的成本(Cost)。在视频编码中&#xff0c;特被是在AV1编码中&#xff0c;计算系数的成本对于模式决策(Mode Decision)和熵编码(Entropy Coding) 等…...

【Linux加餐-验证UDP:TCP】-windows作为client访问Linux

一、验证UDP-windows作为client访问Linux UDP client样例代码 #include <iostream> #include <cstdio> #include <thread> #include <string> #include <cstdlib> #include <WinSock2.h> #include <Windows.h>#pragma warning(dis…...

qt+opengl 加载三维obj文件

1前面我们已经熟悉了opengl自定义顶点生成一个立方体&#xff0c;并且我们实现了立方体的旋转&#xff0c;光照等功能。下面我们来用opengl来加载一个obj文件。准备我们首先准备一个简单的obj文件&#xff08;head.obj&#xff09;。资源在本页下载 2 在obj文件里面&#xff0c…...

日报日报流量分析

快捷键 CtrlK&#xff0c;选择需要抓包的网卡 CtrlF可以进行关键字搜索 CtrlM&#xff0c;标记数据包 CtrlShiftN跳到标记处 查看包有多少协议Protocol Hierarchy&#xff08;协议分级&#xff09; 搜了一下TCP协议&#xff0c;是互联网最基本的协议&#xff0…...

SQL:CASE WHEN使用详解

文章目录 1. 数据转换与映射2. 动态条件筛选3. 多条件分组统计4. 数据排名与分级5. 处理空值与默认值6. 动态排序 CASE WHEN 语句在 SQL 中是一个非常强大且灵活的工具&#xff0c;除了常规的条件判断外&#xff0c;还有很多巧妙的用法&#xff0c;以下为你详细总结&#xff1a…...

在 Unreal Engine 5 中制作类似《鬼泣5》这样的游戏时,角色在空中无法落地的问题可能由多种原因引起。

系列文章目录 文章目录 系列文章目录前言一、实现步骤二、涉及到的蓝图三、如何把敌人击飞到空中 前言 在 Unreal Engine 5 中制作类似《鬼泣5》这样的游戏时&#xff0c;角色在空中无法落地的问题可能由多种原因引起。 一、实现步骤 角色碰撞设置 确保角色的碰撞组件&…...

mapbox进阶,添加鹰眼图控件

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:mapbox 从入门到精通 文章目录 一、🍀前言1.1 ☘️mapboxgl.Map 地图对象1.2 ☘️mapboxgl.Map style属性1.3 ☘️mapboxgl-minimap 鹰眼控件二、🍀添加…...

k8s污点与容忍

k8s污点与容忍 k8s污点管理常用命令effect标记值查看污点添加污点删除污点 node污点与容忍污点容忍yaml示例容忍放大基于污点的驱逐驱逐时排除指定服务 设置master调度设置master尽量不调度允许master节点调度pod恢复Master Only状态将node标记为不可调度状态(节点警戒)设置nod…...

算法刷题记录——LeetCode篇(9.1) [第801~810题]

更新时间&#xff1a;2025-03-29 算法题解目录汇总&#xff1a;算法刷题记录——题解目录汇总技术博客总目录&#xff1a;计算机技术系列博客——目录页 优先整理热门100及面试150&#xff0c;不定期持续更新&#xff0c;欢迎关注&#xff01; 801. 使序列递增的最小交换次数…...

AOA与TOA混合定位,MATLAB例程,自适应基站数量,三维空间下的运动轨迹,滤波使用EKF

本代码实现了一个基于 到达角(AOA) 和 到达时间(TOA) 的混合定位算法,结合 扩展卡尔曼滤波(EKF) 对三维运动目标的轨迹进行滤波优化。代码通过模拟动态目标与基站网络,展示了从信号测量、定位解算到轨迹滤波的全流程,适用于城市峡谷、室内等复杂环境下的定位研究。 文…...

【vllm/瞎折腾】在内网wsl上安装vllm并尝试多节点部署(失败了)

目录 说在前面miniconda安装外网创建虚拟环境创建节点一的虚拟环境创建节点二的虚拟环境 内网配置环境配置节点一的环境配置节点二的环境 vllm多节点配置节点一(主节点)配置节点二配置 部署LLM(失败)补充&#xff1a;wsl2设置ulimit补充&#xff1a;wsl安装libcuda补充&#xf…...

Mayo Clinic Platform在人工智能医疗领域的现状及启示意义研究

一、引言 1.1 研究背景与意义 在科技飞速发展的当下,人工智能(AI)已逐渐渗透至各个行业,医疗领域作为关乎人类生命健康的重要领域,也迎来了人工智能技术带来的深刻变革。人工智能医疗,作为人工智能与医疗行业深度融合的产物,正重塑着全球医疗的格局。 从全球范围来看,…...

k8s部署教程

Kubernetes 1. 使用Kubernetes部署Web服务器 ​ 我们的目标是部署三个实例&#xff0c;可以让用户直接访问。三个实例&#xff0c;这样即便一个崩溃了&#xff0c;也还有两个&#xff0c;比较不容易出问题。实际中你要根据自己的业务来判断。也就是说&#xff0c;我们需要一个…...

java基础:常见类和对象

1.常见类和对象&#xff1a; java.lang.Object类&#xff0c;Java中的每个类都直接或间接地继承自Object类&#xff0c;如果没有明确指定一个类继承另一个类&#xff0c;那么它的默认父类就是Object类&#xff1b; 例如多态&#xff1a; package java_jichu;public class ja…...

了解遗传算法的Matlab程序的奥妙之处

老板突然想要了解遗传算法的Matlab程序,我们需要先理清楚他们的需求。首先,老板可能对遗传算法有一定的了解,但不太清楚如何在Matlab中具体实现。他可能是一个学生或者研究人员,需要应用到某个项目中,比如优化问题。老板可能希望得到一个结构清晰的步骤说明,以及具体的代…...

Java学习------源码解析之StringBuilder

1. 介绍 String中还有两个常用的类&#xff0c;StringBuffer和StringBuilder。这两个类都是专门为频繁进行拼接字符串而准备的。最先出现的是StringBuffer&#xff0c;之后到jdk1.5的时候才有了StringBuilder。 2. StringBuilder解析 从这张继承结构图可以看出&#xff1a; S…...

【漫话机器学习系列】163.方差膨胀因子(Variance Inflation Factor, VIF)

方差膨胀因子&#xff08;Variance Inflation Factor, VIF&#xff09;详解 1. 什么是方差膨胀因子&#xff1f; 方差膨胀因子&#xff08;Variance Inflation Factor, VIF&#xff09;是一种用于衡量回归分析中多重共线性&#xff08;Multicollinearity&#xff09;程度的指…...

蓝桥杯省模拟赛 字符串拼接

问题描述 给定四个字符串 a,b,c,d&#xff0c;请将这四个字符串按照任意顺序依次连接拼成一个字符串。 请问拼成的字符串字典序最小是多少&#xff1f; 输入格式 输入四行&#xff0c;每行包含一个字符串。 输出格式 输出一行包含一个字符串&#xff0c;表示答案。 样例…...

前端路由守卫与后端权限验证,仅使用路由守卫是否安全?

前后端分离架构的安全原则 后端必须对所有 API 接口进行权限验证前端仅负责用户界面的重定向安全策略应始终由后端最终决定 问题1&#xff1a;前端设置路由守卫是否可以阻挡用户直接通过URL访问&#xff1f;&#xff1f;&#xff1f; 前端路由守卫&#xff08;如 Vue Router …...

React-nodejs 练习 个人博客

1.主要功能模块&#xff1a; 文章管理&#xff1a;CRUD操作 用户系统&#xff1a;注册、登录、权限控制评论系统&#xff1a;文章评论功能 2.技术栈&#xff1a; 前端&#xff1a;React Ant Design React Router后端&#xff1a;Express MongoDB 通信&#xff1a;RESTful…...

AI三大主义 和 深度学习三大主义

在人工智能&#xff08;AI&#xff09;研究领域&#xff0c;"三大主义"通常指三种核心方法论或思想流派&#xff0c;它们代表了不同的技术路径和哲学观点。以下是主流的划分方式&#xff1a; 1. 符号主义&#xff08;Symbolicism&#xff09; 核心思想&#xff1a;智…...

Linux实现生产者消费者模型(基于阻塞队列)

目录 概念及优势 代码实现 概念及优势 生产者消费者模型是一种用于线程同步的模型&#xff0c;在这个模型中有两种角色&#xff0c;生产者生产数据&#xff0c;消费者消费数据。有三种关系&#xff0c;生产者与生产者&#xff0c;消费者与消费者&#xff0c;生产者与消费者。…...

UE5 UE4 右键/最大化-菜单-不显示/闪/黑色/黑屏--修复方法

先关闭UE5 、UE4 编辑器。 进入这个网站&#xff1a;https://nvidia.custhelp.com/app/answers/detail/a_id/5157 网速慢&#xff0c;换成这个下载&#xff1a;https://download.csdn.net/download/qq_21153225/90546310 下载&#xff1a;mpo_disable.reg 的文件 只双击“mpo…...

[ C语言 ] | 从0到1?

目录 认识计算机语言 C语言 工欲善其事必先利其器 第一个C语言代码 这一些列 [ C语言 ] &#xff0c;就来分享一下 C语言 相关的知识点~ 认识计算机语言 我们说到计算机语言&#xff0c;语言&#xff0c;就是用来沟通的工具&#xff0c;计算机语言呢&#xff1f;就是我们…...

4.训练篇2-毕设篇

resnet # 1. 从 torchvision 中加载预训练的 ResNet18 模型 # pretrainedTrue 表示使用在 ImageNet 上预训练过的参数&#xff0c;学习效果更好 base_model_resnet18 models.resnet18(pretrainedTrue)# 2. 获取 ResNet18 模型中全连接层&#xff08;fc&#xff09;的输入特征…...

Ubuntu 系统中,每日健康检查

一、手动检查命令&#xff08;基础项&#xff09; 1. 系统资源监控 内存使用&#xff1a; free -h # 查看内存和交换空间使用情况 cat /proc/meminfo | grep -i "memavailable" # 查看可用内存CPU 负载&#xff1a; top -n 1 -b | grep "load ave…...

#CX# UVM中的virtual sequence 和 virtual sequencer 的用途

在UVM中,Virtual Sequence(虚拟序列) 的核心用途是协调多个物理Sequencer上的Sequence执行,以实现跨接口、跨组件的复杂事务同步和场景控制。 1. 核心用途 多接口协同测试 当验证场景需要多个接口(如DUT的AXI、I2C、UART接口)同时或按特定顺序发送事务时,Virtual Seque…...

vue:突然发现onok无法使用

const that this;this.$confirm({title: "修改商品提示",content: "如果当前商品存在于商品活动库&#xff0c;则在商品活动库的状态会下架",onOk: function () {that.submitForm();}}); 突然发现 this.$confirm无法进入onok 最终发现是主题冲突&#x…...

开发过程中需要安装的浏览器插件

Vue.js devtools https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd?hlzh-CN&utm_sourceext_sidebar ModHeader https://chromewebstore.google.com/detail/modheader-modify-http-hea/idgpnmonknjnojddfkpgkljpfnnfcklj?utm…...

基于javaweb的SpringBoot房屋出租系统设计与实现(源码+文档+部署讲解)

技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...

小程序某点餐平台全自动化实现思路

某德基全自动化实现 一、实现思路二、具体步骤1、分析接口2、破解接口3、解决自动支付4、获取订单 三、其他 以下内容仅供学习交流使用 粗略讲解一下思路&#xff0c;要完全实现只靠以下这些内容还是不够的。 一、实现思路 全自动化实现用的是小程序版本。我们首先要分析整个…...

红宝书第二十讲:详解JavaScript的Proxy与Reflect

红宝书第二十讲&#xff1a;详解JavaScript的Proxy与Reflect 资料取自《JavaScript高级程序设计&#xff08;第5版&#xff09;》。 查看总目录&#xff1a;红宝书学习大纲 一、Proxy的作用&#xff1a;给对象戴上“监听耳机” Proxy&#xff08;代理&#xff09;允许你为对象…...

Contactile三轴触觉传感器:多维力感赋能机器人抓取

在非结构化环境中&#xff0c;机器人对物体的精准抓取与操作始终面临巨大挑战。传统传感器因无法全面感知触觉参数&#xff08;如三维力、位移、摩擦&#xff09;&#xff0c;难以适应复杂多变的场景。Contactile推出的三轴触觉力传感器&#xff0c;通过仿生设计与创新光学技术…...

18-动规-子序列中的 k 种字母(中等)

题目 来源 28. 子序列中的 k 种字母&#xff08;第一期模拟笔试&#xff09; 思路 基本分析 子序列的定义 子序列是从原序列中选取部分元素&#xff0c;同时保持这些元素在原序列中的相对顺序所形成的新序列。也就是说&#xff0c;子序列中的元素不需要在原序列中连续出现…...

Lua 数组

Lua 数组 引言 Lua 是一种轻量级、高效的脚本语言&#xff0c;广泛应用于游戏开发、服务器端编程等领域。在 Lua 中&#xff0c;数组是一种非常重要的数据结构&#xff0c;它允许开发者以高效的方式存储和操作一系列数据。本文将详细介绍 Lua 数组的相关知识&#xff0c;包括…...

C 语言的未来:在变革中坚守核心价值

一、从 “古老” 到 “长青”&#xff1a;C 语言的不可替代性 诞生于 20 世纪 70 年代的 C 语言&#xff0c;历经半个世纪的技术浪潮&#xff0c;至今仍是编程世界的 “基石语言”。尽管 Python、Java 等高级语言在应用层开发中占据主流&#xff0c;但 C 语言在系统级编程和资…...

springboot3 基于 logback

1.配置 logging:level:root: ${ROOT_LOG_LEVEL:debug}web: ${ROOT_WEB_LEVEL:info}org.hibernate.orm.jdbc.bind: ${ROOT_SQL_PARAM_LEVEL:info} #打印SQL参数2.基于 logback-spring.xml配置 <?xml version="1.0" encoding="UTF-8"?> <configu…...

网络相关的知识总结1

1.设备可以通过以太网电缆&#xff08;如双绞线&#xff09;连接到交换机的端口&#xff0c;交换机也通过以太网电缆连接到路由器。但是如果距离过远&#xff0c;比如跨国路由器如何连接&#xff1f; 1.专用通信线路&#xff08;如 MPLS、光纤专线&#xff09;&#xff1a;租用…...

Rust vs. Go: 性能测试(2025)

本内容是对知名性能评测博主 Anton Putra Rust vs. Go (Golang): Performance 2025 内容的翻译与整理, 有适当删减, 相关数据和结论以原作结论为准。 再次对比 Rust 和 Go&#xff0c;但这次我们使用的是最具性能优势的 HTTP 服务器库---Hyper&#xff0c;它基于 Tokio 异步运…...

如何使用postman调用多参数接口(包含文件上传)

&#x1f91f;致敬读者 &#x1f7e9;感谢阅读&#x1f7e6;笑口常开&#x1f7ea;生日快乐⬛早点睡觉 &#x1f4d8;博主相关 &#x1f7e7;博主信息&#x1f7e8;博客首页&#x1f7eb;专栏推荐&#x1f7e5;活动信息 文章目录 如何使用postman调用包含文件参数的多参数接…...

无人机助力道路智能养护,基于YOLOv5全系列【n/s/m/l/x】参数模型开发构建无人机航拍道路交通场景下水泥路面缺陷智能检测识别系统

道路养护是保障交通命脉安全的隐形防线&#xff0c;其重要性不亚于道路建设本身。我国每年因道路病害引发的交通事故占比高达12%&#xff0c;及时修复1平方米的早期裂缝可避免后续数万元的修复成本。在这场与道路病害赛跑的战役中&#xff0c;传统养护模式正遭遇前所未有的挑战…...

28_跨域

目录 promise promise的基本语法 async await try catch promise 静态方法 跨域 跨域的解决方案 1-cors ​编辑 2-jsonp方案 3-代理服务器 promise promise 是一个es6新增的语法 承诺的意思 作用:是专门用来解决回调地狱!!!! promise的基本语法 // 基本语法:// Pr…...

【C#.NET】VS2022创建Web API项目

C# Web API 是一种基于 .NET 平台&#xff08;包括但不限于.NET Framework 和 .NET Core&#xff09;构建 HTTP 服务的框架&#xff0c;用于创建 RESTful Web 服务。REST&#xff08;Representational State Transfer&#xff09;是一种软件架构风格&#xff0c;它利用HTTP协议…...