操作系统论文导读(八):Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个
Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个关键性规范的零星任务的可调度性分析
目录
一、论文核心思想
二、基本定义
2.1 关键性指标
2.2 任务及相关参数定义
2.3 几个基础定义
三、可调度性分析
3.1 调度算法分类
3.2 DP算法分析
3.3 FJP与FTP算法分析(分析相对于DP的劣势)
3.4 FTP 和 EDF对比
四、混合优先调度
4.1 算法详情
4.2 算法评价
五、结论
一、论文核心思想
本文主要论证了在混合关键系统中各种调度协议不能像在其他没有关键性参数的RTOS系统中存在简单的相互支配(如EDF算法支配所有的FTP算法),并基于Audsley算法与Vestal算法提出了一种新的算法改良,在具有多重关键性要求的系统中不同的任务需要以不同的置信度确保在截止日期前完成,本文利用 WCET 的这种多重规范来获得更好的处理器利用率并证明了这种算法在混合关键系统的任务调度中支配EDF算法与Vestal算法,但依旧不能支配FJP算法(后续会做解释)
二、基本定义
2.1 关键性指标
从A到E,关键级别依次降低,A失败的结果是灾难性的,B是非常危险,以此类推。
尽管 RTCA DO-178B 标准仅指定了五个关键级别 A-E,但没有特别理由要求系统最多具有五个级别。 因此,文章在这里考虑一个系统模型,其中有任意多个不同的关键级别,用正整数表示,整数越大表示关键程度越高。 (因此,RTCA DO-178B 关键级别 A 将映射到 5,级别 E 映射到 1。)
多关键性零星任务模型:假设每个任务都有一对应用于不同关键水平的WCET估计量,系统可以根据实际执行行为在运行时切换不同的关键模式。
2.2 任务及相关参数定义
考虑多关键性零星任务系统的抢占式单处理器调度。 这样一个多关键性零星任务系统 τ 由 n 个多关键性零星任务 τ1,...,τn 组成。 每个任务 τi 由以下参数表征
WCET 函数 Ci : N+ → R+,指定不同关键级别的 WCET:关键级别l的 WCET 等于 Ci(l)。 在不失一般性的情况下,我们假设 , Ci(l) ≤ Ci(l+1) 。
相对期限参数 Di。
最小到达间隔或周期参数 Ti。
关键水平 Li,Li ∈ N+。
2.3 几个基础定义
定义 1(可行性和可调度性)如果算法 A 始终满足 τ 的所有截止日期并达到所需的保证水平,则称多临界零星任务系统 τ 可由调度算法 A 调度。 如果存在某种调度算法 A 使得 τ 可由 A 调度,则称 τ 是可行的。
定义 2(同步到达序列 (SAS))零星任务 τi 的作业同步到达序列包括 τi 的第一个作业到达时刻零,后续作业恰好到达 Ti 时间单位。 任务集合的同步到达序列由任务集合中每个单独任务的同步到达序列的并集组成。
定义二解释:个人理解实际上就是到达时间为n*Ti,其中n为整数
定义 3 对于任意多临界零星任务系统 τ ,我们定义对应的传统零星任务系统为
在这里,每个传统的零星任务系统都由 3 元组(WCET,相对截止日期,期间)表示。
定理 1 多临界性零星任务系统 τ 是可行的当且仅当相应的传统零星任务系统是可行的。
证明:考虑一种调度算法,该算法能够在不同作业之间实施时间隔离,允许每个作业仅执行预定的时间量。 可以使这样的算法在最多 Ci(Li) 时间单位内执行 τi 的每个作业,从而基本上忽略 WCET 的多个规范,并将每个多临界零星任务视为传统零星任务。
三、可调度性分析
从可行性分析的角度来看,多临界零星任务系统与传统的零星任务系统是相同的。 尽管如此,关于多临界性零星任务系统的调度还有许多有趣的未解决问题; 当限制可能使用的调度算法种类时,多关键性零星任务系统与传统零星任务系统有很大不同。
3.1 调度算法分类
根据对作业分配优先级的方式的限制,将分为三类用于调度零星任务系统的算法:
1. 固定任务优先级 (FTP) 调度:给定任务生成的所有作业都分配相同的优先级。
2. 固定作业优先级(FJP)调度:同一任务的不同作业可能有不同的优先级。 然而,每个作业的优先级在其到达时间和完成时间之间可能不会改变。
3. 动态优先级(DP)调度:作业的优先级可能会在发布时间和完成时间之间发生变化。
从定义上可以看出,FJP调度是FTP调度的推广,DP调度是FJP调度的推广。 在传统(即非多关键性)任务系统的单处理器调度中,FJP 调度算法最早期限优先(EDF)被认为是最优的,因为 EDF 总是满足所有可行的传统零星任务系统的所有期限;而DP 调度算法(通常会产生更大的运行时实现开销)并不常用于调度此类任务系统。
在这项研究中,我们考虑更通用的 FJP 和 DP 算法。
3.2 DP算法分析
由于 DP 算法类包括所有调度算法,因此根据定义,所有可行的多临界零星任务系统都可以通过某种 DP 调度算法进行调度。 因此,当且仅当对应的传统零星任务系统(见定义 3)可行时,多临界零星任务系统 τ 是 DP 可调度的。
3.3 FJP与FTP算法分析(分析相对于DP的劣势)
一些调度程序能够在运行时强制执行不同作业之间的时间隔离。 也就是说,每个作业都分配了最大执行量,并且调度程序能够确保没有作业超过分配给它的执行量。 在这样的系统中,没有作业依赖于另一个作业的调度,因此作业的完成不受其他作业执行时间估计准确性的影响。
现在,任何在作业之间实现时间隔离的算法都可以在 DP 优先级驱动调度算法的框架内实现,只需在适当的时刻简单地提高和降低作业的优先级。 然而,这不能在 FJP 和 FTP 调度算法中完成:FJP 和 FTP 算法本身不能保证作业之间的时间隔离
在传统的零星任务系统中,所有可行的任务系统也可以使用某种 FJP 调度算法(特别是 EDF)进行调度。以下示例说明多关键性零星任务系统并非如此:
示例 1 考虑由两个任务 τ1 和 τ2 组成的任务系统,具有以下参数:
通过考虑这两种可能性——(i) τ1 具有更高的优先级,以及 (ii) τ2 具有更高的优先级——可以验证该系统不是 FTP 可调度的。 它也不是 FJP 可调度的,如下面的论证所示。 让我们在调度 SAS 时考虑每个任务的第一个作业,并考虑两种可能性:τ1 的第一个作业比 τ2 的第一个作业具有更高的优先级,反之亦然。
1. 当 τ1 的第一个作业比 τ2 的第一个作业具有更高的优先级时:在这种情况下,τ2 的第一个作业不能保证在保证级别 1 的截止日期前完成:因为 C1(2) = 5,τ1 的第一个作业将在间隔 [ 0, 5), 从而允许 τ2 的作业完全不执行。
2. 当 τ2 的第一个作业比 τ1 的第一个作业具有更高的优先级时:在这种情况下,τ1 的第一个作业不能保证在保证级别 2 的截止日期前完成:因为 C2(2) = 5,所以 τ2 的第一个作业将在区间 [0 , 5), 并在截止日期前只为 τ1 的工作留下一个执行单元。
然而,由于 C1(L1)/T1 + C2(L2)/T2 =5/6+0.5/5 < 1,根据定理 1 的结果,该系统是可行的,因此是 DP 可调度的。
C1/T1 + C2/T2+.... < 1是DP算法中计算是否可调度的公式
也就是存在可使用 DP 调度算法进行调度的多临界零星任务系统,这些系统不能使用任何 FTP 或 FJP 调度算法进行调度。
3.4 FTP 和 EDF对比
对于传统的零星任务系统,从可调度性的角度可知EDF主导FTP调度——所有可通过FTP调度调度的任务系统也可通过EDF调度,而有些可通过EDF调度的任务系统不存在FTP调度。 (这是 EDF 最优性的直接结果,事实上没有 FTP 算法在能够调度所有可行的零星任务系统的意义上是最优的。)但是,这种优势不会延续到多关键零星任务系统,如以下简单示例所示。
示例 2 考虑由两个任务 τ1 和 τ2 组成的任务系统,具有以下参数:
τ1 是一个更高关键性的任务。 通过为 τ1 分配比 τ2 更高的优先级,可以验证这两个任务都在所需的关键级别上满足了它们的截止日期; 因此,该系统是 FTP 可调度的。
现在考虑 EDF,让我们关注 SAS 中 τ1 的第二项工作。 回想一下,多关键性任务模型的语义要求用于确保任务满足其截止日期的所有 WCET 值与任务所需的保证级别相同。 比 τ1 的第二个工作具有更高优先级的工作是 τ2 的第一个工作,并且通过传递性,是 τ1 的第一个工作。 WCET 的 C1(2) 和 C2(2) 必须用于确定 τ1 是否满足其截止日期。 但是在使用这些 WCET 估计在 SAS 上模拟 EDF 时,很容易看出 τ1 的第二个作业在时间点 8 错过了它的截止日期(因为 τ1 的第一个作业在 [0, 2] 上执行,而 τ2 的作业在 [2, 7] 上执行) ,从而只留下一个执行单元,而不是 τ1 在截止日期前的第二个作业所需的两个单元)。
其实我觉得这个例子存在一定的问题,如果要细究的话,FTP调度中的第一轮t在0-2时任务1执行t在2-4时任务2执行,t在4-6时任务1抢占执行,则任务二依旧可能会错过D2(因为为文章给出的EDF调度中任务2的最坏执行时间是按5计算的)。只是任务2的关键性低于任务1,但系统不一定是FTP可调度的。
定理3 FTP和EDF在多临界零星任务系统的调度中是不可比拟的调度策略。
四、混合优先调度
4.1 算法详情
正如上面定理 1 中所讨论的,Vestal 算法(产生最佳 FTP 优先级分配)和 EDF 在涉及多临界零星任务系统时是无法比拟的。 我们在本节中的目标是获得一种调度算法,该算法泛化了 EDF 和 Vestal 算法,并且在多关键性零星任务系统的调度中证明优于两者。 它结合了 FTP 调度和 EDF 的特点。 为了使用这种混合调度策略来调度多关键性零星任务系统 τ,我们必须为 τ 中的每个任务分配一个(不一定是唯一的)优先级。 根据定义,这些优先级是完全相互排序的:只要一个优先级中的作业在运行时等待执行,就不会执行较低优先级的作业。 在每个优先级内,将使用 EDF 安排任务。
同步到达序列 (SAS) 代表最坏情况下的到达序列——如果针对给定的优先级分配使用混合优先级调度来安排零星任务系统的 SAS 以满足所有截止日期,则零星任务 系统将始终满足具有相同优先级分配的混合优先级调度下的所有截止日期。后续将使用这个 观察作为设计多关键零星任务系统的混合优先级调度的优先级分配算法的基础。
优先级分配算法 ASSIGNPRIORITIES(τ ) 是 Audsley 算法的推广,用于在 FTP 调度系统中分配优先级。 过程 AUGMENTEDAUDSLEY(τcur,p) 接受一组任务 τcur ⊆ τ 和优先级 p 作为输入,并确定 τcur 中的哪些任务可以分配优先级 p,哪些必须分配更高的优先级。
在考虑当前优先级 p 的 AUGMENTEDAUDSLEY 中的每个步骤中,τcur 保留尚未排除分配优先级 p 的任务集,τhi 包含已确定需要分配更高优先级的任务集 。开始对 AUGMENTEDAUDSLEY 的初始调用具有最低优先级和所有任务(即 p ← 1 和 τcur ← τ )。
在 AUGMENTEDAUDSLEY 的执行期间,任何被识别为不能保证在当前优先级满足其时序约束的任务必须分配更高的优先级——这样的任务从 τcur 中删除并添加到 τhi。 为了识别在当前优先级无法满足其时序约束的任务,模拟了 (τcur ⋃ τhi) SAS 的混合优先级调度,已经分配了优先级的任务 <p 不需要考虑,因为它们不影响优先级为 p 或更高的任务的调度。
归结的流程如下:
1. 首先让 π1,π2,...,π 表示 τcur 中任务的不同关键级别,按降序排列。用使用 Ci(π1) 作为任务的 WCET; 如果 τcur 中具有临界级别 π1 的任务的所有作业截止日期都得到满足,则它使用 Ci(π2) 作为任务的 WCET 来模拟 (τcur ⋃ τhi) 的 SAS 的混合优先级调度; 如果 τcur 中具有临界级别 π2 的任务的所有作业截止日期都得到满足,它接下来使用 Ci(π3) 作为任务的 WCET 来模拟 (τcur ⋃ τhi) 的 SAS 的混合优先级调度。如果用最低关键级别Ci(πl)用作WCET时满足 τcur 中所有最低关键级别的截止日期,那么就可以完成 τcur 中所有任务都被分配了优先级p时的调度保障
2. 当某个任务在关键级别πj关键级别实验失败时,令 τk 表示具有关键性 πj 的任务生成第一个错过其截止日期的此类作业。 为了让这个作业满足它的截止日期,它有必要比 SAS 中 τcur 分配的优先级 p 中某个任务的某个更早截止日期的作业具有更高的优先级。
3. 以这种方式为 τk 分配了更高的优先级后, 必须再次重新检查整个系统(第 3-5 行中的 while 循环)。 也就是说,它重新模拟 SAS 在每个关键级别 π1、π2、... 的调度,除了现在为 τk 分配的优先级高于 τcur 中剩余的任务。 这样做时,可以确定一些其他任务 τ ′ k 是否也需要提升到更高的优先级。
4. 与Audsley 方法 一样,AUGMENTEDAUDSLEY 本质上是识别要分配当前优先级 p 的任务,后续会继续在τhi中进行递归,逐渐生成更多优先级为p+1,p+2等等各类任务。但若τcur在执行后变空,即所有任务都需要升级优先级(则算法本质上没啥意义了),返回调度失败。
后续的具体执行如下图所示:
算法是为了解决Vestal提出的任务模型在动态优先级调度下的可调度性问题。算法的目标是给每个任务分配一个虚拟截止时间,使得在不同的关键性模式下,任务的虚拟截止时间都不会超过它们的真实截止时间,并且任务集能够被EDF调度。伪代码如下:输入:一个具有多重关键性规范的任务集 T = {T1, T2, ..., Tn}
输出:一个虚拟截止时间分配方案,如果存在的话,或者“不可调度”
开始对于 T 中的每个任务 Ti,计算它的关键性等级 Li = max{L | Ci(L) > 0}按照关键性等级从高到低对 T 中的任务进行排序让 Lmax 为 T 中任何任务的最高关键性等级对于 L = Lmax 到 1,执行以下操作:让 TL 为 T 中关键性等级至少为 L 的任务子集让 CL 为 TL 在 L 等级下的总利用率如果 CL > 1,那么返回“不可调度”让 DL 为 TL 中任务相对截止时间的不同值集合按照相对截止时间从小到大对 DL 进行排序让 D0 = 0 和 Dk+1 = infinity,其中 k >= |DL|对于 j = 1 到 k,执行以下操作:让 Uj 为 TL 中相对截止时间不超过 Dj 的任务的总利用率让 Wj 为 TL 中相对截止时间不超过 Dj 的任务在 [Dj-1, Dj] 内的总工作量如果 Wj > Uj * (Dj - Dj-1),那么返回“不可调度”让 Vj 为 TL 中相对截止时间等于 Dj 的任务集合对于 Vj 中的每个任务 Ti,按照以下方式分配虚拟截止时间 Di(L):Di(L) = min{Di(L+1), Dj - (Wj - Uj * (Dj - Dj-1)) / Ui(L)}如果 Di(L) < Di,那么返回“不可调度”结束循环结束循环返回虚拟截止时间分配方案
结束这种算法的核心思想是从最高的关键性等级开始,逐步给每个任务分配一个虚拟截止时间,使得每个关键性等级下的任务集都能满足EDF调度的充分条件。
4.2 算法评价
算法用于为多关键性零星任务系统中的任务分配优先级,以便使用混合优先级调度算法调度生成的系统以满足其各自所需保证级别的所有时序约束 . 我们现在将这种方法与其他可能的多关键零星任务系统调度方法进行比较。
首先,该算法支配 EDF 调度:任何可被 EDF 调度的 τ 将被该算法确定为可调度,并且 τ 中的所有任务都被分配相同的最低优先级。 也就是说,第一次调用 AUGMENTEDAUDSLEY(τ, 1) 通过执行第 8 行的返回语句来声明成功,并且不再对 AUGMENTEDAUDSLEY 进行递归调用。
该算法也支配了 Vestal 算法。 Vestal 算法在每个优先级必须恰好分配给它一个任务的意义上更具限制性; 不难证明,Vestal 算法找到这种优先级分配的任何 τ 也将具有我们的算法找到的优先级分配。
如定理 2所示,存在可行的多临界零星任务系统,这些系统可以使用动态优先级算法进行调度,但不能使用任何 FJP 或 FTP 算法进行调度。 而对于该算法也是如此,即有些任务系统是 FJP 可调度的,但不能使用算法进行调度。
(举例略,文章中例子很好理解)
五、结论
Vestal 提出的多关键性任务模型代表了安全关键型实时系统的建模和分析方面潜在的非常重要的进步。 在本文中,我们试图更好地理解多关键性零星任务系统的抢占式单处理器调度。 我们已经研究了基本的调度理论问题——表现力; 可行性; 特定类别的调度算法的可调度性; 等等——必须理解这些才能完全理解新的任务模型。 我们从这项研究中学到了很多与我们之前使用传统零星任务系统的经验相反的东西:例如,我们了解到 EDF 不是调度多临界零星任务系统的最佳算法,而且 EDF 和固定优先级调度是无法比较的 . 我们还推导出并评估了一种新方案,用于在抢占式单处理器上调度此类多关键性零星任务系统,并表明该新方案优于先前提出的方案。
相关文章:

