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

【Linux】文件系统

文章目录

  • Group中的组成部分
    • inode table
    • inode bitmap
    • data blocks
    • block bitmap
    • group descriptor table
    • super block
  • 文件系统
    • 关于inode和blocks
      • inode和block是如何映射的?
        • 12个直接映射
        • 一级间接索引
        • 二级间接索引
        • 三级间接索引
      • 为什么访问文件的是inode,但是我们操作的是文件名
  • 总结

在这里插入图片描述
上一篇博客讲到了inode,这一期我们继续接着讲。
上一篇博客:【Linux】磁盘结构和文件系统

Group中的组成部分

下面是每个group的组成部分,但是super block不是每个组都有的,这个点后面详谈。
在这里插入图片描述

inode table

inode table 是 Linux 文件系统(如 Ext2、Ext3、Ext4)中用于存储 inode 的一张表格。每个 inode 都是文件或目录的元数据存储单元,不直接存储文件内容,而是包含文件属性和指向数据块的指针。
在这里插入图片描述
假设上面这张表是inode table,一个数据块是4KB,一个inode是128字节,所以一个数据块可以存储32个inode,那当我们分配inode是如何分配的呢?可以看见在group中还有一个数据结构是inode bitmap。

inode bitmap

inode bitmap 是文件系统中用于管理 inode 分配状态的一种数据结构。在 Linux 文件系统(例如 Ext2、Ext3、Ext4)中,inode bitmap 是块组元数据的一部分,用来跟踪某个块组内 inode 的使用情况。
在这里插入图片描述

inode bitmap是专门用来索引inode table位置的位图,在分配inode位置的时候,我们会先在inode bitmap中查看,找一个比特位是0的位置,如果这个位置为0就表示这个位图中对应的inode table中的位置未被使用,所以分配的时候找到为0的位置将其置为1,然后找到inode bitmap对应位置的inode table,然后开辟128字节的inode,将其属性填入到inode当中即可。

data blocks

数据块(Data Blocks) 是文件系统中存储文件内容的基本单元。它们用于保存文件的实际数据部分,包括文本、图片、视频等。
data blocks专门用来存储文件中的数据。
在这里插入图片描述

data blocks是以数据块为单位来存储数据的,那么data blocks是如何分配的呢,在group中也有一个位图是掌管data blocks的使用情况的(block bitmap)

block bitmap

Block bitmap 是文件系统中用于管理磁盘空间的另一种位图数据结构。它记录了文件系统中数据块的使用状态,并帮助操作系统高效地分配和释放磁盘空间。

block bitmap的工作原理和inode bitmap类似,当需要分配空间的时候,根据inode中的属性,会现在block bitmap中查找合适的位置,然后将其置为1,然后将这个block bitmap的编号返回给data blocks,在对应的位置将数据写入到数据块中,最后将这个编号返回给inode table当中,将block bitmap中的编号这个属性写入到inode当中

group descriptor table

Group Descriptor Table 是文件系统(特别是如 Ext4 等文件系统)中的一种结构,它用于存储有关文件系统块组(block group)的重要元数据。每个块组都包含文件系统中的一部分数据块、inode、数据块位图、inode 位图等,group descriptor table 则记录这些块组的具体位置和其他必要的管理信息。

group descriptor table这个数据结构是用来记录inode table和data blocks当中的使用情况等功能的。

假如我们创建了一个文件,那么相应的应该有一个inode,这个inode需要给其分配inode table中的位置,所以经过一系列流程之后分配好了,那么在group descriptor table中计数的就需要++,对应的这个文件还有内容,那么对应的记录data blocks的也需要++,如果我们删除一个文件,那么对应的也需要–。

现在创建一个文件的步骤就不是之前的直接在inode bitmap中寻找为0的位置了,现在只需要先查看group descriptor table中inode bitmap的使用情况,如果inode bitmap有剩余,则为其创建inode,接着,在inode bitmap中找到为0的位置将其对应比特位改变为1,然后将inode保存到inode table当中,对应的data blocks也是如此。

