汽车开放系统架构(AUTOSAR)中运行时环境(RTE)生成过程剖析
一、引言
在当今高度智能化的汽车电子领域,软件系统的复杂性呈指数级增长。为了应对这一挑战,汽车开放系统架构(AUTOSAR)应运而生,它为汽车电子软件开发提供了标准化的分层架构和开发方法。其中,运行时环境(RTE)作为 AUTOSAR 架构中的关键部分,负责协调软件组件之间的通信和调度,确保整个系统的高效运行。本文将深入探讨 AUTOSAR 中 RTE 的生成过程,详细介绍 RTE 合同阶段和 RTE 生成阶段,并通过具体的例子,包括文件内容、源代码以及.arxml 文件,帮助读者更好地理解这一复杂的过程。
二、AUTOSAR 分层架构
AUTOSAR 采用分层架构,这种架构设计使得软件的开发和维护更加模块化和可扩展。主要包含三个层次:
(一)应用层(Application Layer)
应用层是汽车电子系统中与具体功能相关的部分,它包含了各种软件组件和 RTE。例如,在一个智能驾驶汽车的系统中,应用层可能包含了用于处理传感器数据的软件组件、用于决策的软件组件以及用于控制执行器的软件组件。这些软件组件通过 RTE 进行通信和协作,共同实现智能驾驶的功能。
(二)RTE 层
RTE 层就像是一个桥梁,负责软件组件之间的通信和调度。当应用层中的一个软件组件需要与另一个软件组件进行数据交换时,它会通过 RTE 来完成。例如,传感器数据处理组件需要将处理后的数据发送给决策组件,这一过程就需要 RTE 来协调。
(三)基础软件层(Base Software Layer)
基础软件层为应用层和 RTE 层提供了底层的支持,它又细分为服务层、ECU 抽象层和微控制器抽象层。
- 服务层(Service Layer):提供了一系列的服务,如内存管理、任务调度等。例如,在一个汽车的多媒体系统中,服务层可能会提供内存分配服务,用于存储音频和视频数据。
- ECU 抽象层(ECU Abstraction Layer):将应用层和微控制器抽象层隔离开来,使得应用层可以独立于具体的硬件平台进行开发。例如,不同型号的汽车可能使用不同的 ECU,但应用层的软件组件可以通过 ECU 抽象层来访问这些 ECU,而不需要关心具体的硬件细节。
- 微控制器抽象层(Microcontroller Abstraction Layer):直接与微控制器进行交互,提供了对微控制器硬件资源的访问接口。例如,它可以提供对 GPIO 引脚、定时器等硬件资源的控制接口。
下面是一个简单的 AUTOSAR 分层架构示意图:
三、软件组件开发与部署
在软件组件开发过程中,可分为两个阶段:
(一)软件组件开发(Software Component Development)
软件组件开发涵盖了软件组件的规格定义、设计和实现。例如,我们要开发一个用于控制汽车发动机的软件组件,在规格定义阶段,我们需要明确该组件的功能需求,如控制发动机的转速、温度等。在设计阶段,我们需要设计组件的内部结构和接口,如定义输入输出端口、事件和可运行实体等。在实现阶段,我们使用编程语言(如 C 语言)来编写具体的代码。
以下是一个简单的软件组件代码示例:
// 发动机控制软件组件
#include <stdio.h>// 定义输入端口
typedef struct {int current_speed;int current_temperature;
} EngineInput;// 定义输出端口
typedef struct {int throttle_position;int cooling_fan_speed;
} EngineOutput;// 可运行实体函数
void EngineControl(EngineInput input, EngineOutput *output) {// 根据输入计算输出if (input.current_speed < 50) {output->throttle_position = 80;} else {output->throttle_position = 60;}if (input.current_temperature > 90) {output->cooling_fan_speed = 100;} else {output->cooling_fan_speed = 50;}
}
(二)软件组件部署(Software Component Deployment)
软件组件部署涉及将应用程序集成到基础软件中,并将组件分配到 ECU。例如,我们将上述发动机控制软件组件集成到汽车的 ECU 中,需要考虑组件与基础软件的接口兼容性,以及组件在 ECU 中的资源分配情况。
四、RTE 概述
RTE 即运行时环境,其主要职责是实现应用层中软件组件之间的通信,以及软件组件的调度。当应用层需要与基础软件通信时,也需通过 RTE 进行。
例如,在一个汽车的车身控制系统中,有一个用于控制车门锁的软件组件和一个用于控制车窗升降的软件组件。当驾驶员按下车门锁按钮时,车门锁控制组件会通过 RTE 将信号发送给车窗升降控制组件,以确保在车门锁定时车窗也能自动关闭。
五、RTE 生成阶段
RTE 生成器主要在两个阶段运行:
(一)合同阶段(Contract Phase)
- 输入:仅考虑软件组件描述文件(如.arxml 文件)。以下是一个简单的.arxml 文件示例:
<?xml version="1.0" encoding="UTF-8"?>
<AR-PACKAGE><SHORT-NAME>EngineControlComponent</SHORT-NAME><ELEMENTS><SW-COMPONENT-TYPE><SHORT-NAME>EngineControl</SHORT-NAME><Ports><R-PORT-PROTOTYPE><SHORT-NAME>EngineInputPort</SHORT-NAME><DATA-PROTOTYPE><SHORT-NAME>EngineInput</SHORT-NAME><TYPE-TREF>EngineInputType</TYPE-TREF></DATA-PROTOTYPE></R-PORT-PROTOTYPE><P-PORT-PROTOTYPE><SHORT-NAME>EngineOutputPort</SHORT-NAME><DATA-PROTOTYPE><SHORT-NAME>EngineOutput</SHORT-NAME><TYPE-TREF>EngineOutputType</TYPE-TREF></DATA-PROTOTYPE></P-PORT-PROTOTYPE></Ports></SW-COMPONENT-TYPE><DATA-TYPE-MAP><SHORT-NAME>EngineDataTypes</SHORT-NAME><DATA-TYPE-REFS><DATA-TYPE-REF><SHORT-NAME>EngineInputType</SHORT-NAME><TYPE-TREF>STRUCTURE-TYPE</TYPE-TREF><STRUCTURE-TYPE><SHORT-NAME>EngineInput</SHORT-NAME><ELEMENTS><STRUCTURE-ELEMENT><SHORT-NAME>current_speed</SHORT-NAME><TYPE-TREF>INTEGER-TYPE</TYPE-TREF></STRUCTURE-ELEMENT><STRUCTURE-ELEMENT><SHORT-NAME>current_temperature</SHORT-NAME><TYPE-TREF>INTEGER-TYPE</TYPE-TREF></STRUCTURE-ELEMENT></ELEMENTS></STRUCTURE-TYPE></DATA-TYPE-REF><DATA-TYPE-REF><SHORT-NAME>EngineOutputType</SHORT-NAME><TYPE-TREF>STRUCTURE-TYPE</TYPE-TREF><STRUCTURE-TYPE><SHORT-NAME>EngineOutput</SHORT-NAME><ELEMENTS><STRUCTURE-ELEMENT><SHORT-NAME>throttle_position</SHORT-NAME><TYPE-TREF>INTEGER-TYPE</TYPE-TREF></STRUCTURE-ELEMENT><STRUCTURE-ELEMENT><SHORT-NAME>cooling_fan_speed</SHORT-NAME><TYPE-TREF>INTEGER-TYPE</TYPE-TREF></STRUCTURE-ELEMENT></ELEMENTS></STRUCTURE-TYPE></DATA-TYPE-REF></DATA-TYPE-REFS></DATA-TYPE-MAP></ELEMENTS>
</AR-PACKAGE>
- 处理过程:读取软件组件描述文件,并生成组件 API。
- 输出:特定软件组件的头文件。以下是根据上述.arxml 文件生成的头文件示例:
#ifndef ENGINE_CONTROL_RTE_H
#define ENGINE_CONTROL_RTE_H// 定义输入输出数据类型
typedef struct {int current_speed;int current_temperature;
} EngineInput;typedef struct {int throttle_position;int cooling_fan_speed;
} EngineOutput;// 声明 RTE 函数
void Rte_Read_EngineInputPort(EngineInput *input);
void Rte_Write_EngineOutputPort(EngineOutput *output);#endif // ENGINE_CONTROL_RTE_H
- 用例及优势:可用于软件与目标库的共享。同时,该阶段能解决 RTE 生成过程中的一些问题。例如,在 RTE 生成时,RT 缓冲区访问默认被授予,其缓冲区编号可能会因 AUTOSAR 接口变更或.arxml 文件配置更改而改变,这可能导致链接器错误。而合同阶段通过用函数调用替代直接的缓冲区访问,确保应用开发者在源代码中无需直接访问变量,而是调用 RTE 生成的函数,从而避免此类问题。以下是修改后的发动机控制软件组件代码,使用 RTE 函数进行数据读写:
// 发动机控制软件组件
#include "EngineControlRte.h"// 可运行实体函数
void EngineControl(void) {EngineInput input;EngineOutput output;// 从 RTE 读取输入数据Rte_Read_EngineInputPort(&input);// 根据输入计算输出if (input.current_speed < 50) {output.throttle_position = 80;} else {output.throttle_position = 60;}if (input.current_temperature > 90) {output.cooling_fan_speed = 100;} else {output.cooling_fan_speed = 50;}// 将输出数据写入 RTERte_Write_EngineOutputPort(&output);
}
(二)生成阶段(Generation Phase)
- 输入:包括 ECU 提取文件、系统描述文件、ECC 值、s_swcd 文件和 bsmd 文件等。假设 ECU 提取文件包含了 ECU 的硬件配置信息,如 GPIO 引脚的分配、定时器的参数等。以下是一个简单的 ECU 提取文件示例:
# ECU 提取文件
GPIO_Pin_1: Input
GPIO_Pin_2: Output
Timer_1_Period: 100ms
- 处理过程:利用这些文件为单个 ECU 生成 RTE 代码。
- 输出:生成等效的头文件、源文件(如.rte.c)以及相关的 XML 文件。以下是生成的 RTE 源文件示例:
#include "EngineControlRte.h"// 模拟的 RT 缓冲区
static EngineInput rt_input_buffer;
static EngineOutput rt_output_buffer;// RTE 读取输入端口函数实现
void Rte_Read_EngineInputPort(EngineInput *input) {*input = rt_input_buffer;
}// RTE 写入输出端口函数实现
void Rte_Write_EngineOutputPort(EngineOutput *output) {rt_output_buffer = *output;
}
- 用例:当需要将应用层软件(ASW)集成到基础软件(BSW),或者有来自 OEM 或第三方的软件共享文件时,这些操作都会在生成阶段进行处理。例如,将发动机控制软件组件集成到汽车的基础软件中,需要在生成阶段将 RTE 代码与基础软件进行链接和编译。
六、软件组件实现类别
软件组件实现类别在 RTE 生成过程中起着关键作用。在创建软件组件时,需明确其交付形式,如源文件(s_SW_SRC)、目标文件或头文件。当指定为 s_SW_SRC 时,会触发生成阶段;而指定为目标文件时,则会触发合同阶段。此外,在软件组件实现映射中,还需明确特定软件组件的内部行为。
例如,我们将发动机控制软件组件以源文件的形式交付,那么在 RTE 生成过程中,会触发生成阶段,将源文件与 RTE 代码一起编译和链接。如果以目标文件的形式交付,则会触发合同阶段,对目标文件进行处理。
七、总结
通过上述内容,我们对 RTE 生成过程有了清晰的认识。合同阶段以软件组件描述文件为输入,输出等效的头文件;而生成阶段则综合考虑更多文件,输出等效的头文件、源文件及相关 XML 文件。理解这两个阶段对于汽车电子软件开发中确保软件组件的正确通信和调度至关重要。同时,通过具体的例子,包括.arxml 文件、源代码等,我们更加直观地了解了 RTE 生成过程的具体实现。在实际的汽车电子软件开发中,开发者需要根据具体的需求和场景,合理运用 RTE 生成过程,提高软件的开发效率和质量。
相关文章:
汽车开放系统架构(AUTOSAR)中运行时环境(RTE)生成过程剖析
一、引言 在当今高度智能化的汽车电子领域,软件系统的复杂性呈指数级增长。为了应对这一挑战,汽车开放系统架构(AUTOSAR)应运而生,它为汽车电子软件开发提供了标准化的分层架构和开发方法。其中,运行时环境…...
VC++零基础入门之系列教程 【附录E MFC快速参考指南】
附录E MFC快速参考指南 E.1 创建窗口 使用M F C CWnd wnd; W n d . C r e a t e E x ( E xSt y l e , C l a s s N a m e , Wi n d o w N a m e , S t y l e , x , y, Wi d t h , H e i g h t , P a r e n t , M e n u , P a r a m ) ; 使用A P I HWND hwnd=::CreateWi n d …...
Holoens2开发报错记录02_通过主机获取彩色和深度数据流常见错误
01.E1696 E1696 无法打开源文件 “stdio.h” 解决方法: 更新一下SDK 1)打开Visual Studio Installer,点击修改 2)安装详细信息中自己系统对应的SDK,点击修改即可 02.WinError 10060 方法来源 解决方法:…...
粉色和紫色渐变壁纸怎么设计?
粉色和紫色的渐变壁纸设计可以打造极为浪漫的氛围,这两种颜色的搭配极具梦幻感与浪漫气息,常被用于各种浪漫主题的设计之中。以下是关于粉色和紫色渐变壁纸的设计方法: 一、渐变方向设计 横向渐变:从画面左侧的粉色过渡到右侧的紫…...
maven Problem shading JAR的几个解决方案
1 现象 Error creating shaded jar: Problem shading JAR :xxxxxx.jar entry META-INF/versions/11/com/fasterxml/jackson/core/io/doubleparser/BigSignificand.class: java.lang.IllegalArgumentException -> [Help 1] 2 原因 这个问题通常是由于 maven-s…...
前缀和代码解析
前缀和是指数组一定范围的数的总和,常见的有两种,一维和二维,我会用两道题来分别解析 一维 DP34 【模板】前缀和 题目: 题目解析: 暴力解法 直接遍历数组,遍历到下标为 l 时,开始进行相加,直到遍历到下标为 r ,最后返回总和.这样做的时间复杂度为: O(n) public class Main …...
CaffeineCache自定义缓存时间
文章目录 1、POM文件依赖2、声明缓存3、缓存使用4、测试缓存5、自定义缓存过期时间6、测试自定义超时时间 1、POM文件依赖 <dependency><groupId>com.github.ben-manes.caffeine</groupId><artifactId>caffeine</artifactId><version>3.1…...
keil中出现Error_Handler错误的解决方法
这个错误表明在代码中使用了 Error_Handler 函数但未定义。以下是完整的修复方案: 步骤 1:在 main.h 中添加函数声明 /* main.h */ void Error_Handler(void);步骤 2:在 main.c 中完善错误处理函数 /* main.c */ void Error_Handler(void) …...
low rank decomposition如何用于矩阵的分解
1. 什么是矩阵分解和低秩分解 矩阵分解是将一个矩阵表示为若干结构更简单或具有特定性质的矩阵的组合或乘积的过程。低秩分解(Low Rank Decomposition)是其中一种方法,旨在将原矩阵近似为两个或多个秩较低的矩阵的乘积,从而降低复…...
Cesium@1.126.0,创建3D瓦片,修改样式
第一步:添加3D建筑 Cesium.createOsmBuildingsAsync()这是一个异步方法,所以要写在一个异步函数里 创建一个函数 const create3DBuilding async (viewer) > {try {// 添加3D建筑const tileset await Cesium.createOsmBuildingsAsync();viewer.scen…...
MFC学习笔记-1
一、编辑框和按钮 //.h文件private:CString str;//给窗口类加了一个变量(定义一个成员变量),关联到IDC_EDIT1中(要在实现中关联,源文件文件夹中)CString str2;//接收button2,和IDC_EDIT2绑定 p…...
Bugku CTF CRYPTO
Bugku CTF CRYPTO 文章目录 Bugku CTF CRYPTO聪明的小羊ok[-<>]散乱的密文.!? 聪明的小羊 描 述: 一只小羊翻过了2个栅栏 fa{fe13f590lg6d46d0d0} 分 析:栅栏密码,分2栏,一个栏里有11个 ①手动解密 f a { f e 1 3 f 5 9 0 l g 6 d 4 …...
Leetcode2502:设计内存分配器
题目描述: 给你一个整数 n ,表示下标从 0 开始的内存数组的大小。所有内存单元开始都是空闲的。 请你设计一个具备以下功能的内存分配器: 分配 一块大小为 size 的连续空闲内存单元并赋 id mID 。释放 给定 id mID 对应的所有内存单元。 …...
BERT模型详解及代码复现
架构设计 BERT模型的架构设计是其成功的关键之一,它巧妙地融合了Transformer架构的优势,并针对自然语言处理任务进行了优化。具体来说,BERT的架构主要由三个模块组成: Embedding模块 :负责将输入的文本转换为模型可处理的向量表示。该模块由三种Embedding组成: Token Em…...
面试中自己挖的一些坑
一些面试的细节深度持续更新。。。 1. 这里有4题,单独写成了博客2. 经典的八股文之一 (ArrayList扩容原理)1.博主的回答2.面试官问的一些细节 3.经典的八股文之一 (HashMap扩容原理)1.博主的回答2.面试官问的一些细节 4.SpringBoot的启动原理1. 博主回答2. 面试官问…...
二、环 Ring
文章目录 一、环的定义二、环的分类与变种1、交换环2、含单位元的环3、零环4、非交换环5、整环6、域 三、环的性质与应用四、环与群和域的对比 一、环的定义 一个集合 R 被称为一个环,如果它满足以下条件: 对于 加法 满足: 闭合性࿱…...
Python图像处理入门:如何打开图像文件及常见格式
神经网络中的图像处理是一个非常重要的环节,尤其是在计算机视觉领域。作为一名新手,你可能会遇到一个常见的挑战——如何在 Python 中打开并理解图像文件。在本篇文章中,我们将介绍几种常见的图像文件格式,并讲解如何使用 Python …...
银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法
银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法 一 系统环境二 使用场景三 操作步骤 一 系统环境 [rootlocalhost ~]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server…...
网络运维学习笔记 018 HCIA-Datacom综合实验02
文章目录 综合实验2sw3:sw4:gw:core1(sw1):core2(sw2):ISP 综合实验2 sw3: vlan 2 stp mode stp int e0/0/1 port link-type trunk port trunk allow-pass v…...
深度学习进阶:构建多层神经网络
在上一篇文章中,我们从零开始构建了一个简单的两层神经网络,并通过异或问题(XOR)展示了神经网络的强大能力。今天,我们将进一步深入,构建一个更复杂的多层神经网络,并引入更多高级概念ÿ…...
高斯消元法
前置数学知识 n元线性方程是具有如下形式的方程: a 1 x 1 a 2 x 2 a 3 x 3 … a n x n b a_1x_1a_2x_2a_3x_3…a_nx_n b a1x1a2x2a3x3…anxnb 其中, a 1 , a 2 , . . . a_1,a_2,... a1,a2,...以及常数项 b b b均为已知的实数…...
ubuntu 安全策略(等保)
windows 三个帐号屏保设置组策略,密码超时次数/审计记录; linux 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施。 1、在系统中新建测试用户,使用此用户登录时多次输入错误密码&…...
计算机毕业设计SpringBoot+Vue.js购物推荐系统网站(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
QT线程同步
文章目录 前言1. 使用互斥锁(QMutex)2.使用QMutexLocker便利类3. 使用读写锁(QReadWriteLock)4.QReadLocker便利类和QWriteLocker便利类对QReadWriteLock进行加解锁5. 使用信号量(QSemaphore)6. 使用条件变…...
何为第一二三产业?
第一、第二、第三产业的分类是经济学中对经济活动的划分方式,起源于20世纪30年代经济学家费希尔和克拉克的理论。以下是具体说明: 第一产业(Primary Sector) 定义:直接利用自然资源进行生产活动的行业。 核心领域&…...
Spring 面试题
Autowired和Resource两个注解的区别 Autowired: 是Spring框架的注解,用于依赖注入。 默认按照类型(byType)注入,如果存在多个相同类型的Bean,则会报错。 可以通过Qualifier指定具体的Bean名称。 如果没有匹…...
Linux设备驱动开发-SPI驱动开发详解(包含设备树处理详细过程)
基础知识及 SPI 相关结构体介绍 引脚:MISO(master 输入,slave 输出),MOSI(master 输出,slave 输入),片选引脚,SCK(时钟) 控制寄存器&…...
物联网平台建设方案一
系统概述 构建物联网全域支撑服务能力,为实现学院涵盖物联网设备的全面感知、全域互联、全程智控、全域数字基底、全过程统筹管理奠定基础,为打造智能化提供坚实后台基石。 物联网平台向下接入各种传感器、终端和网关,向上通过开放的实施分…...
java23种设计模式-桥接模式
桥接模式(Bridge Pattern)学习笔记 🌟 定义 桥接模式属于结构型设计模式,将抽象部分与实现部分分离,使它们可以独立变化。通过组合代替继承的方式,解决多维度的扩展问题,防止类爆炸。 &#x…...
springboot实现文件上传到华为云的obs
一、前言 有时在项目中需要使用一些存储系统来存储文件,那么当项目要接入obs作为存储系统时,就会利用obs来进行文件的上传下载,具体实现如下。 二、如何通过obs实现文件的上传下载? 1.添加相关的obs的maven依赖。 <dependency…...
【红队利器】单文件一键结束火绒6.0
关于我们 4SecNet 团队专注于网络安全攻防研究,目前团队成员分布在国内多家顶级安全厂商的核心部门,包括安全研究领域、攻防实验室等,汇聚了行业内的顶尖技术力量。团队在病毒木马逆向分析、APT 追踪、破解技术、漏洞分析、红队工具开发等多个…...
DeepSeek 助力 Vue 开发:打造丝滑的滚动动画(Scroll Animations)
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
Compose 动画,让页面动起来
Compose 动画,让页面动起来 概述高级别动画APIAnimatedVisibilityMutableTransitionStateModifier.animateEnterExit自定义Enter/Exit动画 AnimatedContentContentTransform自定义动画SizeTranstion定义大小动画定义子元素动画自定义Enter/Exit动画 CrossfadeModifi…...
Windows CMD 命令大全(Complete List of Windows CMD Commands)
Windows CMD 命令大全: Windows CMD 是 Windows 系统内置的命令行工具,用于执行各种命令和管理任务。 称为Command Prompt。它提供了一个通过键入命令来与计算机系统进行交互的方式,类似于早期的DOS操作系统。以下是 CMD 的基础知识和常用命…...
DeepSeek在MATLAB上的部署与应用
在科技飞速发展的当下,人工智能与编程语言的融合不断拓展着创新边界。DeepSeek作为一款备受瞩目的大语言模型,其在自然语言处理领域展现出强大的能力。而MATLAB,作为科学计算和工程领域广泛应用的专业软件,拥有丰富的工具包和高效…...
IP代理在网络数据挖掘中的关键作用(AI大模型数据采集版)
在当今人工智能飞速发展的时代,AI大模型的训练需要海量且多样化的数据。然而,在数据采集过程中,常常面临诸多挑战,而IP代理在其中发挥着至关重要的作用。 数据采集的多样性是影响AI大模型性能的关键因素。如果数据来源单一&#x…...
pandas数据的导出
数据导出 将数据导出到CSV文件 数据对象.to_csv(filepath,sep"",indexFalse,encoding)参数1:文件的路径参数2:分隔符,默认是 ,参数3:是否保留索引 默认 Ture参数4:文件编码代码 : # 将数据导出到CSV # 引用 pandas import pandas as pd # 定…...
Claude-3.7-Sonnet:Cursor 的新引擎,解锁编码与推理的未来
引言 claude-3.7-sonnet 是 Anthropic 最新发布的大型语言模型,于 2025 年 2 月 24 日推出,并已集成到 Cursor AI 平台中。Cursor 是一个 AI 驱动的集成开发环境(IDE),旨在通过 AI 增强开发者的生产力。claude-3.7-so…...
JavaScript函数-函数的两种声明方式
在JavaScript中,函数是构建复杂逻辑和实现代码重用的基本单元。了解如何正确地定义和使用函数对于任何JavaScript开发者来说都是至关重要的。本文将详细介绍JavaScript函数的两种主要声明方式:函数声明(Function Declaration)和函…...
微服务即时通信系统---(六)语音识别子服务
目录 功能设计 模块划分 业务接口/功能示意图 服务实现流程思想 服务代码实现 编写proto文件 服务端创建子类(SpeechRecognitionServiceImpl)完成RPC服务调用函数重写 SpeechRecognize(语音识别) 服务端完成语音识别子服务类(SpeechRecognitionServer) 注意 …...
【Java 8】Lambda表达式介绍
目录 1、Lambda简介 2、语法介绍 3、Lambda表达式示例 3.1、无参数的 Lambda 表达式 3.2、单个参数的 Lambda 表达式 3.3、多个参数的 Lambda 表达式 3.4、带语句块的 Lambda 表达式 4、Lambda使用场景 4.1、替代匿名内部类 4.2、集合操作 4.3、排序 4.4、函数式接口…...
2011-2019年各省电视节目综合人口覆盖率数据
2011-2019年各省电视节目综合人口覆盖率数据 1、时间:2011-2019年 2、来源:国家统计局、统计年鉴 3、指标:行政区划代码、地区、年份、电视节目综合人口覆盖率(%) 4、范围:31省 5、指标解释:电视节目综合人口覆盖…...
便捷高效的免费 PDF 文件处理帮手
软件介绍 今天要给大家推荐一款超实用的 PDF 工具箱。它的优势十分突出,完全免费且没有任何使用限制。 安装起来毫不费力,下载完成后,直接打开就能使用。软件界面简洁大方,操作便捷顺手。其核心功能涵盖三大板块:一…...
DeepSeek引领目标检测新趋势:如何通过知识蒸馏优化模型性能
目录 一、知识蒸馏是什么? 二、知识蒸馏在目标检测中的重要性 提升实时性 跨任务迁移学习 三、如何使用知识蒸馏优化目标检测? 训练教师模型 生成软标签 训练学生模型 调节温度参数 多教师蒸馏(可选) 四、案例分享 定…...
“深入解析 SQL Server 子查询:从基础到应用”
目录 引言什么是子查询? 子查询的定义子查询的类型 子查询的使用 标量子查询多行子查询多列子查询相关子查询 子查询的性能优化子查询的实际案例总结 引言 在 SQL Server 中,子查询是一种强大的工具,允许我们在一个查询中嵌套另一个查询&am…...
375_C++_cloud手机推送,添加人脸告警信息到任务队列中,UploadAlarmPush是典型的工厂模式应用,为什么使用工厂模式完成这部分代码
一:AlarmFaceInfo的应用 让我帮你解析这个lambda表达式的实现: // ...................... .h ...........................// struct RsMsgPushTask_S : public Task{AlarmType_E mainAlarmType;unsigned int subAlarmType;DateTime alarmTime...
Vue进阶之AI智能助手项目(二)——项目评审与架构设计
AI智能助手项目 基于Vue的最佳实践main.tsApp.vue主应用给子应用下发功能语言language,theme设置及appStore状态管理状态管理router路由index.tspermission.ts基于Vue的最佳实践 src目录概览 api 接口,基于接口可以做 状态处理,interceptorassets/public 静态资源component…...
LambdaQueryWrapper在Mybatis-plus中的应用
LambdaQueryWrapper 是 MyBatis-Plus 中非常强大的工具,用于构建类型安全的查询条件。它利用 Java 的 Lambda 表达式,使得查询条件的编写更加简洁和直观。 public R getAppArticleCategoryPage(ParameterObject Page page,ParameterObject AppArticleCa…...
DeepSeek AI人工智能该如何学习?
人工智能(Artificial Intelligence, AI)是当今科技领域的热门话题,它涵盖了机器学习、深度学习、自然语言处理、计算机视觉等多个子领域。 作为中国科技发展的核心方向之一,AI在国家战略规划中占据了重要地位,特别是在…...
element ui的select选择框
我们首先先试一下,这个东西怎么玩的 <el-select v-model"select" change"changeSelect"><el-option value"香蕉"></el-option><el-option value"菠萝"></el-option><el-option value&quo…...