操作系统期末复习

news2024/11/27 0:33:15

操作系统概论

文章目录

  • 操作系统概论
      • 操作系统的目标:
    • 基本特征:
    • 主要功能
      • 发展
  • 操作系统的运行机制
    • 时钟管理
    • 中断机制:
    • 指令
    • 程序
    • 处理机状态
    • 原语:由若干指令组成的程序段,完成特定功能
    • 系统数据结构
    • 系统调用
    • 体系结构
    • 进程--资源分配和调度的基本单位
    • 线程
      • 进程和程序的区别:
      • 进程和线程的区别:线程降低了创建撤销和切换可执行实体的难度和成本
    • 处理机调度
      • 处理机调度层次:
      • 算法:
  • 进程通信
    • 进程同步
      • 进程同步实现方法:
    • 死锁
      • 解决死锁的方法
    • 内存管理
        • 进程运行的基本原理:
        • 用户程序的主要处理阶段
        • 连续分配管理方式:
        • 动态分区算法
        • 非连续分配管理方式:直接分散的装入不连续的分区
        • 分页与分段方式对比
  • 虚拟内存管理
    • 页面置换算法
      • 虚拟存储器的实现方法
  • 输入输出管理
    • I/O设备
      • I/O设备组成
        • I/O控制器的基本功能:
        • I/O控制器的组成
      • I/O通道
      • 假脱机系统组成
        • 假脱机系统特点
        • 假脱机打印实现
      • 缓冲的引入
      • 磁盘访问时间
        • 磁盘调度算法
  • 文件系统
      • 单级文件目录
      • 两级文件目录

操作系统:(OS)用于控制和管理计算机的硬件和软件资源的程序集合

计算机系统的构成:用户,应用程序,操作系统(OS),硬件(裸机)
在这里插入图片描述

OS->系统软件

管理与配置内存,决定资源供需的优先次序,控制输入与输出设备,提供网络与管理文件系统等基本事务,提供一个让用户与系统交互的操作界面。

  1. 硬件交互
  2. 对(硬件)资源共享进行调度管理
  3. 解决并发操作处理中存在的协调问题
  4. 数据结构复杂,外部接口多样,便于用户使用

操作系统的目标:

有效性(系统资源利用率,系统吞吐量)————管理系统(硬件)资源

方便性————用户

可扩充性

开放性————扩充机器

基本特征:

在这里插入图片描述

  1. 并发:时间段内执行多个程序,时刻上是单个程序(分时交替执行)

    并行:同一时刻执行二到多个程序

  2. 共享:计算机系统资源被多个进程共用

    1. 同时访问:同一时段允许多个程序同时访问共享资源
    2. 互斥访问:独占式,多个程序在同一个共享资源上独立而互不干扰的工作
    3. 共享硬件设备(打印机,音频,视频设备)

    并发与共享互为前提,资源共享,多道程序同时访问;多道程序,需要共享

  3. 异步:以不可预知的速度进行

    1. 运行时机
    2. 因何暂停
    3. 时间片
    4. 程序性能
  4. 虚拟:物理实体划分为多个逻辑实体

    1. 时分复用技术TDM
      1. 虚拟处理机
      2. 虚拟设备
    2. 空分复用技术SDM
      1. 虚拟磁盘
      2. 虚拟储存器

基本特征:并发,共享(互为存在条件)

主要功能

  1. 系统资源的管理
    1. 处理机管理:进程控制,同步,通信,死锁处理,处理机调度。
    2. 存储器管理:内存分配,内存保护,地址映射,共享,扩充
    3. 文件管理:文件存储空间的管理,目录管理,文件读写管理于保护
    4. I/O设备管理:缓冲管理,设备分配,设备处理,虚拟设备
  2. 用户接口
    1. 程序接口
    2. 命令接口
    3. GUI图形用户接口
  3. 对计算机资源的抽象
    1. 硬件资源抽象成软件资源,方便使用
    2. 开放简单的访问方式,隐藏实现细节

