操作系统期末|考研复习知识点汇总 - 持续更新

本文将根据个人学习进度对b站王道408课程以及题目考察的知识点进行整合,视频中详细的导图将会直接复用,并且将会对一些重点知识进行扩展以及一些思维导图的补充,目前第三章内容正在整理中……

一:计算机系统概述

1.1操作系统概念和功能

①:操作系统概念和功能

补充 :

有关系统调用应该注意的知识点
1:系统调用的目的请求系统的服务
2:区别系统调用和系统调用的调用
  1. 系统调用:这是指操作系统提供的接口,允许用户程序请求内核级功能。例如,open()read()write()等函数都是系统调用,它们直接与操作系统内核进行交互。(一定是在内核态)

  2. 系统调用的调用:这通常是指用户程序在代码中实际执行系统调用的过程。当用户程序调用某个系统调用函数时,这就是“系统调用的调用”。简单来说,它指的是在用户空间代码中执行某个系统调用的行为。(可能在内额)

②:操作系统的特征

 1.2操作系统的发展

Ⅰ:了解各系统的优缺点,以及诞生的主要目标是什么

Ⅱ:优缺点对比 

 1.3操作系统的的运行机制

  ①:中断和异常 

Ⅰ:有关中断的扩展 
有关中断的知识补充
常见的内中断非法操作码 缺页 除0 运算溢出
中断向量表中断向量表用于帮助CPU自检,在OS初始化过程中由BIOS(硬件)生成,可由OS进行扩展和初始化
中断与内核态联系使操作系统由用户态转内核态的过程都是由硬件完成的,中断只是引发该操作的原因之一,当程序出现"中断异常"硬件将操作系统转为内核态后,执行对应的中断程序。因此:中断处理程序属于OS程序,运行在核心态,但是被中断程序可以是用户程序
外部中断
  1. 硬件中断:通常由外部设备发起,常见的硬件中断类型包括:

    • 定时器(时钟)中断:由系统定时器产生,用于操作系统调度等操作。
    • I/O中断:外部设备(如键盘、鼠标、网络适配器、磁盘驱动器等)发出的中断信号,表示设备准备好进行数据传输。
    • 电源管理中断:用于处理电源状态的变化,比如休眠或唤醒。
  2. 外部信号中断:来自于外部信号源的中断,如:

    • 按键中断:当按下某键时,发送中断信号给处理器。
    • 外部传感器中断:如温度传感器、光传感器等,产生中断以通知处理器。
  3. 异常中断:有些外部条件(如过载、故障)会引发异常中断,应用程序需要相应的处理。

  4. 网络中断:网络接口卡(NIC)接收到数据包时会产生的中断。

