计算机存储原理——基础

news2024/11/28 8:40:18

文章目录

  • 存储介质简介
    • 1. 光介质存储
    • 2. 磁介质存储
    • 3. flash(闪存)
  • 硬盘存储原理
    • 磁盘组件
    • 磁盘是如何存储文件的
    • 磁盘的性能
  • 存储接口与存储协议
    • 接口类型
    • SCSI
      • SCSI的寻址方式
      • windows下查看SCSI寻址
    • 接口与总线与协议的对应关系
    • cpu是如何控制存储的
  • 文件系统
    • 常见的文件系统
    • 文件系统中块存储与文件的关系
  • 存储链接方式
    • DAS
    • SAN
      • SAN接口的工作原理
        • IPSAN数据传输过程:
        • IPSAN的优势:
        • ISCSI可以使用身份认证
        • 注意:
      • HBA卡实物展示
      • 存储设备
    • NAS
      • NAS共享协议
      • NAS设备组件:
    • NAS、SAN、DAS的区别
  • RAID磁盘冗余与逻辑卷LUN
    • RAID
      • **怎么实现数据的可靠性:**
        • RAID模式
          • RAID不同模式的有效空间:
          • RAID实际应用模式推荐:
      • RAID实现方式:
      • LUN逻辑卷

存储介质简介

1. 光介质存储

介质: 光盘
存储原理:

  • 刻录后 暗(被刻录后会有凹槽,不反光)表示1;亮表示0;
    在这里插入图片描述

2. 磁介质存储

介质: 磁带,磁盘等
存储原理:
磁道中的不稳定磁性颗粒,经过磁头磁化后会变得有序,有序后指向南北极的方向不同,以此来区分0和1
在这里插入图片描述

  • 磁带:条状磁道。
  • 磁盘:有硬磁盘和软磁盘,圆状磁道。

3. flash(闪存)

介质: 固态硬盘,U盘,SD卡等
存储原理:
闪存颗粒中有存储单元,存储单元中存储电荷。控制栅极可以将电荷存储在存储单元中。
在这里插入图片描述
通过存储单元中的电荷有电压,达到某个阈值表示一个数值没有达到表示另一个数值,一个存储单元表示的数值有不同玩法,通常分为SLC、MLC、TLC、QLC。SLC更稳定

  • SLC:一个存储单元表示1bit的数据,达到阈值表示1达不到表示0
  • MLC:一个存储单元表示2bit的数据,根据阈值范围划分为00,01,10,11
  • TLC:一个存储单元表示3bit的数据,根据阈值范围划分为000,001,010,011,100,101,110,111
  • QLC:一个存储单元表示4bit的数据,同上
    在这里插入图片描述
    缺点: 寿命短,不利于持久化存储。企业上一般使用磁介质硬盘来做永久化存储,闪存当做缓存来使用。因为磁介质一旦经过磁化只要不是物理损伤数据不会丢失。

硬盘存储原理

磁盘组件

在这里插入图片描述
磁头摆臂可以摆动,盘片由主轴控制转动,如此以来磁头就能读取到盘片的所有磁道的数据。数据通过磁盘接口由总线发给计算机系统。
一个硬盘中可以有一个或多个盘片。盘片也可以分为单面和双面,双面表示盘片的正反两面都有磁道能存数据。

磁盘是如何存储文件的

