LVM与磁盘配额

目录

一.LVM概述

1.LVM (Logical Vokume Manager )逻辑卷管理

2.LVM的管理命令

3.创建并使用LVM操作步骤

二.磁盘配额概述

1.实现磁盘限额的条件

2.Linux磁盘限额的特点

3.实现磁盘配额的步骤

三.总结:


一.LVM概述

1.LVM (Logical Vokume Manager )逻辑卷管理

功能:能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性。

/boot分区用于存放引导文件,不能基于LVM创建

2.LVM机制的基本概念

(1)PV (Physical Volume 物理卷):物理卷是由多个把存储空间分割成默认大小为 4MB 的基本单元(PE)组成;通常一个物理卷就是一个硬盘或者是一个硬盘分区。

(2)VG(卷组):是由一个或多个物理卷组成的一个资源池,即称为卷组;在卷组中可以动态地添加或移除物理卷。

(3)LV(逻辑卷):从卷组中划分出指定容量大小的存储卷

总结一下:物理卷、卷组和逻辑卷之间的关系:物理卷是卷组和逻辑卷的基础,卷组则是物理卷的集合,用于创建逻辑卷,而逻辑卷则是从卷组中动态分配出来的存储单元。

2.LVM的管理命令

功能物理卷管理卷组管理逻辑卷管理
Scan扫描pvcanvgcanlvcan
Create建立pvcreatevgcreatelvcreate
Display显示pvdisplayvgdisplaylvdisplay
Remove删除pvremovevgremovelvremove
Extend扩展vgextendlvextend
Reduce减少vgreducelvreduce

主要命令:

pvcreate 设备名1  [设备名2...]            #创建物理卷
vgcreate  卷组名 物理卷名1 物理卷名2       #创建卷组
lvcreate -L 容量大小 -n 逻辑卷名 卷组名    #创建逻辑卷
lvextend -L +大小 /dev/卷组名/逻辑卷名     #为逻辑卷进行扩展内存

3.创建并使用LVM操作步骤

(1)关闭主机,添加新硬盘(这里我们添加三块)后,重启主机

(2)使用 fdisk 工具将磁盘设备划分出主分区,并且将分区类型的ID设置为8e

【1】运用 fdisk /dev/sdb、fdisk /dev/sdc、fdisk /dev/sdd 将新添加的三块硬盘进行划分出主分区

【2】三块硬盘的操作全部如下图所示

[root@192 ~]# fdisk /dev/sdb               #将硬盘划分出主分区
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xf9568529 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n                    #选择分区类型
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p):
Using default response p                   #默认为创建主分区
分区号 (1-4,默认 1):                      #默认分区号
起始 扇区 (2048-41943039,默认为 2048):    #默认起始扇区
将使用默认值 2048 
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):  #默认Last扇区
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t                    #选择分区类型
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e           #选择8eLVM
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w                    #保存并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。

全部操作完成后,创建出  /dev/sdb1、/dev/sdc1和/dev/sdd1  三个主分区

(3)创建物理卷

[root@192 ~]# pvcreate /dev/sdb1 /dev/sdc1   #将sdb1和sdc1创建成物理卷Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdc1" successfully created.#这样子算是创建成功

(4)创建卷组并对卷组进行命名

将卷组命名为vg111

[root@192 ~]# vgcreate vg111 /dev/sdb1 /dev/sdc1    #创建卷组并命名为vg111Volume group "vg111" successfully created
[root@192 ~]# vgdisplay vg111                        #查看卷组vg111                 --- Volume group ---VG Name               vg111System IDFormat                lvm2Metadata Areas        2Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               39.99 GiB                 #卷组内存空间PE Size               4.00 MiBTotal PE              10238Alloc PE / Size       0 / 0Free  PE / Size       10238 / 39.99 GiBVG UUID               56BSoG-GOB5-eifK-Ijjg-6cVM-sW5p-g5Zgbq

(5)创建逻辑卷并进行命令

将逻辑卷设置为20G,并将其命名为lv111,此后生成路径/dev/vg111/lv111

[root@192 ~]# lvcreate -L 20G -n lv111 vg111    #创建逻辑卷并命令为lv111Logical volume "lv111" created.
[root@192 ~]# lvdisplay /dev/vg111/lv111        #查看逻辑卷lv111--- Logical volume ---LV Path                /dev/vg111/lv111LV Name                lv111VG Name                vg111LV UUID                qDeAh7-dDzZ-diBF-dmWc-4CVS-6tGY-zdkm42LV Write Access        read/writeLV Creation host, time 192.168.80.202, 2024-04-16 20:19:32 +0800LV Status              available# open                 0LV Size                20.00 GiB            #逻辑卷内存空间Current LE             5120Segments               2Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2

