文件系统(一)——分区表

1、概述

在计算机启动的"第一秒",操作系统尚未加载,CPU 刚刚通电,整个系统处于最原始的状态------此时,是谁告诉电脑"从哪里开始运行"?答案就藏在硬盘的第一个扇区里。

从早期的 MBR(主引导记录)到现代的 GPT(GUID 分区表),磁盘分区方案不仅决定了我们能用多大的硬盘、分多少个区,更深刻影响着系统的启动方式、数据安全性和兼容性。尤其在如今 UEFI 普及、SSD 成为主流、硬盘容量动辄数 TB 的时代,理解 MBR 与 GPT 的区别与演进,已不再是"底层细节",而是每个开发者、运维工程师甚至高级用户都应掌握的基础知识。

本文将带你深入剖析 MBR 与 GPT 的核心机制、结构差异、适用场景及实际限制,助你彻底搞懂:为什么新电脑默认用 GPT?老系统为何无法识别大硬盘?以及,在什么情况下你仍需要和 MBR 打交道。

2、MBR 分区

主引导记录(MBR)是 PC 技术早期遗留下来的一项关键技术。它最早于 1983 年随 IBM PC DOS 2.0 首次引入,此后在 Windows 计算机中扮演了重要角色。

需要特别说明的是:

MBR 本质是一种分区结构规范,而不是某种特定架构或固件的专属技术。

虽然它最早与 x86 + BIOS 体系紧密结合,但从技术角度来说,MBR 只是定义了磁盘第一个扇区的布局方式。今天在很多 ARM 板卡、嵌入式设备甚至 U 盘中,依然可以看到 MBR 分区格式的使用。

在某些平台中:

  • 可能只使用 MBR 的"分区表"功能
  • 而并不会执行其中的引导代码

因此,MBR 既是一种分区方案,也是一种早期启动链的一部分。

MBR 在磁盘上的位置始终固定 :柱面 0、磁头 0、扇区 1(Cylinder 0, Head 0, Sector 1),也就是磁盘的第一个逻辑扇区(LBA 0)。其标准大小为 512 字节。

2.1 MBR 的结构与功能

主引导记录至少包含以下四个组成部分:

  • 启动程序(Bootloader)
  • 磁盘签名(Disk Signature,Windows 2000 起引入)
  • 主分区表(Master Partition Table)
  • MBR 签名(Boot Signature,又称"魔数")

启动代码(446 Byte)

这是第一阶段引导代码。在 BIOS + x86 环境下:

  • BIOS 读取 LBA 0
  • 将其加载到内存
  • 跳转执行

这段代码的作用通常是:

  • 查找"活动分区"
  • 加载该分区的引导扇区(VBR)
  • 继续启动链

磁盘签名(Disk Signature)

从 Windows 2000 开始,Windows 系统通过该字段识别带有分区表的存储设备。该签名是一个唯一的标识符,帮助操作系统区分不同的硬盘。

主分区表(64 Byte)

分区表由 4 个分区条目组成,下面会单独一章讲解。

MBR 签名(Boot Signature)

最后两个字节固定为十六进制值 0x55 和 0xAA。这个"魔数"是识别有效 MBR 的关键标志。

2.2 DPT(主分区表)

DPT 由 4 个主分区条目 组成,每一个 16 字节。我们已经知道,每块硬盘只能划分 4 个主分区,原因就是在 MBR 中描述分区表的空间只有 64 Byte。其中每个主分区条目必须占用 16 Byte,那么 64 Byte 就最多只能划分 4 个主分区。每个分区的 16 字节的分区表如下表所示:

再对其作进一步的解释:

  • 第 1 字节的引导标识:如果该分区内安装了操作系统,则该分区必须为活动分区,方可成功引导该分区内的操作系统(即为80H);
  • 第 5 字节的分区类型符:记录该分区的类型,每一种类型都有一个对应的值,如00H------表示该分区未用(即没有指定,DOS和win不识别该类型分区)、06H------FAT16分区;0BH------FAT32分区、 07H------NTFS 分区,0xEE------使用 GPT 分区表
  • 第 2、3、4、6、7、8 字节:记录了这个分区的起始和结束磁头、扇区、柱面,即可确定该分区在硬盘中的位置以及该分区的容量;
  • 最后的 4 个字节就是 MBR 分区为何最大只能识别 2TB 容量的原因了
    • 扇区大小为 512 字节,4 字节 = 32 bit,2^32 * 512 Byte = 2TB

