4-1文件管理-文件系统基础

news2025/1/21 18:42:16

文章目录

  • 一.文件的基本概念
  • 二.文件的逻辑结构
    • (一)无结构文件/流式文件
    • (二)有结构文件
      • 1.顺序文件
      • 2.索引文件
      • 3.索引顺序文件
      • 4.直接文件/散列文件
  • 三.文件目录
  • 四.文件的物理结构/文件分配方式
    • 1.连续分配
    • 2.链接分配
    • 3.索引分配
  • 五.文件存储空间管理
    • 1.空闲表法
    • 2.空闲链表法
    • 3.位示图法
    • 4.成组链接法
  • 六.文件共享
    • 1.硬链接
    • 2.软链接
  • 七.文件保护

一.文件的基本概念

1.文件
文件是以计算机硬盘为载体的存储在计算机上的信息集合,可以是文本文档、图片、程序等。系统运行时,计算机以进程为基本单位进行资源的调度和分配。在用户输入输出时,以文件为基本单位。

2.文件系统
操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。文件系统由三部分组成:与文件系统有关的软件、被管理文件及实施文件管理所需的数据结构。文件系统用于实现文件的权限访问,修改,查询和保存等功能。

  • 文件系统要完成哪些功能?
    ①对于用户而言,文件系统最主要的功能是实现对文件的基本操作,让用户可以按名存储和查找文件,组织成合适的结构,并应当具有基本的文件共享和文件保护功能。文件系统根据一定的格式将用户的文件存放到文件存储器中适当的地方,当用户需要使用文件时,系统根据用户所给的文件名就能够从文件存储器中找到所需要的文件。因此对于用户来说,操作系统中引入文件系统的目的是:实现对文件的按名存取
    ②对于操作系统本身而言,文件系统负责对文件的存储空间进行组织、分配,负责文件的存储并对存入文件进行保护、检索。文件系统还需要管理与磁盘的信息交换,完成文件逻辑结构和物理结构上的变换,组织文件在磁盘上的存放,采取好的文件排放顺序和磁盘调度方法以提升整个系统的性能

3.文件的结构
(1)数据项:数据项是文件系统中最低级的数据组织形式
①基本数据项:用于描述一个对象的某种属性的一个值
②组合数据项:多个基本数据项组成
(2)记录:一组数据项的集合,用于描述一个对象在某方面的属性
(3)文件:创建者所定义的一组相关信息的集合
①有结构文件:相似的记录组成(记录式文件)(如数据库表Excel)
②无结构式文件:字符流组成(流式文件)(如文本文件txt)
在这里插入图片描述
4.文件的属性
(1)名称:同一目录下不允许有重名文件,由创建文件的用户决定文件名,主要是为了方便用户找到文件。文件名称以容易读取的形式保存。
(2)标识符:不同目录下允许文件重名,因此通过名称无法唯一确定一个文件。标识符文件的唯一标签,通常为数字,是对人不可读的一种用于区分各个文件的内部名称。
(3)类型:指明文件类型。如.txt
(4)位置:文件的存放路径(用户可见)、在外存中的地址(用户不可见)
(5)大小:文件当前的大小,包含文件允许的最大值
(6)保护:对文件进行保护的访问控制信息
(7)时间、日期和用户标识:文件创建、修改和上次访问的相关信息,用于保护和跟踪文件的使用

5.文件的基本操作/操作系统向上提供哪些功能
(1)创建文件(create系统调用)
①在外存找到文件所需的空间
②根据文件存放路径的信息找到该目录对应的目录文件,在目录中创建该文件对应的目录项。目录项中包含了文件名、文件在外存中的存放位置等信息

(2)写文件(write系统调用)
需要指明是哪个文件(用编号即可指定,不需要用文件名)、写出多少数据、写回外存的数据放在内存中的什么位置。操作系统在处理write系统调用时,会从用户指定的内存区域中,将指定大小的数据写回写指针指向外存

