详解操作系统各章大题汇总(死锁资源分配+银行家+进程的PV操作+实时调度+逻辑地址->物理地址+页面置换算法+磁盘调度算法)

news2024/11/18 7:40:37

文章目录

  • 第三章:死锁资源分配图
    • 例一
    • 例二
  • 第三章:银行家算法
  • 第四章:进程的同步与互斥
  • 做题步骤
    • PV操作的代码
      • 小心容易和读者写者混
    • 1.交通问题(类似读者写者)
      • 分析
      • 代码
    • 2.缓冲区问题(第二个缓冲区是复制缓冲区)(答案看下面的.19)
      • 分析
      • 代码
    • 3.售票员问题(生产者消费者)(好好吃透,进程同步不在话下)
      • 分析
      • 代码
    • 4.水果盘进餐问题
    • 5.水果盘进餐拓展(见下面课后题20)
    • 6.仓库入库出库问题
    • 7.缓冲区问题
      • (1)尹老师单缓冲区但中间需要处理问题(三个信号量)
      • (2)课本单缓冲区,但缓冲区不需要处理(俩个信号量)
      • (3)双缓冲区问题(本质上是俩个单缓冲区)(四个信号量)
  • 课后习题讲解
    • 16.生产偶数奇数问题(只要有操作访问临界区,就得上锁之后解锁)
      • 分析
      • 代码
      • 总结
    • 17.销售服务问题(我认为最难的一道)
      • 分析
      • 代码
      • 总结
    • 18.单缓冲区问题(easy,但得注意答案格式)
    • 19.令我痛彻心扉的缓冲区问题
      • 分析
      • 代码
      • 总结
    • 20.可以放下五个水果的水果盘子问题
      • 分析
      • 代码
      • 拓展:如果妈妈进程负责生产橘子的话
      • 总结
    • 21.不会发生死锁的哲学家进餐问题
  • 考试真题汇总
    • 三个进程既是生产者又是消费者(未知年份)(难度五个星)
  • 第四章:实时调度
  • 第五章:利用逻辑地址计算物理地址
  • 做题步骤
    • 1.计算页表中块号的位数
      • 计算页号和页内地址(逻辑地址空间的格式)
      • 计算页表有多少项及至少(因为地址块不一定连续)页表项的位数
    • 2.给出逻辑地址和页表计算物理地址
    • 3.计算段表的逻辑地址与物理地址
  • 第六章:页面置换算法
  • 做题步骤
      • 1.OPT最佳页面置换算法
      • 2.FIFO先进先出页面置换算法
      • 3.LRU最近最久未使用页面置换算法(看横轴谁最长)
  • 第七章:磁盘调度算法
  • 做题步骤
    • 1.FCFS先来先服务
    • 2.SSTF最短寻道时间优先
    • 3.SCAN撞墙回头算法

第三章:死锁资源分配图

小插曲:也是关于死锁的一个题目

image-20231228195335631

做题原则:分配大于请求(包括进程本身自己也得遵守这个规则)

资源指向进程,是分配

进程指向资源,是请求

一句话:先把资源都分配了,再看我们进程想要的资源能否得到

例一

img

我们先分析线少的:对于P2来说,P2有一个,而且这个还是资源分配,一定可以删除

接着再看P1:P1先获得了R2,接着P1想请求R1,但是R1必须先给P3,此时还剩下一个R1,说明P1也可以删除

img

接着再看P3:R1给一个,R2给一个,那么P3直接高枕无忧了,随便去

最后P4,它就想要一个R2,而且也没有人和它抢,自然可以删除

img

例二

image-20231227214003142

我们先看P4:先获得R5,R4,这个是符合我们的优先分配的规则,之后再看P4能否请求到R3;R3给了P5一个,但是还剩下一个,所以P4可以走

image-20231227214356357

我们再看P5:先获得R3,再请求R5的时候没有人抢,自然P5也可以走了

image-20231227214434729

再看P3:R2给了P2,P3,这就导致P3再请求R2的时候,无法请求到,所以P3走不了

再看P2:R2给了P2,P2想要R1的时候,R1已经全部给了P1,无法请求到,所以P2走不了

再看P1:R1给了P1,R2给了P2和P3,所以P1想要R2的时候,无法请求到,所以P1走不了

