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

麒麟V10-SP2-x86_64架构系统下通过KVM创建虚拟机及配置虚机的NAT、Bridge两种网络模式全过程

文章目录

    • 一、什么是虚拟化?
      • 虚拟化具有哪些优势
    • 二、常见的虚拟化技术
      • 1、kvm介绍
      • 2、kvm工作原理
      • 3、kvm功能
    • 三、安装kvm并启动第一个kvm机器
      • 1、环境准备
      • 2、安装kvm工具
      • 3、启动并设置开机自启 libvirtd 服务
      • 4、验证 KVM 模块是否加载
      • 5、上传系统镜像到指定目录
      • 6、网络
      • 7、 以NAT网络模式虚拟化机器
        • 7.1、创建存放虚拟机硬盘镜像文件
        • 7.2、使用命令virt-install创建并安装虚拟机
          • 7.2.1、参数解释
        • 7.3、使用vnc工具给虚机安装操作系统
      • 8、补充、通过console通道给虚机安装操作系统
      • 9、以桥接网络模式虚拟化机器
        • 9.1、创建bridge
        • 9.2、修改网卡配置文件
        • 9.3、创建存放虚拟机硬盘镜像文件
        • 9.4、使用命令virt-install创建并安装虚拟机
        • 9.5、通过VNC进行操作系统安装

一、什么是虚拟化?

说通俗一点,自己的windows笔记本为一台物理机,然后你想在你这个windows上运行多个操作系统,
并且每个操作系统之间互不干扰,那么就可以采取虚拟化技术,将你的windows机器虚拟为多个逻辑计算机。这个过程就可以称为为虚拟化

虚拟化具有哪些优势

借助虚拟化可在单一硬件上快速启动和停止不同的操作系统环境,从而为 IT 生态系统带来诸多益处。
1、灵活适变可以将主机分为多个虚拟机,并根据需要为这些虚拟机分配资源。这样,就可以在单个物理硬件上托管多个虚拟机,从而最大限度地利用空间、功耗和维护资源。2、速度虚拟机配置由软件定义,因此可以快速创建、移除、克隆和迁移虚拟机。可以远程控制虚拟机,还可以实现虚拟机的自动化管理。3、兼容性可以利用虚拟机运行未针对的操作系统发布的软件。例如可以在虚拟机中启动旧版操作系统,以便现有软件继续在现代硬件上运行。4、稳定性和安全性每个虚拟机都是独立运行,因此,虚拟机还具有安全方面的优势。虚拟机可能会出现的不稳定性不会影响主机操作系统或同一主机上的其他虚拟机。可以在不影响整个系统的前提下测试新配置。

二、常见的虚拟化技术

vmware vspere: 付费,图形界面,管理简单方便kvm: 免费的,纯命令行,LINUX内核原生集成。KVM、vmware与虚拟化是什么关系?kvm和vmwrae都可看做是一个可以实现虚拟化的软件。[root@ops ~]# lscpu 
Virtualization:        VT-x
Hypervisor vendor:     VMware   #显示虚拟化平台是vmware
Virtualization type:   full
通过vmware workstation打开的的虚拟机是上述这样的,如果是服务器厂商的就会显示是kvm了

1、kvm介绍

	KVM 是 Kernel-based Virtual Machine 的缩写,是一种用于虚拟化的开源硬件虚拟化技术,通过 intel VT-x 和 AMD-V 等 CPU 虚拟化指集的支持,将虚拟化性能提升到接近原生性能。它使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机。提供出色的性能和稳定性,同时还支持许多常见的操作系统和应用程序。KVM 使用了 QEMU (Quick Emulator) 作为其默认的虚拟机监控程序。除此之外,KVM 还支持多种嵌入式和云计算场景,并且得到了广泛的应用

2、kvm工作原理

	KVM 的工作原理是使用 Linux 内核的虚拟化模块,将物理服务器划分为多个虚拟机。具体来说,它在 Linux 内核之上构建一个虚拟化层,该虚拟化层允许多个虚拟机共享物理服务器上的计算资源(如 CPU、内存和磁盘设备)。在此虚拟化层中,每个虚拟机都被视为单独的计算机,每个虚拟机可以运行不同的操作系统和应用程序。 

3、kvm功能