(3)读文件(read系统调用)
需要指明是哪个文件(用编号即可指定,不需要用文件名)、读入多少数据、读入的数据要放在内存中的什么位置。操作系统在处理read系统调用时,会从读指针指向的外存中,将用户指定大小的数据读入用户指定的内存区域中

(4)文件重定位(文件寻址)
按照某种条件搜索目录,将当前文件位置设为定值。并且不会读、写文件

(5)删除文件(delete系统调用)
①根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项
②根据该目录项记录的文件在外存的存放位置、文件大小等信息,回收文件占用的磁盘块
③从目录表中删除文件对应的目录项

(6)截断文件
允许文件的所有属性不变,并删除文件内容,即将其长度设为0并释放其空间

(7)打开文件(open系统调用)
首次使用文件,会调用open请求指明文件的属性(包括其物理位置)从外存复制到内存打开文件表的一个表目中,并将该表目的编号(索引)/文件描述符返回给用户。

操作open会根据文件名搜索目录,并将目录条目复制到打开文件。调用open请求(创建、只读、读写、添加等)得到允许,进程就可以打开文件,open会返回一个指向打开文件表中的一个条目的指针。通过使用该指针进行I/O操作,简化步骤并节省资源。

  • 打开文件操作的主要工作是:把指定文件的目录复制到内存指定的区域,而不是将文件内容复制到主存。找到指定文件目录是打开文件之前的操作。
  • 打开文件实际上主要做了哪些事情?
    ①根据文件存放路径找到相应的目录文件,从目录中找到文件名对应的目录项,并检查该用户是否有指定的操作权限
    ②将目录项复制到内存中的“打开文件表”中。并将对应表目的编号返回给用户。之后用户使用打开文件表的编号来指明要操作的文件
    在这里插入图片描述
    系统打开文件表和用户的打开文件表
    在这里插入图片描述

(8)关闭文件(close系统调用)
①将进程的打开文件表相应表项删除
②回收分配给该文件的内存空间等资源
③系统打开文件表的打开计数器count减1,若count=0则删除对应表项

6.当一个文件系统含有多级目录时,每访问一个文件,都要使用从树根开始到树叶为止、包括各中间结点名的全路径名。当前目录又称工作目录,进程对各个文件的访问都相对于当前目录进行,而不需要从根目录一层一层地检索。因此设置当前工作目录是为了加快文件的检索速度。而文件的读/写速度取决于磁盘的性能

在这里插入图片描述

二.文件的逻辑结构

在这里插入图片描述

(一)无结构文件/流式文件

文件内部的数据是一系列二进制流或字符流组成。如txt文件

无结构文件是最简单的文件组织形式,由于其没有结构,所以只能采用更穷举搜索。管理简单,方便用户对其操作。

(二)有结构文件

由一组相似的记录组成,每条记录由若干数据项组成。如数据库表,每一条记录都有一个数据项作为关键字。

在这里插入图片描述

1.顺序文件

文件中的记录一个接一个地顺序排列,记录通常是定长的,可以顺序存储或以链表形式存储,在访问时需要顺序搜索文件。

对于链式存储和顺序存储可变长记录,都无法实现随机存取,需要从第一个记录往后依次查找。

定长记录的顺序文件,若物理上采用顺序存储,则可实现随机存取;若能再保证记录的顺序结构(按照关键字顺序排列),则可实现快速检索(根据关键字快速找到对应记录);若不能保证记录的顺序结构(如采用串结构),则无法快速找到某关键字对应的记录。

一般来说,“顺序文件”指的是物理上顺序存储的顺序文件,即可以随机存取

2.索引文件

建立一张索引表,每个记录对应一个表项,各记录不用保持顺序,增加删除容易,支持随机存取,但可能占用更多空间。

索引表本身是定长记录的顺序文件,支持随机访问。因此可以快速找到第i个记录对应的索引项。可将关键字作为索引号内容,若按关键字顺序排列,则还可以支持按照关键字折半查找。

在这里插入图片描述

3.索引顺序文件