外部中断与OS的联系
  1. 中断处理机制:外部中断是由外部设备(如键盘、鼠标、网络设备等)产生的信号,用于通知CPU某个事件的发生。操作系统需要实现中断处理机制,来响应这些中断,并进行相应的处理。

  2. 上下文切换当外部中断发生时,当前正在执行的程序会被挂起,操作系统会保存当前程序的上下文信息(例如:通用寄存器,中断屏蔽字,PC由隐指令保存,TLB,PSW和Cache以及中断程序的中断点由硬件保存,然后转而运行中断处理程序。处理完中断后,操作系统会恢复先前的程序状态,继续执行。这一过程称为上下文切换。

  3. 设备驱动程序:外部中断通常与设备驱动程序相关联。当外设需要CPU的服务时,会产生中断请求,操作系统通过设备驱动程序来管理和响应这些中断,实现对硬件设备的控制。

  4. 实时性与调度:外部中断的处理时间和优先级会影响操作系统的调度策略。在实时操作系统中,外部中断可能需要立即响应,以保证系统的实时性能。

  5. 资源管理操作系统需要协调和管理多个外部设备的中断请求,确保系统的稳定性和数据的一致性。例如,同一时间内可能会有多个设备产生中断,操作系统需要合理调度这些中断的处理顺序。

总结来说,外部中断是操作系统与硬件设备之间的桥梁,通过高效的中断处理机制,操作系统可以及时响应外部事件,保障系统的正常运行和各个程序的有效执行。

Ⅱ:中断程序与子程序比较
比较点中断程序子程序调用
触发机制由硬件设备或系统事件自动触发由程序员显式调用
控制流会中断当前执行的程序,转而执行中断处理在程序中显式地调用,并在返回后继续执行
优先级通常具有较高的优先级,需要快速响应优先级取决于程序的结构和逻辑
执行环境通常处于内核模式或特权级别执行通常在用户模式下执行
保存状态中断时需要保存当前执行上下文,以便恢复函数调用时保存返回地址和局部变量
调用返回中断处理完成后,需要恢复到之前的状态子程序完成后,通过返回指令返回调用点
目的处理异步事件、硬件信号、异常等代码复用、模块化、逻辑分离
执行次数通常是偶发的,取决于外部事件的发生可以多次调用,取决于程序逻辑
运行时影响可能影响整个系统的响应和性能只影响调用该子程序的程序逻辑
程序计数器(PC)需要保护PC和PSW内容,由中断隐指令完成需要保护PC内容,由CALL指令完成

②:系统调用  

Ⅰ:系统调用的调用与子程序调用比较

表格

特性子程序调用系统调用
定义在程序内部调用的模块或函数程序请求操作系统提供服务的机制
执行环境用户空间用户空间与内核空间之间
性能执行速度较快执行速度较慢
安全性相对较高较低,可能导致安全漏洞
参数传递通过栈、寄存器、全局变量等方式传递通常通过特定寄存器或内存缓冲区
使用场景代码重用、模块化设计获取系统资源,如文件、进程管理等
上下文切换无需(同一进程内调用)需要(从用户态切换到内核态)
返回值处理直接返回通过特定机制返回(如errno)

1.4操作系统体系结构

①:宏内核与微内核的对比

  1. 定义与架构

    • 宏内核:所有操作系统服务(如进程管理、内存管理、设备驱动等)都在内核空间中运行,提供高效的系统调用和资源管理。
    • 微内核:仅保留最基本的功能(如进程间通信、基本的内存管理),其他服务(如文件系统、网络协议等)在用户空间中运行。
  2. 优缺点对比

    • 宏内核
      • 优点:性能较高,系统调用开销小,适合高性能需求的环境。
      • 缺点:内核复杂度高,易出现稳定性和安全性问题。
    • 微内核
      • 优点:内核简单,易于维护和扩展,系统稳定性和安全性较高。
      • 缺点:性能较低,用户空间与内核空间的频繁切换可能导致开销增加。
  3. 应用场景

    • 宏内核通常用于需要高性能和低延迟的系统,如实时操作系统。
    • 微内核适合于需要高可靠性和安全性的系统,如嵌入式系统和分布式系统。
  4. 实例

    • 常见的宏内核操作系统有Linux和Windows。
    • 常见的微内核操作系统有Minix和QNX。
  5. 设计哲学

    • 宏内核强调高效的资源管理和快速的系统调用。
    • 微内核则强调模块化和灵活性,允许不同服务独立运行

②:常见操作系统结构

常见操作系统结构
宏内核Windows IOS macoS Linux
微内核谷歌Fuchsia 华为鸿蒙OS

③:各体系结构特征,优缺点对比

1.5操作系统引导 

Ⅰ:操作系统引导概念:

操作系统引导(Booting)是指计算机从关闭状态或重启状态释放硬件并加载操作系统的过程。这个过程通常分为几个步骤,涉及硬件初始化、加载操作系统内核以及最终交接控制权给操作系统。

Ⅱ:磁盘数据 
  1. 引导扇区(Boot Sector):

    • BIOS引导扇区(MBR):通常位于硬盘的第一个扇区,负责引导磁盘上的操作系统。MBR包含了引导程序及分区表。
    • GPT引导:在使用GUID分区表(GPT)时,系统会有一个EFI系统分区(ESP),其中包含EFI引导程序。
  2. 操作系统内核:

    • 操作系统的核心文件,负责管理硬件资源和提供接口给应用程序。这个内核文件通常位于某个特定的目录下(如 /boot、C:\Windows\System32 等)。
  3. 引导配置文件:

    • 包含引导参数和设置,比如 GRUB 和 LILO 的配置文件。在 Windows 系统中,有引导管理器(Boot Manager,通常为 BCD 文件)来配置引导选项。
  4. 驱动程序:

    • 磁盘上还存放着硬件驱动程序,它们在引导过程中被加载,以便更好地管理外部设备。
Ⅲ:引导过程

  1. 开机自检(POST):

    • 开机时,BIOS(或UEFI)会进行自检,检测计算机硬件是否正常,例如内存、硬盘、显卡等。
  2. 加载引导程序:

    • 完成自检后,BIOS会查找引导设备(通常是硬盘、USB或CD/DVD),读取引导扇区(MBR或GPT)中的引导程序,并将其加载到内存中。
  3. 引导加载程序的执行:

    • MBR引导程序会找到并加载操作系统的引导加载器(如GRUB、LILO、Windows Boot Manager等)。这些引导加载器会根据配置文件,引导特定的操作系统内核。
  4. 加载操作系统内核:

    • 引导加载器开始加载操作系统的内核文件到内存,同时调用相应的初始化程序。这一阶段还可能会加载必要的驱动程序。
  5. 硬件初始化:

    • 内核启动后会进行进一步的硬件初始化,包括设置进程管理、内存管理、文件系统和设备驱动等。
  6. 用户空间的启动:

    • 完成所有初始化后,内核会启动第一个用户进程(在Linux中通常是initsystemd,在Windows中是smss.exe),此进程将负责启动系统中的其他服务和用户界面。

1.6虚拟机

Ⅰ:了解两类虚拟机区别

二:进程与线程

2.1:进程

①:进程的概念,组成,特征

2.2:调度

2.3:进程同步和互斥

2.4:死锁

①:死锁的概念

 ②:死锁的处理策略

 

1:静态策略 预防死锁

                重点:关于死锁定理定位是用于处理检测死锁的方法。

                此处是根据死锁定理,预防任意一个条件以达到无法发生死锁的目的

死锁定理
互斥条件对于必须使用的资源的争抢才会导致死锁

SPOOLing技术将独占设备改造为逻辑上共享资源

(例: 给打印机添加输出队列,将进程请求挂载到队列上,依次处理,在逻辑上看各个进程都申请到打印资源,从而进行后续操作)

缺点:可改造的资源有限,不是所有互斥资源都能共享
不可剥夺进程获得的资源在未使用完之前,不可被剥夺,只能主动释放方案一:当一个进程申请新的资源得不到满足时,需要将已有资源全部释放,待以后需要重新申请缺点:(长时间得不到某个资源可能会导致饥饿)
方案二:当某个进程需要资源被其他资源占用,由OS协助,强行剥夺该资源缺点:(反复申请会增加开销, 释放资源可能会导致前一阶段的工作失效,实现难度大,只适用于易保存和恢复状态的资源)
请求并保持进程已拥有至少一个资源,但新的资源请求不通过且已拥有的资源不释放静态分配方法(一次性分配策略):运行前一次性申请完全部资源才运行 

缺点:

1:各个资源需要运行的时间不一,被申请后可能长时间处于空闲状态,降低系统资源利用率和吞吐量

2:如果有大量单资源需求的进程,那么多资源需要的进程很容易导致饥饿

循环等待存在一个进程资源的循环等待链顺序资源分配法:给资源按序分配序号,每个进程只有先申请到所需的小序号资源,才能申请大序号资源

缺点:

1:新增资源需要重新分配编号

2:实际应用顺序与编号递增顺序不一致,可能会导致资源浪费(例如:扫描仪为3号资源,打印机为1号资源,某个进程需要先使用扫描仪再使用打印机,那么在申请到扫描仪之前,打印机一直处于空闲且被占用的状态)

3:必须按照规定次序申请资源,用户编程麻烦(代码逻辑要先申请扫描仪后打印机,不同系统的资源编号可能导致不同的顺序)

 2:动态策略: 避免死锁

Ⅰ: 安全序列和安全态:

进程按照特定顺序给进程分配资源,就不会发生死锁,则该顺序组成的序列称为安全序列

 例   {P8 P1 P9 …… Pn}

当前状态能找到一个安全序列就是安全态,反之为不安全态(此状态可能会发生死锁)

Ⅱ:银行家算法

核心思想:根据此次资源分配是否会导致系统进入不安全态来决定是否进行此次资源分配

有关银行家算法应该注意的知识点 

        注1 : 有m个同类资源,n个进程,每个进程最多申请k个资源时采用银行家算法分配资源,

        只要保证最大需求量小于等于m就一定有一个安全序列,保证各进程最大需求量之和小于m +          n个就不会发生死锁(极端情况n - 1个进程申请了1个资源,1个进程申请了m个资源)

         注2: 银行家算法虽然会通过检测是否存在安全序列来判断申请资源的请求是否合法,但是           安全序列并不是唯一的,也不是固定的,它只是一种可执行方案,而非一种必须遵循的规               则,因此它不需要限制用户申请资源的顺序且它不能用于判断系统是否进入死锁状态        ·

 3:死锁的检测和解除 - 允许死锁发生

Ⅰ:死锁的解除
死锁的解除
资源剥夺法挂起部分死锁进程,剥夺其资源分配给其他死锁进程会导致饥饿
撤销进程法(终止进程法)强制撤销部分甚至全部死锁进程,并剥夺其资源导致先前工作功亏一篑,代价大
进程回退法让一个或多个进程回退到可以避免死锁的时间节点需要OS记录进程历史信息设置还原点,难度大

4:死锁的解决策略总结 
预防死锁的策略

共享化资源

资源全分配策略:在请求资源时,任务必须一次性请求并获取所需的所有资源,否则不分配任何资源

优先级策略:为资源分配设定优先级,确保高优先级的进程能够获得其所需资源,从而降低低优先级进程引发死锁的可能性。

序列化:对于资源的请求和释放,确保进程按照一定顺序请求资源。

避免死锁的策略

银行家算法:根据进程的最大需求和可用资源判断资源分配是否会导致安全状态,进而避免不安全的资源分配

资源预分配法:要求进程在开始执行之前申请所需的全部资源,没有足够的资源时,进程无法开始执行

总资源分配顺序:对资源进行全局排序,所有进程按照固定顺序请求资源,从而保障没有循环等待发生。

检测死锁的策略

资源分配图法:资源分配图是一个有向图,用于表示某时刻系统资源和进程之间的状态,其中,有向边包括进程指向资源的申请边,资源指向进程的分配边,圆圈节点表示进程,矩形框表示资源,其中的圆点表示资源数

时间戳法:为每个进程分配一个时间戳,基于进程的等待和持有资源的时间,判断是否存在死锁。

死锁检测算法:定期运行死锁检测算法,检查当前资源分配情况,识别系统中的死锁并采取相应的措施,例如回收被某些进程持有的资源
5:死锁中的数据结构 
Ⅰ:资源有向图
  • 定义:资源有向图是一种图形表示方式,其中节点表示进程和资源,边表示资源的请求和分配。
    • 从资源节点到进程节点的边表示进程对该资源的请求。
    • 从进程节点到资源节点的边表示资源被某个进程持有。
  • 用途:资源有向图用于检测死锁。一旦图中存在环路,就说明系统可能已发生死锁。
Ⅱ:前驱图(也称用于数据流分析的前驱图)
  • 定义:前驱图用于表示某一进程的状态和依赖关系。通常在操作系统中,前驱图的节点表示进程的状态,边表示状态之间的转换。
  • 用途:在避免死锁和资源调度中,可以使用前驱图来跟踪进程的状态,确保进程之间的依赖关系不会导致循环等待。
Ⅲ:安全图
  • 定义:安全图用于表示系统的安全状态,即可以成功完成的进程序列。通常在银行家算法中使用。
  • 用途:确保在给定的资源分配下,系统始终处于安全状态,如果系统进入不安全状态,则可能会发生死锁。

 ③:死锁中应当注意知识点

使用信号量进行控制的方法能确保互斥访问,但不能完全避免死锁最简单的例子,A B 进程都需要C D资源A - C , B - D;两者都被阻塞
Ⅰ:哲学家问题解决死锁的破坏条件
  1. 控制可拿筷子的人数:循环等待

  2. 控制拿筷子顺序:循坏等待

  3. 同时检查2只筷子:保持并等待条件

Ⅱ:区分循坏等待和保持并等待条件
  1. 互斥条件:至少有一个资源必须处于非共享状态,即某个资源(在这个案例中是筷子)只能被一个哲学家使用。

  2. 保持并等待条件:一个哲学家持有至少一根筷子(资源),但正在等待另一根筷子。这意味着他并不释放已经持有的资源。

  3. 不抢占条件:已经分配给哲学家的资源(筷子)在他们完成使用前,不会被其他哲学家抢占。

  4. 循环等待条件:存在一个哲学家形成一个循环,彼此间都在等待对方持有的筷子

1. 判断是否破坏了循环等待条件
  • 破坏循环等待:要解决循环等待,可以通过对资源的分配顺序进行调整或规定资源请求的优先级。具体方法包括:
    • 资源请求顺序:对资源进行排序,要求所有进程以固定的顺序请求资源。这样可以防止形成环路。
    • 撤销某些进程:直接终止某些进程,使得资源的占用关系不再形成环路。
  • 如何判断:检查解决策略是否改变了资源的分配方式,是否确保资源总是被请求而不会形成环路。如果策略明确规定了资源的请求顺序或限制了进程的资源请求,那么这就是破坏了循环等待条件。
2. 判断是否破坏了保持并等待条件
  • 破坏保持并等待:要破坏保持并等待条件,通常的做法是:

    • 主动释放资源:在进程请求新资源时,强制其释放当前持有的资源。这意味着一个进程在请求其他资源时,如果已经持有资源,就必须首先释放它们。
    • 非持久性分配:要求所有资源在请求时必须一次性申请到所有需要的资源,进程不能在持有某些资源的情况下再请求新的资源。
  • 如何判断:检查解决策略是否要求进程在请求新的资源之前释放已持有的所有资源。如果是,那么该策略就破坏了保持并等待条件。

Ⅲ:进程的执行严格遵循优先级并不能破坏死锁定理的条件
  • 例高优先进程用完时间片,下处理机后,低优先级进程将高优先级进程所需资源占用
Ⅳ:信号量在特殊情况下避免死锁的发生
在单行线问题中,由于信号量的控制,双方进程无法同时进入行道中,发生在道中相遇,都无法通过的情况,此时无死锁发生

三:内存管理

3.1:内存管理方式

①:内存的基础知识

②:内存管理概念

③:覆盖与交换

Ⅰ:覆盖技术

 Ⅱ:交换技术
 Ⅲ:覆盖与交换的区别(理解概念选择题常考)

④:内存空间分配与回收

Ⅰ:连续分配管理方式
1:单一连续分配方式

2:固定分区分配

3:动态分区分配 

Ⅱ:非连续分配管理方式

⑤:动态分区分配算法

1:首次适应算法

2:最佳适应算法

3:最坏适应算法

4:邻近适应算法

5:动态分区分配算法对比

⑥:基本分页存储管理概念

⑦:基本地址变换机构

⑧:具有块表的地址变换机构

⑨:两级页表

⑩:基本分段存储管理

⑪:段页式管理方式

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DockerCompose快速部署Java项目、nginx前端和mysql数据库到centos虚拟机

简介:整理自:SpringCloud微服务开发与实战,java黑马商城项目微服务实战开发(涵盖MybatisPlus、Docker、MQ、ES、Redis高级等)课程的飞书文档。 DockerCompose介绍 大家可以看到,我们部署一个简单的java项…

实现可扩展人工智能的便捷之路:英特尔 Tiber 开发者云 + MinIO 对象存储

当今组织在 AI 和数据管理方面面临的最大挑战之一是获得可靠的基础设施和计算资源。英特尔 Tiber 开发人员云专为需要概念验证、实验、模型训练和服务部署环境的工程师而构建。与其他难以接近且复杂的云不同,英特尔 Tiber 开发人员云简单易用。该平台对于开发各种类…

信息安全工程师(67)网络流量清洗技术与应用

前言 网络流量清洗技术是现代网络安全领域中的一项关键技术,它主要用于过滤和清理网络流量中的恶意部分,确保正常的网络通信。 一、网络流量清洗技术的定义与原理 网络流量清洗技术,也称为流量清理(Traffic Scrubbing)…

csdn要打开或者无法刷新内容管理,文章无法发布或者未保存成功(服务器超时)-->先保存在自己的电脑里

今天突然想到以前看网页小说的时候改变网页链接后面的页数能够直接跳转,那么能不能不能改一下1000.2115.3001.5448 https://mp.csdn.net/mp_blog/manage/article?spm1000.2115.3001.5448 https://mp.csdn.net/mp_blog/manage/article?spm1000.2115.3001.5448 后…

计算机使用梯子后关机,再次使用计算机时未开启梯子,无法正常上网

问题:使用计算机时开启了梯子,使用完毕后关闭计算机,再次打开计算机但是没有开启梯子时无法正常上网; 原因:使用梯子时可能将手动设置代理处设置成了梯子的代理服务器地址,所以再次使用计算机但是没有使用…

报表系统-连接数据库操作

本专栏用于解析自己开源的项目代码,作为复盘和学习使用。欢迎大家一起交流 本样例说明源码开源在: ruoyi-reoprt gitee仓库 ruoyi-report github仓库 欢迎大家到到项目中多给点star支持,对项目有建议或者有想要了解的欢迎一起讨论 连接数据库…

初学者指南:软件测试

目录 初学者软件开发流程中的测试指南一、什么是软件测试?二、软件测试的重要性三、软件测试的类型四、软件测试的流程五、软件测试工具六、软件测试工程师的技能要求七、如何上手软件测试八、结语 初学者软件开发流程中的测试指南 欢迎来到软件测试的世界&#xf…

公司章程拟定,定制公司章程

公司章程是指公司依法制定的、规定公司名称、住所、经营范围、经营管理制度等重大事项的基本文件,也是公司必要的规定公司组织及活动基本规则的书面文件。公司章程是股东共同一致的意思表示,载明了公司组织和活动的基本准则,是公司的宪章。关…

基于HEC-Ras及ArcGIS的泥石流数值模拟与灾害风险评估典型案例

泥石流是一种破坏性极强的自然灾害,对人类社会和自然环境都构成了巨大的威胁。由于泥石流的发生通常突然且难以预测,因此,采取有效的预防措施和进行科学的风险评估显得尤为重要。为了减少泥石流可能带来的损害,可以建立高效的监测…

LVGL第二篇-组件创建与显示(以slider为例)

一、LVGL 中组件加载步骤 分配内存与初始化: 首先,通过调用相应组件的创建函数来分配内存并初始化组件对象。例如,若要创建一个按钮组件,可使用lv_XXX_create函数。这些创建函数会返回一个指向新创建组件对象(lv_obj_t…

百度文心一言接入流程-java版

百度文心一言接入流程-java版 一、准备工作二、API接口调用-java三、百度Prompt工程参考资料: 百度文心一言:https://yiyan.baidu.com/百度千帆大模型:https://qianfan.cloud.baidu.com/百度千帆大模型文档:https://cloud.baidu.com/doc/WENXINWORKSHOP/index.html千tokens…

Modbus TCP报错:Response length is only 0 bytes

问题描述: 使用modbus_tk库,通过Modbus tcp连接PLC时,python中的一个报错信息: Response length is only 0 bytes报错原因: 与Modbus TCP 服务端建立连接后没有断开,继续作为长连接使用,客户端…

时序数据库 TDengine 支持集成开源的物联网平台 ThingsBoard

Thingsboard 中“设备配置”和“设备”的关系是一对多的关系,通过设备配置为每个设备设置不同的配置,每个设备都会有一个与其关联的设备配置文件。等等,这不就是TDengine 中超级表的概念: 超级表是一种特殊的表结构,用…

Unity3D学习FPS游戏(4)重力模拟和角色跳跃

前言:前面两篇文章,已经实现了角色的移动和视角转动,但是角色并没有办法跳跃,有时候还会随着视角移动跑到天上。这是因为缺少重力系统,本篇将实现重力和角色跳跃功能。觉得有帮助的话可以点赞收藏支持一下!…

Spring Cloud:构建高可用分布式系统的利器

摘要:本文将介绍Spring Cloud,一个基于Spring Boot的开源微服务架构工具集。我们将探讨Spring Cloud的核心组件、特性以及如何使用Spring Cloud构建高可用、分布式系统。通过本文,读者将了解到Spring Cloud在实现微服务架构中的应用和优势。 …

ResNet-RS 乳腺癌识别

一、模型结构 1.1 模型思路 ResNet-RS是一种改进的ResNet架构,它在2021年由谷歌大脑和UC Berkeley的研究者们提出。ResNet-RS的提出基于对现有ResNet架构的深入研究,研究者们重新审视了ResNet的结构、训练方法以及缩放策略,并提出了一些改进…

git入门操作(2)

文章目录 git入门操作(2)git diff 查看差异git diff gitignore忽略文件1.在代码仓库创建这个文件2.添加对 log 文件过滤 连接远程仓库与ssh配置远程仓库和本地仓库关联步骤分支基本操作步骤命令: 合并冲突分支合并逻辑1.新建分支 dev&#xf…

MySQL查看当前客户端连接数的方法

每当有客户端连接到 MySQL 时,MySQL 会为该连接创建一个新的线程来处理所有与该连接相关的查询和操作。所以通过查看MySQL当前的连接线程数量就可以知道有多少客户端连接到MySQL。 方法一 Threads_connected 仅显示活跃的客户端连接数 SHOW STATUS LIKE Threads_…

H7-TOOL的LUA小程序教程第15期:电压,电流,NTC热敏电阻以及4-20mA输入(2024-10-21,已经发布)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用&#xff…

Go语言中三个输入函数(scanf,scan,scanln)的区别

Go语言中三个输入函数(scanf,scan,scanln)的区别 在 Go 语言中,fmt 包提供了三种输入函数:Scanf、Scan 和 Scanln。这三个函数都是用于从标准输入读取数据并存储到变量中,但是它们在处理输入的方式上有所不同。下面详细解读每个函数的特点和…