磁盘类型和相关术语学习笔记
admin
2024-03-26 14:53:57
0

磁盘类型和相关术语


在 Linux 中一切皆文件,但是类型不同。例如使用 ls -l 对于设备文件和普通文件有一部分内容是不同的,即普通文件有大小,而设备文件有主设备号和次设备号,没有大小。

# ll 1.txt /dev/sda /dev/sda1
-rw-r--r-- 1 root root   47 Nov 30 21:22 1.txt
brw-rw---- 1 root disk 8, 0 Dec  3 10:13 /dev/sda
brw-rw---- 1 root disk 8, 1 Dec  3 10:13 /dev/sda1

如果使用 cp -a 复制一个块设备,这时两个文件的主设备号和次设备号相同,但是它们的 inode 不同,类似于文件的软连接。如果挂载复制出来的文件,可以访问到与被复制的设备的内容。

# df /dev/sda1
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/sda1         487634 142353    315585  32% /boot# cp -a /dev/sda1 ./sda1.bak
# mount sda1.bak /mnt# df /mnt
Filesystem     1K-blocks   Used Available Use% Mounted on
/root/sda1.bak    487634 142353    315585  32% /mnt# ll -id /mnt /dev/sda1
15113 brw-rw----  1 root disk 8, 1 Dec  3 10:13 /dev/sda12 dr-xr-xr-x. 6 root root 1024 Nov 13 18:27 /mnt

使用专门的命令来创建相同的设备:

# mknod /data/sda1 b 8 1
# mount /data/sda1 /mnt/# df /mnt
Filesystem     1K-blocks   Used Available Use% Mounted on
/data/sda1        487634 142353    315585  32% /mnt

硬盘种类繁多,可能有:

/dev/sd[a-z]         # SCSI、SATA、SAS、USB 等
/dev/nvme...         # nvme 协议,例如 固态硬盘
/dev/vd              # 虚拟硬盘
/dev/xvd

如果在虚拟机上新增了几块硬盘,可以使用以下命令来进行扫描,使系统能够设别出来。

$ echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan# 最好设置成别名
# alias scandisk="echo '- - -' > /sys/class/scsi_host/host0/scan;echo '- - -' > /sys/class/scsi_host/host1/scan;echo '- - -' > /sys/class/scsi_host/host2/scan"

可以使用以下命令判断是否具有旋转特性的存储设备,值是 1 表示是机械硬盘, 值是 0 表示固态硬盘:

]# lsblk -d -o NAME,ROTA
NAME ROTA
sda     1
sr0     1

也可以使用以下命令查看:

]# ls /sys/block                     # 列出当前的硬件设备
sda  sr0
]# cat /sys/block/sda/queue/rotational
1
]# cat /sys/block/sr0/queue/rotational
1]# cat /sys/block/*/query/rotational

磁盘分区

分区方式

目前有两种分区的方式:MBR、GPT。

MBR

MBR:Master Boot Record, 1982年,使用 32 位表示扇区数,分区不超过 2T。

$ echo 2^32*512/1024/1024/1024 | bc
2048

CentOS 6 版本开始按照 Sector 划分,而 CentOS 5 及之前采用柱面划分。

0 磁道 0 扇区:512 bytes
446 bytes --> boot loader
64 bytes --> 分区表,每 16 字节标识一个分区
2 bytes --> 55AA

因此,MBR 分区的硬盘最多只能有 4 个主分区,或分出其中的分区成为扩展分区。

可以使用以下命令查看十六进制的分区情况,最后部分是有关分区的数据:

# hexdump -C -n 512 /dev/sda1

硬盘的分区表数据很重要,如果不小心弄坏了,就不能启动电脑了。我们需要对分区表进行备份(Disk Partition Table):

说明:dd 命令中 skip 表示跳过源位置,seek 表示跳过目标位置

