计算机操作系统--文件管理

2023-11-11

文件与文件系统

1.文件

macOS系统下的文件

文件(File)是具有符号名的、在逻辑上具有完整意义的一组相关信息项的集合。例如,一个源程序、一个目标程序、编译程序、一批待加工的数据和各种文档等都可以各自组成一个文件。
信息项是构成文件内容的基本单位,可以是一个字符,也可以是一个记录,记录可以等长,也可以不等长。一个文件包括文件体和文件说明。文件体是文件真实的内容。文件说明是操作系统为了管理文件所用到的信息,包括文件名、文件内部标识、文件的类型、文件存储地址、文件的长度、访问权限、建立时间和访问时间等。
文件是一种抽象机制,它隐藏了硬件和实现细节,提供了将信息保存在磁盘上而且便于以后读取的手段,使用户不必了解信息存储的方法、位置以及存储设备实际操作方式便可存取信息。因此,文件管理中的一个非常关键的问题在于文件的命名。文件名是在进程创建文件时确定的,以后这个文件将独立于进程存在直到它被显式删除。当其他进程要使用文件时必须显式指出该文件名,操作系统根据文件名对其进行控制和管理。不同的操作系统,文件的命名规则有所不同,即文件名字的格式和长度因系统而异。

2.文件系统
在这里插入图片描述

由于计算机系统处理的信息量越来越大,所以不可能将所有的信息保存到主存中。特别是在多用户系统中,既要保证各用户文件存放的位置不冲突,又要防止任一用户对外存储器(简称外存)空间占而不用;既要保证各用户文件在未经许可的情况下不被窃取和破坏,又要允许在特定的条件下多个用户共享某些文件。因此,需要设立一个公共的信息管理机制来负责统一管理外存和外存上的文件。

所谓文件管理系统,就是操作系统中实现文件统一管理的一组软件和相关数据的集合,专门负责管理和存取文件信息的软件机构,简称文件系统。文件系统的功能包括按名存取,即用户可以“按名存取”,而不是“按地址存取”;统一的用户接口,在不同设备上提供同样的接口,方便用户操作和编程;并发访问和控制,在多道程序系统中支持对文件的并发访问和控制;安全性控制,在多用户系统中的不同用户对同一文件可有不同的访问权限;优化性能,采用相关技术提高系统对文件的存储效率、检索和读/写性能;差错恢复,能够验证文件的正确性,并具有一定的差错恢复能力。

3. 文件的类型





(1)按文件性质和用途可将文件分为系统文件、库文件和用户文件。


(2)按信息保存期限分类可将文件分为临时文件、档案文件和永久文件。



(3)按文件的保护方式分类可将文件分为只读文件、读/写文件、可执行文件和不保护文件。(4)UNIX系统将文件分为普通文件、目录文件和设备文件(特殊文件)。


目前常用的文件系统类型有FAT、Vfat、NTFS、Ext2和HPFS等。
文件分类的目的是对不同文件进行管理,提高系统效率,提高用户界面友好性。当然,根据文件的存取方法和物理结构的不同还可以将文件分为不同的类型,这将在文件的逻辑结构和文件的物理结构中介绍。

文件的机构和组织

文件的结构是指文件的组织形式。从用户角度看到的文件组织形式称为文件的逻辑结构,文件系统的用户只要知道所需文件的文件名就可以存取文件中的信息,而无须知道这些文件究竟存放在什么地方。从实现的角度看,文件在文件存储器上的存放方式称为文件的物理结构。

1. 文件的逻辑结构

文件的逻辑结构可分为两大类∶一是有结构的记录式文件,它是由一个以上的记录构成的文件,故又称为记录式文件;二是无结构的流式文件,它是由一串顺序字符流构成的文件。





1)有结构的记录式文件
在记录式文件中,所有的记录通常都是描述一个实体集的,有着相同或不同数目的数据项,记录的长度可分为定长和不定长两类。



(1)定长记录。指文件中所有记录的长度相同。所有记录中的各个数据项都处在记录中相同的位置,具有相同的顺序及相同的长度,文件的长度用记录数目表示。定长记录的特点是处理方便,开销小,它是目前较常用的一种记录格式,被广泛用于数据处理中。



