rhel配置zfs

news2024/11/26 2:29:19

rhel配置zfs

    • 环境声明
    • ZFS简介
      • ZFS块指针的结构
      • ZFS的存储池布局
    • rhel8/rhel9安装zfs
    • 始终在启动时加载OpenZFS模块
    • 开机自启zfs服务
  • zfs基本操作
    • 查看磁盘
    • 创建pool和ZFS文件系统
      • 创建一个存储池
      • 设置zfs挂载点
      • 为多个用户创建起始目录
      • 向池中添加更多空间
      • 修改文件系统名称
      • 删除文件系统
      • 修改存储池的名称
      • 显示存储池的状态
      • 查看存储池(pool)列表
      • 验证存储池是否创建成功
      • 显示存储池修改历史
      • 销毁一个存储池
    • 更新存储池
    • 磁盘管理
      • 添加磁盘
      • 标记磁盘运行状态
      • 删除磁盘
      • 添加热备件(hot spare)磁盘
        • 创建存储池时指定镜像和热备件
        • 向现有存储池添加热备件
        • 从现有存储池中删除热备件
        • 附加热备件磁盘
        • 分离热备件磁盘
        • 替换故障磁盘
      • 磁盘镜像配置
        • 使用镜像创建存储池
        • 模拟磁盘故障
        • 检测存储池是否损坏
        • 替换磁盘
    • 创建RAID池
      • 创建RAID0(不推荐)
      • 创建RAID1
      • 创建RAIDZ1/RAID5
      • 创建**RAIDZ2/RAID6**
      • 创建RAID10(条带化镜像)
    • 快照
      • 在ZFS池创建快照
        • 为所有后代文件系统创建快照
      • 查看快照列表
      • 查看快照文件详情
      • 查看快照属性
      • 设置快照属性
      • 删除快照
        • 删除后代快照
      • 保持快照
      • 快照重命名
      • 快照回滚
      • 快照恢复
      • 对比两个快照差异
    • ZFS池迁移
      • 从旧服务器上导出存储池
      • 列出所有可以导入的存储池
      • 导入指定存储池
  • zfs常用命令参考
    • 1. 创建pool和ZFS文件系统:
      • 为多个用户创建起始目录
      • 向池中添加更多空间
      • 修改文件系统名称
      • 删除文件系统
      • 修改存储池的名称
    • 2. 设置属性
      • 自动以NFS方式共享该文件系统
      • 对文件系统中所有数据启用压缩
      • 将用户A的最大空间限制为10g
      • 可通过命令查询文件系统的所有属性
      • 可通过命令查询存储池的所有属性
      • 大多数属性可通过继承方式自动设置
    • 3. ZFS snapshot
      • 文件系统的只读副本
      • 对用户A的起始目录执行快照捕获
      • 回滚到前一个快照
      • 查看星期三的foo.c版本
      • 删除快照
    • 3.1 ZFS Clone
      • 创建OpenSolaris源代码的克隆
    • 4. ZFS send/receive
      • 生成完整备份
      • 生成增量备份
      • 远程复制:每分钟发送一次增量
    • 5. ZFS 数据迁移
      • 从旧服务器上导出池
      • 物理移动磁盘并将池导入到新服务器中
    • 6. 设备管理
      • 添加/替换新设备 (type: “”,mirror,raidz,raidz2)
      • 添加/移除镜像磁盘
      • 将设备停止或手工启动
      • 查看存储池当前状态和I/O状况
      • 添加热备磁盘
      • 指定热备启动/停止热备
      • 将热备设备删除
      • 添加/删除独立的日志设备(性能改善)
    • 7. ZFS 权限管理
      • 将权限授予一个普通用户
      • 将指定权限回收
      • 查看文件系统当前的权限
    • 8. 其它命令
      • 显示存储池所有操作历史记录
      • 升级存储池到指定SPA版本
      • 升级文件系统到指定ZPL版本
      • 手工挂载/卸载文件系统

