软考高级之系统架构师系列之操作系统基础

概念

接口

操作系统为用户提供两类接口:操作一级的接口和程序控制一级的接口。操作一级的接口包括操作控制命令、菜单命令等;程序控制一级的接口包括系统调用。

UMA和NUMA

UMA,统一内存访问,Uniform Memory Access,指所有的物理存储器被均匀共享,即处理器访问它们的时间是一样的。UMA亦称作统一寻址技术或统一内存存取架构。这种系统因为高度的资源共享也被称为紧耦合系统(Tightly Coupled System)。

NUMA,非统一内存访问架构,Non-Uniform Memory Access,是一种为多处理器的电脑设计的内存架构,内存访问时间取决于内存相对于处理器的位置。在NUMA下,处理器访问它自己的本地内存的速度比非本地内存(内存位于另一个处理器,或者是处理器之间共享的内存)快一些。

进程

组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程是所需要的数据)

临界资源:各进程间需要以互斥方式访问的资源

临界区:进程中对临界资源操作的那段程序

互斥信号量:初值为1

同步信号量:初值为共享资源的数量

PCB

进程控制块,其组织方式有:

  • 线性表方式:不论进程的状态如何,将所有的PCB连续地存放在内存的系统区。适用于系统中进程数目不多的情况
  • 索引表方式:该方式是线性表方式的改进,系统按照进程的状态分别建立就绪索引表、阻塞索引表等
  • 链接表方式:系统按照进程的状态将进程的PCB组成队列,从而形成就绪队列、阻塞队列、运行队列等。

状态切换

参考进程、线程和协程的区别与联系

PV操作

信号量

在并发系统中,信号量是用于控制公共资源访问权限的变量。信号量用于解决临界区问题,使得多任务环境下,进程能同步运行。此概念是由荷兰计算机科学家Dijkstra在1962年左右提出的。信号量仅仅跟踪还剩多少资源可用,不会跟踪哪些资源是可用的。

信号量机制,处理进程同步和互斥的问题。信号量的一大特征就是它的值不能通过PV操作以外的方式更改,只能被两个标准的原语wait(s)signal(s)访问,也可记为P(s)V(s)。信号量数值为负时,表明有进程在等资源。

信号量提供一种很方便的方法来确保对共享变量的互斥访问。基本思想是将每个共享变量与一个信号量s(初值为1)联系起来,然后用P(s)V(s)操作将相应的临界区包围起来。以这种方式来保护共享变量的信号量叫做二元信号量,因为它的值总是0和1。一个被用作一组可用资源的计数器的信号量被称为计数信号量。

PV操作

计数信号量(Counting Semaphores)通常有两种操作,记做P和V,P操作减少信号量S,V操作增加信号量S:

  • P操作:P(s),wait,申请资源,信号量数值减一并且立即返回,S -= 1。S>=0,此进程执行;S<0,此进程置为阻塞(等待、挂起)状态直到s变为非0,将其插入阻塞队列。进入临界区时执行P操作
  • V操作:V(s),signal,释放资源,信号量数值加一,S += 1。S>0,此进程继续执行;S<=0,从阻塞队列唤醒一个,并插入就绪队列。退出临界区时执行V操作

P、V都来源自荷兰语,V通常解释为verhogen、increase。P则有多种解释:proberen、to test、to try、passeren、pass、pakken、grab。

在Dijkstra最早的论文中,P表示passering(passing),V表示vrijgave(release)。

应用场景:

  • 生产者-消费者问题
  • 哲学家就餐问题

实战

信号量

假设系统中有n个进程共享3台打印机,任一进程在任一时刻最多只能使用1台打印机。若用PV操作控制n个进程使用打印机,则相应信号量S的取值范围为();若信号量S的值为-3,则系统中有()个进程等待使用打印机。

解析:
假设系统中有n个进程共享3台打印机, 意味着每次只允许3个进程进入互斥段,则信号量的初值应为3,最小值为-(n-3),因此取值范围:3, 2, 1, 0, -1, ..., -(n-3)

信号量S的值为-3,则系统中有3个进程等待使用打印机。

