[计算机操作系统(慕课版)]第二章 进程的描述与控制(学习笔记)

news2024/11/17 23:32:34

2.1 前驱图和程序执行

2.1.1 前驱图

  • 前驱图是指一个有向无循环图可记为DAG
  • 前驱图用于描述进程之间执行的先后顺序。
  • 前驱图的每个节点用来表示一个进程或程序段乃至一条语句节点间的有向边表示两个节点之间存在的偏序或前驱关系。
  • 进程或程序之间的前驱关系可用→来表示。
  • 如果进程Pi和Pj存在前驱关系,可表示为(Pi,Pj)∈→,也可写成Pi→Pj,表示Pj开始执行之前Pi必须完成。Pj是Pif的直接前驱,Pi是Pj的直接后继。
  • 没有前驱的节点称为初始节点,没有后继的节点称为终止节点。
  • 每个节点还具有一个重量用于表示该节点所含有的程序量或程序的执行时间。
  • 前趋图中不允许有循环,否则会产生不可实现的前驱关系。
  • 图2-1。

2.1.2 程序顺序执行

程序顺序执行的前驱图。

  • 程序顺序执行的特征
    • 顺序性,处理机严格的按照程序所规定的顺序执行。
    • 封闭性,程序在封闭的环境下运行,程序运行时独占全机资源,资源的状态资由本程序才能改变,程序一旦开始执行,其执行结果不受外界因素影响。
    • 可再现性,只要程序执行时的环境和初始条件相同,当程序重复执行时会获得相同的结果。

2.1.3 程序并发执行。

  • 系统中引入多道程序技术,使程序或程序段能并发执行,提高系统资源利用率和系统吞吐量。
  • 只有不存在前驱关系的程序之间才有可能并发执行,否则无法并发执行。
  • 在这里插入图片描述
  • 程序并发执行时的特征。
    • 间断性,程序在并发执行时,由于他们共享系统资源,这些并发执行的程序之间形成相互制约的关系,导致程序运行走走停停。
    • 失去封闭性,系统中的各种资源将被并发执行的程序所共享,这些资源的状态也由这些程序来改变。每一个程序运行时,运行环境会受到其他程序的影响。程序运行环境不在独享,会被其他程序影响。
    • 不可在现性,程序并发执行时由于失去了封闭性,导致其失去可再现性。程序的运行结果会受到其他程序的影响。要程序的运行结果可在现,要对进程执行加以控制。共享资源加互斥锁

2.2 进程的描述

2.2.1 进程的定义与特征

  • 为了使参与并发执行的每个程序都能独立运行,设置了专门的数据结构,称为进程控制块PCB。利用进程控制快来描述进程的基本情况和活动过程,进而控制和管理进程。
  • 进程实体,由程序段,相关数据段和进程控制块组成。
  • 进程实体简称为进程。
  • 创建进程实际上是创建进程实体中的PCB。撤销进程实际上是撤销进程的进程控制块。
  • 进程的定义
    • 进程是程序的执行过程,是系统进行资源分配和调度的独立单位。
  • 进程的特征
    • 动态性
      • 进程的实质是进程实体的执行过程,动态性是进程最基本的特征。
      • 进程实体具有一定的生命期,程序是静态的。进程与程序的区别。
    • 并发性
      • 多个进程实体同存于内存中,且能在一段时间内同时运行。
      • 引入进程的目的也是为了使进程实体能和其他进程实体并发执行。
    • 独立性
      • 独立性是指进程实体是一个能独立运行,独立获得资源和独立接受调度的基本单位。
    • 异步性
      • 是指进程是按一步方式运行的,按各自独立,不可预知的速度向前推进。
      • 并发执行的程序运行过程总是走走停停。会产生结果的不可再现性。