环境声明

OS Version: Rocky9

实验环境使用4块1T硬盘
在这里插入图片描述


ZFS简介

https://www.wolai.com/littlenewton/gJvungs54zWgZ3YfoXAvKW


ZFS块指针的结构

在这里插入图片描述


ZFS的存储池布局

在这里插入图片描述


下面这张图能更好地体现datasetzvol之间的关系。
在这里插入图片描述


rhel8/rhel9安装zfs

https://openzfs.github.io/openzfs-docs/Getting%20Started/RHEL-based%20distro/index.html

# 安装zfs源
dnf install -y https://zfsonlinux.org/epel/zfs-release-2-2$(rpm --eval "%{dist}").noarch.rpm

# 安装epel源
dnf install -y epel-release

# 安装dev内核
dnf install -y kernel-devel

# 禁用zfs源
## zfs源是dkms(动态内核模块支持)---ZFS on Linux for EL 7 - dkms
dnf config-manager --disable zfs

# 启用zfs-kmod源
## kmod是内核模块
dnf config-manager --enable zfs-kmod

# 安装zfs主程序
dnf install -y zfs

# 加载zfs内核模块
modprobe zfs

# 安装分区工具
dnf install -y gdisk dosfstools

始终在启动时加载OpenZFS模块

默认情况下,当检测到 ZFS 池时,会自动加载 OpenZFS 内核模块。如果您希望**始终在启动时加载**模块,则必须创建一个 /etc/modules-load.d/zfs.conf 文件:

# 在启动时自动加载zfs模块
echo zfs >/etc/modules-load.d/zfs.conf

开机自启zfs服务

# 开机自启zfs服务
systemctl enable --now zfs-import-scan.service zfs-mount zfs-import.target zfs-zed zfs.target

# 查看zfs-import-scan服务状态
systemctl status zfs-import-scan

在这里插入图片描述


zfs基本操作

https://blog.csdn.net/wanghai__/article/details/6196790
https://www.escapelife.site/posts/caf259ea.html


查看磁盘

# 查看磁盘
lsblk

在这里插入图片描述


创建pool和ZFS文件系统


创建一个存储池

# 创建一个存储池
## zpool create -f 存储池名称 磁盘1 磁盘2 磁盘3 磁盘4
zpool create -f zfspool vdc vdd vde vdf

在这里插入图片描述


设置zfs挂载点

# 挂载在/export/home 下
zfs set mountpoint=/export/home tank/home

为多个用户创建起始目录

请注意:由于继承而自动挂载在 /export/home/{ahrens,bonwick,billm} 下

zfs create tank/home/ahrens
zfs create tank/home/bonwick
zfs create tank/home/billm

向池中添加更多空间

# 向存储池中添加磁盘
zpool add zfspool -f /dev/sdx

# 创建名为 “tank” 的存储池 (type: “”,mirror,raidz,raidz2)
zpool create tank <type> c0t0d0 c1t0d0 c1t1d0

修改文件系统名称

# 修改文件系统名称
zfs rename tank/home/ahrens tank/home/nahrens

删除文件系统

# 删除文件系统
zfs destroy -Rf tank/fs

修改存储池的名称

zpool export tank
zpool import tank newpool

显示存储池的状态

# 显示可用池的状态
# 查看zpool中有哪些磁盘
zpool status

在这里插入图片描述

# 获取存储服务的状态
zpool get all

# 获取存储服务的状态
zpool get all 存储池名

在这里插入图片描述

在这里插入图片描述


查看存储池(pool)列表

# 查看存储池
zpool list

在这里插入图片描述


验证存储池是否创建成功

如果存储池创建成功,df -Th中会会出现一个路径为**zfspool**大小3.8TB的空间,同时挂载在/zfspool

# 查看磁盘使用率
df -Th

在这里插入图片描述


显示存储池修改历史

# 显示以前修改了存储池状态信息
zpool history

