【KVM虚拟化】· virsh文件管理

news2024/11/20 16:35:37

目录

🍁离线访问工具应用场景

🍁离线命令

🍂virt­-inspector

🍂virt-cat

🍂virt-edit

🍂virt-df

🍂virt-copy-out

🍂virt-copy-in

🍂guestfish

🍂guestmount

🍁管理虚拟磁盘

🍂虚拟磁盘类型

🍂KVM支持的虚拟磁盘类型

🍂qemu-img命令

🍂后备差异虚拟磁盘

🍂磁盘格式转换

🍂调整虚拟磁盘大小

🍁管理磁盘快照

🍂快照语法格式

🍂创建磁盘快照并查看

🍂恢复快照

🍂删除快照并查看


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

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

       通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置文件无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件主要有raw和qcow2格式。raw格式性能最好,速度最快,它的缺点就是不支持一些新的功能,如支持镜像,zlib磁盘压缩,AES加密等。要使用镜像功能,磁盘格式必须为qcow2。

        raw格式的话,速度稍微快点,在高版本的qemu-kvm中,几乎不比qcow2的格式快,而qcow2格式节省空间,可动态增长,在公有云中广泛使用,建议使用qcow2。所有有时候,我们需要将raw格式的磁盘转换成qcow2格式(qemu-img convert -f raw -O qcow2 /kvm/myvm01.img /kvm-/vmtest01.qcow2)。

离线访问工具应用场景

  1. 观看或下载位于虚拟机磁盘中的文件

  2. 编辑或上传文件到虚拟机磁盘

  3. 读取或写入的虚拟机配置

  4. 准备新的磁盘映像,其中包含文件、目录、文件系统、分区、逻辑卷和其他选项

  5. 拯救和修复客户无法启动或需要更改启动配置的虚拟机

  6. 监控虚拟机的磁盘使用情况

  7. 根据组织安全标准审计虚拟机的合规性

  8. 通过克隆和修改模板来部署虚拟机

  9. 读取CD和DVD ISO和软盘映像

离线命令

需要注意的是,确保虚拟机是关闭状态下,否则会报错

virt­-inspector

显示os版本、内核、驱动、挂载点、应用等等,但是很少使用,执行后需要等一会。

[root@kvmserver ~]# virt-inspector /kvm/img/vm01.qcow2
[root@kvmserver ~]# virt-inspector --format=qcow2 -a /kvm/img/vm01.qcow2 | more

virt-cat

类似于cat命令,参数:-a 需要指定虚拟机储存文件;-d 需要指定虚拟机名称,用法相同。

[root@kvmserver ~]# virt-cat -a /kvm/img/vm01.qcow2 /etc/hostname
vm01
[root@kvmserver ~]# virt-cat -d myvm01 /etc/hostname
vm01

virt-edit

        类似于vim,执行命令后在文本编辑器内修改文件内容。例如在下面修改主机名,原主机名为vm01,修改后主机名为myvm01,通过virt-cat命令查看主机名已经修改成功。

[root@kvmserver ~]# virt-edit -d myvm01 /etc/hostname 
myvm01          #修改添加主机名称
[root@kvmserver ~]# virt-cat -d myvm01 /etc/hostname
myvm01

virt-df

类似于df -h用于查看虚拟机磁盘信息

[root@kvmserver ~]# virt-df -h -d myvm01
Filesystem                                Size       Used  Available  Use%
myvm01:/dev/sda1                         1014M       105M       909M   11%
myvm01:/dev/centos/root                   6.2G       1.2G       5.0G   20%

virt-copy-out

        类似于scp命令,把虚拟机中的文件远程复制到宿主机中。例:把虚拟机中的passwd命令复制到当前路径,查看是否存在。

[root@kvmserver ~]# virt-copy-out -d myvm01 /etc/passwd ./
[root@kvmserver ~]# ls 
anaconda-ks.cfg  passwd

virt-copy-in

        类似于scp命令,把宿主机中的文件远程复制到虚拟机中。例:在宿主机中创建一个test文件,复制给虚拟机,通过virt-cat命令查看是否成功。

[root@kvmserver ~]# echo "this is a test" > test.txt
[root@kvmserver ~]# virt-copy-in -d myvm01 test.txt /opt/
[root@kvmserver ~]# virt-cat -d myvm01 /opt/test.txt
this is a test