(6)对罗辑卷进行格式化,创建XFS文件类型,并挂载

[root@192 ~]# mkfs -t xfs /dev/vg111/lv111      #将逻辑卷格式化,并创建xfs文件系统
meta-data=/dev/vg111/lv111       isize=512    agcount=4, agsize=1310720 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242880, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 ~]# mkdir /opt/test                    #创建一个新的目录
[root@192 ~]# mount /dev/vg111/lv111 /opt/test   #将逻辑卷挂载到目录 /opt/test 上
[root@192 ~]# df -hT                             #查看挂载情况
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  1.9G     0  1.9G    0% /dev
tmpfs                   tmpfs     1.9G     0  1.9G    0% /dev/shm
tmpfs                   tmpfs     1.9G   13M  1.9G    1% /run
tmpfs                   tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        36G  4.9G   31G   14% /
/dev/sda1               xfs       509M  181M  329M   36% /boot
tmpfs                   tmpfs     378M   12K  378M    1% /run/user/42
tmpfs                   tmpfs     378M     0  378M    0% /run/user/0
/dev/mapper/vg111-lv111 xfs        20G   33M   20G    1% /opt/test   #挂载成功

此后就可以在目录上输入内容,并记录到硬盘上

(7)如果空间不够要扩展,先查看卷组空间是否足够,不够的话,先创建物理卷,在扩展卷组;

之后在对逻辑卷进行扩容。

[root@192 test]# pvcreate /dev/sdd1                  #将sdd1创建为物理卷Physical volume "/dev/sdd1" successfully created.
[root@192 test]# vgextend vg111 /dev/sdd1            #sdd1扩展为卷组vg111Volume group "vg111" successfully extended
[root@192 test]# vgdisplay vg111                    #查看卷组内存--- Volume group ---VG Name               vg111System IDFormat                lvm2Metadata Areas        3Metadata Sequence No  3VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                1Open LV               1Max PV                0Cur PV                3Act PV                3VG Size               <59.99 GiB                       #卷组内存增加PE Size               4.00 MiBTotal PE              15357Alloc PE / Size       5120 / 20.00 GiBFree  PE / Size       10237 / <39.99 GiBVG UUID               56BSoG-GOB5-eifK-Ijjg-6cVM-sW5p-g5Zgbq
[root@192 test]# lvextend -L +20G /dev/vg111/lv111    #对逻辑卷扩容20GSize of logical volume vg111/lv111 changed from 20.00 GiB (5120 extents) to 40.00 GiB (10240 extents).Logical volume vg111/lv111 successfully resized.
[root@192 test]# lvdisplay /dev/vg111/lv111           #查看逻辑卷内存--- Logical volume ---LV Path                /dev/vg111/lv111LV Name                lv111VG Name                vg111LV UUID                qDeAh7-dDzZ-diBF-dmWc-4CVS-6tGY-zdkm42LV Write Access        read/writeLV Creation host, time 192.168.80.202, 2024-04-16 20:19:32 +0800LV Status              available# open                 1LV Size                20.00 GiB                   #逻辑卷内存没变Current LE             5120Segments               2Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2

(8)对逻辑卷进行扩容后,内存空间没变;有两种方法解决

【1】使用命令手动刷新xfs文件系统容量

   xfs_growfs /dev/vgname1/lvname1         

【2】在扩容逻辑卷的命令上加上    -r   选项;自动刷新文件系统容量

lvextend -L +10G [-r] /dev/vg111/lv111

二.磁盘配额概述

当Linux根分区的磁盘空间耗尽时,Linux操作系统将无法再建立新的文件,可能会出现服务

程序崩溃、系统无法启动等故障;为了避免在服务器中出现类似磁盘空间不足的问题,可以启用磁盘配额功能,对用户在指定文件系统(分区)中使用的磁盘空间、文件数量进行限制,以防止个别用户恶意或无意间占用大量磁盘空间,从而保持系统存储空间的稳定性和持续可用性。

在 CentOS 系统中,不同的文件系统使用不同磁盘配额配置管理工具。例如,XFS 文件系统通过

xfs_quota 工具进行管理; EXT3/4 文件系统通过 quota 工具进行管理

1.实现磁盘限额的条件

(1)需要Linux内核支持

(2)需要安装 xfsprogs 与 quota 软件包

2.Linux磁盘限额的特点

作用范围: 针对指定的文件系统(分区)

限制对象:用户账号、组账号

限制类型: 磁盘容量、文件数量

限制方法:软限制、硬限制