发展

  1. 手工操作阶段:人机速度矛盾,用户独占,CPU等待人工

    1. 脱机输入/输出:外围机,内存一次一个程序
  2. 批处理阶段:(出现操作系统)

    1. 单道批处理:监督程序,缓解人机速度矛盾,系统资源利用率低,一道程序,CPU等待IO
    2. 多道批处理:调度程序,多道程序并发执行,资源利用率高(I/O时CPU不闲置),无人机交互,平均周转时间长
  3. 分时操作系统:(公平)提供人机交互,不可以优先处理紧急事务(不可以插队)(人与人的交互性)

    1. 多路性:时间片轮转
    2. 独立性:用户独立
    3. 及时性:短时间内响应
    4. 交互性:请求多种服务
  4. 实时操作系统:可以处理紧急事务(人与系统的交互性-资源共享),周期/非周期任务,硬实时:规定时间内完成,软实时:截止时间不严格

    1. 即时性:用户能接受的等待时间
    2. 可靠性:多级容错,保障系统和数据安全

    可靠性 实时>分时 交互性 分时>实时

  5. 微机操作系统:个人计算机

  6. 网络操作系统:资源共享,远程通信

  7. 分布式操作系统:分布性,并行性

操作系统的运行机制

在这里插入图片描述

时钟管理

  • 计时:提供系统时间
  • 时钟中断:比如进程切换

中断机制:

  • 提高多道程序环境下的CPU利用率
  • 内中断(异常,内部信号)
    自愿中断-指令中断
    强迫中断:硬件中断,软件中断
    • 陷入/应用程序:主动引发:陷入指令(访管指令)由CPU产生
    • 故障:由错误条件引发
    • 终止:由致命错误引发
  • 外中断(外部信号):外设请求,人工干预

中断处理过程:

  1. 产生中断:关中断(CPU不响应高级中断请求)–保存断点–引出服务程序–保存现场和屏蔽字–开中断
  2. 执行中断服务程序(此时CPU可以并发)
  3. 回收中断:关中断–恢复现场和屏蔽字–开中断–中断返回

指令

特权指令:(非用户指令)只允许操作系统使用。例:IO指令,中断指令

非特权指令:普通运算指令

(访管指令:用户自愿进入核心态)

程序

内核程序:系统管理者,执行一切指令,运行在核心态上

应用程序:普通用户程序,只能执行非特权指令运行在用户态上

处理机状态

用户态(目态):非特权指令

核心态(管态、内核态):所有指令

用户->核心:通过中断(硬件完成)

核心->用户:特权指令psw的标志位:0为用户,1为核心

原语:由若干指令组成的程序段,完成特定功能

  1. 处在操作系统最底层,最接近硬件
  2. 运行具有原子性,操作不可中断
  3. 运行时间短,,调用频繁

操作系统通过原语实现进程控制

系统数据结构

  1. 进程管理:作业控制块,进程控制块
  2. 存储器管理:存储器分配与回收
  3. 设备管理:缓冲区,设备控制块

系统调用

系统提供OS接口,在用户态发生,由核心态处理

  1. 有操作系统实现,给应用程序调用
  2. 是一套接口的集合
  3. 应用程序访问内核服务的方式

体系结构

  1. 传统的操作系统结构-无结构OS

    1. 一系列程序的集合,过程将可以相互调用
    2. 结构复杂且混乱,难以调试、阅读和维护
  2. 模块化结构OS:模块-接口法OS

    1. 基于分解和模块化原则
    2. 按照功能划分模块/子模块,规定模块间的接口
    3. 模块独立性标准:高内聚、低耦合

    优点:提高OS设计的正确性,可理解性和可维护性,增强了适应性,加速开发过程

    缺点:男易扩展后续需求,设计没有统一标准,导致模块接口设计不可靠

  3. 分层式OS

    1. 有序分层:自顶向下依次依赖
    2. 自底向上设计,每一步基础可靠

    优缺点:易保正系统正确性,易扩充和维护,层次通信导致效率降低

  4. 微内核OS系统:

    1. 足够小的内核,只实现核心功能,进程调度,低级存储器管理,中断和陷入管理
    2. 应用机制与策略分离原理
    3. 采用面向对象技术

    优点:扩展性,可靠性,可移植性提高,支持分布式系统,融入了面向对象技术

    缺点:比早期的OS,降低了一定的效率

进程–资源分配和调度的基本单位

目的:更好的描述和控制程序并发执行,实现操作系统的并发性和共享性

定义:计算机程序关于某数据集合的一次运行活动,是系统进行资源分配和调度的基本单位。

组成

  1. PCB:保护进程运行期间相关的数据,是进程存在的唯一标志
    
  2. 程序段:能被进程调度到CPU的代码,可被多个进程共享
  3. 数据段:存放数据,存放原始数据和中间数据