信号量S的物理意义为:当S>0时,表示资源的可用数;当S<0时,其绝对值表示等待资源的进程数。

PV操作

进程P1、P2、P3、P4和P5的前趋图如下:
在这里插入图片描述
若用PV操作控制进程P1〜P5并发执行的过程,则需要设置5个信号S1、S2、S3、S4和S5,进程间同步所使用的信号量标注在上图中的边上,且信号量S1〜S5的初值都等于零,初始状态下进程P1开始执行。下图中a、b和c处应分别填写(),d和e处应分别填写(),f和g处应分别填写()。
在这里插入图片描述
解析:
因为P1是P2和P3的前驱,当P1执行完应通知P2和P3,应采用V(S1)V(S2)操作分别通知P2和P3,故a处应填写V(S1)V(S2);又因为P2是P1的后继,当P2执行前应测试P1是否执行完,应采用P(S1)操作测试P1是否执行完,故b处应填写P(S1);P2是P4和P5的前驱,当P2执行完应通知P4和P5,应使用V(S3)V(S4)操作分别通知P4和P5,故c处应填写V(S3)V(S4)。

因为P3是P1的后继,当P3执行前应测试P1是否执行完,应采用P(S2)操作测试P1是否执行完,故d应填写P(S2);P3是P5的前驱,当P3执行完应通知P5,应采用V(S5)操作通知P5,故e处应填写V(S5)。

P4是P2的后继,当P4执行前应测试P2是否执行完,应采用P(S3)操作分别测试P2是否执行完,故f处应填写P(S3);又因为P5是P2和P3的前驱,当P5执行前应测试P2和P3是否执行完,应采用P(S4)P(S5)操作分别测试P2和P3是否执行完,故g处应填写P(S4)P(S5)。

机票

某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程 P i ( i = 1 , 2 , … , n ) P_i(i=1,2,…,n) Pi(i=1,2,,n)管理机票销售。假设 T j ( j = 1 , 2 , … , m ) T_j(j=1,2,…,m) Tj(j=1,2,,m)单元存放某日某航班的机票剩余票数,Temp为 P i P_i Pi进程的临时工作单元,x为某用户的订票张数。初始化时系统应将信号量S赋值为()。 P i P_i Pi进程的工作流程如下图所示,若用P操作和V操作实现进程间的同步与互斥,则图中空(a),(b),(c)处应分别填入()。
在这里插入图片描述
解析:
公共数据单元是一个临界资源,最多允许1个终端进程使用,因此需要设置一个互斥信号量S,初值等于1。

进入临界区时执行P操作,退出临界区时执行V操作。答案应该是:P(S),V(S)和V(S)。

死锁

进程死锁的四个必要条件:

  • 资源互斥
  • 每个进程占用资源并等待其他资源
  • 系统不能剥夺进程资源
  • 进程资源图是一个环路

死锁进程计算:
n个进程、每个进程都需要R资源
发生死锁的最大资源数n *(R - 1)
不发生死锁的最小资源数n *(R - 1) + 1

存储

存取方式

存储器中数据常用的存取方式:

  • 顺序存取:存储器的数据以记录的形式进行组织。对数据的访问必须按特定的线性顺序进行。磁带存储器采用顺序存取的方式。
  • 直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块的所在位置进行访问。存取时间也是可变的。磁盘存储器采用直接存取的方式。
  • 随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,与先前的访问序列无关。主存储器采用随机存取的方式。
  • 相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。使用相联存取方式,可以对所有的存储单元的特定位进行比较,选择符合条件的单元进行访问。为了提高地址映射的速度,Cache采取相联存取的方式。

LRU算法:最近最少使用,理论依据是局部性原理。要求较多硬件支持,成本高。
CLOCK算法:LRU近似算法。
简单CLOCK算法:循环队列,每页有访问位,淘汰访问位为0的页。
改进型CLOCK算法:同时考虑访问位与修改位。
时间局部性:刚被访问的内容,立即又被访问。
空间局部性:刚被访问的内容,临近的空间很快被访问。