2.2.2 进程的基本状态及转换

  • 进程的三种基本状态
    • 就绪状态
      • 进程已处于准备好运行的状态,进程已分配到除CPU以外的所有必要资源后,只要在获得CPU便可立即执行。
    • 执行状态
      • 进程已获得CPU,其程序正在执行的状态。
    • 阻塞状态
      • 只正在执行的进程,由于发生某事件暂时无法继续执行时的状态。进程的执行受到阻塞。
    • 进程的三种基本状态及其转换图。
  • 创建状态和终止状态。
    • 创建状态
      • 创建进程时,所需资源不能完全被满足。如果可以完全被满足,则直接进入就绪状态。
      • 创建进程:首先由进程申请一个空白的PCB,向PCB中填写用于控制和管理进程的信息,然后为该进程分配运行时所需的资源,最后把进程转入就绪状态并插入就绪队列中。
      • 如果进程所需的资源不能得到满足,创建进程的工作未完成,进程不能被调度运行,此时进程所处的状态为创建状态。
      • 当进程获得了所需的资源以及对其PCB的初始工作完成后,便可由创建状态转入就绪状态。
    • 终止状态
      • 进程的终止:等待操作系统进行善后处理,然后将PCB清零,并将PCB空间归还系统。
      • 进入终止状态的情况
        • 进程到达自然结束点。
        • 进程出现无法克服的错误。
        • 进程被操作系统终结。
        • 进程被其他有终止权的进程终结。
    • 进程的五种基本状态及其转换关系图。

2.2.3 挂起操作和进程状态的转换

  • 为了系统和用户和分析进程的需要,还引入了一个对进程的重要操作,挂起操作。
  • 与挂起操作对应的操作为激活操作。
  • 引入挂起操作的原因是基于系统和用户如下的需要
    • 终端用户的需要,当终端用户在自己的程序运行期间发现有可疑的问题,希望暂停程序的运行。
    • 父进程希望挂起自己的某个子进程,以便考察和修改子进程或协调各子进程间的活动。
    • 系统需要把一些不重要的进程挂起。实现负荷调节,保证系统的正常运行。
    • 操作系统挂起某些进程,以便检查运行中的资源使用情况或进行记账。
  • 引入挂起原语操作后的三个进程状态的转换
    • 当进程未处于被挂起的就绪状态,为活动就绪状态。此进程可以接受调度。
    • 当进程被挂起后,该进程处于静止就绪状态。此进程不可被调度。
    • 当进程处于未被挂起的阻塞状态为活动阻塞状态
    • 当进程处于被挂起的主色状态为静止阻塞状态。处于该状态的进程在其所期待的事件出现后,从静止阻塞变为静止就绪。
    • 创建进程时,进程所需的资源不满足,进入静止就绪状态。
    • 创建进程时,进程所需的资源能够被满足进入活动就绪状态。
  • 具有挂起状态的进程状态图。

2.2.4 进程管理中的数据结构

  • 操作系统中用于管理资源和控制进程的数据结构
    • 在计算机操作系统中,对于每个资源和每个进程都设置了一个数据结构用于表征其实体称之为资源信息表或进程信息表。其中包含了资源或进程的标识,描述状态等信息,以及一批指针。
    • 主要分为四类。
      • 内存表
      • 设备表
      • 文件表
      • 用于进程管理的进程表。进程表又称为进程控制块PCB,多个PCB组成
    • 操作系统控制表的一般结构
  • 进程控制块的作用
    • 进程控制块作为进程实体的一部分,记录了操作系统所需的用于描述进程当前情况以及管理进程运行的全部信息,是操作系统中最重要的记录型数据结构。
    • 进程控制块的作用
      • 作为独立运行基本单位的标志。系统通过进程控制快感知进程的存在与进程状态的改变。
      • 能实现间断运行方式。程序阻塞时,系统可以将程序运行的现场信息保存在进程控制块中,当阻塞结束后,通过进程控制快恢复现场,以便程序继续运行。
      • 提供进程管理所需要的信息。根据进程控制块中记录程序和数据在内存或外存中的起始地址指针,可以找到相应的程序和数据。
      • 提供进程调度所需的信息。在进程控制块中计入了进程处于何种状态,以及进程的优先级,进程的等待时间和已执行时间等。
      • 实现与其他进程的同步和通信。在进程控制块中记录了用于实现进程通信的区域或通信队列指针。
    • 进程控制块中的信息。
      • 进程标识符
        • 外部标识符方便用户对进程的访问。
        • 内部标识符方便系统对进程的使用。
      • 处理机状态。
        • 处理机状态信息也称为处理机的上下文,主要是由处理机的各种寄存器中的内容组成。
        • 当进程被切换时,处理机状态信息都保存在进程控制块中,以便在进程重新执行时能从断点继续执行。
      • 进程调度信息
      • 进程状态,进程优先级等。
      • 进程控制信息
        • 用于进程控制所必须的信息。包括:
          • 程序和数据的地址
          • 进程同步和通信机制
          • 资源清单
          • 链接指针
  • 进程控制块的组织方式
    • 线性方式
      • 所有的进程控制快都组织在一张线性表中,将该表的首地址存放在内存的一块专用区域中,每次查找都需要扫描整张表。
    • 链接方式
      • 把具有相同状态的进程的进程控制块分别通过进程控制快中的链接字链接成一个队列。
      • 按照进程的优先级,将进程控制快,从高到低进行排列。
    • 在这里插入图片描述

