详解操作系统各章大题汇总(死锁资源分配+银行家+进程的PV操作+实时调度+逻辑地址->物理地址+页面置换算法+磁盘调度算法)
文章目录
- 第三章:死锁资源分配图
- 例一
- 例二
- 第三章:银行家算法
- 第四章:进程的同步与互斥
- 做题步骤
- 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撞墙回头算法
第三章:死锁资源分配图
小插曲:也是关于死锁的一个题目
做题原则:分配大于请求(包括进程本身自己也得遵守这个规则)
资源指向进程,是分配
进程指向资源,是请求
一句话:先把资源都分配了,再看我们进程想要的资源能否得到
例一
我们先分析线少的:对于P2来说,P2有一个,而且这个还是资源分配,一定可以删除
接着再看P1:P1先获得了R2,接着P1想请求R1,但是R1必须先给P3,此时还剩下一个R1,说明P1也可以删除
接着再看P3:R1给一个,R2给一个,那么P3直接高枕无忧了,随便去
最后P4,它就想要一个R2,而且也没有人和它抢,自然可以删除
例二
我们先看P4:先获得R5,R4,这个是符合我们的优先分配的规则,之后再看P4能否请求到R3;R3给了P5一个,但是还剩下一个,所以P4可以走
我们再看P5:先获得R3,再请求R5的时候没有人抢,自然P5也可以走了
再看P3:R2给了P2,P3,这就导致P3再请求R2的时候,无法请求到,所以P3走不了
再看P2:R2给了P2,P2想要R1的时候,R1已经全部给了P1,无法请求到,所以P2走不了
再看P1:R1给了P1,R2给了P2和P3,所以P1想要R2的时候,无法请求到,所以P1走不了
第三章:银行家算法
- 计算当前可用资源量
- 写出全部进程的所需资源量 (MAX-Allocation=Need数组)
- 满足条件的,删除进程并且加上对其分配的资源量(不是加Max)(我们加的 本质上就是计算Need数组时候的被减数!)
- 循环上述步骤
- 写安全序列的时候,遇到多个进程可删时,尽量满足从小到大或者从大到小的基本顺序走
要点:
1.计算出我们拥有的可用资源
2.可用资源和每个进程的所需资源进行比较,不是和Max资源比较,而是和Max-Allocation进行比较(换句话讲,就是已经分配给一部分了)
3.我们回收资源的时候,一定是 Need + Allocation 数组才可以 而不是 Need + Available 数组 这样就大错特错了
而且要点三是最容易出问题的,有时候算的算的就走火入魔了! 上一个加的还是已分配资源量,下一个加的就是所需资源总量了
第四章:进程的同步与互斥
做题步骤
- 排列进程
- 分析进程自身与进程之间的关系
- 建立信号量对应某种资源
- 只要需要访问临界区,就得上锁!
- 前V后P 前后都指的是事件!
关于变量的初值:
信号量的初值为n,表示系统中共有n个资源
mutex的初值为n,表示临界资源共有n个
如果需要互斥访问临界区,那么需要互斥信号量=1
如果信号量小于0,那么信号量的绝对值就是当前阻塞队列当中进程的个数
关于书写方法:
写函数–>写动作–>观察是同步还是互斥书写PV操作
对我来说判断进程同步或者互斥的方法:
对于生产者消费者来说,是进程同步,因为如果发生阻塞的话,只要有生产,就可以唤醒消费,这就是同步
对于读者写着来说,是进程互斥,但是有争议的地方就是,当只有一个读者的时候,如果此时写者来了,被阻塞,读者走后,看起来就像是读者唤醒的写者,二者不能说是一点同步关系也没有,间接来讲肯定是有的。现在我们看一种情况:如果有5个读者进程正在读取文件,又来了一个写者,写者被阻塞,此时走1个走2个走3个读者并不会唤醒写者,而是只有最后一个读者走了才可以唤醒写者,所以这并不是进程同步,而是进程互斥访问文件临界资源的体现(回看的时候,还得是我自己能给我解决问题啊!)
因为我分析同步的时候喜欢用前V后P,所以就有一种误区是只要可以用只有…才…就是进程同步,实则不然,二者没有必然联系
思考进程同步的时候,多考虑考虑极端情况,比如缓冲区为空,缓冲区为满,缓冲区为一个三种情况必须全部考虑清楚才可以答对题目
解题步骤:
注意事项:
- 生产者消费者同步问题一定是先p(empty),p(full)才p(mutex),否则会发生死锁!
- 对于生产者消费者这类型的同步问题,如果临界资源的大小是1,那么就不必为临界资源加上mutex(当然加上也很好的)
- 分析俩个进程并发是否会产生死锁,可以通过A->B,B->A,A->B->A(过桥问题)这样三个操作来判断,基本上有没有问题就可以甄别出来了;对于生产者消费者的死锁,还得改变一下信号量的初始值,这样有利于分析
PV操作的代码
小心容易和读者写者混
1.交通问题(类似读者写者)
有桥如下图所示,车流方向如箭头所示。
假设桥上不允许两车交会,但允许同方向多辆车依次通过(即桥上可有多个相同方向行驶的车辆),试用wait和signal操作实现桥上的交通管理
分析
这个俩个互斥的问题,临界资源是我们的桥,一次只可以由一边通过,之前我有误区,我认为这个也存在同步关系,实则不然,二者完全是对临界资源的互斥访问,假设车向右走的时候,左车来了被阻塞,当右车走完左车被唤醒,这个看起来是右车唤醒的左车(我刚开始理解的),但是后来其实是右车将互斥资源放出来了,左车等的只是资源,和右车没有直接关系(间接多多少少有点,但不是同步)
这个题麻烦就麻烦在:左车和左车进程不互相阻塞,但是左车在的时候右车不可以来;反之
所以这样是解决不了问题的,我们必须引入count变量,而且还得小心这个代码书过程中的进程阻塞问题(小心写反)
但是上面这个代码的意思是:每次只能有一辆车行驶
代码
经过分析,不难写下以下代码:
这段代码是有死锁风险的!
尹老师回复如下:当左边车正在行走的时候,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;//临界资源 桥
标准答案:
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的同步,再合并考虑
分析
这不妥妥的进程同步,而且进程同步的代码有个特点,就是对于一个信号量来说PV操作交叉
我认为这个题的难点在于==初始值的大小,不可以一味的全部设置为1,得分析后再得出结论==
而且容易想的简单,因为复制缓冲区进行的动作本质上是俩个!
代码
初始变量赋值:
semaphore sin=1;
semaphore sout=0;
semaphore tin=1;
semaphore tout=0;
为什么我感觉这种方法没有很好的保护process缓冲区呢??
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);//写入Sv(sout);
}
void process()
{p(sout);//放入局部缓冲v(sin);//处理ingp(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;
动作如下:
4.水果盘进餐问题
这个就是生产者消费者同步问题,而且临界资源大小为1,所以不需要加mutex(加上肯定不错)
5.水果盘进餐拓展(见下面课后题20)
6.仓库入库出库问题
7.缓冲区问题
(1)尹老师单缓冲区但中间需要处理问题(三个信号量)
尹老师的这个单缓冲区内部还得对信息进行处理,否则无法被打印进程给取走的!
semaphore Sget=1;
semaphore Sprocess=0;
semaphore Stransfer=0;
(2)课本单缓冲区,但缓冲区不需要处理(俩个信号量)
(3)双缓冲区问题(本质上是俩个单缓冲区)(四个信号量)
为什么我突然想把这三个整合在一起呢? 是因为我发现双缓冲区的第三个进程的最后生成的变量,与进程一无关,不禁让我引起思考:很明显,双缓冲区实则上是俩个单缓冲区的结合,最后一个进程和第一个进程并没有了直接的关系
课后习题讲解
16.生产偶数奇数问题(只要有操作访问临界区,就得上锁之后解锁)
分析
N个单元,那么mutex初始值为N
而且题目上也说,互斥使用!缓冲区是临界资源,想要互斥访问,就得写一个互斥信号量mutex=1,临界资源就必须得互斥访问!!!
put()送入缓冲区,表明put前后需要加上互斥信号量,因为是访问临界区
P2:getodd()countodd()都是在访问缓冲区,所以必须上锁
P3:geteven也是在缓冲区内,counteven统计偶数,缓冲区统计
本质上就是生产者消费者,有点像水果盘子一个父亲既给苹果又给橘子
注意我们这个时候已经没有了full变量,而是拆分成了俩个
代码
总结
这个if else写的很妙 考试考出来一定得多加思考
你比如 题上和你说 我从缓冲区拿数字啦 统计数字啦 等等 就得把这些操作都放在锁里 这个是我最想说的心得!!!!!!!
17.销售服务问题(我认为最难的一道)
咬文嚼字:1个服务窗口 10个座位(seat=10)有空座位 则取号(取号时一次只有一个人 )
取号机是临界资源 seatnumber=1 互斥访问
一个同步关系:当营业员空闲 则叫顾客
分析
寻找互斥(某个东西竞争使用)和同步(有一定的执行顺序)的关系:
取号机的使用是互斥
顾客取到号通知营业员是同步
营业员叫号顾客是同步
将俩个进程都写出来,对比着写,会更清楚一点
只有取到号,才可以叫号 这是一个同步关系 但是它为了简单,并没有写只有叫号才可以有顾客来这个操作,是为了简化
但是不知道为什么 它即使写出一个同步 也感觉非常的合理 这就是有点疑惑的地方 让我不经怀疑 是不是只有本身就是只有一个同步
和尹老师交流完之后,老师说这个题没有写成俩个同步,本意就是想要简化一下,只要逻辑通顺就是最好了
代码
信号量的设置:
numget换成mutex也可以,因为只有一个人可以取号,是互斥信号量
seat是互斥信号量
custom是同步信号量,设置初始值为0(只有当取完号后,才可以通知营业员可以叫人了)
座位少了一个,人才可以多一个
人被叫走了,座位才可以多一个
取号 v(custom) p(custom) 叫号
总结
关于座位和顾客的关系,就像盘子和苹果的问题,如果盘子中有苹果和橘子,那么我想访问盘子资源,那就是p(plate),当我拿走苹果之后,就是v(apple),盘子的数量减一,那么苹果的数量加一,并不是说PV是同一种资源,是俩种不同的资源,但是二者也会有关系
在这个题也是一样,empty和full是俩个不同的资源,能写成PV操作,正是因为少一个空的座位,就多一个顾客这样的逻辑
18.单缓冲区问题(easy,但得注意答案格式)
19.令我痛彻心扉的缓冲区问题
分析
从分析缓冲区的箭头来说,一共有三个箭头,我就误以为需要三个信号量,但是再看看进程这边,发现是俩个信息,所以本质上我们需要的信号量是俩组
对于缓冲区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发来的数据
总结
本质上是俩组生产者消费者问题,注意好信号量的取值和pv操作的顺序即可
而且我感觉第二个缓冲区写出俩个P 再写俩个V 这样是为了更好的保护缓冲区2
20.可以放下五个水果的水果盘子问题
咬文嚼字:5个水果 plate=5;盘子是临界资源 mutex=1;
分析
这个题本质上和16题是一样样的,消费者给生产者提供的是empty,但是由于消费者有俩个,所以生产者不可以单纯的提供一个full,而是通过if判断
而且由于此时水果盘是临界资源,所以我们需要加上mutex来进行互斥访问才可以的
代码
信号量初始值:
semaphore empty=5,orange=0,apple=0,mutex=1;
拓展:如果妈妈进程负责生产橘子的话
总结
本题是生产者-消费者问题的变形,相当于一个能生产两种产品的生产者(爸爸)向两个消费者(儿子和女儿)提供产品的同步问题,因此,须设置两个不同的full信号量apple和orange,它们的初值均为0。
而且水果盘可以放几个水果,就直接修改empty的值就可以了!
21.不会发生死锁的哲学家进餐问题
标准答案是采用了方法一:只允许四个哲学家同时进来拿筷子
设置一个SUM=4的值,给哲学家进餐代码前后加上 P(SUM) 和 V(SUM)即可!
诶哟 我服了 尹老师强调不可以多一个筷子 幸好听到了 要不然就寄了
考试真题汇总
三个进程既是生产者又是消费者(未知年份)(难度五个星)
第四章:实时调度
LLF 和 EDF一共有俩个调度时机
第五章:利用逻辑地址计算物理地址
做题步骤
- 画出页表的结构(页号 块号)
- 用逻辑地址 ➗ 页面大小(也就是我们的块大小) 得到结果 结果为页号 同时还有余数 余数为偏移量
- 观察页表,看页号对应哪一个块号 使用块号*页面大小(即块大小)+偏移量 = 物理地址
1.计算页表中块号的位数
计算页号和页内地址(逻辑地址空间的格式)
首先必须声明一下,这都是逻辑的,和物理无关
前一部分为页号P,后一部分为位移量W,即页内地址
页号:页的数量
页内地址:页的大小
计算页表有多少项及至少(因为地址块不一定连续)页表项的位数
有多少个页面,页表项就是多少,有32页,项就有32个,也就是说页表有32行,有32个页号
==计算页表项位数:==关键在于计算物理块有多少个 因为页表的存在本来就是一个块号对应一个物理块,那么想知道块号位数,算出有几个就好了
将页面(内存块)大小理解成内存的横轴
将块号理解成内存块的纵轴
长方形的面积=横轴*纵轴
长方形的面积=内存块大小
横轴=页面大小
纵轴=块号
块号是物理地址的纵轴,但它是页表的横轴
2.给出逻辑地址和页表计算物理地址
3.计算段表的逻辑地址与物理地址
不可想当然认为就是K =1000 这是非常致命的错误想法
第六章:页面置换算法
做题步骤
- 写出序列
- 确定内存块数
- 根据不同算法在每个序列数字下面画出对应的页面情况
- 缺页率=画出的页面/总序列个数
中断就是缺页 刚开始页面为空的时候也是中断
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 一定要对访问磁道进行排序!
1.FCFS先来先服务
我特别想要强调的是:FCFS不会造成磁盘黏着!!!! 有且仅有这一个算法是这样的!
2.SSTF最短寻道时间优先
3.SCAN撞墙回头算法
这个是双向的,就是如果是100开始且递增的话,那么刚开始就是递增,等撞到南墙之后回来就是递减
相关文章:

详解操作系统各章大题汇总(死锁资源分配+银行家+进程的PV操作+实时调度+逻辑地址->物理地址+页面置换算法+磁盘调度算法)
文章目录 第三章:死锁资源分配图例一例二 第三章:银行家算法第四章:进程的同步与互斥做题步骤PV操作的代码小心容易和读者写者混 1.交通问题(类似读者写者)分析代码 2.缓冲区问题(第二个缓冲区是复制缓冲区…...

用ASM HEMT模型提取GaN器件的参数
标题:Physics-Based Multi-Bias RF Large-Signal GaNHEMT Modeling and Parameter Extraction Flow (JEDS 17年) 模型描述 该模型的核心是对表面势(ψ)及其随施加的栅极电压(Vg)和漏极电压(Vd)…...

github ssh ssh-keygen
生成和使用 SSH 密钥对是一种安全的身份验证方式,用于在你的本地系统和 GitHub 之间进行身份验证。以下是在 GitHub 上生成和使用 SSH 密钥对的基本步骤: 1. 生成 SSH 密钥对 在命令行中执行以下命令来生成 SSH 密钥对: ssh-keygen -C &q…...

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例5-2 JavaScript 获取HTML元素对象
代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>JavaScript 获取 HTML 元素对象</title> </head><body> <input type"text" value"admin" /> <br> <input …...

微信实现如何批量自动添加好友?
在快节奏的社交环境中,我们常常需要扩展我们的社交圈子并与更多人建立联系。那么,有没有一种方法可以帮助我们更高效地批量添加微信好友呢?答案是肯定的!借助微信管理系统,你将能够轻松实现这一目标。 首先࿰…...

vue3+echarts绘制某省区县地图
vue3echarts绘制某省区县地图 工作中经常需要画各种各样的图,echarts是使用最多的工具,接近春节,想把之前画的echarts图做一个整合,方便同事和自己随时使用,因此用vue3专门写了个web项目,考虑之后不断完善…...

MyBatis详解(2)-- mybatis配置文件
MyBatis详解(2) mybatis配置文件 mybatis配置文件 1.构建SqlSessionFactory的依据。 2.MyBatis最为核心的内容,对MyBatis的使用影响很大。 3.配置文件的层次顺序不能颠倒,一旦颠倒会出现异常。 < c o n f i g u r a t i o n…...

蓝桥杯备战——8.DS1302时钟芯片
1.分析原理图 由上图可以看到,芯片的时钟引脚SCK接到了P17,数据输出输入引脚IO接到P23,复位引脚RST接到P13。 2.查阅DS1302芯片手册 具体细节还需自行翻阅手册,我只截出重点部分 总结:数据在上升沿写出,下降沿读入,…...

freeRTOS / day02
1. 定时器使用流程 1.1 ST32CubeMX 设置 1.1.0 选择定时器 --> TIM1 1.1.1 Clock Source --> Internal Clock 1.1.2 Prescaler --> 预分频系数 1.1.3 Counter Period -- > 重装值 1.1.4 Prescaler 和 Counter Period 计算公式 定时时间(s) &…...

Ubuntu 18.04 x86_64 上交叉编译 boost 库(ARMv7L)
先安装 ARMv7L 交叉编译器环境: 在 Ubuntu 18.04 x86_64 上面安装 Linux-ARMv7 A/L GCC编译器-CSDN博客 1、下载 boost 1.84 的源代码访问要编译的目录,并且解压出来源代码,切入源代码根目录 2、./bootstrap.sh --with-librariesfilesyste…...

为什么 FPGA 比 CPU 和 GPU 快?
FPGA、GPU 与 CPU——AI 应用的硬件选择 现场可编程门阵列 (FPGA) 为人工智能 (AI) 应用带来许多优势。图形处理单元 (GPU) 和传统中央处理单元 (CPU) 相比如何? 人工智能(AI)一词是指能够以类似于人类的方式做出决策的非人类机器智能。这包…...

js常用函数总结
js常用函数总结 1、模糊搜索 export const fuzzyQuery (list, keyWord, attribute name) > {const reg new RegExp(keyWord)const arr []for (let i 0; i < list.length; i) {if (reg.test(list[i][attribute])) {arr.push(list[i])}}return arr } list 原数组 ke…...

cartographer离线建图报错:data_.trajectory_nodes.SizeOfTrajectoryOrZero
cartographer离线建图报错: data_.trajectory_nodes.SizeOfTrajectoryOrZero [FATAL] [1706177325.876019302, 1706015603.398505596]: F0125 18:08:45.000000 17607 pose_graph_2d.cc:1314] Check failed: data_.trajectory_nodes.SizeOfTrajectoryOrZero(trajectory_id) &…...

【YOLO系列算法俯视视角下舰船目标检测】
YOLO系列算法俯视视角下舰船目标检测 数据集和模型YOLO系列算法俯视视角下舰船目标检测YOLO系列算法俯视视角下舰船目标检测可视化结果 数据集和模型 数据和模型下载: YOLOv6俯视视角下舰船目标检测训练好的舰船目标检测模型舰船目标检测数据YOLOv7俯视视角下舰船…...

python进程间使用共享内存multiprocessing.shared_memory来通讯
python多个进程通讯使用共享内存 1、multiprocessing.shared_memory 使用这个模块可从进程直接访问共享内存,该模块提供了一个 SharedMemory 类,用于分配和管理多核或对称多处理器(SMP)机器上进程间的共享内存。 为了协助管理不同进程间的共享内存生命周期,multi…...

经典目标检测YOLO系列(三)YOLOv3的复现(2)正样本的匹配、损失函数的实现
经典目标检测YOLO系列(三)YOLOv3的复现(2)正样本的匹配、损失函数的实现 我们在之前实现YOLOv2的基础上,加入了多级检测及FPN,快速的实现了YOLOv3的网络架构,并且实现了前向推理过程。 经典目标检测YOLO系列(三)YOLOV3的复现(1)总体网络架构…...

编程笔记 html5cssjs 061 JavaScrip简介
编程笔记 html5&css&js 061 JavaScrip简介 一、JavaScript概述二、JavaScript的主要特点三、历史延革四、JavaScript与前端开发小结 JavaScript 是 web 开发者必学的三种语言之一:HTML 定义网页的内容;CSS 规定网页的布局;JavaScript…...

计算机网络 第5章(运输层)
系列文章目录 计算机网络 第1章(概述) 计算机网络 第2章(物理层) 计算机网络 第3章(数据链路层) 计算机网络 第4章(网络层) 计算机网络 第5章(运输层) 计算机…...

pythonSM4加密
数据安全法及密评要求,敏感数据系统需要使用国密算法进行加解密处理。 敏感数使用SM4/ECB加解密方式 #密钥参数epidemic_key #加密信息参数 message #加密算法SM4/ECB/PKCS5Padding #加密类型SM4-ECB #添加模式PKCS5Padding from cryptography.hazmat.primitives.…...

JSP在线阅读系统myeclipse定制开发SQLServer数据库网页模式java编程jdbc
一、源码特点 JSP 小说在线阅读系统是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库 ,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为SQLServer2008&#…...

el-date-picker设置default-time的默认时间
default-time :选择日期后的默认时间值。 如未指定则默认时间值为 00:00:00 默认值修改 <el-form-item label"计划开始时间" style"width: 100%;" prop"planStartTime"><el-date-picker v-model"formData.planStart…...

List集合根据对象某个元素去重
序言 检视代码时有下面这样一段代码(已脱敏处理), import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Function; import java.util.function.Predicate; import java.util.stream.Collectors…...

QML Qt4版本移植到Qt5概述
C++代码 在Qt5中,QML应用程序使用OpenGL场景图架构来渲染,而在Qt4中使用的是图形视图框架。这种结构上的变化导致C++接口进行了大量重构。QtDeclarative模块已被弃用,该模块的类被移动到新的QtQML和QtQuick模块中,名称有了变化,如表3-1所列。如果需要使用Qt5中新的QQml和…...

【极数系列】Flink环境搭建Linux版本 (03)
文章目录 引言01 Linux部署JDK11版本1.下载Linux版本的JDK112.创建目录3.上传并解压4.配置环境变量5.刷新环境变量6.检查jdk安装是否成功 02 Linux部署Flink1.18.0版本1.下载Flink1.18.0版本包2.上传压缩包到服务器3.修改flink-config.yaml配置4.启动服务5.浏览器访问6.停止服务…...

2023年深圳市节假日人口迁入数据,shp/excel格式,需要自取!
基本信息. 数据名称: 深圳市节假日人口迁入数据 数据格式: Shp、excel 数据时间: 2023年国庆节 数据几何类型: 线 数据坐标系: WGS84 数据来源:网络公开数据 数据字段: 序号字段名称字段说明1a0928迁入人口占迁入深圳市人口的比值࿰…...

Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤
1.从github上clone代码,并切换到n6.1.1版本:clone到D:\DownLoad目录下 git clone https://github.com/FFmpeg/FFmpeg.git git checkout n6.1.1 2.安装MSYS2并编译FFmpeg源码: (1).从https://www.msys2.org/ 下载msys2-x86_64-20240113.exe &#…...

HiveSQL题——用户连续登陆
目录 一、连续登陆 1.1 连续登陆3天以上的用户 0 问题描述 1 数据准备 2 数据分析 3 小结 1.2 每个用户历史至今连续登录的最大天数 0 问题描述 1 数据准备 2 数据分析 3 小结 1.3 每个用户连续登录的最大天数(间断也算) 0 问题描述 1 数据准备 2 数据分析 3 小…...

题解仅供学习使用
...

Linux命令-apt-get命令(Debian Linux发行版中的APT软件包管理工具)
补充说明 apt-get命令 是Debian Linux发行版中的APT软件包管理工具。所有基于Debian的发行都使用这个 包管理系统。deb包可以把一个应用的文件包在一起,大体就如同Windows上的安装文件。 语法 apt-get [OPTION] PACKAGE选项 apt-get install 安装新包 apt-get r…...

matlab appdesigner系列-仪器仪表3-旋钮
旋钮,同过旋转显示特定的值 示例:模拟收音机调频 操作步骤: 1)将旋钮、标签按钮拖拽到画布上,将标签文字修改为:欢迎收听,并将旋钮其数值范围改为90-107 2)设置旋钮的回调函数 代…...