在 KVM 中,虚拟机是一个 Linux 进程,由内核进行调度和管理。利用 KVM 运行的虚拟机可受益于 Linux 的性能特性,
且用户可以利用 Linux 调度程序提供的精细控制。KVM 还提供了与安全、存储、硬件支持和实时迁移相关的功能。1、通过 SELinux 和 sVirt 实现安全边界KVM 利用安全增强型 Linux(SELinux)和安全虚拟化(sVirt)组合来加强虚拟机的安全性和隔离性。SELinux 在虚拟机周围建立安全边界,sVirt 则扩展 SELinux 的功能,使强制访问控制(MAC)安全机制应用于客户虚拟机,并防止手动标记错误。2、存储灵活性KVM 能够使用 Linux 支持的任何存储,包括某些本地磁盘和网络附加存储(NAS)。KVM 还支持共享文件系统,因此虚拟机镜像可以由多个主机共享。3、支持多种硬件架构KVM 可在多种硬件平台上运行。作为红帽企业 Linux 9 的一部分使用时,KVM 支持 64 位 AMD、英特尔和 ARM 架构以及 IBM z13 系统及更高版本。4、实时迁移KVM 支持实时迁移,即能够在物理主机之间移动运行中的虚拟机,而不会出现明显的服务中断。迁移虚拟机的过程中,虚拟机仍保持开机状态,网络连接保持有效状态,且应用可继续运行。KVM 还会保存虚拟机的当前状态并对其进行存储,以便日后进行恢复。

三、安装kvm并启动第一个kvm机器

1、环境准备

本次实验以VMware为主,操作系统选择麒麟V10 SP2 x86_64架构
服务器配置如下:ip: 192.168.56.100  (VMWare NAT连接)内存: 4GCPU: 4磁盘: 20G(系统盘)+20G(数据盘)必须开启虚拟化实现功能:1、在该机器上通过kvm虚拟化出网络模式为NAT、磁盘类型为qcow2的虚机2、在该机器上通过kvm虚拟化出网络模式为、磁盘类型为qcow2的虚机

在这里插入图片描述

2、安装kvm工具

注意事项:1、关闭selinux2、关闭firewalld3、开启内核转发参数net.ipv4.ip_forward = 14、确保系统支持虚拟化技术,可以通过以下命令来检查,只有返回结果大于0表示该系统支持虚拟化:
[root@ops ~]# egrep -c '(vmx|svm)' /proc/cpuinfo
4

通过yum在线安装kvm工具

#通过yum在线安装kvm工具
[root@ops ~]# yum install libvirt* virt-* qemu-kvm* -y
#安装软件说明内容:libvirt    # KVM 虚拟化的守护进程,负责管理 KVM 虚拟机的运行virt-*     # 用于创建和管理虚拟机的强大命令行工具,通过它可以方便地创建、启动、停止虚拟机等qemu-kvm   # 基于 QEMU 的 KVM 虚拟机管理程序,为虚拟机提供硬件模拟和虚拟化支持
#注意:
安装kvm之后会多出两个网卡: virbr0和virbr0-nic

3、启动并设置开机自启 libvirtd 服务

[root@ops ~]# systemctl start libvirtd && systemctl enable libvirtd

4、验证 KVM 模块是否加载

[root@ops ~]# lsmod | grep kvm
kvm_intel             241664  0
kvm                   753664  1 kvm_intel
irqbypass              16384  1 kvm
#如果输出包含kvm和kvm_intel(Intel CPU)或kvm_amd(AMD CPU),则表示KVM模块已成功加载;否则可能需要检查内核配置或重新安装KVM。

5、上传系统镜像到指定目录

[root@ops img]# ls
Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso

6、网络

KVM网络的两种模式

#KVM网络的两种模式:NAT 默认设置,数据包由 NAT 方式通过主机的接口进行传送,可以访问外网,但是无法从外部访问虚拟机网络网桥 这种模式允许虚拟机像一台独立的主机一样拥有网络,外部的机器可以直接访问到虚拟机内部,但需要网卡支持(一般有线网卡都支持)
#查看主机网上相关信息
[root@ops vmIsoDisk]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:58:b0:c5 brd ff:ff:ff:ff:ff:ffinet 192.168.56.100/24 brd 192.168.56.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::20c:29ff:fe58:b0c5/64 scope link valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:42:58:c7:cc brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft forever
4: virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 52:54:00:13:e9:62 brd ff:ff:ff:ff:ff:ffinet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0valid_lft forever preferred_lft forever
5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc fq_codel master virbr0 state DOWN group default qlen 1000link/ether 52:54:00:13:e9:62 brd ff:ff:ff:ff:ff:ff
7: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master virbr0 state UNKNOWN group default qlen 1000link/ether fe:54:00:07:f5:ae brd ff:ff:ff:ff:ff:ffinet6 fe80::fc54:ff:fe07:f5ae/64 scope link valid_lft forever preferred_lft forever
上图可以看到,有4块网卡(不同的设备不同),分别为docker0、virbr0、virbr0-nic、vnet0其中
#注意:
virbr0: KVM安装完后自带的网桥,主要供NAT网络使用。
virbr0-nic: virbr0网桥上的一个子接口,相当与NAT网络里的网关接口。
vnet0: 是虚拟化环境中重要的网络接口,用于实现虚拟机与宿主机、其他虚拟机或外部网络之间的网络通信

7、 以NAT网络模式虚拟化机器