程序访问具有时间局部性,即最近将要用的信息很可能是正在使用的信息
程序访问具有空间局部性,即最近将要用的信息很可能与正在使用的信息在存储空间上是相邻的
程序访问局部性是构成层次结构的存储系统的主要依据

分页存储管理

  1. 逻辑页分为页号和页内地址,页内地址就是物理偏移地址,页号通过查询页表,得知页号对应的物理块号,块号 + 偏移地址,得出真正的物理地址
  2. 如果该页尚未调入内存,则产生缺页中断,以装入所需的页

分区存储组织,页式存储,段式存储,段页式存储

页面淘汰算法

  • 最优(Optimal,OPT)算法
  • 随机(RAND)算法
  • 先进先出(FIFO)算法:有可能产生抖动与Belady奇异现象。

抖动

如果分配给进程的存储块数量小于进程所需要的最小值,进程的运行将很频繁地产生缺页中断,这种频率非常高的页面置换现象称为抖动。Thrashing,又叫颠簸。
产生原因:进程的内存量不足。因而分配页面太少,总是缺页。
在请求分页存储管理中,可能出现这种情况,即对刚被替换出去的页,立即又要被访问。需要将它调入,因无空闲内存又要替换另一页,而后者又是即将被访问的页,于是造成了系统需花费大量的时间忙于进行这种频繁的页面交换,致使系统的实际效率很低,严重导致系统瘫痪,这种现象称为抖动现象。

解决办法

  • 使用更好的页替换算法;
  • 减少运行的进程数;
  • 增大内存

Belady奇异现象

指采用页面置换FIFO算法时,如果对一个进程未分配它所要求的全部页面,有时就会出现分配的页面数增多,但缺页率反而提高的异常现象,这是一个违反直觉的现象。

原因:所使用的FIFO算法不够好。

文件管理

记录文件有顺序文件、索引顺序文件、索引文件和直接文件。

位示图法

某文件管理系统在磁盘上建立位示图(bitmap),记录磁盘的使用情况。
若磁盘上物理块的编号依次为:0、1、2、…;系统中的字长为32位,字的编号依次为:0、1、2、…,字中的一位对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。假设操作系统将2053号物理块分配给某文件,那么该物理块的使用情况在位示图中编号为64,系统应该将该字的位号5的位置“1"
2053号物理块对应字的编号是64号,前面的0-2047位已经占满,因此第64号字的第0位是2048,第1位是2049,第2位是2050,第3位2051,第4位2052,第5位2053。
在这里插入图片描述

索引文件

结构示意图
在这里插入图片描述
索引文件结构的扩展机制能够极大扩充现有容量,是操作系统中比较特殊的文件结构。

一般的索引文件结构由13个结点组成,其中0 - 9个结点为直接的物理盘块(直接索引),第10个结点是一级间接索引,第11个结点是二级间接索引,第12个结点是三级间接索引:
在这里插入图片描述
如果一个存储结构不使用索引,其存储量就是物理块数 * 单位大小。如果每个物理块的单位大小为4K,则总空间为52K。

如果引入一级间接索引,索引指向具体的物理块号,
在这里插入图片描述

如果一个地址占用 4 个字节,一个物理盘块有 4KB 容量,则在第 10 个物理块中就可以存放 1024 份地址,则10 号物理块可存储 1024 份容量,即1024 X 4KB = 4MB容量。

如果引入二级间接索引,即索引指向中间索引,中间索引再指向具体的物理块号,

在这里插入图片描述
如果一个地址占用 4 个字节,一个物理盘块有 4KB 容量,则在第 11 个物理块中就可以存放 1024 份地址,每份子地址可以再存储 1024 份二级地址,则11 号物理块可存储 1024 * 1024 份容量,就是 1024 X 1024 X 4KB = 4GB 的容量。
三级间接索引依次类推。

实战

某⽂件系统采⽤多级索引结构,若磁盘块的⼤⼩为4K字节,每个块号需占4字节,采⽤⼆级索引结构时的⽂件最⼤长度可占⽤( )个物理块。
答案:1024*1024
解析:每个索引表可以存4K/4=1024个块号,所以⼆级索引可对应1024*1024个物理块。

