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

嵌入式系统实时任务调度算法优化与实现

嵌入式系统实时任务调度算法优化与实现

目录

嵌入式系统实时任务调度算法优化与实现

引言

1.1 嵌入式系统的重要性

1.2 实时任务调度的重要性

实时任务的定义与分类

2.1 实时任务的定义

2.2 实时任务的分类

2.3 实时任务的其他分类方法

硬实时与软实时系统

3.1 硬实时系统

3.2 软实时系统

3.3 对比分析

常见的实时任务调度算法

4.1 静态优先级调度算法

4.2 动态优先级调度算法

4.3 分析与比较

调度算法优化技术

5.1 优化目标

5.2 优化方法

5.3 优化案例

结论


引言

嵌入式系统和实时任务调度在现代电子设备和系统中发挥着至关重要的作用。嵌入式系统通过其高可靠性、低功耗和专用优化满足了特定应用的需求,而实时任务调度则通过确保任务的及时性和系统的确定性,保障了系统的高效运行和稳定性。理解和掌握这两方面的技术,对于设计和实现高性能的嵌入式系统至关重要。

1.1 嵌入式系统的重要性

嵌入式系统是指嵌入到其他设备中的计算系统,专门用于特定的控制任务,常见于各种电子设备中,如家用电器、汽车电子系统、医疗设备和工业控制系统。其重要性体现在以下几个方面:

(1)高可靠性和稳定性:通常用于关键任务环境中,需要提供高度的可靠性和稳定性,确保系统在各种条件下正常运行。

(2)实时性能:在许多应用中,嵌入式系统必须在严格的时间限制内完成任务。例如,汽车防抱死刹车系统(ABS)需要在毫秒级别响应,以确保驾驶安全。

(3)低功耗设计:通常运行在资源受限的环境中,需要高效的能耗管理,特别是电池供电的设备,如可穿戴设备和传感器节点。

(4)专用硬件与软件优化:对特定应用进行了硬件和软件的优化,以提供最佳的性能和最小的资源消耗。

1.2 实时任务调度的重要性

实时任务调度是嵌入式系统的核心技术之一,确保系统能够在规定的时间内响应和处理外部事件。其重要性体现在以下几个方面:

(1)任务的及时性:实时系统中的任务具有严格的时间约束,必须在特定时间内完成。例如,工业控制系统需要实时监控和控制生产线中的各种参数。

(2)系统的确定性:实时任务调度确保系统行为是可预测和可验证的,对于关键任务系统,如航空电子系统和医疗设备,确定性至关重要。

(3)资源的高效利用:通过优化调度算法,实时系统能够高效利用CPU、内存等资源,减少资源浪费,提高系统性能。

(4)任务的优先级管理:实时任务调度通过管理任务的优先级,确保关键任务优先得到处理,从而满足系统的实时性要求。

(5)保障系统稳定性:合理的调度算法可以避免任务之间的资源竞争和死锁问题,保障系统的稳定性和可靠性。

(6)多任务并行处理:嵌入式系统通常需要同时处理多个任务,实时任务调度可以有效地管理和协调这些任务的执行,确保各任务按时完成。

实时任务的定义与分类

2.1 实时任务的定义

实时任务是指在实时系统中需要在特定时间约束内完成的任务。具有严格的时间要求,如果不能在规定时间内完成,可能会导致系统性能下降或出现严重的后果。在实时系统中,时间是一个关键因素,任务必须按照预定的时间表执行,以确保系统的正确性和可靠性。

2.2 实时任务的分类

1. 硬实时任务(Hard Real-Time Tasks)

定义:硬实时任务必须在严格的时间期限内完成,任何超过时间期限的延迟都会导致系统故障或灾难性后果。

示例:航空电子系统中的飞行控制任务、汽车的防抱死刹车系统(ABS)、医疗设备中的心脏起搏器控制等。

特点:时间约束绝对严格,系统必须保证这些任务在规定时间内完成。

2. 软实时任务(Soft Real-Time Tasks)

定义:软实时任务也有时间约束,但允许一定程度的延迟。延迟可能会导致性能下降,但不会导致系统崩溃。

