当前位置: 首页 > news >正文

[架构之路-232]:目标系统 - 纵向分层 - 操作系统 - 数据存储:文件系统存储方法汇总

目录

前言:

一、文件系统存储方法基本原理和常见应用案例:

二、Windows FAT文件系统

2.1 概述

三、Linux EXT文件系统

3.1 基本原理

3.2 索引节点表(Inode Table)

3.2.1 索引节点表层次结构

3.2.2 间接索引表的大小和表项个数

四、NFS文件系统


前言:

为了在以块为基本单位的硬盘上,管理和存储数据长度不定长的文件,且能够实现不连续存储(在硬盘上连续存储数据的要求抬高了,硬盘上很难保证有连续大块的存储空间),操作系统想了很多的办法,采用了很多算法和数据结构来达成此目的。

一、文件系统存储方法基本原理和常见应用案例:

操作系统的文件系统:解决的是数据数据在内存和硬盘中进行映射的方法。

下面将详细介绍每种存储方法的基本原理和常见应用案例:

  1. 随机存取存储(Random Access Storage):

    • 基本原理:随机存取存储方法将文件数据划分为块或扇区,并使用磁盘寻址技术实现对这些块的随机访问。每个块都有一个唯一的地址,可以通过地址直接访问块内的数据。
    • 应用案例:Windows操作系统中常用的NTFS文件系统采用了随机存取存储方法。NTFS通过索引节点表(MFT)来管理文件,使用簇(Cluster)作为数据存储的基本单位,支持高效的随机读写和快速定位。
  2. 连续存储(Contiguous Storage)://不常见,早期文件系统

    • 基本原理:连续存储方法将文件的数据连续地存储在磁盘上。文件在存储时被分配一段连续的物理空间,数据块按照顺序存储,形成一个连续的数据区域
    • 应用案例:早期的FAT文件系统和一些嵌入式设备常使用连续存储方法。这种方法对于传输速度要求较高的应用场景非常适用,例如音频和视频的播放器,因为可以连续读取文件数据以提供流畅的播放体验
  3. 链接表存储(Linked List Storage):

    • 基本原理:链接表存储方法使用链表结构来记录文件数据的存储位置。每个链表节点包含一部分文件数据和指向下一个节点的指针,通过遍历链表可以读取整个文件的数据。
    • 应用案例:许多UNIX和类UNIX系统使用的文件系统,如EXT系列(如EXT2、EXT3、EXT4)和XFS,采用了链接表存储方法。这种方法可以高效地管理不连续的文件存储,适用于支持大文件和灵活的文件分配的场景
  4. 文件分配表存储(File Allocation Table Storage):

    • 基本原理:文件分配表存储方法通过维护一个文件分配表(FAT)来记录磁盘上每个块的使用情况和链表关系。FAT表中的每个表项对应一个块,记录了该块的使用状态和下一个块的地址。
    • 应用案例:早期的FAT文件系统(如FAT16、FAT32)以及一些嵌入式设备中使用了文件分配表存储方法。这种方法简单且易于实现,适用于存储容量较小、对性能要求不高的应用场景。
  5. 索引节点存储(Indexed Node Storage):

    • 基本原理:索引节点存储方法使用索引节点(inode)来记录文件和目录的元数据,包括文件属性和数据的物理存储位置。通过索引节点,文件系统可以快速定位和访问文件的数据。
    • 应用案例:常见的UNIX和类UNIX系统(如Linux、Mac OS)所使用的文件系统,如EXT2/EXT3/EXT4、HFS+,采用了索引节点存储方法。索引节点结构允许快速访问和管理文件,适用于大型文件系统和复杂的数据结构
  6. 日志结构存储(Log-structured Storage):

    • 基本原理:日志结构存储方法通过将文件的修改操作以日志的形式记录下来,并按时间顺序追加到日志区域中。重放日志可以恢复文件系统的状态,实现高度的数据一致性和恢复能力。
    • 应用案例:ZFS(Zettabyte File System)是一种常见的日志结构存储的文件系统,在大规模存储和高可靠性要求的场景下被广泛使用。ZFS使用了写时复制(Copy-on-Write)技术和数据校验来保证数据的完整性和可靠性。