guestfish

        可以查看、编辑和删除镜像内的文件,但是局限性很大,ls,cd等命令不能使用,推荐使用挂载的方式。

语法格式:

guestfish [--ro|--rw] -i -a 虚拟机磁盘文件

guestfish [--ro|--rw] -i -d 虚拟机名称

guestmount

        在一些使用场景中,直接把虚机镜像文件挂接在本地系统中,也是一个简便的办法。

guestmount -d 虚拟机名 -m 磁盘路径 --rw 挂载点

        如果事先不知道虚机内部分区的路径信息,则可以使用参数-i来让guestmount自己决定使用哪一个磁盘路径,挂载后,进入mnt目录下就是myvm01的根目录,可以进行正常操作。

[root@kvmserver ~]# guestmount -d myvm01 -i --rw /mnt
[root@kvmserver ~]# cd /mnt
[root@kvmserver mnt]# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr

将/mnt下的挂载进行卸载

[root@kvmserver ~]# guestunmount /mnt
[root@kvmserver ~]# ls /mnt
[root@kvmserver ~]# 

管理虚拟磁盘

虚拟化项目中存储的注意事项

  1. 存储的性能几乎总是虚拟化的瓶颈

  2. 通过多个磁盘驱动以分布磁盘I/O来实现存储解决方案

  3. 驱动器的速度越快越好,考虑SSD与机械磁盘的混合使用

  4. 考虑部署集中化的SAN/NFS来实现高可用性和实时迁移

虚拟磁盘类型

1. 固定 :Fixed

        在配置时,指定磁盘大小;不管在虚拟磁盘上实际存储多少数据,都将占用相同大小主机磁盘空间。

2. 动态 :Dynamic

        增长到最大容量,但是只根据需求使用更多的空间。

3. 差异(差分盘) :Differencing

        因为创建是差异磁盘,所以只保存变更的数据,类似于lvm的快照;例如,将操作系统安装在父盘,然后创建差异化磁盘来执行进一步配置,桌面虚拟化使用很多。

KVM支持的虚拟磁盘类型

        raw: 这并非是一种真正的磁盘格式,而是代表虚拟机所使用的原始镜像它并不存储元数据,因此可以作为保证虚拟机兼容性的候选方案。然而,也正因为它不存储元数据,因此不能支持某些高级特性,比如快照和压缩等格式简单,容易转化为其他的格式。需要文件系统的支持才能支持sparse file。

        qcow2:按需进行分配磁盘空间,不管文件系统是否支持;支持快照;支持zlib的磁盘压缩;支持AES的加密。

        vmdk(virtual machine disk):VMware环境当中默认使用的磁盘格式。

        vhd\vhdx(virtual Hard Disk):微软默认采用的文件格式

还有很多磁盘类型,这里就不一一介绍,可以通过下面命令查看KVM所支持的磁盘类型。

[root@kvmserver ~]# qemu-img --help | grep Supported
Supported formats: vvfat vpc vmdk vhdx vdi ssh sheepdog rbd raw host_cdrom host_floppy host_device file qed qcow2 qcow parallels nbd iscsi gluster dmg tftp ftps ftp https http cloop bochs blkverify blkdebug

qemu-img命令

它是QEMU的磁盘管理工具,在qemu-kvm源码编译后就会默认编译好qemu-img这个二进制文件。qemu-img也是QEMU/KVM使用过程中一个比较重要的工具,qemu-img工具的命令行基本用法如下:

qemu-img command [command options]

qemu-img常用功能命令:

命令作用
check检查完整性
create创建镜像
commit提交更改
compare比较
convert转换
info获取信息
map映射
snapshot快照管理
rebase在已有镜像的基础上创建新的镜像
resize调整大小
amend修订镜像格式选项

创建虚拟磁盘,默认是创建raw格式的磁盘

[root@kvmserver ~]# qemu-img create test1.img 1G
Formatting 'test1.img', fmt=raw size=1073741824 
[root@kvmserver ~]# qemu-img info test1.img
image: test1.img
file format: raw					#默认raw格式
virtual size: 1.0G (1073741824 bytes)
disk size: 0						#创建的是sparse模式

创建qcow2格式磁盘