示例:视频播放、在线游戏、网络数据包传输等。

特点:时间约束较为宽松,可以容忍一定的延迟,但需要尽量减少延迟以确保较好的系统性能。

3. 中间型实时任务(Firm Real-Time Tasks)

定义:Firm实时任务需要在规定时间内完成,如果未能及时完成,任务结果将失去价值,但不会导致系统故障。过期的任务结果会被丢弃。

示例:股票交易系统中的报价更新、实时数据分析等。

特点:任务结果过期后无意义,但系统可以继续运行,不会导致致命错误。

2.3 实时任务的其他分类方法

除了根据时间约束进行分类,实时任务还可以根据其他特性进行分类,如周期性、优先级和依赖性等。

1. 周期性任务(Periodic Tasks)

定义:周期性任务以固定的时间间隔重复执行。

示例:传感器数据采集、定时器中断处理等。

特点:任务执行时间和周期是已知的,调度相对简单。

2. 非周期性任务(Aperiodic Tasks)

定义:非周期性任务在不定时间间隔内执行,通常是由外部事件触发。

示例:用户按键输入、网络请求处理等。

特点:任务执行时间和频率不可预测,需要灵活的调度策略。

3. 优先级任务(Priority Tasks)

定义:任务根据其重要性分配不同的优先级,优先级高的任务优先调度。

示例:操作系统内核调度中的高优先级任务、实时控制系统中的关键控制任务。

特点:任务的优先级决定了其调度的顺序,高优先级任务抢占低优先级任务的执行。

4. 依赖性任务(Dependent Tasks)

定义:任务之间存在依赖关系,需要按特定顺序执行。

示例:生产线控制系统中,任务A完成后才能执行任务B。

特点:需要考虑任务之间的依赖关系,确保调度的正确性和效率。

硬实时与软实时系统

3.1 硬实时系统

硬实时系统(Hard Real-Time Systems)是指必须在严格的时间约束内完成所有任务的系统。任务的时间约束不可违背,任何超时都会导致系统故障,甚至可能引发严重后果。

特点:所有关键任务必须在其截止时间内完成,任何延迟都是不可接受的;系统需要高度可靠,必须在各种情况下都能保证时间约束的满足;系统行为是可预测的,能够在设计和测试阶段验证时间约束的满足情况;常常采用固定优先级调度算法,如固定优先级抢占式调度(Fixed Priority Preemptive Scheduling, FPPS)或最早截止时间优先(Earliest Deadline First, EDF)。

应用领域:

1. 航空电子系统:飞行控制系统、导航系统、自动驾驶仪等,这些系统要求极高的实时性和可靠性。

2. 汽车电子:防抱死刹车系统(ABS)、电子稳定程序(ESP)、气囊控制系统等,这些系统必须在毫秒级响应以确保驾驶安全。

3. 医疗设备:心脏起搏器、呼吸机等设备,任何延迟可能会危及病人生命。

4. 工业自动化:工业机器人控制系统、生产线控制系统等,需要精确的时间控制以确保生产安全和效率。

3.2 软实时系统

软实时系统(Soft Real-Time Systems)是指虽然任务有时间约束,但允许一定程度的延迟。任务的执行时间不需要严格符合截止时间,超时只会导致性能下降,而不会引发系统故障。

特点:任务有时间约束,但允许一定的超时,延迟不会导致系统崩溃;任务执行时间可以有一定的波动,系统可以容忍延迟;系统不需要在所有情况下都保证严格的时间约束,重点在于整体性能和用户体验;常采用动态调度算法,如最低松弛时间优先(Least Slack Time First, LSTF),以灵活应对任务的变化。

应用领域

1. 多媒体系统:视频播放、音频处理等,允许有轻微的延迟和抖动,不会严重影响用户体验。

2. 在线游戏:游戏中的操作和响应允许一定的延迟,主要关注的是整体的用户体验和流畅度。

3. 网络服务:网络数据包传输、网页加载等,允许一定的延迟,但需要尽量减少延迟以提升用户体验。

