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

操作系统·处理机调度死锁

3.1 处理机调度概述

3.1.1 处理机调度概述

高级调度 (High level Scheduling)决定把外存上哪些作业调入内存、创建进程、分配资源。高级调度又称作业调度长程调度宏观调度。只在批处理系统中有高级调度。

中级调度 (Middle level Scheduling)完成进程的部分或全部在内、外存间的交换。中级调度又称中程调度

低级调度 (Low level Scheduling)决定就绪队列中哪个进程应获得处理机。低级调度又称进程调度短程调度微观调度

3.1.2 作业调度及算法

作业基本概念:
作业:是用户提交给系统的一项相对独立的工作。比程序更为广泛,批处理系统中,以作业为单位从外存调入内存。
作业步:作业进行的步骤。
作业控制块:JCB,作业在系统中存在的唯一标识。
作业运行的三个阶段:收容、运行、完成。
作业的三种状态:后备、运行、完成。

作业调度的主要决策:
接纳多少个作业? 取决于系统多道程序度
多道程序度的确定根据计算机的系统规模、运行速度、作业大小以及能否获得较好的系统性能等

接纳哪些作业? 取决于系统的调度算法
先来先服务调度算法
短作业优先调度算法
优先级调度算法

3.1.3 进程调度及算法

进程调度的任务:
保存处理机的现场信息
按某种调度算法选取进程
把处理器分配给进程:由分派程序把处理器分配给该进程,设置选中进程的处理机现场信息,交处理机控制权给进程运行

进程调度的机制:

进程调度方式:
非抢占式(Non-preemptive Mode):不允许某进程抢占已经分配出去的处理机。
抢占方式(Preemptive Mode):允许调度程序根据某种原则,暂停正在执行进程,将处理机重新分配给另一进程。(优先权原则、短进程优先原则、时间片原则)

3.1.4 处理机调度算法的目标

共同的目标:
资源利用率( Utilization )高

公平性(Fairness)
资源的平衡利用(Balance)
策略的强制执行

批处理系统的目标:
周转时间(Turnaround time)短:每个用户都希望自己的周转时间短,系统希望 平均周转时间短
假定某一作业提交系统的时间为Si,它被选中执行,运行结束时的时间为Ei 。
周转时间为Ti =Ei – Si
则作业平均周转时间为:

平均带权周转时间为:

CPU利用率( CPU Utilization )高:尽量选择计算量大的作业
系统吞吐量(Throughput)高:吞吐量指在单位时间内系统所完成的作业数。

分时系统的目标:
响应时间(Response time)快 
响应时间是从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间。
均衡性:系统响应时间的快慢应与用户请求服务的复杂性相适应

实时系统的目标:
截止时间(Deadline)的保证
可预测性(Predictability)准则

3.2 调度算法

3.2.1 先来先服务调度算法(FCFS: First Come First Served)

调度思想:完成选择一个或多个最先进入后备队列的作业,将它们调入内存,为它们分配资源、创建进程,并放入就绪队列。

FCFS的特点:
有利于长作业,不利于短作业
有利于CPU密集/繁忙型的作业,不利于I/O密集/繁忙型的作业。
CPU密集型作业(CPU-bound process):作业大部分时间用于计算
I/O密集型作业 (I/O bound process ):作业大部分时间用于等待I/O
随着计算机运行速度加快,作业越来越趋向于I/O密集型进程

3.2.2 短作业优先调度算法(SJF: Shortest Job First)

调度思想:完成在后备队列选择一个或多个估计运行时间最短的作业,将它们调入内存,为它们分配资源、创建进程,并放入就绪队列。

SJF的特点:
优点:能有效地降低作业的平均等待时间,提高系统吞吐量。
缺点:对长作业不利,未考虑作业紧迫程度,作业的估计运行时间不准确。

3.2.3 优先级调度算法(PSA: Priority-scheduling algorithm)

调度思想:完成在后备队列选择一个或多个优先级最高的作业,将它们调入内存,为它们分配资源、创建进程,并放入就绪队列。
静态优先级
动态优先级:随着时间延长而增加

3.2.4 高响应比优先调度算法(HRRN: Highest Response Ratio Next) 

如作业等待时间相同,则处理时间越短,响应比越高,有利于短作业。
对于长作业,随等待时间增加,响应比增高,最后同样可获得处理机。
如处理时间相同,等待时间越长,响应比越高,实现的是先来先服务。