[root@kvmserver ~]# qemu-img create -f qcow2 test2.qcow2 1G
Formatting 'test2.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 lazy_refcounts=off 
[root@kvmserver ~]# qemu-img info test2.qcow2 
image: test2.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

创建qcow2格式磁盘时,可以指定选项,通过-o参数,常用参数主要有:

  1. backing_file 指定后端镜像文件

  2. backing_fmt 设置后端镜像的镜像格式

  3. encryption 设置加密

  4. cluster_size 设置簇大小,取值在512到2M之间,默认是64K

  5. preallocation 预分配模式 (allowed values: off, metadata, falloc,full)

(1)off 缺省策略,既不使用预分配策略

(2)metadata 分配元数据,预分配后的虚拟磁盘仍然属于稀疏模式类型磁盘

(3)full 分配所有磁盘空间并置零,预分配后的虚拟磁盘属于厚盘(非稀疏映像类型)

(4)falloc 分配文件的块并标示它们的状态为未初始化,创建速度快

例如:

[root@kvmserver ~]# qemu-img create -f qcow2 test3.qcow2 1G -o preallocation=full
Formatting 'test3.qcow2', fmt=qcow2 size=1073741824 encryption=off cluster_size=65536 preallocation='full' lazy_refcounts=off 
[root@kvmserver ~]# qemu-img info test3.qcow2
image: test3.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 1.0G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

后备差异虚拟磁盘

VMware中称之为链接克隆,节省空间。

存储与基础镜像(父)磁盘的变化

  1. 基础镜像(父)磁盘不会改变

  2. 差异磁盘隔离变化

  3. 多个差异磁盘可以使用相同的基础镜像(父)磁盘

优点:标准化基础镜像,节省空间

缺点:增加了开销,较差的性能 (尤其是vmware虚拟机中的试验环境,要等待很久才能启动)

首选,需要拥有一个基础虚拟磁盘,可以通过安装一个全新的虚拟机得到,然后将各种使用的基本软件设置好。

一、创建差异虚拟磁盘

vm01.qcow2是父磁盘文件,vm01_ln.qcow2是链接文件名称。

[root@kvmserver ~]# qemu-img create -f qcow2 -o backing_file=/kvm/img/vm01.qcow2 /kvm/img/vm01_ln.qcow2
Formatting '/kvm/img/vm01_ln.qcow2', fmt=qcow2 size=8589934592 backing_file='/kvm/img/vm01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

查看

可以看到我上面没有设置磁盘大小,通过下面查看却定义了8G,而磁盘文件大小只有196K。

[root@kvmserver ~]# qemu-img info /kvm/img/vm01_ln.qcow2
image: /kvm/img/vm01_ln.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: /kvm/img/vm01.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false

然后根据差异磁盘创建虚拟机 (强烈建议通过修改配置文件)如果修改配置文件的话,只需要修改主机名,uuid值,及mac地址即可。

下面两种方式都来一遍吧,先修改配置文件。

[root@kvmserver ~]# cd /etc/libvirt/qemu/
[root@kvmserver qemu]# ls
autostart  myvm01.xml  myvm02_clong.xml  myvm02.xml  networks
[root@kvmserver qemu]# cp myvm01.xml myvm01_ln1.xml
[root@kvmserver qemu]# uuidgen 				#生成一个随机uuid给虚拟机使用
c9274ef3-6b23-4649-badb-b0a726dc1f9a
[root@kvmserver qemu]# vim myvm01_ln1.xml 
#找到下面三列并修改,指定虚拟机的名称、uuid、mac地址
  <name>vm01</name>
  <uuid>c9274ef3-6b23-4649-badb-b0a726dc1f9a</uuid>
  <mac address='52:54:00:58:33:00'/>
[root@kvmserver qemu]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     myvm01                         shut off
 -     myvm02                         shut off
 -     myvm02_clong                   shut off

[root@kvmserver qemu]# virsh define /etc/libvirt/qemu/myvm01_ln1.xml 
Domain vm01 defined from /etc/libvirt/qemu/myvm01_ln1.xml

[root@kvmserver qemu]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 -     myvm01                         shut off
 -     myvm02                         shut off
 -     myvm02_clong                   shut off
 -     vm01                           shut off

