复习之linux高级存储管理
一、lvm----逻辑卷管理
1.lvm定义
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。
逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图所示。它可以将几块磁盘(物理卷,PhysicalVolume)组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的逻辑卷(LogicalVolume)创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。对于上层应用来说卷组替代了磁盘块成为数据存储的基本单元。LVM管理着所有物理卷的物理盘区,维持着逻辑盘区和物理盘区之间的映射。LVM逻辑设备向上层应用提供了和物理磁盘相同的功能,如文件系统的创建和数据的访问等。但LVM逻辑设备不受物理约束的限制,逻辑卷不必是连续的空间,它可以跨越许多物理卷,并且可以在任何时候任意的调整大小。相比物理磁盘来说,更易于磁盘空间的管理。
- pv :物理卷,被处理过的物理分区
- pe:物理扩展,设定存储最小单元
- vg:物理卷组,捆绑pv到一个组中
- lv:逻辑卷 分配最终的使用设备

2.实验素材
- 建立lvm分区
- 新建目录
- 建立监控
建立lvm分区:
首先建立分区,然后设置标签--8e 即lvm分区

建立成功后记得wq保存! 以及同步分区表!
实验建立监控查看:watch -n 1 "pvs;echo ====;vgs;echo =====;lvs;echo =====;df -h /westosdir"
新建目录: /westosdir/
3. lvm设备建立
(1)创建pv---物理卷
# pvcreate /dev/vdb3
(2)创建vg---物理卷组
-s设定pe大小位2M
# vgcreate -s 2M westos_vg /dev/vdb3
(3)创建lv---逻辑卷
-L指定大小 -n指定名称
# lvcreate -L 100M -n westos_lv westos_vg
(4)格式化--创建文件系统
# mkfs.xfs /dev/westos_vg/westos_lv
(5)挂载设备至目录
# mount /dev/westos_vg/westos_lv /westosdir/

监控界面如下:

4. lvm拉伸
(1)vg容量充足
vg容量为1G.容量充足直接拉伸!
# lvextend -L 200M /dev/westos_vg/westos_lv:拉伸到200M
# xfs_growfs /dev/westos_vg/westos_lv:拉伸文件系统,否则无法使用

(2)vg容量不足
- pvcreate /dev/vdb5:创建新pv
- vgextend westos_vg /dev/vdb5:扩展vg容量
- lvextend -L 1500M /dev/westos_vg/westos_lv :拉伸lvm
- xfs_growfs /dev/westos_vg/westos_lv:格式化文件系统
想要拉伸lvm为1.5G,发现容量不够

此时进入磁盘,寻找lvm分区来创建新pv

扩展原来的vg容量,然后进行lvm拉伸,格式化文件系统

最后查看监控,该设备容量拉伸成功!

5.lvm缩减
- 卸载设备:umount /westosdir
- 扫描文件大小,看看缩减大小是否合适:e2fsck -f /dev/westos_vg/westos_lv
- 缩减文件系统: resize2fs /dev/westos_vg/westos_lv 500M
- 缩减lvm:lvreduce -L 500M /dev/westos_vg/westos_lv
- 重新挂载设备:mount /dev/westos_vg/westos_lv /westosdir/
(1)前提
缩减lvm设备的前提是:文件系统是ext或者ext4,xfs文件系统不能缩减!
由于之前实验我们使用的是xfs文件系统,因此本节首先给lvm设备更换文件系统!
# mkfs.ext4 /dev/westos_vg/westos_lv:设定文件系统为ext4

(2)卸载设备+扫描
扫描设备的文件大小,防止lvm缩减太小不可用!

(3)缩减文件系统+lvm,重新挂载设备

挂载成功后查看,lvm设备已经成功缩减到500M

6. vg缩减
- vgreduce westos_vg /dev/vdb3 :把分区3从该vg中缩减
- pvmove /dev/vdb3 :删除该pv
假如想缩减3,首先将3的东西转移到5
pvmove /dev/vdb3 /dev/vdb5
然后直接将pv3从vg中减去
最后彻底删除pv3

7.lvm快照
LVM 机制还提供了对 LV 做快照的功能,也就是说可以给⽂件系统做⼀个备份,这也是设计 LVM 快照的主要⽬的。快照可以用于记录系统当前状态,以便后续进行回滚操作回到此状态,或将这些状态用于系统备份。这⽐传统的备份技术的效率要⾼很多。创建快照时不⽤停⽌服务,就可以对数据进⾏备份。
- 创建快照:快照名:westos_lvbackup 原始:/dev/westos_vg/westos_lv
- 重新挂载即可生效
-
[root@westosa ~]# lvcreate -L 50M -n westos_lvbackup -s /dev/westos_vg/westos_lv Logical volume "westos_lvbackup" created. [root@westosa ~]# mount /dev/westos_vg/westos_lvbackup /westosdir/=================================实验==================================
接上节,建立的lvm设备挂载在/westosdir目录上!
此时在目录中建立10个重要的文件!由于设备挂载在该目录上,因此该设备也有该数据!

