ubuntu2204安装kvm

ubuntu2204安装kvm

  • 前言
  • 一、检测硬件是否支持
  • 二、安装软件
  • 三、创建/管理虚拟机
    • 1、创建存储池
    • 2、qemu创建镜像
    • 3、xml文件运行虚拟机
      • 1、范文
      • 2、xml文件创建虚机
      • 3、创建虚机
    • 4、克隆虚机
    • 5、创建快照
    • 6、脚本创建
    • VNC连接
  • 四、创建集群
    • 1、安装glusterfs
    • 2、加入集群
      • 删除节点
    • 3、 创建卷
    • 3、kvm挂载目录
    • 图形化创建
    • 五、虚拟机迁移
      • 同一宿主机内迁移
      • 不同宿主机内迁移


前言

##虚拟机开启虚拟化
在这里插入图片描述
VNC下载链接


一、检测硬件是否支持

##非零即可
root@kvm:~# egrep -c ‘(svm|vmx)/proc/cpuinfo  
##检查是否启用虚拟化
root@kvm:~# apt install cpu-checker

root@kvm:~# kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used

二、安装软件

root@kvm:~# apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst virt-manager


root@kvm:~#  systemctl start libvirtd
root@kvm:~#  systemctl enable libvirtd

root@kvm:~# usermod -aG libvirt $USER
root@kvm:~# lsmod | grep kvm
kvm_intel             368640  0
kvm                  1032192  1 kvm_intel

三、创建/管理虚拟机

1、创建存储池

##创建一个存储池来存放虚拟机的磁盘镜像文件
root@kvm:~# mkdir -p /data/kvm/pool


virsh pool-define-as --name kvm_test --type dir --target /data/kvm/pool/

virsh pool-start kvm_test

virsh pool-autostart kvm_test

2、qemu创建镜像

qemu-img create -f qcow2 /data/kvm/qcow/vm_test.qcow2 20G
1. 使用 qcow2 格式创建镜像
qcow2 是 QEMU 推荐的磁盘格式,支持动态扩展、快照和压缩。
qemu-img create -f qcow2 /data/kvm/qcow/vm_test.qcow2 20G
-f qcow2: 指定镜像格式为qcow2。
/data/kvm/qcow/vm_test.qcow2: 镜像文件保存路径及文件名。
20G: 分配给虚拟机的磁盘大小(可根据需求调整)。
2. 使用 raw 格式创建镜像
raw 格式是未压缩的磁盘格式,性能较好,但不支持快照等高级功能。
qemu-img create -f raw /data/kvm/qcow/vm_test.raw 20G

####常见 qemu-img 命令
1. 查看镜像信息
##可以使用 qemu-img info 命令查看镜像文件的详细信息:
qemu-img info /data/kvm/qcow/vm_test.qcow2
2. 转换镜像格式
##将现有镜像转换为另一种格式:
qemu-img convert -f qcow2 -O raw /data/kvm/qcow/source_image.qcow2 /data/kvm/qcow/target_image.raw
-f qcow2: 源镜像格式。
-O raw: 目标镜像格式。
/data/kvm/qcow/source_image.qcow2: 源镜像文件。
/data/kvm/qcow/target_image.raw: 目标镜像文件。
3. 创建包含快照的镜像
##通过创建一个依赖于原始镜像的快照镜像,可以节省磁盘空间:

qemu-img create -f qcow2 -b /path/to/base_image.qcow2 /path/to/snapshot_image.qcow2
-b /path/to/base_image.qcow2: 基础镜像路径。
4. 扩展镜像大小
##如果需要扩大已经创建的镜像,可以使用以下命令:

qemu-img resize /data/kvm/qcow/vm_test.qcow2 +10G
这将把镜像的大小增加10GB。
5. 启动虚拟机
##创建完镜像后,可以使用qemu-system命令启动虚拟机。例如:

qemu-system-x86_64 -hda /data/kvm/qcow/vm_test.qcow2 -m 2G -smp 2 -boot d
-hda: 指定硬盘镜像文件。
-m 2G: 分配2GB内存。
-smp 2: 分配2个虚拟CPU。
-boot d: 指定从光驱(或者ISO镜像)启动。

3、修改qcow文件

##加载 NBD 模块(如果未加载):

modprobe nbd

qemu-nbd --connect=/dev/nbd0 /data/kvm/qcow/vm_test.qcow2 
fdisk -l /dev/nbd0
mount /dev/nbd0 /mnt/

mount -o loop /dev/nbd0 /mnt/

mount -o iso /dev/nbd0 /mnt/
检查文件头和内容
如果 file 命令无法识别文件类型,使用 hexdump 或 xxd 查看文件头部分来识别文件结构:
file -s /dev/nbd0 

hexdump -C /path/to/datafile.data | head


/dev/nbd0: data

parted /dev/nbd0 print
Model: Unknown (unknown)                                                  
Disk /dev/nbd0: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags: 

root@kvm:/data/kvm/vm# sysctl -a | grep overcommit
    vm.nr_overcommit_hugepages = 0
    vm.overcommit_kbytes = 0
    vm.overcommit_memory = 0
    vm.overcommit_ratio = 50

    vm.overcommit_memory = 1

3、xml文件运行虚拟机

1、范文

<domain type='kvm'>
  <!-- 虚拟机名称 -->
  <name>example_vm</name>

  <!-- UUID是虚拟机的唯一标识符 -->
  <uuid>d759a4f4-3f3d-499e-8431-123456789abc</uuid>

  <!-- 内存配置:设置虚拟机的最大和初始内存 -->
  <memory unit='KiB'>8388608</memory> <!-- 8 GB -->
  <currentMemory unit='KiB'>8388608</currentMemory> <!-- 初始内存也是8 GB -->

  <!-- CPU配置 -->
  <vcpu placement='static'>4</vcpu> <!-- 分配4个虚拟CPU -->

  <!-- 操作系统设置 -->
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.11'>hvm</type>
    <boot dev='hd'/> <!-- 从硬盘启动 -->
    <bootmenu enable='yes'/> <!-- 启用启动菜单 -->
  </os>

  <!-- 时钟设置 -->
  <clock offset='utc'>
    <timer name='rtc' tickpolicy='catchup'/>
    <timer name='pit' tickpolicy='delay'/>
    <timer name='hpet' present='no'/>
  </clock>

  <!-- CPU模式和特性 -->
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='2' threads='2'/>
    <!-- 禁用虚拟化功能SVM (AMD) -->
    <feature policy='disable' name='svm'/>
  </cpu>

  <!-- 设备设置 -->
  <devices>
    <!-- 磁盘配置 -->
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/var/lib/libvirt/images/example_vm.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>

    <!-- CD-ROM驱动器 -->
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/var/lib/libvirt/images/example.iso'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </disk>

    <!-- 网络接口配置 -->
    <interface type='network'>
      <mac address='52:54:00:aa:bb:cc'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

    <!-- 图形设备配置 -->
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
      <listen type='address' address='0.0.0.0'/>
    </graphics>

    <!-- 声卡设备 -->
    <sound model='ich9'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x1b' function='0x0'/>
    </sound>

    <!-- 输入设备 -->
    <input type='mouse' bus='ps2'/>
    <input type='keyboard' bus='ps2'/>

    <!-- 显卡设备 -->
    <video>
      <model type='cirrus' vram='16384' heads='1'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>

    <!-- 串口控制台 -->
    <console type='pty'>
      <target type='serial' port='0'/>
    </console>

    <!-- 通用USB设备 -->
    <hub type='usb'/>
  </devices>

  <!-- 特权设置:如果需要,允许KVM虚拟机访问设备 -->
  <features>
    <acpi/> <!-- 启用ACPI电源管理 -->
    <apic/> <!-- 启用APIC -->
    <pae/>  <!-- 启用PAE(物理地址扩展),允许32位系统使用大于4GB的内存 -->
  </features>

  <!-- 启动时自动启动虚拟机 -->
  <on_poweroff>destroy</on_poweroff>  <!-- 电源关闭时销毁虚拟机 -->
  <on_reboot>restart</on_reboot>      <!-- 重启时自动重启虚拟机 -->
  <on_crash>restart</on_crash>        <!-- 崩溃时自动重启虚拟机 -->