最后可以看到vm01主机已经创建出来了,但是能不能开机,能不能正常使用呢?下面来测试一下,先启动虚拟机,等待开机后尝试连接。

[root@kvmserver qemu]# virsh start vm01
Domain vm01 started

[root@kvmserver qemu]# virsh console vm01
myvm01 login: root
Password: 
Last login: Fri Apr 21 17:25:42 on ttyS0
[root@myvm01 ~]# ls

        经过等待,看来不是白等的,我尝试了一些操作,都没问题。链接克隆完成,下面再来一个安装方式克隆,这个就比较耗时间了,因为需要加载配置文件。

二、先创建一个父磁盘

[root@kvmserver ~]# qemu-img create -f qcow2 -o backing_file=/kvm/img/vm01.qcow2 /kvm/img/vm01_ln1.qcow2
Formatting '/kvm/img/vm01_ln1.qcow2', fmt=qcow2 size=8589934592 backing_file='/kvm/img/vm01.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off

创建虚拟机文件,等候加载配置文件,加载完毕登录即可。

[root@kvmserver ~]# virt-install --import -n vm02 -r 1024 --disk /kvm/img/vm01_ln1.qcow2  --nographics

        来查看一下都有哪些虚拟机吧,在宿主机命令行下执行;vm01是通过修改配置文件得到的克隆机,vm02是通过install得到的克隆机,myvm01和myvm02是正常创建的虚拟机,而myvm02_clong是完整克隆的到的虚拟机。

[root@kvmserver ~]# virsh list --all
 Id    Name                           State
----------------------------------------------------
 14    vm01                           running
 15    vm02                           running
 -     myvm01                         shut off
 -     myvm02                         shut off
 -     myvm02_clong                   shut off

总结:两种方式可以使用相同的方式生成多个虚拟机,但是第二种较慢不推荐使用,而第一种只需要修改配置文件,从新定义虚拟机直接登录就可以启动。

磁盘格式转换

语法格式:

convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt][-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]]output_filename

例:转换test1.img原格式为raw修改后格式为qcow2。

[root@kvmserver ~]# qemu-img info test1.img 
image: test1.img
file format: raw
virtual size: 1.0G (1073741824 bytes)
disk size: 0
[root@kvmserver ~]# qemu-img convert -f raw -O qcow2 test1.img test1.qcow2
[root@kvmserver ~]# qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

调整虚拟磁盘大小

语法格式:

resize [-q] filename [+ | -]size

  1. 操作之前一定要做好数据备份

  2. 增加文件大小后,需要在客户机中使用fdisk、parted等分区工具进行相应的操作才能真正让客户机使用到增加后的镜像空间

  3. 缩小镜像之前,要在客户机中保证里面的文件系统有空余空间,否则会数据丢失。

  4. qcow2不支持缩小镜像的操作。

[root@kvmserver ~]# qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 1.0G (1073741824 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false
[root@kvmserver ~]# qemu-img resize test1.qcow2 +1G
Image resized.
[root@kvmserver ~]# qemu-img info test1.qcow2 
image: test1.qcow2
file format: qcow2
virtual size: 2.0G (2147483648 bytes)
disk size: 260K
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: false

管理磁盘快照

磁盘快照

  1. 对磁盘数据进行快照

  2. 主要用于虚拟机备份等场合

内存快照

  1. 对虚拟机的内存/设备信息进行保存

  2. 该机制同时用于休眠恢复、迁移等场景

  3. 主要使用virsh save(qemu migrate to file)实现,只能对运行的虚拟机进行

检查点快照

  1. 同时保存虚拟机的磁盘快照和内存快照

  2. 用于将虚拟机恢复到某个时间点

  3. 可以保证数据的一致性

快照语法格式

snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename

'-a' 切换到某一指定快照点

'-c' 创建一个快照

'-d' 删除一个快照

'-l' 列出指定域的所有快照

创建磁盘快照并查看

[root@kvmserver ~]# qemu-img snapshot -c a1 /kvm/img/vm01.qcow2 
[root@kvmserver ~]# qemu-img snapshot -l /kvm/img/vm01.qcow2 
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1682069915             260M 2023-04-21 05:38:35   00:13:58.698
2         a1                        0 2023-04-21 09:28:08   00:00:00.000

恢复快照

