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

【OS基础】符合AUTOSAR标准的RTAOS-Alarms详解

目录

前言

正文

7.报警Alarms

7.1配置Alarms

7.1.1激活一个任务

7.1.2 设置一个事件

7.1.3报警回调Alarm Callback

7.1.4 增加计数器值

7.2设置Alarms

7.2.1 绝对Alarms

7.2.2 相对Alarm

7.3自启动Alarms

7.4 删除Alarms

7.5确认何时会发生Alarm

7.6非周期Alarms

7.7 小结


前言

本系列文章将以RTA-OS为例详细介绍AUTOSAR OS标准及概念,并分享实际使用的一些案例,本文为符合AUTOSAR标准的RTA-OS--Alarm介绍。

OS相关文章

4.1 【OS基础】符合AUTOSAR标准的RTA-OS-功能简介

4.2 【OS基础】符合AUTOSAR标准的RTA-OS-Task详解

4.3 【OS基础】符合AUTOSAR标准的RTA-OS-Interrupts详解

4.4 【OS基础】符合AUTOSAR标准的RTA-OS-Resources详解

4.5 【OS基础】符合AUTOSAR标准的RTA-OS-Event详解

4.6 【OS基础】符合AUTOSAR标准的RTA-OS-Counters详解

2.1 【OS】AUTOSAR架构下的OS错误处理

2.2 【OS】AUTOSAR架构下QM Application如何访问ASIL Application

2.3 【OS】AUTOSAR架构下多核启动

2.4 【OS】AUTOSAR架构下多核Shutdown

2.5 【OS】AUTOSAR架构下多核通信

2.6 【OS】RH850U2A芯片平台Spinlock的底层实现

2.7 【OS】AUTOSAR架构下MCAL Modules软件分区问题分析

2.8 【OS】AUTOSAR架构下的中断和异常向量表

2.9 【OS】AUTOSAR Os是如何启动第一个Task的

2.10 【OS】AUTOSAR OS系统调用产生Trap的过程详解

2.11 【OS】AUTOSAR OS如何实现Task抢占

2.12 【OS】AUTOSAR OS调度器实现原理


注:本文章引用了一些第三方工具和文档,若有侵权,请联系作者删除!

正文

7.报警Alarms

可以使用ISR构建以不同速率激活任务的系统。然而,对于复杂的系统,这可能会变得低效和不切实际。警报器(Alarms)提供了一种更方便、更便携的调度系统方式。

该报警机构由以下两部分组成:

1.一个计数器counter.

2.一个或多个报警器连接到计数器上。

报警(Alarm)指定在达到特定计数器值时要执行的操作。系统中的每个计数器都可以附加任意数量的报警(Alarm)。

当计数器的值等于附加到计数器的警报的值时,就说警报已经过期。在到期时,RTA-OS将执行与告警相关联的操作。该操作可以是激活任务(OsAlarmActiveTask)、执行警报回调例程(OsAlarmCallback)、设置事件(OsAlarmSetEvent)或增加计数器值(OsAlarmIncrementCounter)。

报警到期值可以相对于实际计数器值或定义为绝对值。如果报警失效定义为相对于实际计数器,则称为相对报警(Relative alarm)。如果将其定义为绝对值,则称为绝对警报(Absolute Alarm)。

警报可以配置为过期一次。一旦过期的警报被称为单次警报(Single-shot Alarm)。

还可以将警报指定为定期过期。这种类型的警报被称为循环警报(cyclic alarm)。您可以在第7.2节中找到更多关于循环警报的信息。

7.1配置Alarms

一个Alarm需要配置三个配置项:

1.名字 - 系统中的每个报警都需要分配一个唯一的名称。对于其他操作系统对象,这是将代码中在运行时引用警报的名称。

2.关联的计数器counter - 报警在配置时静态绑定到计数器。警报的任何设置都是根据相关计数器的滴答(ticks)数来完成的。

3.报警到期后的动作。

创建的每个报警最多包含4个动作:

1.激活一个任务

Figure 7.1: Activating a Task with an Alarm

2.触发一个事件(event)。

3.执行一个callback函数。

4.增加一个计数器(counter)的值。

如果需要激活多个任务、设置多个事件、进行多个回调或在到期时增加多个计数器,则需要具有相同到期值的多个警报。(调度表提供了一种替代机制,允许同时激活多个任务和/或设置多个事件。后面将在在调度表章节中阅读关于调度表的内容)。

7.1.1激活一个任务

警报最常见的动作是激活一个任务。这是构建具有定期激活任务的系统的基础——可以为每个任务创建一个警报,然后通过软件代码将警报设置为在所需的时间段内发生。图7.1显示了如何配置告警以激活任务。

7.1.2 设置一个事件

报警可以为指定的任务设置一个事件。当事件设置为警报时,它具有与使用SetEvent() API调用设置时相同的属性。这意味着用户需要同时指定事件和要为其设置事件的任务。图7.2显示了如何为告警设置事件操作。

Figure 7.2: Setting an Event for a Task with an Alarm

7.1.3报警回调Alarm Callback

每个报警都可以有一个关联的回调函数。回调只是一个C函数,在告警到期时被调用。

