电子科技大学操作系统期末复习笔记(五):文件管理

news2024/9/24 23:22:43

目录

前言

文件管理:基础

基本概念

文件

文件系统

文件系统的实现模型

文件的组成

文件名

文件分类

文件结构

逻辑结构

物理结构

练习题 

文件管理:目录

文件控制块FCB

FCB:File Control Block

FCB信息

目录

基本概念

目录功能

目录基本操作

⭐FCB组织方法

⭐改进的FCB组织方法

目录的组织

路径

无环图目录

链接

通用图目录

文件管理:磁盘管理

空闲分区表

概念

特点 

空闲分区链表

概念

特点

位示图

成组块链接法

分配方法

释放方法

例题

文件一致性:盘块

链接数一致性检查

文件执行

数据结构

文件共享

文件操作

执行过程

虚拟文件系统 VFS


前言

设备管理模块已经更新,传送门:电子科技大学操作系统期末复习笔记(四):设备管理

本复习笔记基于电子科技大学计算机操作系统-教学大纲(2022)中的课程模块部分,分为五大章节,分别是:

  • CM1操作系统概念。操作系统基本功能、操作系统发展历史及趋势、操作系统主流架构、常见操作系统特点、操作系统安全机制。
  • CM2进程管理。进程概念、线程概念、进程生命周期、进程调度算法、进程同步互斥、进程间通信和死锁。
  • CM3内存管理。内存空间的概念、连续分配、离散分配(分页管理、分段管理、段页式管理)、虚拟存储管理和页面置换算法。
  • CM4设备管理。I/O 系统结构、缓冲管理、磁盘结构和磁盘调度算法。
  • CM5文件管理。文件系统的作用、逻辑结构、物理结构、目录、文件共享和文件系统的一致性。

本节是最后一部分,要点在CM5,大致内容如下:

第五章 文件管理(6 学时,多媒体课件结合板书面授)CM5
1、主要内容
文件和文件系统的概念,文件逻辑结构(堆文件、顺序文件、索引顺序文件、索引文件、HASH 文件),外存分配方法(连续分配、链接分配、索引分配),目录管理(一级目录、二级目录、多 级目录),文件存储空间的管理技术(位示图、空闲链表、索引)。文件系统性能的改善、数据一致性控制。
2、应达到的要求 记忆:文件系统性能的改善、数据一致性控制。
理解:文件系统的基本概念、目录管理、文件共享、文件保护的方法。
分析:文件逻辑结构、文件的物理结构、文件目录、外存空间的管理。

一共3个PPT,就分三大块:文件管理:基础、文件管理:目录、文件管理:磁盘管理。


文件管理:基础


基本概念

  • 文件

    • 一种具有符号名的、相关联元素的有序集合。
    • 用户按照信息的逻辑功能将关联存储单元组织成文件。
    • 文件是信息在磁盘上存储的基本逻辑单位。
    • 文件名:对相关联元素的Naming
  • 文件系统

  • 概念:
  • 对文件实施管理、控制与操作的一组软件。
    • 用户或应用程序访问文件的唯一方式
  • 目标与功能:
    • 保证文件中的数据有效
    • 减少或消除丢失或破坏数据的可能性
    • 从系统角度优化总吞吐量,从用户角度优化响应时间
    • 为各种类型的存储设备提供I/O支持,并提供统一接口
    • 统一管理文件的存储空间,实施存储空间的分配与回收
    • 实现文件的按名存取:文件名字空间 \leftrightarrow 存储空间
    • 实现文件信息共享,提供文件保护和保密措施
  • 用户观点
    • 实现“按名存取”功能
  • 操作系统观点
    • 文件目录怎样实现、管理存储空间、文件存储位置、磁盘实际运作方式(与设备管理的接口)
  • 文件系统的实现模型

    • 文件系统接口:命令、系统调用和图形窗口的文件系统访问功能。 
    • 逻辑功能层:根据接口层所发下的文件访问需求,通过相关的文件控制块、文件目录、文件分配表等,获取访问存储介质的物理参数。  
    • 物理驱动层 :将逻辑功能层所发下的命令转化为相应的驱动程序的动作,完成对文件物理存储设备的处理。
  • 文件的组成

    • 文件=元数据+文件内容
    • 元数据:文件名、内部标识(如unix的inode)、拥有者、访问时间/权限、文件大小 ……
  • 文件名

    • 格式:A.B
    • A: 文件名称   B: 文件类型/文件格式/文件扩展名
  • 文件分类

    • 对不同文件进行管理,提高系统效率
    • 提高用户界面友好性
    • 设备文件:统一的抽象接口(了解即可)