[root@kvmserver ~]# qemu-img snapshot -a a1 /kvm/img/vm01.qcow2 

删除快照并查看

[root@kvmserver ~]# qemu-img snapshot -d 2 /kvm/img/vm01.qcow2 
[root@kvmserver ~]# qemu-img snapshot -l /kvm/img/vm01.qcow2 
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1682069915             260M 2023-04-21 05:38:35   00:13:58.698

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

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

相关文章

TCP协议补充实验

目录 一、理解CLOSE_WAIT状态 二、理解TIME_WAIT状态 解决TIME_WAIT状态引起的bind失败的方法 三、 理解listen的第二个参数 四、SYN洪水 五、TCP、UDP对比 六、优化UDP实现可靠传输&#xff08;面试题&#xff09; 一、理解CLOSE_WAIT状态 当客户端和服务器在进行TCP通…

记录--Vue3+TS(uniapp)手撸一个聊天页面

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 Vue3TS(uniapp)手撸一个聊天页面 前言 最近在自己的小程序中做了一个智能客服&#xff0c;API使用的是云厂商的API&#xff0c;然后聊天页面...嗯&#xff0c;找了一下关于UniApp(vite/ts)版本的好像不…

Linux常用命令——ifconfig命令

在线Linux命令查询工具 ifconfig 配置和显示Linux系统网卡的网络参数 补充说明 ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息&#xff0c;在网卡重启后机器重启后&#xff0c;配置就不存在。要想将上述的配置信息永远的存的电…

如何用Facebook为你的跨境电商店铺进行引流?

对于跨境电商店铺来说&#xff0c;引流客户代表着潜在的商业机会和利润。当更多潜在客户访问你的店铺并下单购买产品时&#xff0c;这将增加你的销售额和利润&#xff0c;并帮助你的品牌影响力不断扩大。 一、Facebook广告付费玩法 1.创建一个Facebook商业页面&#xff1a;首先…

首发 | 人工智能赋能的未来作战构想(上): 海上作战篇

源自&#xff1a;中国指挥与控制学会 ▲图1&#xff1a;报告封面和封底 一、人工智能赋能改变战争形态 ▲图2&#xff1a;以AI赋能万物互联 二、人工智能赋能的海上作战 ▲图3&#xff1a;海上作战要保持持续有效的火力输出 &#xff08;一&#xff09;海上防御作战构想 ▲图4&…

MODBUS协议下,触摸屏与PLC能否实现无线通讯?

想要实现触摸屏与PLC之间的MODBUS无线通讯&#xff0c;就需要一个满足这两个设备通讯接口&#xff0c;并可在MODBUS协议下运行的通讯终端作为媒介&#xff0c;搭建起这两者之间的通讯桥梁。如果是使用威纶通触摸屏作为主站&#xff0c;三菱FX5U PLC作为从站&#xff0c;便可采用…

代码随想录-数组

学习《代码随想录》 理论基础什么是数组&#xff1f; 二分查找左闭右闭左闭右开 移除元素暴力法双指针法 长度最小的子数组暴力法滑动窗口 螺旋矩阵 理论基础 什么是数组&#xff1f; 数组是存储在连续内存空间上的相同类型数据的集合。 二分查找 有两种解法&#xff1a;左闭…

spring6概述

Spring6要求JDK最低版本是JDK17 Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开…

阿里云李钟:弹性计算控制系统团队的提效之路

2023 年 3 月 25 日&#xff0c;“城市领航之夜第一期”活动在上海举行&#xff0c;阿里云弹性计算控制系统技术架构负责人李钟出席了本次活动并带来了《弹性计算控制系统团队提效之路》的主题演讲&#xff0c;为大家详细分享了阿里云弹性计算控制系统团队所面临的挑战、如何通…

计算机毕业论文选题推荐|软件工程|系列五

文章目录 导文题目导文 计算机毕业论文选题推荐|软件工程 (***语言)==使用其他任何编程语言 例如:基于(***语言)门窗账务管理系统的设计与实现 得到:基于JAVA门窗账务管理系统的设计与实现 基于vue门窗账务管理系统的设计与实现 等等 题目 基于(***语言)遥感图像的居民…

言之画: AI绘画平台