4. 移动应用:手机应用中的界面响应、数据同步等,允许短时间的延迟以提供流畅的用户体验。

3.3 对比分析

硬实时系统和软实时系统在时间约束、可靠性和应用领域上有显著区别。硬实时系统适用于需要严格时间控制的关键任务场景,而软实时系统则更适合那些可以容忍一定延迟的应用。了解两者的特点和应用场景,有助于设计和选择适合的实时系统解决方案。

特性

硬实时系统

软实时系统

时间约束

严格,不可超时

宽松,允许一定延迟

系统可靠性

高,必须保证任务在截止时间内完成

较低,允许任务超时但性能下降

调度算法

固定优先级调度(如FPPS、EDF)

动态优先级调度(如LSTF)

应用领域

航空电子、汽车电子、医疗设备、工业自动化

多媒体系统、在线游戏、网络服务、移动应用

系统行为

确定性强,可预测

灵活性强,允许波动

常见的实时任务调度算法

在实时系统中,调度算法的选择对于系统的性能和可靠性至关重要。常见的实时任务调度算法包括静态优先级调度算法和动态优先级调度算法。以下是几种主要的调度算法及其分析与比较。

4.1 静态优先级调度算法

1. 固定优先级抢占式调度(Fixed Priority Preemptive Scheduling, FPPS)

原理:每个任务分配一个固定优先级,优先级高的任务可以抢占优先级低的任务。代表算法有Rate-Monotonic Scheduling (RMS) 。RMS是优先级根据任务周期分配,周期越短优先级越高。

优点:简单易实现,调度开销低;对于周期性任务,理论上可以通过Liu and Layland的可调度性测试来验证系统的可调度性。

缺点:对于任务的优先级设定是固定的,缺乏灵活性;不适合处理非周期性任务和具有动态特性的系统。

适用场景:周期性任务且负载较为稳定的硬实时系统。

2. 最早截止时间优先(Earliest Deadline First, EDF)

原理:优先级根据任务的截止时间分配,截止时间越早优先级越高。

优点:动态调整优先级,可以高效利用系统资源;理论上能够调度所有可调度的任务集,具有最优性。

缺点:调度开销较高,因为每次任务到来或完成时需要重新计算优先级。对系统负载的波动较为敏感,可能导致过度调度。

适用场景:任务的截止时间变化较多且需要动态调整的系统。

4.2 动态优先级调度算法

1. 最低松弛时间优先(Least Slack Time First, LSTF)

原理:优先级根据任务的松弛时间(截止时间减去剩余执行时间)分配,松弛时间越少优先级越高。

优点:能够有效处理临近截止时间的任务,减少任务超时的可能性。

缺点:计算任务松弛时间的开销较大,可能增加调度复杂性。对于负载变化较大的系统,可能出现频繁的任务切换。

适用场景:任务截止时间紧迫且需要灵活调整的系统。

2. 最小剩余执行时间优先(Shortest Remaining Time First, SRTF)

原理:优先级根据任务的剩余执行时间分配,剩余执行时间越少优先级越高。

优点:能够最小化任务的平均等待时间,提高系统响应速度。

缺点:需要准确预测任务的剩余执行时间,对于不可预测的任务难以实现。频繁的任务切换可能导致系统开销增加。

适用场景:执行时间可以准确预测且任务频繁变化的系统。

4.3 分析与比较

RMS

EDF

LSTF 和 SRTF

可调度性

对于周期性任务,RMS可以通过Liu and Layland的理论验证系统的可调度性,但只能达到69.3%的CPU利用率。

理论上可以调度所有可调度任务集,CPU利用率可达100%。

动态调整优先级,能够处理临时任务和负载变化,但可调度性分析较为复杂。

实现复杂度

实现简单,调度开销低。

实现较复杂,调度开销高。

实现复杂度较高,需要实时计算任务的松弛时间或剩余执行时间。

系统性能

适用于负载稳定且周期性任务的系统,性能稳定。

适用于负载变化较大且需要高效利用资源的系统,性能较高但波动较大。