3.2.5 基于时间片的轮转调度算法(RR—Round Robin)

RR的基本原理
把CPU划分成若干时间片
按顺序赋给FCFS就绪队列中的每一个进程
时间片用完时(时钟中断请求),即使进程未执行完毕,系统也剥夺该进程的CPU,将该进程排在就绪队列末尾,同时系统选择队首进程运行

RR的进程切换时机
时间片内进程已运行完成,立即激活进程调度程序
时间片用完,计时器中断处理程序被激活,送当前进程到就绪队列末尾

时间片大小的确定
时间片大小对系统性能影响很大
时间片很小,有利于短进程,但进程调度和切换频繁,增加系统开销
时间片过大,退化为FCFS,无法满足短作业和交互式进程的需求
时间片可选取略大于一次典型交互的所需时间,使大多数交互式进程能在一个时间片内完成,从而获得很小的响应时间

3.2.6 多级反馈队列调度算法(multileveled feedback queue)

将就绪队列分为N级,每个就绪队列分配给不同的时间片,队列级别越高,时间片越短,级别越低,时间片越长。

进程第一次就绪时,进入第一级队列队尾,按FCFS 原则等待调度。

系统从第一级队列调度,当第一级为空时,系统转向第二级队列,.....

当前进程用完一个时间片,如运行完成,则退出系统,否则必须放弃CPU,并插入下一级队列队尾;如果CPU正在处理第i级队列时,有新进程加入第一级队列,或者有新唤醒的进程比当前进程的队列级别高,则新进程抢占当前进程的CPU,而原来的当前进程插入第i级队列队尾。

特点:
终端型作业用户:交互型作业,第一级队列的时间片可完成
短批处理作业用户:最多轮两次就可完成,周转时间较短
长批处理作业用户:不必担心长期得不到调度,比简单轮转性能好

3.3 实时调度

实时系统例子:实验控制、过程控制设备、机器人、空中交通管制、远程通信、军事指挥与控制系统,下一代系统还包括自动驾驶汽车、具有弹性关节的机器人控制器、智能化生产中的系统查找、空间站和海底勘探。

每种实时系统都有若干个实时进程,来反应或控制某个外部事件,它们往往带有某种程度的紧迫性,需要实时系统的调度有特殊处理,所以引入实时调度。

3.3.1 实现实时调度的基本条件

提供必要的信息:开始/完成截止时间、就绪时间、处理时间、资源要求、优先级
系统处理能力强
采用抢占式调度机制(硬实时系统)
具有快速切换机制:对外部中断的快速响应能力——要求快速硬件中断机构、允许中断的间隔短;快速的任务分派能力——系统中的每个运行功能单位适当的小

3.3.2 实时调度算法的分类

根据实时任务性质不同可分为硬实时调度和软实时调度
根据调度方式不同可分非抢占调度和抢占调度算法
根据调度时间的不同分成静态和动态调度算法;
多处理机情况下可分为集中式和分布式调度算法。

非抢占式调度算法:轮转调度算法、优先调度算法
响应时间在几秒到数十秒之间。
应用于不太严格的实时控制系统,比如工业生产的群控系统。

抢占式调度算法:基于时钟中断的抢占式优先权调度算法、立即抢占的优先权调度算法。
当实时任务到达,放在就绪队列队首,等待当前任务的自我终止或运行完成。
响应时间为数百毫秒,适用于较为严格的实时控制系统。

基于时钟中断的抢占式优先权调度算法:
当优先级高于当前任务的实时任务到达,则等到下一个时钟中断,抢占当前任务的处理机。
响应时间为几到数十毫秒之间,应用于较严格的实时系统。

立即抢占的优先权调度算法:
一旦出现请求中断的紧急任务,只要当前任务未在临界区,立即抢占它的CPU
响应时间为100微秒到几毫秒之间
系统必须具有快速响应外部中断能力

3.3.3 最早截止时间优先算法EDF

根据任务的开始截止时间来确定任务的优先级;可用于抢占式调度和非抢占式调度。

3.3.4 最低松弛度优先算法 LLF

根据任务的紧急(或松弛)程度确定任务的优先级(松弛度=必须完成的时间-还需运行的时间-当前时间),松弛度是动态变化的,主要用于可抢占式调度方式。

3.4   死锁的概念

