Linux磁盘管理

磁盘管理

基本分区管理

磁盘划分思路

  • 进入分区表,新建分区
  • 更新分区表
  • 格式化分区表
  • 挂载使用
#lsblk
#df -h 查看设备挂载情况
#fdisk -l  设备分区情况
#fdisk /dev/sdb 

添加一块硬盘,需要将其分两个分区,分别格式化成ext4和vfat格式文件系统使用,最终需要使用2G空间

  • 添加硬盘
  • fdisk进行分区
  • 格式化指定分区
  • 创建空目录作为挂载点
  • 挂载使用
#添加硬盘
[root@workstation ~]# lsblk
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   20G  0 disk
├─sda1                    8:1    0    1G  0 part /boot
└─sda2                    8:2    0   19G  0 part
  ├─centos_servera-root 253:0    0   17G  0 lvm  /
  └─centos_servera-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                       8:16   0   20G  0 disk
sr0                      11:0    1  918M  0 rom
#fdisk分区


[root@workstation ~]# fdisk /dev/sdb

Command (m for help): p #打印分区表信息
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x46d52402

   Device Boot      Start         End      Blocks   Id  System
   
   Command (m for help): n #新建分区
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p 
Partition number (1-4, default 1): 1 #主分区编号
First sector (2048-41943039, default 2048): #默认
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +1G #分区大小
Partition 1 of type Linux and of size 1 GiB is set
#再次新建一个分区
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p):
Using default response p
Partition number (2-4, default 2): 2
First sector (2099200-41943039, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039): +1G
Partition 2 of type Linux and of size 1 GiB is set

#打印信息
Command (m for help): p

Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x46d52402

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200     4196351     1048576   83  Linux
#保存退出
  Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

#查看分区情况
  
[root@workstation ~]# lsblk
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   20G  0 disk
├─sda1                    8:1    0    1G  0 part /boot
└─sda2                    8:2    0   19G  0 part
  ├─centos_servera-root 253:0    0   17G  0 lvm  /
  └─centos_servera-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                       8:16   0   20G  0 disk
├─sdb1                    8:17   0    1G  0 part
└─sdb2                    8:18   0    1G  0 part
sr0                      11:0    1  918M  0 rom
#刷新分区表信息
[root@workstation ~]# partx -d /dev/sdb
[root@workstation ~]# partx -a /dev/sdb
[root@workstation ~]# partx -s /dev/sdb
NR   START     END SECTORS SIZE NAME UUID
 1    2048 2099199 2097152   1G
 2 2099200 4196351 2097152   1G

#格式化分区

[root@workstation ~]# mkfs.ext4 /dev/sdb1
[root@workstation ~]# yum install -y dosfstools

[root@workstation ~]# mkfs.vfat /dev/sdb2
mkfs.fat 3.0.20 (12 Jun 2013)
#创建新挂载点

[root@workstation ~]# mkdir /u01
[root@workstation ~]# mkdir /u02
#挂载
[root@workstation ~]# mount /dev/sdb1 /u01
[root@workstation ~]# mount /dev/sdb2 /u02

挂载分区设备

手动挂载

  • 设备重启后需要重新挂载
  • 手动卸载后需要手动挂载
#查看块设备信息
[root@workstation ~]# blkid /dev/sdb1
/dev/sdb1: UUID="78d4daac-317c-497e-9eb7-5e782fcfded7" TYPE="ext4"

[root@workstation /]# mount -o rw /dev/sdb1 /u01
[root@workstation /]# lsblk
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   20G  0 disk
├─sda1                    8:1    0    1G  0 part /boot
└─sda2                    8:2    0   19G  0 part
  ├─centos_servera-root 253:0    0   17G  0 lvm  /
  └─centos_servera-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                       8:16   0   20G  0 disk
├─sdb1                    8:17   0    1G  0 part /u01
└─sdb2                    8:18   0    1G  0 part
sr0                      11:0    1  918M  0 rom
#卸载

[root@workstation /]# umount /u01
[root@workstation /]# lsblk
NAME                    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                       8:0    0   20G  0 disk
├─sda1                    8:1    0    1G  0 part /boot
└─sda2                    8:2    0   19G  0 part
  ├─centos_servera-root 253:0    0   17G  0 lvm  /
  └─centos_servera-swap 253:1    0    2G  0 lvm  [SWAP]