适用于需要灵活调度且任务特性动态变化的系统,性能优越但可能增加系统开销。

选择合适的实时任务调度算法需要综合考虑系统的任务特性、时间约束、资源利用和实现复杂度等因素。固定优先级调度如RMS适用于周期性任务和负载稳定的系统,而动态优先级调度如EDF、LSTF和SRTF则适合任务特性动态变化且需要高效利用系统资源的场景。了解每种调度算法的优缺点和适用场景,有助于设计和实现满足系统需求的实时调度方案。

调度算法优化技术

5.1 优化目标

1. 减少任务延迟:确保任务在其截止时间内完成,减少响应时间和等待时间。

2. 提高系统吞吐量:最大化系统处理的任务数量,提高资源利用率。

3. 减少能耗:特别是在电池供电的嵌入式系统中,降低能耗以延长设备使用时间。

4. 提高系统稳定性和可靠性:避免任务之间的冲突和资源竞争,确保系统稳定运行。

5. 增强可扩展性和灵活性:使系统能够适应任务数量和特性变化,提高调度算法的适应性。

5.2 优化方法

1. 优先级分配策略优化

静态优先级分配:根据任务的重要性和时间约束,预先分配固定优先级。常用方法包括RMS。

动态优先级调整:根据实时任务状态和系统负载,动态调整任务优先级。代表方法有EDF和LSTF。

2. 任务划分与合并

任务划分:将大任务划分为多个小任务,使其更易于调度和管理,减少任务等待时间和资源竞争。

任务合并:将多个小任务合并为一个大任务,减少调度开销和任务切换次数,提高系统效率。

3. 调度算法组合使用

混合调度算法:结合多种调度算法的优点,根据不同任务特性和系统状态选择合适的调度策略。例如,结合RMS和EDF,根据任务类型动态切换调度算法。

自适应调度:系统实时监控任务和资源状态,动态调整调度算法和策略,提高系统的适应性和效率。

5.3 优化案例

案例一:嵌入式医疗设备中的调度优化

背景:医疗设备需要同时处理多个传感器数据和用户输入,要求高实时性和低能耗。

优化方法:采用EDF算法动态调整任务优先级,结合任务划分技术,将复杂的传感器数据处理任务分解为多个小任务,减少任务延迟。

结果:任务响应时间减少,能耗降低。

案例二:工业自动化系统的调度优化

背景:需要实时监控和控制多个设备,要求高可靠性和高吞吐量。

优化方法:采用混合调度算法,将RMS用于周期性任务调度,EDF用于非周期性任务调度。同时,结合任务合并技术,将频繁执行的小任务合并,提高调度效率。

结果:系统吞吐量提高,任务调度开销减少。

案例三:智能家居系统的调度优化

背景:需要处理大量用户指令和设备状态更新,要求高灵活性和低延迟。

优化方法:采用自适应调度算法,系统实时监控任务和资源状态,动态调整任务优先级和调度策略。结合动态优先级调整技术,确保关键任务优先得到处理。

结果:任务延迟减少,系统响应速度提高。

案例四:航空电子系统中的调度算法优化

背景:航空电子系统需要处理多个关键任务,包括飞行控制、导航、通信等功能。系统对实时性要求极高,任务响应时间和可靠性是关键指标。

问题:现有的调度算法在面对多任务并发和复杂任务交互时,存在任务响应时间不稳定、系统资源利用率低等问题。特别是在高负载情况下,系统容易出现任务延迟和资源竞争,影响系统性能和安全。

解决方案:通过优化调度算法,改善系统的实时性和资源利用率,提高系统性能和可靠性。采用最早截止时间优先调度算法,根据任务的截止时间动态调整任务优先级,确保关键任务优先得到处理。将复杂的任务划分为多个小任务,降低任务的复杂度,减少任务等待时间和资源竞争。分配足够的CPU时间片和内存资源给关键任务,保障其执行的实时性。采用任务隔离技术,防止非关键任务对关键任务的干扰,提高系统稳定性。监控系统的任务响应时间和资源利用率,及时发现问题并采取调整措施。根据实时监控数据动态调整调度算法和策略,适应系统负载和任务变化。