一组进程中每个进程无限等待被该组进程中另一进程所占有的资源,而处于的一种僵持局面,若无外力作用,它们都无法向前推进,这种现象称为进程死锁(Deadlock),这组进程就称为死锁进程。

3.4.1 死锁产生的原因

竞争资源引起进程死锁
(1)可剥夺和非可剥夺资源
可剥夺资源:进程在获得这个资源后可以在被其它进程或系统剥夺
非可剥夺资源:资源被系统分配给某个进程后就不能强行收回,只能进程自己释放
(2)竞争不可抢占资源引起死锁
(3)竞争临时性资源(可消耗资源)引起死锁

进程推进顺序不当引起死锁

3.4.2 死锁产生的必要条件

一组进程中的每一个进程都在等待仅由该组进程中的其他进程才能引发的事件,那么该组进程是死锁的。
互斥条件(Mutual exclusion):涉及的资源是非共享的
不剥夺条件(no preemption):不能剥夺进程拥有资源
请求保持条件(hold and wait):进程在等待一新资源时继续占有已分配的资源
环路条件(circular wait):存在一种进程的循环链,链中的每一个进程已获得的资源同时被链中的下一个进程所请求存在一种进程的循环链,链中的每一个进程已获得的资源同时被链中的下一个进程所请求。

3.4.3 预防死锁(deadlock prevention)

通过设置某些限制条件,去破坏死锁四个必要条件中的
一个或多个,来防止死锁。
较易实现,广泛使用。
由于所施加的限制往往太严格,可能导致系统资源利用率和系统吞吐量的降低。

3.4.4 避免死锁(deadlock avoidance)

不事先采取限制去破坏产生死锁的条件,而是在资源的动态分配过程中,用某种方法去防止系统进入不安全状态,从而避免死锁的发生。
事先只需要较弱的限制条件,可获得较高的资源利用率和系统吞吐量。

3.4.5 检测死锁(deadlock detection)

事先并不采取任何限制,也不检查系统是否进入不安全区,允许死锁发生;但可通过检测机构及时检测出死锁的发生,并精确确定与死锁有关的进程和资源,然后采取适当措施,将系统中已发生的死锁清除掉。

3.4.6 解除死锁(deadlock recovery)

与检测死锁相配套,用于将进程从死锁状态解脱出来。
常用的方法是撤消或挂起一些进程以回收一些资源,再将它们分配给处于阻塞状态的进程,使
之转为就绪状态。
实现难度大,但可获得较好的资源利用率和系统吞吐量。

3.4.7 资源分配图法

二元组G=<N,E>
N:结点集,分为P,R两部分
P={p1,p2,…,pn}进程结点
R={r1,r2,…,rm}资源结点
E:边的集合,其元素为有序二元组<pi,rj> 或<rj,pi>

系统由若干类资源构成,一类资源称为一个资源类,每个资源类包含若干个同种资源,称为资源实例

结点的表示法:
资源类(资源的不同类型):用方框表示Pi
资源实例(存在于每个资源类中):用方框中的黑圆点(圈)表示

进程:用圆圈中加进程名表示边集中各边的含义:
  分配边:资源实例→进程 的一条有向边 <rj,pi>
  申请边:进程→资源类 的一条有向边 <pi,rj>

3.5 死锁的预防

破坏产生死锁的四个必要条件之一.
原理:设计不同的资源分配算法,来保证不发生死锁。

3.5.1 破坏互斥条件

如果资源不需要互斥访问,就可以破坏互斥条件。
对于某些硬件资源,可以采用特殊技术实现允许同时访问;
对于软件资源,无法实现。

3.5.2 破坏请求和保持条件

第一种协议:在执行时不再提出资源请求系统要求所有进程要一次性地申请在整个运行过程中所需
的全部资源。若系统有足够资源则完全分配。
缺点:
用户作业必须等待,直到所有资源满足才能运行。
一个作业运行期间,对某些设备的使用时间很短,甚至不会用到。如:当用户作业出错时才需要打印机输出错误信息,但采用静态分配法必须把打印机分配给该作业,并长期占用。采用该方法对系统来说是非常浪费的。

第二种协议:请求,不保持所有资源
获得初期所需资源以后就开始运行,在运行过程中逐步释放分配给自己的并且已经用毕的全部资源,然后再请求新的所需资源。

3.5.3 破坏不可抢占条件

一个已拥有资源的进程,若它再提出新资源要求而不能立即得到满足时,它必须释放已经拥有的所有资源待以后需要时再重新申请。