3.实现磁盘配额的步骤

(1)启用磁盘配额支持

启动文件系统的配额支持,添加usrquota、prpquota 挂载参数

[root@192 test]# rpm -q xfsprogs quota     #查看软件是否安装
xfsprogs-4.5.0-22.el7.x86_64
quota-4.01-19.el7.x86_64 
没有安装的话,使用 yum install 安装    

用 usrquota,grpquota 对/dev/vg111/lv111挂载到/opt/test目录中

mount -o usrquota,grpquota /dev/vg111/lv111 /opt/test/

或者

进入到   /etc/fstab  文件中输入命令挂载


验证方法:mount -a  将/etc/fstab的所有内容重新加载

mount 或者df -hT都可以查看挂载情况

(2)编辑用户和组账号的配额设置

常用选项
-x:表示启动专家模式,在当前模式下允许对配额系统进行修改的所有管理命令可用
-c:表示直接调用管理命令
-u:指定用户账号对象
-g:指定组账号对象bsoft:设置磁盘容量的软限制数值(默认单位为 KB)
bhard:设置磁盘容量的硬限制数值(默认单位为 KB)
isoft:设置磁盘文件数的软限制数值
ihard:设置磁盘文件数的硬限制数值dd 命令是一个设备转换和连续复制命令
“if=” 指定输入设备(或文件)
“of=” 指定输出设备(或文件)
“bs=” 指定读取数据块的大小
“count=” 指定读取数据块的数量
/dev/zero “零”设备文件,可以无限的提供空字符。常用来生成一个特定大小的文件
useradd zhangsan                     #创建用户zhangsan和lisi
echo 123456 | passwd --stdin zhangsan
useradd lisi                         #并设置密码
echo 123456 | passwd --stdin lisi    #免交互式设置密码命令
并对zhangsan 和lisi 设置不同的配额设置
#仅限制磁盘容量
xfs_quota -x -c 'limit -u bsoft=80M bhard=100M zhangsan' /opt/test
#仅限制文件数
xfs_quota -x -c 'limit -u isoft=4 ihard=5 lisi' /opt/test
#查看 zhangsan 磁盘容量限制
xfs_quota -c 'quota -uv zhangsan' /opt/test
#查看 lisi 文件数限制
xfs_quota -c 'quota -i -uv lisi' /opt/test

 (3)验证磁盘配额功能

先给文件设置最高权限

[root@192 ~]# chmod 777 /opt/test           #设置最高权限
[root@192 ~]# ls -l /opt/
总用量 0
drwxr-xr-x. 2 root root   6 10月 31 2018 rh
drwxrwxrwx. 3 root root 133 4月  16 20:31 test
[root@192 test]# su - lisi                     #切换为lisi 账户
上一次登录:二 4月 16 21:41:00 CST 2024pts/0 上
[lisi@192 ~]$ cd /opt/test                     #切换到指定目录
[lisi@192 test]$ ls
[lisi@192 test]$ touch {1..5}file              #创建五个文件成功
[lisi@192 test]$ ls -l
总用量 0
-rw-rw-r--. 1 lisi lisi 0 4月  16 21:43 1file
-rw-rw-r--. 1 lisi lisi 0 4月  16 21:43 2file
-rw-rw-r--. 1 lisi lisi 0 4月  16 21:43 3file
-rw-rw-r--. 1 lisi lisi 0 4月  16 21:43 4file
-rw-rw-r--. 1 lisi lisi 0 4月  16 21:43 5file
[lisi@192 test]$ touch 6file                   #创建第六个失败
touch: 无法创建"6file": 超出磁盘限额            #超出限额,最多允许创建五个文件
[root@192 test]# su - zhangsan                           #切换到zhangsan账户
上一次登录:二 4月 16 21:39:30 CST 2024pts/0 上
[zhangsan@192 test]$ dd if=/dev/zero of=/opt/test/zhangsan.txt bs=10M count=10
[zhangsan@192 test]$ ll -h                               #输入100MC成功
总用量 100M
-rw-rw-r--. 1 lisi     lisi        0 4月  16 21:43 1file
-rw-rw-r--. 1 lisi     lisi        0 4月  16 21:43 2file
-rw-rw-r--. 1 lisi     lisi        0 4月  16 21:43 3file
-rw-rw-r--. 1 lisi     lisi        0 4月  16 21:43 4file
-rw-rw-r--. 1 lisi     lisi        0 4月  16 21:43 5file
-rw-rw-r--. 1 zhangsan zhangsan 100M 4月  16 21:48 zhangsan.txt
[zhangsan@192 test]$ dd if=/dev/zero of=/opt/test/zhangsan.txt bs=10M count=11
dd: 写入"/opt/test/zhangsan.txt" 出错: 超出磁盘限额        #输入110M失败超出限额,最多100M   