2.3 进程控制

  • 进程控制是进程管理中最基本的功能,主要包括创建新建成中职已完成的进程,将因发生异常情况而无法继续运行的进程置于阻塞状态,负责进程运行中状态转换。
  • 进程控制一般是通过操作系统内核中的原语来实现。

2.3.1 进程的创建

  • 在操作系统中允许一个进程创建另一个进程,通常把创建进程的进程称为父进程,我把被创建的进程称为子进程。
  • 子进程可以继续创建更多的孙进程,由此便形成了一个进程的层次结构。
  • 进程与其子孙进程共同组成一进程家族(组)。
  • 子进程可以继承父进程所拥有的资源。当子进程被撤销时,应将从父进程那里获得的资源归还父进程,在撤销父进程时,必须同时撤销其所有子进程。
  • 进程图
    • 为了形象的描述一个进程的家族关系,引入了进程图。
    • 进程图就是用于描述进程间关系的一颗有向树。
    • 在这里插入图片描述
    • 进程图中的节点代表进程。
    • 创建父进程的进程称为祖先进程,把树的根节点作为进程家族的祖先。
  • 引起创建进程的事件。
    • 用户登录。
    • 作业调度
    • 提供服务
    • 应用请求,用户进程自己创建新进程。
  • 进程的创建
    • 申请空白进程控制快。
    • 为新进程分配其运行所需的资源,包括各种物理和逻辑资源。
    • 初始化进程控制快。
    • 如果进程就绪,队列能够接纳新进程,便将新进程插入就绪队列。

2.3.2 进程的终止

  • 引起进程终止的事件
    • 正常结束,表示进程任务已经完成,准备退出运行。
    • 异常结束是指进程运行时发生某种异常事件是程序无法继续运行。
    • 越界错
    • 保护错,访问一个不允许访问的资源或文件。
    • 非法指令。
    • 特权指令错。
    • 运行超时
    • 等待超时
    • 算数运算错
    • io故障。
    • 外界干预是指进程因外界的请求而终止运行。
  • 进程的终止过程
    • 根据被终止的进程标识符从进程控制块集合中检索出该进程的进程控制块,读出该进程的状态。
    • 被终止进程正处于执行状态,立即终止该进程的执行,并设置调度标志为真,用于指示该进程被终止后应重新进行调度。
    • 如果该进程还有子孙进程,将所有子孙进程终止。
    • 将被终止的进程所拥有的全部资源或者归还给其父进程或者归还给系统。
    • 将被终止进程从所在队列中移出,等待其他程序来搜集信息。搜集完才回收。