实现复杂且要付出很大的代价(以前工作的失效,执行的推迟)。

3.5.4 破坏环路条件

系统将所有资源按类型进行线性排序,并赋予不同的序号,所有进程对资源的请求必须严格按照资源序号递增的次序提出。

例如:系统中有下列设备:输入机(1),打印机(2),穿孔机(3),磁带机(4),磁盘(5)。有一进程要先后使用输入机、磁盘、打印机,则它申请设备时要按输入机、打印机、磁盘的顺序申请。

优点:同前两法相比,其资源利用率和系统吞吐量有较明显的改善。 
缺点:进程实际需要资源的顺序不一定与资源的编号一致,因此仍会造成资源浪费;资源的序号必须相对稳定,从而限制了新设备的增加。

3.6 避免死锁

3.6.1 系统的安全状态

在系统运行过程中,对进程提出的每一个(系统能够满足的)资源申请进行动态检查(安全性检
查);根据检查结果决定是否分配资源,若分配后系统可能发生死锁,则不予分配,否则予以分配。

如果系统能按某种顺序为每个进程依次分配其所需的资源,直至所有进程都能运行完成,称此时
系统处于安全状态。
这种进程的顺序,如P4,P1,…,Pn, 称为安全序列。
若不存在这样一个安全序列称此时系统处于不安全状态。

注意:不安全状态≠死锁
处于不安全状态的系统不一定会发生死锁;处于安全状态的系统一定不会发生死锁。
系统处于安全与不安全状态都是静态进行的评价。

安全状态举例:

由安全状态向不安全状态的转换: 

3.7.2 利用银行家算法避免死锁

银行家算法中的数据结构:

可利用资源向量(Available)是一个含有m个元素的数组,其中每个元素代表一类资源的可利用的数目。

最大需求矩阵(Max)n×m矩阵,n为当前系统进程的数目,m为系统资源种类数。Max[i,j]为第i个进程对j类资源的最大需求。

分配矩阵(Allocation )n×m矩阵,表示每个进程已分配的每类资源数。

需求矩阵(Need)n×m矩阵,表示每个进程还需要各类资源数。

Need[i,j]= Max[i,j]- Allocation[i,j]

银行家算法:
当Pi发出资源请求,分配一个Request向量。(Request_i:是进程Pi的请求向量。如Request_i[j]=K,表示进程i需要K个R_j类型的资源。)然后系统按下述流程进行执行。


安全性算法:
增加两个向量:Work和Finish
Work表示系统可提供给进程继续运行所需的各类资源数目(即在试着分配过程中,系统的可用资源数)。初始值 Work∶=Available(可用资源向量);
Finish表示系统是否有足够的资源分配给进程i,使之运行完成。初始值 Finish[i]:=false(布尔型);当有足够资源分配给进程时 Finish[i]:=true。

3.8 死锁的检测和解除

3.8.1 死锁检测

允许死锁发生,操作系统不断监视系统进展情况,判断死锁是否发生 
一旦死锁发生则采取专门的措施,解除死锁并以最小的代价恢复操作系统运行

检测时机:
定时检测
当进程阻塞时检测死锁(其缺点是系统的开销大)
系统资源利用率下降时检测死锁

检测方法:资源分配图法

死锁定理:如果资源分配图中没有环路,则系统中没有死锁,如果图中存在环路则系统中可能存在死锁。如果每个资源类中只包含一个资源实例,则环路是死锁存在的充分必要条件。

资源分配图化简:
1.找一个非阻塞非独立的进程结点,去掉分配和请求边,将其变为孤立结点;
2.再把相应的资源分配给一个等待该资源的进程,即将某进程的申请边变为分配边
3.重复以上步骤,若所有进程都可成为孤立结点,称该图是可完全简化的,否则称该图是不可完全简化的。

死锁状态的充分条件是:资源分配图是不可完全简化的。

3.8.2 死锁的解除

抢占资源
终止或者撤销进程(终止所有进程、逐个终止进程)

重要的是以最小的代价解除死锁,恢复系统运行。方法如下:
撤消所有的死锁进程
连续撤消死锁进程直至不再存在死锁
连续剥夺资源直到不再存在死锁
把每个死锁进程备份到前面定义的某个检查点,并重新启动所有进程

相关文章:

操作系统·处理机调度死锁