集成指导:根据AUTOSAR操作系统标准,报警回调只允许在可伸缩性级别1(Scalability Class 1)中进行。这是因为这些回调在操作系统级别上运行,因此可能会干扰定时保护,并在内存保护方案中出现一个漏洞。

Portability Note: RTA-OS允许放松这个限制,允许在General➔Optimizations➔RTA-OS中使用配置选项在所有可伸缩性类中允许警报回调。

图7.3显示了如何为报警配置回调函数。

Figure 7.3: Configuring a Callback Routine for an Alarm

每个回调函数都必须使用ALARMCALLBACK() 宏来编写,如示例7.1所示。

ALARMCALLBACK(UserProvidedAlarmCallback) {
/* Callback code. */
}

集成指导:回调例程在操作系统级别运行,这意味着2类中断被禁用。因此,应该是尽可能保持回调例程的精简,以最小化任务和ISR在运行时遭受的阻塞量。

用户可以在回调中进行的唯一使用的RTA-OS API调用是SuspendAllInterrupts() and ResumeAllInterrupts().

7.1.4 增加计数器值

警报增加软件计数器允许您从单个ISR级联多个计数器。由Alarm驱动(Ticked)的计数器Counter继承了警报的周期。所以,如果你有一个每5毫秒发生一次的警报,你可以使用警报来驱动一个秒级的Counter, 这个Counter的一个tick是5ms. 图7.4显示了在RTA-OS中是如何配置的。

Figure 7.4: Cascading counter increments from an alarm

示例7.2显示了如何从中断中驱动1毫秒计数器。在1毫秒计数器上注册的每五次中断将导致告警过期,并增加级联计数器5秒:

#include <Os.h>
ISR(MillisecondInterrupt){CLEAR_PENDING_INTERRUPT();Os_IncrementCounter(Counter1ms);
/* Every 5th call internally performs Os_IncrementCounter(Counter5ms) */
}

Example 7.2: Cascading Counters

级联计数器的滴答率(tick rate)必须是驱动报警的计数器的整数倍。用户可以使用多级级别的级联来配置系统。但是,如果您试在级联中配置一个循环系统或尝试增加硬件计数器,RTA-OS将生成错误。

集成指导:级联计数器的定时特性是相对于级联中第一个计数器的定时特性来定义的。因此,级联中最早的计数器决定了定义所有其他计数器的基本滴答率。如果您更改了最早计数器的标记率,则应用程序的整个计时行为将相应地缩放。

7.2设置Alarms

OS提供两个API用来设置Alarms:

SetAbsAlarm(AlarmID, start, cycle);

将报警设置为在计数器值下次到达时开始时失效。如果底层计数器在调用SetAbsAlarm时已经开始,那么在本次计数器周期内不会发生警报。

SetRelAlarm(AlarmID, increment, cycle);

增量式Alarm,即设置该Alarm后计数满足就执行该Alarm.

在这两个API调用中,周期值设置为0表示警报是单次触发警报,这意味着它在被取消之前只会过期一次。循环值大于零定义循环报警。这意味着在第一次到期后,它将继续使每个周期过期。设置非零周期值可以轻松地配置具有周期变化周期的周期性警报。

参数选着

如果被激活的任务是BCC1或ECC1/2,则将不会有排队的激活。这意味着,如果开始值或增量值非常短,或者开始值非常接近当前的计数器值,那么这可能会导致不希望产生的副作用。当先前激活的实例仍在执行时,警报将尝试激活该任务。激活将会丢失,并将引发一个E_OS_LIMIT错误。必须确保有足够的时间完成任务,然后才能导致任务重新触发任务。

7.2.1 绝对Alarms

单次触发

绝对报警指定报警失效的底层计数器的绝对值。单次触发绝对警报用于监控预定义的阈值非常有用——警报可以配置为在超过阈值时过期。用户可能希望计算在运行时获取的数据采样中发生的错误数量,然后在错误数量达到危险级别时触发恢复操作。这一点如示例7.3所示。

/* Expire when counter value reaches 42. */
SetAbsAlarm(DangerLevelReached, 42, 0);

Example 7.3: Absolute single shot alarm

示例7.3如图7.5所示。

Figure 7.5: Illustration of an Absolute Single Shot Alarm

当我们需要设置一个超时,然后等待一个固定的超时时间,然后在超时发生时采取动作时,单次触发报警很有用。

循环触发

如果绝对告报警指定了一个非零周期值,则它将首先在指定的起始点终止,然后在此后的每个周期终止。这一点如示例7.4所示。

Figure 7.6: Illustration of the Absolute Cyclic Alarm

/* Expire when counter value reaches 10 and then every 20 ticks thereafter
*/
SetAbsAlarm(Alarm1, 10, 20);

Example 7.4: Absolute cyclic alarm

对于绝对告警,零刻度的绝对起始值与任何其他值相同——这意味着当计数器达到零值时告警失效。

例如,如果当前计数器值为零,则将不会看到警报过期,直到计数器值的最大值+1数量发生。另一方面,如果计数器的值已经处于最大等值,那么就会看到警报在计数器的下一个tick上过期。