</domain>

2、xml文件创建虚机

<domain type='kvm'>
  <name>vm_test</name>  
  <memory unit='KiB'>2097152</memory>  
  <vcpu placement='static'>2</vcpu>  
  <os>
    <type arch='x86_64' machine='pc-i440fx-2.11'>hvm</type>
    <boot dev='cdrom'/>
    <boot dev='hd'/>
  </os>
  <devices>
    <!-- 磁盘配置 -->
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/kvm/qcow/vx_test.qcow2'/>
      <target dev='vda' bus='virtio'/>
    </disk>
x
    <!-- ISO 镜像作为CD-ROM -->
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/data/kvm/image/ubuntu-22.04.4-live-server-amd64.iso'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
    </disk>

    <!-- 网络配置 -->
    <interface type='network'>
      <mac address='52:54:00:aa:bb:cc'/>
      <source network='default'/>
      <model type='virtio'/>
    </interface>

    <!-- VNC 配置 -->
    <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/>
  </devices>
</domain>

qemu-img create -f qcow2 /data/kvm/qcow/vx_test.qcow2 20G
virsh define vx-test.xml 
virsh list --all
virsh start vx_test 
##设置虚拟机开机自启 
virsh autostart  vx_test 
virsh autostart --disable vx_test #取消

3、创建虚机

wget  https://mirrors.ustc.edu.cn/ubuntu-releases/22.04/ubuntu-22.04.4-live-server-amd64.iso

##创建虚拟磁盘文件:该命令创建了一个大小为 20GB 的虚拟磁盘文件,格式为 qcow2,用于后续虚拟机的存储。
qemu-img create -f qcow2 /data/kvm/qcow/image.qcow2 20G

## 创建和安装虚拟机:创建并安装了一个名为 vm_test 的虚拟机,分配了 2GB 内存、2 个虚拟 CPU、默认网络配置,使用 VNC 连接显示图形界面,并从 Ubuntu 22.04 ISO 镜像启动安装系统。
virt-install --virt-type kvm  --name vm_test   --ram 2048   --vcpus 2   --disk path=/data/kvm/qcow/image.qcow2,format=qcow2        --os-variant ubuntu22.04   --network network=default   --graphics vnc,listen=0.0.0.0   --cdrom /data/kvm/image/ubuntu-22.04.4-live-server-amd64.iso --noautoconsole

4、克隆虚机

root@kvm:/data/kvm/clone#   virt-clone -o vm_test -f /data/kvm/clone/vm_test.qcow2  --name vm_test_clone

ERROR    Domain to clone must be shutoff.

Clone 'vm_test_clone' created successfully.

 参数说明:
 -o:指定被克隆虚拟机
 -n:克隆机名称
 -f:指定克隆机文件位置与名称
 
root@kvm:/data/kvm/clone# virsh list --all
 Id   Name            State
--------------------------------
 1    vm_test2        running
 -    vm_test         shut off
 -    vm_test_clone   shut off

## 修改uuid
root@kvm:/data/kvm/clone# virsh edit vm_test_clone 

5、创建快照

root@kvm:/data/kvm/clone# virsh snapshot-create-as vm_test2 vm_test-snap2
Domain snapshot vm_test-snap2 created


root@kvm:/data/kvm/clone# virsh snapshot-list vm_test2 
 Name            Creation Time               State
------------------------------------------------------
 vm_test-snap2   2024-09-12 03:30:54 +0000   running


