操作系统笔记整理10——输入输出系统(2)

2023-10-26

点此链接可跳转到:操作系统笔记整理——目录索引页

参考书籍:《计算机操作系统》第四版 汤小丹等编著

用户层I/O软件

用户层软件必须通过一组系统调用来取得操作系统服务。通过调用对应的库函数使用系统调用
I/O软件还包括运行在内核之外的守护进程(后台)等

系统调用

操作系统内核提供的一组功能强大的函数,在核心态下运行
系统调用是用户程序取得OS服务的唯一途径
当OS捕获到应用程序中的系统调用后,便将CPU的状态从用户态转换到核心态,然后转向操作系统中相应进程,由该过程完成所需的I/O操作,执行完成后,系统又将CPU状态从核心态转换到用户态,返回到应用程序继续执行。

库函数

库函数是系统调用的一种封装和扩展,工作在用户态
用户层 I/O 软件提供了一些读/写设备和控制/检查设备的库函数,以方便 用户取得 OS 的服务。

假脱机(Spooling)系统

脱机输入输出技术
为了缓和 CPU 的高速性与 I/O 设备的低速性间矛盾而引入,该技术在外 围控制机的控制下,先将低速I/O设备上的数据传送到高速磁盘上,或者相反,这样当处理机需要输入数据时,便可以直接从磁盘中读取数据,极大地提高了输入速度。反之,在输出数据时,也可以快速地把数据先输出到磁盘上,处理机便可去做其他的事情。
假脱机技术
当系统中引入了多道程序技术后,完全可以利用其中的一道程序,来模拟脱机输入时的外围控制机功能,把低速I/O设备上的数据传送到高速磁盘上,再用另一道程序模拟脱机输出时外围控制机的功能,把数据从磁盘传送到低速输出设备上

SPOOLing的组成

  1. 输入井和输出井(外存中)
    磁盘上开辟出来的两个内存区域。输入井模拟脱机输入时的磁盘,用于收容I/O设备输入的数据。输出井模拟脱机输出时的磁盘,用于收容用户程序的输出数据
  2. 输入缓冲区和输出缓冲区(内存中)
    内存中开辟的两个缓冲区,用于缓和 CPU、磁盘、I/O 设备之间速度不匹配的矛盾。输入缓冲区用于暂存由输入设备传送的数据,之后再传送到输入井。输出缓冲区用于暂存从输出井传送的数据,之后再传送到输出设备。
  3. 输入进程和输出进程
    输入进程用于模拟脱机输入时的外围控制机,将用户要求的数据从输入设备传送到输入缓冲区,再存放到输入井,当CPU需要输入设备时,直接从输入井读入内存。
    输出进程也用于模拟脱机输出时的外围控制机,把用户要求输出的数据从内存传送到输出井,待输出设备空闲时,再将输出井中的数据经过输出缓冲区输出至输出设备上。
  4. 井管理程序
    用于控制作业与磁盘井之间信息的交换
    磁盘井 ⇔ 进程 buf ⇔ 用户进程

在这里插入图片描述

SPOOLing系统的特点

  1. 提高了I/O速度
    把对低速设备操作变为对输入/输出井的操作。
  2. 将独占设备改造为共享设备。
    实际上并没有为任何进程分配设备,分配设备的实质是分配输入/输出井,并为进程分配一个存储区和建立一 张 I/O 请求表
  3. 实现了虚拟设备功能。

缓冲区管理

缓冲的引入

  1. 缓解 CPU 与 I/O 设备间速度不匹配的矛盾。
  2. 减少中断 CPU 的次数。
    buffer 越大,“buffer 满”发生频率越低。
  3. 解决数据粒度(即基本数据单元大小)不匹配的问题。
  4. 提高 CPU 与 I/O 设备的并行性。

在这里插入图片描述
中断一次需要的时间(缓冲区满所用的时间,即中断一次所需的时间)
中断响应时间:CPU必须在下一数据写入缓冲区之前,对当前缓冲区中数据进行响应处理,否则缓冲区中的数据将会被覆盖掉。

单缓冲区和双缓冲区

单缓冲区