(2)变长记录。指文件中各记录的长度不相同。这是因为∶一个记录中所包含的数据项数目可能不同,如书的著作者、论文中的关键词;数据项本身的长度不定,如病历记录中的病因、病史,科技情报记录中的摘要等。但是,不论是哪一种结构,在处理前每个记录的长度是可知的。

2)无结构的流式文件
文件体为字节流,不划分记录。无结构的流式文件通常采用顺序访问方式,并且每次读/写访问可以指定任意数据长度,其长度以字节为单位。对于流式文件访问,是利用读/写指针指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。在UNIX系统中,所有的文件都被看作是流式文件,即使是有结构的文件,也被视为流式文件,系统不对文件进行格式处理。

2. 文件的物理结构

文件的物理结构是指文件的内部组织形式,即文件在物理存储设备上的存放方法。由于文件的物理结构决定了文件在存储设备上的存放位置,所以文件的逻辑块号到物理块号的转换也是由文件的物理结构决定的。根据用户和系统管理上的需要,可采用多种方法来组织文件,下面介绍几种常见的文件物理结构。


(1)连续结构。连续结构也称顺序结构,它将逻辑上连续的文件信息(如记录)依次存放在连续编号的物理块上。只要知道文件的起始物理块号和文件的长度,就可以很方便地进行文件的存取。
对文件诸记录进行批量存取时,连续结构在所有逻辑文件中的存取效率是最高的。但在交互应用的场合,如果用户(程序)要求随机地查找或修改单个记录,此时系统需要逐个地查找各个记录,这样采用连续结构所表现出来的性能就可能很差,尤其是当文件较大时情况更为严重。连续结构的另一个缺点是不便于记录的增加或删除操作。为了解决这个问题,可以为采用连续结构的文件配置一个运行记录文件(Log File)或称为事务文件(Transactor File),规定每隔一定时间,例如4小时,将运行记录文件与原来的主文件进行合并,产生一个新文件。这样,不必每次对记录进行增加或删除操作,物理移动磁盘信息,使其成为连续结构。


(2)链接结构。链接结构也称串联结构,它是将逻辑上连续的文件信息(如记录)存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块。因此,只要知道文件的第一个物理块号,就可以按链指针查找整个文件。


(3)索引结构。在采用索引结构时,将逻辑上连续的文件信息(如记录)存放在不连续的物理块中,系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。


(4)多个物理块的索引表。索引表是在文件创建时由系统自动建立的,并与文件一起存放在同一文件卷上。根据一个文件大小的不同,其索引表占用物理块的个数不等,一般占一个或几个物理块。多个物理块的索引表可以有两种组织方式∶链接文件和多重索引方式。
在UNⅨ文件系统中采用的是三级索引结构,在文件系统中inode是基本的构件,它表示文件系统树型结构的结点。UNIX文件索引表项分4种寻址方式∶直接寻址、一级间接寻址、二级间接寻址和三级间接寻址。

文件目录

为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的物理地址,这个数据结构称为文件控制块(FCB),文件控制块的有序集合称为文件目录。换句话说,文件目录是由文件控制块组成的,专门用于文件的检索。文件控制块也称为文件的说明或文件目录项(简称目录项)。

1. 文件控制块

文件控制块中包含以下三类信息∶基本信息类、存取控制信息类和使用信息类。

(1)基本信息类。例如文件名、文件的物理地址、文件长度和文件块数等。


(2)存取控制信息类。文件的存取权限,像UNIX用户分成文件主、同组用户和一般用户三类,这三类用户的读/写执行RWX权限。


(3)使用信息类。文件建立日期、最后一次修改日期、最后一次访问的日期、当前使用的信息(如打开文件的进程数、在文件上的等待队列)等。

2. 目录结构


文件目录结构的组织方式直接影响到文件的存取速度,关系到文件的共享性和安全性,因此组织好文件的目录是设计文件系统的重要环节。常见的目录结构有3种∶一级目录结构、二级目录结构和多级目录结构。

(1)一级目录结构。一级目录的整个目录组织是一个线性结构,在整个系统中只需建立一张目录表,系统为每个文件分配一个目录项。一级目录结构简单,缺点是查找速度慢,不允许重名和不便于实现文件共享等,因此它主要用在单用户环境中。