2.3.3 进程的阻塞与唤醒

  • 引起进程阻塞或被唤醒的事件
    • 向系统请求共享资源失败。
    • 等待某种操作的完成。
    • 新数据未到达。
    • 等待新任务到达。
  • 阻塞是进程自身的一种主动行为。
  • 进程的阻塞过程
    • 通过调用阻塞原语将自己阻塞,如果进程处于执行状态,立即停止执行,把进程控制块中的现行状态改为阻塞,并将进程控制块插入阻塞队列。保存当前进程的处理机状态。将处理机分配给另一就绪进程。
  • 进程唤醒过程
    • 阻塞进程所期待的事件发生,由相关进程调用唤醒原语将等待该事件的进程唤醒。
    • 把阻塞进程从阻塞队列中移出。将进程控制块的状态改为就绪状态,将进程控制块插入就绪队列中。

2.3.4 进程的挂起与激活

  • 进程的挂起
    • 操作系统利用挂起原语将指定进程或处于阻塞状态的进程关系
  • 进程的激活
    • 操作系统利用激活原语将指定进程激活。

2.4 进程通信

  • 进程通信是指进程之间的信息交换。
  • 低级进程通信,由于进程的互斥与同步,需要在进程间交换一定的信息。
  • 低级进程通信效率低,通信对用户不透明。
  • 高级进程通信的特点
    • 使用方便。
    • 高效传送大量数据。

2.4.1 进程通信的类型

  • 共享存储器系统
    • 在共享存储器系统中,相互通信的进程共享某些数据结构或共享存储区,进程之间能够通过这些空间进行通信。
    • 基于共享数据结构的通信方式。
      • 操作系统提供共享存储器,程序员负责对共用数据结构的设置以及进程间同步的处理。
      • 仅适合于传递相对少量的数据,通信效率低,属于低级通信。
    • 基于共享存储区的通信方式
      • 高级通信
      • 先向系统申请或者共享存储区中的一个分区,并将其附加到自己的地址空间中,便可对其中的数据进行正常读写,读写完成或不需要时将其归还共享存储区。
  • 管道通信系统
    • 所谓管道是指用于连接一个读进程和一个写进程,以实现他们之间通信的一个共享文件,又名pipe文件。
    • 管道提供输入的发送进程,以字符流形式将大量数据送入管道,接收管道输出的接收进程,从管道中接收数据。
    • 管道机制必须提供的能力
      • 互斥,当一个进程正在对管道进行读写操作时,其他进程必须等待。
      • 同步,当进程把一定数量的数据写入管道,便去睡眠等待,直到读进程取走数据后再被唤醒。
      • 确定对方是否存在,只有确定了对方存在时才能进行通信。
  • 消息传递系统
    • 以格式化的消息为单位将通信的数据封装在消息中,并利用操作系统提供的一组通信命令在进程间进行消息传递,完成进程间的数据交换。
    • 高级通信方式
    • 基于消息传递系统的通信方式属于高级通信方式。
      直接通信方式,发送进程利用操作系统所提供的发送原语,直接把消息发送给目标进程。
    • 间接通信方式,发送和接收进程都通过共享中间实体(邮箱)的方式进行消息的发送和接收,完成进程间的通信。
  • 客户机服务器系统
    • 主要实现方法有三类。
      • 套接字,远程过程调用,远程方法调用。
    • 套接字
      • 一个套接字就是一个通信标识类型的数据结构。包含通信目的地址,通信使用的端口号,通信网络的传输协议,进程所在的网络地址,以及针对客户或服务器程序提供的不同系统调用。
      • 套接字是进程通信和网络通信的基本构件
      • 套接字是为客户服务器模型设计的。套街是包括两类。基于文件基于网络型
    • 远程过程调用和远程方法调用。
      • 远程过程调用是一个通信协议,用于通过网络连接的系统。
      • 该协议允许运行在一台主机系统上的进程,调用另一台主机系统上的进程。
      • 采用面向对象编程远程过程调用可称为远程方法调用。