单缓冲区方式是在设备和处理机之间设置一个缓冲区。
设备与处理机交换数据时,先把交换的数据写入缓冲区,然后需要数据 的设备/处理机再从缓冲区中取走数据。
单缓冲区方式可以缓解 CPU 与 I/O 设备间速度不匹配的矛盾。
由于缓冲区属于临界资源,不允许多个进程同时对一个缓冲区操作,因 此在某一段时间内,缓冲区只能存放输入数据或输出数据(单向传输)。

在这里插入图片描述
无缓冲区时:处理一块数据的时间为:T+C
有缓冲区时:C和T是可以并行的,因此,处理一块数据的时间为:Max(C,T)+M

双缓冲区

由于缓冲区是共享资源,生产者与消费者在使用缓冲区时必须互斥。如果消费者尚未取走缓冲区中的数据,即使生产者生产出新的数据,也无法将它送入缓冲区,生产者需等待。由此,引入双缓冲区,便能解决这一问题。

双缓冲区方式是在设备和处理机之间设置两个缓冲区。

在设备输入时,先将数据送入第一缓冲区,装满后便转向第二缓冲区。此时操作系统可以从第一缓冲区中移出数据,并送入用户进程。

在这里插入图片描述
M与T可以并行,C与T也可以并行,因此处理一块数据的时间为:Max(C+M,T),通常 M≪T,因此处理一块数据的时间可以粗略地估计为Max(C,T)。
如果C<T,可使块设备连续输入
如果C>T,可使CPU不必等待设备输入

环形缓冲区

当输入输出的速度基本相等时,采用双缓冲能获得较好的效果,可使生产者和消费者基本上能并行操作。但若两者的速度相差甚远,双缓冲的效果则不够理想,不过可以随着缓冲区和数量的增加,使情况有所改善。因此,又引入了多缓冲机制,可将多个缓冲区组织成环形缓冲区形式。

环形缓冲区的组成

多个缓冲区
在设备和处理机之间设置多个大小相等的缓冲区,这些缓冲区构成环形。作为输入的多缓冲区可分为三种类型:用于装输入数据的空缓冲区R、已装满数据的缓冲区G以及计算进程正在使用的现行工作缓冲区C
多个指针
Nexti:指示下次可用的空缓冲区的指针
Nextg:指示下次可用的数据缓冲区的指针
Current:指示正在使用的缓冲区的指针

在这里插入图片描述

环形缓冲区的使用

Getbuf过程
计算进程:调用Getbuf过程,取Nextg对应缓冲区使用,须把它改为现行工作缓冲区,并令Current指针指向该缓冲区的第一个单元,同时将Nextg对应的缓冲区置为空,Nextg=(Nextg+1)Mod N
输入进程:调用Getbuf过程,取Nexti对应缓冲区使用,将Nexti对应的缓冲区置为满,Nexti=(Nexti+1)Mod N
Releasebuf过程
输入进程:把C装满后,调用Releasebuf过程释放缓冲区,改为G
计算进程:把C的数据提取完毕后,调用Releasebuf过程释放缓冲区,改为R

进程之间的同步问题

指针 Nexti 和指针 Nextg 将不断地沿着顺时针方向移动。
Nexti 追上 Nextg:表示输入速度 > 输出速度,全部 buf 满,再无空 buf 可用,这时输入进程阻塞。这种情况被称为系统受计算限制。
Nextg 追上 Nexti:输入速度 < 输出速度,全部 buf 空,这时输出进程阻塞。这种情况被称为系统受 I/O 限制。

缓冲池

上述三种缓冲区的组织形式仅适用于某种特定的 I/O 进程和计算进程,属于专用缓冲。当系统中的设备很多时,将会有许多这样的循环缓冲区,消耗大量的内存空间,而且其利用率也不高。为了提高缓冲区的利用率,可以采用公共缓冲池技术,在池中设置了多个可供若干个进程共享的缓冲区。缓冲池与缓冲区的区别在于:缓冲区仅仅是一组内存块的链表,而缓冲池则是包含了一个管理的数据结构及一组操作函数的管理机制,用于管理多个缓冲区。