文件结构

逻辑结构

从用户角度研究文件的组织形式,独立于物理存储结构

  • 无结构文件:流式文件
    • 构成文件的基本单位是字节,文件是有逻辑意义的、无结构的一串字节的集合。
    • 自身不提供任何数据结构 提供很大的灵活性
    • 用户自定义文件内容含义
  • 有结构文件:记录文件
    • 文件是由若干个记录组成,每个记录有一个键,可按键进行查找。
    • 记录(record)、字段(field)、键(key)
  • 文件组织与访问
    • 原则:
      • 原则可能互相矛盾(如索引 vs. 空间)
      • 优先级取决于使用文件的应用程序
    • 堆文件:数据按到达时间顺序存放;每个记录长度、字段数量不确定;随机访问效率极低,对大多数应用都不可用;例:log(日志文件)
    • 顺序文件:所有记录有序排列(主字段);字段定义、记录长度固定;批处理,顺序访问最佳;查询或更新记录的交互式应用,性能差;(随机)访问大型顺序文件时性能差(包含某个key的记录)
    • 索引顺序文件:是一个顺序文件;将顺序文件中的记录进行分组(block);索引表仅记录每组中第一个记录的信息;组与组之间记录的关键字必须有序排列;搜索非key字段困难
    • 索引文件:每个索引项指向一个记录,索引项按照记录中的某个关键字排序;记录大小不必相同,不必排序,存放在主文件中。 可以对不同的关键字域建立多个索引;主文件中增/减/变更记录时,索引文件须相应更新
    • 直接,散列/哈希文件:记录的存储位置由以关键字为参数的哈希函数计算得到。 记录大小一般相同;检索时给出记录的关键字值,通过哈希函数计算出该记录在文件中的位置;访问速度快, 一次只需访问一条记录时使用。例:目录、价格表、调度和名字列表等。
  • 有结构文件和无结构文件的区别:

物理结构

文件的逻辑地址和物理地址 文件在物理介质上的存放方式

  • 文件访问方法
    • 用户在使用文件时按何种次序存取文件
      • 顺序存取:按照文件信息的逻辑顺序(记录的排列顺序)依次存取。
      • 随机存取(直接存取):按任意的次序对文件进行读写操作
    • 与文件使用方式有关
      • 源程序文件用顺序存取
      • 数据库文件用随机存取
    • 与存储介质的特性有关
      • 磁带
      • 磁盘
  • ⭐文件分配表
    • 为了有效地管理文件存储器,通常把文件存储空间划分成若干个大小相等的物理块。
    • 物理块是分配及传输信息的基本单位。
    • 块的大小通常是扇区的倍数,如512B、1KB、2KB或者4KB。
    • 文件分配表:描述文件所获得物理块的详细信息,不同的操作系统赋予了该结构不同的名字
      • DOS:FAT / Windows NTFS: MFT (master file table)
      • UNIX类操作系统:inode
    • 分配方式
      • 静态分配:文件创建时申明需要的最大空间
        • 预分配,实现简单,易于维护,但灵活性差
      • 动态分配:文件存储空间按需分配
        • 实现较复杂,需要维护较多的数据结构,实用性高

连续结构(顺序)

  • 文件信息存放在若干连续的物理块中
  • 优点:简单;支持顺序存取和随机存取;顺序存取速度快:磁盘寻道次数(寻道时间)最少
  • 缺点:不利于文件尺寸的动态增长(插入、删除);可能会导致磁盘碎片,降低外存空间的利用率(可以采用紧凑技术处理,从而改善)。

链接结构

  • 文件信息存放在若干不连续的物理块中,各块之间通过指针连接。
    • 隐式链接
      • 每个物理块都设有一个指针字段,指向下一个物理块的位置。
      • 随机访问性能差
    • 显式链接
      • 用于链接文件各物理块的指针,显示地存放在一张内存链表中,该表在整个磁盘中仅一张。
      • 随机性能优于隐式链接
  • 优点:提高了磁盘空间利用率,不存在外部碎片问题;有利于文件插入和删除
  • 缺点:更多的寻道次数和寻道时间;随机访问性能差;可靠性问题,如指针出错
  • 改进方法:扩大文件块分配单位。若干个连续的数据块,称之为簇(Cluster)。
    • 簇(Cluster)
      • 一组连续的扇区→虚拟扇区
      • 分配单位 Cluster=2^n Sectors