3.1 处理机调度概述 3.1.1 处理机调度概述 高级调度 (High level Scheduling)决定把外存上哪些作业调入内存、创建进程、分配资源。高级调度又称作业调度、长程调度或宏观调度。只在批处理系统中有高级调度。 中级调度 (Middle level Scheduling)完成进程的部分或全部在内、…...

SQL第四次上机实验

1.查询借阅了计算机类或者文学类图书的读者的借书证号 USE TSGL GO SELECT DISTINCT Reader.Lno FROM Book,Lend,Reader WHERE Book.ISBNLend.ISBN AND Lend.LnoReader.Lno AND Class 计算机类 OR Class 文学类2.查询同时借阅了计算机类和文学类图书的读者的借书证号 USE T…...

读书笔记:彼得·德鲁克《认识管理》第11章 若干例外及经验教训

一、章节内容概述 例外的服务机构不仅表明服务机构实现卓越绩效不是天方夜谭&#xff0c;而 且指明了实现的方法。这一课&#xff0c;是美国电话电报公司给“自然垄断行业”上的;是19世纪后期处于创建阶段的美国现代大学给学校或医院类机构上的;是20世纪30年代的田纳西河流域管…...

JVM-虚拟机的故障处理与调优案例分析

案例1&#xff1a;大内存硬件上的程序部署策略 一个15万PV/日左右的在线文档类型网站最近更换了硬件系统&#xff0c;服务器的硬件为四路志强处理器、16GB物理内存&#xff0c;操作系统为64位CentOS 5.4&#xff0c;Resin作为Web服务器。整个服务器暂时没有部署别的应用&#…...

JMeter 相关的面试题

&#x1f4e2;专注于分享软件测试干货内容&#xff0c;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;交流讨论&#xff1a;加入1000人软件测试技术学习交流群&#x1f4e2;资源分享&#xff1a;进了字节跳动之后&#xff0c;才…...

你在React项目中是如何使用Redux的? 项目结构是如何划分的?

一、背景 在前面文章了解中&#xff0c;我们了解到redux是用于数据状态管理&#xff0c;而react是一个视图层面的库 如果将两者连接在一起&#xff0c;可以使用官方推荐react-redux库&#xff0c;其具有高效且灵活的特性 react-redux将组件分成&#xff1a; 容器组件&#…...

[每周一更]-(第71期):DevOps 是什么?

Wiki的解释&#xff1a; DevOps&#xff08;Development和Operations的混成词&#xff09;是一种重视“软件开发人员&#xff08;Dev&#xff09;”和“IT运维技术人员&#xff08;Ops&#xff09;”之间沟通合作的文化、运动或惯例。 通过自动化“软件交付”和“架构变更”的…...

k8s的安装部署,详细过程展示(保姆级安装教程)

k8s应用部署方式演变 在部署应用程序的方式上&#xff0c;主要经历了三个时代&#xff1a; 传统部署&#xff1a;互联网早期&#xff0c;会直接将应用程序部署在物理机上 优点&#xff1a;简单&#xff0c;不需要其它技术的参与 缺点&#xff1a;不能为应用程序定义资源使用…...

基于windows、GDAL2.2.3版本和Java集成安装和使用GDAL库的方法

基于windows、GDAL2.2.3版本和Java集成安装和使用GDAL库的方法 一、下载gdal windows版本64位2.2.3版本 下载地址&#xff1a; https://www.gisinternals.com/archive.php 找到gdal-202-1911-x64-core.msi下载并安装 安装后默认目录为&#xff1a;C:\Program Files\GDAL 二、…...

AlphaControls控件TsRadioGroup的使用

通常使用AlphaControls控件中的TsRadioGroup时&#xff0c;往往使用默认值&#xff0c;会造成TsRadioGroup标题被TsRadioGroup的ITEMs占用&#xff0c;严重影响美观&#xff1a; 解决方案&#xff0c;通过对TsRadioGroup的ContentVOffset属性&#xff0c;设置为10。即可立即改善…...

安卓常见设计模式8------享元模式(Kotlin版)

1. W1 是什么&#xff0c;什么是享元模式&#xff1f;​ 享元模式&#xff08;Flyweight Pattern&#xff09;是一种结构型设计模式&#xff0c;用于有效地支持大量细粒度的对象共享。在 Android 中&#xff0c;享元模式可以用于减少内存使用和提高性能&#xff0c;特别是在需…...

day54 django中orm数据库增删改查