在这里插入图片描述


销毁一个存储池

# 销毁一个地址池
## zpool destroy 存储池名称
zpool destroy zfspool

# 查看存储池列表
zpool list

# 查看存储池状态
zpool status

# 查看磁盘空间使用情况
df -Th

在这里插入图片描述


更新存储池

# 当你更新ZFS时,你也需要更新你的池

# 更新指定存储池
zpool upgrade zfspool

# 更新全部存储池
zpool upgrade -a

磁盘管理


添加磁盘

# 将磁盘添加到存储池中
zpool add zfspool -f /dev/sdx

标记磁盘运行状态

# 标记磁盘状态为运行
zpool online testpool sdc

# 在有故障的时候,标记磁盘状态为非运行
zpool offline testpool sdc

删除磁盘

不能直接删除一个磁盘,因为它是一个冗余或raidz池

# 将磁盘从存储池中删除
zpool remove 存储池名称 /dev/sdx

在这里插入图片描述


vdc已从zfspool中删除

在这里插入图片描述


添加热备件(hot spare)磁盘

https://www.onitroad.com/jc/unix/solaris/solaris-zfs-how-to-specify-hot-spare-in-storage-pool.html
热备件磁盘平时是空闲状态,当工作磁盘出现故障时,可以立即将热备件磁盘附加到存储池中,顶替故障磁盘后,将故障磁盘分离,然后到物理机上拆除更换故障磁盘。


创建存储池时指定镜像和热备件

# 创建存储池时添加备件
### mirror参数为镜像,后面跟两个磁盘
### spare表示热备件,后面参数跟磁盘
zpool create 存储池名称 mirror sdb sdc spare sde sdf

向现有存储池添加热备件

# 向现有存储池添加热备件
## zpool add 存储池名称 spare 磁盘名
### spare表示热备件,后面参数跟磁盘名
zpool add 存储池名称 spare sdf sdg

从现有存储池中删除热备件

# 从现有存储池中删除热备件
## zpool remove 存储池名称 spare 磁盘名
zpool remove 存储池 sdf

附加热备件磁盘

如果已使用热备件自动替换了故障磁盘,则您可能需要在替换故障磁盘分离该热备件

# 例如: 如果替换故障磁盘后,sdf仍为活动热备件,则对其进行附加
zpool attach 存储池名称 sdf

分离热备件磁盘

# 例如: 如果替换故障磁盘后,sdf仍为活动热备件,则对其进行分离
zpool detach 存储池名称 sdf

替换故障磁盘

# 磁盘发生故障,使用replace命令替换故障磁盘sdc
## 使用用SDD磁盘替换SDC磁盘
zpool replace 存储池名称 sdc sdd

磁盘镜像配置

镜像会让两个磁盘数据完全一致,损坏一个磁盘,另一个磁盘的数据还在。
替换这个损坏的磁盘,数据会很快同步回来,保障数据不丢失。


使用镜像创建存储池

# 在镜像配置当中我们将爆力的测试一个设备
## mirror参数为镜像,后面跟两个磁盘
zpool create -f 存储池名称 mirror sdd sde

模拟磁盘故障

# 这将创建一个镜像磁盘池组成的SDD和SDE
# 现在,让我们故意损坏SDD写零到磁盘中
dd if=/dev/zero of=/dev/sdd

检测存储池是否损坏

# 我们将使用“scrub”命令来检测这种损坏
zpool scrub 存储池名称

替换磁盘

# 使用用SDC替换SDD
zpool replace 存储池名称 sdd sdc

# 查看存储池状态
zpool status

创建RAID池


创建RAID0(不推荐)

RAID0,最少2块硬盘,速度快,但**不容灾**
且不支持做热备,做了也没用

# 创建RAID0
zpool create -f zfspool /dev/sdc /dev/sdd

创建RAID1

RAID1,最少2块硬盘,镜像容灾,但**容量减半**