缓冲池的组成

  1. 空白缓冲队列emq:由空缓冲区所链成的队列。其队首指针F(emq)和队尾指针L(emq)分别指向该队列的首缓冲区和尾缓冲区
  2. 输入队列inq:由装满输入数据的缓冲区所链成的队列,队首指针F(inq),队尾指针L(inq)
  3. 输出队列outq:由装满输出数据的缓冲区所链成的队列,队首指针F(outq),队尾指针L(outq)
  4. 收容输入缓冲区hin
  5. 提取输入缓冲区sin
  6. 收容输出缓冲区hout
  7. 提取输出缓冲区sout

getbuf过程和putbuf过程

Addbuf(type,number) 过程:用于将参数 number 所指示缓冲区挂在 type队列上。
Takebuf(type) 过程:用于从 type 所指示的队列的队首摘下一个缓冲区。
MS(type):互斥信号量,使诸进程互斥地访问缓冲池队列
RS(type):资源信号量(如缓冲队列中缓冲区的数量),保证诸进程同步地使用缓冲区
在这里插入图片描述

缓冲池的工作方式

在这里插入图片描述

  1. 收容输入:输入进程调用Getbuf(emq)过程,从空缓冲队列emq的队首摘下一空缓冲区,把它作为收容输入工作区hin。然后,把数据输入其中,装满后再调用Putbuf(inq,hin),将它挂在输入队列inq的末尾。
  2. 提取输入:计算进程调用Getbuf(inq)过程,从输入队列inq队首取得一缓冲区,作为提取输入工作缓冲区sin,计算进程用完该数据后,再调用Putbuf(emq,sin)过程,将它挂到空缓冲队列emq末尾
  3. 收容输出:计算进程调用Getbuf(emq),从空缓冲队列emq的队首取得一空缓冲作为输出工作缓冲区hout,当其中装满输出数据后,又调用Putbuf(outq,hout)过程,将它挂在outq末尾
  4. 提取输出:输出进程调用Getbuf(outq)过程,从输出队列的队首取得一装满输出数据的缓冲区,作为提取输出工作缓冲区sout。在数据提取完后,再调用Putbuf(emq,sout),将它挂在emq末尾

在这里插入图片描述

磁盘存储器的性能和调度

磁盘结构

  • 磁道:磁盘在格式化时被划分成许多同心圆,这些同心圆轨迹叫做磁道,磁盘的 0 磁道在最外圈
  • 柱面:不同盘片相同半径的磁道所组成的圆柱称为柱面
  • 扇区:磁道被划分成一段段的圆弧,每段圆弧叫做一个扇区。扇区是磁盘最小的物理存储单元
  • 簇:簇是操作系统使用的逻辑概念(分配的最小单位),相邻的扇区组合在一起,形成一个簇

数据的组织

磁盘结构:盘面、磁道、扇区
磁盘物理块的地址:磁头号、柱面号、扇区号
存储容量=磁头(盘面)数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数

磁盘类型
固定头磁盘:每条磁道上都有一个磁头
移动头磁盘:每个盘面上都有一个磁头

磁盘格式化
低级格式化:物理级的格式化,主要是用于划分硬盘的磁柱面、建立扇区数和选择扇区间隔比。
高级格式化:清除硬盘上的数据、生成引导区信息、初始化FAT表、标注逻辑坏道等。

温彻斯特盘低级格式化
在这里插入图片描述
每个扇区容量为 600 个字节,其中 512 个字节存放数据,其余用于存放 控制信息。每扇区包括两个字段:
标识符字段:其中一个 SYNCH 字节(同步字节)用于标识一个扇区,
CRC 字段用于段校验(循环冗余码校验)。 数据字段:其中可存放 512 个字节的数据。
为了简化和方便磁头的辨识,在一个盘面的不同磁道、一个磁道的不同扇区、一个扇区的不同字段之间都设置了一个到若干个不同长度的间距(Gap)

磁盘访问时间

寻道时间Ts
磁头定位到磁道所需时间
Ts = m × n + s
s 为启动磁臂的时间,n 为移动的磁道数,m 为常数与磁盘驱动器的速度有关。