2.4.2 消息传递通信的实现方式

  • 直接消息传递系统
    • 在直接消息传递系统中采用直接通信方式发送进程,利用操作系统所提供的发送命令直接把消息发送给目标进程。
    • 直接通信原语。
      • 对称寻址方式,发送进程和接收进程必须以显示方式提供对方的标识符。
      • 非对称寻址方式,发送进程不用显示提供对方的标识符。
  • 信箱通信
    • 信箱通信属于间接通信方式及进程之间的通信,需要通过中间实体来完成。

    • 通常把中间实体称为邮箱,每个邮箱都有一个唯一标识符。

    • 邮箱只允许核准的目标用户随时读取。

    • 利用邮箱通信方式可实现实时通信,也可实现非实时通信。

    • 信箱的结构

      • 信箱头用于存放有关信箱的描述信息。
      • 信箱体,由若干个可以存放信息的信箱格组成,信箱格的数目以及每格的大小是在创建信箱时确定。
      • 双向信箱示意图。
    • 信箱的类型。

      • 私用信箱,用户进程为自己创建的信箱。
      • 公用信箱,有操作系统创建。允许的进程才可使用该信箱。
      • 共享信箱,有某进程创建所有共享进程都可使用。

2.5 线程的基本概念

2.5.1 线程的引入

  • 在操作系统中引入线程是为了减少程序在并发执行时所付出的时空开销,使操作系统具有更好的并发性。
  • 进程的两个基本属性
    • 进程是一个可以拥有资源的独立单位。
    • 进程是一个可以独立调度和分配的基本单位。
  • 程序并发执行所需付出的时空开销
    • 创建进程
    • 撤销进程
    • 进程切换。
    • 由于进程是一个资源的拥有者,所以在创建撤销切换中,系统必须为之付出较大的时空开销。限制了系统中进程的数目,且进程切换不宜频繁,限制了并发程度进一步提高。
  • 线程作为调度和分派的基本单位。

2.5.2 线程与进程的比较

  • 由于线程具有许多传统进程所具有的特征,所以又称之为轻型进程或进程元
  • 传统进程称为重型进程。
  • 调度的基本单位,线程和进程都能作为调度的基本单位。线程的切换代价低于进程。
  • 线程的并发性更好。
  • 进程可以拥有资源,并作为系统中拥有资源的一个基本单位,线程本身并不拥有资源。
  • 进程的独立性高于线程。同一进程中的不同线程共享进程中的内存空间和资源。
  • 线程切换的系统开销小。
  • 线程更适合多处理机。

2.5.3 线程的状态和线程控制块

  • 线程执行的三个状态
    • 执行状态,表示线程已获得处理机而正在运行。
    • 就绪状态,指线程已具备了各种执行条件,只需再获得CPU便可立即执行。
    • 阻塞状态,线程在执行中因某事件受阻,处于暂停状态。
  • 线程控制块
    • 系统为每个线程配置了一个线程控制块TCB,将所有用于控制和管理线程的信息记录在线程控制块中。
    • 线程控制块包含的信息。
      • 线程标识符
      • 线程运行状态
      • 线程专有存储区
      • 线程优先级
      • 一组寄存器:程序计数器,状态寄存器,通用寄存器的内容。
      • 信号屏蔽,对某些信号加以屏蔽。
      • 堆栈指针,将每次过程调用中所使用的局部变量以及返回地址保存起来。
  • 多线程操作系统中的进程属性
    • 进程是一个可拥有资源的基本单位。
    • 多个线程可并发执行。
    • 进程不是可执行的实体。把线程作为独立运行或调度的基本单位。

2.6 线程的实现