# 创建RAID1
zpool create -f zfspool mirror /dev/sdc /dev/sdd

创建RAIDZ1/RAID5

RAID5最少3块硬盘,奇偶校验,只允许坏一块硬盘
容量只有n-1,剩余的1块磁盘保存奇偶校验和

在这里插入图片描述

# 创建RAID5/RAIDZ
zpool create -f zfspool raidz1 /dev/sdc /dev/sdd /dev/sde

创建RAIDZ2/RAID6

在这里插入图片描述

# 创建RAID6/RAIDZ2
zpool create -f zfspool raidz2 /dev/sdc /dev/sdd /dev/sde /dev/sdf

创建RAID10(条带化镜像)

读:RAID一零
最少要用4块硬盘;
RAID10=RAID1+RAID0,金融行业专用
优点:性能高,数据安全性强
缺点:**成本贵**

# RAID10(条带化镜像)
# RAID10
zpool create -f zfspool mirror /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf

快照


在ZFS池创建快照

# 创建快照
## zfs snapshot 挂载点名称@快照名称
zfs snapshot volume@snapname

在这里插入图片描述


为所有后代文件系统创建快照

# 通过使用-r选项可为所有后代文件系统创建快照
## ## zfs snapshot -r 挂载点名称@快照名称
zfs snapshot -r data@2020-04-28

查看快照列表

# 查看快照列表
zfs list -t snapshot

在这里插入图片描述

# 查看后代快照列表
zfs list -t snapshot -r data@2020-04-28

在这里插入图片描述


查看快照文件详情

# 默认显示
zfs list -t snapshot -r tank/home

# 列出为特定文件系统创建的快照
zfs list -r -t snapshot -o name,creation tank/home

在这里插入图片描述


查看快照属性

# 获取快照属性
## zpool get listsnapshots 快照名
zpool get listsnapshots data

设置快照属性

快照属性的默认值为listsnapshots=on,zfs list命令**会显示**快照列表。
设置listsnapshots=offzfs list命令**不会显示**快照列表;要使用 **zfs list -t snapshot**命令显示快照信息。

# 设置快照显示属性
## zpool set listsnapshots=off 快照名
zpool set listsnapshots=off data

image.png


删除快照

# 删除快照
## zfs destroy 挂载点名称@快照名称
zfs destroy data@2020-04-28

删除后代快照

如果使用**-r**参数来创建快照,需要先删除下层快照。

按照提示删除下层快照即可

image.png


保持快照

保持快照的作用是防止被不小心销毁。
每个快照都有一个关联的用户引用计数,其初始值为 0。在一个快照上设置一个保持标志时,此计数**递增1**;释放一个保持标志时,此计数**递减1**
**设置保持**后会**禁止删除**该快照。

# 保持一个快照或一组快照
zfs hold keep data@2020-04-28

# 使用-r选项递归保持所有后代文件系统的快照
zfs hold -r keep data@2020-04-28

# 要销毁保持的快照,须使用-d选项
zfs destroy -d data@2020-04-28

# 显示受保持的快照列表
zfs holds data@2020-04-28
zfs holds -r data@2020-04-28

# 释放对一个快照或一组快照的保持
zfs release -r keep data@2020-04-28

# 释放快照后销毁快照
zfs destroy -r data@2020-04-28

设置**保持快照**后,删除快照时将**禁止删除**
image.png


快照重命名

# 单个快照重命名
zfs rename data@2020-04-28 data@2020-04-27

# 以递归方式重命名快照
zfs rename -r data@2020-04-28 @2020-04-27

快照回滚

-r 删除中间快照,恢复早期版本
-R 选项以销毁中间快照的克隆

# 示例快照列表
zfs list -t snapshot -r tank/home

# 将tank/home/matt文件系统回滚到tuesday快照
## zfs rollback 挂载点名@快照名
zfs rollback tank/home/matt@tuesday

