[基础IO]文件描述符{重定向/perror/磁盘结构/inode/软硬链接}

文章目录

  • 1. 再识重定向
  • 2.浅谈perror()
  • 3.初始文件系统
  • 4.软硬链接

1. 再识重定向

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

图解./sf > file.txt 2>&1

1中内容拷贝给2 使得2指向file

在这里插入图片描述

再学一个

在这里插入图片描述
把file的内容传给cat cat拿到后再给file2

2.浅谈perror()

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
open()接口调用失败返回-1,并且错误码errno被适当的设置,如果在调用perror前显示设置errno,perror会输出对应的错误信息(for debug,Meaningless)

模拟实现perror()

在这里插入图片描述

3.初始文件系统

  1. 文件分为被打开的文件(内存文件)和未被打开的文件(磁盘文件)
  • 内存文件:被进程打开的文件,文件被加载到内存中供进程快速读写。
  • 磁盘文件:没有被打开的文件,保存在磁盘上。磁盘文件被分门别类的存储和管理,用于支持更好的存取。
  1. 学习磁盘文件的重点:
  • 单个文件角度: 文件的位置 大小 属性…
  • 系统角度: 文件的个数 每个文件的属性存储在哪里 如何快速找到 还可以存储多少文件 如何快速找到指定文件
  • 了解对磁盘文件进行分门别类的存储方式 支持更好更快的存取

了解磁盘文件

  1. 已知内存(Random Access Memory)是一种掉电易失存储介质 而磁盘(Hard Disk Drive)是一种永久性存储介质(除了磁盘还有 SSD[Solid State Drive]/U盘/flash卡/光盘/磁带)[速度内存>SSD>磁盘]
  2. 磁盘是一个外设 是计算机中唯一一个机械设备 速度慢(相比之下) OS有提速方式(后期讲)

磁盘的物理结构(笔记本不要在开机状态下来回移动 以免损坏磁盘)

在这里插入图片描述

  • actuator:伺服电机(音圈马达,包括永磁铁和线圈)
  • spindle:主轴(包括轴承与马达)
  • read/write heads:磁头(读写头)
  • platters(disks):磁盘盘片
  • logic board:磁盘主板(逻辑板)
  • connections:接口

在这里插入图片描述
在这里插入图片描述

  1. 磁盘盘面上存储二进制数据(通过磁头改变磁盘上的正负性)
  2. 利用磁性材料在磁场作用下的磁化性质,在磁盘表面上划分成许多小区域,根据不同的磁化方向来表示0和1的二进制数据,读写磁头在磁盘上移动实现数据的读写

磁盘的存储结构

  1. 一个盘面有两面,两面都可以读写数据,一个磁盘有多个盘面
  2. 盘片中有很多微小的磁块。磁头对磁块进行放磁,用南北极来标识0或1
  3. 在盘面上,每一圈对应着一个磁道,磁道又分为多个扇区。磁头在定位对应盘面的时候,整体共进退的,磁头共同在同一个磁道上找,整体形成柱面。
  4. 对于扇区来说,靠近圆心的扇区面积小,远离圆心的扇区面积大,每个扇区都是512byte,密度不一样。靠近圆心的密度大
  5. 扇区(Sector):扇区是磁盘上最小的存储单位。它是一个固定大小的数据块,通常为512字节或4KB。磁盘上的数据以扇区为单位进行读写
  6. 磁道(Track):磁盘上的一个圆形轨道,位于磁盘的表面上。磁盘由多个同心圆组成,每个同心圆上都有一个磁道。磁道是磁盘上的物理结构,用于存储数据。磁道上的扇区可以被读写
  7. 柱面(Cylinder):柱面由多个磁盘盘片(Platter)上的相同磁道组成的垂直堆叠。每个盘片上的相同编号磁道构成一个柱面。柱面是磁盘存储系统中的逻辑概念,用于组织和寻址数据。操作系统和磁盘控制器使用柱面号来定位和访问磁盘上的数据
  8. 扇区是磁盘上最小的存储单位,磁道是磁盘上的一个圆形轨道,柱面是由多个磁盘盘片上的相同磁道组成的垂直堆叠。chs在磁盘存储系统中用于组织和管理数据,提供对数据的读写