特征:

  1. 动态性:创建生,撤销亡
  2. 并发性:多个进程同时运行
  3. 独立性:独立资源分配
  4. 异步性:相互独立,互不干扰

状态

  1. 运行态:进程占用CPU
  2. 就绪态:进程准备运行,获得了除处理机以外的一切资源,得到处理机即可运行
  3. 阻塞态:进程等待某一事件不能使用CPU
  4. 创建状态:进程正在被创建
  5. 结束状态:进程正在从系统消失

状态变化

  • 就绪->运行:就绪的进程获得处理机资源(时间片)
  • 运行->就绪:时间片用完或有更高级的进程进入
  • 运行->阻塞:进程所需资源未准备好
  • 阻塞->就绪:进程等待的事件到来
    在这里插入图片描述

线程

目的:更好的使用多道程序并发执行提高资源利用率和系统吞吐量

程序执行的最小单位(运算调度的最小单位)

进程和程序的区别:

进程是动态的,程序是静态的,程序是有序代码的集合

进程是程序的执行

进程是暂时的,程序是永久的,进程是状态变化的过程

进程的组成包括程序、数据、和进程控制块(进程状态信息)

通过多次执行,一个程序可对应多个进程

通过调用关系,一个进程可包括多个程序

进程和线程的区别:线程降低了创建撤销和切换可执行实体的难度和成本

  1. 调度:线程是调度的基本单位,不同线程的切换不影响进程的切换
  2. 进程是资源分配的基本单位
  3. 引入线程和进程都是为了提高系统的并发性
  4. 线程间的切换相比进程减少了系统的开销
  5. 进程之间的地址空间是相互独立的,同一进程的线程共享地址空间
  6. 线程间的通信比同一进程间的通信简单

处理机调度

概念:对处理机进行分配,即从就绪队列中按照既定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程的并发执行

前提作业,进程数远大于处理机数

目的:提高资源利用率,减少处理及空闲时间

调度程序:快速响应,考虑系统效率(平均周转时间)和调度算法开销

处理机调度层次:

  • 高级调度(作业调度):后备作业调入内存,调入一次,调出一次
  • 中级调度(内存对换):进程在内,外存区的对换
  • 低级调度(进程调度):从就绪队列选择进程到处理机,基本调度,频率高(时间片)
    在这里插入图片描述

调度方式

  1. 剥夺(抢占)式:
    1. 暂停当前进程
    2. 分配给另一个进程
    3. 优先,短优先,时间片
  2. 非剥夺式
    1. 进程请求
    2. 等待当前进程完成或阻塞
    3. 缺:适用于批处理,不适用分时/实时

调度准则

CPU利用率=忙碌时间/总时间、
系统吞吐量=完成作业数/总时间、
周转时间=完成时间-提交时间  带权周转=周转时间/实际运行时间
等待时间=等待调度时间
响应时间=提交-第一次响应时间间隔

调度时机:运行完\时间片完\I/O操作\原语操作\高优先级(剥夺式)

调度过程:保存镜像->调度算法->进程切换(分配处理机)->处理机回收

算法:

  1. 先来先服务FCFS
    1. 队列,等待完成或阻塞
    2. 顺序执行
    3. 非抢占式
  2. 短作业优先、SJF:预估周转时间最短优先
    1. ,最少的平均(带权)周转
    2. 非抢占式
    3. 平均周转时间最少
  3. 优先级调度算法、HRRN:优先级高的先调度
    1. 静态/动态
    2. 系统>用户,交互>非交互,I/O>计算
  4. 高响应比调度算法、PSA:响应比高的优先
    1. 非抢占式
    2. (等待时间+服务时间)/服务时间>=1
    3. 长时间等待时间越久,更容易获得处理机
  5. 时间片轮转、RR:公平
    1. 队列顺序,轮流使用时间片,时钟中断
    2. 抢占式
    3. 进程调度
    4. 适用于分时系统
  6. 多级反馈队列调度算法MFQ:PSA+RR
    1. 多个优先级排序
    2. 优先级高->低,时间片小->大
    3. 未执行完的,降级一次,时间片扩大一次
    4. 进程调度,抢占式

进程通信