# 删除中间的快照即可恢复到之前的版本
zfs rollback -r tank/home/matt@tuesday

image.png


快照恢复

无法直接回滚到之前快照的时候,就需要手动恢复数据了。
原理:将快照挂载到一个临时挂载点,进入这个挂载点拷贝数据。

# 将快照挂载到一个临时挂载点,手动进行数据恢复
mount -t zfs data@2020-04-28 /mnt/recovery

对比两个快照差异

# 确定两个快照之间的差异
zfs diff tank/home/tim@snap1 tank/home/timh@snap2

image.png


ZFS池迁移


从旧服务器上导出存储池

https://blog.csdn.net/wanghai__/article/details/6196790

# 从旧服务器上导出存储池
zpool export tank

列出所有可以导入的存储池

# 列出所有可以导入的存储池
zpool import

image.png


导入指定存储池

# 导入指定存储池
zpool import 存储池名称

# 查看导入后到存储池状态
zpool status

image.png


zfs常用命令参考

https://blog.csdn.net/wanghai__/article/details/6196790


1. 创建pool和ZFS文件系统:

# 创建文件系统
zfs create tank/home

# 挂载在/export/home 下
zfs set mountpoint=/export/home tank/home

为多个用户创建起始目录

请注意:由于继承而自动挂载在 /export/home/{ahrens,bonwick,billm} 下

zfs create tank/home/ahrens
zfs create tank/home/bonwick
zfs create tank/home/billm

向池中添加更多空间

# 向池中添加磁盘
zpool add tank mirror c2t0d0 c3t0d0

# 创建名为 “tank” 的存储池 (type: “”,mirror,raidz,raidz2)
zpool create tank <type> c0t0d0 c1t0d0 c1t1d0

修改文件系统名称

# 修改文件系统名称
zfs rename tank/home/ahrens tank/home/nahrens

删除文件系统

# 删除文件系统
zfs destroy -Rf tank/fs

修改存储池的名称

zpool export tank
zpool import tank newpool

2. 设置属性


自动以NFS方式共享该文件系统

# 自动以 NFS 方式共享该文件系统
zfs set sharenfs=rw tank/home

对文件系统中所有数据启用压缩

# 对文件系统中所有数据启用压缩
zfs set compression=on tank

将用户A的最大空间限制为10g

# 将用户A的最大空间限制为10g
zfs set quota=10g tank/home/usera

保证用户B有20g的预留空间

# 保证用户B有20g的预留空间
zfs set reservation=20g tank/home/userb

可通过命令查询文件系统的所有属性

# 可通过命令查询文件系统的所有属性
zfs get all tank/home

可通过命令查询存储池的所有属性

# 可通过命令查询存储池的所有属性
zpool get all tank

大多数属性可通过继承方式自动设置

# 大多数属性可通过继承方式自动设置
zfs inherit <property> tank/home/eschrock

3. ZFS snapshot


文件系统的只读副本

即时创建、数量不限,不占用额外空间 - 块仅在发生更改时才会被复制
可通过每个文件系统根目录下的 **.zfs/snapshot** 访问
使用户可在没有系统管理员介入的情况下恢复文件,


对用户A的起始目录执行快照捕获

# 对用户A的起始目录执行快照捕获
zfs snapshot tank/home/usera@tuesday

回滚到前一个快照

# 回滚到前一个快照
zfs rollback tank/home/usera@monday

查看星期三的foo.c版本

# 查看星期三的foo.c版本
cat /tank/home/usera/.zfs/snapshot/wednesday/foo.c

删除快照

# 删除快照
zfs destroy -R tank/home/usera@monday

3.1 ZFS Clone

快照的可写副本,
即时创建、数量不限;
存储大部分为共享数据的众多专用副本的理想方法.
软件安装
工作区
无盘客户机


创建OpenSolaris源代码的克隆

# 创建OpenSolaris源代码的克隆
zfs clone tank/solaris@monday tank/ws/lori/fix