操作系统论文导读(八):Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个
Schedulability analysis of sporadic tasks with multiple criticality specifications——具有多个关键性规范的零星任务的可调度性分析 目录 一、论文核心思想 二、基本定义 2.1 关键性指标 2.2 任务及相关参数定义 2.3 几个基础定义 三、可调度性分析 3.1 调度算法分…...
计算机网络与通信复习
因特网的核心部分(电路交换与分组交换的不同点,分组交换的优点) 核心部分:路由器、交换机 我们假如数据就是一个货物,比如说一千公斤的大米,电路交换要有专用通道,不管从起点到终点经过多少个…...

【Scala】图书项目系统代码演练3.1/BookService
package org.app package serviceimport models.{BookModel, BorrowRecordModel}import org.app.dao.{BookDAO, BorrowRecordDAO}import java.time.LocalDateTime import scala.collection.mutable.ListBuffer// 图书业务逻辑层 class BookService {private val bookDAO new B…...

人工智能基础软件-Jupyter Notebook
简介: Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。 Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直…...
C++ 设计模式:模板方法(Template Method)
链接:C 设计模式 链接:C 设计模式 - 策略模式 链接:C 设计模式 - 观察者模式 模板方法(Template Method)是一种行为设计模式,它定义了一个操作中的算法的骨架,而将一些步骤延迟到子类中。通过这…...
GDPU Vue前端框架开发 跨年大礼包
目录 选择题 填空题 简答题 记住,年底陪你跨年的不会仅是方便面跟你的闺蜜,还有孑的笔记。 选择题 1.下列选项用于设置Vue.js页面视图的元素是()。 A. Template B. script C. style D. title 2.下列选项中能够定义Vuejs根…...
搭建一个高效且安全的APP分发平台
搭建一个高效且安全的APP分发平台需要经历一系列精心规划和实施的步骤。以下是一个详细的指南,涵盖从准备阶段到后续维护阶段的各个环节: 一、准备阶段 明确目标与需求 确定平台的目标用户群体,了解他们的需求和偏好。分析竞争对手的分发平台…...

