KVM(一) qemu-kvm

2023-11-20

前言

KVM即Kernel Virtual Machine,最初是由以色列公司Qumranet开发。2007年2月被导入Linux 2.6.20核心中,成为内核源代码的一部分。2008年9月4日,Redhat收购了Qumranet,至此Redhat拥有了自己的虚拟化解决方案,之后便舍弃Xen开始全面扶持KVM,从RHEL6开始KVM便被默认内置于内核中。本文介绍KVM虚拟化平台部署及管理。

KVM特点

KVM必须在具备Intel VT或AMD-V功能的x86平台上运行。KVM包含一个为处理器提供底层虚拟化,可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。使用一个经过修改的QEMU(qemu-kvm),作为虚拟机上层控制和界面。

由于KVM仅是一个简单的虚拟化模块,所以它的内存管理没有自我实现,需借助于Linux内核实现内存管理。KVM能够使用Linux所支持的任何存储,在驱动程序的实现上,直接借助于Linux内核来驱动任何硬件。在性能上KVM继承了Linux很好的性能和伸缩性,在虚拟化性能方面,已经达到非虚拟化原生环境95%左右的性能(官方数据)。KVM拓展性也非常好,客户机和宿主机都可以支持非常多的CPU数量和非常大的内存,可以过载使用CPU和内存,还可借助KSM技术实现对内存的过量使用,且保证性能依旧非常不错。

xen的工作方式:首先在操作系统上安装xen;(rpm包);装好之后重启宿主机的操作系统,起来之后xen就成为了操作系统,直接运行在物理硬件之上了,将原来宿主机的操作系统,挤下去成为第一个虚拟机(dom0)。将刚挤下去的成为第一个虚拟机(dom0)的当为它的管理接口(管理接口:创建,删除,新建虚拟机)后面创建的虚拟机为dom1;dom2……

KVM的工作方式:KVM是内核模块,一旦装上KVM的内核模块,原来的内核,就变为虚拟化管理平台:Hypervisor ,不用重启就直接可以在虚拟化管理平台上创建虚拟机了。

KVM架构

KVM架构.jpg

KVM的架构非常简单,就是内核的一个模块,用户空间通过qemu模拟硬件提供给虚拟机使用,一个虚拟机就是一个普通的Linux进程,通过对这个进程的管理,就可以完成对虚拟机的管理。

在这里插入图片描述
kvm相关安装包及其作用

qemu-kvm 主要的KVM程序包

python-virtinst 创建虚拟机所需要的命令行工具和程序库

virt-manager GUI虚拟机管理工具

virt-top 虚拟机统计命令

virt-viewer GUI连接程序,连接到已配置好的虚拟机

libvirt C语言工具包,提供libvirt服务

libvirt-client 为虚拟客户机提供的C语言工具包

virt-install 基于libvirt服务的虚拟机创建命令

bridge-utils 创建和管理桥接设备的工具

QUME的主要功能:

处理器模拟器

仿真IO设备

关联模拟的设备至真实设备;

调试器

与模拟器交互的用户接口

qemu:kmv的文本管理工具,包括qemu-kvm、qemu-imgQUME的主要功能:

处理器模拟器

仿真IO设备

关联模拟的设备至真实设备;

调试器

与模拟器交互的用户接口

qemu:kmv的文本管理工具,包括qemu-kvm、qemu-img
快速使用kvm技术:

1 .判断CPU是否支持硬件虚拟化:
grep -i -E ‘(vmx|svm|lm)’ /proc/cpuinfo
vmx:Intel VT-x (inter的CPU出现vmx;lm “64位的操作平台”字样代表支持硬件虚拟化)
svm:AMD AMD-v (AMD的CPU出现svm字样代表支持硬件虚拟化)

yum install qemu-kvm
qemu工具集本身可以支持xen、kvm等,红帽公司为了推广自己公司的kvm,专门把qemu中支持kvm的部分提取出来做成了qemu-kvm包
ln -sv /usr/libexec/qemu-kvm /usr/bin/
但红帽并不推荐用qemu,在虚拟机控制软件他们推广自己研发的libvirt工具集。因此安装qemu-kvm后,qemu-kvm的yum安装路径没有放在环境变量Path默认的路径中,制造使用不便。所以在这里加了软链接,这样使用中不需要全路径了。红帽坏的666啊…
qemu-kvm -help

qemu-img
convert 无损格式转换
resize 更改磁盘大小
info 显示映像文件信息