现有一个文件系统采用索引结点管理模式,物理块大小为1KB。每个索引结点有32KB的存储空间,每个地址项占4字节,磁盘索引块和磁盘数据块大小均为1KB。其中0-4用直接地址索引,5-6用一级间接地址索引,7用二级间接地址索引,逻辑块号为5和261的物理块号在哪里?
答案:6、7的第一个字块。

解析:
逻辑块号从0开始编码,物理块号从一开始编码,所以逻辑块号5就代表第六块。
每个地址项占4字节,磁盘索引块大小均为1KB,所以一个物理块可以存放256份地址。
1KB=1024字节,1024字节/(4字节/块)=256块。
第261个逻辑块号的物理块号位置:
在这里插入图片描述

磁盘

基本概念

在这里插入图片描述
盘面号(磁头号):0 ~ M-1;由于一个盘面上只有一个磁头,所以盘面号也叫作磁头号
柱面号(磁道号):0 ~ L-1;磁道编号通常是从外沿向内进行编号
扇区号:1 ~ N;对于同一条磁道可以分为若干扇区,对于扇区分成三个字段

标识符字段:存放扇区的标识信息
校验字段:检验磁盘读写操作的正确性
数据字段:存放数据信息

存储容量计算公式
存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

扇区编址方式

  • CHS方式:柱面/磁头/扇区,××磁道(柱面),××磁头,××扇区,DOS中称为绝对扇区表示法。
  • LBA方式:相对扇区号,以磁盘第一个扇区(0柱面、0磁头、1扇区)作为LBA的0扇区,后面的扇区依次编号

LBA扇区号与CHS间的转换

  • CHS转换为LBA:若L、M、N分别表示一个磁盘的柱面数(磁道数)、盘面数(磁头数)、扇区数,则第i柱面j磁头k扇区所对应的LBA扇区号为: L B A = ( i ∗ M ∗ N ) + ( j ∗ N ) + k − 1 LBA=(i*M*N)+(j*N)+k-1 LBA=(iMN)+(jN)+k1
  • LBA转换为CHS:若知道LBA扇区号,则对应的柱面号、磁头号、扇区号分别是:
    • 柱面号: i = i n t ( L B A / ( M ∗ N ) ) i=int(LBA/(M*N)) i=int(LBA/(MN))
    • 磁头号: j = [ L B A m o d ( M ∗ N ) ] / N j=[LBAmod(M*N)]/N j=[LBAmod(MN)]/N
    • 扇区号: k = [ L B A m o d ( M ∗ N ) ] m o d N + 1 k=[LBAmod(M*N)]modN+1 k=[LBAmod(MN)]modN+1

磁盘类型

按照磁头是否需要移动进行分类:

  • 固定头磁盘:对于同一盘面上的不同磁道,都有相应位置固定的磁头进行读写,如上图中的黑色磁头和蓝色磁头分别读取一个磁道,对多条磁道进行读写的时候,磁头不需要移动位置。所以对于一个盘面上的多条磁道可以并行进行读取,访问速度较快。同样价格也较高
    在这里插入图片描述
  • 移动头磁盘:对于移动头磁盘,它的磁头是可以沿着径向臂进行径向移动,所以只需要使用一个磁头就可以访问所有的磁道。但是同一时间只能访问一个磁道,只能实现顺序读写,读写速度较慢,造价较低。计算机中使用的磁盘大多数都是移动头磁盘
    在这里插入图片描述

磁盘访问时间

以移动头磁盘为例

寻道时间Ts:把磁头移动到指定磁道上所经历的时间。
T s = m ∗ n + s T_s=m*n+s Ts=mn+s
m:一般磁盘:0.2~0.3;高速磁盘:m≤0.1
s:磁臂启动时间,约为2ms~3ms

磁盘读写操作中绝大部分时间都是寻道时间,所以对寻道时间进行优化可以有效的大幅减少访问时间。

旋转延迟时间Tr:指定扇区移动到磁头下面所经历的时间。
在这里插入图片描述
也就是要读取的蓝色扇区移动到黑色磁头下面所要经历的时间。旋转延迟时间最长为 1 r \frac{1}{r} r1,最短为0。平均旋转延迟时间为 T r = 1 2 r T_r=\frac{1}{2r} Tr=2r1r表示转速。