是顺序和索引两种组织形式的结合,将记录分组,每组对应一个索引表项。索引文件将顺序文件中的所有记录分成若干组,为顺序文件建立起一张索引表,在索引表中为每组中的第一条记录建立一个索引项,其中含有该记录得关键字值和指向该记录的指针。

索引顺序文件提高了查找效率,但是索引表也占用了存储空间

在这里插入图片描述

多级索引顺序文件:为了进一步提高检索效率,可以为顺序文件建立多级索引表
在这里插入图片描述

4.直接文件/散列文件

给定记录的键值或通过散列函数转换的键值直接决定记录的物理地址。这种映射结构不同于顺序文件或索引文件,没有顺序的特性。散列文件有很高的存取速度,但是会引起冲突,即不同关键字的散列函数值相同。

三.文件目录

1.文件控制快FCB
为了实现“按名存取”,在文件系统中为每个文件设置用于描述和控制文件的数据结构,称之为文件控制块(FCB)。FCB是用来存放控制文件需要的各种信息的数据结构。

一个文件的目录项应该包括哪些信息?
(1)基本信息:文件名、文件的物理位置、文件的逻辑/物理结构
(2)存储控制信息:文件的存取权限
(3)使用信息:文件的建立/修改时间

2.文件目录与目录项
(1)文件目录:FCB的有序结合
(2)目录项:为了创建一个新文件,系统将分配一个FCB并存放在文件目录中,成为目录项

  • 文件系统在创建一个文件时,为它建立一个文件目录项。一个文件对应一个FCB,一个文件目录项就是一个FCB。

3.文件目录的作用
实现按名存取,提高对目录检索的速度,文件重名、文件共享、访问限制

4.需要对目录进行哪些操作
(1)搜索:当用户要使用一个文件时,系统要根据文件名搜索目录,找到该文件对应的目录项
(2)创建文件:创建一个新文件时,需要在其所属的目录中增加一个目录项
(3)删除文件:当删除一个文件时,需要在目录中删除相应的目录项
(4)显示目录:用户可以请求显示目录的内容,如显示该目录中的所有文件及相应属性
(5)修改目录:某些文件属性保存在目录中,因此这些属性变化时需要修改相应的目录项(如:文件重命名)

5.目录结构
(1)单级目录结构
单级目录实现了“按名存取”,但是不允许文件重名。单级目录结构不适用于多用户操作系统。
在这里插入图片描述

(2)两级目录结构
分为主文件目录和用户文件目录。允许不同用户的文件重名、实现访问限制。但两级目录结构依然缺乏灵活性,用户不能对自己的文件进行分类

在这里插入图片描述

(3)多级目录结构/树形目录结构
允许不同目录下的文件可以重名

  • 从根目录出发的路径称为绝对路径
  • 相对路径就是指由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。引入“当前目录”和“相对路径”后,磁盘I/O的次数减少了,这就提升了访问文件的效率

在这里插入图片描述

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够更有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。

(4)无环图目录结构
在树形目录结构的基础上,增加一些指向同一节点的有向边,使整个目录成为一个有向无环图。可以用不同的文件名指向同一个文件,甚至可以指向同一个目录(共享同一目录下的所有内容)。因此,可以更方便地实现多个用户间的文件共享

在删除时,需要为每个共享结点设置一个共享计数器,用于记录此时有多少个地方在共享该结点。用户提出删除结点的请求时,只是删除该用户的FCB、并使共享计数器减1,并不会直接删除共享结点。只有共享计数器减为0时,才能删除结点。

在这里插入图片描述
6.索引结点
在查找各级目录的过程中只需要用到“文件名”这个信息,只有文件名匹配时,才需要读出文件的其他信息。因此可以把除文件名外的其他信息放在索引结点中,每一个文件都会有一个唯一的索引结点。目录表占用的空间减小,加快了查找一个文件的效率。

在这里插入图片描述
当找到文件名对应的目录项时,才需要将索引结点调入内存,索引结点中记录了文件的各种信息,包括文件在外存中的存放位置,根据“存放位置”即可找到文件。