(2)二级目录结构。为了克服一级目录结构存在的缺点引入了二级目录结构,二级目录结构是由主文件目录(Master File Directory,MFD)和用户目录(User File Directory,UFD)组成的。在主文件目录中,每个用户文件目录都占有一个目录项,其目录项中包括用户名和指向该用户目录文件的指针。用户目录是由用户所有文件的目录项组成的。

二级目录结构基本上克服了单级目录的缺点,其优点是提高了检索目录的速度,较好地解决了重名问题。采用二级目录结构也存在一些问题。该结构虽然能有效地将多个用户隔离开(这种隔离在各个用户之间完全无关时是一个优点),但当多个用户之间要相互合作去共同完成一个大任务,且一个用户又需要去访问其他用户的文件时,这种隔离便成为一个缺点,因为这种隔离使诸用户之间不便于共享文件。

(3)多级目录结构。为了解决以上问题,在多道程序设计系统中常采用多级目录结构,这种目录结构像一棵倒置的有根树,所以也称为树型目录结构。从树根向下,每一个结点是一个目录,叶结点是文件。MS-DOS和UNIX等操作系统均采用多级目录结构。
在采用多级目录结构的文件系统中,用户要访问一个文件,必须指出文件所在的路径名,路径名是从根目录开始到该文件的通路上所有各级目录名拼起来得到的。在各目录名之间、目录名与文件名之间需要用分隔符隔开。例如,在MS-DOS中分隔符为“\”,在UNIX中分隔符为“/”。绝对路径名(Absolute Path Name)是指从根目录“/”开始的完整文件名,即它是由从根目录开始的所有目录名以及文件名构成的。

存取方法和存取空间管理

1. 文件的存取方法

文件的存取方法是指读/写文件存储器上的一个物理块的方法。通常有顺序存取和随机存取两种方法。顺序存取方法是指对文件中的信息按顺序依次进行读/写;随机存取方法是指对文件中的信息可以按任意的次序随机地读/写。

2. 文件存储空间的管理

要将文件保存到外部存储器(简称外存或辅存)上首先必须知道存储空间的使用情况,即哪些物理块是被“占用”,哪些是“空闲”。特别是对大容量的磁盘存储空间被多用户共享时,用户执行程序经常要在磁盘上存储文件和删除文件,因此,文件系统必须对磁盘空间进行管理。外存空闲空间管理的数据结构通常称为磁盘分配表(Disk Allocation Table)。常用的空闲空间的管理方法有空闲区表、位示图、空闲块链和成组链接法4种。


(1)空闲区表。将外存空间上的一个连续的未分配区域称为“空闲区”。操作系统为磁盘外存上的所有空闲区建立一张空闲表,每个表项对应一个空闲区,空闲表中包含序号、空闲区的第一块号、空闲块的块数和状态等信息,如下表所示,适用于连续文件结构。

在这里插入图片描述

(2)位示图。这种方法是在外存上建立一张位示图(Bitmap),记录文件存储器的使用情况。每一位对应文件存储器上的一个物理块,取值0和1分别表示空闲和占用。例如,某文件存储器上位示图的大小为n,物理块依次编号为0,1,2,…。假如计算机系统中字长为32位,那么在位示图中的第0个字(逻辑编号)对应文件存储器上的0,1,2,…,31号物理块;第1个字对应文件存储器上的32,33,34,…,63号物理块,依此类推,如下图所示。

在这里插入图片描述

这种方法的主要特点是位示图的大小由磁盘空间的大小(物理块总数)决定,位示图的描述能力强,适合各种物理结构。
(3)空闲块链。每个空闲物理块中有指向下一个空闲物理块的指针,所有空闲物理块构成一个链表,链表的头指针放在文件存储器的特定位置上(如管理块中),不需要磁盘分配表,节省空间。每次申请空闲物理块只需根据链表的头指针取出第一个空闲物理块,根据第一个空闲物理块的指针可找到第二个空闲物理块,依此类推。

(4)成组链接法。UNIX系统采用该方法。例如,在实现时系统将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数。假如某个组的第一个空闲块号等于0,意味着该组是最后一组,无下一组空闲块。

文件的使用