早期磁盘存储数据方式:
磁盘存储文件时的最小单位为扇区sector,早期磁盘的寻址方式是CHS(cylinkder head sector)也就是先找到柱面再通过磁头编号找到磁道,再找到扇区。一个扇区是512Byte,若文件大于512Byte则需要跨扇区存储,但是这些扇区不一定连续这就导致读取数据时比较麻烦。
【什么是柱面】:比如一个硬盘有3个盘片,俯视图看有10个磁道,柱面就是俯视所有盘面的同一个磁道称为一个柱面。比如这三个盘面每一面的1号磁道的集合称为1号柱面,这一柱面有3个磁头分别指向这3个盘面的1号磁道。所以通过柱面-磁头编号就可以确定是哪个盘面的哪个磁道,在通过扇区找到要读取的数据。
在这里插入图片描述
目前主流磁盘的存储方式:
由于扇区的颗粒度太小,很容易跨扇区存储。所以后来有了block块(Linux下叫block)(windows下叫存储单元cluster),这是一个逻辑概念。
当你在格式化磁盘的时候windows下默认一个存储单元是4096字节(也可以手动修改),这4096字节是连续的8个扇区逻辑出来的一个块区域。格式化这个动作就是将这个磁盘的所有扇区全部按8个8个分成多个块区域,对文件系统来说他看到的最小存储单元就是一个块。
这就是你在windows上即使创建一个1字节的文件,通过文件右键->属性看到的占用空间却是4096字节的原因。
【空文件为什么占用空间是0字节】:因为文件分为描述数据(元数据metedata)和实际数据,而描述数据是有一个单独的存储位置。意味着这个文件并没有实际内容与扇区一一对应。当你往这个文件中写入一个字节的数据,这时就会占用一个块区域。
在这里插入图片描述
【为什么是4096字节】:虽然格式化时可以修改一个块的大小,但是最小也不能小于512字节,因为一个扇区就是512字节(这是真实的物理大小改变不了)。而文件系统存储文件的时候是按照块为最小单元来存储的,设置太大造成文件浪费,设置太小又会出现很多个跨块区域的数据。权衡后的大小就是4096字节。可以根据需求来调整格式化时的块区域大小,比如存的都是几个字节的零碎文件那就可以设置小一点,要是存的都是大文件那么就可以格式化的大一些,提高磁盘使用率。

磁盘的性能

对于硬件来说磁盘性能表现在:
5400rpm:平均旋转延时:5.5ms
15000rpm:平均旋转延时:2.0ms

所以可以看到机械硬盘的瓶颈很明显,转速越快产生热量越多,所以注定性能快不了。

  • 寻道速度:磁头摆臂速度
  • 盘片转速:主轴的转速

对操作系统来说磁盘的性能表现在:
通常企业上要使用IO高和高吞吐,都会选择flash,而且flash抗震。但是flash不适合永久化数据存储,可以先存到flash再由flash往慢速硬盘中导入。

  • IOPS:读写次数
  • 吞吐:带宽

存储接口与存储协议

硬盘与内存数据交互过程见下图:
在这里插入图片描述

接口类型

  1. ATA-高级技术附加-并行接口:也称为IDE接口,早期并行接口,现在已经被淘汰。(早期个人使用)
    ATA总线是一个慢速总线,总线中的数据交互需要遵循ATA协议。驱动协议指令最大速率只能到133MBps
    ATA为什么慢:

    • 使用的是并口而不是串口:虽然并行可以一次发送多个bit的数据,但是并行接口需要等排线上的数据都准备好才能发送,大多时间都在等待。而串行虽然只能一bit一bit发,但是不需要等待。还有一个原因是线路之间的电磁干扰,必须有协调机制来保证并行的数据的正确性,而这种协调机制就会导致前面说的等待。
  2. SATA:ATA总线的串行升级版本。(个人使用)

    • SATA1.0标准速度:1.5Gbps
    • SATA2.0标准速度:3Gbps
    • SATA3.0标准速度:6Gbps (600MBps)
    • 支持驱动协议指令ATA133MBps-ATA总线:它是并行协议。
    • 支持驱动协议指令AHCI指令:高级主机控制接口协议,它是一个串行协议。

    SATA接口可以使用串行或并行的方式传输协议,这取决于使用什么驱动程序。

  3. SATA-E接口:可以走SATA总线,也可以走PCIE总线。可以向下兼容SATA。

  4. M.2接口:

    • B-key接口:支持SATA3总线,使用AHCI指令。最高6G
    • M-key接口:支持PCIE3.0 *4总线,使用NVMe协议指令。最高32G
      在这里插入图片描述
  5. U.2接口:支持PCIE *4总线,使用NVMe协议指令。最高32G
    在这里插入图片描述

  6. PCI-E接口:支持PCIE *4总线,使用NVMe协议指令。最高32G
    在这里插入图片描述

  7. MINI-PCIe接口:存储能力等同于SATA,只不过接口大小较小,适合放在笔记本中。
    在这里插入图片描述

  8. SCSI:小型计算机系统接口。早期为IBM为小型机器指定的,现在已经算是一种公开标准。并行接口,对应SCSI协议,SCSI总线。但是他是并行接口,所以很慢。(早期企业使用)

    • 企业中基本不用SCSI接口,但是会用SCSI协议和SCSI总线。
    • SCSI是主机与磁盘通信的基本协议。
  9. SAS:串行版本的SCSI,使用串行的SCSI指令。(企业使用)

    • SAS驱动协议:支持串行SCSI指令、ATA指令、AHCI指令
    • SAS完全兼容SATA。
    • SAS总线可以连接一个expander,一个expander可以挂128个expander,每个expander可以连接128个硬盘。
      在这里插入图片描述
  10. 实物展示:

    • SATA硬盘可以插入到SAS接口上,但是SAS硬盘不能插入到SATA接口。
    • SAS接口如果插入了SATA硬盘,可以走AHCI协议或串行的SCSI协议。
    • SATA接口只能插SATA硬盘。
      在这里插入图片描述
      在这里插入图片描述