存放在外存中的索引结点称为“磁盘索引结点”,当索引结点放入内存后称为“内存索引结点”。相比之下内存索引结点中需要增加一些信息,比如:文件是否被修改、此时有几个进程正在访问该文件等。

四.文件的物理结构/文件分配方式

在这里插入图片描述
类似于内存分页,磁盘中的存储单元也会被分为一个个“块/磁盘块/物理块”。很多操作系统中,磁盘块的大小与内存块、页面的大小相同。

文件的逻辑地址可以表示为(逻辑块号,块内地址)的形式

在这里插入图片描述

操作系统为文件分配存储空间都是以块为单位的
在这里插入图片描述

用户使用逻辑块号和块内地址操作文件,操作系统负责将其转化为文件块实际存放的物理块号和块内地址。
(逻辑块号,块内地址)→(物理块号,块内地址)

1.连续分配

要求每个文件在磁盘上占有一组连续的块

  • 优点:支持顺序访问和直接访问、实现简单、存取速度快
  • 缺点:不方便文件拓展,存储空间利用率低,会产生磁盘碎片

在这里插入图片描述
在文件目录表中继续文件起始块号和长度

在这里插入图片描述

当逻辑块号<长度时,物理块号=起始块号+逻辑块号

2.链接分配

链接分配采用离散分配的方式,可以为文件分配离散的磁盘块,分为隐式链接和显示链接两种。

(1)隐式链接
除文件的最后一个盘块之外,每个盘块中都存有指向下一个盘块的指针。文件目录包括文件第一块的指针和最后一块的指针。这些指针对用户是透明的。

  • 优点:方便进行文件拓展,不会产生碎片问题,外存利用率高
  • 缺点:只支持顺序访问,查找效率低,指向下一盘块的指针也需要耗费少量的存储空间(访问i号逻辑块,需要依次读入0~i-1号逻辑块,需要i+1次磁盘I/O)

目录中记录了文件存放的起始块号和结束块号/文件长度
在这里插入图片描述

(2)显示链接
把用于链接文件各物理块的指针显示地存放在一张表中,即文件分配表。一个磁盘只会建立一张文件分配表,开机时文件分配表被放入内存,并常驻内存。

  • 优点:方便进行文件拓展、不会有碎片问题、外存利用率高、支持随机访问
  • 缺点:文件分配表需要占用一定的存储空间
    在这里插入图片描述

目录中只需要记录文件的起始块号

在这里插入图片描述

用户给出要访问的逻辑块号i,操作系统找到该文件对应的目录项。从目录项中找到起始块号,若i>0,则查询内存中的文件分配表FAT,往后找到i号逻辑块对应的物理块号。

如:某用户要访问文件aaa的2号逻辑块,操作系统找到文件aaa的0号逻辑块存放的物理块号2,系统查询内存中的文件分配表,0号逻辑块的下一块(1号逻辑块)存放在5号物理块中。1号逻辑块的下一块(2号逻辑块)存放在0号物理块中,因此aaa文件的2号逻辑块存放的物理块号为0。

通过FAT可以找到i号逻辑块的存放地址,而不需要逐个访问0~i-1号逻辑块,因此支持随机访问。逻辑块号转换成物理块号的过程不需要读磁盘操作,使得访问速度快得多。

在这里插入图片描述

3.索引分配

索引表存放的磁盘块称为索引块。文件数据存放的磁盘块称为数据块。

如7号磁盘块是文件aaa的索引块
在这里插入图片描述

7号索引块中存放了文件aaa的索引表
2、5、13、9是文件aaa的数据块

在这里插入图片描述
一个文件对应一张索引表,而文件分配表FAT是一个磁盘对应一张。索引表中的逻辑块号是隐含的。

若用户访问逻辑块号i,系统找到文件对应的目录项,找到文件索引块的块号,从索引块中读出文件索引表的内容,通过逻辑块号查询索引表找到对应的物理块号。

索引分配方式支持随机访问和文件拓展,但索引表需要占用存储空间