[root@localhost ~]# qemu-img info cirros-0.3.4-x86_64-disk.img 
image: cirros-0.3.4-x86_64-disk.img
file format: qcow2
virtual size: 39M (41126400 bytes)
disk size: 13M
cluster_size: 65536
Format specific information:
compat: 0.10

运行第一个虚拟镜像

[root@localhost seabios]# qemu-kvm -m 128 -smp 1 -name testcirros -hda ~/cirros-0.3.4-x86_64-disk.img
could not load PC BIOS 'bios-256k.bin'

使用 find / -name bios-256k.bin 我发现,bios-256k.bin是一个软连接文件,链接的是上层目录中,seabiso目录下的bios-256k.bin,但是seabios目录下并没有bios-256k.bin这个文件,这可能是redhat搞的鬼,就像qemu-kvm本身并不在PATH环境变量中一样,所以,我复制了seabios目录下的bios.bin 为bios-256k.bin,这样下来,qemu-kvm就可以启动了,我们可以再加上–nographic选项不使用图形化启动!太黑了!

也可以使用-cpu选项,指定模拟的cpu类型

-cpu model:设定CPU类型,如coreduo、qemu64、host等 qemu-kvm -cpu ?
      	     # qemu-kvm -m 128 -cpu core2duo(host) -smp 1 -name testcirros -hda ~/cirros-0.3.4-x86_64-disk.img

再次执行,通过

[root@localhost seabios]# qemu-kvm -m 128 -smp 1 -name testcirros -hda ~/cirros-0.3.4-x86_64-disk.img
VNC server running on `::1:5900'

使用VNC,且只监听在本机,为了安全。。。
安装tigervnc

[root@localhost ~]yum install tigervnc -y
[root@localhost ~]# rpm -ql tigervnc
/usr/bin/vncviewer
/usr/share/applications/vncviewer.desktop
/usr/share/doc/tigervnc-1.8.0
/usr/share/doc/tigervnc-1.8.0/README.txt

使用vncviewer连接

[root@localhost ~]# vncviewer :5900

在这里插入图片描述
用户名密码都在,直接登录
使用以下命令可切换到管理员

sudo su -

ctrl+alt+2切换到监控平台
help 可以看到众多命令
info 命令可以显示信息
在这里插入图片描述
可实现很多管理功能

第一个虚拟机启动完成
当前的虚拟机相当于在CentOS主机上的一个进程,可以用ps aux查看

root      21595  1.8  3.7 810220 107688 pts/0   Sl+  03:15   0:18 qemu-kvm -m 128 -smp 1 -name testcirros -hda /root/cirros-0.3.4-x86_64-disk.img

关闭虚拟机,发送关机信号

kill 21595 真机
halt 或 poweroff 虚拟机内部输入命令

使用复杂一些的启动设置如下

qemu-kvm -m 128 -name test -smp 1 -drive file=~/cirros-0.3.4-x86_64-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 

指定了虚拟磁盘接口类型、介质类型、cache为回写、磁盘文件格式为qcow2

fdisk -l
Disk /dev/vda 变成了虚拟磁盘,不再是sda

ls /sys/bus 看总线类型,出现了virtio

ls /sys/bus/virtio/devices
virtio0

在这里插入图片描述

从头创建一个虚拟机
建立一个磁盘映像文件,winxp和centos各一个

[root@localhost ~]# qemu-img create -f qcow2 /images/kvm/winxp.qcow2 -o size=10G,preallocation=metadata
Formatting '/images/kvm/winxp.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off 

[root@localhost ~]# qemu-img create -f qcow2 /images/kvm/centos7.qcow2 -o size=10G,preallocation=metadata
Formatting '/images/kvm/centos7.qcow2', fmt=qcow2 size=10737418240 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off

开始创建虚拟机,并安装系统

qemu-kvm -m 1024 -name centos7 -smp 1 -cpu host -drive file=/images/kvm/centos7.qcow2,if=virtio,media=disk,cache=writeback,format=qcow2 -drive file=~/CentOS-7-x86_64-Minimal-1810.iso,media=cdrom -boot order=dc,once=d
VNC server running on `::1:5900'

调用VNC
在这里插入图片描述
安装完成后启动

 qemu-kvm -m 1024 -name centos7 -smp 1 -cpu host -drive file=/images/kvm/centos7.qcow2,if=virtio,media=disk,cache=writeback,format=qcow2 -drive

在这里插入图片描述
成功了!