第三章:银行家算法

  1. 计算当前可用资源量
  2. 写出全部进程的所需资源量 (MAX-Allocation=Need数组)
  3. 满足条件的,删除进程并且加上对其分配的资源量(不是加Max)(我们加的 本质上就是计算Need数组时候的被减数!
  4. 循环上述步骤
  5. 写安全序列的时候,遇到多个进程可删时,尽量满足从小到大或者从大到小的基本顺序走

image-20240101211839884


要点:

1.计算出我们拥有的可用资源

2.可用资源和每个进程的所需资源进行比较,不是和Max资源比较,而是和Max-Allocation进行比较(换句话讲,就是已经分配给一部分了)

3.我们回收资源的时候,一定是 Need + Allocation 数组才可以 而不是 Need + Available 数组 这样就大错特错了

而且要点三是最容易出问题的,有时候算的算的就走火入魔了! 上一个加的还是已分配资源量,下一个加的就是所需资源总量了

第四章:进程的同步与互斥

做题步骤

  1. 排列进程
  2. 分析进程自身与进程之间的关系
  3. 建立信号量对应某种资源
  4. 只要需要访问临界区,就得上锁!
  5. 前V后P 前后都指的是事件!

关于变量的初值:

信号量的初值为n,表示系统中共有n个资源

mutex的初值为n,表示临界资源共有n个

如果需要互斥访问临界区,那么需要互斥信号量=1

如果信号量小于0,那么信号量的绝对值就是当前阻塞队列当中进程的个数

关于书写方法:

写函数–>写动作–>观察是同步还是互斥书写PV操作

对我来说判断进程同步或者互斥的方法:

image-20231226094537099

对于生产者消费者来说,是进程同步,因为如果发生阻塞的话,只要有生产,就可以唤醒消费,这就是同步

对于读者写着来说,是进程互斥,但是有争议的地方就是,当只有一个读者的时候,如果此时写者来了,被阻塞,读者走后,看起来就像是读者唤醒的写者,二者不能说是一点同步关系也没有,间接来讲肯定是有的。现在我们看一种情况:如果有5个读者进程正在读取文件,又来了一个写者,写者被阻塞,此时走1个走2个走3个读者并不会唤醒写者,而是只有最后一个读者走了才可以唤醒写者,所以这并不是进程同步,而是进程互斥访问文件临界资源的体现(回看的时候,还得是我自己能给我解决问题啊!)

因为我分析同步的时候喜欢用前V后P,所以就有一种误区是只要可以用只有…才…就是进程同步,实则不然,二者没有必然联系

思考进程同步的时候,多考虑考虑极端情况,比如缓冲区为空,缓冲区为满,缓冲区为一个三种情况必须全部考虑清楚才可以答对题目

解题步骤:

注意事项:

  • 生产者消费者同步问题一定是先p(empty),p(full)才p(mutex),否则会发生死锁!
  • 对于生产者消费者这类型的同步问题,如果临界资源的大小是1,那么就不必为临界资源加上mutex(当然加上也很好的)
  • 分析俩个进程并发是否会产生死锁,可以通过A->B,B->A,A->B->A(过桥问题)这样三个操作来判断,基本上有没有问题就可以甄别出来了;对于生产者消费者的死锁,还得改变一下信号量的初始值,这样有利于分析

PV操作的代码

小心容易和读者写者混

image-20231226100815218

1.交通问题(类似读者写者)

有桥如下图所示,车流方向如箭头所示。

假设桥上不允许两车交会,但允许同方向多辆车依次通过(即桥上可有多个相同方向行驶的车辆),试用wait和signal操作实现桥上的交通管理

image-20231203120520389

分析

这个俩个互斥的问题,临界资源是我们的桥,一次只可以由一边通过,之前我有误区,我认为这个也存在同步关系,实则不然,二者完全是对临界资源的互斥访问,假设车向右走的时候,左车来了被阻塞,当右车走完左车被唤醒,这个看起来是右车唤醒的左车(我刚开始理解的),但是后来其实是右车将互斥资源放出来了,左车等的只是资源,和右车没有直接关系(间接多多少少有点,但不是同步)

这个题麻烦就麻烦在:左车和左车进程不互相阻塞,但是左车在的时候右车不可以来;反之

image-20231203121505979

所以这样是解决不了问题的,我们必须引入count变量,而且还得小心这个代码书过程中的进程阻塞问题(小心写反)

但是上面这个代码的意思是:每次只能有一辆车行驶

代码

经过分析,不难写下以下代码:

image-20231203123110632

这段代码是有死锁风险的!

尹老师回复如下:当左边车正在行走的时候,right第一个车来了,那么会阻塞在p(bridge_mutex),但是这个时候,mutex的值变成了0,左边车本来明明可以进去的,现在也被阻塞了,所以俩个mutex必须搞成不一样的才对!

为什么左右的第一行要用不同的mutex?

原因一:这俩个mutex的本质作用就是保护count变量,俩边的count不同,怎么可以用相同的mutex变量来互斥访问count?

原因二:会出现死锁!

信号量的初始值:

semaphore count_left=0;//通过左边汽车的数量

semaphore count_right=0;//右边汽车

semaphore left_mutex=1;//保护count left

semaphore right_mutex=1;

semaphore bridge_mutex=1;//临界资源 桥

标准答案:

image-20231203155038156

void left()
{
    p(left_mutex);
    if(count_left==0) p(bridge_mutex);
    count_left++;
    v(left_mutex);

    //过桥

    p(left_mutex);
    count_left--;
    if(count_left==0) v(bridge_mutex);
    v(left_mutex);
}
void right()
{
    p(right_mutex);
    if(count_right==0) p(bridge_mutex);
    count_right++;
    v(right_mutex);

    //过桥

    p(right_mutex);
    count_right--;
    if(count_right==0) v(bridge_mutex);
    v(right_mutex);
}

2.缓冲区问题(第二个缓冲区是复制缓冲区)(答案看下面的.19)

用wait、signal操作解决下图之同步问题提示:分别考虑对缓冲区S和T的同步,再合并考虑

image-20231203155728677

分析

这不妥妥的进程同步,而且进程同步的代码有个特点,就是对于一个信号量来说PV操作交叉

我认为这个题的难点在于==初始值的大小,不可以一味的全部设置为1,得分析后再得出结论==

而且容易想的简单,因为复制缓冲区进行的动作本质上是俩个!

代码

初始变量赋值:

semaphore sin=1;

semaphore sout=0;

semaphore tin=1;

semaphore tout=0;

为什么我感觉这种方法没有很好的保护process缓冲区呢??

image-20231203160434946

semaphore sin=1;
semaphore sout=0;
semaphore tin=1;
semaphore tout=0;
semaphore mutex=1;
void p(semaphore a)
{

}
void v(semaphore a)
{

}
void get()
{
    p(sin);

    //写入S

    v(sout);
}
void process()
{
    p(sout);

    //放入局部缓冲

    v(sin);

    //处理ing

    p(tin);

    //给出去

    v(tout);
}
void put()
{
    p(tout);

    //取走

    v(tin);
}

3.售票员问题(生产者消费者)(好好吃透,进程同步不在话下)

为保证车辆行驶安全,售票员必须关好车门,然后通知司机启动车辆,在行驶过程中售票员不能打开车门

待车到站停稳后,司机通知售票员才能打开车门,如此不断重复。

分析

由于售票员关门,司机就可以开车;司机停下,售票员就可以开门,一对一直接可以影响不需要等到最后一个,所以这是同步关系

为此,须设置两个信号量S1,S2用来控制司机和售票员的行为,初值都为0

这个题的难点在于动作较多,能不能正确书写PV操作的位置,就必须使用我们的前V后P操作来书写:

只有停车才可以开门 只有关门才可以开车

则停车 v 开门 p 关门 v 开车 p

代码

初始值变量:

semaphore S1=0;

semaphore S2=0;

动作如下:

image-20231203162731573

ed026de7b2d81675fbee60b90162636

4.水果盘进餐问题

这个就是生产者消费者同步问题,而且临界资源大小为1,所以不需要加mutex(加上肯定不错)

770b3ce5c43d4af8730e7fa32369d80

e3cbad25dc984eedc0f38e051ae68dc

5.水果盘进餐拓展(见下面课后题20)

6.仓库入库出库问题

d50622d68305b2ae0495d0caaab6739

59d612e4074566be8978d2a01f13363

7.缓冲区问题

(1)尹老师单缓冲区但中间需要处理问题(三个信号量)

尹老师的这个单缓冲区内部还得对信息进行处理,否则无法被打印进程给取走的!

image-20231210175406794

semaphore Sget=1;

semaphore Sprocess=0;

semaphore Stransfer=0;

image-20231210180137331

(2)课本单缓冲区,但缓冲区不需要处理(俩个信号量)

image-20231210175717479

(3)双缓冲区问题(本质上是俩个单缓冲区)(四个信号量)

为什么我突然想把这三个整合在一起呢? 是因为我发现双缓冲区的第三个进程的最后生成的变量,与进程一无关,不禁让我引起思考:很明显,双缓冲区实则上是俩个单缓冲区的结合,最后一个进程和第一个进程并没有了直接的关系

image-20231204170928331

课后习题讲解

16.生产偶数奇数问题(只要有操作访问临界区,就得上锁之后解锁)

image-20231210180958491

分析

N个单元,那么mutex初始值为N

而且题目上也说,互斥使用!缓冲区是临界资源,想要互斥访问,就得写一个互斥信号量mutex=1,临界资源就必须得互斥访问!!!

put()送入缓冲区,表明put前后需要加上互斥信号量,因为是访问临界区

P2:getodd()countodd()都是在访问缓冲区,所以必须上锁

P3:geteven也是在缓冲区内,counteven统计偶数,缓冲区统计

本质上就是生产者消费者,有点像水果盘子一个父亲既给苹果又给橘子

注意我们这个时候已经没有了full变量,而是拆分成了俩个

代码

image-20231210180935577

总结

这个if else写的很妙 考试考出来一定得多加思考

你比如 题上和你说 我从缓冲区拿数字啦 统计数字啦 等等 就得把这些操作都放在锁里 这个是我最想说的心得!!!!!!!

17.销售服务问题(我认为最难的一道)

咬文嚼字:1个服务窗口 10个座位(seat=10)有空座位 则取号(取号时一次只有一个人 )

取号机是临界资源 seatnumber=1 互斥访问

一个同步关系:当营业员空闲 则叫顾客

image-20231204173112440

分析

寻找互斥(某个东西竞争使用)和同步(有一定的执行顺序)的关系:

取号机的使用是互斥

顾客取到号通知营业员是同步

营业员叫号顾客是同步

将俩个进程都写出来,对比着写,会更清楚一点

只有取到号,才可以叫号 这是一个同步关系 但是它为了简单,并没有写只有叫号才可以有顾客来这个操作,是为了简化

但是不知道为什么 它即使写出一个同步 也感觉非常的合理 这就是有点疑惑的地方 让我不经怀疑 是不是只有本身就是只有一个同步

和尹老师交流完之后,老师说这个题没有写成俩个同步,本意就是想要简化一下,只要逻辑通顺就是最好了

代码

信号量的设置:

image-20231204174726884

numget换成mutex也可以,因为只有一个人可以取号,是互斥信号量

seat是互斥信号量

custom是同步信号量,设置初始值为0(只有当取完号后,才可以通知营业员可以叫人了)

座位少了一个,人才可以多一个

人被叫走了,座位才可以多一个

取号 v(custom) p(custom) 叫号

image-20231204174714317

总结

关于座位和顾客的关系,就像盘子和苹果的问题,如果盘子中有苹果和橘子,那么我想访问盘子资源,那就是p(plate),当我拿走苹果之后,就是v(apple),盘子的数量减一,那么苹果的数量加一,并不是说PV是同一种资源,是俩种不同的资源,但是二者也会有关系

在这个题也是一样,empty和full是俩个不同的资源,能写成PV操作,正是因为少一个空的座位,就多一个顾客这样的逻辑

18.单缓冲区问题(easy,但得注意答案格式)

image-20231210175406794

image-20231210175717479

19.令我痛彻心扉的缓冲区问题

image-20231204172001331

分析

image-20231204170415805

从分析缓冲区的箭头来说,一共有三个箭头,我就误以为需要三个信号量,但是再看看进程这边,发现是俩个信息,所以本质上我们需要的信号量是俩组

对于缓冲区1来说,P1生产,P2消费

对于缓冲区2来说,P2生产,P3消费

正是因为P2既是生产者又是消费者,所以内部代码才应该有俩组进程存在

而且缓冲区1和缓冲区2只可以存放一个记录,所以不需要mutex来保证临界资源的互斥,empty和full最大值不超过1就可以保证了

代码

信号量的初始化:

我们需要empty1=1,full1=0,empty2=1,full2=0

注意:P2进程的俩个P操作不可以颠倒,否则一定会死锁的,我们接收的是P1来的数据,所以一定得先p(full1)才可以,表明收到了P1发来的数据

image-20231204170928331

总结

本质上是俩组生产者消费者问题,注意好信号量的取值和pv操作的顺序即可

而且我感觉第二个缓冲区写出俩个P 再写俩个V 这样是为了更好的保护缓冲区2

20.可以放下五个水果的水果盘子问题

image-20231204172018595

咬文嚼字:5个水果 plate=5;盘子是临界资源 mutex=1;

分析

这个题本质上和16题是一样样的,消费者给生产者提供的是empty,但是由于消费者有俩个,所以生产者不可以单纯的提供一个full,而是通过if判断

而且由于此时水果盘是临界资源,所以我们需要加上mutex来进行互斥访问才可以的

代码

信号量初始值:

semaphore empty=5,orange=0,apple=0,mutex=1;

image-20231204172431988

拓展:如果妈妈进程负责生产橘子的话

b92679b6ff049e149e5fb3a10f6d1e0

8de8b60ae83558d058bb5f1741a26ad

总结

本题是生产者-消费者问题的变形,相当于一个能生产两种产品的生产者(爸爸)向两个消费者(儿子和女儿)提供产品的同步问题,因此,须设置两个不同的full信号量apple和orange,它们的初值均为0。

而且水果盘可以放几个水果,就直接修改empty的值就可以了!

21.不会发生死锁的哲学家进餐问题

image-20231210181457165

标准答案是采用了方法一:只允许四个哲学家同时进来拿筷子

设置一个SUM=4的值,给哲学家进餐代码前后加上 P(SUM) 和 V(SUM)即可!

诶哟 我服了 尹老师强调不可以多一个筷子 幸好听到了 要不然就寄了

考试真题汇总

三个进程既是生产者又是消费者(未知年份)(难度五个星)

image-20231203102741959

image-20231210184233462

image-20231210184241935

image-20231210184255790

image-20231210184304334

第四章:实时调度

LLF 和 EDF一共有俩个调度时机

image-20231228195633730

第五章:利用逻辑地址计算物理地址

做题步骤

  1. 画出页表的结构(页号 块号)
  2. 用逻辑地址 ➗ 页面大小(也就是我们的块大小) 得到结果 结果为页号 同时还有余数 余数为偏移量
  3. 观察页表,看页号对应哪一个块号 使用块号*页面大小(即块大小)+偏移量 = 物理地址

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1.计算页表中块号的位数

计算页号和页内地址(逻辑地址空间的格式)

首先必须声明一下,这都是逻辑的,和物理无关

image-20231207202121711

前一部分为页号P,后一部分为位移量W,即页内地址

页号:页的数量

页内地址:页的大小

计算页表有多少项及至少(因为地址块不一定连续)页表项的位数

有多少个页面,页表项就是多少,有32页,项就有32个,也就是说页表有32行,有32个页号

==计算页表项位数:==关键在于计算物理块有多少个 因为页表的存在本来就是一个块号对应一个物理块,那么想知道块号位数,算出有几个就好了

将页面(内存块)大小理解成内存的横轴

将块号理解成内存块的纵轴

长方形的面积=横轴*纵轴

长方形的面积=内存块大小

横轴=页面大小

纵轴=块号

块号是物理地址的纵轴,但它是页表的横轴

2.给出逻辑地址和页表计算物理地址

在这里插入图片描述

3.计算段表的逻辑地址与物理地址

在这里插入图片描述

不可想当然认为就是K =1000 这是非常致命的错误想法

第六章:页面置换算法

做题步骤

  1. 写出序列
  2. 确定内存块数
  3. 根据不同算法在每个序列数字下面画出对应的页面情况
  4. 缺页率=画出的页面/总序列个数

中断就是缺页 刚开始页面为空的时候也是中断


1.OPT最佳页面置换算法

这个算法的本质是淘汰以当前页面为基准向后找最后一个出现的

2.FIFO先进先出页面置换算法

上中下一个一个淘汰就好

3.LRU最近最久未使用页面置换算法(看横轴谁最长)

淘汰呆的时间长的 但是一定要小心更新 一旦更新虽然页表内容没有变化,但是这个被更新的数字变得活跃了!

难点:这里虽然是更新,但是更新的意思是==前面的时间一笔勾修,更新这一次也得记录入呆的时间中去!==

1 2 4 2 6 2 1 5 6 1 的LRU 缺页率

在这里插入图片描述

客官请看:在第六个序列的时候 2来了,此时是更新,但是也得写入6 2 4 只要写入,就会被记录一次时间,当到了第8个序列的时候,2本质上是已经呆了三个时间段了! 这里是我之前的盲区

第七章:磁盘调度算法

做题步骤

当计算SSTF 和 SCAN 的时候,建议把流程图画出来!尤其是SCAN 只要画出来图,寻道长度计算非常快!

对于SSTF SCAN 一定要对访问磁道进行排序!


image-20231210171139232

image-20231210171035947

6d90e5923aa7c94983eff0c77a67152

ade256a464490cf62c8e054e66cc054

1.FCFS先来先服务

我特别想要强调的是:FCFS不会造成磁盘黏着!!!! 有且仅有这一个算法是这样的!

2.SSTF最短寻道时间优先

3.SCAN撞墙回头算法

这个是双向的,就是如果是100开始且递增的话,那么刚开始就是递增,等撞到南墙之后回来就是递减

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1417805.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索Pyecharts关系图绘制技巧:炫酷效果与创意呈现【第42篇—python:Pyecharts水球图】

文章目录 Pyecharts绘制多种炫酷关系网图引言准备工作代码实战1. 基本关系网图2. 自定义节点样式和边样式3. 关系网图的层级结构4. 添加标签和工具提示5. 动态关系网图6. 高级关系网图 - Les Miserables 示例7. 自定义关系网图布局8. 添加背景图9. 3D 关系网图10. 热力关系网图…

CVPR——Latex模版下载

CVPR官网 -> AuthorGuidelines 链接:AuthorGuidelines

基于Java SSM框架实现学生就业服务平台系统项目【项目源码】

基于java的SSM框架实现学生就业服务平台系统演示 JSP技术介绍 JSP技术本身是一种脚本语言,但它的功能是十分强大的,因为它可以使用所有的JAVA类。当它与JavaBeans 类进行结合时,它可以使显示逻辑和内容分开,这就极大的方便了学生…

Python笔记15-实战小游戏飞机大战(中)

文章目录 创建第一个敌机创建一群敌机创建多行敌机让敌机移动射杀敌机生成新的敌机群结束游戏有敌机到达屏幕底端游戏结束 在上一篇基础上继续 本示例源码地址 点击下载 创建第一个敌机 在屏幕上放置外星人与放置飞船类似。每个外星人的行为都由Alien 类控制,我们…

[Python图像处理] 使用OpenCV创建深度图

使用OpenCV创建深度图 双目视觉创建深度图相关链接双目视觉 在传统的立体视觉中,两个摄像机彼此水平移动,用于获得场景上的两个不同视图(作为立体图像),就像人类的双目视觉系统: 通过比较这两个图像,可以以视差的形式获得相对深度信息,该视差编码对应图像点的水平坐标的…

智慧文旅:打造无缝旅游体验的关键

随着科技的快速发展和消费者需求的不断升级,旅游业正面临着前所未有的变革压力。智慧文旅作为数字化转型的重要领域,旨在通过智能化、数据化手段为游客提供更加优质、便捷、个性化的服务,打造无缝的旅游体验。本文将深入探讨智慧文旅在打造无…

【golang】16、dlv 调试工具、vscode+ssh 远程调试

文章目录 Goland Debug 模式崩溃 Goland Debug 模式崩溃 有时遇到如下现象: Golang Run 模式正常,Debug 无 BreakPoint 模式正常,但 Debug 加 BreakPoint 就会偶现 panic,panic 信息如下。 panic: runtime error: index out of …

多维时序 | Matlab实现DBO-LSTM蜣螂算法优化长短期记忆神经网络多变量时间序列预测

多维时序 | Matlab实现DBO-LSTM蜣螂算法优化长短期记忆神经网络多变量时间序列预测 目录 多维时序 | Matlab实现DBO-LSTM蜣螂算法优化长短期记忆神经网络多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现DBO-LSTM多变量时间序列预测&#x…

【Javaweb程序】【C00155】基于SSM的旅游旅行管理系统(论文+PPT)

基于SSM的旅游旅行管理系统(论文PPT) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于SSM的旅游旅行管理系统 本系统分为前台系统模块、管理员模块、用户模块以及商家模块 其中前台系统模块的权限为:当游客打开系统的网址后…

1月全志芯片开源项目分享合辑

1、柚子爱AI相机(YuzuAI-YuzuMaix-AIoT-V831) 本项目于去年4月首次发布,是基于V831的AI相机开源项目,经过几个版本的迭代,最终运用了叠层的设计来实现AI摄像头掌控板的奇葩组合。 开发板主控是全志V831,采…

Windows下EDK2快速搭建(详细)过程总结附软件包地址

目录 简介一、软件包下载安装VS2019下载NASM安下载LLVM/CLANG下载IASL下载安装Python安装OpenSSL下载EDK2 二、设置环境变量新增python系统变量新增NASM系统变量 三、编译3.1 在edk2目录直接输入cmd3.2 在cmd目录输入:edksetup.bat3.3 打开edk2编译窗口3.4 确认编译…

2023年度总结——忙忙碌碌,终有归章

思来想去,还是决定写一篇年终总结,一来算是对23年的一年的回顾,二来是对24年的展望。记得22年也写过一篇年度总结,题目是《2022年度总结——一切都在慢慢变好》。今年,我想起的题目是《2023年度总结——忙忙碌碌&#…

基于springboot的历史馆藏系统

文章目录 项目介绍主要功能截图:部分代码展示设计总结项目获取方式 🍅 作者主页:超级无敌暴龙战士塔塔开 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 &…

将elasticsearch数据存储到excel中

由于elasticsearch数据在线上,偶尔需要将数据导到本地环境进行分析。目前有需求是将数据导入到excel表中,下面是我在用的实现方案。 1、将线上elasticsearch数据备份成文件 首先通过elasticdump组件将线上指定的index导出成文本文件 elasticdump --in…

12.16对象序列化(血干JAVA系列)

对象序列化 12.16对象序列化12.16.1 基本概念与 Serializable 接口12.16.2 对象输出流ObjectOutputStream【例12.71】将Person类的对象保存在文件之中 12.16.3 对象输入流 Objectinputstream【例12.72】从文件中将Person对象反序列化(读取) 12.16.4 Exte…

第八篇【传奇开心果短博文系列】Python的OpenCV技术点案例示例:深度学习

传奇开心果短博文系列 系列短博文目录Python的OpenCV技术点案例示例系列 短博文目录一、前言二、OpenCV深度学习介绍三、OpenCV常用深度学习算法和实现分别示例代码四、归纳总结 系列短博文目录 Python的OpenCV技术点案例示例系列 短博文目录 一、前言 OpenCV深度学习&…

降压模块LM2596S的操作使用

一、技术参数 二、使用说明 1.引脚说明: IN输入正极 IN-输入负极 OUT输出正极 OUT-输出负极 2.输入电压范围:直流3.2V 至 46V (输入的电压必须比要输出的电压高1.5V以上。不能升压) 3.输出电压范围:直流 1.25V至 35V 电压连续可调&#…

激光雷达,角力「降本增效」

高工智能汽车研究院最新发布的数据显示,2023年1-11月,中国市场(不含进出口)乘用车前装标配激光雷达搭载量为46.48万颗,同比增长372.35%,继续保持高增长态势。 随着激光雷达在中国市场完成规模化上量的节点&…

C++(16)——vector的模拟实现

前面的文章中,给出了对于的模拟实现,本篇文章将给出关于的模拟实现。 目录 1.基本框架: 2. 返回值与迭代器: 2.1 返回值capacity与size: 2.2 两种迭代器iterator和const_iterator: 3. 扩容与push_back与pop_back&#xff1a…

好友管理系统----Python实例练习

题目描述 如今的社交软件层出不穷,虽然功能千变万化,但都具有好友管理系统的基本功能,包括添加好友,删除好友,备注好友,展示好友等。次案例要求用Python中的列表知识实现。 程序代码 print("欢迎使…