旋转延迟时间Tr
扇区移动到磁头下面所经历的时间
Tr = 1/2r(均值)
r为磁盘每秒钟的转数

传输时间Tt
数据从磁盘读出或向磁盘写入数据所经历的时间
Tt= b/rN
r为磁盘每秒钟的转数,N为一条磁道上的字节数,b为每次读/写的字节数

访问时间Ta = m × n + s + 1/2r + b/rN

例1:考虑一个磁盘系统。平均寻道时间是 4ms,转速是 7500rpm,忽略控制器的开销。每个磁道有 500 个扇区,每个扇区 512 字节。假设读取一个包括2500 个扇区的文件(文件大小为 1.28MB),试估计传送需要的总时间。
1.假设文件尽可能紧凑地保存在磁盘上,占据 5 个相邻磁道的所有扇区(5×500)。读取第一条磁道的时间:
在这里插入图片描述
读取第一条磁道的时间为 16ms。 读取整个文件的时间:
后面的 4 个磁道不再需要寻道时间,每个磁道可以在 4+8=12ms 内读入。
总时间 = 16 + (4 × 12) = 64ms = 0.064s
2.假设文件随机地分布在磁盘上。读取整个文件的时间:
在这里插入图片描述

例2
在这里插入图片描述在这里插入图片描述在这里插入图片描述

磁盘调度算法

先来先服务算法(FCFS)

只考虑申请者申请的先后次序完成磁盘访问操作
在这里插入图片描述
磁头臂来回反复移动,增长了等待时间,对机械结构不利。

最短寻道时间优先算法(SSTF)

选择要求访问的磁道与当前磁头所在磁道距离最近的访问,以使每次的寻道时间最短,但不能保证平均寻道时间最短
在这里插入图片描述

缺点
磁臂粘着:在最短寻道时间优先调度算法中,可能出现磁臂停留在某处的 情况,即反复请求某一磁道,从而垄断了整个磁盘设备,这种现象称为磁臂粘着。
磁道歧视:假设某一时刻外磁道请求不断,则内磁道请求可能长时间得不 到满足,这种现象称为“磁道歧视”。因此 SSTF 算法缺乏公平性,存在饥饿和饿死的问题。
磁盘的0磁道在最外圈

扫描算法(Scan)

扫描算法一直移动到最内柱面,LOOK算法(电梯算法)一旦内柱面没有访问请求就改变移动方向,不扫描到头。这里不做区分,统一按照LOOK算法解决

无访问请求时,磁头引臂停止不动;当有访问请求时,起始时磁头由外柱面向内柱面移动,并为途经的请求服务。一旦内柱面没有访问请求, 则改变移动方向(如外柱面有请求)或停止移动(外柱面也无请求)。
在这里插入图片描述
对于 SCAN(LOOK) 算法来说,位于不同磁道(柱面)的 I/O 请求与获取 服务所需的等待时间是不同的。
对于靠近边缘的柱面,最坏情况的移动量为2N-1(N 为柱面数);对于 靠近中部的柱面,最坏情况为N-1。平均情况分别约为 N 和 N/2。

循环扫描算法(CSCAN)

循环扫描算法是为了消除边缘柱面与中部柱面等待时间差异而进行的改进。
磁头只在单方向移动过程中才为途经的请求服务,一旦达到边缘,则立 即快速移动至另一边缘,在此移动过程中并不处理访问请求,然后重新 开始新一轮扫描。
在这里插入图片描述

NStepSCAN算法

将磁盘请求队列分成若干个长度为 N 的子队 列,磁盘调度将按 FCFS 算法依次处理这些子队列,而每一子队列按SCAN 算法处理。
N=1 ⇒ FCFS 算法
N 很大 ⇒ SCAN 算法

FSCAN算法

FSCAN 算法实质上是 N 步 SCAN 算法的简化。FSCAN 只将磁盘请求 队列分成两个子队列。一个是由当前所有请求磁盘 I/O 的进程形成的队列,由磁盘调度按 SCAN 算法进行处理。另一个是在扫描期间,将新出现的所有请求磁盘 I/O 的进程放入另一个等待处理的请求队列。这样所有的新请求都将被推迟到下一次扫描时处理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