此次演示使用KVM自带的virbr0网桥进行测试,因为自带的virbr0实际就是NAT模式.
7.1、创建存放虚拟机硬盘镜像文件
[root@ops export]# mkdir vmIsoDisk
[root@ops export]# cd vmIsoDisk/
[root@ops vmIsoDisk]# ls#raw磁盘格式(了解即可)
[root@ops vmIsoDisk]# qemu-img create -f raw KySP2.raw 10G
Formatting 'KySP2.raw', fmt=raw size=10737418240#此次演示使用qcow2
[root@ops vmIsoDisk]# qemu-img create -f qcow2 KySP27.qcow2 20G #qcow2磁盘格式
Formatting 'KySP27.qcow2', fmt=qcow2 size=10737418240 cluster_size=65536 lazy_refcounts=off refcount_bits=16[root@ops vmIsoDisk]# ls
KySP2.raw KySP27.qcow2#查看虚拟机硬盘镜像文件信息
[root@ops vmIsoDisk]# qemu-img info KySP2.raw 
image: KySP2.raw
file format: raw        #虚拟机硬盘使用格式
virtual size: 10 GiB (10737418240 bytes) #虚拟机硬盘容量
disk size: 4 KiB[root@ops vmIsoDisk]# qemu-img info KySP27.qcow2 
image: KySP27.qcow2
file format: qcow2
virtual size: 10 GiB (10737418240 bytes)
disk size: 196 KiB
cluster_size: 65536
Format specific information:compat: 1.1lazy refcounts: falserefcount bits: 16corrupt: false
7.2、使用命令virt-install创建并安装虚拟机

#创建raw磁盘类型的虚机(了解即可)

[root@ops vmIsoDisk]#  virt-install --virt-type kvm --os-type=linux --os-variant centos7.0 --name kytest01 --memory 2048 --vcpus 2  --disk  /export/vmIsoDisk/KySP2.raw,format=raw,size=10 --cdrom /export/img/Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso --network network=default --graphics vnc,listen=0.0.0.0 --noautoconsoleStarting install...
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.

#创建qcow2磁盘格式的虚机(此次演示使用qcow2,网络使用kvm自带的virbr0,即NAT网络模式)

[root@ops vmIsoDisk]# virt-install --virt-type kvm --os-type=linux --os-variant centos7.0 --name kytest02 --memory 2048 --vcpus 2  --disk  /export/vmIsoDisk/KySP27.qcow2,format=qcow2,size=10 --cdrom /export/img/Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso --network bridge=virbr0 --graphics vnc,listen=0.0.0.0 --noautoconsole
Starting install...
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.
7.2.1、参数解释
virt-install --virt-type kvm 指定安装的虚拟机类型是kvm--os-type=linux 指定系统的类型是linux--os-variant centos7.0 指定系统的版本是centos7,可以使用osinfo-query os命令查看支持的系统版本--name kytest01 指定虚拟机的名字为kytest01--memory 2048 指定内存为2G--vcpus 2 指定cpu为2颗--disk /export/vmIsoDisk/KySP2.raw 指定磁盘的路径是/export/vmIsoDisk/KySP2.rawformat=raw 指定磁盘的格式,常用的有两种格式,下方有解释size=10 指定磁盘的大小为10G,默认单位为G--cdrom /export/img/Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso 指定光盘镜像的位置#区别之处 是否采用图形化
--network network=default --graphics vnc,listen=0.0.0.0 --noautoconsole 网络使用NAT网络,通过VNC图形界面安装,侦听到0.0.0.0,最后一个选项的意思是运行完当前使命令之后返回终端,而不是一直占用--network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsole 网络使用桥接网络,通过VNC图形界面安装,侦听到0.0.0.0,最后一个选项的意思是运行完当前使命令之后返回终端,而不是一直占用--network bridge=br0  --nographics --console pty,target_type=serial --extra-args 'console=ttyS0,115200n8 serial' #网络使用桥接网络,通过命令行console控制台进行操作系统安装
磁盘格式对比:raw 这种类型的磁盘不支持快照,但是性能好,用的比较少。qcow2 这种类型的磁盘支持快照,性能相对raw差一点,用的比较多。

当创建好虚机后,会默认启动一个5900端口,以此类推
在这里插入图片描述

7.3、使用vnc工具给虚机安装操作系统

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

其余步骤就是跟在VMware中安装虚拟机操作一致,选择最小化安装,不再过多描述
当安装完成并重启后,通过宿主机连接当前kvm虚拟化出来的机器,如下所示
#注意:此时该虚拟的ip是通过DHCP自动分配获取的,因此,改为静态获取

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

至此,NAT网络模式下的KVM虚拟化演示完成,但是只能通过宿主机访问到,其余外部机器会访问不到该虚机

在这里插入图片描述

8、补充、通过console通道给虚机安装操作系统

https://blog.csdn.net/shaock2018/article/details/117511250
https://www.cnblogs.com/caijt/p/11174676.html