这些文件系统存储方法的应用案例说明了不同存储方法的特点和适用场景。根据需求和应用场景的不同,选择合适的存储方法对于文件系统的性能、可靠性和效率非常重要。

二、Windows FAT文件系统

2.1 概述

FAT(File Allocation Table)文件系统是一种使用在许多操作系统中的文件系统,如Windows中的FAT16、FAT32以及有些可移动存储设备和嵌入式系统中的FAT12。

以下是FAT文件系统的原理和数据结构的简要说明:

  1. 分区和引导扇区:FAT文件系统以分区的形式存在于存储设备上,每个分区的开头有一个引导扇区(Boot Sector),包含分区的基本信息和引导代码

  2. 文件分配表(FAT):FAT文件系统的核心是文件分配表(File Allocation Table),它是一个表格,用于记录文件在存储设备上的分配情况。每个表项记录着磁盘上的一个簇(Cluster)的状态,标识它的使用情况。

  3. 簇:FAT文件系统将存储设备分为一个个固定大小的簇(Cluster),每个簇由连续的扇区组成。FAT通过簇号来标识文件的存储位置,而不是直接使用物理磁盘块号

  4. 目录项:FAT文件系统使用目录项(Directory Entry)来存储文件和目录的元数据,包括文件名、扩展名、属性、起始簇号等等。目录项以目录的形式组织,每个目录的起始位置都有一个特殊的目录项(根目录项)作为入口。

  5. 文件分配:文件在FAT文件系统中分配的方式是通过在FAT表中标记簇的使用情况。文件的第一个簇号存储在目录项中,然后通过在FAT表中依次查找下一个簇号来确定文件的完整存储位置。

  6. 空闲空间管理:FAT文件系统通过在FAT表中标记空闲簇来管理可用空间。标记为“未使用”的表项表示该簇是可用的,标记为“已使用”的表项表示该簇已被分配给文件或目录。

这些是FAT文件系统的基本原理和数据结构。通过使用FAT表来跟踪和管理文件的存储位置,FAT文件系统能够支持文件的读取、写入和删除。不同版本的FAT文件系统(如FAT12、FAT16和FAT32)在文件分配表的结构和大小、簇大小等方面略有差异,但基本原理是相似的。

三、Linux EXT文件系统

3.1 基本原理

Linux EXT(Extended File System)文件系统的基本原理和数据结构是构建在磁盘块、索引节点(inode)和数据块上的。下面是关于EXT文件系统的基本原理和数据结构的简要说明:

  1. 基本原理:EXT文件系统是一个层次化的文件系统,通过块设备(如硬盘)来存储文件和目录。它将磁盘分为若干个块组(Block Group),每个块组包含了文件系统的关键组件:超级块组描述符表索引节点表数据块。其中最重要的是索引节点表。

  2. 超级块(Superblock):每个EXT文件系统都有一个超级块,存储文件系统的整体信息,如块设备的大小、块组数量、inode数量等等。它提供了文件系统的整体结构和配置信息。

  3. 组描述符表(Group Descriptor Table):组描述符表存储了每个块组的元数据信息,如空闲块数量、inode数量、位图地址等。它提供了块组级别的信息,帮助系统定位和管理块组。

  4. 索引节点表(Inode Table):EXT文件系统使用索引节点(inode)来记录文件的元数据信息,如文件大小、权限和时间戳等。每个文件和目录都有一个唯一的inode编号,通过inode可以快速地找到文件的元数据信息。

  5. 数据块(Data Block):数据块是用于存储文件的实际内容的区域。EXT文件系统使用不同大小的数据块,如4KB、8KB等,具体的块大小取决于文件系统的配置。文件的数据块通过inode中的指针链表来引用。

  6. 索引节点之间的关系:索引节点之间的关系是通过指针链表来建立的。一个索引节点中包含一组指针,指向数据块或其他索引节点。具体的指针链表结构有三级间接指针、二级间接指针和一级间接指针

EXT文件系统的数据结构使得系统可以高效地管理文件和目录,快速定位和读取文件的元数据和内容。同时,EXT文件系统还实现了一些高级特性,如日志功能(journaling)以提高文件系统的可靠性和恢复能力,以及扩展属性(extended attributes)等。