操作系统笔记整理10——输入输出系统(2) 的相关文章

  • 6.OS运行机制(补充)

    中断
  • java调优总结

    JVM调优总结 序 几年前写过一篇关于JVM调优的文章 前段时间拿出来看了看 又添加了一些东西 突然发现 基础真的很重要 学习的过程是一个由表及里 再由里及表的过程 呵呵 所谓的 温故而知新 而真正能走完这个轮回的人 也就能称为大牛或专家了
  • 掉电无法启动数据库问题解决

    由于突然掉电 造成客户在windows平台上10 2 0 1数据库无法驱动 以下是具体解决步骤 一 定位故障问题 1 启动数据库 查看错误 SQL gt startup ora 01113 file 1 needs media recove
  • VMware-Ubuntu安装bochs

    我的运行环境是VMware的Ubuntu 首先大家可以按照CSDN上的教程按照符合自己需求的虚拟机 我在上午还在VMware和virtualBox之间做选择 但是由于已经安装过了VMware 所以我就直接用了VMware 当然了 一千人眼中
  • Linux使用nvida-smi查看GPU类型

    nvida smi提供一个查看GPU信息的方法 然而这种方式不能查看GPU型号 型号被省略成了GeForce RTX 208 如果我们需要查看GPU的型号 只需要运行nvidia smi L即可 mrfive ubuntu nvidia s
  • win10 Enable developer Mode

    经过漫长的安装过程 win10终于装上了vs2015 rc 写个小程序试试 结果提示 根据提示打开 设置 更新 for developer 据说应该有这么个界面 但是这个界面根本出不来 直接闪退的说 翻 MSDN 终于翻出了解决方法 htt
  • 红帽7.9部署telnet服务

    升级ssh 为预防万一提前配置telnet服务 安装软件包 yum install telnet server yum install xinetd xinetd加入开机自启 systemctl enable xinetd service
  • 操作系统笔记六(文件管理)

    1 文件逻辑结构 1 1逻辑结构的文件类型 分类 有结构文件 例如 PNG文件 无结构文件 1 2顺序文件 1 3索引文件 2 辅存的存储空间分配 2 1分配方式 连续分配 直接分配连续的存储空间 链接分配 隐式链接 在盘块内指定下一个盘块
  • 《一个操作系统的实现》读书笔记-- 第一章--最小的“操作系统”

    一 最简单的 操作系统 最最简单的 操作系统 就是一个最最简单的引导扇区 Boot Sector 虽然它不具有任何功能 但是它却能够直接在裸机上运行 不依赖其他软件 一个引导扇区是512个字节 并且以0xAA55为结束标识的扇区 下面就是那
  • Linux系统如何看目录属于哪个磁盘分区

    Linux是先有目录 再有磁盘分区 df h 目录 例如 没有挂载磁盘的目录 显示在系统盘 root iZ2ze57v3n0zma46zqiq8nZ sh 1 5 5 df h alidata Filesystem Size Used Av
  • 通过源码包*.src.rpm定制开发rpm

    为什么80 的码农都做不了架构师 gt gt gt 1 基本流程 1 下载 安装相应的src rpm包 wget xxx src rpm rpm ivh xxx src rpm 这里的 安装 是指把xxx src rpm中的tar gz p
  • 使用inet_ntop转换IPv6地址时在macOS和linux上的行为不一样

    下面这段python代码在macOS和linux时运行的结果是不同的 import socket ip socket inet pton socket AF INET6 1 2 3 0 5 6 7 8 print socket inet n
  • Linux常用命令记录

    文章目录 1 软件安装 安装软件 来自源服务器 安装 deb软件 来自本地 deb文件 修复依赖关系 卸载软件 2 文件 文件夹操作 删除文件夹 移动文件 文件重命名 3 程序查看 处理 进程查看 查看端口占用情况 强制终止程序 4 解压文
  • 内存管理——分页分段

    一 分页存储管理 1 页面与页框 1 页面 将一个进程的逻辑地址空间分成若干个大小相等的片 称为页面或页 并为各页加以编号 2 页框 相应于页面 把内存空间分成和页面相同大小的若干个存储块 称为 物理 块或页框 frame 3 页内碎片 在
  • Anaconda 安装 Python 库(MySQLdb)的方法-(转)

    安装python库的过程中 最重要的地方就是版本需要兼容 其中操作系统为64位 Python为2 X 64位 下载安装文件的时候也要注意版本匹配 其中文件名中包含的cp27表示CPython 2 7版本 cp34表示CPython 3 4
  • 操作系统常见面试题

    1 什么是进程 Process 和线程 Thread 有何区别 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动 进程是系统进行资源分配和调度的一个独立单位 线程是进程的一个实体 是CPU调度和分派的基本单位 它是比进程更小的能
  • 【操作系统】王道考研 p42 段页式管理方式

    段页式管理方式 知识总览 分段 分页管理方式中最大的优缺点 关于段式管理会产生外部碎片 ps 分段管理中产生的外部碎片也可以用 紧凑 来解决 只是需要付出较大的时间代价 分段 分页 段页式管理 示意图 先分段 后分页 段页式管理的逻辑地址结
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • 使用ShellJS提升你的开发效率(一)

    Shelljs Unix shell commands for Node js Shelljs是Node js下的脚本语言解析器 具有丰富且强大的底层操作 Windows Linux OS X 权限 Shelljs本质就是基于node的一层
  • 《OSPF和IS-IS详解》一1.7 独立且平等

    本节书摘来自异步社区 OSPF和IS IS详解 一书中的第1章 第1 7节 作者 美 Jeff Doyle 更多章节内容可以访问云栖社区 异步社区 公众号查看 1 7 独立且平等 OSPF和IS IS详解与TCP IP相比 OSI协议对各国