2.6.1 线程的实现方式

  • 内核支持线程KST。
    • 所有进程都在操作系统内核支持下运行。所有县城也在内核的支持下运行。
    • 使用该种方式执行用户进程的线程需要从用户态转化为系统态,开销较大。
  • 用户级线程ULT
    • 用户及线程是在用户空间实现的,用户及线程和内核无关,内核完全不知道用户级线程的存在,其调度单位以进程为单位。
    • 优点
      • 线程不需要切换到内核空间,节省了模式切换的开销。
      • 用户级线程的实现与操作系统平台无关,可以在不支持线程的操作系统平台上实现
      • 调度算法可以是进程专用的。
    • 缺点
      • 由于调度单位是以进程为单位,当一个线程被阻塞时,该进程内所有线程都会被阻塞。
      • 在多处理机系统中不能实现线程并发。
  • 组合方式
    • 内核支持多个内核支持线程的建立,调度与管理。允许用户应用程序建立调度,管理用户级线程。
    • 同一个进程内的多个线程可以在多处理机上并行执行。阻塞一个线程时不会阻塞整个进程。
    • 多对一模型
      • 多个用户线程对应一个内核控制线程。
    • 一对一模型
      • 每个用户线程对应一个内核支持线程。
    • 多对多模型
      • 将许多用户线程映射到同样数量或更少数量的内核线程上。

2.6.2 线程的具体实现

2.6.3 线程的创建和终止

  • 线程的创建
    • 应用程序启动时通常只有一个线程在执行,把该线程称为初始化线程,该线程的主要功能是创建新线程。
    • 在大多数的操作系统线程被终止后,并不立即释放所占有的资源,只有当进程中的其他线程执行了分离函数后,被终止的线程才与资源分离,此时的资源才能被其他线程利用。
    • 对终止但未释放资源的线程仍可被需要它的线程所调用,以使被终止线程重新恢复运行。
  • 线程的终止
    • 终止线程通过调用相应的系统调用,对线程执行终止操作。

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

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

相关文章

有了这些接口测试用例+工具,测试效率想不提升都难

写在前面:在日常开发过程中,有人做前端开发,有人负责后端开发。接口的主要作用就是连接前后台。但是,由于前端和后端开发的速度可能不一样,尤其是后端开发好了,但前端还未开发。这种时候我们需要做接口测试…

【原创】java+swing+mysql银行ATM管理系统

本文主要介绍使用javaswingmysql去设计一个银行ATM管理系统,模仿实现存款、取款、转账、余额查询等功能。 功能分析: 隐含ATM管理系统一般分为管理员和用户角色,管理员可以进行用户管理、账单管理,用户可以进行转取存款等功能如…

面试不到10分钟就被赶出来了,问的实在是太变态了...

干了两年外包,本来想出来正儿八经找个互联网公司上班,没想到算法死在另一家厂子。 自从加入这家外包公司,每天都在加班,钱倒是给的不少,所以也就忍了。没想到11月一纸通知,所有人不许加班,薪资…

深度学习网络模型——ConvNeXt网络详解、ConvNeXt网络训练花分类数据集整体项目实现

深度学习网络模型——ConvNeXt网络详解、ConvNeXt网络训练花分类数据集整体项目实现1、介绍2、设计方案3、Macro design4、ResNeXt-ify5、Inverted Bottleneck7、Large Kernel Sizes8、Micro Design9、ConvNeXt variants10、ConvNeXt-T 结构图11、网络代码实现:Conv…

内网渗透(三十五)之横向移动篇-IPC配合系统服务横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

Linux文件权限查看与修改