root@kvm:/data/kvm/clone# virsh snapshot-info vm_test2 vm_test-snap2 
Name:           vm_test-snap2
Domain:         vm_test2
Current:        yes
State:          running
Location:       internal
Parent:         -
Children:       0
Descendants:    0
Metadata:       yes

6、脚本创建

#!/bin/bash

# 需要指定的变量
VM_NAME=$1  # 虚拟机名称
OS_TYPE=$2  # 操作系统类型 (ubuntu, centos, win)
DISK_SIZE=20  # 虚拟机磁盘大小 (GB)
RAM_SIZE=2048  # 虚拟机内存大小 (MB)
VCPUS=2  # 虚拟机CPU核数
CLONE_NAME=$3  # 如果进行克隆的虚拟机名称

# 检查是否提供必要的参数
if [ -z "$VM_NAME" ] || [ -z "$OS_TYPE" ]; then
    echo "Usage: $0 <vm_name> <os_type: ubuntu|centos|win> [clone_name]"
    exit 1
fi

# 设置系统对应的os-variant参数
case $OS_TYPE in
    ubuntu)
        OS_VARIANT="ubuntu20.04"
        ;;
    centos)
        OS_VARIANT="centos8"
        ;;
    win)
        OS_VARIANT="win10"
        ;;
    *)
        echo "Invalid OS type! Choose from ubuntu, centos, win."
        exit 1
        ;;
esac

# 磁盘文件路径
DISK_PATH="/var/lib/libvirt/images/${VM_NAME}.qcow2"

# 镜像文件路径(可根据实际环境修改)
ISO_PATH=""
case $OS_TYPE in
    ubuntu)
        ISO_PATH="/path/to/ubuntu.iso"
        ;;
    centos)
        ISO_PATH="/path/to/centos.iso"
        ;;
    win)
        ISO_PATH="/path/to/windows.iso"
        ;;
esac

# 创建虚拟机磁盘文件
echo "Creating virtual machine disk..."
qemu-img create -f qcow2 $DISK_PATH ${DISK_SIZE}G

# 创建虚拟机
echo "Installing virtual machine..."
virt-install \
  --name $VM_NAME \
  --ram $RAM_SIZE \
  --vcpus $VCPUS \
  --disk path=$DISK_PATH,format=qcow2,size=$DISK_SIZE \
  --os-variant $OS_VARIANT \
  --network network=default \
  --graphics vnc \
  --cdrom $ISO_PATH \
  --noautoconsole

# 检查是否需要克隆虚拟机
if [ ! -z "$CLONE_NAME" ]; then
    echo "Cloning virtual machine..."
    virt-clone --original $VM_NAME --name $CLONE_NAME --file /var/lib/libvirt/images/${CLONE_NAME}.qcow2

    # 生成新的UUID并修改克隆虚拟机的UUID
    NEW_UUID=$(uuidgen)
    echo "Updating UUID for the cloned virtual machine..."
    virsh dumpxml $CLONE_NAME > ${CLONE_NAME}.xml
    sed -i "s/<uuid>.*<\/uuid>/<uuid>${NEW_UUID}<\/uuid>/" ${CLONE_NAME}.xml
    virsh define ${CLONE_NAME}.xml
    rm -f ${CLONE_NAME}.xml
    echo "Cloned VM: $CLONE_NAME with new UUID: $NEW_UUID"
fi

echo "Virtual machine installation completed."

# 创建虚拟机(如Ubuntu)
./virsh-install.sh my_vm ubuntu

# 创建虚拟机并克隆(如CentOS)
./virsh-install.sh my_vm centos my_vm_clone

VNC连接

vnc连接:主机为本机ip。默认端口5900,依次加一
安装好系统后可本机ssh连接。
在这里插入图片描述
在这里插入图片描述

四、创建集群

1、安装glusterfs

##kvm及所有节点hosts文件修改
root@vm2:~# cat /etc/hosts
...
192.168.220.88     vm2
192.168.220.99     vm3


apt install glusterfs-*
glusterfs -V