super block

super block 是一个关键的数据结构,包含了有关文件系统的元数据。它存储了文件系统的基本信息和管理信息,确保文件系统的有效操作。
super block又称为超级块,主要用于记录描述文件系统的整体状态和基本信息,不是每个group都有super block的,super 也不止一份。
**为什么super block不止一份? **

在文件系统中,superblock 不止一份,主要是为了增加文件系统的 容错性 和 可靠性。通常,文件系统会在不同的位置保存 superblock 的副本,以防止因磁盘损坏或其他硬件故障导致文件系统无法访问。

在这里插入图片描述
假如我们将super block存放在区域的前面的单独的一个区域,那么如果这个分区崩掉了,整个文件系统就崩掉了,那如果我们将super block保存在任意位置的不同的组中,每个保存super block都是相同的,都是同一个副本,如果一个组崩掉了,我们只需要拷贝另外的super block进行恢复即可。

理解了每个组中的分块之后我们来讲讲细节

文件系统

在这里插入图片描述

关于inode和blocks

inode是以分区为单位的,一个分区可以由一套inode,inode在分配的时候,只需要确定每个组的起始inode即可,对于block号,我们也只需要记录每个组的起始位置的号,这个信息一般记录在GDT当中,当我们查找一个文件的时候,只需要拿到给定的inode,然后拿着这个inode在GDT中查找这个inode是属于哪个分组的,查找到属于哪个分组之后,我们只需要在分组中查找inode即可(注意:我们拿到的inode是处理过的inode,拿到真实的inode需要用我们拿到的inode减去当前组的start_inode),根据inode的编号就可以查到inode,inode中也有block的编号,也可以查找到对应的data blocks。

问题:inode是如何被分配的?

假如inode bitmap是0000 0000(假设),然后我们分配的位置是0000 0100,那么分配的是第三个位置,对于inode bitmap来说这个位置是3,但是对于inode table来说记录的是4,因为start_inode为1,所以加上起始位置的inode就是4,如果在第二个分组,那么分配的是第三个位置那么在inode table中记录的就是10003。

inode编号和块号都是全局建立的

inode和block是如何映射的?

在这里插入图片描述

inode当中有15个指针映射到block当中,但是15个够吗?

答案:够的,有十二个直接映射和三个间接映射

12个直接映射

每个指针直接指向文件数据所在的块,缺点就是只适合小文件,索引速度很快。
在这里插入图片描述

一级间接索引

inode存储了一个指针指向这个索引块,这个索引块可以指向更多的数据块地址
在这里插入图片描述
一个数据块是4KB,一个地址是4字节,1KB是1024字节,所以有4096字节,所以一共可以索引1024个数据块,一恶搞数据块是4KB,所以1024个4KB就是4MB,所以最多可以索引4MB的内容。

二级间接索引

inode当中存储了一个指针,指向一个索引块,该索引块中的每个指针指向另一个索引块,而这些二级索引块才指向数据
在这里插入图片描述
按照一级间接索引的算法计算,可以算出可以索引多少数据:4GB

三级间接索引

inode当中存储一个指针,指向一级索引块,一级索引块指向二级索引块,二级索引块指向三级索引块,三级索引块最后指向数据
在这里插入图片描述
三级索引可以索引的数据量是:16TB(理论上)。

为什么访问文件的是inode,但是我们操作的是文件名

在Linux系统中一切皆文件,所以目录也是文件。
目录=inode+data block=属性+内容,所以目录也要有对应的数据块,那么目录的数据块中存储的是什么呢?
Linux的目录中存放的是文件名和inode的映射关系,因为同一级目录下不可能存在同名文件,所以索引都是1:1,唯一的。
为什么Linux会这么做呢?

在这里插入图片描述

总结

文件系统的结构设计旨在高效地管理数据存储与访问。各个关键组成部分,如 inode 表、inode 位图、数据块和块位图,协同工作以追踪文件数据并确保快速访问。组描述符表和超级块则提供了文件系统组织的元数据。