4. ZFS send/receive

基于快照点
完整备份:任何快照
增量备份:任何快照增量
速度很快 - 开销与更改的数据成比例
非常高效,可执行远程复制


生成完整备份

# 生成完整备份
zfs send tank/fs@A >/backup/A

生成增量备份

# 生成增量备份
zfs send -i tank/fs@A tank/fs@B >/backup/B-A

远程复制:每分钟发送一次增量

# 远程复制:每分钟发送一次增量
zfs send -i tank/fs@11:31 tank/fs@11:32 |
ssh host zfs receive -d /tank/fs

5. ZFS 数据迁移

独立于主机的磁盘格式
将服务器从 x86 更改为 SPARC,也能运行
自适应字节存储顺序 (Adaptive endianness):在两个平台上都无需额外成本
写入总是使用本地字节存储顺序 (native endianness),在块指针中设置位
仅当主机字节存储顺序 (endianness) != 块字节存储顺序时,才会针对读取进行字节交换

ZFS 负责所有处理
无需考虑设备路径、配置文件、/etc/vfstab 等等
ZFS 会在必要时进行共享/取消共享、挂载/取消挂载等等


从旧服务器上导出池

# 从旧服务器上导出池
zpool export tank

物理移动磁盘并将池导入到新服务器中

# 物理移动磁盘并将池导入到新服务器中
zpool import tank

6. 设备管理


添加/替换新设备 (type: “”,mirror,raidz,raidz2)

# 添加新设备
zpool add tank <type> c0t2d0 c0t3d0 c0t4d0

# 替换新设备
zpool replace tank c0t1d0 c0t2d0

添加/移除镜像磁盘

# 添加镜像设备
zpool attach tank c0t1d0 c0t2d0

# 移除镜像设备
zpool detach tank c0t2d0

将设备停止或手工启动

# 将设备停止
zpool offline tank c0t2d0

# 将设备上线(启动)
zpool online tank c0t2d0

查看存储池当前状态和I/O状况

# 查看存储池当前状态
zpool status -v tank

# 查看存储池当前I/O状况
zpool iostat tank 1

添加热备磁盘

# 添加热备磁盘
zpool add tank spare c0t2d0

指定热备启动/停止热备

# 启动指定热备件磁盘
zpool replace tank c0t1d0 c0t2d0

# 停止指定热备件磁盘
zpool detach tank c0t2d0

将热备设备删除

# 将热备磁盘删除
zpool remove tank c0t2d0

添加/删除独立的日志设备(性能改善)

# 添加独立的日志设备(性能改善)
zpool add tank log c0t3d0

# 删除独立的日志设备(性能改善) 
zpool remove tank c0t3d0

7. ZFS 权限管理

可以将zfs(1M) 的管理权限分派给普通用户
zfs allow
zfs unallow


将权限授予一个普通用户

# 将权限授予一个普通用户
zfs allow marks create,snapshot tank/marks

将指定权限回收

# 将指定权限回收
zfs unallow marks create,snapshot tank/marks

查看文件系统当前的权限

# 查看文件系统当前的权限
zfs allow tank/marks

8. 其它命令


显示存储池所有操作历史记录

# 显示存储池所有操作历史记录
zpool history tank

升级存储池到指定SPA版本

# 升级存储池到指定SPA版本
zpool upgrade -V <version> tank

升级文件系统到指定ZPL版本

# 升级文件系统到指定ZPL版本
zfs upgrade -V <version> tank/fs

手工挂载/卸载文件系统

# 手工挂载文件系统
zfs mount -a

# 卸载文件系统
zfs unmount tank/fs

# 自动卸载临时挂载 
zfs unmount -a

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

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

相关文章

数据库的存储引擎和事务

Mysql默认使用INNODB存储引擎 数据库中的各表均被&#xff08;在创建表时&#xff09;指定的存储引擎来处理。 服务器可用的引擎依赖于以下因素&#xff1a;MySql的版本、服务器在开发时如何被配置、启动选项 为了解当前服务器中有哪些存储引擎可用&#xff0c;可使用show e…