进程间的信息交换,进程是资源分配的基本单位,内存空间彼此独立,

  1. 共享存储
    1. 共享数据结构:
      1. OS提供并控制共用
      2. 用户负责同步
      3. 低级通信:少量数据,效率低
    2. 共享存储区:存在安全隐患
      1. 共用内存的一块区域
      2. 由进程控制数据的形式和方式
      3. 高级通信:大量数据,效率高
  2. 消息传递:
    1. 直接通信:
      1. 指明ID,使用send发送使用receive接受,
      2. 维护消息缓冲队列,消息:(消息头(双方ID)+消息类型+长度+消息体)
    2. 间接通信:原语操作
      1. 信箱媒介
      2. 可以广播
  3. 管道通信
    1. 用于读/写进程的共享文件,pipe文件
    2. 本质是固定大小的缓冲区
    3. 同时间段只能单向通信,双通信要两个管道
    4. 先进先出(FIFO)组织传输
    5. 系统调用read()和write()读写

在这里插入图片描述

进程同步

**引入原因:**协调进程之间的相互制约关系

制约关系

同步:直接制约,进程合作,因需要在某些位置上协调工作次序二等待,传递信息所产生

互斥:间接制约,排他性使用共享资源

临界资源:一次只允许一个进程访问的资源

临界区:在每个进程中访问临界资源的那段程序(代码)

临界区互斥

  1. 空闲让进:一次只允许一个进程进入临界区
  2. 忙则等待:由于临界区进程只能有一个,所以其他进程必须等待
  3. 有限等待:进入临界区的进程要在有限时间内退出,以便于其他进程能够及时进入
  4. 让权等待:若进程不能进入自己的临界区,则应让出CPU,避免”忙等“

互斥访问实现:进入加锁->访问共享资源->退出解锁->其余代码

进程同步实现方法:

  1. 软件实现
    1. 单标志:违背空闲让进
    2. 双标志先检查后赋值:违背忙则等待
    3. 双标志后检查先赋值:违背空闲让进,有限等待
    4. 皮特森算法:违背让权等待
  2. 硬件实现
    1. 中断屏蔽:
    2. TS指令:违背让权等待
    3. Swap指令:交换变量的值(原子操作),违背让权等待

信号量机制:PV操作(p-等待、v-唤醒)

  • 整形信号量:违背让权等待
  • 记录型信号量:进程阻塞不会忙等

信号量S 负几表示有几个等待进程,0没有可用资源,没有等待进程,正几表示有几个可用资源

管程???

死锁

原因:非剥夺资源的竞争和进程的不恰当推进顺序

定义:多个进程因争夺资源产生的僵局,没有外力,则无法推进

必要条件:

  1. 互斥:共享资源的排他访问
  2. 不剥夺:访问时不可剥夺
  3. 请求并保持:保持当前资源并请求访问另一个资源
  4. 循环等待:多个进程都在等待其他进程释放资源->等待链

解决死锁的方法

  1. 预防:
    1. 破坏互斥条件
    2. 破坏不剥夺条件
    3. 破坏请求和保持条件
    4. 破坏循环等待条件
  2. 避免:
    1. 安全状态:安全一定不死锁,不安全不一定死锁
    2. 银行家算法:判断是否会导致死锁,是则拒绝,否则允许
  3. 检测:死锁定理:资源分配图不可完全简化
    1. 资源分配图
  4. 解除:资源剥夺、撤销进程、进程回退

在这里插入图片描述

n个资源被x个进程竞争,每个进程最多要求m个资源,则系统不会发生死锁时。
x取值不超过?

x*(m-1)<= n

内存管理

目的:更好的支持多道程序并发执行

功能

  1. 内存空间的分配与回收存储的保护与共享:
  2. 各道作业互不干扰地址转换:
  3. 逻辑地址->相应的物理地址内存扩充:
  4. 虚拟存储技术和自动覆盖技术,从逻辑上扩充内存

存储器的结构:
在这里插入图片描述

进程运行的基本原理:

  • 程序的装入

    • 绝对装入:
      • 装入前知道装入位置,
      • 单道程序环境
    • 可重定位装入:
      • 不可预知位置
      • 多道程序环境

    以上均一次性全部装入

    • 动态运行装入
      • 一次只装入部分