(4)查看配额使用情况

#查看所有可用分区的磁盘容量配额使用情况
xfs_quota -x -c 'report -a'#查看磁盘容量和文件数的报告
xfs_quota -x -c 'report -abih'
[root@192 test]# xfs_quota -x -c 'report -a' #查看所有可用分区的磁盘容量配额使用情况
User quota on /opt/test (/dev/mapper/vg111-lv111)Blocks
User ID          Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
root                0          0          0     00 [--------]
zhangsan       102400      81920     102400     00  [6 days]
lisi                0          0          0     00 [--------]Group quota on /opt/test (/dev/mapper/vg111-lv111)Blocks
Group ID         Used       Soft       Hard    Warn/Grace
---------- --------------------------------------------------
root                0          0          0     00 [--------]
zhangsan       102400          0          0     00 [--------]
lisi                0          0          0     00 [--------][root@192 test]# xfs_quota -x -c 'report -abih' #查看磁盘容量和文件数的报告
User quota on /opt/test (/dev/mapper/vg111-lv111)Blocks                            Inodes
User ID      Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root            0      0      0  00 [------]      3      0      0  00 [------]
zhangsan     100M    80M   100M  00 [6 days]      1      0      0  00 [------]
lisi            0      0      0  00 [------]      5      4      5  00 [6 days]Group quota on /opt/test (/dev/mapper/vg111-lv111)Blocks                            Inodes
Group ID     Used   Soft   Hard Warn/Grace     Used   Soft   Hard Warn/Grace
---------- --------------------------------- ---------------------------------
root            0      0      0  00 [------]      3      0      0  00 [------]
zhangsan     100M      0      0  00 [------]      1      0      0  00 [------]
lisi            0      0      0  00 [------]      5      0      0  00 [------]

三.小结:

知道创建并使用LVM

知道磁盘配额的步骤

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

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

相关文章

(BERT蒸馏)TinyBERT: Distilling BERT for Natural Language Understanding

文章链接&#xff1a;https://arxiv.org/abs/1909.10351 背景 在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;预训练语言模型&#xff08;如BERT&#xff09;通过大规模的数据训练&#xff0c;已在多种NLP任务中取得了卓越的性能。尽管BERT模型在语言理解和生成…

开源无需root!一款功能强悍的手机电脑同屏工具,14K star拿捏了【文末带项目源码】

现在使用最常用的设备就是手机和电脑了&#xff0c;经常会需要将手机屏幕镜像到电脑&#xff0c;或者是用电脑来操控手机等。 今天给大家安利一款功能强悍好用的工具 - QtScrcpy。 简介 QtScrcpy 是一个强大的安卓手机实时投屏到电脑的开源项目&#xff0c;可以将你的安卓手机…

ubuntu 设置 root 用户密码,创建新用户并赋权限

ubuntu 设置 root 用户密码&#xff0c;创建新用户并赋权限 在适用于 Linux 的 Windows 子系统上运行 Linux GUI 应用&#xff0c; 安装 Ubuntu-20.04 系统&#xff0c;新安装好的系统&#xff0c;设置用户名密码时&#xff0c; root 用户密码默认为空&#xff0c;这时需要设置…

jsoncpp 编译和使用

原文链接&#xff1a; jsoncpp的编译和使用 jsoncpp 编译出库文件 1.从github仓库下载 2.下载 cmake 工具 3.生成VS项目 4.编译得到需要的库文件 jsoncpp 的使用 查看原文

MySQL 基础使用

文章目录 一、Navicat 工具链接 Mysql二、数据库的使用1.常用数据类型2. 建表 create3. 删表 drop4. insert 插入数据5. select 查询数据6. update 修改数据7. delete 删除记录truncate table 删除数据 三、字段约束字段1. 主键 自增delete和truncate自增长字段的影响 2. 非空…

idea运行报错:启动命令过长

JAVA项目&#xff0c;运行的时候报错 Command line is too long. Shorten the command line via JAR manifest or via a classpath file and rerun老问题了&#xff0c;记录一下 解决办法&#xff1a; 1、Edit Configurations 2、点击Modify options设置&#xff0c;勾选S…

✌粤嵌—2024/4/3—合并K个升序链表✌