2022 年 项目中常用的工具函数

目录1. 数字千分位化&#xff0c;支持保留小数点2. 前端生成 uuid3. 传入日期换算出是周几4. 通过计算 text-indent 偏移的负值&#xff0c;实现文字居右隐藏, 右侧对齐 ...text5. 时间格式化函数6. 防抖和节流7. 前端文件流下载8. 后端返回 无格式化时间处理为格式化 20220101…

回收租赁商城系统功能拆解03讲-商品分类

回收租赁系统适用于物品回收、物品租赁、二手买卖交易等三大场景。 可以快速帮助企业搭建类似闲鱼回收/爱回收/爱租机/人人租等回收租赁商城。 回收租赁系统支持智能评估回收价格&#xff0c;后台调整最终回收价&#xff0c;用户同意回收后系统即刻放款&#xff0c;用户微信零…

【C语言进阶】指针进阶-回调函数

作者:匿名者Unit 目录一.函数指针数组1.定义2.转移表二.回调函数1.定义2.qsort的使用3.冒泡模拟实现qsort一.函数指针数组 1.定义 在之前我们已经了解过了函数指针: int(*p)(int,int)&add;我们还可以将函数的地址存放在数组&#xff0c;也就是函数指针数组 int (*p[10…

Qt音视频开发10-ffmpeg内核硬解码

一、前言 为了极大的降低CPU的占用&#xff0c;实现硬解码&#xff08;也叫硬件加速&#xff09;非常有必要&#xff0c;一个视频文件或者一路视频流还好&#xff0c;如果增加到64路视频流呢&#xff0c;如果是4K、8K这种高分辨率的视频呢&#xff0c;必须安装上硬解码才是上上…

初始Spring

初始Spring SSM框架的老大是&#xff1a;Spring大管家&#xff0c;无处不在 Spring是应用了很多优秀的设计模式,对于项目的实现,提供了优秀的解决方案;Spring是一个轻量级(低侵入) 框架.类与类之间的解耦合 IOC控制反转 实现大管家 AOP 增强&#xff0c;面向切面编程&…

QT—QPalette调色板类

Qt提供的调色板类QPalette专门用于管理部件的外观显示&#xff0c;相当于部件或对话框的调色板&#xff0c;管理他们所有的颜色信息。每个部件都包含一个QPalette对象&#xff0c;在显示时&#xff0c;按照它的QPalette对象中对各部分各状态下的颜色的描述进行绘制。示例点击左…

C语言-数据的存储-浮点数的存储(8.2)​​​​​​​

目录​​​​​​​ 思维导图&#xff1a; 浮点型在内存中的存储 1.1一个经典的例子 1.2 浮点数存储规则 1.3实践举例 写在最后&#xff1a; 思维导图&#xff1a; 浮点型在内存中的存储 1.1一个经典的例子 #include <stdio.h>int main() {int n 9;//以整形的形式…

SHELL脚本学习 --- 第七次作业(awk)

SHELL脚本学习 — 第七次作业 思路&#xff1a; 1&#xff0c;df -h获取磁盘情况&#xff0c;先用grep过滤出根分区所属行&#xff0c;然后awk打印相应的域 2&#xff0c;首先把多个空格缩成一个&#xff0c;然后用grep找到ens160所属的IP&#xff0c;在awk中使用正则匹配inet…

C++ STL 容器类和迭代器

一、STL容器类 1.1 STL介绍 容器就是盛放东西的东西&#xff0c;这里被盛放的一般是数据对象&#xff0c;用来盛放的是容器类容器类的内核就是&#xff1a;数据结构 算法STL(Standard Template Library,标准模板库)STL从广义上分为:容器(container)算法(algorithm)迭代器(it…

在泰国旅居的第5天,我定了两个新目标