Leetcode打卡:二叉树中的链表
执行结果:通过 题目 1367 二叉树中的链表 给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表。 如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以 head 为首的链表中每个节点的值,那么请你返回 …...

大数据技术-Hadoop(四)Yarn的介绍与使用
目录 一、Yarn 基本结构 1、Yarn基本结构 2、Yarn的工作机制 二、Yarn常用的命令 三、调度器 1、Capacity Scheduler(容量调度器) 1.1、特点 1.2、配置 1.2.1、yarn-site.xml 1.2.2、capacity-scheduler.xml 1.3、重启yarn、刷新队列 测试 向hi…...

算法 class 004(选择,冒泡,插入)
选择排序: 刚进入 j 循环的样子 j 跳出循环后,b 指向最小值的坐标 然后交换 i 和 b 位置的 值 随后 i , b i , i j1; 开始新一轮的排序, void SelectAQort(int* arr,int size)//选择排序 {for (int i 0; i < size-1; i){ //i 的位置就是…...
linux---awk命令详细教程
awk是一种强大的编程语言,用于在Linux/Unix系统下对文本和数据进行处理。以下是对awk的详细教程: 一、awk简介 awk由Alfred Aho、Brian Kernighan和Peter Weinberger三人开发,其名称分别代表这三位作者姓氏的第一个字母。awk支持用户自定义…...