索引结构

文件信息存放在若干不连续物理块中,每个文件关联一个索引表,记录块号

索引表就是磁盘块地址数组,第i个条目指向文件的第i块

优点:支持随机存取(优于链接结构,找第i块更快);满足了文件动态增长、插入删除要求;利用多级索引,可以支持大型文件的存取

缺点:较多的寻道次数和寻道时间(对比页表)

一个数据块容纳不了一个文件的所有分区时,需要若干个索引结点进行存储

多级索引

  • 盘块大小:1 KB,每个盘块号:4B
    • 一个索引块中可存放1K/4B=256个盘块号
    • 两级索引时, 最多可包含的存放文件的盘块总数N = 256 × 256 = 64 K个盘块号。
    • 最大文件长度:64MB
  • 计算:盘块大小:4KB,盘块号:4B,一级、两级索引时最大文件分别为?
    • 4KB/4B=2^10;  1_file=2^10*4KB=4MB; 2_file=2^10*2^10*4KB=4GB

⭐综合/混合模式

将多种索引分配方式相结合而形成的一种分配方式。

例如,系统既采用了直接地址,又采用了一级索引分配方式,或两级索引分配方式,甚至还采用了三级索引分配方式。

Unix iNode

13个索引项,每项2个字节 前10项为直接块

第11项指向一个物理块,该块中最多可放256个文件物理块的块号(一次间接寻址)。

第12和第13项作为二次和三次间接寻址

单个文件最大长度:(10+256+256*256)*block-storage

练习题 

设文件索引节点中有7个地址项 4个直接地址索引 2个一级间接地址索引 1个二级间接地址索引 每个地址项大小为4B 磁盘索引块和磁盘数据块均为256B

问:单个文件的最大长度是多少?

答:每个索引块中的项目数为:256/4=64个

4个直接地址索引块,可索引块数:4

2个一级间接地址索引块,可索引块数:2×64=128

1个二级间接地址索引块,可索引块数:1×64×64=4096

单个文件的最大长度为:(4+128+4096)*256B=1057KB

假定UNIX磁盘块的大小为1KB,每个盘块号占4个字节,文件索引节点中的磁盘地址明细表如图所示,请将下列文件的字节偏移量转换为物理地址?

1. 9000          2. 14000             3. 350000 

答:字节偏移量为9000时

逻辑块号为:9000/1024=8 块内偏移量为:9000 % 1024=808 逻辑块号小于10→该块为直接块。逻辑块号8对应的物理盘块号为367,该块中的第808字节即为文件的第9000字节。 

字节偏移量为14000时

逻辑块号为:14000/1024=13 块内偏移量为:14000 % 1024=688 逻辑块号9<13<266→该块为一次间接块。 一次间接的盘块号为428,从一次间接块中读出盘块号表,查得逻辑块号13的物理块号为952,该块中的第688字节即为文件的第14000字节。

字节偏移量为350000时

逻辑块号为:350000/1024=341 块内偏移量为:350000 %1024=816 因逻辑块号265<341<65802(256*256+256+10)→该块为二次间接块。 由图可知,二次间接块的盘块号为9156。一个一次间接块中可容纳256个块号,341-10-256=75 75/256=0,故字节偏移量350000在二次间接块的第0个一次间接块的第75个表项中,其盘块号为333,该块中的第816字节即为文件的第350000字节。


文件管理:目录

文件控制块FCB

FCB:File Control Block

描述和控制文件的数据结构 与文件一一对应

文件存在的标志

文件控制块的组成——与操作系统相关

FCB信息

文件名:用户利用该名字进行存取。

文件物理位置:在外存的存储位置(设备名、起始盘块号、占用的盘块等)

使用信息:创建时间:create time ;最后一次读访问的时间:access time ;最后一次写访问的时间:modify time


目录

基本概念

文件目录:一组文件的集合

目录:文件元数据(控制块)的集合

目录文件:目录项构成的文件

递归效果:目录也用FCB表示