inode 在文件与物理数据块之间起着重要的映射作用,通过 12 个直接指针、一级、二级和三级间接指针,扩展了文件系统对大文件的管理能力。通过 inode 访问文件,而非文件名,这种设计将文件的元数据与实际内容分离,使系统能够高效地在文件名或文件位置发生变化时检索数据。这种分离的设计使文件系统更加灵活与高效,确保了文件访问与管理的稳定性和扩展性。

相关文章:

【Linux】文件系统

文章目录 Group中的组成部分inode tableinode bitmapdata blocksblock bitmapgroup descriptor tablesuper block 文件系统关于inode和blocksinode和block是如何映射的?12个直接映射一级间接索引二级间接索引三级间接索引 为什么访问文件的是inode,但是我…...

希迪智驾持续亏损8.2亿:毛利率下滑,冲刺“自动驾驶矿卡第一股”

《港湾商业观察》黄懿 近日,希迪智驾(湖南)股份有限公司(下称“希迪智驾”)向港交所主板递交上市申请,联席保荐人为中金公司、中信建投国际、中国平安资本(香港)。 资料显示&#…...

Python实现中国象棋

探索中国象棋 Python 代码实现:从规则逻辑到游戏呈现 中国象棋,这款源远流长的棋类游戏,承载着深厚的文化底蕴与策略智慧。如今,借助 Python 与 Pygame 库,我们能够在数字世界中复刻其魅力,深入探究代码背后…...

C++小碗菜之五:GDB调试工具

“程序员不是编写代码的人,而是调试错误的人。” – 约翰本尼斯(John Bennet) 目录 前言 在虚拟机中安装 GDB GDB调试的实战演练 创建示例代码 例子: 使用 GDB 调试 编译代码 启动 GDB 设置断点 运行程序 打印变量值 …...

机器学习干货笔记分享:朴素贝叶斯算法

朴素贝叶斯分类是一种十分简单的分类算法,即对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。 以判定外国友人为例做一个形象的比喻。 若我们走在街上看到一个黑皮肤的外…...

bug:uniapp运行到微信开发者工具 白屏 页面空白

1、没有报错信息 2、预览和真机调试都能正常显示,说明代码没错 3、微信开发者工具版本已经是win7能装的最高版本了,1.05版 链接 不打算回滚旧版本 4、解决:最后改调试基础库为2.25.4解决了,使用更高版本的都会报错,所…...

VBA API 概述 | 宏编程

注:本文为 “VBA API 概述 | 宏编程 | 执行速度慢” 相关文章合辑。 VBA API 详解 Office 二次开发于 2020-12-17 22:27:10 发布 Office 版本变动 在 Office 2010 之前,微软仅提供 32-bit 版本的 Office。而自 Office 2010 起,出现了 32-b…...

《九重紫》逐集分析鉴赏—序言、概览、框架分析

主标题:《九重紫》一起追剧吧副标题:《九重紫》逐集分析鉴赏—序言、概览、框架分析《永夜星河》后,以为要浅尝剧荒,一部《九重紫》突出重围。 看了宣传片感觉不是很差,看了部分剪辑感觉还可以,看了一两集感…...

《Vue进阶教程》第六课:computed()函数详解(上)

往期内容: 《Vue零基础入门教程》合集(完结) 《Vue进阶教程》第一课:什么是组合式API 《Vue进阶教程》第二课:为什么提出组合式API 《Vue进阶教程》第三课:Vue响应式原理 《Vue进阶教程》第四课&#…...

MFC案例:基于对话框的简易阅读器

一、功能目标: 1.阅读txt文件 2.阅读时可以调整字体及字的大小 3.打开曾经阅读过的文件时,能够自动从上次阅读结束的位置开始显示,也就是能够保存和再次使用阅读信息。 4.对于利用剪贴板粘贴来的文字能够存储成txt文件保存。 5.显示…...