设置Alarm为过去值

设置为过去式Alarm时,需要等待MAXALLOWEDVALUE+1个Tick后才能到期。

注意:一个常见的错误是设置绝对Alarm在OS 起动后Counter为0时发生,这样的Alarm不会发生,因为0已经是过去发生的。

Figure 7.7: Setting an alarm in the past

将绝对循环Alarm同步到计数器包装

将Alarm设置为在已知的同步点定期发生对于实时系统非常重要。但是,在AUTOSAR操作系统中,不可能将绝对Alarm设置为每次基线计数器环绕时定期发生。

如果需要此类功能,则必须提供每次Alarm过期时重置绝对单次Alarm的代码。例如,如果Task1连接到Alarm1,则Task1的主体将需要在激活任务时重置Alarm,如下示例所示。

TASK(Task1) {/* Single-shot alarm reset at top dead center = 0 = 360 degrees. */SetAbsAlarm(Alarm1, 0, 0);/* User code. */TerminateTask();
}

Example 7.5: Resetting an Alarm when a Task is Activated

7.2.2 相对Alarm

单次触发

相对报警指定报警失效的底层计数器的绝对值。当用户想在运行时超时某些活动时,单次触发相对报警很有用。例如,用户可能希望等待一个外部事件,然后在该事件未发生时激活该任务。

Figure 7.8: Illustration of a Relative Single Shot Alarm

示例7.6显示了如何设置绝对单枪报警。

/* Timeout 42 ticks from now */
SetRelAlarm(Timeout, 42, 0);

Example 7.6: Relative single shot alarm

当用户需要设置一个超时,等待一个固定的超时时间,然后在超时发生时采取行动时,单次触发报警我们很有用。

在AUTOSAR操作系统中,禁止在SetRelAlarm()中使用零作为增量。如果您使用零作为增量,则将返回一个E_OS_VALUE错误。

循环触发

示例7.7显示了一个相对警报,在10次响后响一次,然后每20次响一次。

/* Expire after 10 ticks, then every 20 ticks. */
SetRelAlarm(Alarm1, 10, 20);

Example 7.7: Relative cyclic alarm

在图7.9中,可以看到如何可视化此报警。

Figure 7.9: Illustration of a Relative Cyclic Alarm

7.3自启动Alarms

虽然可通过在主函数中调用SetRelAlarm() 或 SetAbsAlarm() API来起动Alarm,但最简单的调用周期Alarms方式是在STARTOS()后自启动Alarm。

自启动Alarm需声明其为绝对还是相对Alarm,counter及周期值。

Figure 7.10: Auto-starting Alarms

RTA-OS确保软件计数器在StartOS()期间初始化为零(硬件计数器将设置为您自己的应用程序初始化代码配置的值)。因此,如果对绝对Alarm使用零刻度开始时间,则必须小心,因为在Alarm启动时,零刻度已经发生。虽然Alarm将启动,但在相关计数器变为零之前,Alarm不会过期。在一个16位计数器上,每毫秒Tick增加一次,你需要等待超过65秒,然后在一个32位计数器上等待不到48天。指定Alarm在第一次(或以后)勾选时开始表示初始到期将在计数器的下一次勾选时发生。如果需要Alarm彼此同步(即Alarm之间的相对过期时间必须间隔预先设定的刻度数),则自动启动绝对Alarm非常有用。

7.4 删除Alarms

可以通过调用CancelAlarm() API来删除Alarm,例如,可能需要取消Alarm以停止正在执行的特定任务。可以使用SetAbsAlarm()或SetRelAlarm() API调用重新启动Alarm。

7.5确认何时会发生Alarm

当用户需要确认Alarm何时会发生,如对于绝对Alarm,为了避免已经达到的值被设置时可以通过调用Get Alarm() API获取。该调用返回指定Alarm到期前剩余的Tick数。如果未设置Alarm,则API调用将返回值E_OS_NOFUNC,到期的刻度数未定义。建议在使用结果之前检查调用的返回值。示例7.8显示了API调用的使用情况。

TickType TimeToExpiry;TickType SafetyMargin = 100;StatusType IsValid;IsValid = GetAlarm(Alarm1, &TimeToExpiry);if (IsValid != E_OS_NOFUNC) {    if (TimeToExpiry <= SafetyMargin) {      Log(InsideSafetyMargin);  }}

Example 7.8: Getting the time to expiry

在根据调用返回的Tick值出运行时决策时,尤其是在底层计数器具有高分辨率的情况下,应特别小心。与使用GetCounterValue() 读取计数器值一样,在获取该值和使用该值进行计算之间可能会发生抢占。这意味着可能会读取(很长)到期时间,但随后会被抢占,以便在Alarm到期前不久(甚至在Alarm到期后)恢复。

7.6非周期Alarms

周期报警只对循环行为有用。在许多系统中,例如那些需要定期执行任务来轮询数据源的系统中,这是非常理想的。但是,用户可能需要对在运行时需要更改的系统进行编程。例如,正在计算一个发动机轴转速,并使用它来编程火花或喷射定时的持续时间。