传输时间Tt:把数据从磁盘读出或向磁盘写入数据所经历的时间。
T t = b r N T_t=\frac{b}{rN} Tt=rNb
b表示要读写的字节数,N表示一条磁道上总的字节数

因此,可将磁盘访问时间 T a T_a Ta表示为:
T a = T s + 1 2 r + b r N T_a=T_s+\frac{1}{2r}+\frac{b}{rN} Ta=Ts+2r1+rNb

磁盘调度

当有大量磁盘I/O请求时,恰当选择调度顺序,以降低完成这些I/O服务的总时间。

磁盘调度方式主要有以下两种:

  • 移臂调度:当同时有多条磁道访问请求时,确定磁道访问顺序,以减少平均寻道时间
  • 旋转调度:当一条磁道上有多个扇区访问请求时,确定扇区访问顺序,以减少旋转延迟时间。按照扇区距离磁头的位置的偏差来进行调度。

旋转调度算法较为简单,只是按照扇区距离磁头的位置的偏差来进行调度。
在这里插入图片描述

磁盘调度算法

主要有两类:

  • 移臂调度:在满足一个磁盘请求时,总是选取与当前移动臂前进方向上最近的那个请求,使移臂距离最短
  • 旋转调度:在满足一个磁盘请求时,总是选取与当前读写头旋转方向上最近的那个请求,是旋转圈数最少

移臂调度算法

FCFS

先来先服务,First-Come First Served

假设当前磁道在100号磁道,磁头正向磁道号增加的方向(由外向里)移动。现依次有如下磁盘请求队列:23, 376, 205, 132, 61, 190, 29, 4, 40

则磁盘调度顺序为:23, 376, 205, 132, 61, 190, 29, 4, 40

寻道距离:Ts = (100-23) + (376-23) + (376-205) + (205-132) + ... + (40-4)

平均寻道距离 = Ts / 9

由于先来新服务算法并没有对磁盘访问进行优化,所以它可能会得到比较长的寻道距离。

SSTF

最短寻道时间优先算法,在选择下一条磁道的时候总是访问与当前磁盘距离最近的磁盘进行访问。

对于上例,其磁盘调度顺序为:132, 190, 205, 61, 40, 29, 23, 4, 376

寻道距离:Ts = (132-100) + (190-132) + (205-190) + ... + (23-4) + (376-4)

最短寻道距离优先可以保障每一次的寻道距离最短,但是不能够保障最后系统得到的平均寻道距离最短。

存在的问题:

  • 不能保证平均寻道距离最短;
  • 会产生饥饿现象; 如果系统不断的出现在100号磁道附近的磁道访问请求,则原先较远的磁道请求如205, 376 就会处于很长时间的等待中
  • 影响磁盘的机械寿命:不考虑磁头的移动方向,可能会造成磁盘频繁的改变其磁头运动方向。从而影响磁盘的机械寿命
SCAN

扫描算法,又称为电梯算法,是目前操作系统中用的比较广泛的一种磁盘移臂调度算法。其在对下一条磁道进行选择时,需要判断:

  • 欲访问磁道与当前磁道的距离
  • 磁头当前的移动方向,即:保持处于磁道号增加或减少状态

同样,对于上例,其磁盘调度顺序为:132, 190, 205, 376, 61, 40, 29, 23, 4

寻道距离:Ts = (132-100) + (190-132) + (205-190) + (376-205) + (376-61) + (61-40) +... + (23-4)

N-Step-SCAN

N步扫描算法,为了克服扫描算法和最短寻道时间有限算法的磁臂粘着现象而引入的。

磁臂粘着现象就是指当系统不断的提出对当前磁道的访问,那么磁头会一直处于该磁道上进行磁道访问请求,导致其它磁道的访问被推迟的现象。

N步扫描算法的算法思想:将磁盘请求队列分成若干个长度为N的子队列,磁盘调度将按FCFS算法依次处理这些子队列; 而每处理一个子队列时又采用SCAN算法。