(1)链接方案
如果索引表太大,一个索引块装不下,可以将多个索引块链接起来存放。

缺点:若文件很大,会导致索引表过长,需要将多个索引块链接起来,会导致磁盘I/O次数过多,查找效率低下(访问i,需要依次读入0~i-1)

文件的FCB中只需要记录起始索引块号

在这里插入图片描述

(2)多层索引
第一层索引块指向第二层索引块,以此类推。各层索引表的大小不能超过一个磁盘块

缺点:即使是小文件,k层索引结构访问一个数据块依然需要k+1次读磁盘

如:要访问1026号逻辑块,⌊1026/256⌋=4,1026%256=2
从一级索引表找到4号索引项对应的物理块,将其对应的二级索引表调入内存,再查询二级索引表的2号表项即可找到1026号逻辑块对应存放的磁盘块号。一共进行了3次磁盘I/O(一级索引表、二级索引表、数据块)。

n层索引,顶级索引表未调入内存时,共需要n+1次读磁盘操作。

在这里插入图片描述

(3)混合索引
多种索引方式的结合,如:在一个顶级索引表中包含直接地址索引(直接指向数据块)、一级间接索引(指向单层索引表)、两级间接索引(指向两层索引表)

优点:即使是小文件,访问一个数据块所需的读磁盘数更少

若顶级索引表还没读入内存
访问0~ 7号逻辑块:两次读磁盘
访问8~ 263:三次读磁盘
访问264~ 65799:四次读磁盘

这种结构的索引支持的最大文件长度=1024B×(8+256+256×256)=65800KB
在这里插入图片描述
总结
在这里插入图片描述

  • 文件的逻辑结构和物理结构有何区别?单个文件的逻辑结构和物理结构之间是否存在着某些制约关系?
    文件的逻辑结构是用户可见的结构,而物理结构是文件在存储器上的组织结构。它和文件的存取方法及辅存设备的特性等都有着密切的联系。单个文件的逻辑结构和物理结构之间虽无明显的制约或关联关系,但如果物理结构选择不慎,也很难体现出逻辑结构的特点。
  • 简述文件的外存分配中,连续分配、链接分配和索引分配各自的主要优缺点
    (1)连续分配方式的优点是可以随机访问,访问速度快;缺点是要求有连续的存储空间,容易产生碎片,降低磁盘空间利用率,并且不利于文件的增长扩充
    (2)链接分配方式的优点是不要求连续的存储空间,能有效地利用磁盘空间,并且有利于扩充文件;缺点是只适合顺序访问,不适合随机访问,另外,链接指针占用一定的空间,降低了存储效率,可靠性也较差
    (3)索引分配的优点是既支持顺序访问也支持随机访问,查找效率高,便于文件删除;缺点是索引表会占用一定的存储空间

五.文件存储空间管理

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

在这里插入图片描述

1.空闲表法

系统为外存上的所有空闲区建立一张空闲盘块表,每个空闲区对应于一个空闲表项,其中包括表项序号、该空闲区第一个盘块号、该区的空闲盘块数等信息。再将所有空闲区按其盘块号递增的次序排列
在这里插入图片描述
为一个文件分配连续的存储空间,可采用首次适应、最佳适应、最坏适应等算法来决定要为文件分配哪个区间。

2.空闲链表法

(1)空闲盘块链
将磁盘上的所有空闲空间以盘块的单位拉成一条链。分配和回收过程简单,但为一个文件分配盘块时可能要重复多次操作。

操作系统保存着链头、链尾指针。若某文件申请K个盘块,则从链头开始依次摘下K个盘块分配,并修改空闲链的链头指针。回收的盘块依次挂到链尾,并修改空闲链的链尾指针。

在这里插入图片描述

(2)空闲盘区链
将磁盘上的所有空闲盘区拉成一条链。每个盘区中的第一个盘块内含有用于指示下一个空闲盘区的指针和本盘区大小的信息。离散分配、连续分配都适用。为一个文件分配多个盘块时效率更高