Python+OpenCV系列:图像的运算

文章目录 PythonOpenCV系列:图像的加权和、覆盖1. 图像加权和(加权融合)2. 图像覆盖(区域叠加)3. 应用场景4. 总结 PythonOpenCV系列:图像的加权和、覆盖 在图像处理中,图像的加权和与覆盖是两…...

【Python】【Conda 】Conda vs venv:Python开发者的虚拟环境选择指南

目录 引言一、概述1.1 Conda 虚拟环境1.2 Python venv 虚拟环境 二、安装与设置2.1 安装 Conda 虚拟环境2.2 安装 Python venv 虚拟环境 三、依赖管理3.1 Conda 依赖管理3.2 Python venv 依赖管理 四、适用场景五、性能与资源占用5.1 Conda 性能与资源占用5.2 Python venv 性能…...

gitee仓库的使用

1、本地创建文件夹:比如H:\python-study\Djangogitee 2、在gitee上创建一个仓库,比如django-project 3、Git 全局设置: 在第一步创建的文件夹下,打开Git Bash(需要提前下载好Git工具),执行下面命令 git co…...

openjudge_简单英文题_33:Is It a Tree

题目 33:Is It a Tree 总时间限制: 1000ms 内存限制: 65536kB 描述 Given edges of a graph with N nodes. Check whether it is a tree. 输入 First line: one positive integers N (N < 100). Next N lines: an N*N 0/1 matrix A{a[i][j]}, indicating whether there ex…...

MyBatis-Plus 中 IdWorker.getId() 方法

前言 在分布式系统中&#xff0c;生成全局唯一标识符&#xff08;ID&#xff09;是一个常见的需求。MyBatis-Plus 提供了多种 ID 生成策略&#xff0c;其中基于 Twitter 的 Snowflake 算法实现的 IdWorker.getId() 方法因其高效性和适应分布式环境的特点而备受青睐。然而&…...

JAVA面试汇总(三)集合(一)

JAVA多线程七篇终于写完了&#xff0c;今天开始了新的JAVA面试汇总&#xff0c;集合部分&#xff0c;这部分其实比多线程有意思多了&#xff0c;这个计划最多五篇&#xff0c;也许不到五篇&#xff0c;这是第一篇&#xff0c;开卷。 1.Collection和Collections 的区别&#xff…...

zookeeper的安装

zookeeper的安装 一.前言 zookeeper开源组件是为分布式应用&#xff0c;提供协调服务的一种解决方案。本文主要是介绍在Centos7的操作系统中&#xff0c;如何以单机&#xff0c;伪集群&#xff0c;集群的方式来安装部署zookeeper服务。zookeeper要求的jdk版本为1.6以上。本文假…...

2025系统架构师(一考就过):选择题基础知识一

考点1&#xff1a;CPU、指令 真题1&#xff1a;CPU 执行算术运算或逻辑运算时&#xff0c;常将源操作数和结果暂存在&#xff08;累加器&#xff08;AC&#xff09;&#xff09;中。 真题2&#xff1a;在程序的执行过程中&#xff0c;Cache与主存的地址映射是由&#xff08;硬…...

线性dp—acwing

题目&#xff1a;数字三角形 898. 数字三角形 - AcWing题库 看某个点&#xff0c;是从那些路径过来的去分析 分析1&#xff1a; 代码1&#xff1a;&#xff08;顺序正推&#xff0c;二维dp数组&#xff09; #include<bits/stdc.h> using namespace std;const int N 5…...

【QT】:QT(介绍、下载安装、认识 QT Creator)

背景 &#x1f680; 在我们的互联网中的核心岗位主要有以下几种 开发&#xff08;程序员&#xff09;测试运维&#xff08;管理机器&#xff09;产品经理&#xff08;非技术岗位&#xff0c;提出需求&#xff09; 而我们这里主要关注的是开发方向&#xff0c;开发岗位又分很…...