点击上方 "大数据肌肉猿"关注, 星标一起成长点击下方链接&#xff0c;进入高质量学习交流群今日更新| 1052个转型案例分享-大数据交流群我在12月14号写了2023年&#xff0c;重新扬帆起航&#xff01;&#xff0c;里面说了2023年开始全球旅居办公&#xff0c;而在元旦…

历史大讲堂:这是老古董 苹果第一代Macintosh详解

还记得这个苹果吗&#xff1f;这是美国苹果公司的图标。今天我们就来借着苹果最出名的第一代个人电脑唠一唠苹果的前世今生。 这一代个人电脑 已经有鼠标了&#xff08;右下角&#xff09;&#xff0c;虽然非常的古老 macOS第一代系统就运行在这个上。这里我们也来唠一唠Macin…

Spring Boot学习笔记(十二)Spring Boot整合Quartz

一、自定义配置类 不使用springBoot的自动配置类&#xff0c;而是自定义配置类。 1、导入依赖 pom文件&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifact…

Android---Toolbar

目录 Toolbar Toolbar 加上 menu Toolbar 设置 Theme 完整 Demo Toolbar Toolbar 是在 Android 5.0 开始推出的一个 Materal Design 风格的导航控件 &#xff0c;Google 非常推荐大家使用 Toobar 来作为 Android 客户端的导航栏&#xff0c;以此来取代之前的 Actionbar。与 …

联想昭阳E4电脑U盘安装Win10系统操作教学

联想昭阳E4电脑U盘安装Win10系统操作教学分享。有用户想要将自己的联想昭阳E4电脑重装到Win10系统来使用。那么今天教大家一个U盘重装系统的方法&#xff0c;使用这个方法能够在系统出现问题的时候进行系统的重置&#xff0c;解决系统问题。一起来看看具体的重装教学吧。 准备工…

Exynos_4412——PWM实验

目录 一、PWM简介 1.1蜂鸣器工作原理 有源蜂鸣器 无源蜂鸣器 1.2使用GPIO控制 1.3PWM控制 1.4PWM参数 周期​ 占空比 二、Exynos_4412下的PWM控制器 三、PWM寄存器详解 四、PWM编程 一、PWM简介 1.1蜂鸣器工作原理 有源蜂鸣器 有源蜂鸣器只要接上额定电源就可以发…

主流的4种跨隔离网文件摆渡方式对比介绍

网络上承载了太多企业的业务&#xff0c;其安全性一定要得到保障&#xff0c;所以很多企业和机构都会选择将网络进行隔离划分&#xff0c;比如内外网隔离&#xff0c;办公网、研发网隔离等&#xff0c;也有不少企业会选择用云桌面的形式。 然而网络的建设就是为了互通的&#x…

【学vue跟玩一样】快速搞懂vue渲染

Vue的渲染分为条件渲染和列表渲染&#xff0c;那究竟什么式渲染呢?1.条件渲染1.v-if写法:(1)v-if"表达式"(2)v-else-if"表达式"(3)v-else"表达式"&#xff08;和我们曾经学过的JavaScript里面的if语句几乎一样&#xff09;适用于:切换频率较低的…

React umi中使用sass

umi默认支持less和css&#xff0c;如果想要使用sass&#xff0c;需要安装插件以及配置 一、安装umi的sass插件 yarn add umijs/plugin-sass 二、安装sass依赖 yarn add sass-loader node-sass 三、配置sass 在config/config.js或者 .umirc.ts文件中配置如下&#xff1a; sa…

linux 卸载elasticsearch及安装elasticsearch8.5(rpm)

目录 卸载elasticsearch rpm安装elasticsearch8.5 卸载elasticsearch # 检查elasticsearch服务状态 systemctl status elasticsearch.service; # 停止elasticsearch服务状态 systemctl stop elasticsearch.service; # 剔除elasticsearch服务 systemctl disable elasticsea…