操作系统保存着链头、链尾指针。若某文件申请K个盘块,则可以采用首次适应、最佳适应等算法,从链头开始检索,按照算法规则找到一个大小符合要求的空闲盘区,分配给文件。若没有合适的连续空闲块,也可以将不同盘区的盘块同时分配给一个文件,注意分配后可能要修改相应的链指针、盘区大小等数据。若回收区和某个空闲盘区相邻,则需要将回收区合并到空闲盘区中。若回收区没有和任何空闲区相邻,将回收区作为单独的一个空闲盘区挂到链尾。

在这里插入图片描述

3.位示图法

利用二进制的一位来表示磁盘中一个盘块的使用情况,磁盘上所有的盘块都有一个二进制位与之对应(“0”代表盘块空闲,“1”代表盘块已分配。顺序扫描找到0的二进制位,转换成与之对应的盘块号,修改位示图)。连续分配、离散分配都适用。

(字号,位号)对应一个盘块号,也可用(行号,列号)对应一个盘块号。当字号位号从0开始时,(字号,位号)=(i,j)的二进制位对应的盘块号b=ni+j。b号盘块对应的字号i=⌊b/n⌋,位号j=b%n
在这里插入图片描述

4.成组链接法

把顺序的n个空闲扇区地址保存在第一个空闲扇区内,其后一个空闲扇区内则保存另一顺序空闲扇区的地址,如此继续,直至所有空闲扇区均予以链接。

文件卷的目录区中专门用一个磁盘块作为“超级块”,当系统启动时需要将超级块读入内存。并且要保证内存与外存中的“超级块”数据一致。
在这里插入图片描述
超级块记录了下一组空闲间盘块数,以及这些盘块的盘块号。通过这些盘块号就可以找到下一个分组的各个盘块。

300号磁盘块做为该组的第一个磁盘块,还需要记录下一组空闲盘块的信息。
在这里插入图片描述
(1)分配
若需要1个空闲块
①检查第一个分组的块数是否足够。1<100,因此是足够的。
②分配第一个分组中的1个空闲块,并修改相应数据。将201号块分出,修改超级块“下一组空闲块数”为99
在这里插入图片描述
若需要100个空闲块
①检查第一个分组的块数是否足够。1=100,因此是足够的。
②由于300号块内存放了再下一组的信息,因此300号块的数据需要复制到超级块中。
③分配第一个分组中的100个空闲块,并修改相应数据。
在这里插入图片描述
(2)回收
①假设每个分组最多为100个空闲块,此时第一个分组已有99个块,还要再回收一块。
在这里插入图片描述
如:可以将201号块插入第一个分组中,修改超级块“下一组空闲盘块数”为100在这里插入图片描述
②假设每个分组最多为100个空闲块,此时第一个分组已有100个块,还要再回收一块。

新增一个分组,将超级块内存复制过来
在这里插入图片描述
为新块设置指针,指向下一个分组的链接指针
在这里插入图片描述
修改超级块指针,指向第一个块(新块),并修改相应数据
在这里插入图片描述

六.文件共享

在这里插入图片描述

1.硬链接

各个用户的目录指向同一索引结点,索引节点中设置一个链接计数变量count用于表示链接到本索引结点上的用户目录项数。
在这里插入图片描述

2.软链接

等同于Windows系统下的快捷方式,仅仅包括所含链接文件的路径名字

七.文件保护

为了防止文件共享导致文件被破坏或者未经允许修改文件,文件系统必须控制用户对文件的存取,解决对文件的读、写、执行的许可问题。

在这里插入图片描述
(1)口令保护
口令一般存放在文件对应的FCB或索引结点中。用户访问文件前需要先输入“口令”,操作系统会将用户提供的口令与FCB中存储的口令进行对比,如果正确,则允许该用户访问文件。

优点:保存口令的空间开销不多,验证口令的时间开销也很小
缺点:正确的“口令”存放在系统内部,不够安全