GPIO在ZYNQ7000中的结构和相关寄存器解析

GPIO MASK DATA LSW和 MASK DATA MSW LSW和MSW分别是LSW (Least Significant Word)和MSW (Most Significant Word)。 因为DATA是u32,所以如果寄存器的基址是XGPIOPS_DATA_LSW_OFFSET&#xff0c;那么32位就能同时让高16位的MASK DATA MSW]31:16和 MASK DATA LSW的bit7同时为…...

Docker学习笔记

目录 1&#xff0c;Docker概述 I&#xff0c;虚拟机技术 虚拟机技术缺点 II&#xff0c;容器化技术 III&#xff0c;比较docker和虚拟机技术不同 Ⅳ&#xff0c;DevOps(开发&#xff0c;运维) 1&#xff0c;应用更快速的交付和部署 2&#xff0c;更编辑的升级和扩缩容 …...

皮带,传送带异物检测识别数据集,2345张图像,yolo,coco,voc标记三种格式的数据集整理

皮带&#xff0c;传送带异物检测识别数据集,2345张图像&#xff0c;yolo&#xff0c;coco&#xff0c;voc标记三种格式的数据集整理 数据集分割 训练组79&#xff05; 1860图片 有效集14% 318图片 测试集7% 167图片 预处理 自动定向&#xff1a; 已应用 调…...

大模型qiming面试内容整理-技术能力评估