文件系统将用户的逻辑文件按一定的组织方式转换成物理文件存放到文件存储器上,也就是说,文件系统为每个文件与该文件在磁盘上的存放位置建立了对应关系。当用户使用文件时,文件系统通过用户给出的文件名查出对应文件的存放位置,读出文件的内容。在多用户环境下,为了文件安全和保护起见,操作系统为每个文件建立和维护关于文件主、访问权限等方面的信息。为此,操作系统在操作级(命令级)和编程级(系统调用和函数)向用户提供文件的服务。
操作系统在操作级向用户提供的命令有目录管理类命令、文件操作类命令(如复制、删除和修改)和文件管理类命令(如设置文件权限)等。

文件的共享和保护

1. 文件的共享

文件共享是指不同用户进程使用同一文件,它不仅是不同用户完成同一任务所必需的功能,还可以节省大量的主存空间,减少由于文件复制而增加的访问外存的次数。文件共享有多种形式,采用文件名和文件说明分离的目录结构有利于实现文件共享。
常见的文件链接有硬链接和符号链接两种。

1)硬链接
文件的硬链接是指两个文件目录表目指向同一个索引结点的链接,该链接也称基于索引结点的链接。换句话说,硬链接是指不同文件名与同一个文件实体的链接。文件硬链接不利于文件主删除它拥有的文件,因为文件主要删除它拥有的共享文件,必须首先删除(关闭)所有的硬链接,否则就会造成共享该文件的用户的目录表目指针悬空。
例如,UNIX系统中的In命令,可以将多个文件名与一个文件体建立链接,其格式为∶in 文件名 新文件名 或 in 文件名 目录名ls命令放在/bin子目录下,可在/usr/bin子目录下设置一个 DOS兼容的命令dir,执行该命令相当于执行ls命令。使用命令ln可以给一个已存在文件增加一个新文件名,即文件链接数增加 1,此种链接是不能跨越文件系统的。为了共享文件,只是在两个不同子目录下取了不同的文件名ls和dir,但它们具有相同的索引结点。UNIX这种文件的结构称为树形带勾链的目录结构。在文件的索引结点中,di nlink变量表示链接到该索引结点上的链接数;在用命令ls-1长列表显示时,文件的第2项数据项表示链接数。

2)符号链接
符号链接建立新的文件或目录,并与原来文件或目录的路径名进行映射,当访问一个符号链接时,系统通过该映射找到原文件的路径,并对其进行访问。
例如,UNIX系统中的In-s命令建立符号链接。此时,系统为共享的用户创建一个link类型的新文件,将这新文件登录在该用户共享目录项中,这个link型文件包含链接文件的路径名。该类文件在用ls命令长列表显示时,文件链接数为1。
采用符号链接可以跨越文件系统,甚至可以通过计算机网络连接到世界上任何地方的机器中的文件,此时只需提供该文件所在的地址以及在该机器中的文件路径。
符号链接的缺点是其他用户读取符号链接的共享文件比读取硬链接的共享文件需要增加读盘操作的次数。因为其他用户去读符号链接的共享文件时,系统中根据给定的文件路径名逐个分量地去查找目录,通过多次读盘操作才能找到该文件的索引结点,而用硬链接的共享文件的目录文件表目中已包括了共享文件的索引结点号。

2. 文件的保护

文件系统对文件的保护常采用存取控制方式进行。所谓存取控制,就是不同的用户对文件的访问规定不同的权限,以防止文件被未经文件主同意的用户访问。


(1)存取控制矩阵。理论上,存取控制方法可用存取控制矩阵,它是一个二维矩阵,一维列出计算机的全部用户,另一维列出系统中的全部文件,矩阵中的每个元素A,表示第i个用户对第j个文件的存取权限。通常,存取权限有可读R、可写W、可执行X以及它们的组合,如下表所示。



在这里插入图片描述

存取控制矩阵在概念上是简单、清楚的,但在实现上却有困难。当一个系统用户数和文件数很大时,二维矩阵要占很大的存储空间,验证过程也将耗费许多系统时间。