在这里插入图片描述

在这里插入图片描述
扇区是一个相对独立的存储单元,扇区容量的存储大小通常是固定的。一个扇区可以存储512Byte的有效数据。(目前已存在能存储4kb的扇区).扇区的标号从1开始

寻址方式[磁盘的寻址方式按512byte(一个扇区)]

  1. CHS(Cylinder-Head-Sector)寻址方式是一种早期的磁盘寻址方式,用于定位和访问磁盘上的数据。它将磁盘的物理结构抽象为柱面、磁头和扇区的组合。将磁盘划分成多个柱面,每个柱面有多个磁头,每个磁头上有多个扇区。通过指定柱面、磁头和扇区的地址,可以定位到磁盘上的特定位置。
  2. CHS寻址方式使用柱面号、磁头号和扇区号来定位和访问磁盘上的数据。 通过指定柱面号、磁头号和扇区号,操作系统或磁盘控制器可以精确地定位到磁盘上的特定数据位置。
  3. CHS寻址方式存在一些问题,比如柱面、磁头和扇区数的限制以及寻址的不规则性,导致对于大容量磁盘的支持较为困难
  4. LBA寻址方式使用逻辑块号来定位和访问磁盘上的数据,更加简单和灵活,能够支持更大容量的磁盘 LBA寻址方式是一种依据逻辑块号对磁盘进行寻址的方式。逻辑块号是磁盘上每个扇区的唯一标识,通过逻辑块号可以直接寻址到磁盘上的特定扇区
  5. CHS寻址方式是使用柱面、磁头和扇区三个参数来确定磁盘上的数据位置。这种方式的优点是寻址方式简单,寻址速度快,但缺点是只能用于容量较小的硬盘,并且由于物理参数的限制,寻址范围有限
  6. 随着硬盘容量的增长,CHS寻址方式的局限性越来越明显。为了解决这个问题,LBA寻址方式被引入。LBA将磁盘上的数据位置表示为一个逻辑块地址,这个地址是一个线性地址,与实际的物理参数(柱面、磁头和扇区)无关。这种方式使得硬盘容量可以更大,寻址范围更广,并且简化了操作系统对磁盘的管理。
  7. 在LBA寻址方式中,磁盘被抽象为逻辑块的序列,每个逻辑块都有一个唯一的逻辑块号(LBA)。逻辑块是磁盘上的最小可寻址单位,对应磁盘上的扇区,通常为512字节或4KB。LBA寻址方式不需要考虑磁盘的物理结构,如柱面、磁头和扇区。通过指定逻辑块号,操作系统或磁盘控制器可以直接定位到磁盘上的特定逻辑块,无需关心磁盘的物理布局。LBA寻址方式的优点是简单和灵活。它可以支持更大容量的磁盘,并且不受物理结构的限制。此外,LBA寻址方式还可以提供更高的数据传输速率和更好的数据可靠性。
  8. 相比于CHS,LBA有以下优点:
    更大的硬盘容量:由于LBA使用线性地址,可以轻松管理大容量硬盘。
    更简单的寻址方式:LBA只需要一个逻辑块地址即可找到数据,比CHS的三个物理参数更简单。
    更快的寻址速度:由于LBA的线性地址结构,寻址计算更简单,寻址速度更快。
    更好的兼容性:LBA可以用于不同类型的磁盘,包括固态硬盘和网络存储设备等。
    从技术角度看,LBA比CHS更先进,更适合现代计算机系统对大容量存储的需求。