用户程序的主要处理阶段

  1. 编辑:创建源文件
  2. 编译:编译,生成目标文件
  3. 链接:将所需库函数链接与目标模块链接,生成可执行文件
    1. 静态链接:装入前链接
    2. 装入时动态链接:
    3. 运行时动态链接
  4. 装入:装入内存执行
  5. 运行:得出结果

涉及到逻辑地址与物理地址的变化 以及 内存保护

内存扩充???

连续分配管理方式:

  1. 单一连续:用户区内存独占
    1. 实现简单,无外部碎片,不一定要内存保护
    2. 单用户单任务,内部碎片,存储利用率低
  2. 固定分区:多道程序,多个固定分区

以上都是预先分好分区

  1. 动态分区:
    1. 空闲分区表[分区号|大小|起始地址|状态]
    2. 回收相邻空间要合并,更新表或链的记录

动态分区算法

  1. 基于顺序的
    1. 首次适应:从低地址查找合适空间
    2. 循化首次适应:从上次查找的下一个开始
    3. 最佳适应:优先使用最小空闲空间
    4. **最坏适应:**优先使用最大连续空间
  2. 基于索引搜索的
    1. 快速适应
    2. 伙伴系统
    3. 哈希算法

以上作业必须连续

动态分区重定位:

紧凑:移动或重定位作业地址利用碎片空间

非连续分配管理方式:直接分散的装入不连续的分区

  1. 基本分页存储:大小相等的(逻辑)页或(物理)块-需要页表(PCB中)记录程序分了多少页,以及页号
  2. 基本分段存储:不同大小的段
  3. 段页式存储

计算

基本变换计算
物理地址=(页号->块号)+偏移量
页号p=逻辑地址A/页面长度(大小)L
偏移量W=逻辑地址A%页面长度L

分页与分段方式对比

同:

  1. 都是非连续分配(离散分配)
  2. 都通过地址映射实现地址变换

  1. 页是物理单位,段是逻辑单位
  2. 页大小固定由系统决定,段不固定由编译系统划分
  3. 页是一维的地址空间,段是二维的
  4. 分段有利于信息共享和保护

虚拟内存管理

概念:具备请求调入和置换的,从逻辑上对内存容量扩充的存储器系统

虚拟内存=内存+外存

局部性原理:

  • 时间
  • 空间

虚拟内存特征

  • 多次
  • 对换
  • 虚拟

常规存储器特证

  • 一次性
  • 驻留性

页面置换算法

  1. 最佳置换OPT:无法实现,最小缺页率
  2. FIFO先进先出置换:淘汰最早进入的
  3. 最近最久置换算法:淘汰最近最久未使用的页面
  4. 时钟置换NRU:设计访问位,访问后置为一,淘汰时置为零跳过,为零时淘汰
  5. 改进型时钟置换:

虚拟存储器的实现方法

  1. 请求分页系统=分页+请求调页+页面置换
  2. 请求分段系统=分段+请求调段+分段置换

缺页率:f=访问失败(需要调入)次数/总的访问次数

  1. 页面大小
  2. 进程所分配物理块的数目
  3. 页面置换算法
  4. 程序固有特性

输入输出管理

I/O设备

交互类,存储类,网络通信

I/O设备组成

机械部件:

电子部件:I/O控制器,设备控制器,CPU与硬件之间的桥梁

I/O控制器的基本功能:

  1. 接受并识别CPU命令
  2. 向CPU报告设备状态
  3. 数据交换
  4. 地址识别

I/O控制器的组成

在这里插入图片描述

  • CPU与控制器间的接口
  • I/O逻辑
  • 控制器与设备间的接口

I/O通道

概念:I/O通道是特殊的处理机,具备执行i/O指令的能力,并通过执行i/o通道程序来控制I/O操作

通道执行过程:

  1. cpu向通道发送I/O指令
  2. 通道收到指令取出并执行通道程序
  3. 完成任务后,通道向CPU发送中断信号

假脱机系统组成

  1. 输入输出井
  2. 输入输出缓冲区
  3. 输入输出进程
  4. 井管理程序

假脱机系统特点

  1. 提高i/o速度
  2. 独占设备改为共享设备
  3. 实现了虚拟设备功能

假脱机打印实现

  1. 磁盘缓冲区
  2. 打印缓冲区
  3. 假脱机管理进程和假脱机打印进程

缓冲的引入

  1. 缓和CPU与I/O设备速度矛盾
  2. 减少CPU中断频率,放宽响应时间限制
  3. 解决数据粒度不匹配问题
  4. 提高CPU和I/O设备并行性