如对于上例,若其子队列的长度为4,则可以分为3个队列:
在这里插入图片描述
它就会首先处理第一个队列中的四个磁道请求,再处理第二个队列和最后的第三个队列。其对于每一个队列的处理都是按照扫描算法来进行处理。

FSCAN

该算法实质上是N步SCAN算法的简化, 它只将磁盘请求队列分成两个子队列:

  • 由当前所有请求磁盘形成的队列,由磁盘调度按SCAN算法进行处理
  • 在扫描期间,将新出现的所有磁盘I/O请求, 放入另一个等待处理的请求队列

如上例,先把所有的磁盘请求放在第一个队列中,对其应用扫描算法进行磁盘调度。若访问过程中出现的新的磁盘请求就放在下面的新队列中,当第一个队列全部访问完,再处理第二个队列。

旋转调度算法

当同一磁道(柱面)上有多个扇区请求时,总是选取与当前读写头最近的那个I/O请求,使旋转圈数最少。

例:对磁盘访问的5个请求,若磁头在1号柱面,先按SCAN算法做移臂调度(柱面号排序),再进行旋转调度(块号排序),则调度顺序如下:
在这里插入图片描述

实战

在磁盘调度管理中,应先进行移臂调度,再进行旋转调度。假设磁盘移动臂位于21号柱面上,进程的请求序列如下表所示。如果采用最短移臂调度算法,那么系统的响应序列应为()。

4个备选项为:
②⑧③⑤⑦①④⑥⑨
②③⑧④⑥⑨①⑤⑦
②⑧③④⑤①⑦⑥⑨
①②③④⑤⑥⑦⑧⑨

请求序列柱面号磁头号扇区号
1789
2363
2396
32105
1784
32310
1779
23104
38108

解析:
应先进行移臂(对应柱面)调度,再进行旋转(对应磁头、扇区)调度。由表可知
①⑤⑦在17柱面(21-17=4)
②③⑧在23柱面(23-21=2)
④⑥在32柱面(32-21=9)
因此按最短移臂算法,应该是23柱面、17柱面、32柱面、38柱面。应该是②⑧③⑤⑦①④⑥⑨。

任务调度

前驱图

实战

某计算机系统中有一个CPU、一台扫描仪和一台打印机。现有三个图像处理任务,每个任务有三个程序段:扫描 S i S_i Si,图像处理 C i C_i Ci和打印 P i P_i Pi i = 1 , 2 , 3 i=1, 2, 3 i=1,2,3。下图为三个任务各程序段并发执行的前驱图,其中,()可并行执行,()的直接制约,()的间接制约。
在这里插入图片描述
解析:
前趋图是一个有向无循环图,图由结点和结点间的有向边组成,结点代表各程序段的操作,而结点间的有向边表示两程序段操作之间存在的前趋关系(->)。两程序段 P i P_i Pi P j P_j Pj的前趋关系表示成 P i − > P j P_i ->P_j Pi>Pj,其中 P i P_i Pi P j P_j Pj的前趋, P j P_j Pj P i P_i Pi的后继,其含义是 P i P_i Pi执行完毕才能由 P j P_j Pj执行。

可见,S1执行完毕后,计算C1与扫描S2可并行执行;C1与S2执行完毕后,打印P1、计算C2与扫描S3可并行执行;P1、C2与S3执行完毕后,打印P2与计算C3可并行执行。

直接制约:
间接制约:

可见:
直接制约:C1和P1受到S1、C2和P2受到S2、C3和P3受到S3
间接制约:S2和S3受到S1、C2和C3受到C1、P2和P3受到P1

参考

  • 操作系统-文件系统-磁盘管理

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大型企业如何通过低代码平台提高开发效率和降低成本?

云计算、大数据、人工智能、物联网风口之下&#xff0c;企业数字化转型如同被按下了快进键。为快速攻破转型路上的技术关&#xff0c;企业纷纷把目光投向了低代码开发平台&#xff0c;希望可以用最短的时间&#xff0c;开发出最适合企业发展的应用。 集团企业需要什么样的数字化…

NeRF-SLAM部署运行(3060Ti)