【产品介绍】 言之画是出门问问推出的AI绘画平台。支持二次元、蒸汽朋克、插画等 8 种创作风格。用户只需输入文字&#xff0c;「言之画」就能一次性生成 8 张光影逼真、细节丰富的 2K 高分辨率图像。 除了以文生图&#xff0c;它还拥有以图生图、动图生成、个性头像生成等 AI …

MATLAB 之 常用内部函数,运算,字符串和结构数据与单元数据

文章目录 一、常用内部函数1. 常用数学函数2. 矩阵的超越函数2.1 矩阵平方根2.2 矩阵对数2.3 矩阵指数2.4 普通矩阵函数 二、MATLAB 运算1. 算术运算1.1 基本算术运算1.2 点运算 2. 关系运算3. 逻辑运算 三、字符串1. 字符串的表示2. 字符串的操作2.1 字符串的执行2.2 字符串与…

ChatGPT下的自动化工具Auto-GPT、AgentGPT、BabyAGI和GodMode

ChatGPT 对于一个大目标来说&#xff0c;他是不知道怎么一步一步的帮我们构建出来。有了Auto-GPT、AgentGPT、BabyAGI和GodMode 这些自动化工具&#xff0c;我们只需要输入一个大目标&#xff0c;这些自动化工具能够帮我们一步一步轻松实现。 1.Auto-GPT 网址&#xff1a;htt…

C/C++每日一练(20230512) 成绩打印、补齐数组、水仙花数

目录 1. 成绩打印 ※ 2. 按要求补齐数组 &#x1f31f;&#x1f31f;&#x1f31f; 3. 水仙花数 ※ &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 成绩打印 一个班有10个同学&am…

airserver7.2.7最新中文版下载及功能介绍

最近开会打算把手机投屏到自己的Mac上演示用&#xff0c;于是就打算用下听了很久好用但是一值没有使用的AirServer!十分简单的操作就可以完美的投屏到Mac电脑&#xff0c;而且不用像Mac自带的QuickTime用线连接手机!它可以把AirPlay / AirTunes上的音频、视频、照片、幻灯片还有…

母亲节祝福html源码,母亲节祝福html代码,母亲节表白妈妈代码,母亲节祝福网页代码

母亲节祝福html源码&#xff0c;母亲节祝福html代码&#xff0c;母亲节表白妈妈代码&#xff0c;母亲节祝福网页代码 运行截图 核心代码&#xff1a; <!DOCTYPE HTML> <html lang"zh-Hans"> <head><meta charset"utf-8"><meta…

我们选择护眼台灯的标准是什么?护眼台灯的国家标准

小时候在学校&#xff0c;父母跟老师经常强调“眼睛是心灵的窗户”要保护好眼睛&#xff0c;不管是在学校上学还是在家写作业时&#xff0c;都会很突然的听见“头抬高点”、“眼睛离远点”等类似的劝导&#xff0c;刚开始还不以为然&#xff0c;直到视力下降&#xff0c;带上了…

ctf_BUUCTF_web_总结(待更新)

文章目录 SQL注入文件上传漏洞文件包含漏洞php反序列化RCE模板安全问题&#xff08;SSTI&#xff09;XXE代码审计杂七杂八的知识点正则表达式CTF做题总结 SQL注入 [极客大挑战 2019]EasySQL[SUCTF 2019]EasySQL[强网杯 2019]随便注[极客大挑战 2019]BabySQL[BJDCTF2020]Easy MD…

雪浪云算力开发者大赛

1赛题背景 汽车生产工艺复杂&#xff0c;一辆汽车的制造需要完成焊装、涂装、总装三大工艺&#xff0c; 经过焊装车间、涂装车间、总装车间。各车间存在上下游关联关系&#xff0c;每个车间有自己的优化排序目标&#xff0c;需要综合考虑多种复杂的排序规则及工艺约束&#xf…

9.100ASK_V853-PRO开发板支持E907小核开发

0.前言 ​ 100ASK_V853-PRO开发板的V853芯片集成Arm Cortex-A7和RISC-V E907 双CPU&#xff0c;玄铁E907 是一款完全可综合的高端 MCU 处理器。它兼容 RV32IMAC 指令集&#xff0c;提供可观的整型性能提升以及高能效的浮点性能。E907 的主要特性包括&#xff1a;单双精度浮点单…