2.3 CHS 与 LBA

早期磁盘使用 CHS(Cylinder-Head-Sector)寻址方式:

  • 磁头(Head)
  • 磁道(Track)
  • 扇区(Sector)
  • 柱面(Cylinder)

这是机械硬盘时代的物理概念。

现代系统已全面采用:

LBA(Logical Block Addressing)

也就是逻辑块寻址。

在现代磁盘中:

  • CHS 字段通常只是为了兼容
  • 实际定位全部使用 LBA

对于 SSD 来说:

磁头、磁道、柱面都只是历史概念,没有物理意义。

2.4 扩展分区与逻辑分区

由于 MBR 只能有 4 个主分区,于是引入了:扩展分区(Extended Partition)

扩展分区本身不是用来存数据的,而是:

一个"指向更多分区结构的容器"

它内部使用:EBR(Extended Boot Record)

构成链式结构。

可以这样理解:

  • 主分区表像目录首页,只能列 4 行
  • 如果其中一行写"扩展分区"
  • 那么它指向另一个"子目录"
  • 子目录再指向下一个

本质是:链表结构。因此:

  • 主分区 + 扩展分区总数 ≤ 4
  • 逻辑分区数量理论上没有严格上限

2.5 MBR 的局限性

MBR 存在一些固有缺陷,例如:

  • 最大仅支持 2 TB 的硬盘容量;
  • 最多只能创建 4 个主分区(可通过"扩展分区 + 逻辑分区"变通,但属于临时解决方案);
  • 缺乏冗余机制,一旦 MBR 损坏,分区信息可能永久丢失。

因此,现代系统正逐步采用更先进的 GPT(GUID Partition Table,全局唯一标识分区表) 格式。GPT 具备以下优势:

  • 支持超过 2 TB 的硬盘
  • 最多可创建 128 个(甚至更多)分区
  • 包含分区表的备份和校验机制,可靠性更高

3、GPT 分区

GUID 分区表 (GPT, GUID Partition Table)是一种用于格式化存储介质(如硬盘)分区表的现代标准。它是 UEFI(统一可扩展固件接口,Unified Extensible Firmware Interface)规范的一部分。UEFI 是一种在计算机启动过程中协调固件与操作系统之间通信的接口标准,于 2000 年推出,旨在取代传统的 BIOS。

尽管 GPT 最初是为 UEFI 设计的,但它也可以在非 UEFI 系统中使用------前提是所用的操作系统和硬盘本身支持该标准。由于 GPT 在多个方面优于旧式 MBR(主引导记录)分区方案,如今它已基本取代了后者。

3.1 什么是 GUID 分区表(GPT)

GUID 分区表(简称GPT)是源自 EFI 标准的一种新的磁盘分区表结构的标准。相较于 MBR 有以下优点:

  • 支持超大容量分区
    • GPT 使用 64 位地址进行寻址,理论上单个分区最大可达 18 EB(Exabytes,即 180 亿 GB)。相比之下,MBR 仅支持最多 2 TB 的分区------这对现代动辄数 TB 的硬盘来说显然不够用
  • 几乎无限的主分区数量
    • MBR 最多只允许 4 个主分区(或 3 主 + 1 扩展分区)。而 GPT 理论上支持无限数量的主分区。实际使用中,操作系统会设定上限:例如 Windows 默认支持 最多 128 个分区,这已远超绝大多数用户需求。
  • 冗余备份机制
    • GPT 不仅在磁盘开头保存一份主分区表,还在磁盘末尾保存一份完整的备份(包括 GPT 头部和分区表)。即使主表损坏,系统仍可从备份恢复,极大提升了数据安全性。
  • 数据完整性保护(CRC32 校验)
    • 增加 CRC 校验机制。GPT 头部和分区表均包含 CRC32 校验和(checksum),用于检测数据是否损坏。如果固件、引导程序或操作系统发现校验失败,就能及时识别出分区表异常,避免因坏扇区导致系统崩溃
  • 唯一分区标识。每个 GPT 分区都拥有两个 GUID:
    • 分区类型 GUID:说明分区用途(如 EFI 系统分区、Windows 数据分区等);
    • 唯一分区 GUID:全局唯一标识该分区实例。
      这使得系统能精准识别每个分区,避免混淆。
  • 向下兼容 MBR 工具
    • GPT 磁盘的 LBA 0(第一个扇区)保留了一个 保护性 MBR(Protective MBR)。这个 MBR 声明整个磁盘为一个"未知类型"的大分区,从而防止不支持 GPT 的旧工具(如老版 fdisk)误将其识别为空盘并意外格式化。