目录即文件 

目录文件具有固定格式 由系统进行管理,用户不能直接访问目录文件

目录功能

  • 按名存取
  • 提高检索速度
    • 合理地组织目录结构,可以加快对目录的检索速度,从而提高对文件的存取速度。
  • 文件共享
    • 允许共享文件,节省存储空间,方便用户。
  • 允许文件重名
    • 方便用户按照自己的习惯来命名和使用文件。

目录基本操作

  • 罗列文件
  • 搜索文件
    • 通过查找目录结构,实现特定文件的按名查找
  • 创建文件
    • 建立新文件,将相应控制块加到目录中去
  • 删除文件
    • 当一个文件不再需要时,从目录中删除
  • 重命名文件

⭐FCB组织方法

计算: 一个FCB有48字节,假设物理块512字节,某目录有128个文件。 计算查找一个文件平均访盘次数。

  • 每块存储的FCB数量:512/48=10
  • 128个文件的目录文件需要磁盘块:128/10=13
  • 平均访盘次数:(1+13)/2=7(最少一次找到,最多13次,取均值)

⭐改进的FCB组织方法

采用目录项分解法,把FCB分成两部分

一个FCB有48字节,符号目录项占 8字节(文件名6字节,文件号2字节),假设物理块512字节,某目录有128个文件。 采用改进的FCB组织方法,查找一个文件平均访盘次数。

每块存储的符号目录项:512/8=64

每块存储的基本目录项:512/42=12

128个文件,符号文件、基本文件分别需要:128/64=2, 128/12=11

平均访盘次数:(1+2)/2+1=2.5(最少一次查找符号目录,最多两次,取均值,再加上一次精准查找的基本目录项)

目录的组织

  • 组织文件目录是文件系统的主要内容之一
  • 有效性:快速定位一个文件
  • 命名:用户使用方便
    • 两个用户对不同的文件可以使用同一个文件名
    • 同一个文件可能有不同的文件名
      • 文件数据,元数据
  • 空目录≠文件数为0的目录:不存在文件数为0的目录!
  • 单级目录结构
    • 所有文件都包含在同一目录中
    • 缺点:查找速度慢;不允许重名;不便于共享;不能分组
  • 两级目录结构
    • 为每个用户创建单独的目录
    • 用户文件目录UFD 主文件目录MFD
    • 优点:不同用户可以有相同的文件名;提高了检索速度;将一个用户与另一个用户有效隔开  
    • 缺点:不利于文件的共享
  • 树状目录结构
    • 每一级目录可以包含文件,也可以包含下一级目录。
    • 只有一个根目录,除根目录外,其余每个目录或者文件都有唯一的一个上级目录。(父目录、子目录)
    • 优点:文件的层次和隶属关系清晰;便于实现不同级别的存取保护和文件系统的动态装卸
    • 缺点:
      • 不便于共享(相比较而言)

路径

从树根(namespace)到节点的唯一表达

不同文件→文件可以同名,但路径名不同。(路径名不同 ≠ 文件不同)

文件可按照相对于工作目录的方式访问:

绝对路径(absolute):从根目录开始指定

相对路径(relative):从当前工作目录开始(./当前目录)(../上一级目录)

练习:当前目录/spell/mail/copy 请用绝对和相对路径表达红色箭头文件

prog: ./prog ; /spell/mail/prog

find:  .../programs/p/find ; /programs/p/find

all: /all ; /spell/mail/copy/all

first: ./prt/first ; /spell/mail/prt/first

无环图目录

在树型目录的基础上,允许多个目录项指向同一个数据文件或者目录文件,实现了目录或者数据文件的共享

一个文件或者目录在多个父目录中占有项目

目录结构不再是一颗树,而是一个无环图

实现共享文件:多个用户同时访问一个文件,可节约存储空间

数据复制:数据不一致

通过路径名共享:不灵活

链接:在多个目录中对要共享的文件建立相应的表项,一个文件或目录在目录树中多处出现(引用) 在外存上只有一份物理存储。

链接

硬链接:多个文件名链接到同一个索引结点,链接文件和被链接文件必须位于同一个文件系统中。

软链接:符号链接(symbolic link, shortcut) 特殊类型的文件,其内容是另一个目录或文件的路径。 无硬链接的限制,可跨盘,跨目录,甚至跨机器。建立符号链接文件,并不影响原文件→它们是独立的文件。 