需要注意的是,EXT文件系统是在Linux平台上使用的,而其他操作系统可能使用不同的文件系统。因此,在跨平台使用时应注意文件系统的兼容性和可能存在的差异。

3.2 索引节点表(Inode Table)

3.2.1 索引节点表层次结构

索引节点表(Inode Table)是文件系统中的一个重要的数据结构,用于存储文件和目录的元数据信息。索引节点表的内容和层次结构如下:

  1. 索引节点(Inode):索引节点表中的每个条目对应一个文件或目录的数据,称为索引节点。每个索引节点包含了文件或目录的元数据信息和指向数据块的指针。

  2. 文件或目录的属性:每个索引节点记录了与文件或目录相关的属性,如文件大小、所有者和所属组、访问权限、时间戳(创建、修改、访问时间)等。

  3. 文件类型和权限:索引节点中存储的文件类型信息可以标识文件是普通文件、目录、符号链接等。同时,索引节点还记录了与文件或目录相关的权限信息,如读、写和执行权限。

  4. 数据块的指针/索引:索引节点中包含了指向文件数据块指针,用于快速定位和读取文件的实际内容指针的数量和类型取决于文件的大小

    a. 直接指针/索引:索引节点中通常包含一些(如N个)直接指向文件数据块的指针。例如,对于小文件,索引节点可能直接指向文件的数据块。N个直接索引指向的数据块的大小为N * BlockSize,如BlockSize=4K字节。

    b. 一级间接指针:对于较大的文件,索引节点可能包含一个一级间接指针,指向一个数据块,该数据块存储了更多的指针或索引,被称为一级间接索引块索引块的大小是操作系统指定的,通常与数据块的大小相同,如4K。一个间接所有指向的数据块的个数为4K/4Bye=1K个数据块,则指向的数据块的大小= 4K/4 *  4K = 1K * 4K = 4M, 即一个间接块使得数据块的大小扩展了1K倍数 =》4M字节。

    c. 二级间接指针:对于更大的文件,索引节点可能包含一个二级间接指针,指向一个二级索引块,该数据块存储了更多的一级间接指针,被称为二级间接索引块索引块的大小是操作系统指定的,通常与数据块的大小相同,如4K或1K。 一个二级块在一级块的基础之上又扩展了1K倍数,   每个二级间接指针代表的数据块的大小为:1K * 1K * 4K = 4G字节。

    d. 三级间接指针:对于非常大的文件,索引节点可能包含一个三级间接指针,指向一个数据块,该数据块存储了更多的二级间接指针索引块,被称为三级间接索引块索引块的大小是操作系统指定的,通常与数据块的大小相同,如4K。 一个三级块在二级块的基础之上又扩展了1K倍数,   每个二级间接指针代表的数据块的大小为:1K * 1K * 1K * 4K = 4T字节。

        通过索引节点表,文件系统可以按照层次结构组织和管理文件和目录的元数据信息。每个文件或目录对应一个索引节点,而索引节点中的指针链表(直接指针、间接指针和双重间接指针)指示了文件数据块的层次化结构。这种层次结构的设计提供了灵活性和效率,同时减少了索引节点表的大小和数据的存储开销,提高了文件系统的性能。

3.2.2 间接索引表的大小和表项个数

对于文件系统中的一级间接索引表(Single Indirect Index Table),它是一种用于扩展文件系统容量的指针结构。一级间接索引表存储了一级间接索引的指针,这些指针指向一级间接块。

一级间接索引表的内容可以描述为:

  1. 一级间接索引表条目:每个条目是一个指针,对应一个一级间接块。

  2. 一级间接块:一级间接索引表中的每个指针所指向的一级间接块是一个数据块,其中存储了多个指针。这些指针指向其他数据块,通常称为数据块指针。

  3. 数据块指针:一级间接块中的指针记录了文件分散存储在文件系统中的数据块的地址。通过这些指针,文件系统可以根据需要在存储介质上找到文件的相应数据块。

通过一级间接索引表的引入,文件系统可以处理比直接索引更大的文件,因为一级间接索引表存储了更多的指针,指向许多数据块。这进一步扩展了文件系统的存储容量和索引能力。

需要注意的是,一级间接索引表只是一种指针结构,其真正的内容是一级间接块。一级间接块中存储了数据块指针,这些指针才是实际用于查找和访问文件数据的关键。