root@vm3:~# systemctl start glusterd.service 
root@vm3:~# systemctl enable glusterd.service 

2、加入集群

##单节点上执行,添加其他节点到集群
root@vm2:~# gluster peer probe vm3
peer probe: success
##vm2上验证
root@vm2:~# gluster peer status
Number of Peers: 1

Hostname: vm3
Uuid: 67eed80b-be06-4564-ae16-adebfc079709
State: Peer in Cluster (Connected)

删除节点

root@vm2:~# gluster peer detach kvm

3、 创建卷

##所有节点创建目录
mkdir /data
## 直接用根分区做存储卷,需加force
##创建一个名为models的存储卷、2副本
root@vm2:~# gluster volume create gfsv replica 2 vm2:/data vm3:/data force

volume create: gfsv: success: please start the volume to access data
root@vm2:~# gluster volume info models
 
Volume Name: gfsv
Type: Replicate
Volume ID: a6d80c21-deb7-44c7-abf4-e2a70060fa64
Status: Created
Snapshot Count: 0
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: vm2:/data
Brick2: vm3:/data
Options Reconfigured:
cluster.granular-entry-heal: on
storage.fips-mode-rchecksum: on
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
##启用卷
root@vm2:~#  gluster volume start gfsv
##停止删除卷
root@vm2:~#  gluster volume stop  gfsv
root@vm2:~#  gluster volume delete  gfsv
##查看卷状态
root@vm2:~# gluster volume status
Status of volume: models
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick vm2:/data                             54529     0          Y       6158 
Brick vm3:/data                             52302     0          Y       3377 
Self-heal Daemon on localhost               N/A       N/A        Y       6175 
Self-heal Daemon on vm3                     N/A       N/A        Y       3394 
 
Task Status of Volume models
------------------------------------------------------------------------------
There are no active volume tasks
 

3、kvm挂载目录

root@kvm:/data/kvm# mount.glusterfs vm2:models /kvmdata/

root@kvm:/data/kvm# echo "vm2:models /kvmdata/ glusterfs defaults,_netdev 0 0" >> /etc/fstab 
root@kvm:/data/kvm# mount -a

root@kvm:/data/kvm# df -Th | grep gluster
vm2:models                        fuse.glusterfs   57G   18G   37G  33% /kvmdata

root@kvm:/data/kvm# mkdir /kvmdata/{data,iso}

##创建存储池
root@kvm:/data/kvm# virsh pool-define-as --name iso --type dir --target /kvmdata/iso/Pool iso defined

root@kvm:/data/kvm# virsh pool-define-as --name data --type dir --target /kvmdata/data/
Pool data defined

图形化创建

virt-manager

五、虚拟机迁移

同一宿主机内迁移

##查看虚拟机所有磁盘文件
##适用情况:磁盘满或新加数据盘的情况下从/aaa目录迁移到/bbb目录

root@kvm:/data/kvm# virsh domblklist vm_test
 Target   Source
--------------------------------------
 vda      /data/kvm/qcow/image.qcow2
 sda  
##直接迁移镜像:例如
root@kvm:/data/kvm# mv /data/kvm/qcow/image.qcow2 /kvmdata/data/
##停止虚拟机
root@kvm:/data/kvm# virsh shutdown vm_test 
Domain 'vm_test' is being shutdown
##编辑
root@kvm:/data/kvm# virsh edit vm_test
Domain 'vm_test' XML configuration edited.

root@kvm:/data/kvm# virsh start vm_test
Domain 'vm_test' started

root@kvm:/data/kvm# virsh domblklist vm_test
 Target   Source
-------------------------------------
 vda      /kvmdata/data/image.qcow2
 sda      -

不同宿主机内迁移

virsh migrate方法
virsh migrate只能迁移配置文件,磁盘镜像文件还要我们手工完成。

在kvm2上
virsh undefine vm_test    //只删除了配置文件
rm /data/kvm/qcow/image.qcow2 -i