缺点: 空间和时间开销更大;如果设置不当,上下级目录关系可能会形成环状

硬链接和软链接的比较

硬链接

只允许文件链接,不允许目录链接;

只能在同一个文件系统范围内进行,不允许跨文件系统。

删除文件时,如果还有其他链接链至该文件,则该文件不能被删除。

软链接

访问速度相对慢一些,但适用范围和灵活性要大一些。

允许目录链接,允许在不同的文件系统间进行链接,这两个文件系统可以在同一个计算机上,也可以在不同的计算机上。

被链接文件的删除和符号链接的删除是完全独立的

通用图目录

无环图目录结构中,加上允许子目录对上层目录的引用的条件

允许环存在:搜索子目录时要避免无穷地循环搜索——限制访问目录的次数来确定;释放孤立环(orphan cycle)——垃圾回收(garbage collection) 。


文件管理:磁盘管理

磁盘存储器

文件存储空间的分配单位是磁盘块而非字节;

文件系统必须记录存储空间的使用情况;

文件系统对存储空间进行分配和回收;

常用的磁盘空间的管理方式有:


空闲分区表

概念

将空闲分区登记在一张表中,一个分区对应一个表项,每个表项包含有空闲分区号、分区起始块号、分区长度等主要信息,按起始块序号排序

特点 

  • 实现简单
  • 将各空闲分区按照长度有序进行排列,能很快找到需要大小的空闲分区。 (排序规则不固定)
  • 当空闲分区分布较分散且数量较多时,空闲分区表将会很大。  

空闲分区链表

概念

利用空闲分区空间通过指针将各个空闲分区连接起来,并记载各空闲分区大小。

无空闲分区表的额外空间开销。

特点

回收由许多离散小分区组成的文件时,小分区链接到空闲分区链表中需要很长时间(按照某种规则,大小或者位置)。

类比可变分区管理


位示图

  • 一个向量,每位(bit)对应于磁盘中的一个块(block)
    • 空闲块:0,已使用块:1
  • 方便地查找一个或一组连续的空闲分区。
  • 位示图需要占用的存储空间大小
    • 磁盘容量(字节数)/ (8×数据块大小) Byte
  • 大位示图搜索将会降低文件系统的性能 

成组块链接法

  • 将所有空闲块每n块划分为一组,用索引表表示
  • 每组的第一块用来存放后一组中各块的块号和总块数
    • 各组间自然构成链表
  • 第一组的块号与总块数放在一个专用栈中:空闲盘块号栈
    • 栈计数count:栈中的空闲块数目
    • 栈中的元素是空闲块编号
  • 对块的分配和释放在栈中进行

分配方法

  • 查看栈中是否count==1,若不是,那么就弹出栈顶元素N(表示可用磁盘块号),分配出去,--count;若是,弹出栈顶元素N,把空闲块N中的内容读入到栈中;返回空闲块编号N。因为所分配的磁盘块号是栈中最后一个可用盘块号,由于在该盘块中存放了下一组的所有盘块号,于是要先将该块的内容读入栈中,然后才能将该块分配出去

释放方法

  • 被释放空闲块为编号N。查看是否栈已满,若不是,则N入栈,++count; 若是,则将栈(包括栈计数)写入到空闲块N,然后把N放入栈顶并置count为1。说明栈已满,须先将栈中所有盘块号复制到新回收的盘块中,再将新回收盘块的编号放到栈中,成为栈中第一个盘块

例题

解:92=41+50+1,所以是#400最下面的一个,也就是401。 


文件一致性:盘块

链接数一致性检查

每个目录项都含有一个索引结点号

共享文件的索引结点号会在目录中出现多次

若某文件被共享(硬链接)N次,其索引结点号会在目录中出现N次;

另一方面,该共享文件索引结点中的链接计数count,用来指出共享本文件的引用数。

正常情况下这两个数据应该一致

数据块使用数组和空闲数组互补


文件执行

数据结构

用户打开文件表:每个进程一个,记录用户打开文件 

系统文件打开表:整个系统一张:放在内存,用于保存已打开文件的FCB文件号、共享计数(打开共享)、读写位置、打开模式、修改标志等;指向内存inode(也有共享计数)

内存inode表:操作文件时要将磁盘inode加载到内存中;访问速度;共享控制(计数)