磁盘的逻辑存储结构

  1. 将磁盘盘片抽象为线性结构(类似于数组),扇区抽象为逻辑块(数组元素),每个逻辑块都有逻辑块号(数组下标)
  2. 磁盘在物理上的存储结构是圆形的,将其抽象成数组进行认识。数组含多个磁道,磁道含多个扇区.

将逻辑块序列当成数组,逻辑块号作为数组下标

  • 将数据存储到磁盘 ⇒ 将数据存储到数组
  • 找到磁盘特定扇区的位置 ⇒ 找到数组特定的位置
  • 对磁盘的管理 ⇒ 对该数组的管理 ⇒ 对一个小分区的管理

内存访问磁盘

  1. 磁盘在读取时基本单位是512Byte,OS一次读取多个扇区(512Byte太小了),比如1KB、2KB、3KB、4KB(主要)
  2. 一次读多个扇区,访问一个字节时,也要将4kb空间加载到到内存。
  3. 当访问数据A时,A附近的数据也可能被访问到。加载更多的数据到内存一定程度上减少了IO次数,本质是一种数据预加载,空间换时间!
  4. 内存也被划分成了多个4KB大小的空间,这个空间称为页框,一个4KB大小的块被称为页帧。

文件系统[文件 =内容 +属性]

  1. Linux管理磁盘文件,是将文件内容和文件属性分开管理的 Linux在磁盘上存储文件的时候,将内容和属性是分开存储的
  2. 虽然磁盘的基本单位是扇区(512字节),但是操作系统(文件系统)和磁盘进行I0的基本单位是4KB(8*512byte) 4kb ⇒ block大小 磁盘⇒ 块设备
  3. 磁盘存储数据的基本单位是扇区(512B~4KB),一个block是4KB(8*512B)大小。为什么不以扇区大小作为IO操作的基本单位呢?
  • 太小了,导致多次I0,导致效率的降低
  • 如果操作系统使用和磁盘一样的大小,当磁盘基本大小改变,0S的源代码也得改呢 ⇒ 硬件和软件(0S)进行解耦

文件系统与磁盘分区

  1. 磁盘分区是将一个物理硬盘分成多个逻辑区域的过程。每个分区可以看作是一个独立的硬盘,可以分别安装操作系统和存储数据。磁盘分区可以提高磁盘的利用率,提高系统的性能和安全性。
  2. 文件系统是操作系统用来管理磁盘上文件和目录的一种机制。文件系统定义了文件和目录的命名规则、存储方式、访问权限等信息。常见的文件系统有FAT、NTFS、EXT4等。
  3. 磁盘分区和文件系统密切相关,每个分区都需要使用一种文件系统来管理其中的文件和目录。Windows系统通常使用NTFS文件系统,Linux系统则通常使用EXT4文件系统。
  4. EXT是Linux系统中最常用的文件系统之一,它是一种基于磁盘块的文件系统,支持文件和目录的权限控制、硬链接和软链接等功能。EXT系列的文件系统在Linux系统中广泛使用,是Linux系统的重要组成部分。
  5. EXT:最早的EXT文件系统,已经很少使用。
    EXT2:EXT2是Linux系统中最常用的文件系统之一,支持文件和目录的权限控制、硬链接和软链接等功能。
    EXT3:增加了日志功能,可以更好地保护文件系统的完整性和稳定性。
    EXT4:增加了一些新的特性,如更快的文件系统检查和修复、更大的文件和分区支持、更好的性能和可靠性等。

磁盘文件系统图