切换到kvm1,88为kvm2
virsh migrate --domain vm_test --desturi qemu+ssh://root@192.168.220.66/system --offline --persistent

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度剖析iOS渲染

iOS App 图形图像渲染的基本流程&#xff1a; 1.CPU&#xff1a;完成对象的创建和销毁、对象属性的调整、布局计算、文本的计算和排版、图片的格式转换和解码、图像的绘制。 2.GPU&#xff1a;GPU拿到CPU计算好的显示内容&#xff0c;完成纹理的渲染&#xff0c; 渲染完成后将渲…

基于YOLO深度学习和百度AI接口的手势识别与控制项目

基于YOLO深度学习和百度AI接口的手势识别与控制项目 项目描述 本项目旨在开发一个手势识别与控制系统&#xff0c;该系统能够通过摄像头捕捉用户的手势&#xff0c;并通过YOLO深度学习模型或调用百度AI接口进行手势识别。识别到的手势可以用来控制计算机界面的操作&#xff0…

使用 Elastic 和 LM Studio 的 Herding Llama 3.1

作者&#xff1a;来自 Elastic Charles Davison, Julian Khalifa 最新的 LM Studio 0.3 更新使 Elastic 的安全 AI Assistant 能够更轻松、更快速地与 LM Studio 托管模型一起运行。在这篇博客中&#xff0c;Elastic 和 LM Studio 团队将向你展示如何在几分钟内开始使用。如果你…

API - String 和 ArrayList

01 API是什么 答&#xff1a;API 全称 Application Programming Interfaace 应用程序编程接口。就是别人写好的一些程序&#xff0c;我们可以使用它们去解决相关问题。 02 为什么要学API 答&#xff1a;不要重复造轮子。Java已经有20多年的历史了&#xff0c;在这20多年里Ja…

图新地球-将地图上大量的地标点批量输出坐标到csv文件【kml转excel】

0.序 有很多用户需要在卫星影像、或者无人机航测影像、倾斜模型上去标记一些地物的位置&#xff08;如电线杆塔、重点单位、下水盖等&#xff09; 标记的位置最终又需要提交坐标文本文件给上级单位或者其他部门使用&#xff0c;甚至需要转为平面直角坐标。 本文的重点是通过of…

【C++】模板进阶:深入解析模板特化

C语法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;命名空间缺省参数与函数重载C相关特性类和对象-上篇类和对象-中篇类和对象-下篇日期类C/C内存管理模板初阶String使用String模拟实现Vector使用及其模拟实现List使用及其模拟实现容器适配器Stack与Queue 本章将…

加密与安全_优雅存储用户密码的最佳实践

文章目录 Pre概述最佳实践避免使用MD5、SHA1等快速哈希算法加盐哈希 &#xff08;不推荐&#xff09;使用BCrypt、Argon2等慢哈希算法 (推荐)BCrypt Code1. 自动生成和嵌入盐2. 哈希结果的格式3. 代价因子 BCrypt特点 防止暴力破解1. 登录失败锁定2. 双因素认证&#xff08;2FA…

Java应用压测工具JMeter

目录 1、下载JMeter 2、配置环境变量 3、配置语音 4、使用 1、下载JMeter Apache JMeter - Apache JMeter™ 千万别下载这个&#xff0c;会报错、 千万别下载这个&#xff0c;会报错、 千万别下载这个&#xff0c;会报错 下载这个&#xff0c;失败多下载几次 2、配置环…

react 高阶组件

概述 高级组件到底能够解决什么问题&#xff1f;举一个特别简单的例子&#xff0c;话说小明负责开发一个 web 应用&#xff0c;应用的结构如下所示&#xff0c;而且这个功能小明已经开发完了。 但是&#xff0c;有一天老板突然提出了一个权限隔离的需求&#xff0c;就是部分模…

自动下载网易云音乐歌手全部歌曲工具

自动下载网易云音乐歌手全部歌曲工具 使用说明 下载 地址 运行 双击运行对应版本文件 开发 安装依赖&#xff0c;运行 yarn yarn start打包 yarn pkg