# 备份分区表
]# dd if=/dev/sda of=/data/dpt.img bs=1 count=64 skip=446
]# scp dpt.img 10.0.0.200:# 破坏分区表
]# dd if=/dev/zero of=/data/sda bs=1 count=64 skip=446
# 使用以下命令已经看不到分区表
]# fdisk -l

如果此时进行 reboot 就无法启动 Linux 了。

我们需要使用其他启动方式,例如使用光盘启动,进入 ‘rescue mode’,选择第 3 项 ‘skip to shell’。

先要配置网络,没有网络可能得不到备份文件。

]# ifconfig ens33 10.0.0.100/24           # 或使用推荐的命令
]# ip addr add 10.0.0.100/24  dev ens33]# scp 10.0.0.200:/root/dpt.img ./# 恢复分区表
]# dd if=dpt.img of=/dev/sda bs=1 seek=446
]# exit

GPT

GPT:GUID (Globals Unique IDentifiers),支持128个分区表,使用 64 位,支持 8Z 空间(512Byte/block)至 64Z 空间(4096Byte/block)。

使用 128 位 UUID (Universible Firmware Interface)表示磁盘和分区。该分区表自动在头和尾进行备份,并有 CRC 校验位。

UEFI(Unified Extensible Firmware Interface)统一可扩展固件接口的硬件支持 GPT 分区。

BIOS 和 UEFI