9、以桥接网络模式虚拟化机器

9.1、创建bridge
[root@ops vmIsoDisk]# brctl addbr br0[root@ops vmIsoDisk]# brctl addif br0 ens33[root@ops vmIsoDisk]# brctl show br0 
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c2958b0c5    no        ens33[root@ops vmIsoDisk]# brctl stp br0 on[root@ops vmIsoDisk]# brctl show br0 
bridge name    bridge id        STP enabled    interfaces
br0        8000.000c2958b0c5    yes        ens33[root@ops vmIsoDisk]# ifconfig ens33
ens3:  flagS=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500inet 192.168.56.100 netmask 255.255.255.0 broadcast 192.168.56.255ether 00:0c:29:58:b0:c5 txqueuelen 1000 (Ethernet)Rx packets 40959 bytes 13269505(12.6 MiB)RX errors 0 dropped 2298 overruns 0 frame 0TX packets 3618 bytes 369812(361.1 KiB)TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0[root@ops vmIsoDisk]# ifconfig br0
br0: flags=4163<BROADCAST,MULTICAST>  mtu 1500ether 00:0c:29:58:b0:c5  txqueuelen 1000  (Ethernet)RX packets 21128  bytes 1200022 (1.1 MiB)RX errors 0  dropped 0  overruns 0  frame 0TX packets 6270  bytes 46323515 (44.1 MiB)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0[root@ops vmIsoDisk]# ifconfig ens33 0 up
[root@ops vmIsoDisk]# ifconfig br0 up
[root@ops vmIsoDisk]# dhclient br0
9.2、修改网卡配置文件
创建磁盘类型及虚拟化命令跟NAT一致
#桥接模式--手动创建br0网桥
[root@ops vmIsoDisk]# vim /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
IPADDR=192.168.56.100
NETMASK=255.255.255.0
GATEWAY=192.168.56.2
DNS1=8.8.8.8
DNS2=114.114.114.114[root@ops vmIsoDisk]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static  # static是静态IP
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BRIDGE=br0 #添加这个,删除掉之前配置的静态ip#重启网络
[root@ops vmIsoDisk]# systemctl restart network-online.target
[root@ops vmIsoDisk]# systemctl restart NetworkManager#重启 libvirt 服务
[root@ops vmIsoDisk]# systemctl restart libvirtd

在这里插入图片描述

在这里插入图片描述

9.3、创建存放虚拟机硬盘镜像文件
[root@ops vmIsoDisk]# qemu-img create -f qcow2 KySP27.qcow2 20G
Formatting 'KySP27.qcow2', fmt=qcow2 size=21474836480 cluster_size=65536 lazy_refcounts=off refcount_bits=16
9.4、使用命令virt-install创建并安装虚拟机

#注意: 将--network bridge=virbr0替换为--network bridge=br0

[root@ops vmIsoDisk]# virt-install --virt-type kvm --os-type=linux --os-variant centos7.0 --name kytest03 --memory 2048 --vcpus 2  --disk  /export2/vmIsoDisk/KySP27.qcow2,format=qcow2,size=10 --cdrom /export/img/Kylin-Server-10-SP2-Release-Build09-20210524-x86_64.iso --network bridge=br0 --graphics vnc,listen=0.0.0.0 --noautoconsoleStarting install...
Domain installation still in progress. You can reconnect to 
the console to complete the installation process.
9.5、通过VNC进行操作系统安装

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其余步骤就是跟在VMware中安装虚拟机操作一致,选择最小化安装,不再过多描述
当安装完成并重启后,通过xshell连接当前kvm虚拟化出来的机器,如下所示
#注意:1、此时该虚拟的ip是通过DHCP自动分配获取的,因此,改为静态获取2、使用xshell连接该虚机3、验证物理机192.168.56.100是否与虚机网络相通

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

至此,文章开头提到的两种虚拟化方式都已实现

相关文章:

麒麟V10-SP2-x86_64架构系统下通过KVM创建虚拟机及配置虚机的NAT、Bridge两种网络模式全过程

文章目录 一、什么是虚拟化&#xff1f;虚拟化具有哪些优势 二、常见的虚拟化技术1、kvm介绍2、kvm工作原理3、kvm功能 三、安装kvm并启动第一个kvm机器1、环境准备2、安装kvm工具3、启动并设置开机自启 libvirtd 服务4、验证 KVM 模块是否加载5、上传系统镜像到指定目录6、网络…...

三方库总结

一、Glide 目标&#xff1a;熟练掌握各种使用方法&#xff0c;了解其设计&#xff0c;背后原理 如果我设计一个图片显示框架&#xff0c;我会怎么做&#xff1f; 1.加载图片资源-从网络上下载图片资源、从本地加载图片资源 如果是从网络上加载图片&#xff0c;需要用到相关的网…...

用DeepSeek-R1-Distill-data-110k蒸馏中文数据集 微调Qwen2.5-7B-Instruct!