记录在部署运行期间遇到的一些问题&#xff0c;分享给大家~ 一、环境 RTX 3060 Ti、8G显存&#xff08;其实是不够用&#xff0c;只能简单跑跑demo&#xff09;、Ubuntu18.04 二、部署 1. 下载代码 git clone https://github.com/jrpowers/NeRF-SLAM.git --recurse-submod…

解决恶意IP地址攻击:保卫网络安全的有效方法

随着互联网的发展&#xff0c;网络安全威胁变得日益复杂&#xff0c;其中包括恶意IP地址攻击。这些攻击通常是网络犯罪分子的手段之一&#xff0c;用于入侵系统、窃取数据或进行其他恶意活动。本文将探讨如何解决恶意IP地址攻击&#xff0c;以保护网络安全。 恶意IP地址攻击是…

与云栖的浪漫邂逅:记一段寻找云端之美的旅程

云端之旅 2023 年的云栖大会如约而至&#xff0c;这次云栖大会也是阿里新任掌门蔡老板当任阿里巴巴董事局主席以来的第一次。大会与以往有很多不一样的地方&#xff0c;其中 AIGC 更是本届大会的重点议题&#xff01;你会感叹&#xff0c;阿里还是猛啊&#xff01; 我逛了下展…

Web Woeker和Shared Worker的使用以及案例

文章目录 1、前言2、介绍 Web Worker3、使用须知及兼容性3.1、使用须知3.2、兼容性 4、使用 Web Worker4.1、创建 Web Worker4.2、与主线程通信4.3、终止 Web Worker4.4、监听错误信息 5、使用 Shared Worker4.5、调试 Shared Worker 6、使用中的一些坑6.1、Web Woeker 中引入了…

8种按钮设计的常见类型分享

按钮是UI界面的元素之一&#xff0c;可以本能地吸引游客并将其转化为买家。界面中的UI按钮类型包括&#xff1a;CTA按钮、幽灵按钮、下拉按钮、浮动操作按钮、汉堡包按钮、加号按钮、消耗品按钮、共享按钮。 号召性用语按钮 CTA&#xff08;呼叫语言&#xff09;按钮是一种交…

被这7款在线涂鸦画板惊艳到,手残也能画出涂鸦大片!

作为一名涂鸦爱好者或者手帐达人&#xff0c;你是否在寻找好用的在线涂鸦画板软件呢&#xff1f;涂鸦画板软件释放了创造性的无限可能&#xff0c;让你能够将想法转化为令人惊叹的视觉效果&#xff0c;并轻松地与客户、同行和全球观众分享你的作品。 在这篇文章中&#xff0c;…

如何将微信视频号的视频保存到手机相册?

微信视频号是近年来微信推出的一项功能&#xff0c;它允许用户通过手机拍摄和分享短视频内容。然而&#xff0c;许多人纷纷表示他们想要保存微信视频号上的视频&#xff0c;以便在离线时观看。但一直以来这个需求腾讯一直没有开放随后也取消了复制视频链接功能&#xff0c;为此…

审核 Microsoft SQL Server 日志

手动审核数据库活动是一项艰巨的任务&#xff0c;有效完成审计的最佳方法是使用简化和自动化数据库监控的综合解决方案&#xff0c;该解决方案还应使数据库管理员能够监控、跟踪和即时识别任何操作问题的根本原因&#xff0c;并实时检测对机密数据的未经授权的访问。 什么是 S…

NI USB9218国产对标51.2 kS/s/ch,2通道C系列通用模拟输入模块

51.2 kS/s/ch&#xff0c;2通道C系列通用模拟输入模块 NI‑9218专为多用途测量而设计。 它使用针对特定测量的适配器提供了对加速度计、供电传感器、全桥和电压测量以及四分之一桥、半桥、60V和电流测量的内置支持。 每个通道可单独选择&#xff0c;因而用户可在各个通道上进行…

可靠的互联网兼职平台,平常可以做副业充实生活

在互联网时代&#xff0c;越来越多的人开始通过网络来寻找兼职副业的机会&#xff0c;能够更灵活地安排自己的时间&#xff0c;实现自己的收入增值。那么找到一个正规可靠的线上兼职平台就是一个比较重要的事情&#xff0c;这里分享几个正规靠谱的线上兼职副业平台&#xff0c;…