Linux文件的权限linu文件的权限可以分为四类:可读、可写、可执行、没有权限。分别用字符r、w、x、- 表示。2. 用户与用户组Liunx是一个多用户多任务的操作系统,可以通过用户和用户组来更好的控制文件的权限。每个文件都有一个拥有者(某一个具…

批处理Batch学习

批处理Batch学习 前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有,很详细,分享给大家。大家及时保存,说不定啥时候就没了。 基础认识 批…

Linux下Python脚本的编写解析fio(minimal格式)(三)

在服务器测试(storage)过程中,会看到很多人写跑fio的脚本用minimal格式来解析,因为这种格式返回的结果对与脚本(shell,python)解析log非常方便.下面介绍一下这种方式下,用Python来解析log 1 一般客户会要求结果中出现一下参数的值: bandwidth…

推荐几款免费且优秀的短视频配音软件,你值得拥有

科技的迅猛发展带来了新生事物的不断涌现,短视频就是其中之一,有的小伙伴喜欢在茶余饭后记录生活的点点滴滴,也有人将之变成了日常的主要收入来源,但无论是哪种,一款好的AI配音软件都是必不可少的,很多短视…

LeetCode 88. 合并两个有序数组

原题链接 难度:easy\color{Green}{easy}easy 题目描述 给你两个按 非递减顺序 排列的整数数组 nums1nums1nums1 和 nums2nums2nums2,另有两个整数 mmm 和 nnn ,分别表示 nums1nums1nums1 和 nums2nums2nums2 中的元素数目。 请你 合并 num…

Flask像Jenkins一样构建自动化测试任务

flask这个框架很轻量,做一些小工具还是可以很快上手的。 1、自动化 某一天你入职了一家高大上的科技公司,开心的做着软件测试的工作,每天点点点,下班就走,晚上陪女朋友玩王者,生活很惬意。 但是美好时光…

常用类(四)Math类和Arrays类

一、Math类 Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数 我们查看math类的常用方法: 我们查看他的源码如下所示: 我们查看他的类图: 他的这些方法基本都是静态的: 我们的代码设置如下所…

重生之我是赏金猎人-SRC漏洞挖掘(十三)-攻防对抗/梦中绝杀X脖代理商

0x00 前言 前两天在国企实验室的朋友遇到了一个棘手的目标,听说之前没人能打点进去,只能靠xxxxx取证 我一听来了兴趣,在梦中臆造了一个靶场进行渗透,并且已获得相关授权 还请各位看官请勿对号入座,如有雷同&#xf…

百舸争流,奋楫者先 | 大势智慧2023年度销售动员大会圆满召开

春回大地,万物新生。满载生机与动力,2月10日,大势智慧2023年度销售动员大会圆满召开。 大势智慧CEO黄先锋、CTO张帆、副总裁周济安、运营中心副总经理段鸿、全国各分公司总经理、总监及全体销售成员线上、线下共聚一堂,以“百舸争…

Android Jetpack组件DataStore之Proto与Preferences存储详解与使用

一、介绍 Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。 如果您当前在使用 SharedPreferences 存储数据,请考虑迁移到 DataStore&#…

vscode构建Vue3.0项目(vite,vue-cli)

构建Vue3.0项目构建Vue3.0项目1.使用Vite构建vue项目的方法以及步骤1. 安装vite2. 运行vite vue 项目3.说明2.使用vue-cli构建vue项目的方法以及步骤1.安装全局vue cli —— 脚手架2、VSCode3.报错4.运行构建Vue3.0项目 1.使用Vite构建vue项目的方法以及步骤 1. 安装vite n…

这才是计算机科学_计算机安全

文章目录一、前言1.1身份认证authentication1.2 权限1.3 开发安全二、黑客2.1 NAND镜像2.2 缓冲区溢出2.3 注入三、加密 cryptography3.1 列位移加密3.2 软件加密3.3 密钥交换一、前言 计算机网络中并不是没有人搞破坏的 但是网络无法区分中要执行的是好是坏 计算机安全&#…

设计模式第七讲-外观模式、适配器模式、模板方法模式详解

一. 外观模式 1. 背景 在现实生活中,常常存在办事较复杂的例子,如办房产证或注册一家公司,有时要同多个部门联系,这时要是有一个综合部门能解决一切手续问题就好了。 软件设计也是这样,当一个系统的功能越来越强&…

最大权闭合子图(最小割模型)

1,定义: 1,最大权闭合子图是最小割的一个模型。即每一个子图中的每一个点,其出边的点也全应该在这个子图中。而所有子图中,其点的权值和最大就是最大权闭合子图。 2,构建该图,我们把所有正权值…

Docker镜像创建及管理(Hub官方仓库使用及私有注册中心搭建)

写在前面 系统环境:centos 7 一、Docker如何创建镜像 镜像的来源有两种: 从镜像仓库下载镜像;自己创建新的镜像。创建分为两种:(1)基于已有镜像创建;(2)使用Dockerfi…