创建该设备的快照,可记录下此时的系统状态!便于备份!
将快照挂载在该目录。
[root@westosa ~]# umount /westosdir
[root@westosa ~]# lvcreate -L 50M -n westos_lvbackup -s /dev/westos_vg/westos_lv Logical volume "westos_lvbackup" created.
[root@westosa ~]# mount /dev/westos_vg/westos_lvbackup /westosdir/
[root@westosa ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 391196 0 391196 0% /dev
tmpfs 419040 0 419040 0% /dev/shm
tmpfs 419040 6872 412168 2% /run
tmpfs 419040 0 419040 0% /sys/fs/cgroup
/dev/vda3 9450496 4344352 5106144 46% /
/dev/vda1 506528 218856 287672 44% /boot
tmpfs 83808 1180 82628 2% /run/user/42
tmpfs 83808 28 83780 1% /run/user/0
/dev/mapper/westos_vg-westos_lvbackup 96928 6068 90860 7% /westosdir
[root@westosa ~]# ls /westosdir/
westosfile1 westosfile2 westosfile4 westosfile6 westosfile8
westosfile10 westosfile3 westosfile5 westosfile7 westosfile9
如果不小心删除了10个重要的文件,怎么办?

因为有快照的存在,可以恢复!
首先卸载设备,删除快照,重新建立快照,再次挂载至该目录!
发现文件仍然存在!
[root@westosa ~]# umount /westosdir
[root@westosa ~]# lvremove /dev/westos_vg/westos_lvbackup
Do you really want to remove active logical volume westos_vg/westos_lvbackup? [y/n]: yLogical volume "westos_lvbackup" successfully removed
[root@westosa ~]# lvcreate -L 50M -n westos_lvbackup -s /dev/westos_vg/westos_lvLogical volume "westos_lvbackup" created.
[root@westosa ~]# mount /dev/westos_vg/westos_lvbackup /westosdir/
[root@westosa ~]# ls /westosdir/
westosfile1 westosfile2 westosfile4 westosfile6 westosfile8
westosfile10 westosfile3 westosfile5 westosfile7 westosfile9
8. lvm设备删除
- 卸载设备
- 删除快照
- 删除lv设备
- 删除vg
- 删除pv
[root@westosa ~]# umount /westosdir
[root@westosa ~]# lvremove /dev/westos_vg/westos_lvbackup
Do you really want to remove active logical volume westos_vg/westos_lvbackup? [y/n]: yLogical volume "westos_lvbackup" successfully removed
[root@westosa ~]# lvremove /dev/westos_vg/westos_lv
Do you really want to remove active logical volume westos_vg/westos_lv? [y/n]: yLogical volume "westos_lv" successfully removed
[root@westosa ~]# vgremove westos_vg Volume group "westos_vg" successfully removed
[root@westosa ~]# pvremove /dev/vdb3 Labels on physical volume "/dev/vdb3" successfully wiped.
删除成功!查看监控!

二、vdo(Virtual Data Optimize)----虚拟数据优化器
VDO是一个内核模块,目的是通过压缩和优化重复数据来节省磁盘空间,从而降低数据中心的成本。原理主要是压缩和优化重复数据,优化重复数据就是硬盘里拷贝来相同的数据,以前要占多份空间,现在只需要1份空间就可以了。
1. vdo的创建及使用
-
前提:vdo必须要用没使用过的硬盘
ps:在创建新硬盘时空间不足,在虚拟机管理界面把其他硬盘删除也不行!!
解决方法:进入主机的硬盘存放地址,删除不用的硬盘!!
983 cd /var/lib/libvirt/images/984 ls985 rm -fr aa.qcow2 qq.qcow2 westosa-2.qcow2 westosa-4.qcow2 bb.qcow2 westosa-1.qcow2 westosa-3.qcow2 westosa-5.qcow2 westos.qcow2
删除后添加新硬盘,发现空间足够了!


- vdo的安装
- vdo的创建: vdo create --name=westosvdo --device=/dev/vdb
[root@westosa ~]# dnf install vdo -y
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
AppStream 169 MB/s | 5.8 MB 00:00
BaseOS 144 MB/s | 2.3 MB 00:00
Package vdo-6.2.2.117-13.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@westosa ~]# vdo create --name=westosvdo --device=/dev/vdb
Creating VDO westosvdo
vdo: ERROR - Not enough available memory in system for index requirement of 256M
vdo的创建出现问题,提示内存不足!!!
只需要增加虚拟机的物理内存即可!