SCSI

SCSI的寻址方式

  1. 首先找到总线(BUS)ID(通道ID)
  2. 其次找设备ID
  3. LUN-逻辑单元:logic unit number,逻辑设备
  4. LBA-逻辑块区域:类似上面磁盘存储原理中说到的block

windows下查看SCSI寻址

在这里插入图片描述

接口与总线与协议的对应关系

在这里插入图片描述

cpu是如何控制存储的

南桥北桥:

● 早期北桥和南桥都在cpu外部通过总线通信:cpu -FSB总线->北桥-DMI总线->南桥。
● 后来的计算机,北桥都被集成到了CPU中,外部只有南桥(改名PCH:平台控制器总线芯片)。所以现在的计算机也就没有南桥北桥之说。

DMA直接内存访问:

● 若CPU中没有DMA时,cpu进行io任务的时候有两种方式:

  1. 磁盘查询:效率底浪费cpu资源。cpu不停的询问硬盘能不能进行io当io准备好了才能进行io任务,一般硬盘会给cpu回复两种状态"busy"和"ready",只有cpu收到ready的时候才会执行io任务。
  2. 中断:cpu给磁盘发送我要进行io的指令然后继续进行其他任务,磁盘接收到指令后在ready状态的时候发起io中断提醒cpu进行io任务。

● CPU中集成了DMA时:

  • cpu要执行io任务的时候将io控制权暂时交给DMA控制单元,DMA帮CPU去完成io任务(方式:io中断),cpu除了跟DMA通信外不需要跟磁盘交互,cpu可以继续执行其他运算任务。DMA处理好了后通知CPU,CPU收回io控制权。

文件系统

简述:

  • 文件系统以树形目录的方式组织计算机数据,直接与物理磁盘的块区域交互,让我们在使用计算机的过程中对物理磁盘的存储无感知,我们只需要记录文件名和目录即可。
  • 文件系统与磁盘交互的方式是文件系统维护着文件与底层LBA地址的映射关系。

常见的文件系统

不同的操作系统能识别不同的文件系统,有些文件系统可以被所有主流操作系统识别。

windows:

  • FAT16、FAT32、NTFS、exFAT

Linux:

  • ext、ext2、ext3、ext4、XFS、ISO9660、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC、exFAT

MAC OS:

  • APFS、HFS+、exFAT

文件系统中块存储与文件的关系

当主机接入块设备的时候(LUN)通过驱动协议(SCSI)与扇区(sector)通信。

  1. 磁盘首先将磁盘进行分区(按照磁盘大小分)得到盘符。
  2. 将盘符格式化,将对应的block块链接到这个分区,完成文件系统的创建。
  3. 每个分区中都有一个单独的存储空间用来保存元数据(Linux中叫inode)信息(文件描述信息、mapping映射LBA关系)。所以格式化后的大小会略微小于分区的总大小。
    在这里插入图片描述

注意:

  • 对windows系统来说操作系统会默认保留100M的保留分区来存储引导程序。
  • 分区是个逻辑的概念,既可以压缩也可以扩展。
  • 格式化重新对磁盘上的block划分,此时可能会导致数据丢失。
  • 格式化分为快速格式化和常规格式化。快速格式化不会对block填0,而常规格式化会将该分区对应的block全部填0
  • windows下分区有两种方式,MBR(最大2T)和GPT(大小无限制)。

