当前位置: 首页 > news >正文

【KVM虚拟化】· virsh管理命令

目录

🍁libvirt架构概述

🍁使用virsh管理虚拟机

🍂常用命令总结

🍁kvm基本功能管理

🍂帮助命令

🍂KVM的配置文件存放目录

🍂查看虚拟机状态

🍂虚拟机关机与开机

🍂强制虚拟机系统关闭电源

🍂通过配置文件启动虚拟机系统

🍂挂起虚拟机

🍂恢复虚拟机

🍂设置虚拟机自启

🍂导出虚拟机配置

🍂删除和导入虚拟机

🍂修改虚拟机配置文件

🍂查看虚拟机信息

🍂连接虚拟机

🍂虚拟机克隆

🍃查看虚拟机状态

🍃克隆虚拟机

🍃查看状态并启动

🍁虚拟机快照

🍃对虚拟机拍摄快照

🍃查看快照详细信息

🍃恢复快照

🍃删除快照


   🦐博客主页:大虾好吃吗的博客

   🦐专栏地址:KVM虚拟化专栏

libvirt架构概述

        libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。

libvirtd该后台进程主要实现以下功能:

(1)远程代理所有remote client发送来的命令,由该进程监测执行

(2)本地环境初始化libvirt服务的启停,用户connection的响应等

(3)根据环境注册各种Driver(qemu, xen, storage…)的实现不同虚拟化技术以Driver的形式实现,由于libvirt对外提供的是统一的接口,所以各个Driver就是实现这些接口,即将Driver注册到libvirt中。

查看libvirtd服务状态

        如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。

[root@localhost ~]# systemctl status libvirtd

查看配置文件

        虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中

[root@localhost ~]# ll /etc/libvirt/qemu
total 8
-rw-------  1 root root 3325 Apr 20 23:29 myvm01.xml
-rw-------  1 root root 3325 Apr 20 23:30 myvm02.xml
drwx------. 3 root root   42 Apr 17 04:32 networks

可以看到创建的2个虚拟机,libvirt的xml文件分为几个重要部分,整体结构如下:

<domain type='kvm'>

虚拟机整体信息

系统信息

硬件资源特性

突发事件处理

虚拟磁盘(单个或多个)

虚拟光盘(可选)

虚拟网络(单个或多个)

vnc/spice 配置

</domain>

使用virsh管理虚拟机

        virsh是使用libvirt management API构建的管理工具,virsh的名称的含义是virtualization shell。它有两种工作模式:

立即模式

[root@localhost ~]# virsh list --allId    Name                           State
----------------------------------------------------3     myvm02                         running4     myvm01                         running

交互模式

[root@localhost ~]# virsh
Welcome to virsh, the virtualization interactive terminal.
​
Type:  'help' for help with commands'quit' to quit
​
virsh # list --allId    Name                           State
----------------------------------------------------3     myvm02                         running4     myvm01                         running

常用命令总结

命令描述
attach-device使用XML文件中的设备定义在虚拟机中添加设备
attach-disk在虚拟机中附加新磁盘设备
attach-interface在虚拟机中附加新网络接口
create在XML配置文件生成虚拟机并启动新虚拟机
define为虚拟机输出XML配置文件
destroy强制关闭虚拟机
detach-device从虚拟机中分离设备,使用同样的XML描述作为命令attach-device
detach-disk从虚拟机中分离磁盘设备
detach-interface从虚拟机中分离网络接口
domblkstat显示正在运行的虚拟机的块设备统计
domid显示虚拟机id
domifstat显示正在运行的虚拟机的网络接口统计
dominfo显示虚拟机信息
domname显示虚拟机名称
domstate显示虚拟机状态
domuuid显示虚拟机uuid
dumpxml输出虚拟机XML配置文件
help显示帮助命令
list列出所有虚拟机
migrate列出虚拟机迁移到两外一台主机中
nodeinfo有关管理程序的输出信息
quit退出交互终端
reboot重启虚拟机
restore恢复以前保存在文件中的虚拟机
resume恢复暂停的虚拟机
save将虚拟机当前状态保存到某个文件中
setmaxmem为管理程序设定内存上限
setmem为虚拟机设定分配的内存
setvcpus修改为虚拟机分配的虚拟cpu数量
shutdown关闭虚拟机
undefine删除与虚拟机关联的所有文件
vcpuinfo显示虚拟机的虚拟cpu信息
vcpupin控制虚拟机的虚拟cpu亲和性
version显示virsh版本
start启动未激活的虚拟机
suspend暂停虚拟机

kvm基本功能管理

为了区分主机及虚拟机,这里把主机改名为kvmserver