三张表之间的关系

文件共享

不同进程独立访问

同进程复制fd:dup() / dup2() / fcntl()

跨进程复制fd:fork() 

fork()可以共享文件,但是fork()以后打开文件则不共享 

文件操作

执行过程

create:实质是建立FCB,返回一个文件描述符

open:把FCB送到内存,创建用户、系统打开文件表项,建立与内存inode三者关联,返回文件描述符

close:缓存数据写回磁盘;清理用户文件打开表;清理系统文件打开表;清理内存inode表


虚拟文件系统 VFS

支持面向对象式的文件系统实现——多态

用户程序:统一接口

底层支持:不同文件系统

VFS接口:API,而非具体的文件系统实现

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

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

相关文章

CAN通信笔记-位时间、Tq及采样点同步

本文框架1.前言2. 位时间2.1 位时间定义2.2 位时间计算3. Tq3.1 Tq的计算3.1.1 举个例子3.2 位时间与Tq的换算4. 采样点同步4.1 硬同步4.2 重同步4.2.1 延长PBS1的重同步4.2.2 缩短PBS2的重同步1.前言 本篇记录些关于CAN的一些学习笔记&#xff0c;说实话CAN协议发展的已经非常…

【项目设计】—— 负载均衡式在线OJ平台

目录 一、项目的相关背景 二、所用技术栈和开发环境 三、项目的宏观结构 四、compile_server模块设计 1. 编译服务&#xff08;compiler模块&#xff09; 2. 运行服务&#xff08;runner模块&#xff09; 3. 编译并运行服务&#xff08;compile_run模块&#xff09; 4…

MicroBlaze系列教程(6):AXI_IIC的使用(24C04 EEPROM)

文章目录 @[toc]AXI_IIC简介MicroBlaze硬件配置常用函数使用示例波形实测参考资料工程下载本文是Xilinx MicroBlaze系列教程的第6篇文章。 AXI_IIC简介 一般情况下,使用FPGA实现I2C协议主要有两种方式:一种是基于Verilog实现起始位、停止位、ACK产生和判断、数据的发送和接收…

1.HTTP及Template介绍

目录 来源 介绍 模板与渲染 Go语言的模板引擎 模板引擎的使用 定义模板文件 解析模板文件 模板渲染 基本示例 模板语法 {{.}} 注释 pipeline 变量 移除空格 条件判断 range with 预定义函数 比较函数 自定义函数 模板的嵌套template block 修改默认的标…

加油站会员管理小程序实战开发教程13

我们上一篇讲解了会员注册的功能,本篇我们介绍一下会员开卡的功能。 会员注册之后,可以进行开卡的动作。一个会员可以有多张会员卡,在微搭中用来描述这种一对多的关系的,我们用关联关系来表达。 登录微搭的控制台,点击数据模型,点击新建数据模型 输入数据源的名称会员卡…

基于 Debain11 构建 asp.net core 6.x 的基础运行时镜像

基于 Debain11 构建 asp.net core 6.x 的基础运行时镜像Linux 环境说明Debian 简介Debian 发行版本关于 Debian 11Linux 常用基础工具Dockerfile 中 RUN 指令RUN 语法格式RUN 语义说明编写 Dockerfile 构建 Runtime 基础镜像ASP.NET Core Runtime 基础镜像Dockerfile 编写Windo…

sklearn主成分分析PCA

文章目录基本原理PCA类图像降维与恢复基本原理 PCA&#xff0c;即主成分分析(Principal components analysis)&#xff0c;顾名思义就是把矩阵分解成简单的组分进行研究&#xff0c;而拆解矩阵的主要工具是线性变换&#xff0c;具体形式则是奇异值分解。 设有mmm个nnn维样本X…

【面试题】数组reduce的用法

1. 对数组求和 传统的数组求和方式需要使用forEach循环遍历数组中的每一个元素&#xff0c;然后累加。然而这种方式需要新增一个用于存储累加结果的变量。 function sum(arr) {let res 0arr.forEach(element > res res element);return res }还可以通过数组的reduce方法…

算法笔记(九)—— 暴力递归

暴力递归&#xff08;尝试&#xff09; 1. 将问题转化为规模缩小了的同类问题子问题 2. 有明确的不需要的继续递归的条件 3. 有当得到子问题结果之后的决策过程 4. 不记录每一个子问题的解 Question&#xff1a;经典汉诺塔问题 1. 理解清楚&#xff0c;基础三个圆盘的移动…