在这里插入图片描述
Boot Block:引导块,磁盘分区中的引导块是存储引导加载程序、引导信息和分区表的特殊区域。引导加载程序和引导信息用于启动操作系统和提供必要的配置信息;分区表中记录了磁盘上的分区布局和分区的起始位置、大小等信息。boot block有多份拷贝,防止一份损坏,全盘皆失
Block group:块组,一个磁盘分区可以再划分为多个块组。
block:数据块,操作系统和磁盘进行IO操作的基本单位是4KB,即1个block大小,因此磁盘又叫做块设备。block用于保存文件内容,一个文件可能包含多个block。
Super Block:存储文件系统的属性信息 存放文件系统本身的结构信息,有属性信息、磁盘布局和资源使用情况等信息。超级块属于整个分区,分区有许多分组都有对应的超级块,多个意味着备份,保存在不同分组,若某一个分组的文件系统坏了,可以用其它分组的超级块恢复。存储了该分区文件系统的元数据信息。包括文件系统的大小、块大小、inode数量等,以及文件系统的状态和配置信息。
Data blocks:多个4KB(扇区*8)大小的集合 ,保存的都是特定文件的内容
inode:索引节点,是一个大小为128字节的空间,用于保存对应文件的属性。每个inode节点都有一个唯一的inode编号。一个文件只有一个inode。 一般而言一个文件,一个inode,一个inode编号
inode Table:该块组内,所有文件的inode空间的集合,需要标识唯一性,每一个inode块,都要有一个inode编号 索引节点表,多个文件的inode节点的集合,用于保存对应文件的属性。每个分区都有自己的inode table,用于存储该分区中所有文件和目录的inode信息。在同一分区中,通过inode编号,可以唯一地标识和定位一个文件或目录。
Block Bitmap:比特位和特定的block一一对应,比特位为1代表该block被占用
inode Bitmap:比特位和特定的inode是一一对应的。比特位为1,代表该inode被占用
GDT:[快组描述符,这个快组多大,已经使用了多少了,有多少个inode,已经占用了多少个,还剩多少,一共有多少个block,使用了多少… ] 用于存储该块组的元数据信息。包括块组的起始位置,块组的大小,块位图的位置,索引节点位图的位置,索引节点表的位置,块组中可用空间的大小,块组中可用索引节点的数量,其他块组特定的信息等,以便操作系统能够快速定位和管理文件系统中的数据块和索引节点。
元数据: 描述数据的数据,它提供了关于数据的属性、结构、格式、位置和其他相关信息,帮助系统理解和管理数据。对于文件来说,元数据信息可能包括文件的名称、大小、创建时间、修改时间、访问权限等。对于分区文件系统来说,不单单只是保存文件信息,还有一批元数据结构专门负责管理信息,如Bitmap,用于管理Data blocks和inode Table;GDT,用于描述和管理整个块组;super block,用于描述和管理整个分区文件系统;元数据结构的存在才能够让文件的信息可追溯,可管理。
格式化: 磁盘格式化通常包括以下步骤:分区,创建文件系统(创建元数据结构,初始化元数据结构),完成格式化。实际上就是在写入文件系统。磁盘格式化是一个重要的步骤,确保磁盘上的文件系统结构正确创建,为文件和数据的存储提供了必要的基础。

  1. 能够让一个文件的信息可追溯,可管理
  2. 文件 = 内容 + 属性 文件内容保存在数据块中(Data Blocks),文件属性保存在Inode中。
  3. Inode(ext3-128byte ext4-256byte)包括一个文件的几乎所有属性(文件名不在Inode中)每个文件都有一个Inode
  4. 将块组分割成为上面的内容,写入相关的管理数据 每一个块组都这么搞 整个分区就被写入了文件系统信息 ⇒ 格式化

如何查找指定文件

一个文件"只"对应一个inode属性节点,inode编号但是一个文件可以有多个block
目录结构 – inode编号 – 某一个分区下的某一个块组 – inode区域 – 属性 – 内容

如何找到同一个文件的多个block?想要找到文件,只要找到文件对应的inode编号,就能找到该文件的inode属性集合,如何找到文件的内容?⇒ blocks[]

struct inode{
	int size;
	mode_t mode;
	...
	int blocks[15];
    blocks[0]  blocks[1]  blocks[2]
}
  1. 在inode中有一个blocks数组,0-11一般指向一个数据块,如果文件只占少量数据块,下标定位即可
  2. 12-13-14指向的数据块,里面可以保存其它数据块的块号,可以指向很多给数据块