3.2 GPT 磁盘的结构

GPT 对存储空间的组织遵循一套清晰的布局,通常分为以下四个部分:

  • 保护性 MBR(LBA 0)
    • 位于磁盘最开始,用于兼容旧系统。
  • 主 GPT 头部与分区表(LBA 1 起)
    • LBA 1:GPT 头部(92 字节 + 填充至 512 字节)
    • LBA 2--33(默认):主分区表(128 个条目 × 128 字节 = 16,384 字节)
  • 用户数据分区
    • 实际的分区从 LBA 34 开始(具体位置由 GPT 头部指定)。
  • 备份 GPT 分区表与头部(磁盘末尾)
    • 倒数第 33--2 块:备份分区表
    • 倒数第 1 块(LBA -1):备份 GPT 头部

注:LBA(Logical Block Addressing,逻辑块寻址)是现代磁盘的标准寻址方式,每个 LBA 块通常为 512 字节(或 4KB)。

上图中的 LBA0 与 LBA1 等之间的关系,不受 LBA 大小影响。都是以 LBA 为单位,空余补 0

3.3 GPT 头部详解

GPT 头部(位于 LBA 1)包含以下关键信息:

  • 磁盘的唯一 GUID;
  • 分区表的起始 LBA 地址;
  • 分区表的条目数量(默认 128);
  • 每个分区表项的大小(128 字节);
  • 分区表的 CRC32 校验和;
  • 备份 GPT 头部的位置(通常在 LBA -1)。

头部总长 512 字节,其中有效数据占 92 字节,其余用 0 填充,防止其他数据意外写入。

3.4 分区表项结构

分区表项的结构如下:

2\] GUID为固定值,以下列举常见几种: ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/074b3e42c1f04ef280abfeccd7daa79c.png) ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/b6cd731d284842d38c40ac13ee51b195.png) \[3\] 分区属性:低位4字节表示与主分区类型无关的属性,高位4字节表示与主分区类型有关的属性 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/f9af9c316a5b4deb9fbff48720af36c1.png) #### 3.5 UEFI + GPT 的完整引导过程 * UEFI(Unified Extensible Firmware Interface)是现代固件标准,取代了老旧的 BIOS。 * GPT(GUID Partition Table)是 UEFI 官方推荐的分区方案。 * 要实现 UEFI 引导,硬盘必须使用 GPT 分区表(Windows 强制要求;Linux/macOS 更灵活但推荐)。 * 并且,必须存在一个特殊的分区:EFI 系统分区(ESP, EFI System Partition) **什么是 EFI 系统分区(ESP)?** * 类型 GUID:`C12A7328-F81F-11D2-BA4B-00A0C93EC93B` * 文件系统:必须是 FAT32(少数嵌入式系统可用 FAT16) * 作用:存放操作系统或引导管理器的 UEFI 可执行文件(.efi 文件) **步骤 1:开机,UEFI 固件初始化** * CPU 上电后,执行主板上的 UEFI 固件代码 * UEFI 初始化硬件(内存、CPU、存储控制器等) **步骤 2:扫描可启动设备** * UEFI 会枚举所有连接的存储设备(硬盘、U 盘、网络等) -可以手动修改引导介质 * 对选中的 GPT 磁盘,检查是否存在 EFI 系统分区(ESP) **步骤 3:读取 ESP 中的 .efi 引导文件** * UEFI 能直接读取 FAT32 文件系统 * 它会在 ESP 的特定路径下查找引导程序(引导管理器) **步骤 4:加载并执行 .efi 引导程序** * UEFI 将选中的 .efi 文件加载到内存,并移交控制权。 * 此时,操作系统专属的引导管理器(如 Windows Boot Manager 或 GRUB)开始运行 **步骤 5:引导管理器加载操作系统内核** GRUB 或 Windows Boot Manager 会: * 读取自己的配置文件(如 grub.cfg 或 BCD) * 显示启动菜单(多系统时) * 加载对应操作系统的内核(如 vmlinuz 或 winload.efi) * 最终启动完整的操作系统 ### 4、案例详解   下面以 RK3568 天启板卡为例,研究 GPT 分区表的组成。 **LBA0:保护性MBR** ```bash => mmc read 0x0a200000 0 0x40 MMC read: dev # 0, block # 0, count 64 ... 64 blocks read: OK => md.b 0x0a200000 0x8000 0a200000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ ... 0a200190: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2001a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2001b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2001c0: 01 00 ee fe ff ff 01 00 00 00 00 e0 a3 03 00 00 ................ 0a2001d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2001e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa ..............U. 0a200200: 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 EFI PART....\... 0a200210: 40 32 ce 22 00 00 00 00 01 00 00 00 00 00 00 00 @2."............ 0a200220: ff df a3 03 00 00 00 00 00 20 00 00 00 00 00 00 ......... ...... 0a200230: df df a3 03 00 00 00 00 81 c6 2d 63 00 00 00 10 ..........-c.... ... ``` * 0x000001be 是第一个主分区的分区表项开始地址 * 在这个 MBR 中,只有一个标识为 0xEE 的分区,以此来表示这块硬盘使用 GPT 分区表 * MBR 结束标志:占 MBR 扇区最后 2 个字节,一直为 "55 AA" **LBA1:GPT Header:** ```bash 0a200200: 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 EFI PART....\... 0a200210: 40 32 ce 22 00 00 00 00 01 00 00 00 00 00 00 00 @2."............ 0a200220: ff df a3 03 00 00 00 00 00 20 00 00 00 00 00 00 ......... ...... 0a200230: df df a3 03 00 00 00 00 81 c6 2d 63 00 00 00 10 ..........-c.... 0a200240: 36 5c 00 00 41 a7 10 d6 02 00 00 00 00 00 00 00 6\..A........... 0a200250: 80 00 00 00 80 00 00 00 74 0b 12 d7 00 00 00 00 ........t....... 0a200260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200280: 9d 9d 9d 9d 9d 9d 9d 9d 9d 0b 9c 00 00 00 00 00 ................ 0a200290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2002a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2002b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2002c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2002d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2002e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2002f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2003a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2003b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2003c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2003d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2003e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2003f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200400: 28 73 2a c1 1f f8 d2 11 ba 4b 00 a0 c9 3e c9 3b (s*......K...>.; 0a200410: 81 c6 2d 63 00 00 00 10 36 5c 60 b7 ac d9 3a b5 ..-c....6\`...:. ... ``` * GPT头的起始扇区号: 01 * GPT 头的备份位置的扇区号: 0x0000000003a3dfff,换算成十进制:就是 LBA 61,087,743 * GPT 分区区域的起始扇区号:00 20 00 00 00 00 00 00 0x2000,也即是LBA34??? * GPT 分区区域的结束扇区号,通常是倒数第 34 扇区:0x03a3dfdf * GUID = 81 c6 2d 63 00 00 00 10 36 5c 00 00 41 a7 10 d6 * 分区表起始扇区号:02 * 分区表总项数: 128 * 每个分区表项占用字节数: 128 * 分区表CRC校验和: 74 0b 12 d7 **LBA2-33:分区表项** ```bash 0a200400: 28 73 2a c1 1f f8 d2 11 ba 4b 00 a0 c9 3e c9 3b (s*......K...>.; 0a200410: 81 c6 2d 63 00 00 00 10 36 5c 60 b7 ac d9 3a b5 ..-c....6\`...:. 0a200420: 00 20 00 00 00 00 00 00 ff 3f 00 00 00 00 00 00 . .......?...... 0a200430: 00 00 00 00 00 00 00 00 73 00 65 00 63 00 75 00 ........s.e.c.u. 0a200440: 72 00 69 00 74 00 79 00 00 00 00 00 00 00 00 00 r.i.t.y......... 0a200450: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200480: 28 73 2a c1 1f f8 d2 11 ba 4b 00 a0 c9 3e c9 3b (s*......K...>.; 0a200490: 81 c6 2d 63 00 00 00 10 36 5c 44 31 b7 82 1c 06 ..-c....6\D1.... 0a2004a0: 00 40 00 00 00 00 00 00 ff 5f 00 00 00 00 00 00 .@......._...... 0a2004b0: 00 00 00 00 00 00 00 00 75 00 62 00 6f 00 6f 00 ........u.b.o.o. 0a2004c0: 74 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 t............... ... 0a2007d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2007e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2007f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200800: 28 73 2a c1 1f f8 d2 11 ba 4b 00 a0 c9 3e c9 3b (s*......K...>.; 0a200810: 81 c6 2d 63 00 00 00 10 36 5c 31 13 c3 98 08 8e ..-c....6\1..... 0a200820: 00 c8 06 00 00 00 00 00 ff cf 06 00 00 00 00 00 ................ 0a200830: 00 00 00 00 00 00 00 00 75 00 62 00 6f 00 6f 00 ........u.b.o.o. 0a200840: 74 00 5f 00 65 00 6e 00 76 00 00 00 00 00 00 00 t._.e.n.v....... 0a200850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200880: a2 a0 d0 eb e5 b9 33 44 87 c0 68 b6 b7 26 99 c7 ......3D..h..&.. 0a200890: 81 c6 2d 63 00 00 00 10 36 5c 35 70 2e 2f 57 e8 ..-c....6\5p./W. 0a2008a0: 00 d0 06 00 00 00 00 00 ff ff 63 00 00 00 00 00 ..........c..... 0a2008b0: 00 00 00 00 00 00 00 00 66 00 61 00 74 00 66 00 ........f.a.t.f. 0a2008c0: 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s............... 0a2008d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2008e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a2008f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0a200900: a2 a0 d0 eb e5 b9 33 44 87 c0 68 b6 b7 26 99 c7 ......3D..h..&.. 0a200910: 81 c6 2d 63 00 00 00 10 36 5c 4b 63 96 2d 77 18 ..-c....6\Kc.-w. 0a200920: 00 00 64 00 00 00 00 00 d7 df a3 03 00 00 00 00 ..d............. 0a200930: 00 00 00 00 00 00 00 00 74 00 70 00 73 00 66 00 ........t.p.s.f. 0a200940: 73 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 s............... ... ``` 可以粗略的看出,其中的第二个分区uboot,进行分析: * GUID分区类型:28 73 2a c1 1f f8 d2 11 ba 4b 00 a0 c9 3e c9 3b * GUID分区唯一标示符:81 c6 2d 63 00 00 00 10 36 5c 44 31 b7 82 1c 06 * 分区的起始扇区:0x4000 * 分区的结束扇区:0x5fff * 分区的属性标志:0x00 * 分区名称(UTF-16LE编码):uboot **LBA34:分区区域**   GPT分区区域就是用户使用的分区,也是用户进行数据存储的区域。分区区域的起始地址和结束地址由GPT头定义。

相关推荐
happymaker06261 小时前
Java学习日记——DAY24
学习
日更嵌入式的打工仔1 小时前
【无标题】
笔记·原文翻译
今儿敲了吗1 小时前
19| 海底高铁
c++·笔记·学习·算法
Asher阿舍技术站2 小时前
【AI基础学习系列】三、LLM基础知识
人工智能·学习·llm
Hello_Embed2 小时前
Modbus 传感器开发:STM32F030 串口编程
笔记·stm32·单片机·嵌入式·freertos·modbus
lpfasd1232 小时前
2025年终总结:码途深耕,步履不停|谁在黄金彼岸
笔记
丝斯20112 小时前
AI学习笔记整理(70)——AI+CAE
人工智能·笔记·学习
初夏睡觉2 小时前
笔记(动态规划(引入)1)
笔记·算法·动态规划
三万棵雪松2 小时前
【Linux Shell 编程基础学习与实践作业】
linux·运维·网络·学习·嵌入式linux