(2)存取控制表。存取控制矩阵由于太大往往无法实现。一个改进的办法是按用户对文件的访问权力的差别对用户进行分类,由于某一文件往往只与少数几个用户有关,所以这种分类方法可使存取控制表大大简化。UNIX系统就是使用了这种存取控制表方法。它把用户分成三类∶文件主、同组用户和其他用户,每类用户的存取权限为可读、可写、可执行以及它们的组合。在用ls长列表显示时,每组存取权限用3个字母R、W、X表示,如果读、写和执行中哪一样存取都不允许,则用"-"字符表示。用1s-1长列表显示ls文件如下∶

-r-xr-xr-t 1 bin bin 43296 May 13 1997 /opt/K/SCO/Unix/5.0.4Eb/bin/ls

显示前2~10共9个字符表示文件的存取权限,每3个字符为一组,分别表示文件主、同组用户和其他用户的存取权限。由于存取控制表对每个文件按用户分类,所以该存取控制表可存放在每个文件的文件控制块中,对UNIX只需9位二进制来表示三类用户对文件的存取权限,该权限存在文件索引结点的di_mode中。


(3)用户权限表。改进存取控制矩阵的另一种方法是以用户或用户组为单位将用户可存取的文件集中起来存入表中,这称为用户权限表。表中的每个表目表示该用户对应文件的存取权限,这相当于存取控制矩阵一行的简化。


(4)密码。在创建文件时,由用户提供一个密码,在文件存入磁盘时用该密码对文件内容加密。在进行读取操作时,要对文件进行解密,只有知道密码的用户才能读取文件。

系统的安全与可靠性

1. 系统的安全

系统的安全涉及两类不同的问题,一类涉及技术、管理、法律、道德和政治等问题,另一类涉及操作系统的安全机制。随着计算机应用范围扩大,在所有稍具规模的系统中都从多个级别上来保证系统的安全性。一般从4个级别上对文件进行安全性管理∶系统级、用户级、目录级和文件级。


系统级安全管理的主要任务是不允许未经授权的用户进入系统,从而也防止了他人非法使用系统中各类资源(包括文件)。

系统级管理的主要措施有注册与登录。
用户级安全管理是通过对所有用户分类和对指定用户分配访问权,不同的用户对不同文件设置不同的存取权限来实现。例如,在UNIX系统中将用户分为文件主、组用户和其他用户。有的系统将用户分为超级用户、系统操作员和一般用户。
目录级安全管理是为了保护系统中各种目录而设计的,它与用户权限无关。为了保证目录的安全,规定只有系统核心才具有写目录的权利。

文件级安全管理是通过系统管理员或文件主对文件属性的设置来控制用户对文件的访问。通常可设置以下几种属性∶只执行、隐含、只读、读/写、共享、系统。用户对文件的访问,将由用户访问权、目录访问权限及文件属性三者的权限所确定,或者说是有效权限和文件属性的交集。
例如对于只读文件,尽管用户的有效权限是读/写,但都不能对只读文件进行修改、更名和删除。对于一个非共享文件,将禁止在同一时间内由多个用户对它们进行访问。
通过上述4级文件保护措施,可有效地对文件进行保护。

2. 文件系统的可靠性

文件系统的可靠性是指系统抵抗和预防各种物理性破坏和人为性破坏的能力。比起计算机的损坏,文件系统破坏往往后果更加严重。

例如,将开水撒在键盘上引起的故障,尽管伤脑筋但毕竟可以修复;但如果文件系统被破坏了,在很多情况下是无法恢复的。特别是对于那些程序文件、客户档案、市场计划或其他数据文件丢失的客户来说,这不亚于一场大的灾难。尽管文件系统无法防止设备和存储介质的物理损坏,但至少应能保护信息。


(1)转储和恢复。在文件系统中无论是硬件或软件都会发生损坏和错误,例如自然界的闪电、电压的突变、火灾和水灾等均可能引起软硬件的破坏。为了使文件系统万无一失,应当采用相应的措施,最简单和常用的措施是通过转储操作形成文件或文件系统的多个副本。这样,一旦系统出现故障,利用转储的数据使得系统恢复成为可能。常用的转储方法有静态转储和动态转储、海量转储和增量转储。



(2)日志文件。在计算机系统的工作过程中,操作系统把用户对文件的插入、删除和修改操作写入日志文件。一旦发生故障,操作系统恢复子系统利用日志文件来进行系统故障恢复,并可协助后备副本进行介质故障恢复。