总结而言,一级间接索引表在文件系统中用于扩展容量,存储了多个一级间接索引的指针。这些指针指向一级间接块,其中存储了数据块指针,提供了对大型文件的索引和访问能力。

一级间接块中的索引个数通常是由文件系统的设计和设置决定的。它取决于文件系统的块大小以及索引块中每个索引项所占用的空间大小。

在一个典型的文件系统中,一个数据块的大小是固定的,比如4KB或8KB。同时,每个索引项的大小也是确定的,通常是4字节或8字节,具体取决于文件系统的实现。以4KB索引块大小为例,每个索引项的大小为4直接,则索引项的个数为:4KB/4B = 1024 = 1K 个索引项。 

因此,计算一级间接块中索引的个数可以按照以下步骤进行:

  1. 确定每个索引项的大小:根据文件系统的实现,确定每个索引项所占用的空间大小。

  2. 确定一级间接块的大小:根据文件系统的块大小,确定一级间接块的大小。

  3. 计算索引的个数:一级间接块的大小除以每个索引项的大小,得到一级间接块中索引的个数。

需要注意的是,由于文件系统需要保留一些元数据信息,一级间接块中实际可用的索引项数量可能会略少于计算得到的索引个数。

文件系统设计人员在确定文件系统的块大小和索引项大小时,需要综合考虑文件系统的性能、存储效率和对大文件的支持能力等因素。大块和较大的索引项可以增加文件系统的容量和性能,但会带来存储空间的浪费;小块和较小的索引项可以提高存储空间利用率,但可能限制了文件系统的最大容量和大文件的支持能力。因此,文件系统设计者需要在权衡这些因素的基础上选择适当的块大小和索引项大小。

四、NFS文件系统

NFS(Network File System)文件系统的原理和数据结构主要涉及以下几个方面:

  1. 服务器和客户端交互:NFS采用客户端-服务器模型,其中NFS服务器存储文件和目录,并提供对这些文件和目录的远程访问。 客户端通过网络连接到NFS服务器,并通过特定的协议进行交互,如RPC(Remote Procedure Call)协议。

  2. 文件句柄(File Handle):在NFS中,文件和目录通过唯一的文件句柄进行标识。文件句柄是一个由服务器生成的固定大小的唯一标识符,用于识别特定的文件或目录。当客户端发送访问请求时,它将使用文件句柄来标识所需的文件或目录。

  3. NFS协议:NFS采用基于请求和响应的协议进行通信。客户端向服务器发送请求消息,包括操作类型(如读取、写入、创建、删除等),以及相关的参数,如文件句柄和偏移量等。服务器接收请求,并执行相应的操作,然后将结果封装为响应消息发送回客户端。

  4. 数据缓存:为了提高性能,NFS客户端采用了数据缓存机制。当客户端首次读取文件时,它会从服务器获取文件的内容,并将这些数据缓存在本地。这样,当下次需要访问相同的文件时,客户端可以直接从本地缓存中读取数据,而无需再次请求服务器。

  5. 权限和访问控制:NFS使用Unix/Linux样式的访问权限和安全机制来保护共享的文件和目录。服务器可以设置访问权限,例如所有权和权限位,以控制对文件的读写访问。客户端必须具有适当的权限才能执行访问操作。

  6. 锁定机制:NFS支持锁定(locking)机制,用于协调对同一文件的并发访问。为了避免并发冲突,客户端可以在读取或写入文件时,请求文件的锁定。服务器将根据锁定请求来协调访问,并确保文件的一致性和完整性。

  7. 挂载和导出:在NFS中,服务器上的文件和目录需要被导出(export),以便客户端可以挂载(mount)并访问它们。服务器上的导出定义了可以被哪些客户端挂载的共享资源以及响应的访问权限。

NFS的数据结构和实现涉及到文件句柄的生成和管理,客户端的缓存机制,服务器端的导出配置和请求处理等。这些机制和数据结构的设计旨在提供高效、可靠的文件共享体验,并确保共享操作的一致性和安全性。

相关文章:

[架构之路-232]:目标系统 - 纵向分层 - 操作系统 - 数据存储:文件系统存储方法汇总