存储链接方式

DAS

  • 全称:Direct Access Storage(直连存储)
    在这里插入图片描述
  • 特点:
    • 通过存储线缆直接将数据传入主机,不通过网络。
    • 对主机提供的是一个块级别的存储。也就是说没有文件系统,需要进行分区格式化后才能使用。
      在这里插入图片描述

SAN

  • 全称:Storage Area Network(存储区域网络)
    在这里插入图片描述
  • 特点:
    • 有单独的网络来进行传递数据的存储指令。
    • 有单独的存储设备来进行存储——集中式存储。
    • SAN的本质是通过网络数据包的形式将SCSI指令进行封装后,通过网络设备发送给存储设备。
    • SAN对主机提供的是块级别的存储。
    • SAN的网络通常情况下使用光纤网络。
  • SAN封装SCSI指令的方式:针对不同的封装方式称为FC-SAN和IP-SAN
    • FC:有自己单独的协议框架,无法和以太网兼容。FC对应有FC光纤交换机,FC接口。如果想使用FC网络必须使用FC接口和FC光纤交换机(FC接口必须走光纤)。
      在这里插入图片描述

    • ISCSI:支持TCP/IP协议,可以使用以太网的接口和交换机来传输数据。

SAN接口的工作原理

主机本身是不能将SCSI指令转化成FC或ISCSI指令,所以需要一个硬件来完成这项工作,它就是HBA卡。
HBA卡分为FC-HBA卡和ISCSI-HBA卡。
在这里插入图片描述

FC-HBA:
在这里插入图片描述

ISCSI-HBA:
在这里插入图片描述

IPSAN数据传输过程:
  1. 服务器在内存中产生数据。
  2. 内存将SCSI指令通过总线发送给ISCSI-HBA卡。
  3. ISCSI-HBA卡将SCSI指令封装成ISCSI指令,这个指令中带了以太网的数据包。
  4. 将数据包通过以太网发送给存储设备。
  5. 存储控制器从Ethernet接口接收ISCSI指令数据包,解析成SCSI指令进行数据的存储。
IPSAN的优势:
  1. 接入标准化:不需要专用的HBA卡和光纤交换机,普通的以太网卡和交换机就可以实现存储和服务器的连接。
  2. 传输距离远:理论上IP网络可达的地方就可以使用IPSAN。
  3. 可维护性好:IP网络技术的维护人员群众广大,维护工具齐全。
  4. 带宽扩展方便:随着10Gb以太网的迅速发展,IPSAN单端口带宽扩展到10Gb已经是趋势。
ISCSI可以使用身份认证

在这里插入图片描述

  • ISCSI中可以开启身份认证(CHAP:用户名/口令)也可以不开启。
  • 如果开启了CHAP,会在ISCSI中创建关联角色IQN-ISCSI限定名称(限定名称表示一个目标的连接),因为一个ISCSI发起段可以有多个目标,而这些目标需要有个区分,这时就需要IQN来标记每个目标。
注意:
  • FC-SCSI只能通过FC-HBA卡来进行封装。ISCSI可以由模拟软件通过CPU封装然后通过光纤网络发送给存储设备,也可以由ISCSI-HBA卡来封装。
  • FCoE:FC支持以太网传输的过渡协议版本,极少有场景使用。
  • 以太网中一个包的数据最大1500字节(虽然可以设置这个最大值)导致IPSAN的速度不如FCSAN。FCSAN的一个数据包很大,发送速度较快,但是现在IPSAN的速度也在进步,使用更加广泛。

HBA卡实物展示

在这里插入图片描述

存储设备

存储设备分为硬盘框和控制框:

  • 存储控制引擎(控制框):控制整个存储规划,空间划分。提供IO接入功能。
  • 硬盘框存储阵列(硬盘框):负责最终的数据存储。
  1. 盘控一体:控制框和硬盘框在一起。
    在这里插入图片描述
  2. 盘控分离:控制框和硬盘框之间使用的DAS方式连接,控制框对外提供IO接口,供外部访问。
    在这里插入图片描述

NAS

  • 全称:Network Access Storage(网络访问存储)
  • 简述:通过存储为用户提供文件级别的存储。可通过TCP/IP协议做文件共享
  • eg:smba工具

