最新资讯

  • 【Linux篇】深入理解文件系统:从基础概念到 ext2 文件系统的应用与解析

【Linux篇】深入理解文件系统:从基础概念到 ext2 文件系统的应用与解析

2025-04-27 00:00:32 2 阅读

文件系统的魔法:让计算机理解并存储你的数据

  • 一. 文件系统
    • 1.1 块
    • 1.2 分区
    • 1.3 inode(索引节点)
  • 二. ext2文件系统
    • 2.1 认识文件系统
    • 2.2 Block Group (块组)
      • 2.2.1 Block Group 的基本概念
      • 2.2.2 Block Group 的作用
    • 2.3 块组内部结构
      • 2.3.1 超级块(Super Block)
      • 2.3.2 GDT(Group Descriptor Table)
      • 2.3.3 块位图(Block Bitmap)
      • 2.3.4 inode位图(Inode Bitmap)
      • 2.3.5 inode表
      • 2.3.6 Data Block(数据块)
    • 2.4 目录与文件名
    • 2.5 路径解析
      • 2.5.1 路径解析与文件系统一致性
    • 2.6 路径缓存
    • 2.7 挂载分区
  • 三. 最后

本文将介绍文件系统的基本概念及其重要性。文件系统作为操作系统的一部分,负责管理存储设备上的数据存储、读取和组织方式。它提供了一种高效且可靠的方法来存储和检索文件,使得操作系统能够有效地管理大量数据。本文将从文件系统的基本架构、常见类型、以及其在实际应用中的表现和优化策略等方面展开讨论,旨在帮助读者理解文件系统如何支持现代计算环境中的数据存储需求。

💬 欢迎讨论:如果你在学习过程中有任何问题或想法,欢迎在评论区留言,我们一起交流学习。你的支持是我继续创作的动力! 👍
点赞、收藏与分享:觉得这篇文章对你有帮助吗?别忘了点赞、收藏并分享给更多的小伙伴哦!你们的支持是我不断进步的动力! 🚀
分享给更多人:如果你觉得这篇文章对你有帮助,欢迎分享给更多对Linux OS感兴趣的朋友,让我们一起进步!

一. 文件系统

打开的文件被内存管理着,实际是进程通过相关数据结构将每个对象进行关联;而未被打开的文件被保存在磁盘上,一般是未被打开的文件占据最多。

1.1 块

文件系统块(也称为磁盘块)是操作系统用来管理磁盘空间的基本单位。它的引入主要解决了两个问题:一个是磁盘的访问效率,另一个是存储空间的管理。块的大小最常见为4KB,即八个扇区组成一个块。块是文件存取的最小单位。

LBA(Logical Block Address)逻辑块地址,本质是线性地址。


块号=LBA/8,因为LBA是线性的像数组一样,8个扇区是一个块。
LBA=块号*8+n(n指的是指定扇区的第几个位置)。

1.2 分区

文件系统分区是指将磁盘划分为多个逻辑上独立的区域,每个区域可以格式化为独立的文件系统,用于存储数据和文件。分区的引入主要是为了提高磁盘的管理效率,优化存储空间的利用,同时也增强了系统的安全性和可扩展性。通过分区,操作系统能够在同一物理磁盘上为不同类型的数据提供不同的存储环境,例如操作系统、应用程序和用户数据可以分别存储在不同的分区中,从而避免它们之间的相互干扰。每个分区可以使用不同的文件系统格式(如NTFS、FAT32、ext4等),以满足不同需求的性能和功能要求。此外,分区还可以提供数据隔离,一旦一个分区发生故障,其他分区的数据不会受到影响,增加了数据的安全性。通过分区,系统管理员可以更方便地管理磁盘,进行备份、恢复或扩展,也便于磁盘的高效利用和性能优化。

1.3 inode(索引节点)

文件=内容(数据)+ 属性,文件的内容存储在哪里呢???存在inode表中。

查看inode的命令格式:

ls -li

  • 示例:

ls usercode.c -li
1061373 -rw-rw-r-- 1 wch_1 wch_1 404 Apr 12 17:37 usercode.c

  • 1061273:inode编号
  • -rw-rw-r-- :权限
  • 1:硬链接数
  • wch_1 :拥有者
  • wch_1:所属组
  • 404:文件大小
  • Apr 12 17:37:最近修改时间
  • usercode.c:文件名

还有另一个方式:stat 文件名

  • 示例:

stat usercode.c

inode是文件的唯一标识符,有且仅有一个,叫做inode号。

二. ext2文件系统

前言:文件系统有很多的分类,如:

  • ext3/ext4: Linux 中广泛使用的文件系统,ext4 是其更先进的版本,支持更大的文件系统和更高效的数据存储。
  • JFS(Journaled File System): IBM 开发的日志文件系统,广泛应用于高性能服务器。
  • ReiserFS: 另一个支持日志的文件系统,主要用于 Linux 系统。

虽然文件种类很多,本文章主要以ext2文件系统为例。

2.1 认识文件系统

文件系统的目的是组织和管理硬盘上的文件,确保文件能够在磁盘上高效、安全地存储和访问。格式化硬盘是将硬盘转化为特定文件系统的过程,这样硬盘就能够被操作系统识别并使用。文件系统的设计和选择影响文件存储的性能、安全性以及后续的扩展能力,因此根据应用需求选择合适的文件系统非常重要。

“只要能管理一个分区,就能管理所有分区,也就能管理所有磁盘文件” 这句话的含义是:ext2 文件系统通过将硬盘分区划分成多个相同大小的块组来管理数据,每个块组都有独立的管理机制。只要操作系统能够理解和管理一个分区中的块组结构,它就能通过相同的方式管理其他分区和整个磁盘中的所有文件。这个设计使得文件系统管理的过程更加简洁和高效,便于扩展。

上面可以看到分区的前面存在Boot Sector。下面将介绍一下它。

  • Boot Sector(启动扇区)