技术能力评估是大模型相关岗位面试中最重要的环节之一,主要考察候选人是否具备处理复杂机器学习问题、设计和优化模型的能力。以下是技术能力评估的具体内容和可能涉及的题目: 机器学习基础 ● 监督学习与无监督学习: ○ 理解基本的机器学习类型和模型:监督学习:如回归(线…...

前端成长之路:HTML(3)

在HTML中&#xff0c;有列表标签。列表最大的特点是整齐、简洁、有序&#xff0c;用列表进行布局会更加自由方便。根据使用的情景不同&#xff0c;可以将列表分为三大类&#xff1a;无序列表、有序列表和自定义列表。 无序列表 在HTML中使用<ul>标签定义一个无序列表&a…...

小程序给元素设置line-height为0引起页面更新无效

问题 在小程序中使用setData更新&#xff0c;数据更新完毕&#xff0c;页面却没有更新值&#xff0c;甚至出现渲染错乱现象&#xff1b; 发现 但当点击相应事件的时候&#xff0c;视图又更新了。 思考 开始认为是没有在dom渲染后进行数据更新产生的问题&#xff0c;换了方法执行…...

【1355个俚语完结】跟李笑来学美式俚语(Most Common American Idioms): Part 68

Goal Completed 2024年12月11日22点25分完成这本书的学习。习得1355个俚语&#xff0c;尽管有些记得不牢&#xff0c;但是好在走在路上&#xff0c;一直往前走。后面就是多重复&#xff0c;多练习。 查看自己commit的日志&#xff0c;是从2024年11月15日开始学习这本书&#…...

TcpServer 服务器优化之后,加了多线程,对心跳包进行优化

TcpServer 服务器优化之后&#xff0c;加了多线程&#xff0c;对心跳包进行优化 TcpServer.h #ifndef TCPSERVER_H #define TCPSERVER_H#include <iostream> #include <winsock2.h> #include <ws2tcpip.h> #include <vector> #include <map> #…...

螺丝螺帽缺陷检测识别数据集,支持yolo,coco,voc三种格式的标记,一共3081张图片

螺丝螺帽缺陷检测识别数据集&#xff0c;支持yolo&#xff0c;coco&#xff0c;voc三种格式的标记&#xff0c;一共3081张图片 3081总图像数 数据集分割 训练组90&#xff05; 2781图片 有效集7% 220图片 测试集3% 80图片 预处理…...

若依微服务中配置 MySQL + DM 多数据源

文章目录 1、导入 MySQL 和达梦&#xff08;DM&#xff09;依赖2、在 application-druid.yml 中配置达梦&#xff08;DM&#xff09;数据源3、在 DruidConfig 类中配置多数据源信息4、在 Service 层或方法级别切换数据源4.1 在 Service 类上切换到从库数据源4.2 在方法级别切换…...

Apache APISIX快速入门

本文将介绍Apache APISIX&#xff0c;这是一个开源API网关&#xff0c;可以处理速率限制选项&#xff0c;并且可以轻松地完全控制外部流量对内部后端API服务的访问。我们将看看是什么使它从其他网关服务中脱颖而出。我们还将详细讨论如何开始使用Apache APISIX网关。 在深入讨…...

【C++】继承

目录 1. 继承的概念及定义 1.1 继承的概念 1.2 继承定义 1.2.1 定义格式 1.2.2 继承基类成员访问方式的变化 1.3 继承类模板 2. 基类和派生类间的转换 3. 继承中的作用域 3.1 隐藏规则&#xff1a; 3.2 考察继承作用域相关选择题 3.2.1 A和B类中的两个func构成什么关…...

设计模式详解(十):策略模式——Strategy

什么是Strategy设计模式&#xff1f; Strategy模式是一种行为型设计模式&#xff0c;它定义了一系列算法&#xff0c;将每种算法封装到独立的类中&#xff0c;使它们可以互换。使用该模式&#xff0c;可以在不修改客户端代码的情况下动态地改变算法的行为。 为什么需要Strate…...

B4X编程语言:B4X控件方法汇总

1、AddNode、AddView方法 AddNode(Node As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J控件 AddView(View As javafx.scence.Node,Left As Double,Top As Double,Width As Double,Height As Double) B4J的B4XView …...

如何阅读一本书

阅读很重要,我们真的会阅读吗? 这本书的初版是 1940年,时隔 80年,其内容仍然不过时。第一次读这本书时,给我最大的影响就是主题阅读,每次学习一个新理论、技术,都入手多本关于这项理论、技术的书籍,不同的作者,不同作者的写作背景、角度、目的,导致了风格不同的书籍,…...

vscode 排除文件夹搜索

排除的文件夹 node_modules/,dist/...

1. Flink自定义Source

一. Source 简介 DataStream是Flink的低级API&#xff0c;用于进行数据的实时处理&#xff0c;Flink编程模型分为Source、Transformation、Sink三个部分&#xff0c;如下图所示。 默认Flink提供了大量的内置Source&#xff0c;常见的Source如下&#xff1a; 基于文件的Sour…...

短信验证码burp姿势

首先声明&#xff0c;本文仅仅作为学习使用&#xff0c;因个人原因导致的后果&#xff0c;皆有个人承担&#xff0c;本人没有任何责任。 在之前的burp学习中&#xff0c;我们学习了图片验证码的突破&#xff0c;但是现实中还有很多短信验证码&#xff0c;在此我介绍几种短信验…...

scala的正则表达式3

贪婪模式与非贪婪模式 1.贪婪模式 贪婪模式是正则表达式的默认行为。在这种模式下&#xff0c;量词&#xff08;如*、、?、{n,m}&#xff09;会尝试匹配尽可能多的字符。例如&#xff0c;正则表达式".*"会匹配任意数量的任意字符&#xff0c;包括空字符。 2非贪婪…...

Kotlin设计模式之中介者模式

中介者模式&#xff08;Mediator Pattern&#xff09;用于定义一个对象&#xff0c;该对象封装了一组对象之间的交互方式。中介者使各对象不需要显式地相互引用&#xff0c;从而使其耦合松散&#xff0c;并可以独立地改变它们之间的交互。以下是Kotlin中实现中介者模式的方法&a…...

Android 车载虚拟化底层技术-Kernel 5.10 -Android12(multi-cards)技术实现

详细代码实现见 Android Display Graphics系列文章-汇总​​​​​​Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 Android Display Graphics系列文章-汇总 本文主要包括部分&#xff1a; 一、Android12的Kernel 5.10版本 1.1 Kernel 5…...

ZZNUOJ_1726:算法提高 选择排序(C/C++/Java)

题目描述 排序,顾名思义,是将若干个元素按其大小关系排出一个顺序。形式化描述如下:有n个元素a[1],a[2],…,a[n],从小到大排序就是将它们排成一个新顺序a[i[1]]<a[i[2]]<…<a[i[n]]   i[k]为这个新顺序。   选择排序的思想极其简单,每一步都把一个最小…...

Python+OpenCV系列:模版匹配

文章目录 1. 模板匹配基本原理2. cv2.matchTemplate() 函数函数原型&#xff1a; 3. 模板匹配步骤4. 单目标模板匹配示例5. 多目标模板匹配多目标模板匹配示例代码解析&#xff1a; 6. 多模板匹配多模板匹配示例代码解析 7. 总结 模板匹配是一种在图像中寻找模板的位置的方法。…...

AWS云计算问答式知识库系统的实现

AWS平台上建立一个生成式人工智能专业文文档问答式网站&#xff0c;前端用Flask框架&#xff0c;后端用Fast API&#xff0c;前端调用后端的唯一API来完成大模型文档搜索的功能&#xff0c;使用AWS Bedrock里的Titan和Llama3模型&#xff0c;以及OpenAI 4.0 API来调用模型并提供…...

【C语言】库函数常见的陷阱与缺陷(4):内存内容操作函数

目录 一、memcmp函数 1.1. 功能与用法 1.2. 陷阱与缺陷 1.2.1. 比较范围限制问题 1.2.2. 数据类型兼容性隐患 1.2.3. 其它 1.3. 安全使用建议 1.4. 代码示例 二、memcpy函数 2.1. 功能与用法 2.2. 陷阱与缺陷 2.2.1. 缓冲区溢出风险 2.2.2. 重叠内存区域处理隐患 …...

Java 类与对象的详细讲解

引言 在Java中&#xff0c;类&#xff08;Class&#xff09;和对象&#xff08;Object&#xff09;是面向对象编程&#xff08;OOP&#xff09;的核心组成部分。通过它们&#xff0c;我们可以创建复杂的数据结构&#xff0c;并实现代码的重用性和可维护性。本文将深入探讨Java…...

Python爬虫之使用BeautifulSoup进行HTML Document文档的解析

BeautifulSoup 是一个用于解析 HTML 和 XML 文档的 Python 库&#xff0c;它为开发者提供了一种简单的方式来查找、遍历和修改文档树。BeautifulSoup 特别擅长处理不规则或格式不佳的标记语言&#xff0c;可以自动更正无效的 HTML&#xff0c;因此在网页抓取&#xff08;Web Sc…...

vue2 纯前端实现像chatGpt一样的文字流式输出

1、先展示一下效果啦 文字流输出 2、首先确定接口返回的是字符串&#xff0c;那就先调取接口 // 由于需求关系 有很多个文本需要一起逐字输出 所以这里就采用了Promise.all的形式 async getThreeTextarea() {let taskArray [ "重点项目文本","应用领域文本&qu…...

基于PHP课堂签到系统的设计与实现

摘 要 随着教育业的迅速发展和学生人数的不断增加&#xff0c;导致在班级登记制度中传统的“点到”方式不能适应学校的实际需要。从而需要设计一个好的课堂签到系统将会对课堂签到管理工作带来事半功倍的效果。文章着重介绍了基于实践应用的班级签到系统的开发流程&#xff0c…...

LLMs之APE:基于Claude的Prompt Improver的简介、使用方法、案例应用之详细攻略

LLMs之APE&#xff1a;基于Claude的Prompt Improver的简介、使用方法、案例应用之详细攻略 目录 Prompt Improver的简介 0、背景痛点 1、优势 2、实现思路 Prompt优化 示例管理 提示词评估 Prompt Improver的使用方法 1、使用方法 Prompt Improver的案例应用 1、Kap…...