需要使用单次触发警报对具有警报的非周期行为进行编程,并由激活的任务设置为下一个到期值。

在示例7.9中,一个任务每毫秒运行一次,并轮询一个记录曲轴旋转度的计数器。该任务将计算曲柄的位置和速度。速度用于确定火花定时的持续时间。火花启动,警报设置为在SparkTiming ticks到期后。

TASK(MillisecondTask) {...GetElapsedCounterValue(ShaftEncoder,&Position,&DegreesRotation);RevsPerMinute = (DegreesRotation/360) * 1000 * 60;SparkTiming = Lookup(RevsPerMinute);if (Position == 90) {StartSpark();SetRelAlarm(TimeCounter, SparkTiming, 0); /* Activates SparkOff onexpiry */ }
}
...
TerminateTask()
}
​
TASK(SparkOff){StopSpark();TerminateTask();
}
Example 7.9: Aperiodic Alarm Example

7.7 

  • Alarms是基于counter设置的,同一个Counter可设置多个Alarms;

  • 每个Alarm执行的操作可能为:执行某个Task、设置个Event、执行某回调函数或增加一个计数器;

  • Alarm可设置绝对或相对counter值;

  • Alarm可配置为自启动模式。

  • 实际应用中一般采用调度表来调度,Alarms应用相对比较少。

参考文档:

[1] RTA-OS V6.1.3 User Guide

[2] Specification of Operating System AUTOSAR Release 4.2.2

相关文章:

【OS基础】符合AUTOSAR标准的RTAOS-Alarms详解

目录 前言 正文 7.报警Alarms 7.1配置Alarms 7.1.1激活一个任务 7.1.2 设置一个事件 7.1.3报警回调Alarm Callback 7.1.4 增加计数器值 7.2设置Alarms 7.2.1 绝对Alarms 7.2.2 相对Alarm 7.3自启动Alarms 7.4 删除Alarms 7.5确认何时会发生Alarm 7.6非周期Alarm…...

基于Java的学生成绩管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;B/S结构 工具&#xff1a;MyEclipse&#xff0c;MySQL 系统展示 首页 个人中…...

都2024年了,还有人不懂动态代理么?

文章目录 一、定义二、静态代理三、动态代理1. JDK代理1.1 JDK代理实现流程1.2 动态生成的类字节码 2. Cglib代理2.1 Cglib实现流程 四、总结 一、定义 静态代理和动态代理都反映了一个代理模式&#xff0c;代理模式是一种经典的设计模式&#xff0c;常用于为其他对象提供一种…...

ARM功耗管理框架之PPU

安全之安全(security)博客目录导读 思考&#xff1a;功耗管理框架&#xff1f;SCP&#xff1f;PPU&#xff1f;LPI&#xff1f;之间的关系&#xff1f;如何配合&#xff1f; 目录 一、功耗管理框架中的PPU 二、PPU的结构与连接关系 三、PPU操作模式和电源模式及其之间的转…...

说说 SSL 的错误认识和不足之处

最近明月在学习折腾 LNMP 期间无意中建了一个 Typecho 的博客小站&#xff0c;近一周的折腾下来&#xff0c;收获真的不少&#xff0c;致使兴趣也越来越浓了&#xff0c;在升级 LNMP 的时候捎带手的给这个 Typecho 博客也启用了 SSL。并且开启了 memcached 和 OPcache 优化加速…...

Go语言day1

下载go语言的安装程序&#xff1a; All releases - The Go Programming Language 配置go语言的环境变量&#xff1a; 写第一个go语言 在E:\go_workspace当前窗口使用cmd命令: 输入 go run test.go...

【Python机器学习】利用t-SNE进行流形学习

虽然PCA通常是用于变换数据的首选方法&#xff0c;使你能够用散点图将其可视化&#xff0c;但这一方法的性质限制了其有效性。 有一类用于可视化的算法叫做流形学习算法&#xff0c;它允许进行更复杂的映射&#xff0c;通常也可以给出更好的可视化。其中特别有用的一个就是t-S…...

03 - matlab m_map地学绘图工具基础函数 - 设置坐标系(m_coord)

03 - matlab m_map地学绘图工具基础函数 - 设置坐标系&#xff08;m_coord&#xff09; 0. 引言1. m_proj使用方法2. 结语 0. 引言 上一篇介绍了m_proj函数用于初始化投影&#xff0c;本篇介绍的函数m_coord用于初始化地理坐标系或地磁坐标系&#xff0c;地理/地磁坐标系和投影…...

UEC++ 虚幻5第三人称射击游戏(一)

UEC 虚幻5第三人称射击游戏&#xff08;一&#xff09; 创建一个空白的C工程 人物角色基本移动 创建一个Character类添加一些虚幻商城中的基础动画 给角色类添加Camera与SPringArm组件 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category "SpringArm")clas…...

java小代码(1)

代码 &#xff1a; 今日总结到此结束&#xff0c;拜拜&#xff01;...

SLAM ORB-SLAM2(27)词袋模型