Boot Sector(启动扇区)是计算机存储设备(如硬盘、固态硬盘、U盘等)上的一个特殊区域,用于存放引导操作系统的相关信息。它是系统启动过程中的重要组成部分,负责将操作系统加载到内存并开始执行。

  • Boot Sector 是存储设备上的特殊区域,负责启动操作系统。
  • 在传统的 BIOS 系统中,它通常指的是 MBR,包含引导程序和分区表信息。
  • 在现代的 UEFI 系统中,启动信息存储在 EFI System Partition (ESP) 中。
  • Boot Sector 是计算机启动过程的关键,确保操作系统能够加载并执行。

2.2 Block Group (块组)

Block Group 是一种用于文件系统中存储和组织数据的结构,尤其在 ext2、ext3 和 ext4 等文件系统中应用广泛。它是一种将文件系统数据划分成更小单元的方式,以便提高磁盘访问的效率并确保数据的组织性。

2.2.1 Block Group 的基本概念

在 ext2/3/4 文件系统中,磁盘分区(或硬盘)被划分为多个 Block Group。每个 Block Group 是磁盘上的一个逻辑单位,通常由以下几个部分组成:

  • 数据块(Data Blocks): 存储文件的实际数据。
  • inode 表(Inode Table): 存储文件的元数据,如文件的权限、大小、创建时间等信息。
  • 超级块(Superblock): 存储关于文件系统的总体信息,如文件系统的大小、已用空间、剩余空间等。
  • 块位图(Block Bitmap): 用于标记哪些数据块是空闲的,哪些是已经使用的。
  • inode 位图(Inode Bitmap): 用于标记哪些 inode 是空闲的,哪些是已经使用的。

2.2.2 Block Group 的作用

Block Group 的设计目的有几个,主要包括以下几点:

  1. 提高访问效率: 将硬盘分为多个 Block Group 有助于提高文件系统的性能。每个 Block Group 内的数据结构相对独立,这样操作系统可以更快地定位文件。每个块组中的 inode 表 和 数据块尽量靠近,这样可以减少磁盘寻道时间,提高文件读取速度。
  2. 避免碎片化: 通过将文件的 inode 和 数据块 组织在同一个块组内,ext系列文件系统能有效地减少碎片化。这样,文件的数据和它的元数据被存放在同一块区域,读写操作更加连续,减少了由于寻址不连续带来的磁盘碎片。
  3. 管理和分配空间 :每个 Block Group 都有一个独立的位图,标记数据块和 inode
    的使用情况。这使得文件系统可以灵活地管理磁盘空间,减少不必要的磁盘访问和冲突。在一个文件系统中,如果所有数据都集中在一个大块区域,访问时可能需要更多的寻址和空间管理,使用Block Group 的方法可以使得空间管理更加高效。
  4. 容错性与恢复:由于文件系统是通过多个块组管理磁盘空间,一些块组发生错误时,其他块组仍然能够正常工作,这提高了文件系统的容错性。损坏的块组可以通过文件系统的修复工具进行恢复,而不必影响整个磁盘。

下面将详细介绍块组内部的结构即功能。😆

2.3 块组内部结构

2.3.1 超级块(Super Block)

Superblock(超级块)是文件系统中的一个重要结构,负责存储有关文件系统的元数据。它是文件系统的核心部分之一,用于描述文件系统的总体信息,包括文件系统的大小、空闲空间、块的大小、文件系统的状态等。每个文件系统都有一个 超级块,它是文件系统结构的关键。

Superblock 的作用

Superblock 存储了文件系统的基本信息,这些信息对于文件系统的运行和维护至关重要。它主要包括以下内容:

  1. 文件系统的总大小: 文件系统的总大小(以字节为单位)以及文件系统使用的总块数。
  2. 块大小(Block Size): 文件系统中每个块的大小(通常为 512 字节、1 KB、2 KB、4 KB等)。块大小决定了文件系统数据存储的最小单位。
  3. 空闲空间的信息: 包括文件系统中空闲块的数量、空闲 inode 的数量等。这些信息用于文件分配和空间管理。
  4. inode 信息: 包括文件系统总共有多少个 inode、每个 inode 占用多少空间,以及 inode 表的位置等。
  5. 文件系统状态: 用于记录文件系统的健康状态(如是否需要修复),并存储文件系统的版本信息。
  6. 文件系统的创建时间、最后挂载时间、文件系统的版本等: 用于文件系统管理和维护。
  7. 块位图(Block Bitmap)和 inode 位图(Inode Bitmap)的状态信息: 用于跟踪哪些数据块和 inode是空闲的,哪些已经被分配。

一个超级块存在很多备份,防止丢失,可以系统调用(如 Linux 中的 fsck 命令)来检查和修复文件系统。在文件系统损坏时,fsck 会使用 superblock 中的信息来尝试恢复文件系统的状态。

总结:
Superblock 是文件系统中最重要的数据结构之一,它包含文件系统的总体配置信息、空闲空间、inode 信息等。文件系统的初始化、挂载、空间管理、数据恢复等操作都离不开 superblock 的帮助。在文件系统损坏或异常的情况下,superblock 还提供了修复文件系统所需要的关键数据。

2.3.2 GDT(Group Descriptor Table)

块组描述表(Block Group Descriptor Table) 是在一些文件系统中用于管理块组(Block Group)信息的数据结构,尤其是在 ext2、ext3、ext4 等文件系统中,块组描述表是管理磁盘空间的核心部分之一。

用于描述块组的属性信息,块组与块组描述符一一对应。

块组描述表的结构