可以在当前的界面中运行虚拟机 -nographic

qemu-kvm -m 128 -name test -smp 1 -drive file=~/cirros-0.3.4-x86_64-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2  -nographic

网络选项:
-net nic 定义net frontend
-net user
-net tap 定义net backend
script=:启动脚本
downscript=:停止脚本;
桥设备
bridge-utils.x86.64
modinfo bridge

				[root@localhost ~]# rpm -ql bridge-utils
					/usr/sbin/brctl
					/usr/share/doc/bridge-utils-1.5
					/usr/share/doc/bridge-utils-1.5/AUTHORS
					/usr/share/doc/bridge-utils-1.5/COPYING
					/usr/share/doc/bridge-utils-1.5/FAQ
					/usr/share/doc/bridge-utils-1.5/HOWTO
					/usr/share/man/man8/brctl.8.gz
					brctl -h

创建桥设备

[root@localhost ~]# brctl addbr br0 
[root@localhost ~]# ifconfig -a
br0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
				        inet 192.168.11.73  netmask 255.255.255.0  broadcast 192.168.11.255
				        ether 06:17:e5:1a:5e:f7  txqueuelen 1000  (Ethernet)
				        RX packets 0  bytes 0 (0.0 B)
				        RX errors 0  dropped 0  overruns 0  frame 0
				        TX packets 0  bytes 0 (0.0 B)
				        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@localhost ~]# brctl stp br0 off
[root@localhost ~]# brctl show
			bridge name     bridge id               STP enabled     interfaces
			br0             8000.000000000000       no
			virbr0          8000.5254005abc25       yes             virbr0-nic
[root@localhost ~]# brctl delbr br0

激活br0

[root@localhost ~]# ip link set dev br0 down
[root@localhost ~]# ip link set dev br0 up
[root@localhost ~]# ip link set dev br0 down
[root@localhost ~]# ifconfig br0 up

查看本机支持的网卡类别

[root@localhost ~]# qemu-kvm -net nic,model=?
			qemu: Supported NIC models: ne2k_pci,i82551,i82557b,i82559er,rtl8139,e1000,pcnet,virtio

添加两块网卡启动虚拟机,必须要有启动脚本(/etc/qemu-ifup),通过脚本网卡挂接到桥上

[root@localhost ~]# qemu-kvm -m 128 -name test -smp 1 -drive file=~/cirros-0.3.4-x86_64-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 -nographic -net nic,model=virtio -net tap,ifname=vif0.0 -net nic -net tap,ifname=vif0.1 

因为没有启动脚本,报错:

[root@localhost ~]# qemu-kvm -m 128 -name test -smp 1 -drive file=~/cirros-0.3.4-x86_64-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 -nographic -net nic,model=virtio -net tap,ifname=vif0.0 
/etc/qemu-ifup: could not launch network script
qemu-kvm: -net tap,name=vif0.0: Device 'tap' could not be initialized

qemu-ifup脚本 vif0.0会传递为$1

			#!/bin/bash
			#
			bridge=br0

			if [ -n "$1" ]; then
				ip link set $1 up
				sleep 1
				brctl addif $bridge $1
				[ $? -eq 0 ] && exit 0 || exit 1
			else 
				echo "Error: no interface specified."
			exit 1
			fi

qemu-ifdown脚本

			#!/bin/bash
			#
			bridge=br0

			if [ -n "$1" ]; then
				brctl delif $bridge $1
				ip link set $1 down
				exit 0
			
			else 
				echo "Error: no interface specified."
				exit 1
			fi

加上脚本运行,放在默认位置,不用只script也是可以的

[root@localhost ~]# qemu-kvm -m 128 -name test -smp 1 -drive file=~/cirros-0.3.4-x86_64-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 -nographic -net nic,model=e1000 -net tap,ifname=vif0.0,script=/etc/qemu-ifup

运行虚拟机后,给虚拟机配置ip

#ifconfig eth0 192.168.11.81/24

启动多个虚拟机默认MAC地址相同,因此需要指定mac=52:54:00:12:34:57;52:54:00固定,默认值是52:54:00:12:34:56

[root@localhost ~]# qemu-kvm -m 128 -name test -smp 1 -drive file=~/cirros-0.3.4-x86_64-disk.img,if=virtio,media=disk,cache=writeback,format=qcow2 -nographic -net nic,model=e1000,macaddr=52:54:00:12:34:57 -net tap,ifname=vif0.0,script=/etc/qemu-ifup

pxe启动虚拟机安装