SLAM ORB-SLAM2(27)词袋模型 1. 词袋模型1.1. 词汇树1.2. 逆向索引表1.3. 逆向索引表2. 词袋向量3. 匹配候选帧3.1. 找出和当前帧具有公共单词的所有关键帧3.2. 找出和当前帧最多公共单词的关键帧3.3. 剔除共享单词数较少的关键帧3.4. 计算关键帧的共视关键帧组的总得分3.5. …...

OpenAI 的 GPT-5:CTO米拉-穆拉提说,到 2026 年将实现博士级智能(Ph.D.-Level))

据首席技术官米拉-穆拉提&#xff08;Mira Murati&#xff09;介绍&#xff0c;GPT-5 是 OpenAI 人工智能的下一代进化产品&#xff0c;将于 2025 年底或 2026 年初在特定任务中实现博士级智能。 GPT-5 内部代号为 "Gobi "和 “Arrakis”&#xff0c;将是一个多模态…...

macbook配置adb环境和用adb操作安卓手机

&#xff08;参考&#xff1a;ADB工具包的安装与使用_adb工具箱-CSDN博客&#xff09; 第一步&#xff1a;从Android开发者网站下载Android SDK&#xff08;软件开发工具包&#xff09;。下载地址为&#xff1a; 第二步&#xff1a;解压下载的SDK压缩文件到某个目录中。 进入解…...

微软TTS最新模型,发布9种更真实的AI语音

很高兴与大家分享 Azure AI 语音翻译产品套件的两个重大更新&#xff1a; 视频翻译和增强的实时语音翻译 API。 视频翻译&#xff08;批量&#xff09; 今天&#xff0c;我们宣布推出视频翻译预览版&#xff0c;这是一项突破性的服务&#xff0c;旨在改变企业本地化视频内容…...

python爬虫 -爬取 json 格式数据

在Python中&#xff0c;爬取JSON格式的数据通常涉及到发送 HTTP请求到某个URL&#xff0c;并解析返回的JSON数据。以下是一个简单的示例&#xff0c;说明如何使用Python的requests库来爬取JSON格式的数据&#xff1a; 1. 首先&#xff0c;确保你已经安装了requests库。如果没…...

Pytorch(5)-----梯度计算

一、问题 如何使用Pytorch计算样本张量的基本梯度呢&#xff1f;考虑一个样本数据集&#xff0c;且有两个展示变量&#xff0c;在给定初始权重的基础上&#xff0c;如何在每次迭代中计算梯度呢&#xff1f; 二、如何运行 假设有x_data 和 y_data 列表&#xff0c;计算两个列表需…...

C#的膨胀之路:创新还是灭亡

开篇概述 C#&#xff0c;这门由微软推出的编程语言&#xff0c;自2000年诞生以来&#xff0c;以其简洁的语法、强大的功能和广泛的应用场景&#xff0c;赢得了我等程序员的热爱。它在.NET框架的加持下&#xff0c;展现出无与伦比的开发效率和性能。然而&#xff0c;随着时间的流…...

SpringBoot 过滤器和拦截器的区别

SpringBoot 过滤器和拦截器的区别 Spring拦截器&#xff08;Interceptor&#xff09;和过滤器&#xff08;Filter&#xff09;是Spring框架中用于处理请求的两种机制&#xff0c;虽然它们都可以在请求处理的不同阶段进行拦截和处理&#xff0c;但它们的工作原理和应用场景有所…...

协程执行顺序引发的问题

引言 在Golang中&#xff0c;因为协程执行的顺序是不固定的&#xff0c;如果不在代码里进行控制&#xff0c;可能就会导致预期外的输出。 本文通过分析一段代码的执行来介绍这种情况&#xff0c;以及可行的控制协程执行顺序的方法&#xff1a; sleep()waitGroup 实例分析 代…...

android webview调用js滚动到指定位置