inode中有文件名吗?

  1. inode属性中没有文件名。
  2. 目录也是文件,有自己的inode和data block。
  3. inode保存目录文件的属性;data block保存目录文件的内容 ⇒ 文件名和inode编号的映射关系。
  4. 进入目录需要x权限
    在目录下创建文件需要w权限: 向目录的data block中写数据 ⇒ 即文件名和inode的映射关系
    显示文件名与属性需要r权限 : 从目录的data block中读数据 ⇒ 即文件名和inode的映射关系
  5. 在同一目录下,不能创建同名文件。因为要保持文件名和inode编号的一一映射关系。

重新认识文件的操作

  1. 创建文件:
  • 在分区中找一块大小合适的块组;
  • 遍历inode Bitmap找到第一个为0的比特位将该位置1,创建文件inode。获得文件的inode编号。
  • 初始化文件inode,将文件的初始属性信息填入到inode中。若为空文件则清空和data blocks的映射关系
  • 向当前目录的data block中写入文件名(用户)和inode编号(文件系统)的映射关系。
  1. 删除文件:
  • 通过文件名,在目录文件的block中找到对应的inode编号。

  • 通过inode编号,找到文件的inode。其中包含一部分属于该文件的block编号。

  • 在block bitmap中将文件所属的block位,置0。在inode bitmap中将文件的inode位,置0。

  • 删除目录文件中记录的文件名和inode编号的映射关系。

  • 删除文件时,不需要将数据清空,只需要将文件所占的空间标定无效即可。⇒ 删除文件要比拷贝文件要快。

  • 系统会记录文件的删除日志,包括删除文件的文件名及inode编号。如果对应空间没有被覆盖写入的话,是可以利用工具恢复已经删除的文件的(将inode/block bitmap中的对应位置1)。

  1. 查看文件(ls -l):
  • 通过文件名,在目录文件的block中找到对应文件的inode编号。
  • 通过inode编号,找到文件的inode。inode中包含文件的属性信息。
  • 格式化输出文件名及各种属性。
  1. 修改文件:
  • 打开文件,将文件加载到内存,获取对应的文件描述符。

  • 进程将数据拷贝到缓冲区,根据刷新策略将缓冲区中的数据刷新到文件描述符对应的磁盘文件。

  • 通过文件名,在目录文件的block中找到对应文件的inode编号。

  • 通过inode编号,找到文件的inode。将数据刷新到文件的data block。

  • 为什么分区/块组有剩余空间但无法创建新文件?
    块组中的inode和data block的大小和个数是固定的,当inode有空余但data block占满,或data block有空余但inode占满 ⇒ 该分区/块组有剩余空间,但无法创建新文件(inode占满),或文件无法进行写入(data block占满)。

4.软硬链接

如何创建?

创建软链接的命令:ln -s 路径+文件名 soft.link [-s: soft]
创建硬链接的命令:ln 路径+文件名 hard.link

有何区别?

  1. 软链接
    • 软链接有独立的inode,是一个独立的文件。
    • 软链接的文件内容是目标文件的路径。
    • 软链接相当于Windows系统下文件的快捷方式。
  2. 硬链接
    • 硬链接没有独立的inode,不是一个独立的文件。
    • 与目标文件共享同一个inode,其内容,属性与目标文件完全相同。
    • 本质上是在指定目录下建立了文件名和目标文件inode编号的映射关系,并没有创建新文件 ⇒ 起别名
    • 文件属性中的硬链接数表示与文件inode关联的文件名的数量。每创建一个硬链接,硬链接数就+1
    • 当删除文件时,如果文件的硬链接数大于1,就将硬链接数-1。如果文件的硬链接数等于1,真正删除这个文件。

对硬链接的认识