一个通用的居于 OAuth2的API集成方案
在现代 web 应用程序中,OAuth 协议是授权和认证的主流选择。为了与多个授权提供商进行无缝对接,我们需要一个易于扩展和维护的 OAuth 解决方案。本文将介绍如何构建一个灵活的、支持多提供商的 OAuth 系统,包括动态 API 调用、路径参数替换、…...

STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计
SMEC88ST SDK开发包下载 目前市场上很多嵌入式产品方案都是可以破解复制的,主要是因为方案主芯片不具备防破解的功能,这就导致开发者投入大量精力、财力开发的新产品一上市就被别人复制,到市场上的只能以价格竞争,最后工厂复制的产…...

QML学习(五) 做出第一个简单的应用程序
通过前面四篇对QML已经有了基本的了解,今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目,选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型,以及输出的程…...
深入解析Android Framework中的android.location包:架构设计、设计模式与系统定制
深入解析Android Framework中的android.location包:架构设计、设计模式与系统定制 目录 引言android.location包概述核心类解析 LocationManagerLocationProviderLocationCriteriaGpsStatusGpsStatus.ListenerLocationListener位置服务的工作原理位置信息的获取与处理GPS状态…...

【C++11】类型分类、引用折叠、完美转发
目录 一、类型分类 二、引用折叠 三、完美转发 一、类型分类 C11以后,进一步对类型进行了划分,右值被划分纯右值(pure value,简称prvalue)和将亡值 (expiring value,简称xvalue)。 纯右值是指那些字面值常量或求值结果相当于…...