昨日内容回顾 三板斧问题 HttpResponse # 返回的是字符串 render # 渲染一个HTML静态文件&#xff0c;模板文件 redirect # 重定向的 ​ """在视图文件中得视图函数必须要接收一个形参request&#xff0c;并且&#xff0c;视图…...

【js逆向实战】某sakura动漫视频逆向

写在前面 再写一个逆向实战&#xff0c;后面写点爬虫程序来实现一下。 网站简介与逆向目标 经典的一个视频网站&#xff0c;大多数视频网站走的是M3U8协议&#xff0c;就是一个分段传输&#xff0c;其实这里就有两个分支。 通过传统的m3u8协议&#xff0c;我们可以直接进行分…...

L2-015 互评成绩

学生互评作业的简单规则是这样定的&#xff1a;每个人的作业会被k个同学评审&#xff0c;得到k个成绩。系统需要去掉一个最高分和一个最低分&#xff0c;将剩下的分数取平均&#xff0c;就得到这个学生的最后成绩。本题就要求你编写这个互评系统的算分模块。 输入格式&#xf…...

【Docker安装RockeMQ:基于Windows宿主机,并重点解决docker rocketMQ安装情况下控制台无法访问的问题】

拉取镜像 docker pull rocketmqinc/rocketmq创建网络 docker network create rocketmq-net构建namesrv容器 docker run -d -p 9876:9876 -v D:/dockerFile/rocketmq/namesrv/logs:/root/logs -v D:/dockerFile/rocketmq/namesrv/store:/root/store --network rocketmq-net -…...

Android Studio——android项目运行main()函数

报错&#xff1a; 解决&#xff1a; 如图&#xff0c;在 .idea 的 gradle.xml 中标注的位置增加如下一行代码即可<option name"delegatedBuild" value"false" />...

移动医疗科技:开发互联网医院系统源码

在这个数字化时代&#xff0c;互联网医院系统成为了提供便捷、高效医疗服务的重要手段。本文将介绍利用移动医疗科技开发互联网医院系统的源码&#xff0c;为医疗行业的数字化转型提供有力支持。 智慧医疗、互联网医院这一类平台可以通过线上的形式进行部分医疗服务&#xff…...

代码审计, 介绍, 思路总结

代码审计 一, 代码审计介绍 渗透测试中的代码审计是一个关键步骤&#xff0c;它涉及到深入检查应用程序的源代码&#xff0c;以发现安全漏洞、弱点或不合规的编码实践。这种审计通常由专业的安全工程师或渗透测试人员执行&#xff0c;并侧重于识别可能被黑客利用的安全缺陷。…...

2023NOIP A层联测27 总结

T1 一棵树&#xff0c;操作是把一个点染黑&#xff0c;查询点 x x x 到黑点路径上的最小编号&#xff0c; n ≤ 1 0 6 n\le10^6 n≤106。当时的思路是把树分成几部分&#xff0c;中间和周围的散块&#xff0c;发现不会&#xff0c;就没思路了&#xff0c;就去打了25pts暴力。赛…...

2022最新版-李宏毅机器学习深度学习课程-P34 自注意力机制类别总结

在课程的transformer视频中&#xff0c;李老师详细介绍了部分self-attention内容&#xff0c;但是self-attention其实还有各种各样的变化形式&#xff1a; 一、Self-attention运算存在的问题 在self-attention中&#xff0c;假设输入序列&#xff08;query&#xff09;长度是N…...

后进先出(LIFO)详解

LIFO 是 Last In, First Out 的缩写&#xff0c;中文译为后进先出。这是一种数据结构的工作原则&#xff0c;类似于一摞盘子或一叠书本&#xff1a; 最后放进去的元素最先出来 -想象往筒状容器里放盘子&#xff1a; &#xff08;1&#xff09;你放进的最后一个盘子&#xff08…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 &#xff08;部分有免费额度&#x…...

学习STC51单片机32(芯片为STC89C52RCRC)OLED显示屏2

每日一言 今天的每一份坚持&#xff0c;都是在为未来积攒底气。 案例&#xff1a;OLED显示一个A 这边观察到一个点&#xff0c;怎么雪花了就是都是乱七八糟的占满了屏幕。。 解释 &#xff1a; 如果代码里信号切换太快&#xff08;比如 SDA 刚变&#xff0c;SCL 立刻变&#…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么&#xff1f;1.1.2 感知机的工作原理 1.2 感知机的简单应用&#xff1a;基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...