NAS共享协议

  1. SMB协议:Windows平台下service message block 服务消息块,对应CIFS文件系统。
  2. NFS:unix平台下Network File System,对应NFS文件系统。

NAS设备组件:

  1. NAS引擎-控制器:负责I/O接入 | NAS空间划分。
  2. NAS后端存储硬盘框:负责写入数据。
  • 一体化NAS:包含NAS引擎和硬盘框。
    • windows下win+R–>运行–>//ip/filepath–>看到共享目录。实际上是通过SMB协议访问CIFS文件系统。
    • linux下需要安装smba软件来支持smb协议。
    • mac系统下运行框–>smb://ip/filepath–>看到共享目录。
  • 访问NFS共享存储:
    • windows下需要安装NFS客户端,在windows功能下开启。
    • Linux下需要安装NFS客户端。
    • mac下需要安装NFS客户端。

NAS、SAN、DAS的区别

  • DAS:为我们提供的是块级别的直连存储。支持SCSI、SATA总线协议。
  • SAN:为我们提供的是块级别的网络存储,需要特殊的网络设备。支持iSCSI、FC协议。
  • NAS:为我们提供的是文件级别的网络存储,普通的网络即可。常用来做共享存储。

在这里插入图片描述

RAID磁盘冗余与逻辑卷LUN

  • 描述:Redundant array of independent disks(RAID)独立硬盘冗余阵列。
  • 作用:
    • 提升主机的存储速度。
    • 确保存储的正确性。(可靠性)
  • 原理:多个硬盘组成的一个阵列集群,对主机来说只能看到一个逻辑硬盘。提高并行读写效率。

RAID

当硬盘加入到RAID集群后,需要对硬盘进行条带化-Strip(逻辑块)

【什么是条带化?】
硬盘中单个或多个连续的扇区构成条带,他是一块硬盘上进行一次数据读写的最小单元,类似于block块。
集群中的每个磁盘都必须先有自己的条带,阵列中每个磁盘的相同"位置"(或者说相同编号)条带的集合组成一个分条,分条是提供给主机访问逻辑硬盘的最小存储单元。

在这里插入图片描述

怎么实现数据的可靠性:

  • 方法一:通过数据镜像副本
  • 方法二:通过算法实现冗余副本
RAID模式

RAID0、RAID1、RAID3、RAID5、RAID6、RAID10、RAID01

  • RAID 0:通过条带分条技术实现提升并行写入速度。但是无法提供数据可靠性,如果一个磁盘损坏,那么这整个分条的数据就被损坏了。
    在这里插入图片描述
  • RAID 1:通过镜像技术实现数据备份。但是无法提升写入的速度,可以提升读取速度。因为数据有多份可以并行读取。
    在这里插入图片描述
  • RAID 3:带奇偶校验。允许任何一个盘损坏,P盘是不与主机I/O通信的。
    在这里插入图片描述
    【为什么可以允许一个磁盘损坏?】
    因为奇偶校验的原理是异或运算,任何一个盘的损坏都可以通过其他盘的数据根据异或算法推理得到。
    eg:比如现在有上图中5个盘,数据盘的数据为0、1、0、1那么校验盘的数据计算方式为按顺序从前往后异或,0⊕1=1,1⊕0=1,1⊕1=0;所以P盘的数据就是0。当disk0盘损坏,依然可以通过逆向异或推理得到disk0的数据是0
  • RAID 5:原理同RAID3一样,但是没有独立的硬盘来存储校验数据。通过分布式存储算法将校验数据分布存储在数据盘中。同样只允许损坏一个硬盘。
    在这里插入图片描述
  • RAID 6:原理同RAID5,但是多增加了一个q校验数据来保证数据的可靠性。允许任意两块盘损坏。
    在这里插入图片描述
  • RAID 10:先将两块硬盘做RAID1,再将两块RAID1的硬盘做RAID0。比如有4个盘两两分组分为组1和组2。组内使用RAID1,外层对组1和组2做RAID0;
  • RAID 01:先将两块硬盘做RAID0,再将两块RAID0的硬盘做RAID1。举例同RAID10;