新创建的普通文件只有1个文件名与其inode关联,硬链接数为1。
新创建的目录文件硬链接数为2。分别为: 当前目录名,目录中的当前目录即.
在目录中每创建一个子目录都会使硬链接数+1 ⇒ 每一个子目录中都有一个上级目录…
目录的硬链接数 -2 == 个数子目录

如何删除?

  1. unlink:用于删除普通文件的系统调用,实际是解除文件名和inode的链接关系
    在这里插入图片描述
  2. 一般命令 rm

言外知识点

在linux下 . [ 也可以是文件名

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/369017.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解SkyWalking前端监控的性能指标

SkyWalking 从8.2.0版本开始支持对前端浏览器端的性能进行监控,不仅可以像以前一样监控浏览器发送给后端服务的与请求,还能看到前端的渲染速度、错误日志等信息——这些信息是获取最终用户体验的最有效指标。实现的方式是引入skywalking-client-js库&…

二叉树可视化

二叉树可视化 运行演示代码和程序已上传二叉树知识平衡二叉树红黑树最优二叉搜索树哈夫曼树KD树B树和B树 参考 运行演示 学习二叉树总是脑补图像,实在是恶心,就想写一个能可视化的二叉树,结果没控制好,功能越想越多,先…

【Linux】Linux 开发工具(vim、gcc/g++、make/Makefile)+【小程序:进度条】-- 详解

我们在 Windows 中编写 C/C 程序时,常用的 VS2019 是一个集成开发环境,包含了很多工具包。而在 Linux 下开发,大部分的情况下都是使用一个个独立的工具。比如:编写代码用 vim,编译代码用 gcc,调试代码用 gd…

异步编程Completablefuture使用详解----进阶篇

JDK版本:jdk17 IDEA版本:IntelliJ IDEA 2022.1.3 文章目录 前言一、异步任务的交互1.1 applyToEither1.2 acceptEither1.3 runAfterEither 二、get() 和 join() 区别三、ParallelStream VS CompletableFuture3.1 使用串行流执行并统计总耗时3.2 使用并行…

《幻兽帕鲁》开荒最强帕鲁推荐!轻松拿下各种BOSS 幻兽帕鲁爆火 幻兽帕鲁2月服务器费用7000万 幻兽帕鲁图鉴

最近一款叫做《幻兽帕鲁》的新游戏走红,成为了Steam游戏平台上,连续3周的销量冠军,有不少Mac电脑用户,利用CrossOver成功玩上了《幻兽帕鲁》,其实CrossOver已经支持很多3A游戏,包括《赛博朋克2077》《博德之…

Ps:自动对齐图层

Ps菜单:编辑/自动对齐图层 Edit/Auto-Align Layers 自动对齐图层 Auto-Align Layers命令通过分析选中图层上的图像,识别出图像间的共同特征点(如边缘、纹理或特定标记等),然后基于这些特征点变换(移动、旋转…

python 爬虫篇(2)---->re正则实战豆瓣读书爬取(附带源码)

re正则实战—豆瓣读书爬取 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 re正则实战---豆瓣读书爬取前言一、准备工具二、构建请求头三、请求数据四、解析数据五、保存数据总结(源码)前言 大家好,今天我们来写一个豆瓣读书的爬虫程序,我会只用…

ProcessSlot构建流程分析

ProcessorSlot ProcessorSlot构建流程 // com.alibaba.csp.sentinel.CtSph#lookProcessChain private Entry entryWithPriority(ResourceWrapper resourceWrapper, int count, boolean prioritized, Object... args)throws BlockException {// 省略创建 Context 的代码// 黑盒…

Rust 第一个rust程序Hello Rust️

文章目录 前言一、vscode 安装rust相关插件二、Cargo New三、vscode调试rustLLDB 前言 Rust学习系列。今天就让我们掌握第一个rust程序。Hello Rust 🦀️。 在上一篇文章我们在macOS成功安装了rust。 一、vscode 安装rust相关插件 以下是一些常用的 Rust 开发插件…

Axure RP 网页版,让原型设计更高效

交互神器Axure RP是一种专业的快速原型设计工具,但Axure在用户体验上的缺陷也很明显。其设置交互方式相对繁琐,可视化不足、条件判断、变量、中继器等功能的使用需要陡峭的学习曲线。许多设计师正在寻找一个可以取代Axure的原型设计工具,即时…

Python IDE——PyCharm的下载与安装(2024)

目录 一、Python开发工具 二、下载PyCharm 三、安装PyCharm 四、使用PyCharm 一、Python开发工具 Python解释器捆绑了Python的官方开发工具——IDLE(Integrated Development and Learning Environment,集成开发和学习环境)。IDLE具备集成开发环境(I…

MySQL 小技巧:xtrabackup 软件包的下载及安装

案例:xtrabackup 软件包的下载及安装 软件包下载:Index of /percona/centos/7/RPMS/x86_64/ CentOS7 默认的数据库版本比较老,因此建议使用 xtrabackup 2.4 版本 // CentOS7 默认的数据库版本比较老,因此建议使用 xtrabackup 2.4 版本 // 安装 CentOS7 默…

vue3 之 组合式API—reactive和ref函数

ref&#xff08;&#xff09; 作用&#xff1a;接收简单类型或者对象类型的数据传入并返回一个响应式的对象 核心步骤&#xff1a; 1️⃣ 从 vue 包中导入 ref 函数 2️⃣在 <script setup>// 导入import { ref } from vue// 执行函数 传入参数 变量接收const count …

【考研408】计算机网络笔记

文章目录 计算机网络体系结构计算机网络概述计算机网络的组成计算机网络的功能计算机网络的分类计算机网络的性能指标课后习题 计算机网络体系结构与参考模型计算机网络协议、接口、服务的概念ISO/OSI参考模型和TCP/IP模型课后习题 物理层通信基础基本概念奈奎斯特定理与香农定…

Java二维数组的遍历

目录 创建二维数组二位数组初始化二位数组的遍历分析 创建二维数组 public class TestArray05{public static void main(String[] args){//定义一个二维数组&#xff1a;int[][] arr new int[3][];//本质上定义了一个一维数组&#xff0c;长度为3int[] a1 {1,2,3};arr[0] a…

java hutool工具类实现将数据下载到excel

通过hutool工具类&#xff0c;对于excel的操作变得非常简单&#xff0c;上篇介绍的是excel的上传&#xff0c;对excel的操作&#xff0c;核心代码只有一行。本篇的excel的下载&#xff0c;核心数据也不超过两行&#xff0c;简洁方便&#xff0c;特别适合当下的低代码操作。 下载…

vue2学习笔记(2/2)

vue2学习笔记&#xff08;1/2&#xff09; vue2学习笔记&#xff08;2/2&#xff09; 文章目录 1. 初始化脚手架2. 分析脚手架&render函数文件结构图示及说明main.jsindex.htmlApp.vueSchool.vueStudent.vue 关于不同版本的Vue修改默认配置vue.config.js配置文件 3. ref属…

百分点科技:《数据科学技术: 文本分析和知识图谱》

科技进步带来的便利已经渗透到工作生活的方方面面&#xff0c;ChatGPT的出现更是掀起了新一波的智能化浪潮&#xff0c;推动更多智能应用的涌现。这背后离不开一个朴素的逻辑&#xff0c;即对数据的收集、治理、建模、分析和应用&#xff0c;这便是数据科学所重点研究的对象——…

探索前端开发框架:React、Angular 和 Vue 的对决(二)

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

使用Ettus USRP X440对雷达和EW系统进行原型验证

概览 无论是保障己方平台的生存能力&#xff0c;还是扰乱敌方频谱使用&#xff0c;以电磁(EM)频谱为主导都是任务成功的主要因素。电磁频谱操作(Electromagnetic Spectrum Operation, EMSO)需要使用战术系统来监测敌方的频谱活动、定位其发射器并帮助己方制定行动计划。软件无…