随机推荐

  • An orientation marker must be set prior to enabling/disabling widget

    Set up the QVTK window viewer reset new pcl visualization PCLVisualizer viewer false viewer gt addCoordinateSystem 1000
  • 梦幻模拟战更新服务器正在维护,梦幻模拟战1月24日更新公告 新活动揭示的哲学开放[多图]...

    梦幻模拟战在1月24日对游戏进行了更新 开放了最新的活动揭示的哲学 并有丰厚的奖励等着玩家们获取 接下来安族小编就带大家来看看具体更新公告 服务器将在1月24日6 00进行更新维护 预计维护时长约90分钟 维护期间指挥官无法登陆服务器 给您
  • 【华为OD统一考试B卷

    文章目录 题目描述 输入描述 输出描述 用例 C java javascript python 题目描述 对一个数据a进行分类 分类方法为 此数据a 四个字节大小 的四个字节相加对一个给定的值b 取模 如果得到的结果小于一个给定的值c 则数
  • HDOJ 1827 - Summer Holiday 简单的tarjan求强联通分量+缩点

    题意 听说lcy帮大家预定了新马泰7日游 Wiskey真是高兴的夜不能寐啊 他想着得快点把这消息告诉大家 虽然他手上有所有人的联系方式 但是一个一个联系过去实在太耗时间和电话费了 他知道其他人也有一些别人的联系方式 这样他可以通知其他人 再
  • MMOCR之DBNET文字检测

    MMCV系列之MMOCR 注 大家觉得博客好的话 别忘了点赞收藏呀 本人每周都会更新关于人工智能和大数据相关的内容 内容多为原创 Python Java Scala SQL 代码 CV NLP 推荐系统等 Spark Flink Kafka
  • R语言入门(安装使用基础操作详细说明)合集

    R使用基础知识 Rstudio使用 R包管理 操作数据 空间数据处理 在jupyternotebook中使用R语言 参考博客 Rstudio使用 ctrl enter运行当前行代码 help中查找说明文档 查看前后绘图图片 工作目录设定及管
  • Android音视频任务列表之(一)——在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View

    一 使用ImageView绘制图片 1 在布局文件中添加ImageView控件
  • 云原生环境 - Dockerfile挂载nfs盘【真实案例】

    文章目录 背景 解决 第1步 搭建NFS Server 第2步 调整Dockerfile 安装nfs utils 第3步 设置privileged权限 参考 背景 项目中使用RainBond 基于Kubernetes的云原生平台 部署相关微
  • 干货

    作者 李家丞 同济大学数学系本科在读 现格灵深瞳算法部实习生 近年来 深度学习模型逐渐取代传统机器视觉方法而成为目标检测领域的主流算法 本系列文章将回顾早期的经典工作 并对较新的趋势做一个全景式的介绍 帮助读者对这一领域建立基本的认识 营长
  • 数据库知识点总结(一)

    第一章 绪论 重点 掌握关系数据模型的相关概念 数据库系统三级模式和两层映像的体系结构 数据库系统的逻辑独立性和物理独立性等 难点 本章的难点是需要掌握数据库领域大量的基本概念 此 外 数据模型及数据库系统的体系结构也是本章的难点 1 1
  • 三个C语言中字符转换的函数

    wcstombs 将宽字符转换成多字符 mbstowcs 把多字符转换成宽字符 Setlocale 本函数用来配置地域的信息 设置当前程序使用的本地化信息 使中文路径生效的函数
  • 【RuoYi-Vue-Plus】学习笔记 08 - Mybatis Plus 分页插件实现分页功能

    文章目录 前言 参考目录 代码分析 1 分页构建使用 1 1 构建分页参数 2 分页插件 paginationInnerInterceptor 2 1 分页溢出处理 overflow 2 2 单页条数限制 maxLimit 前言 前段时间框
  • 阿里资深架构师答疑:数据湖概相关念、特征、架构与案例

    写在前面 最近 数据湖的概念非常热 许多前线的同学都在讨论数据湖应该怎么建 阿里云有没有成熟的数据湖解决方案 阿里云的数据湖解决方案到底有没有实际落地的案例 怎么理解数据湖 数据湖和大数据平台有什么不同 头部的云计算玩家都各自推出了什么样的
  • 华为OD机试 - 乱序整数序列两数之和绝对值最小(Java)

    题目描述 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组中找出两个数 其和的绝对值 nums x nums y 为最小值 并返回这个两个数 按从小到大返回 以及绝对值 每种输入只会对应一个答案 但是 数组中同一个元
  • 1.16 I/O文件的读、写操作(open方式打开文件)

    存在一个hello txt文件 内容如下截图 打开文件的语句是 file open file name access mode file name代表文件名 文件的全路径 access mode代表打开文件的模式 文件各个模式如下 一 文件
  • arm-linux-androideabi 和 arm-linux-gnueabi

    编译环境 ubuntu18 04 软件版本 全志SDK 安卓版本8 1 0 linux 4 9 0 问题描述 在全志的安卓系统中 需要运行C项目代码 在查找交叉编译工具时 shell里直接arm tab出来的是arm linux andro
  • sql查询每个学生的最高成绩mysql语句

    张三 语文 100 张三 数学 83 李四 语文 88 李四 数学 100 查询每个学生的最高成绩 select b from select name max score score from course GROUP BY name a
  • 微信小程序调用域名服务器的服务

    微信小程序得益于它的简单便捷 在日常生活中应用的很普遍 做过开发的同学都知道 微信的前端比较简单易懂 并且微信自带云开发 提供云存储 可以满足一些商家或者自媒体的需求 如果企业类的用户使用小程序 数据是存在企业自己的服务器上 小程序也提供了
  • echarts的展示区域地图,添加纹理图片

    echarts的展示区域地图 添加纹理图片 下面我们以广西南宁的来做实例 来进行这个渲染和添加纹理图片的操作 首先我们先看看文档 echarts 的geo的areaColor是可以支持通过图片来对地图的区域内容来进行纹理填充的 也可以进行颜
  • 操作系统笔记整理10——输入输出系统(2)

    点此链接可跳转到 操作系统笔记整理 目录索引页 参考书籍 计算机操作系统 第四版 汤小丹等编著 文章目录 点此链接可跳转到 操作系统笔记整理 目录索引页 用户层I O软件 系统调用 库函数 假脱机 Spooling 系统 SPOOLing的