(2)加密保护
使用某个“密码”对文件进行加密,在访问文件时需要提供正确的“密码”才能对文件进行正确的解密。

优点:保密性强,不需要在系统中存储“密码”
缺点:编码/译码,或者说加密/解密要花费一定时间

在这里插入图片描述

3.访问控制
在每个文件的FCB(或索引结点)中增加一个访问控制列表,该表中记录了各个用户可以对该文件执行哪些操作。
在这里插入图片描述

精简的访问列表:以“组”为单位,标记各“组”用户可以对文件执行哪些操作。当某用户想要访问文件时,系统会检查该用户所属的分组是否有相应的访问权限。
在这里插入图片描述

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

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

相关文章

数据结构与算法基础(王卓)(8)附:关于new的使用方法详解

part 1&#xff1a; C中new的用法&#xff08;不过就是&#xff09;如下&#xff08;几种用法&#xff09;&#xff1a; 1&#xff1a; new<数据类型> 分配&#xff1a; 指定类型的&#xff0c;大小为1的&#xff0c;内存空间&#xff1b; int *i new int;//注意&am…

13_3、Java的IO流之节点流的使用

一、FileReader和FileWriter的使用1、数据读入操作说明&#xff1a;①read():返回读入的第一个字符&#xff0c;当读到文档末尾&#xff0c;返回-1②异常的处理&#xff1a;为了保证流资源一定会执行关闭操作&#xff0c;要对异常进行try-catch-finally处理③对于读入操作&…

【PWA学习】1. 初识 PWA