实习期间git的分枝管理以及最常用的命令

各位找工作实习的友友在工作之前一定要把git的相关知识掌握呀&#xff0c;我实现期间被leader说过关于git规范的相关问题了 目前已更新系列&#xff1a; 当前&#xff1a;:实习期间git的分枝管理以及最常用的命令 Redis高级-----持久化AOF、RDB原理 Redis高级---面试总结5种…

python绘制3d建筑

import matplotlib.pyplot as plt import numpy as np from mpl_toolkits.mplot3d.art3d import Poly3DCollection# 随机生成建筑块数据 def generate_building_blocks(num_blocks, grid_size100, height_range(5, 50), base_size_range(10, 30)):buildings []for _ in range(…

中间件安全(一)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 一&#xff0c;中间件。 1&#xff0c;什么是中间件。 是一类能够为一种或多种应用程序合作互通、资源共享&#xff0c;同时还能够为该应用程序提供相关的服务的软件。中间件是一类…

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK获取相机当前数据吞吐量(Python)

Baumer工业相机堡盟工业相机如何通过NEOAPI SDK里函数来获取相机当前数据吞吐量&#xff08;Python&#xff09; Baumer工业相机Baumer工业相机的数据吞吐量的技术背景CameraExplorer如何查看相机吞吐量信息在NEOAPI SDK里通过函数获取相机接口吞吐量 Baumer工业相机通过NEOAPI…

如何评估土壤功能?瓦赫宁根大学研究团队在土壤学一区TOP期刊最新成果给出答案!

本文首发于“生态学者”微信公众号&#xff01; 土壤健康是农业可持续发展的关键因素之一&#xff0c;而土壤有机碳&#xff08;Soil Organic Carbon, SOC&#xff09;含量是衡量土壤健康最常用的指标。然而&#xff0c;许多土壤功能不仅受SOC总量的影响&#xff0c;还与其质量…

【1】OpenCV虚拟环境搭建

文章目录 OpenCV虚拟环境搭建&#xff08;一&#xff09;安装anaconda&#xff08;二&#xff09;anaconda修改虚拟环境默认位置STEP1&#xff1a;找到C:\Users\你的用户名下的.condarc文件STEP2&#xff1a;修改指定文件夹的权限&#xff08;重点&#xff09; &#xff08;三&…

Java【异常处理】

机制概述 JVM用方法调用栈来跟踪一系列方法的调用过程&#xff0c;位于栈顶的是正在执行的方法&#xff0c;当一个方法抛出异常时&#xff0c;根据代码处理异常。 异常常见类型 检查性异常&#xff1a;最具代表的检查性异常是用户错误或问题引起的异常&#xff0c;这些异常在…

物品识别——基于python语言

目录 1.物品识别 2.模型介绍 3.文件框架 4.代码示例 4.1 camera.py 4.2 interaction.py 4.3 object_detection.py 4.4 main.py 4.5 运行结果 5.总结 1.物品识别 该项目使用Python&#xff0c;OpenCV进行图像捕捉&#xff0c;进行物品识别。我们将使用YOLO&#xff08…

『功能项目』切换职业面板【48】

我们打开上一篇47技能冷却蒙版的项目&#xff0c; 本章要做的事情是切换职业UI面板的功能 首先双击打开Canvas预制体在左上主角面板信息中新建一个button按钮 重命名&#xff08;父物体是按钮Button&#xff0c;子物体Image即可&#xff09; 创建一个Image 设计一下布局 复制三…

CMS之Wordpress建设

下载 https://cn.wordpress.org/ 宝塔安装Wordpress 创建网站 上传文件、并解压、剪切文件到项目根目录 安装 -> 数据库信息 -> 标题信息 http://wordpress.xxxxx.com 登录 http://wordpress.xxxxxxxxx.com/wp-admin/ 1. 主题(模板) wordpress-基本使用-02-在主题…