目录 前言: 一、文件系统存储方法基本原理和常见应用案例: 二、Windows FAT文件系统 2.1 概述 三、Linux EXT文件系统 3.1 基本原理 3.2 索引节点表(Inode Table) 3.2.1 索引节点表层次结构 3.2.2 间接索引表的大小和表项…...

【立体视觉(五)】之立体匹配与SGM算法

【立体视觉(五)】之立体匹配与SGM算法 一、立体匹配一)基本步骤二)局部立体匹配三)全局立体匹配四)评价标准1. 均方误差(RMS)2. 错误匹配率百分比(PBM) 二、半全局(SGM)立体匹配一)代价计算二&a…...

苹果系统_安装matplotlib__pygame,以pycharm导入模块

为了更便捷、连贯的进行python编程学习,尽量在开始安装python软件时,将编辑器、模块一并安装好,这样能避免以后版本冲突的问题。小白在开始安装pycharm、pip、matplotlib往往会遇到一些问题,文中列示其中部分bug,供大家…...

常用颜色的英文和十六进制

以下颜色都是按照下面格式所写 # size&#xff1a;文字大小&#xff08;1~7&#xff09;&#xff1b;color&#xff1a;文字颜色 <font size5 colorred>红 red #ff0000</font>红 red #ff0000 橙 orange #ffa500 黄 yellow #ffff00 草绿 springgreen #00FF7F 绿…...

计算机网络第二章思考题

1. 调制与编码分别有何作用&#xff1f; 调制&#xff08;Modulation&#xff09;和编码&#xff08;Coding&#xff09;是通信系统中的两个关键概念&#xff0c;它们分别具有不同的作用和功能&#xff1a; 调制&#xff08;Modulation&#xff09;&#xff1a; 作用&#xff…...

Xcode、终端、Mason、nvim.debug环境路径

Xcode&#xff1a; /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include 终端&#xff1a; /Library/Developer/CommandLineTools/usr/include Mason: /Users/donny/.local/share/nvim/mason/packages/clangd/…...

2023华为OD机试真题-2023(A+B卷)【Java、C++、Go、Python】

