[基础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下 . [ 也可以是文件名

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机Windows Server 2016 安装 MySQL8

目录 一、下载MySQL8 1.下载地址: 2.创建my.ini文件 二、安装步骤 第一步:命令窗口 第二步:切换目录 第三步:安装服务 第四步:生成临时密码 第五步:启动服务 第六步: 修改密码 三…

【服务器搭建】快速完成幻兽帕鲁服务器的搭建及部署【零基础上手】

推荐阅读 CSDN主页GitHub开源地址Unity3D插件分享简书地址我的个人博客 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有用记得一键三连哦。 一、前言 教程详戳:不需要懂技术,1分钟幻兽帕鲁服…

stable diffusion学习笔记——高清修复

ai画图中通常存在以下痛点: 受限于本地设备的性能(主要是显卡显存),无法跑出分辨率较高的图片。生图的时候分辨率一调大就爆显存。即便显存足够。目前主流的模型大多基于SD1.0和SD1.5,这些模型在训练的时候通常使用小…

【Git】01 Git介绍与安装

文章目录 一、版本控制系统二、Git三、Windows安装Git3.1 下载Git3.2 安装3.3 检查 四、Linux安装Git4.1 YUM安装4.2 源码安装 五、配置Git5.1 配置用户名和邮箱5.2 配置级别5.3 查看配置 六、总结 一、版本控制系统 版本控制系统,Version Control System&#xff…

大数据分析|大数据分析的三类核心技术

文献来源:Saggi M K, Jain S. A survey towards an integration of big data analytics to big insights for value-creation[J]. Information Processing & Management, 2018, 54(5): 758-790. 下载链接:链接:https://pan.baidu.com/s/1…

2024.2.3 寒假训练记录(17)

补一下牛客,菜得发昏了,F搞了两个小时都没搞出来,不如去开H了 还没补完 剩下的打了atc再来 文章目录 牛客 寒假集训1A DFS搜索牛客 寒假集训1B 关鸡牛客 寒假集训1C 按闹分配牛客 寒假集训1D 数组成鸡牛客 寒假集训1E 本题又主要考察了贪心牛…

java设计模式:策略模式

在平常的开发工作中,经常会用到不同的设计模式,合理的使用设计模式,可以提高开发效率,提高代码质量,提高代码的可拓展性和维护性。今天来聊聊策略模式。 策略模式是一种行为型设计模式,运行时可以根据需求动…

(2024|ICLR reviewing,IGN,EBGAN,重建、幂等和流形紧致目标)幂等生成网络

Idempotent Generative Network 公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群) 目录 0. 摘要 2. 方法 2.1 优化目标 2.2 训练 2.3 架构和优化 4. 实验 5. 相关工作 6. 局限性 0. 摘要…

PyTorch基础-Tensors属性、Tensor的运算

PyTorch的基本概念 Tensor的基本概念 张量高于标量、向量、矩阵 标量说零维的张量,向量是一维的张量,矩阵是二维的张量 Tensor与机器学习的关系 Tensor的创建 函数功能Tensor(*size)基础构造函数Tensor(data)类似np.arrayones(*size)全1Tensorzeros(…

029 命令行传递参数

1.循环输出args字符串数组 public class D001 {public static void main(String[] args) {for (String arg : args) {System.out.println(arg);}} } 2.找打这个类的路径,打开cmd cmd C:\Users\Admin\IdeaProjects\JavaSE学习之路\scanner\src\com\yxm\demo 3. 编译…

C++ 之LeetCode刷题记录(二十七)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 目标:执行用时击败90%以上使用 C 的用户。 136. 只出现一次的数字 给你一个 非空 整数数组 nums ,除了某个元素只出现…

【Web前端笔记06】CSS常用属性

目录 一、字体属性 1、color 字体颜色 2、font-size 字体大小(默认16px) 3、font-weight 文本粗细 4、font-style 字体样式 5、font-family 指定一个元素的字体 二、背景属性 1、background-color 背景颜色 2、background-image: url("img/do.png"); 背景…

某站平台的签名算法分享

先charles抓包,api.xxxxxx.com域名的包 分析包 看到路径参数如下 appkey1d8b6e7d45233436&build5531000&channeldw056&mobi_appandroid&mode0&oid326052200&plat2&platformandroid&ps20&statistics%7B%22appId%22%3A1%2C%22p…

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

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

前端JavaScript篇之map和Object的区别、map和weakMap的区别

目录 map和Object的区别map和weakMap的区别 map和Object的区别 Object是JavaScript的内置对象,用于存储键值对。Object的键必须是字符串或符号,值可以是任意类型。Map是ES6引入的新数据结构,用于存储键值对。Map的键可以是任意类型&#xff…

C++ 日期类的实现

目录 前言 日期类中的成员函数和成员变量 日期类中成员函数的详解和实现 1.天数前后的判断 2.天数加减的实现 3.前置 && 后置 4.计算天数差值 前言 日期类的实现将综合前面所学的(类的6个默认成员函数),进一步理解和掌握类的…

COX预测模型过程中,我踩过的那些雷

R语言做!初学者先进来看看!!! SCI冲 COX分析:做临床信息与预后相关的COX分析大致都会分为两个步骤,先做单因素COX回归分析,再根据P值挑选有意义的变量,最终纳入COX多因素回归模型中&…

20240202在WIN10下部署faster-whisper

20240202在WIN10下部署faster-whisper 2024/2/2 12:15 前提条件,可以通过技术手段上外网!^_ 首先你要有一张NVIDIA的显卡,比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡!】800¥ 2、请正确安装好NVIDIA最…

SpringBoot实战项目第一天

环境搭建 后端部分需要准备: sql数据库 创建SpringBoot工程,引入对应的依赖(web\mybatis\mysql驱动) 配置文件application.yml中引入mybatis的配置信息 创建包结构,并准备实体类 完成今日开发后项目部分内容如下图示 用户注册于登录部分…

[BUUCTF]-PWN:mrctf2020_easy_equation解析

查看保护 再看ida 很明了,题目就是让我们用格式化字符串漏洞修改judge的值(可以用python脚本进行计算,最终算出来得2)使等式成立,然后getshell。 虽然操作比较简单,但我还是列出了几种方法 解法一&#x…