qemu-img create /images/kvm/centos.img -o size 120G,preallocation=metadata -f qcow2
qemu-kvm -m 512 -name centos -smp 2  -drive file=/images/kvm/centos.img,if=virtio,media=disk,cache=writeback,format=qcow2 -net nic,macaddr=52:54:00:55:32:19 -net tap,ifname=br0,model=virtio,script=/etc/qemu-ifup -boot order=nc,once=n --nographic

启动已经建好的虚拟机

[root@localhost lib64]# qemu-kvm -m 1024 -name centos7.81 -smp 2 -cpu host -drive file=/images/kvm/centos7-81.img,if=virtio,media=disk,cache=writeback,format=qcow2 -net nic,model=virtio,macaddr=52:54:00:12:34:81,model=virtio -net tap,ifname=vif0.0

openstack、kvm、qemu-kvm、libvirt、xen的关系

KVM是最底层的hypervisor,它是用来模拟CPU的运行,它缺少了对network和周边I/O的支持,所以我们是没法直接用它的。QEMU-KVM就是一个完整的模拟器,它是建基于KVM上面的,它提供了完整的网络和I/O支持. Openstack不会直接控制qemu-kvm,它会用一个叫libvit的库去间接控制qemu-lvm, libvirt提供了夸VM平台的功能,它可以控制除了QEMU的模拟器,包括vmware, virtualbox xen等等。所以为了openstack的夸VM性,所以openstack只会用libvirt而不直接用qemu-kvm。libvirt还提供了一些高级的功能,例如pool/vol管理。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KVM(一) qemu-kvm 的相关文章

  • 面向对象之反射

    目录 反射 优点 实战案例 案例 使用内置函数改造 反射内建函数注意事项 实例方法绑定和非绑定的区别 动态增加属性方法的区别 反射 其实它的核心本质其实就是利用字符串的形式去对象 模块 中操作 查找 获取 删除 添加 成员 一种基于字符串的
  • 【Android -- 开源库】表格 SmartTable 的基本使用

    介绍 1 功能 快速配置自动生成表格 自动计算表格宽高 表格列标题组合 表格固定左序列 顶部序列 第一行 列标题 统计行 自动统计 排序 自定义统计规则 表格图文 序列号 列标题格式化 表格各组成背景 文字 网格 padding等配置 表格
  • C++中的RTTI

    文章目录 dynamic cast运算符 指针类型的dynamic cast 引用类型的dynamic cast typeid运算符 使用RTTI type info类 参考资料 RTTI Runtime Type Information
  • 计算机专业2021考研分数线,2021研究生国家分数线是多少

    2021年考研国家线公布 再看看外语国家线最高的是文学类a类地区53 b类地区50分 每年虽然英语线不高 但是很多学生还是折在英语上 可惜啊 2021考研国家线 国家线公布干什么 一 做出选择 考研本身就是一个选拔性的考试 有人考上 自然也
  • 《时代》评出100位AI领域最具影响力人物,黄仁勋、马斯克、萨姆·奥特曼在列...

    编辑 腾讯科技 郝博阳 郭晓静 翻译 金鹿 在过去的一个世纪里 时代 杂志的封面反映了塑造社会的力量 今年也是如此 生成式人工智能 Generative AI 无疑是今年最受关注的重塑社会的力量 我现在看到的创新水平比我一生中见过的要强几个
  • gRPC的C++编译及简单使用

    grpc的编译及简单使用 1 grpc相关参考文档 grpc 主页 https grpc io grpc 文档 https grpc io docs grpc 简介 https grpc io docs what is grpc intro
  • loadrunner入门教程(1)--概述

    文章目录 1 loadrunner介绍 2 特性 2 1 轻松创建虚拟用户 2 2 创建真实的负载 2 3 定位性能问题 3 工作原理 3 1 VuGen发生器 3 2 控制器 Controller 3 3 分析器 Analysis 4 工
  • 大数据开发:Hive DDL操作入门

    Hive针对于数据管理操作 提供了类SQL语言HQL 在Hadoop生态当中 Hive定位为数据仓库工具 对于数据的各种操作 也就是使用HQL来完成 而HQL查询 可以分为DDL和DML两个部分来掌握 今天的大数据开发学习分享 我们就先来讲
  • 【Java8】Guava——Preconditions

    Preconditions Precondition 是先决条件的意思 也叫前置条件 可以人为是使函数正常执行的参数需要满足的条件 Preconditions 这个静态工厂中 Guava 为我们提供了一系列的静态方法 用于帮助我们在函数执行
  • 50+ 可以帮助提高前端开发效率的 ChatGPT Prompts

    大厂技术 高级前端 Node进阶 点击上方 程序员成长指北 关注公众号 回复1 加入高级Node交流群 如果你已经厌倦了繁琐重复的编码日常 想要提升自己的效率 那你可是来对地方了 借助 ChatGPT 的强大能力 你可以简化你的工作流程 减
  • 数据结构与算法-列表(双向链表)设计及其排序算法

    0 概述 本文主要涵盖列表 双向链表 的设计及其排序算法的总结 列表是一种典型的动态存储结构 其中的数据 分散为一系列称作节点 node 的单位 节点之间通过指针相互索引和访问 为了引入新节点或删除原有节点 只需在局部调整少量相关节点之间的
  • VUE项目获取url中的参数

    获取url参数有两种情况 情况一 内部页面之间互相传值 这里先讲情况一 因为同一项目内互相传值比较简单 假如要从A页面跳转到B页面 并传值 就要在A页面这么写 this router push name B query Id this tI
  • webpack5配置解析

    webpack 配置文件 webpack config js entry output loader plugins mode webpack 命令即可打包 entry entry 入口起点 1 string gt src index js
  • 智能家居地址

    http blog yeelink net p 509
  • 神经网络在分类问题中的应用(反向传播算法)

    目录 1 W初始值的设定 2 反向传播算法 反向传播的实例 在其他的一些算法中对于分类问题易出现项数过多 过度拟合的情况 所以这里用一个新的方法来神经网络来解决问题 神经网络可以很好的适用特征空间n很大的情况 用图像来做一些名词解释 在图像
  • 《剑指offer》系列---2

    1 求斐波那契数列的第N项 这个题目很简单 讲递归的书上都是用这个来讲的 但是面试的时候 如果你写个递归 那估计会让人失望的 因为递归的效率真是一个问题 你可以测试一下 输入50 基本上得到结果的时间 够你去喝杯茶了 include
  • 端口开放,ubuntu开放指定端口 包括TCP UDP

    netstat nupl UDP类型的端口 netstat ntpl TCP类型的端口 a 表示所有 n 表示不查询dns t 表示tcp协议 u 表示udp协议 p 表示查询占用的程序 l 表示查询正在监听的程序 在ubuntu下面开放端
  • Echarts出现图表被压缩到很窄的情况的解决方法

    图表被压缩到很窄 可能是因为JSs执行太快 CSS来不及渲染 导致canvas只有默认的宽度 可以使用setTimeout 延迟加载JS
  • SpringSecurity+vue实现前后端分离实现登录注册退出

    前提 需要有springSecurity mybatis plus vue redis等知识 对springSecurity执行流程有点了解 需要代码可评论获取 首先先创建vue项目 创建好之后 下载axios element ui 将其目
  • Sqlilabs Less-26

    判断是单引号字符注入 id 1 当接下来进行操作时会发现很多被注释掉了 查看源码黑名单过滤了很多 or and 空格等等 function blacklist id id preg replace or i id strip out OR