【华为OD机试真题-2023(A+B卷)【Java、C++、Go、Python】 该专栏博客已帮助千余名同学通过OD机考 2023年5月,华为OD机考更新为OD统一考试(B卷)。B卷的题目包括两部分: 1.2022年老题库 2.2023新增题目 OD统一考试B卷的题目博主也会及时搜集更新! 以下为OD统一考试(B卷…...

[NISACTF 2022]join-us - 报错注入无列名注入

点击登录&#xff0c;找到注入点 这种框&#xff0c;可以直接爆破关键字&#xff0c;看是否拦截&#xff0c;也可以手动尝试&#xff0c;发现、union、and、or、substr、database等关键字都拦截了 1、学到了&#xff1a;可以用数据库中不存在的表名或者不存在的自定义函数名爆…...

Raid10--Raid01介绍

RAID10  先对磁盘做mirror&#xff0c;然后对整个mirror组做条带化&#xff1b;    比如8块盘    需要分成4个基组&#xff0c;每个基组2块盘&#xff1b;    每个基组先做raid1&#xff0c;再做raid0&#xff0c;4条条带化&#xff1b;    所以&#xff1a;   …...

集群服务器

文章目录 项目名:实现集群服务器技术栈通过这项目你学到(或者复习到)实现功能编码环境json环境muduo库boost库MySql数据库登录mysql&#xff1a;查看mysql服务开启了没有&#xff1f;mysql的服务器及开发包库chat&#xff0c;表 allgroup friend groupuser offlinemessage user…...

大数据Doris(五):开始编译 Doris

文章目录 开始编译 Doris 一、下载Doris的安装包 二、解压缩 三、上传配置文件...

Linux软硬链接和动静态库

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 软硬链接和动静态库 前言正文软硬链接原理使用 文件时间动静态库库介绍静态库静态库制作静态库的使用关于静态链接 动态库动态库制作动态库的使用关于动态链接 补充 最…...

Linux shell编程学习笔记6:查看和设置变量的常用命令

上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项&#xff0c;今天我们学习一下查看和设置变量的一些常用命令&#xff0c;包括变量的提升&#xff0c;有些命令在之前的实例中已经使用过了。 一、 echo &#xff1a;查看变量的值 语法格式&#xff1a;ech…...

leetcode 416.分割等和子集

416. 分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集&#xff0c;使得两个子集的元素和相等。 示例 1&#xff1a; 输入&#xff1a;nums [1,5,11,5] 输出&#xff1a;true 解释&#xff1a;数组可以分割成 [1, 5, 5] 和…...

Java基于SSM+Vue的平时成绩管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…...

flutter开发实战-webview插件flutter_inappwebview使用

flutter开发实战-webview插件flutter_inappwebview使用 在开发过程中&#xff0c;经常遇到需要使用WebView&#xff0c;Webview需要调用原生的插件来实现。常见的flutter的webview插件是webview_flutter&#xff0c;flutter_inappwebview。之前整理了一下webview_flutter&…...

Selenium 浏览器坐标转桌面坐标

背景&#xff1a; 做图表自动化项目需要做拖拽操作&#xff0c;但是selenium提供的拖拽API无效&#xff0c;因此借用pyautogui实现拖拽&#xff0c;但是pyautogui的拖拽是基于Windows桌面坐标实现的&#xff0c;另外浏览器中的坐标与windows桌面坐标并不是一比一对应的关系&am…...

1.6.C++项目:仿muduo库实现并发服务器之channel模块的设计

项目完整版在&#xff1a; 文章目录 一、channel模块&#xff1a;事件管理Channel类实现二、提供的功能三、实现思想&#xff08;一&#xff09;功能&#xff08;二&#xff09;意义&#xff08;三&#xff09;功能设计 四、代码&#xff08;一&#xff09;框架&#xff08;二…...

Redis代替session 实现登录流程

Redis代替session 实现登录流程 如果使用String&#xff0c;他的value&#xff0c;用多占用一点空间&#xff0c;如果使用哈希&#xff0c;则他的value中只会存储他数据本身&#xff0c;如果不是特别在意内存&#xff0c;其实使用String就可以 设计key的具体细节 在设计这个k…...

理解C++强制类型转换

理解C强制类型转换 文章目录 理解C强制类型转换理解C强制转换运算符1 static_cast1.1. static_cast用于内置数据类型之间的转换1.2 用于指针之间的转换 1.3 用于基类与派生类之间的转换2. const_cast2.1示例12.2 示例2——this指针 3.reinterpret_cast4.dynamic_cast C认为C风格…...

《TCP/IP网络编程》代码实现

文章目录 1. 项目说明1.1 项目特点2. 文件说明2.1 脚本文件2.1.1 `TCP_IP.sln`2.1.2 `xmake.lua`2.1.2.1 编译说明2.1.2.2 运行说明2.1.3 章节说明项目代码已经开源在github上! 微信公众号文章同步发表! 1. 项目说明 根据《TCP/IP网络编程》书籍学习,对其中的代码进行整理,…...

【Python】如何使用PyInstaller打包自己写好的代码

使用PyInstaller打包自己写好的代码 零、需求 最近接到一个小单&#xff0c;需要批量修改文档内容&#xff0c;用Python做好后要打包成exe程序给客户的Win7电脑使用&#xff0c;此时需要用到PyInstaller打包自己的代码&#xff0c;想到还要有给用户试用的需求&#xff0c;所以…...

Java 线程的调度与时间片

&#x1f648;作者简介&#xff1a;练习时长两年半的Java up主 &#x1f649;个人主页&#xff1a;程序员老茶 &#x1f64a; ps:点赞&#x1f44d;是免费的&#xff0c;却可以让写博客的作者开兴好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全栈&#xff0c;…...

Java项目-文件搜索工具

目录 项目背景 项目效果 SQLite的下载安装 使用JDBC操作SQLite 第三方库pinyin4j pinyin4j的具体使用 封装pinyin4j 数据库的设计 创建实体类 实现DBUtil 封装FileDao 设计scan方法 多线程扫描 周期性扫描 控制台版本的客户端 图形化界面 设计图形化界面 项目…...

记录开发中遇到关于MySQL的一些问题-MySQL版

本篇文章是记录开发中遇到关于MySQL的一些问题&#xff1a; 希望在这篇文章也能够找到你正在查找的问题&#xff0c;解决问题 Good Luck ! 关于Id 的一些问题 数据库并没有直接写SQL&#xff0c;是通过使用IDEA 同一个公司下的数据库软件生成的&#xff08;DataGrip&#xf…...

2023-10-06 LeetCode每日一题(买卖股票的最佳时机含手续费)

2023-10-06每日一题 一、题目编号 714. 买卖股票的最佳时机含手续费二、题目链接 点击跳转到题目位置 三、题目描述 给定一个整数数组 prices&#xff0c;其中 prices[i]表示第 i 天的股票价格 &#xff1b;整数 fee 代表了交易股票的手续费用。 你可以无限次地完成交易&…...

openGauss学习笔记-91 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT外部支持工具

文章目录 openGauss学习笔记-91 openGauss 数据库管理-内存优化表MOT管理-内存表特性-使用MOT-MOT使用MOT外部支持工具91.1 gs_ctl&#xff08;全量和增量&#xff09;91.2 gs_basebackup91.3 gs_dump91.4 gs_restore openGauss学习笔记-91 openGauss 数据库管理-内存优化表MOT…...

PostgreSQL快速入门

PostgreSQL快速入门&#xff1a;轻松掌握强大的开源数据库 PostgreSQL&#xff08;简称Postgres&#xff09;是一款强大、可定制且免费的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;。它以其高级功能、可扩展性和安全性而著称&#xff0c;被广泛用于各种规模的项目…...

MATLAB:线性系统的建模与仿真(含完整程序)

目录 前言实验内容一、先看作业题目要求二、作业正文Modeling LTI systemsEstablish model1.tf(sys2)2. tf(sys3)3.zpk(sys1)4. zpk(sys3)5. ss(sys1)6. ss(sys2)7.[num,den] tfdata(sys1)8.[num,den] tfdata(sys2)9.[num,den] tfdata(sys3)10.[num,den] tfdata(sys1,’v’…...

mycat实现mysql读写分离

架构图&#xff1a; 视频地址...

武昌武汉网站推广/如何营销

我们在计算机科学和数学里经常用到映射概念,这里打个比方就容易理解了 不废话 直接作出最直白的解释 : 生活里存在大量的对应 : 比如一个人的身份证号对应一个人 一张电影票对应一个人 一个丈夫配一个妻子 或者一个丈夫配多个妻子&#xff1f;&#xff1f;&#xff01;&am…...

人大门户网站建设情况/成都网站建设方案服务

返回值只能是int&#xff0c;默认返回0. 输入参数(默认) input 输出参数 output转载于:https://www.cnblogs.com/andhm/archive/2010/05/25/1743697.html...

wordpress 优化设置/南宁百度关键词优化

利用快代理搭建属于自己的IP代理池 快代理url如下&#xff1a;https://www.kuaidaili.com/free 注&#xff1a;仅用来记录自己的学习&#xff01;&#xff01;&#xff01; 不要随意用于商业用途 看到网上搭的代理池对小白不太友好&#xff0c;于是搭建了一个属于自己的IP代理…...

网站背景视频是怎么做的/北京今日重大新闻

Python由于开源&#xff0c;所以拥有大量的第三方模块。 基本上&#xff0c;所有的第三方模块都会在PyPI - the Python Package Index上注册&#xff0c;只要找到对应的模块名字&#xff0c;使用easy_install或者pip即可安装。 PIL&#xff1a;Python Imaging Library&#xff…...

青海省教育厅门户网站学籍查询/百度商家怎么入驻

近日&#xff0c;某上海大厂程序员&#xff0c;29岁年薪120万&#xff0c;在知乎上发帖征婚。引发了众多网友的纷纷议论。发帖者称&#xff1a;自己现在是国内某互联网大厂的程序员。具体帖子如下本人情况&#xff1a;29岁&#xff0c;年薪税前20W&#xff0c;互联网行业。感受…...

哪个网站做ic外单好/引流推广方法

可能的异常 关于FreeMarker发生的异常&#xff0c;可以分为如下几类&#xff1a; 当加载和解析模板时发生异常&#xff1a;调用Configuration.getTemplate()方法&#xff0c;FreeMarker就要把模板文件加载到内存中然后来解析它。在这期间&#xff0c;有两种异常可能发生&#…...