磁盘访问时间

  1. 寻道时间=(磁盘速度*n条磁道)+磁臂启动时间k
  2. 平均旋转延迟时间=1/2*磁盘秒转速r
  3. 传输时间=读写字节数/r*磁道字节数
  4. 访问时间=寻道时间+延迟时间+传输时间

磁盘调度算法

  1. FCFS:请求时间顺序
  2. SSTF:最近

文件系统


单级文件目录

优点:

  1. 简单

缺点:

  1. 查找速度慢
  2. 不允许重名
  3. 不便于文件共享

两级文件目录

  1. 提高了检索速度
  2. 不同UFD中文件名可以相同
  3. 不同用户可以使用不同的文件名访问同一个共享文件

相对路径:当前目录到数据文件

绝对路径:从树根开始的路径

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

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

相关文章

[黑马程序员SSM框架教程] Spring-22 注解开发依赖注入

1.自动装配是基于暴力反射对私有属性进行装配的&#xff0c;所以不需要setter方法。打破了IOC提供对象&#xff0c;我提供入口的思想。现在不用提供入口也能实现。 2. Qualifier必须依赖注解Autowired&#xff0c;当自动装配的接口类型有多个实现类时使用&#xff0c; 3. Autow…

Linux基础命令-du查看文件的大小

文章目录 du 命令介绍 语法格式 基本参数 参考实例 1&#xff09;以人类可读形式显示指定的文件大小 2&#xff09;显示当前目录下所有文件大小 3&#xff09;只显示目录的大小 4&#xff09;显示根下哪个目录文件最大 5&#xff09;显示所有文件的大小 6&#xff0…

layui框架学习(11:徽章)

应用程序有新增内容、未读消息时&#xff0c;会在按钮或菜单中添加红点或带数字的点状或方状图形&#xff0c;用户看到就知道有新内容&#xff0c;如下图所示QQ邮箱的截图&#xff0c;会通过红色圆点或带NEW的方框提醒用户有新内容可以查看。   CSDN用户如果有新消息&#x…

产品经理有必要考个 PMP吗?(含PMP资料)

现在基本上做产品的都有一个PMP证件&#xff0c;从结果导向来说&#xff0c;不对口不会有这么大范围的人来考&#xff0c;但是需要因地制宜&#xff0c;在公司内部里&#xff0c;标准程序并不流畅&#xff0c;产品和项目并不规范&#xff0c;关系错综复杂。 而产品经理的职能又…

【Java学习】初识Java

JavaSEJava初识1. Java简介2.Java环境的安装与配置3. 开发第一个Java程序Java初识 学前疑问&#xff1a;&#xff08;带着疑问去学习&#xff0c;在学习中自行探索答案&#xff09; Java是什么&#xff1f;能做什么&#xff1f;发展前景如何&#xff1f;需要学习哪些内容&…

腾讯一面—Android 系统启动流程详解

正文AMS 是 Android 中最核心的服务之一&#xff0c;主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作&#xff0c;其职责与操作系统中的进程管理和调度模块相类似&#xff0c;它本身也是一个 Binder 的实现类&#xff0c;应用进程能通过 Binder 机制调用…

ESPRESSIF ESP32 开发环境搭建

1.下载Espressif-IDE并安装&#xff0c;安装的时候直接下一步就行&#xff0c;下载地址为 IDE下载地址 2.新建项目 1&#xff0c;首先磁盘新建文件夹&#xff0c;用来保存项目 2&#xff0c;File ->New ->乐鑫IDF项目-> 工程名字test->保存目录就是自己建立的哪个…

EasyRecovery16MAC苹果版本Photo最新版数据恢复软件

无论是在工作学习中&#xff0c;还是在生活中&#xff0c;Word、Excle等办公软件都是大家很常用的。我们在使用电脑的过程中&#xff0c;有时会因自己的误删或电脑故障&#xff0c;从而导致我们所写的文档丢失了。出现这样的大家不要着急&#xff0c;今天小编就给大家推荐一款可…

nacos 单机集群搭建及常用生产环境配置 | Spring Cloud 3

一、Nacos 概览 Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集&#xff0c;帮…

《程序员思维修炼》速读笔记