在 ext2、ext3 和 ext4 文件系统中,块组描述表的每个条目通常包含以下信息:

  1. 块组的起始地址(Block Group Start Address): 用于表示该块组在磁盘上的物理起始位置。
  2. 数据块位图的地址(Block Bitmap): 存储块组内所有数据块的分配情况。它是一个位图,每一位代表一个数据块,0 表示空闲,1表示已分配。
  3. inode 位图的地址(Inode Bitmap): 存储块组内所有 inode 的分配情况。它同样是一个位图,每一位表示一个inode,0 表示空闲,1 表示已分配。
  4. inode 表的地址(Inode Table): 存储该块组内所有 inode 的数据结构,每个 inode
    包含一个文件的元数据。文件的创建、删除、修改等操作都与 inode 表的管理紧密相关。
  5. 块组的空闲块数(Free Block Count): 记录该块组内空闲数据块的数量。
  6. 块组的空闲 inode 数量(Free Inode Count): 记录该块组内空闲 inode 的数量。
  7. 已分配的目录项数(Used Directory Count): 记录该块组中目录 inode
    的数量,这对于管理文件系统中的目录结构非常重要。

块组描述表与超级块的关系

超级块 和 块组描述表 是密切相关的。在 ext2/3/4 文件系统中,超级块 存储文件系统的整体信息,如文件系统的总大小、块大小、inode 数量等,而 块组描述表 则存储每个块组的管理信息。超级块会包含一个指向块组描述表的指针,操作系统通过这个指针来访问并更新块组的状态。

2.3.3 块位图(Block Bitmap)

Block Bitmap中记录着Data Block中哪个数据块已经被占⽤,哪个数据块没有被占⽤。

2.3.4 inode位图(Inode Bitmap)

每个bit表⽰⼀个inode是否空闲可⽤。

2.3.5 inode表

  • 存放⽂件属性 如 ⽂件⼤⼩,所有者,最近修改时间等
  • 当前分组所有Inode属性的集合
  • inode编号以分区为单位,整体划分,不可跨分区

2.3.6 Data Block(数据块)

Data Block(数据块)是文件系统中用于存储实际文件内容的最小单位。它是文件系统中存储数据的基本结构。每个 Data Block 都包含文件的实际数据,而不仅仅是元数据(如文件的权限、所有者、修改时间等),这些元数据通常存储在 inode(索引节点)中。数据块使得文件系统能够高效地管理和存储文件内容。

思考:知道inode号的情况下,在指定分区,请解释:对⽂件进⾏增、删、查、改是在
做什么?

  1. 查(查找文件):查找inode,通过inode指针访问数据块。
  2. 增(增添数据):查找数据块(通过块位图和inode位图查找空闲的数据块),修改inode,写入数据。
  3. 删(删除文件):查找inode和数据块,释放数据块和inode,同时更改目录项。
  4. 改(修改文件):查找inode,更新数据块同时修改文件大小。

上述文件系统结构还是没看到文件名存在哪里???它存在哪里呢?下面将揭晓此答案。

2.4 目录与文件名

目录保存的内容是:文件名与inode号的映射关系。
OS会记录当前的工作路径,通过文件名与映射关系深度进行路径解析。

2.5 路径解析

路径解析 是操作系统和文件系统用来确定文件或目录在存储介质(如硬盘)上的位置的过程。路径解析的目的是从文件的路径名称中找到与其对应的 inode,并通过文件系统中的目录结构和索引节点,最终定位到实际的数据块(Data Block)。在这个过程中,操作系统需要解析给定的文件路径,找到文件的 inode 号,然后通过这个 inode 号 获取文件的元数据以及文件的存储位置。

2.5.1 路径解析与文件系统一致性

文件系统需要确保在路径解析过程中保持一致性。例如,在路径解析时,如果文件或目录被删除或移动,操作系统需要更新目录项和 inode 信息,以保持文件系统的一致性和可靠性。很多现代文件系统通过 日志记录(journaling) 或 写时复制(Copy-on-Write) 技术确保路径解析和其他文件系统操作的原子性。

总结

路径解析是操作系统查找文件或目录在文件系统中的过程。根据给定的路径(无论是绝对路径还是相对路径),操作系统逐级查找目录项并通过 inode 号 获取文件的元数据和数据块。在符号链接存在的情况下,路径解析还需要处理链接的目标路径。路径解析涉及到文件系统中的 目录项 和 inode 表,并通过它们来定位文件的实际内容。

2.6 路径缓存

访问任何文件到要从/目录开始进行路径解析吗?原则上是,实际LinuxOS会缓存历史的路径结构,存在于一个数据结构对象struct dentry,本质上是一个多叉树结构。所有文件都有dentry结构,所有被打开的文件就可以在内存中形成树形结构。

2.7 挂载分区

挂载分区是将物理磁盘分区、光盘、USB 驱动器等存储设备与操作系统的文件系统结构相连接的过程。一旦挂载,操作系统可以将该分区或设备的文件与其它文件进行交互,就像它们是计算机本地的文件一样。挂载后,文件系统中的路径可以直接访问该分区的数据。

本人理解:实际就是将需要访问的设备或数据尾插入到目录,

  • 挂载命令

在大多数 Linux 系统中,可以使用 mount 命令挂载分区。基本的挂载命令格式如下:

mount <设备文件> <挂载点>

例如,要将设备 /dev/sdb1 挂载到 /mnt/usb 目录,可以使用以下命令:

sudo mount /dev/sdb1 /mnt/usb

  • 挂载选项

mount 命令可以使用不同的选项来控制挂载过程。例如:

-t:指定文件系统类型,如 ext4、ntfs、vfat 等。例如:

sudo mount -t ext4 /dev/sdb1 /mnt/usb

-o:指定挂载选项,如只读(ro)、读写(rw)、设置文件权限等。例如:

sudo mount -o ro /dev/sdb1 /mnt/usb

-a:挂载 /etc/fstab 中列出的所有文件系统。例如:

sudo mount -a

总结:挂载分区 是将物理分区或设备连接到操作系统目录结构中的过程,使得分区上的文件和目录能够在操作系统中被访问。

  1. 使用 mount 命令可以将设备挂载到指定的目录,挂载成功后,文件系统中的路径就能访问分区数据。
  2. 可以通过 /etc/fstab 配置文件设置自动挂载,确保分区在系统启动时自动挂载。
  3. 卸载分区 使用 umount 命令,这样可以确保文件系统完整性。
  4. 通过挂载分区,操作系统能够灵活地管理不同存储设备,使得用户能够方便地访问各类存储介质上的数据。