sdb                       8:16   0   20G  0 disk
├─sdb1                    8:17   0    1G  0 part
└─sdb2                    8:18   0    1G  0 part
sr0                      11:0    1  918M  0 rom

开机自动挂载

  • 硬件初始化 硬盘,内存…
  • 系统初始化 /sbin/init > /etc/fstab
  • 系统重启后自动挂载
#系统自动挂载/dev/sdb1设备 2分钟没有被使用 自动卸载
yum -y install autofs

[root@workstation ~]# rpm -q autofs
autofs-5.0.7-116.el7_9.1.x86_64

#修改配置文件
[root@workstation ~]# vi /etc/auto.master
[root@workstation ~]# vi /etc/auto.test
[root@workstation ~]# cat  /etc/auto.master | grep u01
/u01    /etc/auto.test  -t 120
[root@workstation ~]# cat  /etc/auto.test | grep test
test    -fstype=ext4,ro :/dev/sdb1
#重启服务

[root@workstation ~]# service autofs restart
#测试验证

[root@workstation ~]# ls /u01/test
lost+found
[root@workstation ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/centos_servera-root   17G  1.2G   16G   7% /
devtmpfs                         475M     0  475M   0% /dev
tmpfs                            487M     0  487M   0% /dev/shm
tmpfs                            487M  7.7M  479M   2% /run
tmpfs                            487M     0  487M   0% /sys/fs/cgroup
/dev/sda1                       1014M  133M  882M  14% /boot
tmpfs                             98M     0   98M   0% /run/user/0
/dev/sdb1                        976M  2.6M  907M   1% /u01/test

逻辑卷管理

简介

LVM:对Linux环境下对磁盘分区进行管理的一种机制,建立在物理存储设备之上的一个抽象层,优点在于灵活管理。

  • 在线扩容
  • 离线裁剪
  • 数据条带化
  • 数据镜像
名称定义
物理设备保存LVM所存储的存储设备。
物理卷(PV)物理卷时LVM所使用的基础物理存储。在LVM系统使用设备之前,必须将设备初始化为物理卷。
卷组(VG)由一或多个物理卷组成。功能上与磁盘相同,一个PV分配一个VG,一个VG包含多个PV
逻辑卷(LV)根据卷组中空闲物理区块创建,提供应用,用户和操作系统所使用的“存储”设备。
  • 物理设备
  • 命令创建
  • 物理卷(PV)
  • 卷组(VG)
  • 逻辑卷(LV)
  • 逻辑卷格式化
  • 挂载使用
    在这里插入图片描述

创建逻辑卷

创建一个1.5G的逻辑卷

[root@workstation ~]# lsblk | grep sdb
sdb                       8:16   0   20G  0 disk
├─sdb1                    8:17   0    1G  0 part
├─sdb2                    8:18   0    1G  0 part
├─sdb3                    8:19   0    1G  0 part
├─sdb4                    8:20   0    1K  0 part
└─sdb5                    8:21   0  100M  0 part
#创建物理卷

[root@workstation ~]# pvcreate /dev/sdb1 /dev/sdb2

[root@workstation ~]# pvs
  PV         VG             Fmt  Attr PSize   PFree
  /dev/sda2  centos_servera lvm2 a--  <19.00g    0
  /dev/sdb1                 lvm2 ---    1.00g 1.00g
  /dev/sdb2                 lvm2 ---    1.00g 1.00g
#将创建卷组并将物理卷加入其中

[root@workstation ~]# vgcreate vg01 /dev/sdb1 /dev/sdb2
  Volume group "vg01" successfully created

[root@workstation ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree
  vg01   2   0   0 wz--n- 1.99g 1.99g
[root@workstation ~]# vgdisplay vg01
  --- Volume group ---
  VG Name               vg01
  System ID
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               1.99 GiB
  PE Size               4.00 MiB
  Total PE              510
  Alloc PE / Size       0 / 0
  Free  PE / Size       510 / 1.99 GiB
  VG UUID               ABTzbY-lO5x-4HA2-9ZtE-hFht-Y3Ng-fgNIYN
#创建逻辑卷
[root@workstation ~]# lvcreate -n lv01 -L 1.5G vg01
  Logical volume "lv01" created.
  #被映射到两个地方
[root@workstation ~]# ll /dev/mapper/vg01-lv01
lrwxrwxrwx. 1 root root 7 Aug  3 05:11 /dev/mapper/vg01-lv01 -> ../dm-2
[root@workstation ~]# ll /dev/vg01/lv01
lrwxrwxrwx. 1 root root 7 Aug  3 05:11 /dev/vg01/lv01 -> ../dm-2

[root@workstation ~]# lvdisplay /dev/vg01/lv01
  --- Logical volume ---
  LV Path                /dev/vg01/lv01
  LV Name                lv01
  VG Name                vg01
  LV UUID                j2lsmi-SYjW-Qpn0-btqf-1fBF-tkQf-4eH5fc
  LV Write Access        read/write
  LV Creation host, time workstation, 2023-08-03 05:11:18 -0400
  LV Status              available
  # open                 0
  LV Size                1.50 GiB
  Current LE             384
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:2

#创建大小为100M的逻辑卷,每个PE为4M,指定25个PE,大小为100M
[root@workstation ~]# lvcreate -n lv02 -l25 vg01
  Logical volume "lv02" created.
[root@workstation ~]# vgs vg01
  VG   #PV #LV #SN Attr   VSize VFree
  vg01   2   2   0 wz--n- 1.99g 404.00m
[root@workstation ~]# lvs /dev/vg01/lv02
  LV   VG   Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv02 vg01 -wi-a----- 100.00m

#格式化逻辑卷

[root@workstation ~]# mkfs.ext4 /dev/vg01/lv01
#挂载
[root@workstation ~]# mkdir /mnt01
[root@workstation ~]# mount /dev/vg01/lv01 /mnt01

[root@workstation ~]# lsblk | grep lv
  ├─centos_servera-root 253:0    0   17G  0 lvm  /
  └─centos_servera-swap 253:1    0    2G  0 lvm  [SWAP]
│ └─vg01-lv01           253:2    0  1.5G  0 lvm  /mnt01
│ ├─vg01-lv01           253:2    0  1.5G  0 lvm  /mnt01
│ └─vg01-lv02           253:3    0  100M  0 lvm


逻辑卷动态扩容

将/mnt01目录动态扩容到2.2G

  • 查看/mnt01目录对应的逻辑卷是哪个
  • 查看当前逻辑卷的卷组剩余空间是否足够
  • 如果卷组空间不够,先扩容卷组,再扩容逻辑卷
  • 如果卷组空间足够,直接扩容逻辑卷
#查看/mnt01属于哪个卷组
[root@workstation ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/centos_servera-root   17G  1.2G   16G   7% /
devtmpfs                         475M     0  475M   0% /dev
tmpfs                            487M     0  487M   0% /dev/shm
tmpfs                            487M  7.7M  479M   2% /run
tmpfs                            487M     0  487M   0% /sys/fs/cgroup
/dev/sda1                       1014M  133M  882M  14% /boot
tmpfs                             98M     0   98M   0% /run/user/0
/dev/mapper/vg01-lv01            1.5G  4.5M  1.4G   1% /mnt01

[root@workstation ~]# lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_servera -wi-ao---- <17.00g                                              
  swap centos_servera -wi-ao----   2.00g                                              
  lv01 vg01           -wi-ao----   1.50g                                              
  lv02 vg01           -wi-a----- 100.00m                        
  #查看卷组剩余空间
  [root@workstation ~]# vgs
  VG             #PV #LV #SN Attr   VSize   VFree
  centos_servera   1   2   0 wz--n- <19.00g      0
  vg01             2   2   0 wz--n-   1.99g 404.00m

#当前卷组空间不足
#扩容逻辑卷所在卷组
#首先得有物理设备
[root@workstation ~]# pvcreate /dev/sdb3
  Physical volume "/dev/sdb3" successfully created.
[root@workstation ~]# pvs
  PV         VG             Fmt  Attr PSize    PFree
  /dev/sda2  centos_servera lvm2 a--   <19.00g      0
  /dev/sdb1  vg01           lvm2 a--  1020.00m      0
  /dev/sdb2  vg01           lvm2 a--  1020.00m 404.00m
  /dev/sdb3                 lvm2 ---     1.00g   1.00g
[root@workstation ~]# vgextend vg01 /dev/sdb3
  Volume group "vg01" successfully extended
[root@workstation ~]# pvs
  PV         VG             Fmt  Attr PSize    PFree
  /dev/sda2  centos_servera lvm2 a--   <19.00g       0
  /dev/sdb1  vg01           lvm2 a--  1020.00m       0
  /dev/sdb2  vg01           lvm2 a--  1020.00m  404.00m
  /dev/sdb3  vg01           lvm2 a--  1020.00m 1020.00m

#扩容逻辑卷
[root@workstation ~]# lvextend -L 2.2G /dev/vg01/lv01
  Rounding size to boundary between physical extents: 2.20 GiB.
  Size of logical volume vg01/lv01 changed from 2.00 GiB (512 extents) to 2.20 GiB (564 extents).
  Logical volume vg01/lv01 successfully resized.
[root@workstation ~]# lvs
  LV   VG             Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos_servera -wi-ao---- <17.00g                                              
  swap centos_servera -wi-ao----   2.00g                                              
  lv01 vg01           -wi-ao----   2.20g                                              
  lv02 vg01           -wi-a----- 100.00m      
  
  [root@workstation ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/centos_servera-root   17G  1.2G   16G   7% /
devtmpfs                         475M     0  475M   0% /dev
tmpfs                            487M     0  487M   0% /dev/shm
tmpfs                            487M  7.7M  479M   2% /run
tmpfs                            487M     0  487M   0% /sys/fs/cgroup
/dev/sda1                       1014M  133M  882M  14% /boot
tmpfs                             98M     0   98M   0% /run/user/0
/dev/mapper/vg01-lv01            1.5G  4.5M  1.4G   1% /mnt01
#同步文件系统
[root@workstation ~]# resize2fs /dev/vg01/lv01
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/vg01/lv01 is mounted on /mnt01; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/vg01/lv01 is now 577536 blocks long.

[root@workstation ~]# df -h
Filesystem                       Size  Used Avail Use% Mounted on
/dev/mapper/centos_servera-root   17G  1.2G   16G   7% /
devtmpfs                         475M     0  475M   0% /dev
tmpfs                            487M     0  487M   0% /dev/shm
tmpfs                            487M  7.7M  479M   2% /run
tmpfs                            487M     0  487M   0% /sys/fs/cgroup
/dev/sda1                       1014M  133M  882M  14% /boot
tmpfs                             98M     0   98M   0% /run/user/0
/dev/mapper/vg01-lv01            2.2G  4.5M  2.1G   1% /mnt01

扩容Swap空间

增加一个硬盘或分区来扩容swap空间

#查看swap空间
[root@workstation ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         129         705           7         137         683
Swap:          2047           0        2047
[root@workstation ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       2097148 0       -2
[root@workstation ~]# mkswap /dev/sdb1
mkswap: /dev/sdb1: warning: wiping old ext4 signature.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=cf7f9c58-7078-43fa-9a7e-a2c628cf57a2
[root@workstation ~]# blkid /dev/sdb1
/dev/sdb1: UUID="cf7f9c58-7078-43fa-9a7e-a2c628cf57a2" TYPE="swap"
#激活swap分区 swap分区不能手动挂载
[root@workstation ~]# swapon /dev/sdb1
[root@workstation ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-1                               partition       2097148 0       -2
/dev/sdb1                               partition       2097148 0       -3

逻辑卷实现条带化

条带化:把保存到逻辑卷的数据分成N份,分别写到不同的物理卷,可以提高数据的读写效率,但如果任何一个涉及到的物理卷出现问题,数据就会无法恢复。


[root@workstation ~]# lsblk | grep sdc
sdc                       8:32   0   20G  0 disk
├─sdc1                    8:33   0    2G  0 part
└─sdc2                    8:34   0    2G  0 part
#创建物理卷
[root@workstation ~]# pvcreate /dev/sdc[12]
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdc2" successfully created.
  #创建卷组
[root@workstation ~]# vgcreate vg01 /dev/sdc[12]
  Volume group "vg01" successfully created
[root@workstation ~]# pvs /dev/sdc[12]
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdc1  vg01 lvm2 a--  <2.00g <2.00g
  /dev/sdc2  vg01 lvm2 a--  <2.00g <2.00g

#实现条带化逻辑卷

[root@workstation ~]# lvcreate -n lv01 -L 1G vg01 -i 2 /dev/sdc[12]
  Using default stripesize 64.00 KiB.
  Logical volume "lv01" created.
[root@workstation ~]# lvs /dev/vg01/lv01
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  lv01 vg01 -wi-a----- 1.00g
[root@workstation ~]# pvs /dev/sdc[12]
  PV         VG   Fmt  Attr PSize  PFree
  /dev/sdc1  vg01 lvm2 a--  <2.00g <1.50g
  /dev/sdc2  vg01 lvm2 a--  <2.00g <1.50g


[root@workstation ~]# mkdir /my-mnt
[root@workstation ~]# mkfs.ext4 /dev/vg01/lv01
[root@workstation ~]# mount /dev/vg01/lv01 /my-mnt


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

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

相关文章

Linux中提示No such file or directory解决方法

说明&#xff1a; 在linux下&#xff0c;./xxx.sh执行shell脚本时会提示No such file or directory。但shell明明存在&#xff0c;为什么就是会提示这个呢&#xff1f; 这种其实是因为编码方式不对&#xff0c;如你在win下编辑sh&#xff0c;然后直接复制到linux下面 实现&…

GPU版PyTorch对应安装教程

一、正确安装符合自己电脑的对应GPU版本的PyTorch之前需要了解三个基本概念 算力、CUDA driver version、CUDA runtime version ①算力&#xff1a;需要先知道你的显卡&#xff0c;之后根据官网表格进行对应&#xff0c;得到算力 ②CUDA driver version&#xff1a;电脑上显卡…

[C++]01.基础,数据类型,运算符

01.基础,数据类型,运算符 一.C基础入门1.HelloWorld2.注释3.变量4.常量5.关键字6.命名规则 二.数据类型1.整形2.sizeof关键字3.浮点型4.字符型5.转义字符6.字符串型7.布尔类型8.数据的输入 三.运算符1.算数运算符2.赋值运算符3.比较运算符4.逻辑运算符 一.C基础入门 1.HelloWo…

Java版Spring Cloud+Spring Boot+Mybatis+uniapp知识付费平台讲解+免费搭建 qt

&#xfeff;Java版知识付费源码 Spring CloudSpring BootMybatisuniapp前后端分离实现知识付费平台 提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售…

LBP特征笔记

LBP&#xff0c;局部二值模式&#xff08;Local Binary Pattern&#xff09;&#xff0c;是一种描述图像局部纹理特征的方式&#xff0c;具有旋转不变性和灰度不变性。首先由T. Ojala, M.Pietikinen, 和 D. Harwood 在1994年提出。 LBP特征描述 基础LBP算子 基础的LBP算子定义…

【Axure教程】移动端二级滑动选择器

今天教大家制作移动端二级滑动选择器的原型模板&#xff0c;该原型已全国一二级省市选择器为案例&#xff0c;因为该原型用中继器做的&#xff0c;所以制作完成之后使用也很方便&#xff0c;只需修改中继器表格里的内容即可 一、效果展示 1. 拖动选择 2. 快捷选择 【原型预览…

s7200Smart

一、介绍 二、通讯 rs485 modbus通讯口

编辑接口和新增接口的分别调用

在后台管理系统中,有时候会碰到新增接口和编辑接口共用一个弹窗的时候. 一.场景 在点击新增或者编辑的时候都会使用这个窗口,新增直接调用接口进行增加即可&#xff0c;编辑则是打开这个窗口显示当前行的数据,然后调用编辑接口。 二.处理方法 在默认的情况下,这个窗口用来处理…

ansible配置文件案例

案例一 控制主机上的普通用户控制受控主机 控制端1台&#xff0c;受控端两台 1.将两台受控主机添加到/etc/hosts文件中 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhos…

微服务实战项目-学成在线-选课学习(支付与学习中心)模块

微服务实战项目-学成在线-选课学习(支付与学习中心)模块 1 模块需求分析 1.1 模块介绍 本模块实现了学生选课、下单支付、学习的整体流程。 网站的课程有免费和收费两种&#xff0c;对于免费课程学生选课后可直接学习&#xff0c;对于收费课程学生需要下单且支付成功方可选…

AI Chat 设计模式:10. 组合模式

本文是该系列的第十篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 给我介绍一下组合模式A.1Q.2 好的&#xff0c;给我举一个组合模式的例子&#xff0c;使…

css实现文字颜色渐变+阴影

效果 代码 <div class"top"><div class"top-text" text"总经理驾驶舱">总经理驾驶舱</div> </div><style lang"scss" scoped>.top{width: 100%;text-align: center;height: 80px;line-height: 80px;fo…

蓝桥杯上岸每日N题 第七期(小猫爬山)!!!

蓝桥杯上岸每日N题 第七期(小猫爬山)&#xff01;&#xff01;&#xff01; 同步收录 &#x1f447; 蓝桥杯上岸必背&#xff01;&#xff01;&#xff01;(第四期DFS) 大家好 我是寸铁&#x1f4aa; 冲刺蓝桥杯省一模板大全来啦 &#x1f525; 蓝桥杯4月8号就要开始了 &a…

【测试设计】性能测试工具选择:wrk?jmeter?locust?还是LR?

目录 前言 wrk 优点 缺点 jmeter 优点 缺点 locust 优点 缺点 总结 资料获取方法 前言 当你想做性能测试的时候&#xff0c;你会选择什么样的测试工具呢&#xff1f;是会选择wrk&#xff1f;jmeter&#xff1f;locust&#xff1f;还是loadrunner呢&#xff1f; 今…

opencv-29 Otsu 处理(图像分割)

Otsu 处理 Otsu 处理是一种用于图像分割的方法&#xff0c;旨在自动找到一个阈值&#xff0c;将图像分成两个类别&#xff1a;前景和背景。这种方法最初由日本学者大津展之&#xff08;Nobuyuki Otsu&#xff09;在 1979 年提出 在 Otsu 处理中&#xff0c;我们通过最小化类别内…

【二叉树进阶】二叉树的前中后序遍历(非递归迭代实现)

文章目录 1. 二叉树的前序遍历1.1 思路分析1.2 AC代码 2. 二叉树的中序遍历2.1 思路分析2.2 AC代码 3. 二叉树的后序遍历3.1 思路13.2 思路1AC3.3 思路23.4 思路2AC 1. 二叉树的前序遍历 题目链接: link 不用递归&#xff0c;用迭代算法如何实现对二叉树的前序遍历&#xff1f…

QT实现中英文键盘

使用Qt中实现中英文键盘&#xff0c;支持各种linux嵌入式设备。 实现思路&#xff1a;需要一个中文字体库&#xff0c;将字体库加载到一个Hash容器&#xff0c;字母和拼音作为key值&#xff0c;对应的中文作为value值。 核心代码&#xff1a; #include "UKeyBoard.h"…

【雕爷学编程】MicroPython动手做(28)——物联网之Yeelight 2

知识点&#xff1a;什么是掌控板&#xff1f; 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片&#xff0c;支持WiFi和蓝牙双模通信&#xff0c;可作为物联网节点&#xff0c;实现物联网应用。同时掌控板上集成了OLED…

RISC-V基础之函数调用(三)保留寄存器(包含实例)

RISC-V将寄存器分为保留和非保留两类。保留寄存器是指在函数调用前后必须保持相同值的寄存器&#xff0c;因为调用者期望在调用后能够继续使用这些寄存器的值。保留寄存器包括s0到s11&#xff08;因此称为saved&#xff09;&#xff0c;sp和ra。非保留寄存器&#xff0c;也称为…

数据可视化(六)多个子图及seaborn使用

1.多个子图绘制 #绘制多个子图 #subplot&#xff08;*args&#xff0c;**kwargs&#xff09; 每个subplot函数只能绘制一个子图 #subplots&#xff08;nrows&#xff0c;ncols&#xff09; #fig_add_subplot(行&#xff0c;列&#xff0c;区域) #绘制子图第一种方式 plt.subp…