文章目录书籍信息概览绪论从新手到专家的历程认识大脑利用右脑调试大脑主动学习积累经验控制注意力超越专家图解书籍信息 书名&#xff1a;《程序员思维修炼&#xff08;修订版&#xff09;》 作者&#xff1a;[美] Andy Hunt 概览 绪论 再提“实用”关注情境所有人都关注这…

kafka使用入门案例与踩坑记录

每次用到kafka时都会出现各种奇怪的问题&#xff0c;综合实践&#xff0c;下面汇总下主要操作步骤&#xff1a; Docker镜像形式启动 zookeeper启动 docker run -d --name zookeeper -p 2181:2181 -t wurstmeister/zookeeperkafka启动 docker run --name kafka01 -p 9092:909…

Apk转Aab(Android-App-Bundle)

这篇文章是参考Apk转Aab(Android-App-Bundle)_YoungBillsohu的博客-CSDN博客 基本照着这个大佬的步骤来就行&#xff0c;但是要注意的是apkTool最好是下新的&#xff0c;否则&#xff0c;会出现说一堆无语的错误&#xff0c;然后导致AAPT2关联资源的时候报错 类似这样的&#…

Java自定义生成二维码(兼容你所有的需求)

1、概述作为Java开发人员&#xff0c;说到生成二维码就会想到zxing开源二维码图像处理库&#xff0c;不可否认的是zxing确实很强大&#xff0c;但是实际需求中会遇到各种各样的需求是zxing满足不了的&#xff0c;于是就有了想法自己扩展zxing满足历史遇到的各种需求&#xff0c…

STC单片机启动看门狗定时器介绍和使用

STC单片机启动看门狗定时器介绍 ✨这里以STC8系列为例。 📑看门狗复位(WDT_CONTR) WDT_FLAG:看门狗溢出标志 看门狗发生溢出时,硬件自动将此位置 1,需要软件清零。EN_WDT:看门狗使能位 0:对单片机无影响 1:启动看门狗定时器。 注意:看门狗定时器可使用软件方式启动,…

JSP网上书店系统用myeclipse定制开发mysql数据库B/S模式java编程计算机网页

一、源码特点 JSP 网上书店系统 是一套完善的系统源码&#xff0c;对理解JSP java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。研究的基本内容是基于网上书店系 统&#xff0c;使用JSP作为页面开发工具。Web服务的运…

【机器学习】集成学习投票法:投票回归器(VotingRegressor) 投票分类器(VotingClassifier)

前言 投票回归器和投票分类器都属于集成学习。在【机器学习】集成学习基础概念介绍中有提到过&#xff0c;集成学习的结合策略包括&#xff1a; 平均法、投票法和学习法。sklearn.ensemble库中的Voting Classifier和Voting Regressor&#xff0c;它们分别实现了对回归任务和分…

JUC 之 Synchronized 与 锁升级

—— 对象内存布局 和 对象头 对象构成布局 1. 对象头 对象标记 Mark Word 哈希码GC 标记 & 次数 GC 年龄 采用 4 位 bit 存储&#xff0c;最大为 15&#xff08;1111&#xff09;&#xff0c;所以 MaxTenutingThreshold 参数&#xff08;分代年龄&#xff09;的参数默…

C++回顾(三)—— 函数

3.1 内联函数 3.1.1 内联函数的定义 &#xff08;1&#xff09;内联函数的作用 作用&#xff1a;不是在调用时发生控制转移&#xff0c;而是在编译时将函数体嵌入在每一个调用处&#xff0c;适用于功能简单&#xff0c;规模较小又使用频繁的函数。递归函数无法内联处理&…

Java-重排序,happens-before 和 as-if-serial 语义

目录1. 如何解决重排序带来的问题2. happens-before1. 如何解决重排序带来的问题 对于编译器&#xff0c;JMM 的编译器重排序规则会禁止特定类型的编译器重排序。对于处理器重排序&#xff0c;JMM 的处理器重排序规则会要求编译器在生成指令序列时&#xff0c;插入特定类型的内…

Android笔记(二十五):两种sdk热更插件资源加载方案

背景 在研究sdk插件化热更新方式的过程中总结出了两套插件资源加载方案&#xff0c;在此记录下 资源热更方式 方式一&#xff1a;合并所有插件资源 需要解决资源id冲突问题 资源ID值一共4个字段&#xff0c;由三部分组成&#xff1a;PackageIdTypeIdEntryId PackageId&…