优化效果:关键任务的响应时间得到稳定控制,不受系统负载波动的影响。系统吞吐量和资源利用率得到提升,更有效地利用硬件资源。系统对于任务截止时间的严格控制,保障了飞行安全和通信畅通。

结论

嵌入式系统实时任务调度算法的优化与实现是一个综合考虑系统特性和应用场景的过程,通过合适的优化方法和调度算法,可以提升系统的性能和可靠性。优化目标包括减少任务延迟、提高系统吞吐量、减少能耗、提高系统稳定性和增强可扩展性。采用合适的优化方法,如优先级分配策略优化、任务划分与合并、调度算法组合使用等,可以实现这些优化目标。

相关文章:

嵌入式系统实时任务调度算法优化与实现

嵌入式系统实时任务调度算法优化与实现 目录 嵌入式系统实时任务调度算法优化与实现 引言 1.1 嵌入式系统的重要性 1.2 实时任务调度的重要性 实时任务的定义与分类 2.1 实时任务的定义 2.2 实时任务的分类 2.3 实时任务的其他分类方法 硬实时与软实时系统 3.1 硬实…...

Java:枚举转换

在Java中,你可以使用Enum.valueOf()方法将字符串转换为枚举常量。但是,如果你想要将枚举转换为其他类型,你需要自定义转换方法。以下是一个简单的例子,演示如何将枚举转换为整数: public enum Color {RED(1), GREEN(2…...

Vue、react父子组件生命周期

Vue 的父子组件生命周期 以下分为三部分,加载渲染阶段——更新阶段——销毁阶段,我们来一一介绍: 1、加载渲染阶段 在加载渲染阶段,一定得等子组件挂载完毕后,父组件才能挂载完毕,所以父组件的 mounted 在…...

HTML 基础要素解析

目录 HTML 初步认识 纯文本文件介绍 纯文本文件与其它文件的区别 Html介绍 HTML 骨架 文档类型(!DOCTYPE)声明 介绍 常用的 DOCTYPE 声明 meta标签 字符集 关键字和页面描述 HTML 初步认识 纯文本文件介绍 纯文本文件指的是仅包含文本内容&am…...

开源的向量数据库Milvus

Milvus是一款开源的向量数据库,专为处理向量搜索任务而设计,尤其擅长处理大规模向量数据的相似度检索。 官网地址:https://milvus.io/ 以下是关于Milvus的详细介绍: 一、基本概念 向量数据库:Milvus是一款云原生向量…...

设计模式-工厂方法

“对象创建”模式 通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式 Factory MethodAbstract Factory…...

Flask SQLALchemy 的使用

Flask SQLALchemy 的使用 安装 Flask-SQLAlchemy配置 Flask-SQLAlchemy定义模型创建数据库和表插入和查询数据更新和删除数据迁移数据库总结Flask-SQLAlchemy 是一个 Flask 扩展,它简化了 Flask 应用中 SQLAlchemy 的使用。SQLAlchemy 是一个强大的 SQL 工具包和对象关系映射(…...

Metasploit漏洞利用系列(一):MSF完美升级及目录结构深度解读

在信息安全领域,MetasploitFramework(MSF)是一个无处不在的工具,它集合了大量的渗透测试和漏洞利用模块,帮助安全专家识别和利用系统中的弱点。本文将深入探讨如何对Metasploit进行完美升级,以及对其核心目…...

C/C++|经典代码题(动态资源的双重释放与「按值传递、按引用传递、智能指针的使用」)

以下代码中你能看出其存在什么问题&#xff1f;如何修复&#xff0c;能给出几种方法&#xff1f;分别在什么场景下用哪种方法。 #include <iostream>class Buffer {public:Buffer() { std::cout << "Buffer created" << std::endl; }~Buffer() { s…...

西北乱跑娃 -- linux使用笔记

1.后台运行每天一个日志文件 nohup python3.8 manage.py >> $(date %Y-%m-%d).log 2>&1 &2.目录操作&#xff1a; ls&#xff1a;列出目录内容。cd&#xff1a;改变当前工作目录。pwd&#xff1a;显示当前工作目录的路径。mkdir&#xff1a;创建新目录。rmd…...

Kubectl基础命令使用

一.Kubectl 基础命令 格式&#xff1a; kubectl [command] [TYPE] [NAME] [FLAGS] kubectl 是 Kubernetes 的命令行工具&#xff0c;用于管理 Kubernetes 集群。以下是一些常用的 kubectl 命令及其选项&#xff1a; 常用命令 获取资源 列出所有资源类型&#xff08;Pods、De…...

推荐编译器插件:Fitten Code 更快更好的AI助手

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…...

ArcGIS Pro基础:状态栏显示栏的比例尺设置和经纬度位置

上图所示&#xff0c;界面下方最左侧是显示的比例尺&#xff0c;可以进行选择设置&#xff0c;也可以进行自定义设置 上图所示&#xff0c;可以手动录入比例尺&#xff0c;同时也可以对比例尺设置别名&#xff0c;比如【实验1】作为特定比例尺的标记 如上图所示&#xff0c;可以…...

微前端架构入门

什么是微前端? 定义 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 微前端是一种架构风格,它允许将一个复杂的大前端应用拆分成多个可以独立开发、部署的小型前端应用。这些小型前端应用通常被称为“子应用”或者“微前端应用…...

[LitCTF 2023]导弹迷踪

页面源码底部有多个js,查看浏览 查看ksrc/game.js发现flag...

win10安装wsl2(ubuntu20.04)并安装 TensorRT-8.6.1.6、cuda_11.6、cudnn

参考博客&#xff1a; 1. CUDA】如何在 windows 上安装 Ollama 3 open webui &#xff08;docker WSL 2 ubuntu nvidia-container&#xff09;&#xff1a;https://blog.csdn.net/smileyan9/article/details/140391667 2. 在 Windows 10 上 安装 W…...

信息搜集--敏感文件Banner

免责声明:本文仅做分享参考... 目录 git安装: git目录结构: 敏感目录泄露 1-git泄露 (1)常规git泄露 scrabble工具 (2)git回滚 (3)git分支 GitHacker工具 (4)git泄露的其他利用 .git重定向问题 2-SVN泄露 dvcs-ripper工具 3-小结 dirsearch目录扫描工具 敏感备…...

Qt 学习第六天:页面布局

如何设计页面&#xff1f; 有个类似沙盒模式的玩法&#xff0c;Qt Widget Designer可以更好的帮助我们设计页面 点击.ui文件进入 右上方可以看到四种常见的布局&#xff1a; 四种布局 &#xff08;一&#xff09;水平布局horizontalLayout&#xff1a;QHBoxLayout H 是 hori…...

利用队列收集单双击和长按按键

利用队列收集单双击和长按按键 引言 当我们仅仅通过在while循环里面进行判断按键类型的标志位, 然后进行操作的时候, 我们的最小例程很小, 所以能够实时的检测到按键,从而触发实验现象. 假如我们此时进入了一个事件处理函数呢 ? 并且这个这个函数的操作是不可被打断的, 如果此…...

AI工作流:低代码时代的革新者,重塑手机问答类应用生态

在这个数字化迅猛发展的时代&#xff0c;低代码技术正以惊人的速度改变着我们的生活方式。作为低代码人群的先锋&#xff0c;AI工作流技术正在以前所未有的方式&#xff0c;赋予非技术人群实现梦想的能力 &#x1f525;能用AI-低代码传送门&#xff1a;https://www.nyai.chat …...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年&#xff0c;截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始&#xff0c;将英文题库免费公布出来&#xff0c;并进行解析&#xff0c;帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来&#xff0c;一直在光谱成像领域深度钻研和发展&#xff0c;始终致力于研发高性能、高可靠性的光谱成像相机&#xff0c;为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

C++实现分布式网络通信框架RPC(2)——rpc发布端

有了上篇文章的项目的基本知识的了解&#xff0c;现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...

【Linux】Linux安装并配置RabbitMQ

目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的&#xff0c;需要先安…...