下载模型与数据 模型下载&#xff1a; huggingface&#xff1a; Qwen/Qwen2.5-7B-Instruct HF MirrorWe’re on a journey to advance and democratize artificial intelligence through open source and open science.https://hf-mirror.com/Qwen/Qwen2.5-7B-Instruct 魔搭&a…...

知识图谱的推荐实现方案(Vue)

使用 Vue 实现知识图谱思维导图展示的完整方案&#xff0c;结合主流库和最佳实践&#xff1a; 一、技术选型 组件库特点适用场景MindElixir国产开源、中文文档完善、支持关系线教育类知识图谱GoJS功能强大、商业许可、适合复杂交互企业级应用&#xff08;需付费&#xff09;D3…...

Nessus安装

Nessus&#xff1a;https://pan.quark.cn/s/f5fb09b6d4fb 1.软件安装 点击安装&#xff0c;剩下的下一步即可。 直接下一步安装即可 2.Web端安装 会弹出一个web窗口 开始初始化 创建用户 开始初始化 3.Cracker 会弹一个黑窗口 运行完&#xff0c;回车即可。访问https://loc…...

【大模型基础_毛玉仁】0.概述

更多内容&#xff1a;XiaoJ的知识星球 【大模型基础_毛玉仁】 系列文章参考 系列文章 【大模型基础_毛玉仁】0.概述 【大模型基础_毛玉仁】1.1 基于统计方法的语言模型 更新中。。。。。。 参考 书籍&#xff1a;大模型基础_完整版.pdf Github&#xff1a;https://github.co…...

quillEditor 禁用复制粘贴图片,以及class转style等问题

<template><div><div class"search-term"><el-form :inline"true" :model"searchInfo" class"demo-form-inline"><el-form-item label"案例标题"><el-input v-model"searchInfo.titl…...

C语⾔数据类型和变量

C 语言的数据类型 类型分类&#xff1a; C 语言提供丰富的数据类型&#xff0c;包括字符型&#xff08;char、signed char、unsigned char&#xff09;、整型&#xff08;short、int、long 等多种&#xff0c;且各有 signed 和 unsigned 修饰形式&#xff09; 、浮点型&#x…...

centOS 环境 安装redis方法

一、准备centOS环境 参考文章&#xff1a;Hyper-V 安装CentOS7_代码草率了的博客-CSDN博客 二、redis官网 地址&#xff1a;Download | Redis 演示版本为?redis-5.0.14.tar.gz 三、redis源码编译 登录后创建soft目录 进入目录使用wget下载所需资源包 命令&#xff1a;w…...

【Mac】2025-MacOS系统下常用的开发环境配置

早期版本的一个环境搭建参考 1、brew Mac自带终端运行&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" Installation successful!成功后运行三行命令后更新环境&#xff08;xxx是mac的username&a…...

深入理解动态绑定与多态

动态绑定介绍 Java中的动态绑定&#xff0c;是一种在程序运行时确定方法执行版本的过程。它与多态紧密联系。 在Java中&#xff0c;动态绑定通常发生在以下情况&#xff1a; 方法覆盖&#xff1a;当子类重写父类的一个方法时&#xff0c;调用该方法的行为会根据对象的实际类…...

【数据结构】二叉树总结篇

遍历 递归 递归三部曲&#xff1a; 1.参数和返回值 2.终止条件 3.单层逻辑&#xff08;遍历顺序&#xff09; var preorderTraversal function(root) { // 第一种let res[];const dfsfunction(root){if(rootnull)return ;//先序遍历所以从父节点开始res.push(root.val);//递归…...

Zookeeper 及 基于ZooKeeper实现的分布式锁

1 ZooKeeper 1.1 ZooKeeper 介绍 ZooKeeper是一个开源的分布式协调服务&#xff0c;它的设计目标是将那些复杂且容易出错的分布式一致性服务封装起来&#xff0c;构成一个高效可靠的原语集&#xff0c;并以一系列简单易用的接口提供给用户使用。 原语&#xff1a;操作系统或…...

内嵌踢脚线怎么做能省钱?

家里装修内嵌踢脚线应该怎么做&#xff1f;哪种做法更经济&#xff1f; 先回答内嵌踢脚线应该怎么做&#xff1f; 做内嵌踢脚线有两种办法&#xff0c;简单点来说就是前凸和后挖。 前凸是踢脚线安到原来墙面上&#xff0c;踢脚线是从墙面上凸出来的&#xff0c;想要实现内嵌的效…...

DeepSeek集成到VScode工具,让编程更高效

DeepSeek与VScode的强强联合&#xff0c;为编程效率树立了新标杆。 DeepSeek&#xff0c;一款卓越的代码搜索引擎&#xff0c;以其精准的索引和高速的检索能力&#xff0c;助力开发者在浩瀚的代码海洋中迅速定位关键信息。 集成至VScode后&#xff0c;开发者无需离开熟悉的编辑…...