mongodb(6.0.15)安装注意事项,重装系统后数据恢复
window10系统 上周重装了系统,环境变量之类的都没有了。现在要恢复。 我电脑里之前的安装包没有删除(虽然之前也没在C盘安装,但是找不到了,所以需要重新下载安装),长下图这样。这个不是最新版本࿰…...
union的实际使用
记录一下,免得忘记: 1、定义一个共用体变量 这里定义一个64位变量 i2creg_rev,然后通过共用体定义两个位变量bits和bits_reverse,通过bit可以访问指定位的值大小,不需要自己再左移右移转换。 bits_reverse是bits的对…...

EKF 自动匹配维度 MATLAB代码
该 M A T L A B MATLAB MATLAB代码实现了扩展卡尔曼滤波( E...
Oracle复合索引规则指南
在Oracle中可以创建组合索引,即同时包含两个或两个以上列的索引。在组合索引的使用方面,Oracle有以下特点: 1、 当使用基于规则的优化器(RBO)时,只有当组合索引的前导列出现在SQL语句的where子句中时&#…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)
宇树机器人多姿态起立控制强化学习框架论文解析 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一) 论文解读:交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

WebRTC调研
WebRTC是什么,为什么,如何使用 WebRTC有什么优势 WebRTC Architecture Amazon KVS WebRTC 其它厂商WebRTC 海康门禁WebRTC 海康门禁其他界面整理 威视通WebRTC 局域网 Google浏览器 Microsoft Edge 公网 RTSP RTMP NVR ONVIF SIP SRT WebRTC协…...