BIOS 采用了 16 位汇编语言编写,只能运行在实模式中(内存寻址方式由 16 位段寄存器的内容乘以16 (10H) 当做段基地址,加上 16 位偏移地址形成 20 位的物理地址下,可访问的内存空间为 1MB,只支持字符操作界面。

UEFI 采用了 32 位或 64 位的 C 语言编写,突破了实模式的限制,可达最大的寻址空间,支持图形界面,使用文件方式保存信息,支持 GPT 分区启动,适合较新的系统和硬件配合使用。

管理分区

列出块设备的命令是 lsblk

创建分区命令:

fdisk       # 管理 MBR 分区,在 CentOS 8 中也支持 GPT 分区
gdisk       # 管理 GPT 分区
parted      # 高级分区操作

重新设置内存中的内核分区表,使内存中的分区与 fdisk 显示的一样:

# 对于 CentOS 5,7, 8 使用
partprobe# 以上命令对于 CentOS 6 没有效果,使用以下命令
partx -a /dev/sda
# 如果删除了 6,7, 8 三个分区,这时需要使用以下参数
partx -d --nr 6-8 /dev/sda

可以使用以下命令查看分区的情况:

fdisk l
lsblk
cat /proc/partitions
parted 命令

该命令支持可交互或非交互的方式,其操作是实时生效的,要小心使用。其使用格式为:

parted [option]... [device [cmd [param]...]...]

示例:

parted /dev/sdb mklabel gpt|msdos       # msdos for MBR
parted /dev/sdb print
parted /dev/sdb mkpart primary 1 200    # 默认单位是 M
parted /dev/sdb rm 1                    # 1 表示第一个分区数字
parted -l                               # 列出所有硬盘分区信息dd if=/dev/zero of=/dev/sdb bs=1 count=66 seek=64    # 清除分区信息及最后两个字节 '55aa'
dd if=/dev/zero of=/dev/sdb bs=1 count=2 seek=510    # 清除分区表最后两个字节 '55aa'
fdisk

从 CentOS 8 开始也支持 GPT 分区,它是交互式操作的。操作时有对应的提示。不是实时操作的。

如果只有一块硬盘,需要安装操作系统,必须要设置主分区,如果不安装操作系统,可以创建扩展分区。但是最多只能是一个扩展分区,而主分区最多只能有4个。

如果有几个扩展的逻辑分区,中途删除一个分区,则后面的分区编号会自动填补空缺,这样说明,使用这样的设备名在编程中可能由于设备名改变造成不正确 /dev/sda5

如果想要使用非交互式创建分区

echo -e 'n\np\n\n\n+2G\nw\n' | fdisk /dev/sdc

文件系统

文件系统概念

操作系统负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。从系统角度看,文件系统是对文件存储设备的空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统。具体地说,负责为用户建立文件,存入、读出、修改、转储文件,控制文件的存取,安全控制,日志,压缩和加密等。

支持的文件系统:

ls /lib/modules/`uname -r`/kernel/fs

查询帮助

man 5 fs

文件系统类型

Linux 常用文件系统

  • ext2:Extended file system,适用于分区容量不太大,不频繁更新的分区,例如,/boot 分区
  • ext3:是 ext2 的改进版本,支持日志功能,能够帮助系统从非正常关机导致的异常中恢复
  • ext4:是 ext 文件系统的最新版。提供了许多新的特性,包括纳秒级时间戳、创建和使用巨型文件(16T),最大 1EB 的文件系统,以及提升速度
  • xfs:SGI,支持最大 8EB 的文件大小
  • swap:交换
  • iso9660:光盘
  • btrfs
  • reiserfs

Windsows 常用文件系统

  • FAT32
  • NTFS
  • exFAT

Unix

  • FFS (fast fs)
  • UFS (unix fs)
  • JFS2

网络文件系统

  • NfS
  • CIFS

集群文件系统

  • GFS2
  • OCFS2 (oracle)

分布式文件系统

  • fastdfs
  • ceph
  • moosefs
  • mogilefs
  • glusterfs
  • Lustre

创建文件系统

创建文件系统的工具:

  • mkfs 命令:可以使用以下两种形式,-L 'LABEL 表示卷标

    mkfs.FS_TYPE /dev/DEVICE    # FS_TYPE 表示文件系统,例如 ext2,ext3,ext4等mkfs -t FS_TYPE /dev/DEVICE # 另一种形式
    
  • mke2fs 命令:ext 系列文件系统专用工具

以上命令的常用选项:

-t {ext2|ext3|ext4} # 指定文件系统类型
-b {1024|2048|4096} # 指定块大小
-L 'LABEL'          # 设置卷标
-j                  # 相当于 '-t ext3', 'mkfs.ext3'
-i #                # 指定每多少个字节创建一个 inode,不应该小于 block 大小
-N #                # 指定分区中创建多少个 inode
-l                  # 一个 inode 记录占用磁盘空间的大小,'128~4096'
-m #                # 默认 '5%',为管理人员占用总空间的比例
-O FEATURE[,...]    # 启用指定的特性
-O ^FEATURE         # 关闭指定的特性```
对于 `ext4` 类型,想要查看块大小需要使用,可以在列出的数据中看到 'block size:   4096'```bash
tune2fs -l /dev/sda1

对于 xfs 类型,想要查看块大小需要使用,可以看到 ‘bsize=4096’

xfs-info
df /dev/xxx           # 用于查看文件系统占用的空间
du -s /dev/xxx        # 用于查看文件所占用的空间大小

从以上可以看出,创建文件需要占用两种空间,一是 inode 元数据,另一个是文件本身实际占用的空间。如果创建的空文件,文件不占用实际空间,但是要占用 inode 空间。如果创建的文件大小比块大小,如比 4k小,也要占用这个最小空间。因此,一般需要对今后可能的文件有一个规划,如果都是小文件,比 4k 小,则指定更小的块大小。

查看和管理分区信息

  1. blkid 可以查看块设备的属性信息

    blkid [option]...[device]
    

    常用选项:

    • -U UUID # 根据指定的 UUID 来查看对应的设备
    • -L LABEL # 根据指定的 LABEL 来查看对应的设备
  2. e2label: 管理 ext 系列文件系统的标签

    e2label DEVICE [LABEL]
    
  3. findfs:查找分区

findfs [options] LABEL=
  1. tune2fs: 重新设定 ext 系列文件系统可调整的参数值

    常用选项:

    -l         # 查看指定文件系统超级块(super block)信息
    -L 'LABEL' # 修改卷标
    -m #       # 修改预留给管理员的空间百分比
    -j         # 将 ext2 升级为 ext3
    -O         # 文件系统属性启用或禁用,例如,'-O ^has_journal'
    -o         # 调整文件系统的默认挂载选项,例如,'-o ^acl'
    -U UUID    # 修改 UUID 的值
    
  2. dumpe2fs:显示 ext 文件系统信息,将磁盘块分组管理

    常用选项:

    -h # 查看超级块信息,不显示分组信息

  3. xfs_ifo:显示挂载或已挂载的 xfs 文件系统信息

    xfs_ifo mountpoint | devname
    

在 CentOS 6 上默认创建文件系统时,有些特性没有指定,例如,acl 默认没有。

文件系统检测和修复

文件系统故障常发生于死机或者非正常关机之后,文件系统被标记为 “no clean”。

注意:一定不要在挂载状态下执行以下命令进行修复。

  1. fsck:File System Check。注意文件类型要与实际的文件系统一致。

    fsck.FS_TYPE
    fsck -t FS_TYPE
    

    常用选项:

    -a           # 自动修复
    -r           # 交互式修复错误
    
  2. e2fsck:ext 系列文件专用的检测修复工具

    -y          # 自动回答为 yes
    -f          # 强制修复
    -p          # 自动进行安全的修复文件系统问题
    
  3. xfs_repair:xfs 文件系统专用的检测修复工具

    -f          # 修复文件
    -n          # 只检查
    -d          # 允许修复只读的挂载设备,在单用户下修复 '/' 时使用,然后使用 reboot
    

    单用户说明设备不会有其他人使用。并且根目录 / 不能取消挂载。

挂载

分区创建文件系统后需要挂载才能访问。与 windows 不一样的是,Linux 只有一个根,因此需要挂载。

挂载点(mountpoint)就是一个目录,但是如果该目录已有文件在其中,如果进行了挂载,挂载后这些文件就看不到了,只有在取消挂载后才会出现。

同一个设备可以挂载在不同的目录,好像是一个房间有几个门一样,可以使用 mount 命令可见这两个挂载,在 df, lsblk 中不可见第二个挂载。

如果一个挂载点挂载了两个设备,则这个挂载点只能访问第二个挂载的设备。虽然在 mount 命令中可以看到两次挂载。此时,如果把第二个挂载取消,这时第一个挂载就能起作用。

mount 命令

mount [-fnrsvw] [-t vfstype] [-o options] device mountpoint
  1. device:指明要挂载的设备
  • 设备文件:例如,/dev/sda5
  • 卷标 :-L 'LABEL'
  • UUID :-U UUID
  • 伪文件系统名称:proc, sysfs, devtmpfs, configfs
  1. mountpoint:挂载点即目录必须事先存在,建议使用空目录

  2. mount 常用选项

-t vsftype      # 指定要挂载的设备上的文件系统类型
-r              # readonly,只读
-w              # read and write,可读写
-n              # 不更新 '/etc/mtab',使用 'mount' 查询时不可见
-a              # 自动挂载所有支持自动挂载的设备(定义在 '/etc/fstab' 文件中,且指定了 'auto' 功能)
-L 'LABEL'      # 以指定的便签来挂载
-U 'UUID'       # 以 'UUID' 指定要挂载的设备
-B, --bind      # 绑定目录到另一个目录上-o options      # 挂载文件系统指定的选项,多个选项之间使用逗号分隔async         # 异步模式,即内存中的内容改变时,先写入缓存区,再写入磁盘中sync          # 同步模式,即内存中的内容改变时,同时写入磁盘中atime/noatime # 记录访问时间,对目录和文件都有效diratime/nodiratime # 目录的访问时间戳auto/noauto   # 是否支持开机自动挂载,是否支持 '-a' 选项exec/noexec   # 是否支持在文件系统上运行应用程序dev/nodev     # 是否支持在此文件系统上使用设备文件suid/nosuid   # 是否支持 'suid' 和 'sgid' 选项设置remount       # 支持重新挂载ro            # readonlyrw            # 读写,默认启用user/nouser   # 是否允许普通用户挂载此设备,'/etc/fstab' 使用acl|noacl     # 启用禁用 acl 功能loop          # 启用 loop 设备_netdev       # 当网络可用时才对网络资源进行挂载,例如,NFS 文件系统defaults      # 相当于 'rw, suid, dev, exec, auto, nouser, async'

已经挂载的设备,如果想要修改某些特性,可以使用以下命令格式,不需要取消挂载后重新挂载:

mount -o remount, ro /mnt/device

把一个目录挂载到另一个目录,使用:

mkdir /mnt/etc; mount --bind /etc/ /mnt/etc

这时,这两个目录之间并没有硬链接或软链接。

loop 设备就是一个文件挂载上去

# 生成一个文件
]# dd if=/dev/zero of=/data/loop.img bs=1M count=100
100+0 records in
100+0 records out
104857600 bytes (105 MB, 100 MiB) copied, 0.902876 s, 116 MB/s# 创建文件系统
]# mkfs.ext4 /data/disk.img
mke2fs 1.45.6 (20-Mar-2020)
Discarding device blocks: done
Creating filesystem with 102400 1k blocks and 25688 inodes
Filesystem UUID: 47468748-15f8-4622-9992-f71b030b0142
Superblock backups stored on blocks:8193, 24577, 40961, 57345, 73729Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
# 查看
]# blkid /data/loop.img
/data/loop.img: UUID="47468748-15f8-4622-9992-f71b030b0142" BLOCK_SIZE="1024" TYPE="ext4"# 挂载此文件
]# mkdir /mnt/loop
]# mount /data/disk.img /mnt/loop# 查看到以下 /dev/loop0 是新增的
# 其过程是新给文件分配一个文件名 /dev/loop0,然后再挂载
]# ll /dev/loop*
brw-rw----. 1 root disk  7,   0 Dec  7 13:57 /dev/loop0
crw-rw----. 1 root disk 10, 237 Dec  7 13:57 /dev/loop-control]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          980940       0    980940   0% /dev
tmpfs             998404       0    998404   0% /dev/shm
tmpfs             998404    8900    989504   1% /run
tmpfs             998404       0    998404   0% /sys/fs/cgroup
/dev/sda2      102687672 2103336  95325072   3% /
/dev/sda1         588352  141492    403852  26% /boot
/dev/sda3       51343840   57752  48648264   1% /data
tmpfs             199680       0    199680   0% /run/user/0
/dev/loop0         95054    1550     86336   2% /mnt/loop# 可以看到具体信息
]# losetup -l
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE      DIO LOG-SEC
/dev/loop0         0      0         1  0 /data/loop.img   0     512# 如果我们在这个分区中,复制或创建文件,然后可以把 '/data/loop.img'
# 拷贝到其它电脑,并挂载就可以访问这些文件了。

在 CentOS 6 中只有 8 个 loop 设备可挂载。CentOS 7 以后,则没有限制,实时生成,编号自增。

umount 命令

取消挂载时,可使用设备,也可以使用挂载点。注意,如果在对应的设备内部,这时不能取消挂载该设备,需要离开后才能操作。如果自己不在里面,也显示 ‘target is busy’,说明有其它用户在使用。

umount device|mountpoint

查看挂载情况

挂载后就可以使用以下命令进行查看

# 查看 '/etc/mtab' 文件显示当前已挂载的所有设备
mount# 查看内核追踪到的已挂载的所有设备
cat /proc/mounts# 查看文件系统的情况
df -T

查看目录是否为挂载点

findmnt mountpoint|device
echo $?

查看正在访问指定文件系统的进程

lsof mountpoint
fuser -v mountpoint

终止所有正在访问指定文件系统的进程

fuser -km mountpoint

持久挂载

将需要在开机时进行挂载的配置到 /etc/fstab中,该文件的帮助,可以查询:

man 5 fstab

文件中每一行都定义一个要挂载的文件系统,其中包括 6 项内容。

  1. 挂载的设备或伪文件系统

    设备文件可以使用,便签 LABEL="",UUID UUID=""
    伪文件系统名称:proc, sysfs

  2. 挂载点:必须事先存在的目录

  3. 文件系统类型:ext4, xfs, iso9660, nfs, none

  4. 挂载选项:defaults, acl, bind

  5. 转储频率:0 表示不做备份, 1 表示每天转储, 2 表示隔天转储

  6. 该选项用于 fsck 检查文件系统健康时的顺序:0 表示不自检,1 表示首先自检,一般只有在 ‘rootfs’ 采用, 2表示非 ‘rootfs’ 使用

如果对该文件进行了修改,可以先进行以下命令,一方面使修改起效,也可以检查一下是否有错误。

mount -a

这个命令对于已经挂载的分区不起作用,这时可以先进行取消挂载,然后再执行该命令。

如果无法取消挂载,例如,根目录,可以使用以下选项:

mount -o remount /path/to/mountpoint

可以使用以下命令生成新的 UUID

uuidgen

在取消挂载后,可以使用新的 UUID 号。

tune2fs -U "`uuidgen`"

在 CentOS 7 及以上,这时由于分区的 UUID 进行了修改,而在 fstab 文件中数据没有修改,此时如果重启系统,就会出现一些警告信息。这时可以输入 root 密码进入系统,可以先对文件的相应行进行注释(这时的挂载时可读写的)。然后重启后进行修改。

在 CentOS 6 中,如果由于 fstab 配置有误,就会造成除了根目录以外的其它目录都不能正常挂载。进入系统后,通过 cat /proc/mounts 才能显示出根目录的挂载选项时只读,因此不能对文件进行修改。此时需要 mount -o remount, rw /,然后才能修改文件,把该分区配置行的最后项设置为 0,或者注释该行,这时重启时就不会开机检查,可以正常开机,但是不能正常挂载此分区。

可以通过以下命令找出当前的分区 UUID。

blkid

注意:对于 loop 设备的挂载的配置,不能使用 UUID 来指明文件,因为文件太多,系统开机时不会去扫描非设备文件。这时只能使用完整路径来指定对应的文件。而分区内记录着该分区的 UUID

dd if=/dev/zero of=/data/disk.img bs=1M count=100
mkfs -t xfs /data/disk.img
mount /data/disk.img /mnt/disk

但是在 CentOS 6 中需要指明选项才能挂载这种 loop 文件。

mount -o loop /data/disk.img /mnt/disk

因此,在CentOS 6 中的 fstab 配置文件中需要指明选项 loop

在挂载普通目录时,配置文件中的文件系统类型需要指定为 none,选项指定为 bind

示例:对于 loop 设备和目录挂载的配置写法。

/disk.img     /data/disk    xfs   defaults       0 0
/etc          /mnt/etc      none  bind           0 0# CentOS 6/disk.img     /data/disk    xfs   defaults,loop  0 0

处理交换文件和分区

swap 交换分区是系统 RAM 的补充,swap 分区支持虚拟内存。

注意:为了优化性能,可以将 swap 分布存放,或者使用高性能磁盘。

使用以下命令可以查看内存的使用情况,包含 swap 的情况。

# CentOS 6
free -htotal          used        free        shared       buffers     cached
Mem:         979M          279M        699M          244K           18M       161M
-/+ buffers/cache:          99M        879M
Swap:        2.0G            0B        2.0G

其中 ‘shared’ 表示共享,‘buffers’ 表示缓冲区,‘cached’ 表示缓存区。缓冲区是内存的一部分,这些空间用于缓冲输入和输出的数据。缓存区主要目的是把一些数据暂时保存起来,以便更快地读取。缓冲区就好像是生活中的各种排队,缓存区就好像是一些经常使用的资料放在手边,便于使用。真正占用的空间只有 ‘99M’。

# CentOS 7, 8
freetotal         used      free   shared     buff/cache    Available
Mem:           995748       124392    727892     7776         143464       724352
Swap:         2097148            0   2097148

<++>

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...