(3)文件系统的一致性。影响文件系统可靠性的因素之一是文件系统的一致性问题。很多文件系统是先读取磁盘块到主存,在主存进行修改,修改完毕再写回磁盘。但如果读取某磁盘块,修改后再将信息写回磁盘前系统崩溃,则文件系统就可能会出现不一致性状态。如果这些未被写回的磁盘块是索引结点块、目录块或空闲块,那么后果是不堪设想的。通常,解决方案是采用文件系统的一致性检查,一致性检查包括块的一致性检查和文件的一致性检查。

未完待续。。。

更多知识传送:

计算机操作系统–基础知识
计算机操作系统–进程管理
计算机操作系统–存储管理
计算机操作系统–设备管理
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以上内容整理参考《软件设计师教程(第5版)》和《软件设计师考试同步辅导(第四版)》(忘记是哪个老师的了,侵删)。本文章内容旨在帮助更多想要进军软考,给自己镀金的小伙伴。有兴趣的小伙伴可以共勉。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

计算机操作系统--文件管理 的相关文章

  • 如何从“git log”中查看 Git 中的特定版本?

    My git log显示为 enter code here git trial git log commit 4c5bc66ae50780cf8dcaf032da98422aea6e2cf7 Author king lt email pro
  • grails 上的同步块在 Windows 上有效,但在 Linux 上无效

    我有一个 grails 应用程序 它依赖于服务中的同步块 当我在 Windows 上运行它时 同步按预期工作 但当我在 ams linux 上运行时 会出现 StaleObjectStateException 该问题在以下示例中重现 cla
  • sqlite 插入需要很长时间

    我正在将不到 200 000 行插入到 sqlite 数据库表中 我只是在终端中通过 sqlite3 使用一个非常简单的 sql 文件 我打赌它已经运行了至少 30 分钟 这是正常现象还是我应该关闭该过程并尝试不同的方法 sqlite中的插
  • 使用命令行将 MediaWiki 维基文本格式转换为 HTML

    我倾向于编写大量文档 因此 MediaWiki 格式对我来说很容易理解 而且比编写传统 HTML 节省了我很多时间 然而 我也写了一篇博客 发现一直从键盘切换到鼠标来输入正确的 HTML 标签会增加很多时间 我希望能够使用 Mediawik
  • linux下如何获取昨天和前天?

    我想在变量中获取 sysdate 1 和 sysdate 2 并回显它 我正在使用下面的查询 它将今天的日期作为输出 bin bash tm date Y d m echo tm 如何获取昨天和前天的日期 这是另一种方法 对于昨天来说 da
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 如何从 Linux 的 shell 中删除所有以 ._ 开头的文件?

    确实如标题所示 我已将许多文件从 Mac 复制到 Raspberry Pi 这导致了许多以前缀开头的多余文件 我想删除以以下开头的文件夹中的每个文件 我该怎么做 尝试类似的方法 cd path to directory rm rf 或者 如
  • 错误:NVIDIA-SMI 失败,因为无法与 NVIDIA 驱动程序通信

    NVIDIA SMI 抛出此错误 NVIDIA SMI 失败 因为无法与 NVIDIA 通信 司机 确保安装了最新的 NVIDIA 驱动程序并且 跑步 我清除了 NVIDIA 并按照提到的步骤重新安装了它here https askubun
  • 在 shell 脚本中查找和替换

    是否可以使用 shell 在文件中搜索然后替换值 当我安装服务时 我希望能够在配置文件中搜索变量 然后在该值中替换 插入我自己的设置 当然 您可以使用 sed 或 awk 来完成此操作 sed 示例 sed i s Andrew James
  • 进程名称长度的最大允许限制是多少?

    进程名称允许的最大长度是多少 我正在读取进程名称 proc pid stat文件 我想知道我需要的最大缓冲区 我很确定有一个可配置的限制 但就是找不到它在哪里 根据man 2 prctl http man7 org linux man pa
  • 套接字:监听积压并接受

    listen sock backlog 在我看来 参数backlog限制连接数量 这是我的测试代码 server initialize the sockaddr of server server sin family AF INET ser
  • numpy 未定义符号:PyFPE_jbuf

    我正在尝试使用一百万首歌曲数据集 为此我必须安装 python 表 numpy cython hdf5 numexpr 等 昨天我设法安装了我需要的所有内容 在使用 hdf5 遇到一些麻烦之后 我下载了预编译的二进制包并将它们保存在我的 b
  • 如何用X11复制到剪贴板?

    使用 OS X 上的框架 我可以使用以下命令将 PNG 复制到粘贴板 在 C 中 显然我可以将 NSPasteboard 与 Cocoa 一起使用 include
  • InstaPy:“错误,无法确定 64 位 Linux 的正确文件名”

    有人知道如何解决或解决这个问题吗 来自控制台的堆栈跟踪 执行后报告错误 InstaPy Version 0 6 9 Workspace in use home zanettra InstaPy Error unable to determi
  • 如何让 clangd 转向 c++20

    当没有其他信息时 如何让 clangd 回退到 c 20 例如 在第一次构建之前 cmake 可以生成一个 这是在带有最新 LLVM 的 Arch Linux 上 这是通过 Emacs LSP 运行的 但这应该没有什么区别 你可以加 Com
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 在Linux中断上下文中运行用户线程

    我正在编写一些定制的应用程序 并允许更改 Linux 内核中的中断处理程序代码 我有一个用户线程正在等待中断发生 如果发生中断 那么我要做的第一件事就是执行该用户线程 有什么办法让它发挥作用吗 Thanks 创建一个字符设备 这就是内核所做
  • linux x86 汇编语言 sys_read 调用的第一个参数应为 0 (stdin)

    我正在编写一个简单的汇编程序来从标准输入读取 如 scanf 这是我的代码 section bss num resb 5 section txt global start start mov eax 3 sys read mov ebx 0
  • 从 TypeScript 运行任何 Linux 终端命令?

    有没有办法直接从 TypeScript 类中执行 Linux 终端命令 这个想法是做类似的事情 let myTerminal new LinuxTerminal let terminalResult myTerminal run sudo
  • C 程序从连接到系统的 USB 设备读取数据

    我正在尝试从连接到系统 USB 端口的 USB 设备 例如随身碟 获取数据 在这里 我可以打开设备文件并读取一些随机原始数据 但我想获取像 minicom teraterm 这样的数据 请让我知道我可以使用哪些方法和库来成功完成此操作以及如