RAID不同模式的有效空间:
  • RAID 0:利用率100%
  • RAID 1:利用率50%
  • RAID 3:N-1
  • RAID 5:N-1
  • RAID 6:N-2
  • RAID 10:利用率50%
  • RAID 01:利用率50%
RAID实际应用模式推荐:
  • RAID 5:推荐4盘位
  • RAID 6:最少4盘位,推荐6盘位

RAID实现方式:

  1. 通过RAID模拟软件,来模拟RAID实现。主机的存储是跟RAID软件交互。(不推荐使用)
  2. RAID卡插在主板上,RAID卡提供了接口可以连接硬盘,主机只能看到RAID的逻辑磁盘。主机的存储是跟RAID卡交互。这种方式的RAID模式需要进入主板BIOS中设置。

注意:
服务一般运行在操作系统上,而操作系统也存储在一个硬盘上,若恰好操作系统所在的磁盘挂了那么整个服务都将瘫痪。所以一般有两种方式去报操作系统的可靠性:

  1. 先做RAID,然后再做系统。
  2. 在存储设备做RAID,在RAID的基础上闯将逻辑卷(LUN)系统装在LUN上。如此做法即使主机挂了,换一个主机再映射这个LUN数据和系统依然在。

LUN逻辑卷

企业使用时,一般是将多个磁盘先通过RAID技术做一个大的物理硬盘,在RAID的基础上可以创建多个逻辑卷(LUN),这个LUN对于存储设备来讲可以当作是个逻辑分区,而这个LUN在主机中认为它是一块磁盘(块设备)。
LUN是一个存储设备中的逻辑分区,但是可以作为一个独立的块设备映射给主机。
LUN通常情况下作为服务器的数据盘
在这里插入图片描述

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

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

相关文章

《数据结构》顺序表+算法代码+动画演示-C语言版

目录 顺序表概念 顺序表初始化 顺序表销毁 顺序表尾插 顺序表尾删 顺序表头删 顺序表头插 顺序表pos位置插入 顺序表pos位置删除 顺序表全部代码如下: 顺序表概念 顺序表是用一段 物理地址连续 的存储单元依次存储数据元素的线性结构,一般情况下…

「OC」CAShapeLayer和UIBezierPath —— 抽屉视图之中圆角cell的实现

「OC」CAShapeLayer和UIBezierPath —— 抽屉视图之中圆角cell的实现 文章目录 「OC」CAShapeLayer和UIBezierPath —— 抽屉视图之中圆角cell的实现前言CALayer的子类CAShapeLayerpath 贝塞尔曲线应用实践参考资料 前言 上次我们学习了CALayer的相关知识 ,但好像忘…

2024计算机软考报名流程(电脑报名)

1.24年下半年软考报名时间,各省报名时间不一样, 报名时间大概集中在:24年8月19日~24年9月15日; 报名网站:中国计算机技术职业资格网; 广东:2024年8月21日9:00至29日17:00 安徽&#…

全面调研:19类AI Agent框架的对比与分析

代理(Agent)指能自主感知环境并采取行动实现目标的智能体,即AI作为一个人或一个组织的代表,进行某种特定行为和交易,降低一个人或组织的工作复杂程度,减少工作量和沟通成本。 背景 目前,我们在…

监听页面滚动到某个元素 设置入场动画