YOLOv7优化:独家创新(Partial_C_Detect)检测头结构创新,实现涨点 | 检测头新颖创新系列

💡💡💡本文独家改进:独家创新(Partial_C_Detect)检测头结构创新,适合科研创新度十足,强烈推荐 SC_C_Detect | 亲测在多个数据集能够实现大幅涨点 收录: YOLOv7高阶自研专栏介绍: http://t.csdnimg.cn/tYI0c ✨✨✨前沿最新计算机顶会复现 🚀🚀🚀YOLO…

基于深度学习的人脸性别年龄识别 - 图像识别 opencv 计算机竞赛

文章目录 0 前言1 课题描述2 实现效果3 算法实现原理3.1 数据集3.2 深度学习识别算法3.3 特征提取主干网络3.4 总体实现流程 4 具体实现4.1 预训练数据格式4.2 部分实现代码 5 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 毕业设计…

自适应H5樱花个人网站引导页导航源码SEO增强版

懂前端和 PHP 技术想更改前端页面的可以看&#xff1a;网站的前端页面不好看&#xff0c;你可以查看 index 目录&#xff0c;内有参数 txt 文本里面记录了前端页面所使的关键 JS 代码和 php 代码&#xff0c;只需要稍加复制粘贴修改到新的前端页面就可以了&#xff01;主目录的…

Cesium笔记(0):Cesium简介和本地运行

一、Cesium介绍 是国外一个基于JavaScript编写的使用WebGL的地图引擎开源程序&#xff0c;可以免费用于商业和非商业 二、特点 支持3D,2D,2.5D形式的地图展示可以自行绘制图形&#xff0c;高亮区域&#xff0c;并提供良好的触摸支持支持绝大多数的浏览器和mobile动态地理空间…

代码随想录Day32 动态规划01 LeetCodeT509 斐波那契数列 T70 爬楼梯 T746 爬楼梯的最小消耗

前言:动态规划基础 动态规划首先可以解决的问题有背包问题,打家劫舍问题,股票问题,子序列问题等,主要是将一个大的问题切分成多个重叠的子问题,所以动态规划一定是上一个状态递推过来的,有一个重要的状态转移方程,但是这也并不是解题的全部,我们将动态规划的题目基本分为五步来…

【java学习—十一】泛型(1)

文章目录 1. 为什么要有泛型Generic2. 泛型怎么用2.1. 泛型类2.2. 泛型接口2.3. 泛型方法 3. 泛型通配符3.1. 通配符3.2. 有限制的通配符 1. 为什么要有泛型Generic 泛型&#xff0c;JDK1.5新加入的&#xff0c;解决数据类型的安全性问题&#xff0c;其主要原理是在类声明时通过…

Android原生项目集成uniMPSDK(Uniapp)遇到的报错总结

uni小程s序SDK 集成到Android原生项目:老项目中用到的库较多&#xff0c;会出现几种冲突问题&#xff0c;总结如下&#xff1a; 报错1&#xff1a; Execution failed for task :app:processDebugManifest. > Manifest merger failed with multiple errors, see logs Andro…

【文献分享】基于线特征的激光雷达和相机外参自动标定

论文题目&#xff1a;Line-based Automatic Extrinsic Calibration of LiDAR and Camera 中文题目&#xff1a;基于线特征的激光雷达和相机外参自动标定 作者&#xff1a;Xinyu Zhang, Shifan Zhu, Shichun Guo, Jun Li, and Huaping Liu 作者机构&#xff1a;清华大学汽车安…

论文翻译-ImageNet Classification with Deep Convolutional Neural Networks

[toc] 前言 AlexNet是是引领深度学习浪潮的开山之作&#xff0c;即使是我们现在进入了ChatGPT时代&#xff0c;这篇论文依然具有一定的借鉴意义。AlexNet的作者是多伦多大学的Alex Krizhevsky等人。Alex Krizhevsky是Hinton的学生。网上流行说 Hinton、LeCun和Bengio是神经网…