帮助命令

[root@kvmserver ~]# virsh -h

KVM的配置文件存放目录

[root@kvmserver ~]# ll /etc/libvirt/qemu
total 8
-rw-------  1 root root 3325 Apr 20 23:29 myvm01.xml
-rw-------  1 root root 3325 Apr 20 23:30 myvm02.xml
drwx------. 3 root root   42 Apr 17 04:32 networks

查看虚拟机状态

list只能查看启动状态下的虚拟机,加参数--all可以查看全部虚拟机,但未启动的虚拟机不会有id。

[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------5     myvm01                         running-     myvm02                         shut off

虚拟机关机与开机

通过上面查看的虚拟机状态,这里把myvm01关闭,myvm02开启。

[root@kvmserver ~]# virsh shutdown myvm01
Domain myvm01 is being shutdown
​
[root@kvmserver ~]# virsh start myvm02
Domain myvm02 started

强制虚拟机系统关闭电源

        当虚拟机出现故障,通过上面温柔的关机方式,无法关闭时。这时你就需要用到暴力(拔电源)关机了,这种方式关机速度快,但是不推荐!!!

[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------6     myvm02                         running-     myvm01                         shut off[root@kvmserver ~]# virsh destroy myvm02
Domain myvm02 destroyed[root@kvmserver ~]# virsh list --allId    Name                           State
-----------------------------------------------------     myvm01                         shut off-     myvm02                         shut off

通过配置文件启动虚拟机系统

启动方式不止start一种,也可以通过启动配置文件来开启虚拟机。

[root@kvmserver ~]# virsh create /etc/libvirt/qemu/myvm01.xml
Domain myvm01 created from /etc/libvirt/qemu/myvm01.xml[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------7     myvm01                         running-     myvm02                         shut off

挂起虚拟机

        当虚拟机暂时不使用时,可以通过挂起保存当前的状态。当查看虚拟机的状态是,可以看到虚拟机的状态为被挂起。需要注意的是,挂起时的虚拟机必须为启动状态。

[root@kvmserver ~]# virsh suspend myvm01
Domain myvm01 suspended[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------7     myvm01                         paused-     myvm02                         shut off

恢复虚拟机

恢复挂起状态下的主机

[root@kvmserver ~]# virsh resume myvm01
Domain myvm01 resumed[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------7     myvm01                         running-     myvm02                         shut off

设置虚拟机自启

        设置虚拟机随宿主机开启而开启,执行创建命令时在/etc/libvirt/qemu/autostart/目录里面创建开机自启的系统文件链接。

[root@kvmserver ~]# virsh autostart myvm01
Domain myvm01 marked as autostarted[root@kvmserver ~]# cd /etc/libvirt/qemu/autostart/
[root@kvmserver autostart]# ls
myvm01.xml
[root@kvmserver autostart]# virsh list --autostartId    Name                           State
----------------------------------------------------7     myvm01                         running[root@kvmserver autostart]# virsh autostart --disable myvm01
Domain myvm01 unmarked as autostarted[root@kvmserver autostart]# virsh list --autostartId    Name                           State
----------------------------------------------------

导出虚拟机配置

下面命令是备份虚拟机myvm01,路径还是放qemu目录下。

[root@kvmserver ~]# virsh dumpxml myvm01 > /etc/libvirt/qemu/myvm01_bak.xml

删除和导入虚拟机

        删除虚拟机前需要先关闭虚拟机,让虚拟机处于关机状态。需要注意的是,上面已经备份了myvm01的虚拟机,如果没有备份,建议先备份,以便后面的导入操作。

[root@kvmserver ~]# virsh shutdown myvm01
Domain myvm01 is being shutdown[root@kvmserver ~]# virsh undefine myvm01
Domain myvm01 has been undefined

        查看删除结果,虽然文件myvm01.xml被删除了,但是不会删除磁盘文件。通过list命令查看已经没有myvm01虚拟机了。

[root@kvmserver ~]# virsh list --allId    Name                           State
-----------------------------------------------------     myvm02                         shut off[root@kvmserver ~]# ll /etc/libvirt/qemu
total 8
drwxr-xr-x  2 root root    6 Apr 21 05:04 autostart
-rw-r--r--  1 root root 4061 Apr 21 05:10 myvm01_bak.xml
-rw-------  1 root root 3325 Apr 20 23:30 myvm02.xml
drwx------. 3 root root   42 Apr 17 04:32 networks

通过备份的配置文件重新定义虚拟机

[root@kvmserver ~]# mv /etc/libvirt/qemu/myvm01_bak.xml /etc/libvirt/qemu/myvm01.xml
[root@kvmserver ~]# virsh define /etc/libvirt/qemu/myvm01.xml 
Domain myvm01 defined from /etc/libvirt/qemu/myvm01.xml[root@kvmserver ~]# virsh list --allId    Name                           State
-----------------------------------------------------     myvm01                         shut off-     myvm02                         shut off

修改虚拟机配置文件

通过vim命令直接对配置文件修改
[root@kvmserver ~]# vim /etc/libvirt/qemu/myvm01.xml
通过edit命令直接对虚拟修改
[root@kvmserver ~]# virsh edit myvm01

查看虚拟机信息

[root@kvmserver ~]# virsh dominfo myvm01 
Id:             -
Name:           myvm01
UUID:           59727769-f3a3-418c-936b-8bf4191c766a
OS Type:        hvm
State:          shut off
CPU(s):         1
Max memory:     1048576 KiB
Used memory:    1048576 KiB
Persistent:     yes
Autostart:      disable
Managed save:   no
Security model: none
Security DOI:   0

连接虚拟机

进入虚拟机后按 ctrl + ] 退出虚拟机,注意需要先启动虚拟机,等待开机完成,输入用户密码登录即可。

[root@kvmserver ~]# virsh start myvm01
Domain myvm01 started[root@kvmserver ~]# virsh console myvm01vm01 login: root
Password: 
Last login: Fri Apr 21 14:18:14 on ttyS0
[root@vm01 ~]# 

虚拟机克隆

查看虚拟机状态

[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------8     myvm01                         running-     myvm02                         shut off

克隆虚拟机

克隆myvm02的虚拟机,到myvm02_clong

[root@kvmserver ~]# virt-clone -o myvm02 -n myvm02_clong -f /kvm/img/vm02_clong.qcow2 
Allocating 'vm02_clong.qcow2'                                     | 8.0 GB  00:00:12     Clone 'myvm02_clong' created successfully.

参数:-o 需要克隆的虚拟机名称;-n 新虚拟机名称; -f 指定克隆到哪个文件目录并命名

查看状态并启动

[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------8     myvm01                         running-     myvm02                         shut off-     myvm02_clong                   shut off[root@kvmserver ~]# virsh start myvm02_clong 
Domain myvm02_clong started[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------8     myvm01                         running9     myvm02_clong                   running-     myvm02                         shut off

虚拟机快照

        快照实际上做的是虚拟机的XML配置文件,默认快照XML文件,在/var/lib/libvirt/qemu/snapshot/虚拟机名/下,快照只支持qcow2磁盘格式的系统。

对虚拟机拍摄快照

        拍摄快照有两种方式,第一种是随机生成名称,第二种是指定名称,最后查看虚拟机快照,生成两个虚拟机快照。

[root@kvmserver ~]# virsh list --allId    Name                           State
----------------------------------------------------8     myvm01                         running9     myvm02_clong                   running-     myvm02                         shut off[root@kvmserver ~]# virsh snapshot-create myvm01
Domain snapshot 1682069915 created
[root@kvmserver ~]# virsh snapshot-create-as myvm01 as1
Domain snapshot as1 created
[root@kvmserver ~]# virsh snapshot-list myvm01Name                 Creation Time             State
------------------------------------------------------------1682069915           2023-04-21 05:38:35 -0400 runningas1                  2023-04-21 05:39:04 -0400 running

查看快照详细信息

[root@kvmserver ~]# virsh snapshot-current myvm01
<domainsnapshot><name>as1</name><state>running</state><parent><name>1682069915</name></parent><creationTime>1682069944</creationTime>
#省略部分内容

恢复快照

恢复myvm01虚拟机到快照1682069915

[root@kvmserver ~]# virsh snapshot-revert myvm01 1682069915[root@kvmserver ~]# virsh snapshot-current myvm01 
<domainsnapshot><name>1682069915</name><state>running</state><creationTime>1682069915</creationTime>			#虚拟机快照版本号<memory snapshot='internal'/>
#省略部分内容

删除快照

先查看myvm01有哪些快照,删除as1快照后查看是否删除。

[root@kvmserver ~]# virsh snapshot-list myvm01Name                 Creation Time             State
------------------------------------------------------------1682069915           2023-04-21 05:38:35 -0400 runningas1                  2023-04-21 05:39:04 -0400 running[root@kvmserver ~]# virsh snapshot-delete myvm01 as1
Domain snapshot as1 deleted[root@kvmserver ~]# virsh snapshot-list myvm01Name                 Creation Time             State
------------------------------------------------------------1682069915           2023-04-21 05:38:35 -0400 running

相关文章:

【KVM虚拟化】· virsh管理命令

目录 &#x1f341;libvirt架构概述 &#x1f341;使用virsh管理虚拟机 &#x1f342;常用命令总结 &#x1f341;kvm基本功能管理 &#x1f342;帮助命令 &#x1f342;KVM的配置文件存放目录 &#x1f342;查看虚拟机状态 &#x1f342;虚拟机关机与开机 &#x1f342;强制虚…...

JS Es6中判断b数组对象是否有跟a数组对象相同的数值(例如:id),有的话就过滤掉

如下[数组]对象a和b let a[{id:1,value:this},{id:2,value:is}] let b[{id:1,value:hello},{id:3,value:world}]filter() 方法创建一个新的数组&#xff0c;新数组中的元素是通过检查指定数组中符合条件的所有元素。 some() 方法用于检测数组中的元素是否满足指定条件&#x…...

python获取某电商平台口红数据并制作词云

目录标题 前言开发环境:模块使用数据来源分析代码展示获取数据制作词云 尾语 &#x1f49d; 前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 开发环境: Python 3.8 Pycharm 模块使用 requests jieba 结巴分词 wordcloud 词云 第三方模块安装&#xff1a; win R 输…...

阿里成立AIDC,用“增长”解题国际化

随着阿里巴巴集团2023财年年报的披露&#xff0c;AIDC也随即浮出了水面。 AIDC是阿里国际数字商业集团的英文简称&#xff0c;AIDC即Alibaba International Digital Commerce。阿里是在5月18日公布的截至2023年3月31日的2023财年Q4及全年财报&#xff0c;财报数据之外&#xff…...

全面理解:在计算机科学中同步、异步、并行、并发,他们之间到底有什么区别,如果正确更好的区分它们?

同步&#xff0c;异步&#xff0c;并行&#xff0c;并发的基础概念 在计算机中同步的基础概念 在计算机科学中&#xff0c;同步&#xff08;Synchronization&#xff09;是指在多个过程或线程中&#xff0c;它们的执行在时间上是有序的。换句话说&#xff0c;要执行一个特定的…...

9、Ray核心框架介绍

9、Ray核心框架介绍 导航 1.简介和背景 2.Ray的基本概念和核心组件 3.分布式任务调度和依赖管理 4.对象存储和数据共享 5.Actor模型和并发编程 6.Ray的高级功能和扩展性 7.使用Ray构建分布式应用程序的案例研究 8.Ray社区和资源 9.核心框架介绍 10.扩展1...

【华为OD机试python】工单调度策略【 2023 Q1 A卷|100分】

华为OD机试- 题目列表 2023Q1 点这里!! 2023华为OD机试-刷题指南 点这里!! ■ 题目描述 当小区通信设备上报警时,系统会自动生成待处理的工单, 工单调度系统需要根据不同的策略,调度外线工程师(FME)上站去修复工单对应的问题。 根据与运营商签订的合同,不同严重程度…...

[论文阅读72]Parameter-Efficient Transfer Learning for NLP

1. 基本信息 题目论文作者与单位来源年份Parameter-Efficient Transfer Learning for NLPNeil Houlsby等Google Research&#xff0c;雅盖隆大学-波兰PMLR2019 Houlsby N, Giurgiu A, Jastrzebski S, et al. Parameter-efficient transfer learning for NLP[C]//Internationa…...

0基础转行居然拿到9.5K!尘埃深处是繁花,强者从未停下!

人总是越长大越胆小&#xff0c;很多事情不敢做&#xff0c;以后就更不敢做了。 为梦想颠簸的人有很多&#xff0c;可能不差你这个&#xff0c;不如意的时候我们都会想要放弃&#xff0c;但是生活不是一个点&#xff0c;它是一条长长的线&#xff0c;唯有行动&#xff0c;才能摆…...

软考初级程序员上午单选题(13)

1、下列不能兼作输入设备和输出设备的是______。 A&#xff0e;可擦除型光盘 B&#xff0e;软盘 C&#xff0e;硬盘 D&#xff0e;键盘 2、文件型计算机病毒主要感染______。 A&#xff0e;.TXT文件 B&#xff0e;.GIF文件 C&#xff0e;.EXE文件 D&#xff0e;.MP3文件 3、_…...

【WSN覆盖】基于麻雀搜索算法的三维无线传感器网络覆盖优化 三维WSN覆盖优化【Matlab代码#26】

文章目录 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】1. SSA算法2. 三维覆盖模型3. 部分代码展示4. 仿真结果展示5. 资源获取 【可更换其他算法&#xff0c;获取资源请见文章第5节&#xff1a;资源获取】 1. SSA算法 2. 三维覆盖模型 三维覆盖模…...

【学习日记2023.5.20】 之 菜品模块完善

文章目录 3. 功能模块完善之菜品模块3.1 公共字段自动填充3.1.1 问题分析3.1.2 实现思路3.1.3 代码开发1.3.1 步骤一1.3.2 步骤二1.3.3 步骤三 3.1.4 功能测试3.1.5 提交代码 3.2 新增菜品3.2.1 需求分析与设计3.2.2 代码开发3.2.2.1 文件上传实现3.2.2.2 新增菜品实现 3.2.3 功…...

MySQL高级SQL语句

创建两个表用于演示 location store_info use kgc; create table location (Region char(20),Store_Name char(20)); insert into location values(East,Boston); insert into location values(East,New York); insert into location values(West,Los Angeles); insert into lo…...

rem和em的区别和使用场景,以及如何在实际开发中灵活运用它们

在前端开发中&#xff0c;我们经常使用rem和em作为长度单位来设置页面元素的大小。虽然它们都可以用于实现响应式布局&#xff0c;但是它们之间存在着一些区别。本文将深入探讨rem和em的区别和使用场景&#xff0c;以及如何在实际开发中灵活运用它们。 什么是rem rem是相对于…...

JDK源码阅读环境搭建

本次针对jdk8u版本的搭建 1.新建项目 新建java项目JavaSourceLearn &#xff0c;这里我创建的是maven 2.获取JDK源码 打开Project Structure 找到本地JDK安装位置将src.zip解压到项目java包中 整理下项目结构&#xff0c;删除用不到的目录 提示: 添加源码到项目之后首次运行…...

基本定时器工作模式

计数和定时 BasicTimer支持8位或16位向上计数模式。当计数值大于等于比较寄存器&#xff08;CMPH、CMPL&#xff09;&#xff0c;会产生计数中断标志&#xff0c;并从自动重载寄存器&#xff08;LOADH、LOADL&#xff09;加载新的比较值。这样可以实时调整每个计数周期的计数长…...

【华为OD机试真题2023B卷 JAVA】报文重排序

华为OD2023(B卷)机试题库全覆盖,刷题指南点这里 报文重排序 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 对报文进行重传和重排序是常用的可靠性机制,重传缓冲区内有一定数量的子报文,每个子报文在原始报文中的顺序已知,现在需要恢复出原始报文。。 输入描…...

【Docker】- 02 Docker-Compose

Docker-Compose Docker-Compose1 下载并安装Docker-Compose1.1 下载Docker-Compose1.2 设置权限1.3 配置环境变量1.4 测试 2 Docker-Compose管理MySQL和Tomcat容器3 使用docker-compose命令管理容器4 docker-compose配合Dockerfile使用4.1 docker-compose文件4.2 Dockerfile文件…...

工业相机的Pixel Binning和Pixel Skipping

一般图像传感器的不同分辨率都对应着不同的帧率。如果想要提高帧率&#xff0c;就要考虑是否需要缩小视野。若不希望视野缩小&#xff0c;就需要减小分辨率&#xff08;resolution&#xff09;。常用的减少分辨率的两种采样方式是&#xff1a;Skipping和Binning。 什么是Binni…...

c++ 11标准模板(STL) std::set(八)

定义于头文件 <set> template< class Key, class Compare std::less<Key>, class Allocator std::allocator<Key> > class set;(1)namespace pmr { template <class Key, class Compare std::less<Key>> using se…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发&#xff08;电脑上写的程序&#xff09;涉及到的一套技术Qt无法开发网页前端&#xff0c;也不能开发移动应用。 客户端开发的重要任务&#xff1a;编写和用户交互的界面。一般来说和用户交互的界面&#xff0c;有两种典型风格&…...

Linux基础开发工具——vim工具

文章目录 vim工具什么是vimvim的多模式和使用vim的基础模式vim的三种基础模式三种模式的初步了解 常用模式的详细讲解插入模式命令模式模式转化光标的移动文本的编辑 底行模式替换模式视图模式总结 使用vim的小技巧vim的配置(了解) vim工具 本文章仍然是继续讲解Linux系统下的…...

react菜单,动态绑定点击事件,菜单分离出去单独的js文件,Ant框架

1、菜单文件treeTop.js // 顶部菜单 import { AppstoreOutlined, SettingOutlined } from ant-design/icons; // 定义菜单项数据 const treeTop [{label: Docker管理,key: 1,icon: <AppstoreOutlined />,url:"/docker/index"},{label: 权限管理,key: 2,icon:…...