代码实现&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ struct ListNode* merge(struct ListNode *l1, struct ListNode *l2) {if (l1 NULL) {return l2;}if (l2 NULL) {return l1;}struct Lis…

Python爬虫入门教程!

什么是爬虫? 爬虫就是自动获取网页内容的程序&#xff0c;例如搜索引擎&#xff0c;Google&#xff0c;Baidu 等&#xff0c;每天都运行着庞大的爬虫系统&#xff0c;从全世界的网站中爬虫数据&#xff0c;供用户检索时使用。 爬虫流程 其实把网络爬虫抽象开来看&#xff0c;它…

Centos7下载配置jdk18与maven3.9.6【图文教程】

个人记录 进入目录 cd /usr/local/JDK下载与配置 OpenJDK官网 下载安装 wget https://download.java.net/openjdk/jdk18/ri/openjdk-1836_linux-x64_bin.tar.gz解压 tar -zxvf openjdk-1836_linux-x64_bin.tar.gz ls ls jdk-18/编辑配置文件 vim /etc/profile配置环境变…

程序员之路漫漫兮

读者大大们好呀&#xff01;&#xff01;!☀️☀️☀️ &#x1f525; 欢迎来到我的博客 &#x1f440;期待大大的关注哦❗️❗️❗️ &#x1f680;欢迎收看我的主页文章➡️寻至善的主页 ✈️如果喜欢这篇文章的话 &#x1f64f;大大们可以动动发财的小手&#x1f449;&#…

常用序号、标点符号 相关正则表达式

(?:[\(|&#xff08;|\[])?\d[\]|\)&#xff09;|\、]|[\u2460-\u2473]|[\u4e00-\u5341][.|、]匹配序号 \d\.(?!\d)|\d、常规序号匹配&#xff1a; rule1: 标准格式1. 2、 rule2:排除小数 [^\u4E00-\u9FA5\uFF00-\uFFEFa-zA-Z0-9\s]所有符号 [\u3000-\u303F\uFF00-\uFFE…

深入理解大语言模型微调技术

一、概念解析 1、什么是微调&#xff08;Fine-tuning&#xff09;&#xff1f; 大模型微调&#xff0c;也称为Fine-tuning&#xff0c;是指在已经预训练好的大型语言模型基础上&#xff08;一般称为“基座模型”&#xff09;&#xff0c;使用特定的数据集进行进一步的训练&am…

Jmeter03:直连数据库

1 Jmete组件&#xff1a;直连数据库 1.1 是什么&#xff1f; 让Jmeter直接和数据库交互 1.2 为什么&#xff1f; 之前是通过接口操作数据库&#xff0c;可能出现的问题&#xff1a;比如查询可能有漏查误查的情况&#xff0c;解决方案是人工对不&#xff0c;效率低且有安全隐患…

十大排序——6.插入排序

这篇文章我们来介绍一下插入排序 目录 1.介绍 2.代码实现 3.总结与思考 1.介绍 插入排序的要点如下所示&#xff1a; 首先将数组分为两部分[ 0 ... low-1 ]&#xff0c;[ low ... arr.length-1 ]&#xff0c;然后&#xff0c;我们假设左边[ 0 ... low-1 ]是已排好序的部分…

vue3项目 使用 element-plus 中 el-collapse 折叠面板

最近接触拉了一个项目&#xff0c;使用到 element-plus 中 el-collapse 折叠面板&#xff0c;发现在使用中利用高官网多多少少的会出现问题。 &#xff08;1.直接默认一个展开值&#xff0c;发现时显时不显 2 . 数据渲染问题&#xff0c;接口请求了&#xff0c;页面数据不更新 …

kafka学习笔记03

SpringBoot2.X项目搭建整合Kafka客户端依赖配置 用自己对应的jdk版本。 先加上我们的web依赖。 添加kafka依赖: SpringBoot2.x整合Kafka客户端adminApi单元测试 设置端口号。 新建一个kafka测试类&#xff1a; 创建一个初始化的Kafka服务。 设置kafka的名称。 测试创建kafka。…

goland2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Goland 是一款由 JetBrains 公司开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;专门用于 Go 语言的开发。它提供了丰富的功能和工具&#xff0c;帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…

机器学习——模型评价

概述 在机器学习中&#xff0c;模型评价是评估和比较不同模型性能的关键步骤之一。它是通过对模型的预测结果与真实标签进行比较&#xff0c;从而量化模型的预测能力、泛化能力和稳定性。模型评价旨在选择最佳的模型&#xff0c;理解模型的行为&#xff0c;并为模型的改进提供…

「GO基础」文件名规范、关键字与标识符

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Qt 4 QPushButton

Qt 常用控件 QPushButton 实例 Push Button:命令按钮。 入口文件 main.cpp #include "mainwindow.h"#include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;w.show();return a.exec(); }头文件 mainwindow.h …