什么是PWA PWA(Progressive Web Apps&#xff0c;渐进式 Web 应用)运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序。这些应用无处不在、功能丰富&#xff0c;使其具有与原生应用相同的用户体验优势 我们需要理解的是&#xff0c;PWA 不是某一项技术&am…

MAC(m1)-VMWare Fusion CentOS8设置静态IP、SSH连接

在使用虚拟机的时候&#xff0c;默认情况下使用的DHCP协议&#xff08;根据网段自动分配ip&#xff09;分配的动态IP地址&#xff0c; 使得每次打开虚拟机后当前的IP地址都会发生变化&#xff0c;这样不方便管理。为了能够给当前虚拟机设置 一个静态IP地址&#xff0c;方便后…

Linux的开发工具——软件包管理器 yum

目录 1 查看 2 安装 3 卸载 4 常用软件 5 扩展细节 5.1 yum源 什么是软件包 在Linux下安装软件, 一个通常的办法是下载到程序的源代码, 并进行编译, 得到可执行程序. 但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好, 做成软件包(可以理解成window…

【自学Python】Python标识符和保留字

Python标识符 Python标识符教程 Python 对各种 变量、方法、函数等命名时使用的字符序列称为标识符。 也可以说凡是自己可以起名字的地方都叫标识符&#xff0c;简单地理解&#xff0c;标识符就是一个名字&#xff0c;它的主要作用就是作为变量、函数、类、模块以及其他对象…

柱承重式钢模块建筑结构体系适用高度研究

作者&#xff1a;陈志华 冯云鹏 刘佳迪 刘洋 钟旭 模块建筑网 导语 摘要&#xff1a;模块建筑作为一种新兴的建筑体系&#xff0c;具有较高的预制化和装配化程度&#xff0c;符合建筑工业化以及绿色建筑的发展要求&#xff0c;但国内的模块建筑大多只应用于低多层&#xff0c;…

[付源码+数据集]Github星标上万,23 个机器学习项目汇总

在本文中分享了涵盖面向初学者&#xff0c;中级专家和专家的23种机器学习项目创意&#xff0c;以获取有关该增长技术的真实经验。这些机器学习项目构想将帮助你了解在职业生涯中取得成功、和当下就业所需的所有实践。 通过项目学习是你短期内能做的最好投资&#xff0c;这些项…

.NET 6结合SkiaSharp实现拼接验证码功能

从最初的滑动验证码&#xff0c;到实现旋转验证码&#xff01;不光实践了SkiaSharp的使用&#xff0c;也学到了很多东西。在网上看到一个拼接验证码功能&#xff0c;手痒了起来&#xff0c;结合前面实现的两种验证码&#xff0c;我们来学习一下如何实现拼接验证码功能&#xff…

流量路由技术解析

作者&#xff1a;十眠 流量路由&#xff0c;顾名思义就是将具有某些属性特征的流量&#xff0c;路由到指定的目标。流量路由是流量治理中重要的一环&#xff0c;本节内容将会介绍流量路由常见的场景、流量路由技术的原理以及实现。 流量路由的业务场景 我们可以基于流量路由…

aws sam 本地测试部署 lambda 和 apigateway

使用sam框架可以在部署serverless应用之前&#xff0c;在本地调试application是否符合预期 sam框架安装 serverless应用是lambda函数&#xff0c;事件源和其他资源的组合 使用sam能够基于docker容器在本地测试lambda函数 安装sam wget https://github.com/aws/aws-sam-cli…

ArcGIS基础实验操作100例--实验77按要素分区统计路网

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 高级编辑篇--实验77 按要素分区统计路网 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;…

ART-SLAM: Accurate Real-Time 6DoF LiDAR SLAM

IEEE Robotics and Automation Letters 意大利米兰理工学院 Abstract 地面车辆实时六自由度姿态估计&#xff0c;由于自动驾驶和三维建图等诸多应用&#xff0c;是机器人技术中一个相关和被研究广泛的课题。虽然有些系统已经存在&#xff0c;但它们要么不够准确&#xff0c;要…

Qt之标准对话框(QMessageBox、QFileDialog)

文章目录前言如何学习标准对话框QMessageBox消息对话框应用属性实操QFileDialog文件对话框应用属性实操前言 Qt为开发者提供了一些可复用的对话框&#xff0c;他对我们的开发是很重要的。下面我们就来学习 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考…

无监控,不运维!深入浅出介绍ChengYing监控设计和使用

监控系统俗称「第三只眼」&#xff0c;几乎是我们每天都会打交道的系统&#xff0c;它也一直是IT系统中的核心组成部分&#xff0c;负责问题的发现以及辅助性的定位。 ChengYing作为一站式全自动化全生命周期大数据平台运维管家&#xff0c;自然也提供大数据产品的监控服务。这…

力扣sql基础篇(二)

力扣sql基础篇(二) 1 每月交易I 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 # sum函数如果需要筛选,可以考虑在里面嵌套if函数 SELECT DATE_FORMAT(trans_date,"%Y-%m") month,country,count(*) trans_count,COUNT(IF(state"appr…

matlab利用逻辑数组将保密率负数部分转换为零

通信中计算保密率的公式为 r[Rd−Re]r[R_d-R_e]^ r[Rd​−Re​] 其中RdR_dRd​代表合法目的地的数据速率&#xff0c;ReR_eRe​代表窃听节点的数据速率 当窃听节点的速率大于目的节点的速率时候&#xff0c;计算出来的保密率是负值&#xff0c;这在设计的时候可以将这时候的保…

referer、prototype、array、json笔记整理

目录referer、prototype、array、json笔记整理refererReferrer-policy如何设置referer绕过图片防盗链1、利用https网站盗链http资源网站&#xff0c;refer不会发送2、设置meta3、设置referrerpolicy"no-referrer"4、利用iframe伪造请求referer5、客户端在请求时修改h…

【LeetCode每日一题】——233.数字 1 的个数

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数学 二【题目难度】 困难 三【题目编号】 233.数字 1 的个数 四【题目描述】 给定一个整数 …

为你的Typecho使用Redis缓存,优化访问速度-织音博客

前言Typecho虽然轻量&#xff0c;但终究仍是PHP动态脚本&#xff0c;访问时需要频繁调取数据库的信息&#xff0c;导致并发值一高&#xff0c;CPU就100%占用&#xff0c;无法处理新的请求信息。这时&#xff0c;我们可以用Redis来设置缓存&#xff0c;从而不用频繁调动数据库&a…