随机推荐

  • 【无标题】记录一次external在vue项目的配置

    module exports publicPath chainWebpack config gt if process env NODE ENV production config plugin webpack bundle analyze
  • 在windows系统下使用IDEA对kafka源码进行编译环境搭建以及配置

    目录 一 前期准备工作 step1 安装JDK1 8 step2 安装zookeeper单机版 step3 安装Gradle 5 4 step4 安装scala 2 11 12 二 将kafka源代码部署到编辑器IDEA并测试 step1
  • java中map的使用,及底层源码

    java util Map public interface Map
  • python运行不显示结果图示_pycharm运行和调试不显示结果的解决方法

    刚在虚拟机里面安装了pycharm 配置 setting 完后 新建一个py文件 键入 hello world 竟然没有结果 虽然运行成功 pycharm太不友好了吧 然后开始找问题 1 有人说是文件名的问题 这个可能有 但是我没有改 我觉
  • CAD 4种反应器

    CAD中4种反应器 按照执行的先后顺序分别为 文档反应器 编辑器反应器 数据库反应器 文档反应器当用户输入命令和命令结束之时 文档反应器函数documentLockModeChanged XXXXX const char pGlobalCm
  • Linux中设置开机启动脚本(fedora)

    rc是runlevel control directory的缩写 大多数的Linux 发行版本中 启动脚本都被放在 etc rc d init d 这些脚本被ln 命令来连接到 etc rc d rcn d 目录 这里的n 就是运行级0 6
  • AES加密及解密

    public class AesUtil static Security addProvider new BouncyCastleProvider private static final String ALGORITHM AES ECB
  • tensorflow运行报错解决方法

    1 ImportError DLL load failed 找不到指定的模块 解决方法 把TensorFlow卸载了重新安装 可能是因为版本不对应的问题 在anaconda里面删除TensorFlow库 再重新安装回去 2 keras报错
  • 旧电脑再利用:完整版 Chrome OS 安装指南

    很多人家里应该都有用了好几年 配置略微有些老旧的笔记本或台式电脑 如果不考虑二手变卖 为它们安装更加轻量的操作系统其实也是一个不错的旧物利用技巧 此前我曾经为大家介绍过在普通 PC 安装 Fyde OS 的方法 虽然无论是 Fyde OS
  • 联想E540笔记本电脑拆键盘、换键盘

    我的联想ThinkPad E540键盘坏了几个按键 按下去没有反应 在京东第三方买了一个新的原装键盘 自己把它给换上去 下图中 几个涂红色的按键是坏的 编程的时候特别不方便 第一步 在电脑背面卸掉几个螺丝 因为键盘上也有螺丝 刚开始我卸的螺
  • 分享16个Python接单平台,做私活他不香吗?(附100个爬虫源码)

    一 python爬虫是可以做副业的 主要是爬取网站 小程序或者APP的数据 对数据进行分析与处理 或者直接向客户提供爬虫程序与技术支持 当初学会Python那会儿 有朋友来介绍我去接私活 是为一家公司做网站 那一单我赚了3 5K 从那之后逐
  • 零基础学python-1.2 什么是idle

    下面是摘自百度百科 IDLE是开发python程序的基本IDE 集成开发环境 具备基本的IDE的功能 是非商业Python开发的不错的选择 当安装好python以后 IDLE就自动安装好了 不需要另外去找 同时 使用Eclipse这个强大的
  • ❤ 高德地图报错 AMap.ElasticMarker is not a constructor

    高德地图报错 AMap ElasticMarker is not a constructor 原因 未定义高德的插件 解决 出现这个报错可以添加 AMap plugin AMap Geocoder function tip 出现 xxx i
  • Git clone 时 出现SSL certificate problem error

    出现这个问题的原因是本地默认开启了SSL认证 但是在本地找不到SSL证书 解决办法就是关掉 SLL认证 git clone 时加上参数 no ssl check 完整的命令应该是 git clone no ssl check https g
  • 从XSS Payload学习浏览器解码

    从XSS Payload学习浏览器解码 HTML解析 URL解析 JavaScript解析 案例解析 总结 作为一个浏览器在解析一篇HTML文档时主要有三个处理过程 每个解析器负责解码和解析HTML文档中它所对应的部分 下面我将按照解码顺序
  • SpringBoot使用Swagger3出现Unable to infer base url.This is common when using dynamic servlet

    在使用SpringBoot中配置Swagger3的时候 出现 Unable to infer base url This is common when using dynamic servlet registration or when t
  • UDP协议以及代理服务器

    UDP协议 面向非连接的协议 指在正式通信前不必与对方先建立连接 不管对方状态就直接发送 对方是否可以接受这些内容 该协议则无法控制 适用于 一次性只传输少量数据 对可靠性要求不高的应用环境 UDP和TCP对比 TCP 可靠 传输大小无限制
  • 调制方式性能比较--BER,频带效率的极限

    文章目录 1 BER性能 1 1AWGN的QPSK 1 2常用的误比特率公式 2 频带效率 2 1香农定理 2 2两个重要的区域 2 3对于各个信号 1 BER性能 1 1AWGN的QPSK AWGN信道中无符号间干扰的QPSK的BER经常
  • Jmeter(十) - 从入门到精通 - JMeter逻辑控制器 - 中篇(详解教程)

    1 简介 Jmeter官网对逻辑控制器的解释是 Logic Controllers determine the order in which Samplers are processed 意思是说 逻辑控制器可以控制采样器 samplers
  • KVM(一) qemu-kvm

    前言 KVM即Kernel Virtual Machine 最初是由以色列公司Qumranet开发 2007年2月被导入Linux 2 6 20核心中 成为内核源代码的一部分 2008年9月4日 Redhat收购了Qumranet 至此Re