大模型应用:多轮对话(prompt工程)

概述 在与大型语言模型&#xff08;如ChatGPT&#xff09;交互的过程中&#xff0c;我们常常体验到与智能助手进行连贯多轮对话的便利性。那么&#xff0c;当我们开启一个新的聊天时&#xff0c;系统是如何管理聊天上下文的呢&#xff1f; 一、初始上下文的建立 1. 创建新会…...

洛谷 P1601 A+B Problem(高精)详解c++

我们之前做题碰到的数据范围一般是10^9&#xff0c;多点会达到10^18级别&#xff0c;处理10^9用int就可以存下&#xff0c;10^18次方要用到long long&#xff0c;接着解决加减乘除的问题&#xff0c;但是当数据范围达到了10^10^6的时候&#xff0c;当数据的值特别⼤&#xff0c…...

【云原生】Spring Cloud是什么?Spring Cloud版本介绍

什么是SpringCloud 上一章节介绍了总体的SpringCloud的总体学习章节&#xff0c;因为最近项目刚好需要用到SpringCloud来搭建微服务项目、所以就跟着大家一起来再学习巩固下SpringCloud的相关知识 SpringCloud是基于SpringBoot提供了一套微服务解决方案&#xff0c;包括服务注…...

最节省成本的架构方案:无服务器架构

无服务器架构&#xff08;Serverless Architecture&#xff09;是一种颠覆性的云计算执行模型&#xff0c;它允许开发者专注于编写和部署代码&#xff0c;而无需担心底层服务器基础设施的管理。这种架构以其按需付费、自动伸缩和简化部署等优势&#xff0c;在成本优化方面表现出…...

C++入门续集:

1. 缺省参数&#xff1a; 我们看我们的上图&#xff0c;我们可以看我们的函数Func&#xff0c;我们可以看到我们的函数里面的参数写的是int a 0&#xff1b;这个写法是我们没有见过的&#xff0c;我们之前在C语言里面只见到过说是函数里面会设置参数&#xff0c;但是参数是没有…...

线代[9]|线性代数主要内容及其发展简史(任广千《线性代数的几何意义》的附录1)

文章目录 向量行列式矩阵线性方程组二次型 向量 向量又称为矢量&#xff0c;最初应用与物理学。很多物理量如力、速度、位移以及电场强度、磁感应强度等等都是向量。大约公元前350年前&#xff0c;古希腊著名学者亚里士多德就知道了力可以表示成向量&#xff0c;两个力的组合作…...

C++ Primer 动态内存与智能指针

欢迎阅读我的 【CPrimer】专栏 专栏简介&#xff1a;本专栏主要面向C初学者&#xff0c;解释C的一些基本概念和基础语言特性&#xff0c;涉及C标准库的用法&#xff0c;面向对象特性&#xff0c;泛型特性高级用法。通过使用标准库中定义的抽象设施&#xff0c;使你更加适应高级…...

AI在原型设计中的革命性应用:效率与创新的双重突破

引言 在数字化转型加速的今天&#xff0c;产品开发周期被压缩至前所未有的程度。原型设计作为产品开发的核心环节&#xff0c;其效率和质量直接影响最终产品的市场竞争力。传统原型设计流程依赖人工绘制、反复修改和用户测试&#xff0c;耗时且成本高昂。而人工智能&#xff0…...

网络学习(四)HTTPS中,SSL的单向认证与双向认证

目录 一、什么是SSL&#xff1f;1.1 SSL 的主要功能1.2 SSL 的工作原理1.3 SSL 的核心组件1.4 SSL 的应用场景1.5 SSL 与 TLS 的区别 二、SSL 单向认证、双向认证2.1 SSL 单向认证2.2 SSL 双向认证2.3 总结&#xff1a;SSL 单向认证和双向认证的区别 一、什么是SSL&#xff1f;…...

分类任务和回归任务的区别

分类任务和回归任务是机器学习中两种常见的监督学习任务&#xff0c;尽管它们都属于预测性的分析&#xff0c;但它们的目标和应用场景存在显著的差异。 分类任务 定义&#xff1a;分类任务是指将输入样本映射到一个有限且离散的类别集合中的过程。目标是对数据进行分类&#…...

android接入rocketmq

一 前言 RocketMQ 作为一个功能强大的消息队列系统&#xff0c;不仅支持基本的消息发布与订阅&#xff0c;还提供了顺序消息、延时消息、事务消息等高级功能&#xff0c;适应了复杂的分布式系统需求。其高可用性架构、多副本机制、完善的运维管理工具&#xff0c;以及安全控制…...

V4L2框架基础

一、V4L2视频设备驱动基础 1.V4L2是专门为Linux设备设计的整合视频框架&#xff08;其主要核心在Linux内核&#xff0c;相当于Linux操作系统上层的视频源捕获驱动框架&#xff09;。为上层访问系统底层的视频设备提供一个统一的标准接口。V4L2驱动框架能够支持多种类型&#x…...