三. 最后

本文介绍了文件系统的基本概念及其在操作系统中的重要性。文件系统通过分区、块、inode等结构管理磁盘上的数据,并提供高效的数据存储与访问方式。重点讲解了ext2 文件系统,介绍了其基本架构、块组(Block Group)的设计与作用,以及 超级块、GDT、inode 位图 和 数据块等组成部分。文件路径解析和文件名映射也被详细说明,强调了操作系统如何通过 inode号定位文件数据块。最后,介绍了如何挂载分区,使不同存储设备的数据能与文件系统结构连接,便于访问和管理。

路虽远,行则将至;事虽难,做则必成

亲爱的读者们,下一篇文章再会!!! color{Red}亲爱的读者们,下一篇文章再会!!! 亲爱的读者们,下一篇文章再会!!!

本文地址:https://www.vps345.com/2532.html

搜索文章

Tags

PV计算 带宽计算 流量带宽 服务器带宽 上行带宽 上行速率 什么是上行带宽? CC攻击 攻击怎么办 流量攻击 DDOS攻击 服务器被攻击怎么办 源IP 服务器 linux 运维 游戏 云计算 python MCP javascript 前端 chrome edge ssh 阿里云 网络 网络安全 网络协议 llama 算法 opencv 自然语言处理 神经网络 语言模型 ubuntu deepseek Ollama 模型联网 API CherryStudio 进程 操作系统 进程控制 Ubuntu fastapi mcp mcp-proxy mcp-inspector fastapi-mcp agent sse harmonyos 华为 开发语言 typescript 计算机网络 数据库 centos oracle 关系型 安全 分布式 RTSP xop RTP RTSPServer 推流 视频 golang spring boot 后端 java tomcat GaN HEMT 氮化镓 单粒子烧毁 辐射损伤 辐照效应 pycharm ide pytorch 人工智能 rust http ssl 前端框架 深度学习 YOLO 目标检测 计算机视觉 jenkins LDAP filezilla 无法连接服务器 连接被服务器拒绝 vsftpd 331/530 macos adb docker 容器 nginx 监控 自动化运维 智能路由器 外网访问 内网穿透 端口映射 运维开发 windows django flask web3.py numpy live555 rtsp rtp Hyper-V WinRM TrustedHosts 机器学习 web安全 Kali Linux 黑客 渗透测试 信息收集 笔记 C 环境变量 进程地址空间 github 创意 社区 Flask FastAPI Waitress Gunicorn uWSGI Uvicorn flutter react.js 前端面试题 node.js 持续部署 tcp/ip android 鸿蒙 Dell R750XS 科技 ai 个人开发 udp unity uni-app ollama llm php 面试 性能优化 jdk intellij-idea 架构 ruoyi minicom 串口调试工具 测试工具 DeepSeek行业应用 DeepSeek Heroku 网站部署 自动化 蓝耘科技 元生代平台工作流 ComfyUI websocket 宝塔面板访问不了 宝塔面板网站访问不了 宝塔面板怎么配置网站能访问 宝塔面板配置ip访问 宝塔面板配置域名访问教程 宝塔面板配置教程 postman mock mock server 模拟服务器 mock服务器 Postman内置变量 Postman随机数据 ffmpeg 音视频 c++ ESP32 gitee nuxt3 vue3 实时音视频 vscode react next.js 部署 部署next.js c语言 microsoft vue.js audio vue音乐播放器 vue播放音频文件 Audio音频播放器自定义样式 播放暂停进度条音量调节快进快退 自定义audio覆盖默认样式 bash 银河麒麟服务器操作系统 系统激活 .net 负载均衡 安全威胁分析 elasticsearch openEuler unity3d AI 爬虫 数据集 银河麒麟 kylin v10 麒麟 v10 spring 物联网 单片机 fpga开发 gitlab express okhttp CORS 跨域 计算机外设 电脑 mac 软件需求 HarmonyOS Next mysql 虚拟化 半虚拟化 硬件虚拟化 Hypervisor wsl2 wsl jmeter 软件测试 HCIE 数通 系统架构 大模型微调 debian Samba NAS maven intellij idea 腾讯云 word图片自动上传 word一键转存 复制word图片 复制word图文 复制word公式 粘贴word图文 粘贴word公式 dubbo android studio .netcore gateway Clion Nova ResharperC++引擎 Centos7 远程开发 微信 微信分享 Image wxopensdk echarts 信息可视化 数据分析 网页设计 产品经理 agi vim 开源 conda pillow json html5 firefox sqlserver kamailio sip VoIP 大数据 大数据平台 系统开发 binder 车载系统 framework 源码环境 统信 国产操作系统 虚拟机安装 jar WSL win11 无法解析服务器的名称或地址 stm32 W5500 OLED u8g2 TCP服务器 linux环境变量 excel prometheus k8s资源监控 annotations自动化 自动化监控 监控service 监控jvm 安装教程 GPU环境配置 Ubuntu22 CUDA PyTorch Anaconda安装 kubernetes 学习方法 经验分享 程序人生 低代码 openwrt Docker Compose docker compose docker-compose webrtc asm pdf 多线程服务器 Linux网络编程 av1 电视盒子 机顶盒ROM 魔百盒刷机 1024程序员节 springsecurity6 oauth2 授权服务器 token sas 3d 数学建模 DeepSeek-R1 API接口 svn list 数据结构 visualstudio Trae AI编程 AI代码编辑器 ArcTS 登录 ArcUI GridItem 向日葵 redis qt 嵌入式硬件 EasyConnect Cline ecmascript nextjs reactjs https 流式接口 DigitalOcean GPU服务器购买 GPU服务器哪里有 GPU服务器 apache Deepseek 交互 mount挂载磁盘 wrong fs type LVM挂载磁盘 Centos7.9 企业微信 Linux24.04 deepin 搜索引擎 HTML audio 控件组件 vue3 audio音乐播放器 Audio标签自定义样式默认 vue3播放音频文件音效音乐 自定义audio播放器样式 播放暂停调整声音大小下载文件 代码调试 ipdb 云原生 软件工程 c# NPS 雨云服务器 雨云 环境迁移 IIS .net core Hosting Bundle .NET Framework vs2022 僵尸进程 es jvm cpu 内存 实时 使用 VMware安装Ubuntu Ubuntu安装k8s k8s mysql离线安装 ubuntu22.04 mysql8.0 YOLOv12 go 代理模式 Windsurf 媒体 微信公众平台 centos-root /dev/mapper yum clean all df -h / du -sh 多进程 串口服务器 Qwen2.5-coder 离线部署 kvm 无桌面 命令行 matlab web Socket YOLOv8 NPU Atlas800 A300I pro asi_bench Dify firewalld 缓存 ecm bpm mybatis ddos stm32项目 mongodb chatgpt 大模型 llama3 Chatglm 开源大模型 音乐服务器 Navidrome 音流 ping++ PVE 微服务 springcloud Reactor 设计模式 C++ zotero WebDAV 同步失败 ansible playbook java-ee 嵌入式 linux驱动开发 arm开发 iot 服务器配置 华为云 温湿度数据上传到服务器 Arduino HTTP rabbitmq dell服务器 硬件架构 指令 html 集成学习 集成测试 ollama下载加速 学习 服务器繁忙 sql KingBase 博客 文件系统 路径解析 devops springboot oceanbase rc.local 开机自启 systemd 麒麟 unix kylin 深度优先 图论 并集查找 换根法 树上倍增 智能手机 Termux Linux 银河麒麟桌面操作系统 Kylin OS 国产化 xss 在线预览 xlsx xls文件 在浏览器直接打开解析xls表格 前端实现vue3打开excel 文件地址url或接口文档流二进 系统安全 jupyter pip AIGC 远程工作 游戏机 pppoe radius yum源切换 更换国内yum源 hugo RAGFLOW RAG 检索增强生成 文档解析 大模型垂直应用 Netty 即时通信 NIO ESXi Dell HPE 联想 浪潮 SWAT 配置文件 服务管理 网络共享 HTTP 服务器控制 ESP32 DeepSeek gaussdb vasp安装 远程桌面 交叉编译 git visual studio code AI写作 AI作画 ui IIS服务器 IIS性能 日志监控 QQ 聊天室 spring cloud ocr asp.net大文件上传 asp.net大文件上传源码 ASP.NET断点续传 asp.net上传文件夹 asp.net上传大文件 .net core断点续传 .net mvc断点续传 micropython esp32 mqtt AI agent 思科模拟器 思科 Cisco 医疗APP开发 app开发 信息与通信 算力 gpu算力 Radius 机器人 googlecloud GCC Linux环境 npm 数据挖掘 r语言 数据可视化 ip命令 新增网卡 新增IP 启动网卡 qt项目 qt项目实战 qt教程 命令 矩阵 小程序 minio 服务器管理 宝塔面板 配置教程 服务器安装 网站管理 国标28181 视频监控 监控接入 语音广播 流程 SIP SDP 其他 职场和发展 docker命令大全 5G 3GPP 卫星通信 windwos防火墙 defender防火墙 win防火墙白名单 防火墙白名单效果 防火墙只允许指定应用上网 防火墙允许指定上网其它禁止 根服务器 clickhouse 怎么卸载MySQL MySQL怎么卸载干净 MySQL卸载重新安装教程 MySQL5.7卸载 Linux卸载MySQL8.0 如何卸载MySQL教程 MySQL卸载与安装 kali 共享文件夹 虚拟机 客户端 virtualenv arm 社交电子 数据库系统 selenium EMQX MQTT 通信协议 kafka hibernate EMUI 回退 降级 升级 弹性计算 KVM 计算虚拟化 弹性裸金属 工业4.0 银河麒麟高级服务器 外接硬盘 Kylin protobuf 序列化和反序列化 安装 linux安装配置 VMware AD 域管理 Docker Hub docker pull 镜像源 daemon.json 网站搭建 serv00 chfs ubuntu 16.04 Ubuntu 24 常用命令 Ubuntu 24 Ubuntu vi 异常处理 自动驾驶 漏洞 kind 微信开放平台 微信公众号配置 远程登录 telnet 同步 备份 建站 zabbix 强制清理 强制删除 mac废纸篓 ci/cd 软件构建 vscode 1.86 laravel grafana 小智AI服务端 xiaozhi ASR TTS 直流充电桩 充电桩 IPMI Agent junit 游戏程序 ios 编辑器 鸿蒙系统 灵办AI 需求分析 规格说明书 bug 豆瓣 追剧助手 迅雷 nas 链表 云服务器 裸金属服务器 弹性裸金属服务器 p2p xml Claude Ark-TS语言 c 网络穿透 火绒安全 Nuxt.js SSH Xterminal efficientVIT YOLOv8替换主干网络 TOLOv8 恒源云 cmos 硬件 我的世界服务器搭建 minecraft 备选 网站 api 调用 示例 AD域 vSphere vCenter 软件定义数据中心 sddc 图形化界面 cnn DenseNet 反向代理 致远OA OA服务器 服务器磁盘扩容 CPU 主板 电源 网卡 postgresql dns uniapp vue AI大模型 程序员 大模型入门 上传视频至服务器代码 vue3批量上传多个视频并预览 如何实现将本地视频上传到网页 element plu视频上传 ant design vue vue3本地上传视频及预览移除 aws C语言 JAVA Java 边缘计算 智能硬件 GoogLeNet AutoDL 重启 排查 系统重启 日志 原因 VMware安装mocOS macOS系统安装 crosstool-ng rpc pgpool 多层架构 解耦 计算机 gpt 田俊楠 gcc 华为od eureka sqlite 华为认证 网络工程师 交换机 WSL2 MS Materials openssl 密码学 业界资讯 USB网络共享 鲲鹏 模拟退火算法 监控k8s集群 集群内prometheus code-server mosquitto 消息队列 无人机 selete 高级IO flink 华为机试 Python AISphereButler 课程设计 自定义客户端 SAS hadoop shell outlook docker run 数据卷挂载 交互模式 vmware 卡死 rust腐蚀 框架搭建 LInux ai小智 语音助手 ai小智配网 ai小智教程 esp32语音助手 diy语音助手 回显服务器 UDP的API使用 技能大赛 armbian u-boot 大模型教程 remote-ssh Linux PID ros2 moveit 机器人运动 ukui 麒麟kylinos openeuler 超融合 微信小程序 RustDesk自建服务器 rustdesk服务器 docker rustdesk MacMini Mac 迷你主机 mini Apple mcu 宠物 毕业设计 免费学习 宠物领养 宠物平台 ftp VPS pyqt eNSP 网络规划 VLAN 企业网络 wireshark 显示过滤器 ICMP Wireshark安装 小艺 Pura X 微信小程序域名配置 微信小程序服务器域名 微信小程序合法域名 小程序配置业务域名 微信小程序需要域名吗 微信小程序添加域名 VM搭建win2012 win2012应急响应靶机搭建 攻击者获取服务器权限 上传wakaung病毒 应急响应并溯源 挖矿病毒处置 应急响应综合性靶场 pygame 网络用户购物行为分析可视化平台 大数据毕业设计 tcp ux 多线程 vscode1.86 1.86版本 ssh远程连接 匿名管道 命名管道 tcpdump open Euler dde 统信UOS yum RTMP 应用层 LLM Web APP Streamlit big data perf 昇腾 npu opensearch helm 服务器主板 AI芯片 飞书 MI300x 孤岛惊魂4 dify WebRTC OD机试真题 华为OD机试真题 服务器能耗统计 蓝桥杯 sysctl.conf vm.nr_hugepages adobe 传统数据库升级 银行 大语言模型 LLMs 单一职责原则 网络编程 聊天服务器 套接字 TCP LLM IPMITOOL BMC 硬件管理 opcua opcda KEPServer安装 oneapi open webui openstack Xen VR手套 数据手套 动捕手套 动捕数据手套 游戏服务器 TrinityCore 魔兽世界 服务器数据恢复 数据恢复 存储数据恢复 北亚数据恢复 oracle数据恢复 Headless Linux dba 客户端与服务端通信 nac 802.1 portal asp.net大文件上传下载 群晖 文件分享 7z 中间件 iis VSCode 移动云 云服务 输入法 可信计算技术 FTP 服务器 XCC Lenovo TRAE elk Logstash 日志采集 繁忙 解决办法 替代网站 汇总推荐 AI推理 网络结构图 Playwright 自动化测试 安全架构 zookeeper saltstack nfs 服务器部署ai模型 embedding SSL 域名 RAID RAID技术 磁盘 存储 rsyslog Anolis nginx安装 环境安装 linux插件下载 NFS raid5数据恢复 磁盘阵列数据恢复 DevEco Studio skynet 僵尸世界大战 游戏服务器搭建 远程控制 远程看看 远程协助 远程 执行 sshpass 操作 银河麒麟操作系统 阿里云ECS 驱动开发 硬件工程 嵌入式实习 LORA NLP 实时互动 ceph chrome devtools chromedriver 三级等保 服务器审计日志备份 v10 软件 arkUI 政务 分布式系统 监控运维 Prometheus Grafana IDE AI 原生集成开发环境 Trae AI 大模型应用 深度求索 私域 知识库 黑客技术 Linux的基础指令 gpt-3 文心一言 Cursor URL 本地部署 架构与原理 rocketmq 网络攻击模型 Kylin-Server 多个客户端访问 IO多路复用 TCP相关API 腾讯云大模型知识引擎 小番茄C盘清理 便捷易用C盘清理工具 小番茄C盘清理的优势尽显何处? 教你深度体验小番茄C盘清理 C盘变红?!不知所措? C盘瘦身后电脑会发生什么变化? Google pay Apple pay SSE 语法 safari 系统 etcd 数据安全 RBAC 网工 历史版本 下载 压测 ECS frp ssrf 失效的访问控制 金融 seatunnel sdkman Unity Dedicated Server Host Client 无头主机 开发环境 SSL证书 报错 vue-i18n 国际化多语言 vue2中英文切换详细教程 如何动态加载i18n语言包 把语言json放到服务器调用 前端调用api获取语言配置文件 nvidia 黑苹果 xrdp 远程连接 小游戏 五子棋 string模拟实现 深拷贝 浅拷贝 经典的string类问题 三个swap Ubuntu 24.04.1 轻量级服务器 redhat 视觉检测 VMware创建虚拟机 性能测试 功能测试 alias unalias 别名 odoo 服务器动作 Server action 双系统 GRUB引导 Linux技巧 tidb GLIBC 能力提升 面试宝典 技术 IT信息化 cuda cudnn 崖山数据库 YashanDB springboot远程调试 java项目远程debug docker远程debug java项目远程调试 springboot远程 视频编解码 源码剖析 rtsp实现步骤 流媒体开发 直播推流 高效日志打印 串口通信日志 服务器日志 系统状态监控日志 异常记录日志 毕设 midjourney 相差8小时 UTC 时间 源码 netty 代码托管服务 支付 微信支付 开放平台 远程过程调用 Windows环境 混合开发 JDK regedit 开机启动 risc-v wordpress 无法访问wordpess后台 打开网站页面错乱 linux宝塔面板 wordpress更换服务器 自学笔记 小米 澎湃OS Android prompt IO模型 京东云 佛山戴尔服务器维修 佛山三水服务器维修 ipython 基础入门 编程 FTP服务器 状态管理的 UDP 服务器 Arduino RTOS hive Hive环境搭建 hive3环境 Hive远程模式 threejs 3D gitea gradle 干货分享 黑客工具 密码爆破 bootstrap 版本 C# MQTTS 双向认证 emqx 软考 n8n 工作流 workflow flash-attention css 联想开天P90Z装win10 Invalid Host allowedHosts 云电竞 云电脑 todesk 宕机切换 服务器宕机 g++ g++13 Cookie epoll bonding 链路聚合 压力测试 camera Arduino 电子信息 执法记录仪 智能安全帽 smarteye tailscale derp derper 中转 线性代数 电商平台 SysBench 基准测试 IDEA 互信 C++软件实战问题排查经验分享 0xfeeefeee 0xcdcdcdcd 动态库加载失败 程序启动失败 程序运行权限 标准用户权限与管理员权限 ue4 着色器 ue5 虚幻 lua 目标跟踪 OpenVINO 推理应用 Ubuntu Server Ubuntu 22.04.5 开机自启动 cursor MCP server C/S windows日志 数据库架构 数据管理 数据治理 数据编织 数据虚拟化 transformer 移动魔百盒 idm USB转串口 CH340 Minecraft 飞牛NAS 飞牛OS MacBook Pro Portainer搭建 Portainer使用 Portainer使用详解 Portainer详解 Portainer portainer DOIT 四博智联 thingsboard 音乐库 飞牛 实用教程 H3C iDRAC R720xd freebsd anaconda mamba Vmamba bot Docker 服务器无法访问 ip地址无法访问 无法访问宝塔面板 宝塔面板打不开 XFS xfs文件系统损坏 I_O error DNS 测试用例 磁盘监控 前后端分离 游戏引擎 策略模式 单例模式 FunASR 剧本 file server http server web server iphone 进程信号 muduo CLion X11 Xming iftop 网络流量监控 生物信息学 eclipse 图像处理 make命令 makefile文件 王者荣耀 Wi-Fi curl wget Spring Security Linux awk awk函数 awk结构 awk内置变量 awk参数 awk脚本 awk详解 mariadb Open WebUI rdp 实验 技术共享 安卓 linux 命令 sed 命令 设备 GPU PCI-Express 阻塞队列 生产者消费者模型 服务器崩坏原因 jetty undertow Linux无人智慧超市 LInux多线程服务器 QT项目 LInux项目 单片机项目 UOS 统信操作系统 设置代理 ISO镜像作为本地源 Ubuntu DeepSeek DeepSeek Ubuntu DeepSeek 本地部署 DeepSeek 知识库 DeepSeek 私有化知识库 本地部署 DeepSeek DeepSeek 私有化部署 SSH 服务 SSH Server OpenSSH Server Erlang OTP gen_server 热代码交换 事务语义 权限 MNN Qwen ip MacOS录屏软件 备份SQL Server数据库 数据库备份 傲梅企业备份网络版 easyui langchain WebUI DeepSeek V3 dns是什么 如何设置电脑dns dns应该如何设置 MQTT协议 消息服务器 代码 fd 文件描述符 串口驱动 CH341 uart 485 迁移指南 飞牛nas fnos 查看显卡进程 fuser log4j llama.cpp rustdesk win服务器架设 windows server Xinference RAGFlow vr 分布式训练 bcompare Beyond Compare 模拟器 教程 ruby DocFlow mq ubuntu24 vivado24 CentOS 状态模式 免费域名 域名解析 kotlin SVN Server tortoise svn 物联网开发 Linux的权限 webstorm 嵌入式Linux IPC perl 高效远程协作 TrustViewer体验 跨设备操作便利 智能远程控制 UOS1070e VS Code 李心怡 HAProxy edge浏览器 SEO deep learning 影刀 #影刀RPA# 显示管理器 lightdm gdm ArkUI 多端开发 智慧分发 应用生态 鸿蒙OS 监控k8s 监控kubernetes hexo Python基础 Python教程 Python技巧 apt WLAN 中兴光猫 换光猫 网络桥接 自己换光猫 程序 性能分析 idea 实习 大模型面经 大模型学习 AnythingLLM AnythingLLM安装 单元测试 内网服务器 内网代理 内网通信 软链接 硬链接 元服务 应用上架 换源 国内源 Debian CrewAI figma rime qemu libvirt 毕昇JDK WebVM 虚拟显示器 基础环境 流水线 脚本式流水线 金仓数据库 2025 征文 数据库平替用金仓 uv can 线程池 ros 查询数据库服务IP地址 SQL Server 语音识别 tensorflow trae 并查集 leetcode 端口测试 信号处理 wpf 问题解决 网络药理学 生信 gromacs 分子动力学模拟 MD 动力学模拟 deekseek ragflow top Linux top top命令详解 top命令重点 top常用参数 Ubuntu共享文件夹 共享目录 Linux共享文件夹 EtherNet/IP串口网关 EIP转RS485 EIP转Modbus EtherNet/IP网关协议 EIP转RS485网关 EIP串口服务器 ssh远程登录 ubuntu20.04 ros1 Noetic 20.04 apt 安装 wsgiref Web 服务器网关接口 ABAP 浏览器开发 AI浏览器 ssh漏洞 ssh9.9p2 CVE-2025-23419 k8s集群资源管理 云原生开发 fstab 分析解读 自动化编程 proxy模式 Jellyfin 本地部署AI大模型 烟花代码 烟花 元旦 存储维护 NetApp存储 EMC存储 性能调优 安全代理 本地知识库部署 DeepSeek R1 模型 etl 信号 TrueLicense lsb_release /etc/issue /proc/version uname -r 查看ubuntu版本 java-rocketmq 做raid 装系统 Java Applet URL操作 服务器建立 Socket编程 网络文件读取 ardunio BLE Kali 磁盘清理 react native cd 目录切换 powerpoint 环境配置 项目部署到linux服务器 项目部署过程 dity make CVE-2024-7347 autodl 实战案例 searxng Docker引擎已经停止 Docker无法使用 WSL进度一直是0 镜像加速地址 人工智能生成内容 DBeaver 数据仓库 kerberos web3 cfssl TCP协议 抗锯齿 产测工具框架 IMX6ULL 管理框架 neo4j 知识图谱 程序员创富 firewall IMM 智能音箱 智能家居 CDN python3.11 P2P HDLC Typore milvus linux上传下载 QT 5.12.12 QT开发环境 Ubuntu18.04 健康医疗 互联网医院 HarmonyOS spark HistoryServer Spark YARN jobhistory 数据库开发 database Redis Desktop MVS 海康威视相机 keepalived ROS sonoma 自动更新 IM即时通讯 剪切板对通 HTML FORMAT 聚类 xshell termius iterm2 yaml Ultralytics 可视化 GIS 遥感 WebGIS 大大通 第三代半导体 碳化硅 rclone AList webdav fnOS 虚拟局域网 Windows ai工具 xcode ldap 服务网格 istio 具身智能 强化学习 序列化反序列化 内网环境 h.264 OpenSSH matplotlib 软件卸载 系统清理 显卡驱动 合成模型 扩散模型 图像生成 vpn 容器技术 网卡的名称修改 eth0 ens33 jina IPv4 子网掩码 公网IP 私有IP SSH 密钥生成 SSH 公钥 私钥 生成 less 主从复制 大文件分片上传断点续传及进度条 如何批量上传超大文件并显示进度 axios大文件切片上传详细教 node服务器合并切片 vue3大文件上传报错提示错误 大文件秒传跨域报错cors cpp-httplib OpenHarmony 真机调试 sequoiaDB 防火墙 NAT转发 NAT Server Deepseek-R1 私有化部署 推理模型 捆绑 链接 谷歌浏览器 youtube google gmail composer 图形渲染 docker搭建pg docker搭建pgsql pg授权 postgresql使用 postgresql搭建 ArkTs iperf3 带宽测试 MacOS SRS 流媒体 直播 线程 相机 dash 正则表达式 对比 工具 meld DiffMerge c/c++ 串口 Mac内存不够用怎么办 db 开发 docker搭建nacos详解 docker部署nacos docker安装nacos 腾讯云搭建nacos centos7搭建nacos 常用命令 文本命令 目录命令 prometheus数据采集 prometheus数据模型 prometheus特点 lio-sam SLAM 信创 信创终端 中科方德 glibc 用户缓冲区 模拟实现 sqlite3 css3 PX4 sentinel 考研 SenseVoice onlyoffice 在线office AI-native Docker Desktop HiCar CarLife+ CarPlay QT RK3588 yolov8 swoole Node-Red 编程工具 流编程 wps webgl cocoapods ubuntu24.04.1 fast 端口 查看 ss 我的世界 我的世界联机 数码 deployment daemonset statefulset cronjob UDP su sudo 读写锁 chrome 浏览器下载 chrome 下载安装 谷歌浏览器下载 私有化 AI Agent 字节智能运维 办公自动化 自动化生成 pdf教程 rnn 加解密 Yakit yaklang arcgis triton 模型分析 MySql 服务器时间 流量运营 KylinV10 麒麟操作系统 Vmware harmonyOS面试题 iBMC UltraISO word 邮件APP 免费软件 IMX317 MIPI H265 VCU Ubuntu22.04 开发人员主页 pyautogui trea ShenTong rag ragflow 源码启动 aarch64 编译安装 HPC 运维监控 EtherCAT转Modbus ECT转Modbus协议 EtherCAT转485网关 ECT转Modbus串口网关 EtherCAT转485协议 ECT转Modbus网关 代理 安防软件 树莓派 VNC 域名服务 DHCP 符号链接 配置 Linux find grep 钉钉 DeepSeek r1 deepseek r1 Unity插件 OpenManus 键盘 iventoy VmWare OpenEuler 抓包工具 宝塔 粘包问题 x64 SIGSEGV xmm0 代理服务器 云桌面 微软 AD域控 证书服务器 miniapp 调试 debug 断点 网络API请求调试方法 个人博客 uni-file-picker 拍摄从相册选择 uni.uploadFile H5上传图片 微信小程序上传图片 AP配网 AK配网 小程序AP配网和AK配网教程 WIFI设备配网小程序UDP开 镜像 xpath定位元素 bat rtsp服务器 rtsp server android rtsp服务 安卓rtsp服务器 移动端rtsp服务 大牛直播SDK 远程服务 navicat 带外管理 RoboVLM 通用机器人策略 VLA设计哲学 vlm fot robot 视觉语言动作模型 grub 版本升级 扩容 游戏开发 Attention 磁盘镜像 服务器镜像 服务器实时复制 实时文件备份 企业网络规划 华为eNSP 大模型推理 自动化任务管理 nvm whistle 推荐算法 ArtTS macOS 云耀服务器 gnu vllm docker部署Python mm-wiki搭建 linux搭建mm-wiki mm-wiki搭建与使用 mm-wiki使用 mm-wiki详解 yum换源 hosts visual studio 开机黑屏 网络爬虫 增强现实 沉浸式体验 应用场景 技术实现 案例分析 AR 数字证书 签署证书 沙盒 nlp 智能电视 搜狗输入法 中文输入法 HarmonyOS NEXT 原生鸿蒙 虚幻引擎 论文阅读 风扇控制软件 嵌入式系统开发 网络建设与运维 网络搭建 神州数码 神州数码云平台 云平台 服务器正确解析请求体 yolov5 CentOS Stream PPI String Cytoscape CytoHubba AI员工 拓扑图 西门子PLC 通讯 多路转接 热榜 项目部署 nosql dock 加速 js 鸿蒙开发 移动开发 MobaXterm seleium 达梦 DM8 搭建个人相关服务器 软负载 本地化部署 玩机技巧 软件分享 软件图标 渗透 kernel ranger MySQL8.0 欧标 OCPP rpa 端口聚合 windows11 解决方案 IO 极限编程 System V共享内存 进程通信 docker desktop image 接口优化 k8s二次开发 Qwen2.5-VL conda配置 conda镜像源 MDK 嵌入式开发工具 论文笔记 sublime text docker部署翻译组件 docker部署deepl docker搭建deepl java对接deepl 翻译组件使用 离线部署dify 大模型部署 稳定性 看门狗