一、activity import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import com.tencent.smtt.sdk.WebView import com.tencent.smtt.sdk.WebViewClientclass MainActivity : AppCompatActivity() {private lateinit var webView: WebViewoverride fun …...

WPF 深入理解一、基础知识介绍

基础知识 本系列文章是对个人 B站 up 微软系列技术教程 记录 视频地址 https://www.bilibili.com/video/BV1HC4y1b76v/?spm_id_from333.999.0.0&vd_source0748f94a553c71a2b0125078697617e3 winform 与 wpf 异同 1.winform 项目结构 编辑主要是在 Form1.cs(页面)&#…...

腾讯云点播ugc upload | lack signature 问题处理

我犯一个很傻的错误 参考腾讯云官方文档&#xff1a;云点播 Web 端上传 SDK-开发指南-文档中心-腾讯云 进行开发&#xff0c;但是却报错了&#xff0c;始终找不到问题&#xff0c;错误提示&#xff1a;ugc upload | lack signature&#xff0c;意思是缺少签名或者签名失败&…...

计算机视觉实验二:基于支持向量机和随机森林的分类(Part one: 编程实现基于支持向量机的人脸识别分类 )

目录 一、实验内容 二、实验目的 三、实验步骤 四、实验结果截图 五、实验完整代码 六、报错及解决方案 PS:实验的运行速度受电脑性能影响,如遇运行卡顿请耐心等待。 一、实验内容 编程实现基于支持向量机的人脸识别分类,基本功能包括:Labeled Faces in th…...

5.什么是C语言

什么是 C 语言? C语言是一种用于和计算机交流的高级语言, 它既具有高级语言的特点&#xff0c;又具有汇编语言的特点 非常接近自然语言程序的执行效率非常高 C语言是所有编程语言中的经典&#xff0c;很多高级语言都是从C语言中衍生出来的&#xff0c; 例如:C、C#、Object-C、…...

DINO-DETR

DINO-DETR DETR收敛慢的问题1. Contrastive DeNoising Training(对比方法降噪训练)2. Mixed Query Selection(混合查询选择方法对锚点进行初始化)3. Look Forward Twice(两次前向方法)==DINO模型的传播过程,以及部分模块的改进==DETR收敛慢的问题 PnP-DETR(ICCV 2021) 改进了…...

Representation RL:HarmonyDream: Task Harmonization Inside World Models

ICML2024 paper code Intro 基于状态表征的model-based强化学习方法一般需要学习状态转移模型以及奖励模型。现有方法都是将二者联合训练但普遍缺乏对如何平衡二者之间的比重进行研究。本文提出的HarmonyDream便是通过自动调整损失系数来维持任务间的和谐&#xff0c;即在世界…...

Centos7系统下Docker的安装与配置

文章目录 前言下载Docker安装yum库安装Docker启动和校验配置Docker镜像加速卸载Docker 前言 此博客的内容的为自己的学习笔记&#xff0c;如果需要更具体的内容&#xff0c;可查看Docker官网文档内容 注意&#xff1a;以下命令在root管理员用户下运行&#xff0c;如果在普通用…...

无人机校企合作

有没有想过&#xff0c;无人机和校企合作能碰撞出怎样的火花&#xff1f;&#x1f525;今天就来给大家揭秘一下这个神秘组合&#xff01; 无人机&#xff0c;作为现代科技的代表&#xff0c;已经渗透到我们生活的方方面面。而校企合作&#xff0c;更是推动科技创新、培养人才的…...

八爪鱼现金流-028,个人网站访问数据统计分析,解决方案

个人网站访问数据统计分析&#xff0c;解决方案 调研 结论&#xff1a;使用百度统计 步骤 1.注册百度统计 2.获取安装代码 3.在项目中&#xff0c;页面代码添加如下片段 <script>var _hmt _hmt || [];(function() {var hm document.createElement("script&…...

大厂面试官问我:布隆过滤器有不能扩容和删除的缺陷,有没有可以替代的数据结构呢?【后端八股文二:布隆过滤器八股文合集】

往期内容&#xff1a; 面试官问我&#xff1a;Redis处理点赞&#xff0c;如果瞬时涌入大量用户点赞&#xff08;千万级&#xff09;&#xff0c;应当如何进行处理&#xff1f;【后端八股文&#xff08;1&#xff09;】-CSDN博客 本文为【布隆过滤器八股文合集】初版&#xff0c…...

PHP米表域名出售管理源码带后台

源码介绍 html5米表源码PHP域名销售程序安装方法&#xff1a; 本站已测试,各项功能正常,功能易用,不复杂,非常适合个人米表使用 1、所有文件传至网站目录 2、浏览器执行http://你的访问网址/install 3、输入mysql帐号及密码信息&#xff0c;提交安装 源码截图 源码下载 …...

【开发12年码农教你】Android端简单易用的SPI框架-——-SPA

Service(priority 1) public class APrinterService implements IPrinterService { Override public void print() { System.out.println(“this is a printer service.”); } } 复制代码 B模块 —— BPrinterService Service(path“b_printer”, priority 2) public class…...

以太坊==MetaMask获取测试币最新网址

估算分数https://community.infura.io/t/unable-to-receive-sepolia-eth-from-faucet/7715 Gitcoin Passport 水龙头地址&#xff0c;填入自己的测试地址 水龙头项目地址 GitHub - pk910/PoWFaucet: Modularized faucet for EVM chains with different protection methods (…...

军用FPGA软件 Verilog语言的编码准测之触发器、锁存器

军用FPGA软件 Verilog语言的编码准测之触发器、锁存器 语言 &#xff1a;Verilg HDL EDA工具&#xff1a;ISE、Vivado、Quartus II 军用FPGA软件 Verilog语言的编码准测之触发器、锁存器一、引言二、基本编程规范之触发器强制准则1---禁止在同一个 always 语句中混合使用有复位…...

智能汽车 UI 风格独具魅力

智能汽车 UI 风格独具魅力...

javafx例子笔记

文章目录 创建过程javafx独立版报错 Exception in thread "WindowsNativeRunloopThread" java.lang.NoSuchMethodError: <init> javafx是java gui工具。 一般会转换为exe&#xff0c;成为可交互的应用。 那么来个简单的例子吧。 先说明一点&#xff0c;javafx不…...

【ajax基础】回调函数地狱

一&#xff1a;什么是回调函数地狱 在一个回调函数中嵌套另一个回调函数&#xff08;甚至一直嵌套下去&#xff09;&#xff0c;形成回调函数地狱 回调函数地狱存在问题&#xff1a; 可读性差异常捕获严重耦合性严重 // 1. 获取默认第一个省份的名字axios({url: http://hmaj…...

SparkSQL的分布式执行引擎-Thrift服务:学习总结(第七天)

系列文章目录 SparkSQL的分布式执行引擎 1、启动Thrift服务 2、beeline连接Thrift服务 3、开发工具连接Thrift服务 4、控制台编写SQL代码 文章目录 系列文章目录前言一、SparkSQL的分布式执行引擎(了解)1、启动Thrift服务2、beeline连接Thrift服务3、开发工具连接Thrift服务4、…...

联华集团:IT团队如何实现从成本中心提升至价值中心|OceanBase 《DB大咖说》(十)

OceanBase《DB大咖说》第 10 期&#xff0c;我们邀请到了联华集团的CTO楼杰&#xff0c;来分享他如何思考 IT 业务价值&#xff0c;以及联华华商数据库的升级实践。 楼杰从大学毕业后就进入了联华工作&#xff0c;并一直扎根在近 20 年的&#xff0c;从一名底层的技术员成长为…...

计算机系统基础实训五—CacheLab实验

实验目的与要求 1、让学生更好地应用程序性能的优化方法&#xff1b; 2、让学生更好地理解存储器层次结构在程序运行过程中所起的重要作用&#xff1b; 3、让学生更好地理解高速缓存对程序性能的影响&#xff1b; 实验原理与内容 本实验将帮助您了解缓存对C程序性能的影响…...

PHP框架之CodeIgniter框架

CodeIgniter框架详细说明 CodeIgniter是一个简单而强大的PHP框架&#xff0c;专为快速开发Web应用程序而设计。它遵循MVC&#xff08;模型-视图-控制器&#xff09;设计模式&#xff0c;为开发者提供了丰富的功能和灵活性&#xff0c;同时保持代码的轻量级和易于管理。CodeIgn…...

714. 买卖股票的最佳时机含手续费

714. 买卖股票的最佳时机含手续费 原题链接&#xff1a;完成情况&#xff1a;解题思路&#xff1a;ExplanationSummary 参考代码&#xff1a;_714买卖股票的最佳时机含手续费 错误经验吸取 原题链接&#xff1a; 714. 买卖股票的最佳时机含手续费 https://leetcode.cn/probl…...

Linux系统查看程序内存及CPU占用

文章目录 1.free命令2.top命令3.PS命令3.1 查看内存占用前10位&#xff1a;3.2 查看CPU占用前10位 参考文档 1.free命令 可以通过free命令查看物理内存占用情况 #单位KB free #单位MB free -m #单位GB free -h 2.top命令 输入top命令&#xff0c;会输出定时刷新的程序PID、内…...

数据结构7---图

一、定义 对于图的定义&#xff0c;我们需要明确几个注意的地方:一线性表中我们把数据元素叫元素&#xff0c;树中叫结点&#xff0c;在途中数据元素我们则称之为顶点(Vertex)。 对于图的定义&#xff0c;我们需要明确几个注意的地方: 线性表中我们把数据元素叫元素&#xf…...

Excel 如何复制单元格而不换行

1. 打开excle, sheet1右键单击>查看代码>插入>模块 输入代码 Sub CopyText() Updated by NirmalDim xAutoWrapper As ObjectSet xAutoWrapper New DataObject or GetObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")xAutoWrapper.SetText ActiveC…...

前端 CSS 经典:mix-blend-mode 属性

前言&#xff1a;这是一个混合属性&#xff0c;作用是将两个颜色混合生成一个新颜色。可以将视频和文字相融合&#xff0c;产生动态文字效果。 效果 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" />&l…...

OpenCV--滤波器(一)

低通滤波器 代码和笔记 代码和笔记 import cv2 import numpy as np""" 滤波器--用于图像处理的重要工具&#xff0c;它们可以根据图像中像素的邻域信息来修改像素值&#xff0c;以实现去噪、模糊、锐化、边缘检测等效果。低通滤波器&#xff08;Low-pass Filte…...

MK的前端精华笔记

文章目录 MK的前端精华笔记第一阶段&#xff1a;前端基础入门1、&#xff08;1&#xff09;、&#xff08;2&#xff09;、 2、3、4、5、6、7、 第二阶段&#xff1a;组件化与移动WebAPP开发1、&#xff08;1&#xff09;、&#xff08;2&#xff09;、 2、3、4、5、6、7、 第三…...

低代码平台框架:开源选型、实践与应用深度解析

文章目录 1.1 低代码平台的重要性与应用背景2.1 表单建模2.2 流程设计2.3 报表&#xff08;打印&#xff09;可视化2.4 代码生成器2.5 系统管理2.6 前端UI开源选型3.1 如何选择合适的开源框架3.2 市场上的主要开源低代码平台对比3.3 开源项目的技术栈与优缺点分析 5.1 成功案例…...

深度学习500问——Chapter12:网络搭建及训练(3)

文章目录 12.3.5 Caffe有哪些接口 12.4 网络搭建有什么原则 12.4.1 新手原则 12.4.2 深度优先原则 12.4.3 卷积核size一般为奇数 12.4.4 卷积核不是越大越好 12.5 有哪些经典的网络模型值得我们去学习的 12.6 网络训练有哪些技巧 12.6.1 合适的数据集 12.6.2 合适的预…...

2029年AI服务器出货量将突破450万台,AI推理服务器即将爆发式增长

在2020年&#xff0c;新冠疫情与远程办公模式的兴起推动了所有类型服务器的出货量达到峰值&#xff0c;随后几年里&#xff0c;除了AI服务器之外的所有类别都回归到了正常水平。 根据Omdia的研究数据&#xff0c;AI服务器的出货量在2020年急剧上升&#xff0c;并且至今未显示出…...

【每天学会一个渗透测试工具】SQLmap安装教程及使用

&#x1f31d;博客主页&#xff1a;泥菩萨 &#x1f496;专栏&#xff1a;Linux探索之旅 | 网络安全的神秘世界 | 专接本 | 每天学会一个渗透测试工具 ✨SQLmap简介 Sqlmap是一款开源的渗透测试工具 &#x1f680;下载及安装 下载地址&#xff1a;http://sqlmap.org/ windo…...

nacos开启鉴权后,springboot注册失败

1.确认Nacos版本 我的Nacos版本是1.4.2 2.确认Nacos相关依赖的版本之间兼容&#xff0c;一下是我的一些pom.xml依赖 <!--父级项目的--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifa…...

vue的ESLint 4格缩进 笔记

https://chatgpt.com/share/738c8560-5271-45c4-9de0-511fad862109 一&#xff0c;代码4格缩进设置 .eslintrc.js文件 module.exports { "rules": { "indent": ["error", 4] } }; 自动修复命令 npx eslint --fix "src/**/*.{…...

大模型与机器人精彩碰撞-7月5日晚上八点不见不散!

在瞬息万变的科技时代&#xff0c;新兴人工智能和机器人技术的结合正在引领新一轮的创新浪潮。你是否想成为未来科技的领航者&#xff1f;你是否想了解最前沿的AI与机器人技术&#xff1f;行麦科技重磅推出的“AIGC时代的生存法则”AI系列课&#xff0c;将为你揭开大模型与机器…...

信息安全体系架构设计

对信息系统的安全需求是任何单一安全技术都无法解决的&#xff0c;要设计一个信息安全体系架构&#xff0c;应当选择合适的安全体系结构模型。信息系统安全设计重点考虑两个方面&#xff1b;其一是系统安全保障体系&#xff1b;其二是信息安全体系架构。 1.系统安全保障体系 安…...

AT车型完赛!6个赛段冠军!北京汽车再创“环塔”里程碑

6月1日,第二十届中国环塔国际拉力赛圆满落下帷幕,北京汽车车队全员顺利完赛,在9个赛段中斩获了6个赛段冠军,彰显出“越野世家”的先锋实力。备受关注的是,全新BJ40再创里程碑,成为环塔历史上首个完赛的自动挡车型,同时还助力车圈红人陈震首次参赛即摘得SS9赛段“金头盔”…...

vscode:如何解决”检测到include错误,请更新includePath“

vscode:如何解决”检测到include错误&#xff0c;请更新includePath“ 前言解决办法1 获取includePath路径2 将includePath路径添加到指定文件3 保存 前言 配置vscode是出现如下错误&#xff1a; 解决办法 1 获取includePath路径 通过cmd打开终端&#xff0c;输入如下指令&a…...

JRT性能演示

演示视频 君生我未生&#xff0c;我生君已老&#xff0c;这里是java信创频道JRT&#xff0c;真信创-不糊弄。 基础架构决定上层建筑&#xff0c;和给有些品种的植物种植一样&#xff0c;品种不对&#xff0c;施肥浇水再多&#xff0c;也是不可能长成参天大树的。JRT吸收了各方…...

kotlin基础之协程

Kotlin协程&#xff08;Coroutines&#xff09;是Kotlin提供的一种轻量级的线程模型&#xff0c;它允许我们以非阻塞的方式编写异步代码&#xff0c;而无需使用回调、线程或复杂的并发API。协程是一种用户态的轻量级线程&#xff0c;它可以在需要时挂起和恢复&#xff0c;从而有…...

DETR整体模型结构解析

DETR流程 Backbone用卷积神经网络抽特征。最后通过一层1*1卷积转化到d_model维度fm&#xff08;B,d_model,HW&#xff09;。 position embedding建立跟fm维度相同的位置编码(B&#xff0c;d_model,HW&#xff09;。 Transformer Encoder,V为fm&#xff0c;K&#xff0c;Q为fm…...

普华永道调查:“拥抱AI”的行业正呈现出生产率激增景象

全球知名四大会计师事务所之一的普华永道最新报告显示&#xff0c;一些最有可能将人工智能技术融入业务的企业&#xff0c;其生产率增长速度几乎是其他行业的5倍&#xff0c;这有望推动整体经济。周二&#xff08;5月21日&#xff09;发布的报告称&#xff0c;2018年至2022年间…...