【微知】如何通过mlxlink查看Mellanox网卡和光模块相关的信息?( mlxlink -d 01:00.0 -m)

背景 通过mlxlink可以查看Mellanox网卡的一些链路信息和硬件信息&#xff0c;也可以查看所插入的光模块的一些信息。 兄弟篇通过ethtool查看的方法&#xff1a;如何查看Mellanox网卡上的光模块的信息&#xff1f; 命令 mlxlink -d 01:00.0 -mman手册介绍&#xff1a; 如果…...

使用pytorch和opencv根据颜色相似性提取图像

需求&#xff1a;将下图中的花朵提取出来。 代码&#xff1a; import cv2 import torch import numpy as np import timedef get_similar_colors(image, color_list, threshold):# 将图像和颜色列表转换为torch张量device torch.device(cuda if torch.cuda.is_available() el…...

HTML label 标签使用

点击 <label> 标签通常会使与之关联的表单控件获得焦点或被激活。 通过正确使用 <label> 标签&#xff0c;可以使表单更加友好和易于使用&#xff0c;同时提高整体的可访问性。 基本用法 <label> 标签通过 for 属性与 id 为 username 的 <input> 元素…...

SQL注入的分类靶场实践

前言 SQL 注入&#xff08;SQL Injection&#xff09;是一种常见且危险的 Web 安全漏洞&#xff0c;攻击者通过在输入字段中插入恶意 SQL 代码&#xff0c;能够绕过应用程序的验证机制&#xff0c;直接操纵数据库。本文将介绍 SQL 注入的分类&#xff0c;并通过 Pikachu 靶场进…...

用matplotlib构建BI看板:Superset插件开发实战

目录 前言&#xff1a;当经典可视化库遇见BI航母 一、Superset插件架构精要 1.1 核心模块解析 1.2 插件通信机制 二、开发环境准备 2.1 依赖矩阵 三、开发自定义可视化插件 3.1 插件脚手架 3.2 渲染引擎适配 四、Superset深度集成 4.1 控制面板配置 4.2 动态参数传递…...

【Linux】之【Bug】VMware 虚拟机开机 一直卡在黑屏左上角下划线闪烁界面

解决 参考&#xff1a; 解决Ubuntu20.04 开机黑屏光标闪烁进不去系统 Centos根目录100%解决思路 当前界面 ctrlaltf3-f6 暂时进入终端界面 df -h 查看发现根目录 磁盘空间已满 执行命令 查看当前目录占用内存明细 sudo du -h -x --max-depth1清理无用的大内存文件 或者安装…...

【练习】【链表】力扣热题100 19. 删除链表的倒数第 N 个结点

题目 删除链表的倒数第 N 个结点 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5] 示例 2&#xff1a; 输入&#xff1a;head [1], n 1 输出&…...

SQL-labs13-16闯关记录

http://127.0.0.1/sqli-labs/less-13/ 基于POST单引号双注入变形 1&#xff0c;依然是一个登录框&#xff0c;POST型SQL注入 2&#xff0c;挂上burpsuite&#xff0c;然后抓取请求&#xff0c;构造请求判断漏洞类型和闭合条件 admin 发生了报错&#xff0c;根据提示闭合方式是(…...

【Linux】进程信号——信号保存和信号捕捉

文章目录 信号保存信号相关的概念信号是如何保存的呢&#xff1f;有关信号保存的系统调用sigprocmask信号的增删查改查看pending表验证接口 信号捕捉用户态与内核态信号捕捉流程 总结 信号保存 信号相关的概念 信号递达&#xff1a;指 操作系统 将一个信号&#xff08;Signal…...

任务9:交换机基础及配置

CSDN 原创主页&#xff1a;不羁https://blog.csdn.net/2303_76492156?typeblog 一、交换机基础 交换机的概念&#xff1a;交换机是一种网络设备&#xff0c;用于连接多台计算机或网络设备&#xff0c;实现数据包在局域网内的快速交换。交换机基于MAC地址来转发数据包&#x…...

【DFS/回溯算法】2016年蓝桥杯真题之路径之谜详解

目录&#xff1a; 1.题目描述&#xff1a; 输入格式 输出格式 2.题解&#xff1a; 3.详细c代码 1.题目描述&#xff1a; 小明冒充 X 星球的骑士&#xff0c;进入了一个奇怪的城堡。 城堡里边什么都没有&#xff0c;只有方形石头铺成的地面。 假设城堡地面是 nn 个方格。…...

深度学习R8周:RNN实现阿尔兹海默症(pytorch)

&#x1f368; 本文为&#x1f517;365天深度学习训练营中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 数据集包含2149名患者的广泛健康信息&#xff0c;每名患者的ID范围从4751到6900不等。该数据集包括人口统计详细信息、生活方式因素、病史、临床测量、认知和功…...