2.5|iot|嵌入式Linux系统开发与应用|第4章:Linux外壳shell脚本程序编程

1.shell基础 Shell是Linux操作系统内核的外壳&#xff0c;它为用户提供使用操作系统的命令接口。 用户在提示符下输入的每个命令都由shell先解释然后发给Linux内核&#xff0c;所以Linux中的命令通称为shell命令。 通常我们使用shell来使用Linux操作系统。Linux系统的shell是…

高斯课堂 计算机网络(上)

第一章、概述 0、第一章导图 1、计算机网络概述 &#xff08;1&#xff09;计算机网络发展历史1&#xff1a;ARPANET->互联网 小写internet是一个宽泛的概念&#xff0c;指的就是互联网 大写Internet是一个专有名词&#xff0c;指的就是我们现在所使用的这样一个全球最大的…

Python(1)变量的命名规则

目录 1.变量的命名原则 3.内置函数尽量不要做变量 4.删除变量和垃圾回收机制 5.结语 参考资料 1.变量的命名原则 ①由英文字母、_(下划线)、或中文开头 ②变量名称只能由英文字母、数字、下画线或中文字所组成。 ③英文字母大小写不相同 实例&#xff1a; 爱_aiA1 print(…

2023VNCTF的两道(暂时)

from http://v2ish1yan.top/2023/02/19/%E6%AF%94%E8%B5%9Bwp/2023vnctf/ 比赛的时候在回学校的路上&#xff0c;所以没有打&#xff0c;听说质量挺高&#xff0c;赛后做一下 象棋王子 一个普通的js游戏&#xff0c;玩过关了就给flag&#xff0c;所以flag肯定在前端源码里 这…

设计模式之观察者模式与访问者模式详解和应用

目录1.访问者模式详解1.1 访问者模式的定义1.1.1 访问者模式在生活中的体现1.1.2 访问者模式的适用场景1.2 访问者模式的通用实现1.3 访问者模式的使用案例之KPI考核1.3.1 类图设计1.3.2 代码实现1.4 访问者模式扩展---分派1.4.1 java中静态分派示例代码1.4.2 java中动态分派1.…

C语言 基于Ncurse库的贪吃蛇游戏项目

为了敲键盘及时响应&#xff0c;需要用到ncurse 测试代码&#xff1a; ncurse1.c /* ncurse1.c */ #include <curses.h> //ncurse的头文件。int main() {char c;int i 0;//ncurse界面的初始化函数。initscr(); for(i0;i<2;i){c getch();printw("\n");//…

一起学 pixijs(2):修改图形属性

大家好&#xff0c;我是前端西瓜哥。 我们做动画、游戏、编辑器&#xff0c;需要根据用户的交互等操作&#xff0c;去实时地改变图形的属性&#xff0c;比如位置&#xff0c;颜色等信息。今天西瓜哥带大家来看看在 pixijs 怎么修改图形的属性。 因为 pixijs 的底层维护了图形…

2023年美赛C题Wordle预测问题三、四建模及Python代码详细讲解

更新时间:2023-2-19 16:30 相关链接 &#xff08;1&#xff09;2023年美赛C题Wordle预测问题一建模及Python代码详细讲解 &#xff08;2&#xff09;2023年美赛C题Wordle预测问题二建模及Python代码详细讲解 &#xff08;3&#xff09;2023年美赛C题Wordle预测问题三、四建模…

Android 基础知识4-2.8 TableLayout(表格布局)详解

一、TableLayout的概述 表格布局是以行数和列数来确定位置进行排列。就像一间教室&#xff0c;确定好行数与列数就能让同学有序入座。 注意&#xff1a;我们需要先添加<TableRow容器&#xff0c;每添加一个就会多一行&#xff0c;然后再往<TableRow容器中添加其它组件。…

研报精选230219

目录 【行业230219山西证券】煤炭行业周报&#xff1a;复工改善&#xff0c;港口价格企稳反弹【行业230219中航证券】农林牧渔行业周观点&#xff1a;一号文件落地&#xff0c;生物育种超势不改【行业230219华西证券】汽车行业周报&#xff1a;新车密集上市 自主转型提速【个股…