随机推荐

  • 微信小程序 实现天气类功能

    参考链接 1 全国城市天气预报 城市天气预报查询 国内天气预报查询 天气网 https www tianqi com chinacity html 2 获取实时天气数据 获取数据 开发指南 微信小程序SDK 高德地图API https lb
  • apache字体文件跨域_css引用跨域字体文件woff,eot,ttf问题

    今天把站点的字体的静态文件woff eot ttf放到cdn去速度快一些 改成了外链地址 居然不加载报错 用下面的公用地址可以正常使用 https cdn bootcss com font awesome 4 7 0 fonts 搜索下 是
  • H5 页面采坑记录

    1 页面布局时 上下滑动页面时通常会把一些盒子放在 section section 标签中 但是在一些机型如iphonex测试中 上下滑动页面会出现都抖动的情况 不知道什么原因 解决方案就是 不使用 section 标签 直接在大盒子中写滚
  • 多线程之常用线程安全类型分析

    写在前面 本文一起看下在日常工作中我们经常用到的线程安全的数据类型 以及一些经验总结 1 常用线程安全数据类型 1 1 jdk集合数据类型 jdk的集合数据类型分为两类 一种是线性数据结构 另外一种是字典结构 分别看下 1 1 1 线性数据
  • 通过PyInstaller打包报“文件遇到错误”

    前言 不知道大家在作为python程序后 是不是都通过PyInstaller打包给用户使用呢 但是通过PyInstaller打包会出现一点小小的问题 本文章就来教你如何去解决这些问题 让打包后显示出控制台窗口 在打包的时候 不用加上 w让窗
  • 解码(二):音视频解码上下文创建配置和打开avcodec_open2打开演示

    如下代码 视频解码器打开 找到视频解码器 AVCodec vcodec avcodec find decoder ic gt streams videoStream gt codecpar gt codec id if vcodec cou
  • 远期与期货

    概述 期货合约与远期合约都是规定在将来的某一时间购买或者出售某项资产 这一点与期权类似 关键不同之处在于 期权持有者不会被强制购买或者出售资产 当无利可图时 可以选择放弃交易 但是 期货或者远期合约由必须履行事先约定的合约义务 远期 仅仅是
  • Java Lombok 报错(IllegalAccessError: class lombok.javac.apt.LombokProcessor)解决方法

    本文主要介绍Java 中 使用Lombok报错 java java lang IllegalAccessError class lombok javac apt LombokProcessor的解决方法及示例代码 原文地址 Java Lom
  • Java Swing 如何让界面更加美观

    文章目录 一 设置窗体的背景图 二 设置Button组件 三 设置字体大小和颜色 四 设置组件的背景色 五 综合测试案例 一 设置窗体的背景图 利用JLable类的构造方法或方法加载图片 ImageIcon image new ImageI
  • 设计一个雇员Employee类

    题目内容 设计一个雇员Employee类 具体要求如下 1 设计雇员Employee类 记录雇员的情况 包括姓名 年薪 受雇时间 String name double salary MyDate start 2 定义MyDate类作为日期
  • 装系统时提示 无法在驱动器0分区上安装windows

    先看提示 先看提示 先看提示 1 在重装系统时遇到一个问题 无法在驱动器0分区上安装windows 2 解决方法 1 在当前安装界面按住Shift F10调出命令提示符窗口 2 输入diskpart 按回车执行 3 进入DISKPART命令
  • 负数为什么要用补码来表示?

    上篇文章讲了 负数在计算机中是怎么存储的 看完之后 应该对原码 反码 补码有了基本的了解了 今天 我们深入探讨一下 为什么计算机中要用补码来表示负数 首先 我们应该清楚 原码是方便给人看的 看到一个数的原码 我们就能根据符号位和后边的二进制
  • [144]如何用VBS编写一个简单的恶搞脚本

    windows系统的电脑 首先右击桌面 选择新建 文本文档 在桌面上新建一个文本文档 随后打开计算机或者是我的电脑 点击其中的组织 xp系统多为工具 选择下面的文件夹和搜索选项 在弹出的窗口中点击查看 向下滚到 找到隐藏已知文件类型的扩展名
  • Android(Kotlin)获取应用全局上下文 ApplicationContext

    需求 Android Kotlin 获取应用全局上下文 ApplicationContext 有些场景下需要使用的 Context 是和页面无关的 仅和应用进程相关 比如 读写文件或访问数据库 这些场景下 我们希望可以在项目内任意位置 直接
  • Allegro PCB的布局

    1 手工导入元器件 place manually进入放置设置页面 在需要放置的元器件前面打勾 可以依次放置元器件 2 快速放置元器件 place Quickplace 使用快速放置功能需要先画好板宽outline才可以 3 设置room区域
  • c++实现数据结构栈和队列

    1 栈 头文件 ifndef ZHAN H define ZHAN H define MAX 8 include
  • laravel-admin安装及使用教程

    安装命令 安装 Laravel 安装器 composer global require laravel installer 创建名为 shopAdmin 项目 laravel new shopAdmin 经过漫长的等待已经安装好了 进入项目
  • springboot中注入FilterRegistrationBean不生效原因

    springboot中注入FilterRegistrationBean不生效原因 回顾 最近自定义了两个过滤器 接口请求返回加密和sql注入处理过滤器 因为在封装一些工具包 我在单独调好之后 就打算做成一个注解 像springboot启动类
  • 基于自注意力机制的LSTM多变量负荷预测

    1 引言 在之前使用长短期记忆网络构建电力负荷预测模型的基础上 将自注意力机制 Self Attention 融入到负荷预测模型中 具体内容是是在LSTM层后面接Self Attention层 在加入Self Attention后 可以将负
  • 计算机操作系统--文件管理

    文件与文件系统 1 文件 文件 File 是具有符号名的 在逻辑上具有完整意义的一组相关信息项的集合 例如 一个源程序 一个目标程序 编译程序 一批待加工的数据和各种文档等都可以各自组成一个文件 信息项是构成文件内容的基本单位 可以是一个字