字节跳动发布 Trae AI IDE!支持 DeepSeek R1 V3,AI 编程新时代来了!

3 月 3 日&#xff0c;字节跳动重磅发布国内首款 AI 原生集成开发环境&#xff08;AI IDE&#xff09;——Trae 国内版&#xff01; Trae 不只是一个传统的 IDE&#xff0c;它深度融合 AI&#xff0c;搭载 doubao-1.5-pro 大模型&#xff0c;同时支持DeepSeek R1 & V3&…...

智能合约安全指南 [特殊字符]️

智能合约安全指南 &#x1f6e1;️ 1. 安全基础 1.1 常见漏洞类型 重入攻击整数溢出权限控制缺陷随机数漏洞前后运行攻击签名重放 1.2 安全开发原则 最小权限原则检查-生效-交互模式状态机安全失败保护机制 2. 重入攻击防护 2.1 基本防护模式 contract ReentrancyGuarde…...

DeepSeek 全套资料pdf合集免费下载(持续更新)

有很多朋友都关注DeepSeek相关使用的教程资料&#xff0c;本站也一直持续分享DeepSeek 学习相关的pdf资料&#xff0c;由于比较零散&#xff0c;这篇文章主要就是做一个汇总&#xff0c;并且持续更新&#xff0c;让大家可以及时获取下载最新的相关DeepSeek的资料。 持续更新地…...

IDEA 接入 Deepseek

在本篇文章中&#xff0c;我们将详细介绍如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek&#xff0c;让你的 AI 编程助手更智能&#xff0c;提高开发效率。 一、前置准备 在开始之前&#xff0c;请确保你已经具备以下条件&#xff1a; 安装了 JetBrains IDEA&…...

将md格式转jupyter并运行

将md格式转jupyter并运行 有时候我们需要将这种文档以学习的形式记笔记到jupyter中&#xff08;任务&#xff09; 但是内容太多了&#xff0c;一个一个粘贴又不方便&#xff0c;怎么办呢&#xff1f; 发现直接粘贴到md中是带格式的&#xff01;&#xff01;&#xff01; 那…...

SOUI基于Zint生成EAN码

EAN码广泛应用与欧洲的零售业。包括EAN-2、EAN-5、EAN-8和EAN-12码。分别编码 2、5、7 或 12 位数字。此外&#xff0c;可以使用 字符将 EAN-2 和 EAN-5 附加符号添加到 EAN-8 和 EAN-13 符号中&#xff0c;就像 UPC 符号一样。 EAN-8校验码计算&#xff1a; 从左往右奇数位的…...

StarRocks-fe工程在Cursor中不能识别为Java项目

SR简介 StarRocks 是一款高性能分析型数据库&#xff0c;支持实时、多维度、高并发的数据分析。本指南旨在解决在使用 VSCode 或 Cursor 开发 StarRocks 后端项目时遇到的模块识别问题。 问题描述 使用 Cursor 或 VSCode 打开 StarRocks 的后端工程 fe 时&#xff0c;spark-…...

AI是否能真正理解人类情感?从语音助手到情感机器人

引言&#xff1a;AI与情感的交集 在过去的几十年里&#xff0c;人工智能&#xff08;AI&#xff09;的发展速度令人惊叹&#xff0c;从简单的语音识别到如今的深度学习和情感计算&#xff0c;AI已经深入到我们生活的方方面面。尤其是在语音助手和情感机器人领域&#xff0c;AI不…...

【Linux】【网络】UDP打洞-->不同子网下的客户端和服务器通信(成功版)

【Linux】【网络】UDP打洞–&#xff1e;不同子网下的客户端和服务器通信&#xff08;成功版&#xff09; 根据上个文章的分析 问题可能出现在代码逻辑上面 我这里重新查找资料怀疑&#xff1a; 1 NAT映射可能需要多次数据包的发送才能建立。 2 NAT映射保存时间太短&#xff…...

【微知】如何查看Mellanox网卡上的光模块的信息?(ethtool -m enp1s0f0 看型号、厂商、生产日期等)

背景 服务器上插入的光模块经常被忽略&#xff0c;往往这里是定位问题最根本的地方。如何通过命令查看&#xff1f; 命令 ethtool提供了-m参数&#xff0c;m是module-info的意思&#xff0c;他是从光模块的eeprom中读取数据。&#xff08;应该是用i2c协议读取的&#xff09;…...

图论基础算法: 二分图的判定(C++)

二分图的基本概念 什么是二分图? 二分图(Bipartite Graph)是指一个图的顶点集可以被分割为两个互不相交的子集 U U U 和 V V V, 并且图中的每一条边都连接 U U U 中的一个顶点和 V V V 中的一个顶点. 换句话说, 二分图中的顶点可以被分成两组, 组内的顶点之间没有边相连…...