增加后再次创建vdo!成功!
[root@westosa ~]# dnf install vdo -y
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:05:08 ago on Sun 30 Jul 2023 02:56:24 PM CST.
Package vdo-6.2.2.117-13.el8.x86_64 is already installed.
Dependencies resolved.
Nothing to do.
Complete!
[root@westosa ~]# vdo create --name=westosvdo --device=/dev/vdb
Creating VDO westosvdoLogical blocks defaulted to 1569686 blocks.The VDO volume can address 6 GB in 3 data slabs, each 2 GB.It can grow to address at most 16 TB of physical storage in 8192 slabs.If a larger maximum size might be needed, use bigger slabs.
Starting VDO westosvdo
Starting compression on VDO westosvdo
VDO instance 0 volume is ready at /dev/mapper/westosvdo
- 查看vdo的功能
数据压缩和重复检测功能均开启!
[root@westosa ~]# vdo status --name=westosvdo
VDO status:Date: '2023-07-30 15:06:08+08:00'Node: westosa.org
Kernel module:Loaded: trueName: kvdoVersion information:kvdo version: 6.2.2.117
Configuration:File: /etc/vdoconf.ymlLast modified: '2023-07-30 15:01:44'
VDOs:westosvdo:Acknowledgement threads: 1Activate: enabledBio rotation interval: 64Bio submission threads: 4Block map cache size: 128MBlock map period: 16380Block size: 4096CPU-work threads: 2Compression: enabledConfigured write policy: autoDeduplication: enabledDevice mapper status: 0 12557488 vdo /dev/vdb normal - online online 1049638 2621440Emulate 512 byte: disabledHash zone threads: 1