mounted() {this.eventScroll()}, eventScroll() {// 选择你想要监听的元素const targetLogo document.getElementById(logoanimation);// 创建并配置IntersectionObserverconst observer new IntersectionObserver((entries) > {entries.forEach(entry > {if (entry.…

回收站的文件删除了怎么恢复?4个技巧轻松找回文件!

在日常使用电脑的过程中,回收站作为我们删除文件的临时存放地,扮演着重要的角色。然而,有时我们可能会不小心从回收站中删除了重要文件,导致数据丢失。面对这种情况,许多用户会感到焦虑和无助。但别担心,本…

基于Spark实现大数据量的Node2Vec

基于Spark实现大数据量的Node2Vec Node2Vec 是一种基于图的学习算法,用于生成图中节点的低维度、高质量的向量表示。这种算法基于 word2vec 模型,将自然语言处理中的词嵌入技术应用于图结构的节点,以捕捉节点之间的复杂关系。Node2Vec 特别强…

glibc 2.24 下 IO_FILE 的利用

文章目录 glibc 2.24 下 IO_FILE 的利用介绍:新的利用技术fileno 与缓冲区的相关利用实例:1. _IO_str_jumps -> overflow实例: 2. _IO_str_jumps -> finish实例: 最后拓展一下上一篇博客house of orange题目的做法: glibc 2.24 下 IO_F…

6.4K+ Star!一个强大的本地知识库问答系统,支持多格式文件和跨语言检索,为企业提供高效、安全的数据洞察……

https://github.com/netease-youdao/QAnything 【阅读原文】跳转Github项目 转自AIGC创想者 项目简介 QAnything 是一个基于本地知识库的问答系统,它能够理解和回答基于任何类型文件的问题。 QAnything支持的文件格式非常广泛,包括PDF、Word、PPT、XL…

【GH】【EXCEL】P6: Shapes

文章目录 componentslinepicture components line picture Picture A Picture object Input parameters: Worksheet (Generic Data) A Worksheet, Workbook, Range Object, Excel Application, or Text Worksheet NameName (Text) An optional object nameLocation (Point) A p…

停车场管理系统--论文pf

TOC springboot544停车场管理系统--论文pf 第1章 绪论 1.1 课题背景 二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的…

推荐一个开源的kafka可视化客户端GUI工具(Kafka King)

大佬的博客地址: https://blog.ysboke.cn/posts/tools/kafka-king Github地址: https://github.com/Bronya0/Kafka-King Kafka-King功能清单 查看集群节点列表(完成)支持PLAINTEXT、SASL PLAINTEXT用户名密码认证(完…

基于数据挖掘的消费者商品交易数据分析可视化与聚类分析

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍项目实现实现流程实现过程数据预处理EDA探索性数据分析聚类分析每文一语 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主 项目介绍 基于python的消费…

HexView 刷写文件脚本处理工具-命令行介绍(六)-CheckSum计算(/CS:)-CRC32

CheckSum计算 checksum计算是hexview最常用,也是比较实用的功能之一,每一版本支持的功能不同,最新的版本大概支持几十种CheckSum的计算。 界面计算 经常在操作的时候,如果是偶尔计算可以直接使用界面就可以了,非常清楚明了。 命令行介绍 通常使用计算的时候是在释放…

大话C语言:第43篇 结构体的位域

位域是结构体中的一个特殊成员,它允许我们指定该成员所占用的位数,而不是使用完整的字节或更大的单位。这在需要精确控制数据在内存中的布局时特别有用,例如在网络编程或硬件接口编程中。 位域的定义语法如下: struct 标签或者结…

利用TeamCity实现maven项目的CI/CD

1.什么是TeamCity? TeamCity 是一款由 JetBrains 开发的强大的持续集成(Continuous Integration,CI)和持续部署(Continuous Deployment,CD)工具。它帮助开发团队自动化构建、测试和部署过程&am…

Spring Boot OAuth2.0应用

本文展示Spring Boot中,新版本OAuth2.0的简单实现,版本信息: spring-boot 2.7.10 spring-security-oauth2-authorization-server 0.4.0 spring-security-oauth2-client 5.7.7 spring-boot-starter-oauth2-resource-server 2.7.10展示三个服务…

汽车服务管理系统 _od8kr

TOC springboot580汽车服务管理系统 _od8kr--论文 系统概述 该系统由个人管理员和员工管理,用户三部分组成。其中:用户进入系统首页可以实现首页,热销汽车,汽车配件,汽车资讯,后台管理,在线客…

TCP端口范围

ip_local_port_range sysctl -a | grep ip_local_port_range | head 默认情况下,net.ipv4.ip_local_port_range的默认值为32768-60999。这意味着本地应用程序可以使用的端口号范围为32768到60999。 sysctl -a | grep net.ipv4.ip_local_reserved_ports |head …

光伏检测气象站:实时监测:高效管理

随着全球对可再生能源需求的日益增长,光伏发电作为清洁能源的重要组成部分,其重要性日益凸显。然而,光伏发电的效率与稳定性受气象条件影响显著,如光照强度、温度、湿度、风速等因素均能直接影响光伏板的发电效率。因此&#xff0…