- vdo格式化:文件系统的建立
- 挂载vdo设备,可以使用拉!
[root@westosa ~]# mkfs.xfs /dev/mapper/westosvdo
meta-data=/dev/mapper/westosvdo isize=512 agcount=4, agsize=392422 blks= sectsz=4096 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1
data = bsize=4096 blocks=1569686, 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=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@westosa ~]# mkdir /westosdir
[root@westosa ~]# mount /dev/mapper/westosvdo /westosdir/
[root@westosa ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 906060 0 906060 0% /dev
tmpfs 935132 0 935132 0% /dev/shm
tmpfs 935132 9784 925348 2% /run
tmpfs 935132 0 935132 0% /sys/fs/cgroup
/dev/mapper/rhel-root 8374272 4331900 4042372 52% /
/dev/vda1 1038336 234160 804176 23% /boot
tmpfs 187024 1180 185844 1% /run/user/42
tmpfs 187024 24 187000 1% /run/user/0
/dev/mapper/westosvdo 6268504 76808 6191696 2% /westosdir
2.vdo的优化重复数据功能测试
- 建立监控:查看测试结果
[root@westosa ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/westosvdo 10.0G 4.0G 6.0G 40% 98%
[root@westosa ~]# watch -n 1 vdostats --human-readable
监控界面如下:

- 实验素材:将主机大小为797M的截图发给虚拟机的/iso目录

- 重复数据检测:将/iso的数据复制2次到/westsodir目录,发现之占用了一份空间!
因为此时vdo设备挂载在该目录上!
[root@westosa westosdir]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 906060 0 906060 0% /dev
tmpfs 935132 0 935132 0% /dev/shm
tmpfs 935132 9784 925348 2% /run
tmpfs 935132 0 935132 0% /sys/fs/cgroup
/dev/mapper/rhel-root 8374272 5149108 3225164 62% /
/dev/vda1 1038336 234160 804176 23% /boot
tmpfs 187024 1180 185844 1% /run/user/42
tmpfs 187024 24 187000 1% /run/user/0
/dev/mapper/westosvdo 6268504 76808 6191696 2% /westosdir
[root@westosa westosdir]# cp -r /iso/ /westosdir/
[root@westosa westosdir]# ls
iso
[root@westosa westosdir]# cp -r /iso/ /westosdir/iso-1
[root@westosa westosdir]# ls
iso iso-1
[root@westosa westosdir]# du -h *
797M iso
797M iso-1
查看监控,两份内容一样的数据只占用了一份空间!!这就是vdo的重复数据优化功能!!

3. vdo设备开机自动挂载
- 编辑/etc/fstab文件,注意,需要添加x-systemd.requires=vdo.service

利用man vdo命令查看模板

重启虚拟机后,该设备自动挂载!!
5. 删除vdo设备
- 卸载设备
- 停止设备,ps:停止后还可以打开
- 删除设备
[root@westosa ~]# umount /westosdir
[root@westosa ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 906232 0 906232 0% /dev
tmpfs 935300 0 935300 0% /dev/shm
tmpfs 935300 9428 925872 2% /run
tmpfs 935300 0 935300 0% /sys/fs/cgroup
/dev/mapper/rhel-root 8374272 5149588 3224684 62% /
/dev/vda1 1038336 234460 803876 23% /boot
tmpfs 187060 1180 185880 1% /run/user/42
tmpfs 187060 4 187056 1% /run/user/0
[root@westosa ~]# vdo stop --name westosvdo
Stopping VDO westosvdo
[root@westosa ~]# vdo remove --name westosvdo
Removing VDO westosvdo
Stopping VDO westosvdo
删除设备后,该vdo设备删除成功!

- 打开设备
[root@westosa ~]# vdo stop --name westosvdo
Stopping VDO westosvdo
[root@westosa ~]# vdo start --name westosvdo
Starting VDO westosvdo
Starting compression on VDO westosvdo
VDO instance 1 volume is ready at /dev/mapper/westosvdo
[root@westosa ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 906232 0 906232 0% /dev
tmpfs 935300 0 935300 0% /dev/shm
tmpfs 935300 9432 925868 2% /run
tmpfs 935300 0 935300 0% /sys/fs/cgroup
/dev/mapper/rhel-root 8374272 5149608 3224664 62% /
/dev/vda1 1038336 234460 803876 23% /boot
tmpfs 187060 1180 185880 1% /run/user/42
tmpfs 187060 4 187056 1% /run/user/0
/dev/mapper/westosvdo 6268504 1711180 4557324 28% /westosdir
注意:打开设备后,该设备自动挂载!记得删除/etc/fstab里的自动挂载语句!
相关文章:
复习之linux高级存储管理
一、lvm----逻辑卷管理 1.lvm定义 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。 逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备…...
HuggingGPT Solving AI Tasks with ChatGPT and its Friends in Hugging Face
总述 HuggingGPT 让LLM发挥向路由器一样的作用,让LLM来选择调用那个专业的模型来执行任务。HuggingGPT搭建LLM和专业AI模型的桥梁。Language is a generic interface for LLMs to connect AI models 四个阶段 Task Planning: 将复杂的任务分解。但是这里…...
java工程重写jar包中class类覆盖问题
结论:直接在程序中复写jar中的类即可 原因:一般我java工程是运行在tomcat容器中,tomcat容易在加载我们工程类和jar包是的优先级为: 我们工程的class 先于 我们工程lib下的jar 重复的类只加载一次,加载我们复写后的类后…...
Mybatis基于注解与XML开发
文章目录 1 关于SpringBoot2 关于MyBatis2.1 MyBatis概述2.2 MyBatis核心思想2.3 MyBatis使用流程3 MyBatis配置SQL方式3.1 基于注解方式3.1.1 说明3.1.2 使用流程3.1.3 常用注解 3.2 基于XML方式3.2.1 相比注解优势3.2.2 使用流程3.2.3 常用标签 1 关于SpringBoot SpringBoot…...
数字化转型导师坚鹏:数字化时代扩大内需的8大具体建议
在日新月异的数字化时代、复杂多变的国际化环境下,扩大内需成为推动经济发展的国家战略,如何真正地扩大内需?结合本人15年的管理咨询经验及目前实际情况的深入研究,提出以下8大具体建议: 1、制定国民收入倍增计划。结…...
M1/M2 通过VM Fusion安装Win11 ARM,解决联网和文件传输
前言 最近新入了Macmini M2,但是以前的老电脑的虚拟机运行不起来了。😅,实际上用过K8S的时候,会发现部分镜像也跑不起来,X86的架构和ARM实际上还是有很多隐形兼容问题。所以只能重新安装ARM Win11,幸好微软…...
Linux中显示系统正在运行的进程的命令
2023年7月29日,周六上午 在Linux中,ps命令用于显示当前系统中正在运行的进程, ps应该是processes snapshot(进程快照)的缩写。 以下是ps命令的常见用法和示例: 显示当前用户的所有进程:ps 显示…...
vite中安装less
使用vite创建的项目,默认是没有安装less的 如果直接在style中书写less 会报下图错误: 解决方案: npm install --save less 在package.json中查看是否安装成功 安装完成刷新页面,问题解决...
Aduino中eps环境搭建
这里只记录Arduino2.0以后版本:如果有外网环境,那么可以轻松搜到ESP32开发板环境并安装,如果没有,那就见下面操作: 进入首选项,将esp8266的国内镜像地址填入,然后保存,在开发板中查…...
python——案例二 求两个数的和
#案例二 求两个数的和 num1input(请输入第一个数字:) num2input(请输入第二个数字:) sumfloat(num1)float(num2) #计算公式 print(sum) #显示结果 输入num11、num22得到结果sum3...
一文了解 Android 车机如何处理中控的旋钮输入?
前言 上篇文章《从实体按键看 Android 车载的自定义事件机制》带大家了解了 Android 车机支持自定义输入的机制 CustomInputService。事实上,除了支持自定义事件,对于中控上常见的音量控制、焦点控制的旋钮事件,Android 车机也是支持的。 那…...
小红书推广 方法总结
大家好,我是网媒智星,今天跟大家分享一下小红书的推广方法和经验。 一、平台简介 1、什么是小红书? 小红书是一个消费决策/生活方式平台,用户可以通过图片、文案、视频等方式分享美好生活。 2、用户画像 - 2亿月活跃…...
通讯录的实现(超详细)——C语言(进阶)
目录 一、创建联系人信息(结构体) 二、创建通讯录(结构体) 三、define定义常量 四、打印通讯录菜单 五、枚举菜单选项 六、初始化通讯录 七、实现通讯的的功能 7.1 增加加联系人 7.2 显示所有联系人的信息 7.3 单独查…...
3D 渲染技巧-如何创建高质量写实渲染?
掌握创建高质量建筑渲染和任何 3D 渲染的艺术是一项复杂且需要技巧的工作,通常需要多年的经验和实践。实现逼真的结果需要仔细考虑众多因素,并避免可能导致缺乏真实性的假渲染效果的常见错误。 避免常见错误 - 提升渲染游戏的技巧 在追求创建真正逼真的…...
fastadmin采坑之获取当前登录admin用户的信息
在controller层里想要获取当前登录admin用户的信息 print_r($this->auth->getUserInfo());但是有个问题 我在fa_admin表中添加了新的字段,这个方法获取不到新字段的数值,具体也没有去研究估计跟方法有关 然后我直接用模型去获取数据,简…...
【Spring AOP + 自定义注解 + 动态数据源 实现主从库切换读写分离】—— 案例实战
💧 S p r i n g A O P 主从数据源切换 读写分离 自定义注解案例实战! \color{#FF1493}{Spring AOP 主从数据源切换 读写分离 自定义注解 案例实战!} SpringAOP主从数据源切换读写分离自定义注解案例实战!💧 …...
【LeetCode每日一题合集】2023.7.24-2023.7.30
文章目录 771. 宝石与石头代码1——暴力代码2——位运算集合⭐(英文字母的long集合表示) 2208. 将数组和减半的最少操作次数(贪心 优先队列)2569. 更新数组后处理求和查询⭐⭐⭐⭐⭐(线段树)TODO2500. 删除…...
《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(14)-Fiddler断点(breakpoints)实战,篡改或伪造数据
1.简介 上一篇主要就讲解和分享Fiddler断点的理论和操作,今天宏哥就用具体例子,将上一篇中的理论知识实践一下。而且在实际测试过程中,有时候需要修改请求或响应数据,或者直接模拟服务器响应,此时可以使用fiddler进行…...
ELK + Fliebeat + Kafka日志系统
参考: ELKFilebeatKafka分布式日志管理平台搭建_51CTO博客_elk 搭建 ELK 日志分析系统概述及部署(上)-阿里云开发者社区 ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。…...
Scaling Instruction-Finetuned Language Models
Paper name Scaling Instruction-Finetuned Language Models Paper Reading Note Paper URL: https://arxiv.org/pdf/2210.11416.pdf TL;DR 2022 年谷歌出的文章,对指令微调的影响因素进行分析,提出了一些提升指令微调效果的方案。与该文章一起出品…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
第25节 Node.js 断言测试
Node.js的assert模块主要用于编写程序的单元测试时使用,通过断言可以提早发现和排查出错误。 稳定性: 5 - 锁定 这个模块可用于应用的单元测试,通过 require(assert) 可以使用这个模块。 assert.fail(actual, expected, message, operator) 使用参数…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
CSS | transition 和 transform的用处和区别
省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
