部署 KVM 虚拟化平台

虚拟化技术的演变过程分为软件模拟、虚拟化层翻译、容器虚拟化三个阶段

1 软件模拟的技术方式

软件模拟是通过软件完全模拟CPU、网卡、芯片组、磁盘等计算机硬件,因为是软件模拟,所以理论上可以模拟任何硬件,甚至不存在的硬件。但是由于是软件模拟硬件,效率低,典型产品有 Bochs、QEMU。

2 虚拟化层翻译

X86平台指令集划分为4个特权模式:ring0、Ring1、Ring2、Ring3 操作系统工作在 Ring0 级别,应用程序使用Ring3,驱动程序使用 Ring1和 Ring2。

①完全虚拟化

X86在虚拟化方面的一个难点就是如何将虚拟机越级的指令使用进行隔离。这种方式称为全虚拟化,典型应用 VMware。
多数的虚拟化采用虚拟机管理程序Hypervisor
Hypervisor是一个软件层或者子系统(也称为VMM–Virtual Machine Monitor)
允许多种 OS 在相同的物理 OS 中运行;控制硬件并向 GuestOS 提供访问底层硬件的途径向 GuestOS 提供虚拟化的硬件

  • 类型一:裸金属型(直接安装在硬件设备)
    裸金属型虚拟化是一种在物理硬件上直接安装虚拟化软件的方式。在这种模式下,虚拟化软件(也称为hypervisor或虚拟机监控器)直接运行在物理硬件上,而不需要操作系统的支持。这意味着虚拟机可以直接访问底层硬件资源,如处理器、内存和存储设备,从而提供接近原生性能的虚拟化体验。
    裸金属型虚拟化适用于需要最高性能和隔离性的场景,如高性能计算、大规模数据库和云计算等。由于没有操作系统的干扰,裸金属型虚拟化可以提供更高的性能和更好的资源利用率。
  • 类型二:宿主型(安装的有OS的设备上)
    宿主型虚拟化是一种在已安装操作系统的设备上运行虚拟化软件的方式。在这种模式下,虚拟化软件作为应用程序运行在宿主操作系统之上,称为宿主操作系统。虚拟机则作为这个宿主操作系统的进程运行,并通过宿主操作系统提供的接口来访问硬件资源。
    宿主型虚拟化相对于裸金属型虚拟化来说更加灵活,因为它可以在常见的操作系统上运行,如Windows、Linux等。它也可以利用宿主操作系统的设备驱动程序来提供虚拟化的硬件支持,从而简化了虚拟机的管理和配置。
  • 裸金属型虚拟化适用于需要高性能和隔离性的场景,而宿主型虚拟化更加灵活且易于管理。选择哪种虚拟化方式取决于具体的应用需求和硬件环境。

“OS"指的是操作系统(Operating System),它是一种软件,负责管理计算机的硬件和软件资源,并提供各种服务和功能给应用程序使用。常见的操作系统包括Windows、macOS和Linux等。
而"GuestOS"指的是在虚拟化环境中运行的虚拟机的操作系统。虚拟机是一种软件实体,它在物理计算机上模拟出一个完整的计算机系统,包括处理器、内存、硬盘等。GuestOS是在虚拟机中安装和运行的操作系统,可以是任意支持虚拟化技术的操作系统,例如Windows、Linux等。
在虚拟化技术中,物理计算机上的"Host OS”(宿主操作系统)负责管理物理硬件,并提供虚拟化的功能。它允许多个不同的GuestOS同时运行在同一台物理计算机上,每个GuestOS都被隔离在自己的虚拟机中,互相之间相互独立并且不能直接访问宿主操作系统或其他GuestOS。
通过虚拟化技术,Host OS向GuestOS提供了对底层硬件的访问,并将其虚拟化,使得GuestOS可以以为自己独占使用了底层硬件资源,从而实现了运行多个操作系统的能力。这种虚拟化的硬件通常称为"虚拟化的硬件"(virtualized hardware)。

②半虚拟化

对虚拟机的操作系统内核进行改造,使虚拟机自己对特殊指令进行更改,然后和虚拟化层一起配合工作,改造的虚拟机虽然使用上有限制,配置比较麻烦,但是这种方式效率非常高,也称为半虚拟化
对CPU指令进行改造.
x86 CPU环
核心指令直接调用运行Ring 0
应用程序运行调用Ring 3
Intel推出了硬件的方案,对CPU指令进行改造,即VT-x.增加了两种操作模式

③硬件辅助虚拟化

Intel-VT和AMD-V创建了一个新的Ring -1单独给Hypervisor使用
GuestOS可以直接使用Ring 0而无需修改
主流例如:KVM VM.ESXi Xen-3.0

3 容器虚拟化

容器虚拟化的原理时基于CGroups、Namespace等技术将进程隔离,每个进程就像一台单独的虚拟机一样,有自己被隔离出来的资源,也有自己的根目录,独立的进程编号,被隔离的内存空间。典型应用DOCKER

常见的虚拟化产品

  • RedHat KVM
    虚拟化方式:完全虚拟化
    架构:寄居架构(linux内核);祼金属架构RHEV-H

  • VmWare ESX
    虚拟化方式:完全虚拟化
    架构:裸金属架构

  • Citrix XenServer
    虚拟化方式:半虚拟化(linux安装linux);全虚拟化(linux安装windows),硬件辅助虚拟化

  • Microsoft Hyper-V
    虚拟化方式:半虚拟化
    架构:裸金属架构Hyper-V Server;寄居架构 Windows 2008

  • DOCKER

KVM 概述

KVM(Kernel-based Virtual Machine)是一种基于Linux内核的虚拟化技术,能够将Linux作为虚拟机监视器(VMM),实现对硬件资源的虚拟化。

广义的 KVM 实际上包含两部分,一部分是基于 Linux 内核支持的 KVM 内核模块,另一部分就是经过简化和修改的 Qemu。

QEMU是一种通用的开源计算机仿真器和虚拟器。QEMU共有两种操作模式

  • 全系统仿真:能够在任意支持的架构上为任何机器运行一个完整的操作系统
  • 用户模式仿真:能够在任意支持的架构上为另一个Linux/BSD运行程序

具体来说,当作为机器仿真器使用时,QEMU可以通过动态代码翻译机制(dynamic translation)在不同的机器上仿真任意一台机器(例如ARM),并执行不同于主机架构的代码。同时由于动态代码翻译机制,它也能够实现不错的性能。

而当QEMU用作虚拟器时,QEMU的优点在于其实纯软件实现的虚拟化模拟器,几乎可以模拟任何硬件设备,但是也正因为QEMU是纯软件实现的,因此所有指令都需要QEMU转手,因此会严重的降低性能。而可行的办法是通过配合KVM或者Xen来进行加速,目前肯定是以KVM为主。

KVM 是硬件辅助的虚拟化技术,主要负责 比较繁琐的 CPU 和内存虚拟化,而 QEMU 则负责 I/O 虚拟化,两者合作各自发挥自身的优势,相得益彰。

KVM 工作原理

用户模式的 Qemu 利用接口 libkvm 通过 ioctl 系统调用进入内核模式。

KVM Driver 为虚拟机创建虚拟 CPU 和虚拟内存,然后执行VMLAUNCH 指令进入客户模式,装载 Guest OS 并运行。

Guest OS 运行过程中如果发生中断或者影子缺页等异常,将暂停 Guest OS的运行并保存当前上下文退出到内核模式来处理这些异常。

内核模式处理这些异常时如果不需要 I/O 则处理完成后重新进入客户模式。

如果需要 I/O 则进入到用户模式,由 Qemu 来处理 I/O,处理完成后进入内核模式,再进入客户模式,

案例实施:Linux 安装虚拟机(图形化)

YUM 安装 KVM

在 CentOS 的系统光盘镜像中,已经提供了安装 KVM 所需软件。通过部署基于光盘镜像的本地 YUM 源,直接使用 YUM 安装所需软件即可,安装 KVM 所需软件具体包含以下几个:

yum groupinstall -y "GNOME Desktop"	//安装 GNOME 桌面环境
yum -y install qemu-kvm	//KVM 模块
yum -y install qemu-kvm-tools	//KVM 调试工具,可不安装
yum -y install virt-install	//构建虚拟机的命令行工具
yum -y install qemu-img	//qemu 组件,创建磁盘、启动虚拟机等
yum -y install bridge-utils	//网络支持工具
yum -y install libvirt	//虚拟机管理工具
yum -y install virt-manager	//图形界面管理虚拟机
yum -y install virt-viewer	//显示虚拟机的控制台

重启系统后,查看 CPU 是否支持虚拟化。

对于 Intel 的服务器可以通过以下命令查看,只要有输出就说明 CPU 支持虚拟化;

# cat /proc/cpuinfo | grep vmx

在这里插入图片描述

AMD 服务器可用 cat /proc/cpuinfo | grep smv 命令查看

开启 libvirtd 服务

安装完成后还需要开启 libvirtd 服务,以开启相关支持。

# systemctl start libvirtd
# systemctl enable libvirtd

配置桥接网络

NAT 方式是 kvm 安装后的默认方式。它支持主机与虚拟机的互访,同时也支持虚拟机访问互联网,但不支持外界访问虚拟机。

建立 br0 网卡

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-ens33 ifcfg-br0
[root@localhost network-scripts]# vim ifcfg-br0
TYPE="Bridge"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="br0"
DEVICE="br0"
ONBOOT="yes"
IPADDR=192.168.27.145
NETMASK=255.255.255.0
GATEWAY=192.168.27.2
DNS1=192.168.27.2

桥接物理网卡 ens33

[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=none
NM_CONTROLLED=no
ONBOOT=yes
DEVICE=ens33
BRIDGE=br0

重启网络

# systemctl restart network

在这里插入图片描述

测试能否连接外网

在这里插入图片描述

创建KVM存储池

启动 virt-manager

# virt-manager

创建存储池–存放虚拟硬盘

双击 QUMU,选择 “存储" 选项卡,如图新建存储池,设置存储目录为/home/KVMimg

在这里插入图片描述

在这里插入图片描述

创建存储池–存放镜像文件

以同样的方式创建一个镜像存储池,存放目录为/home/KVMISO

同时上传 ISO 镜像文件,以便后面安装虚拟机(可以使用 MX 或者 Xshell 等工具上传)
在这里插入图片描述

创建存储卷

点击刚才创建好的 bdqn 存储池,点击加号新建存储卷,设置最大容量和分配容量

在这里插入图片描述

创建虚拟机

返回到主界面,右键单击,选择”新建“

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

选择虚拟机存放的位置

在这里插入图片描述

在点击完成后就自动开始安装,后面的操作和安装 Linux 没有区别

在这里插入图片描述

在这里插入图片描述

案例:使用 KVM 命令集管理虚拟机

1、查看命令帮助

[root@localhost  ~]# virsh -h

2、查看KVM的配置文件存放目录(centos01是虚拟机系统实例的配置文件)

[root@localhost ~]# ls /etc/libvirt/qemu
centos01.xml  networks

3、查看虚拟机状态

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     centos01                       running

4、虚拟机关机与开机

首先需要确认acpid服务安装并运行

[root@localhost ~]# virsh shutdown centos01
域 centos01 被关闭
[root@localhost ~]# virsh start centos01
域 centos01 已开始

5、强制实例系统关闭电源

[root@localhost ~]# virsh destroy centos01

6、通过配置文件启动虚拟机系统实例

[root@localhost ~]# virsh create /etc/libvirt/qemu/centos01.xml
域 centos01 被创建(从 /etc/libvirt/qemu/centos01.xml)
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     centos01                       running

7、挂起虚拟机

[root@localhost ~]# virsh suspend centos01
域 centos01 被挂起
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     centos01                       暂停

8、恢复虚拟机

[root@localhost ~]# virsh resume centos01
域 centos01 被重新恢复
[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 2     centos01                       running

9、配置虚拟机实例伴随宿主机自动启动

[root@localhost ~]# virsh autostart centos01
域 centos01标记为自动开始

上述命令创建/etc/libvirt/qemu/autostart/目录,目录内容为开机自动启动的系统

[root@localhost ~]# ls /etc/libvirt/qemu/autostart/
centos01.xml

[root@localhost ~]# virsh autostart centos01 --disable
域 centos01取消标记为自动开始

10、导出虚拟机配置

[root@localhost ~]# virsh dumpxml centos01 > /etc/libvirt/qemu/centos02.xml

11、虚拟机的删除与添加

删除虚拟机:

[root@localhost ~]# virsh shutdown centos01
域 centos01 被关闭
[root@localhost ~]# virsh undefine centos01
域 centos01 已经被取消定义

查看删除结果,centos01的配置文件被删除,但是磁盘文件不会删除

[root@localhost ~]# ls /etc/libvirt/qemu
autostart centos02.xml networks

通过virsh list --all查看不到centos01的信息,说明虚拟机被删除

[root@localhost ~]# virsh list --all
Id 名称 状态
----------------------------------------------------

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

[root@localhost ~]# mv /etc/libvirt/qemu/centos02.xml
/etc/libvirt/qemu/centos01.xml
[root@localhost ~]# virsh define /etc/libvirt/qemu/centos01.xml
定义域 centos01(从 /etc/libvirt/qemu/centos01.xml)

查看虚拟机信息

[root@localhost ~]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     centos01                       关闭

12、修改虚拟机配置信息(用来修改系统内存大小、磁盘文件等信息)

直接通过vim命令修改
[root@localhost ~]# vim /etc/libvirt/qemu/centos01.xml

通过virsh命令修改
[root@localhost ~]# virsh edit centos01

13、虚拟机的其他管理(在宿主机上)

# virsh start centos01     # 虚拟机开启(启动):
# virsh reboot centos01    # 虚拟机重新启动
# virsh shutdown centos01  # 虚拟机关机
# virsh destroy centos01   # 强制关机(强制断电)
# virsh suspend centos01   # 暂停(挂起)KVM 虚拟机
# virsh resume centos01    # 恢复被挂起的 KVM 虚拟机
# virsh undefine centos01  # 该方法只删除配置文件,磁盘文件未删除
# virsh autostart centos01 # 随物理机启动而启动(开机启动)
# virsh autostart --disable centos01 # 取消标记为自动开始(取消开机启动)

KVM 命令安装虚拟机

创建客户机所需要的磁盘

[root@localhost ~]# mkdir /home/KVMimg
[root@localhost ~]# qemu-img create -f raw /home/KVMimg/centos02.raw 10G
Formatting '/home/KVMimg/centos02.raw', fmt=raw size=10737418240
qemu-img 主要用来创建虚拟客户机所需的磁盘
create表示创建
-f raw 表示创建一个格式为 raw 的磁盘
/home/KVMimg/centos02.raw 10G 表示创建的磁盘名称及磁盘文件
10G表示该磁盘可用大小

安装虚拟客户机

[root@localhost ~]# virt-install --virt-type=kvm --name=centos02 --vcpus=1 --memory=1024 --location=/home/KVMISO/CentOS-7-x86_64-DVD-1810.iso --disk path=/home/KVMimg/centos7-1.qcow2,size=10,format=qcow2  --network bridge=br0 --graphics none --extra-args='console=ttyS0' --force
--virt-type=kvm 虚拟机类型
--name=centos02 虚拟客户机名称
--vcpus=1 给虚拟客户机分配的虚拟CPU数量
--memory=1024 内存大小
-location=/home/KVMimg/CentOS-7-x86_64-DVD-1810.iso 指定客户机安装镜像文件
路径
--disk path=/home/KVMimg/centos02.raw,size=10,format=raw 客户端磁盘的位置及
格式
--network bridge=br0 客户端网卡配置(机器默认会有virbr0,这里的br0为上一章节
中配置过的)
--graphics none 不用图像配置界面
--extra-args='console=ttyS0' 表示使用console ttys0进行管理
--force
注意:.iso镜像文件一定放到/home 或者根目录重新创建目录,不然会因为权限报错,无法创建虚拟机。

KVM文件管理

通过文件管理可以直接查看、修改、复制虚拟机的内部文件。例如,当系统因为配置问题无法启动时,可以直接修改虚拟机的文件。虚拟机磁盘文件有raw与qcow2两种格式,KVM虚拟机默认使用raw格式,raw格式性能最好、速度最快,其缺点是不支持一些新的功能,如镜像、zlib磁盘压缩、AES加密等。针对两种格式的文件有不同的工具可用选择。这里介绍本地YUM安装 libguestfs-tools 后产生的命令行工具(这个工具可以直接读取qcow2格式的磁盘文件,因此需要将raw格式的磁盘文件转换成qcow2的格式).

虚拟机的克隆

# virsh shutdown centos02
# virt-clone -o centos02 -n centos03 -f /home/KVMimg/centos03.qcow2

-o  要克隆的原虚拟机名字
-n  克隆后新虚拟机的名字
-f  新虚拟机磁盘镜像文件的存储位置

虚拟机快照

# virsh list --all //列出所有虚拟机
# virsh shutdown centos01  //关闭centos01虚拟机
# virsh snapshot-create-as centos01 centos01-s1  //为虚拟机centos01创建快照centos01-s1
# virsh snapshot-list centos01 //列出虚拟机test1的所有快照
# virsh snapshot-info centos01 centos01-s1 //查看快照的详细信息
# virsh snapshot-delete centos01 centos01-s1 //删除虚拟机centos01的快照centos01-s1

// 恢复快照
# virsh shutdown centos01
# virsh snapshot-revert centos01 centos01-s1
# virsh start centos01

web管理端

安装基础依赖

yum -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install git python-pip libvirt-python libxml2-python python-websockify supervisor nginx
yum install apt install -y python3-pip
yum install -y gcc make autoconf automake git python3-pip python3-requests python3-mock gettext pkgconf xsltproc python3-dev pep8 pyflakes python3-yaml
yum install -y systemd logrotate python3-psutil python3-ldap python3-lxml python3-websockify python3-jsonschema openssl nginx python3-cherrypy3 python3-cheetah python3-pampy python-m2crypto gettext python3-openssl

启动服务

systemctl start nginx
systemctl enable nginx
systemctl start wokd
systemctl enable wokd

浏览器访问 https://192.168.27.145:8001/login.html

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

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

相关文章

Changes to Captions: An Attentive Network forRemote Sensing Change Captioning

字幕的变化:一个用于遥感变化字幕的关注网络 IEEE Transactions on Image Processing Shizhen Chang, Pedram Ghamisi 2023 摘要:近年来,高级研究集中在使用自然语言处理(NLP)技术对遥感图像进行直接学习和分析。准…

如何应对招聘中的职业性格测评?

很多同学听说要做性格测试,第一反应是如何让自己的性格让HR看起来更好....没办法为了顺利入职,咱不能老实作答,因为性格测评搞不好是真刷人的,刷人的(无视你的专业能力和笔试成绩)..... 可是....很多性格测…

C++标准模板(STL)- 类型支持 (受支持操作,检查类型是否拥有未被弃置的析构函数)

类型特性 类型特性定义一个编译时基于模板的结构&#xff0c;以查询或修改类型的属性。 试图特化定义于 <type_traits> 头文件的模板导致未定义行为&#xff0c;除了 std::common_type 可依照其所描述特化。 定义于<type_traits>头文件的模板可以用不完整类型实例…

ARPG----C++学习记录04 Section8 角色类,移动

角色类输入 新建一个角色C&#xff0c;继承建立蓝图,和Pawn一样&#xff0c;绑定输入移动和相机. 在构造函数中添加这段代码也能实现。打开UsePawnControlRotation就可以让人物不跟随鼠标旋转 得到旋转后的向前向量 使用旋转矩阵 想要前进方向和旋转的方向对应。获取当前控制…

Linux可以投屏到电视吗?用网页浏览器就能投屏到电视!

Linux系统的电脑如果要投屏到安卓电视屏幕上&#xff0c;可以使用投屏工具AirDroid Cast的网页版和TV版一起实现。 首先&#xff0c;在Linux系统的电脑里用chrome浏览器或edge浏览器打开webcast.airdroid.com。这就是AirDroid Cast的网页版。你可以看到中间白色框框的右上角有个…

简单地聊一聊Spring Boot的构架

本文由葡萄城技术团队发布。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 本文小编将详细解析Spring Boot框架&#xff0c;并通过代码举例说明每个层的作用。我们将深入探讨Spring Boot的…

GraphQL 与 REST 双重赋能:Hasura 帮你给数据库添加接口 | 开源日报 No.75

hasura/graphql-engine Stars: 30.3k License: Apache-2.0 Hasura GraphQL Engine 是一个开源产品&#xff0c;通过为您的数据提供 GraphQL 或 REST API 以及内置授权来加速 API 开发。它具有以下主要功能和核心优势&#xff1a; 内建强大查询&#xff1a;支持过滤、分页、模…

Cnyunwei

运维管理系统&#xff1a;监控系统 Cnyunwei Centos 6 封装 Cacti、Nagios、Centreon&#xff08;中英文自己切换&#xff09;、Check_MK、Nconf英文版本全部采用与国外官方同步的最新版本&#xff0c;会发布32位和64位两个版本。 安装很简单&#xff0c;直接回车即可全自动安…

如何在TS中使用JS库

在 TypeScript 中使用 JavaScript 库&#xff0c;几种常用的方法。 直接使用&#xff1a;如果 JavaScript 库不提供 TypeScript 类型定义文件&#xff08;.d.ts&#xff09;&#xff0c;您可以直接在 TypeScript 代码中使用该库。您可以通过在 TypeScript 代码的开头添加 //ts-…

模拟接口数据之使用Fetch方法实现

文章目录 前言一、package.json配置mock执行脚本二、封装接口&#xff0c;区分走ajax还是fetch三、创建mock目录&#xff0c;及相关接口文件四、定义接口五、使用mock数据使用模拟数据优化fetch返回数据 六、不使用模拟数据七、对比其他需要使用依赖相关配置如有启发&#xff0…

HTML字符实体

从注释汲取知识&#xff0c;由代码熟悉用法&#xff0c;所以直接看代码吧&#xff01;&#x1f447;&#x1f447;&#x1f447; <body><!-- 空格 --><!-- 三个空格&#xff0c;实际只显示一个 --><div>我 嘎嘎嘎</div><!-- 用字符实体代替…

C++引用 引用做函数参数

一.引用的定义和语法 // 给a取别名为b int &b a; // 修改b的值&#xff0c;a的值也会被修改&#xff0c;因为他们都指向同一个内存空间 b 20; 二.引用的注意事项 1.引用必须初始化如 int&b; 是错误的&#xff0c;因为没有初始化。 2.引用在初始化后&#xff0c;不…

聚观早报 |滴滴发布Q3财报;小鹏G9连续销量排行第一

【聚观365】11月14日消息 滴滴发布Q3财报 小鹏G9连续销量排行第一 XREAL双11实现7倍增长 真我GT5 Pro真机图 2024年智能手机AI功能竞争激烈 滴滴发布Q3财报 滴滴在其官网发布2023年三季度业绩报告。报告显示&#xff0c;三季度滴滴实现总收入514亿元&#xff0c;同比增长…

Command Injection

Command Injection "Command Injection"(命令注入)&#xff0c;其目标是通过一个应用程序在主机操作系统上执行任意命令。当一个应用程序将用户提供的数据&#xff08;如表单、cookies、HTTP头等&#xff09;传递给系统shell时&#xff0c;就可能发生命令注入攻击。在…

分享几个艺术生活小站点

今天分享几个艺术生活小站点&#xff01; 小叽News游戏资源分享 网址&#xff1a;https://steamzg.com/ 欢迎来到这个充满活力的游戏站点&#xff0c;这里汇集了各种类型的游戏&#xff0c;让你一次性尽享各种游戏的乐趣。这里是游戏爱好者的天堂&#xff0c;每款游戏都配有详…

2.3 Windows驱动开发:内核字符串转换方法

在内核编程中字符串有两种格式ANSI_STRING与UNICODE_STRING&#xff0c;这两种格式是微软推出的安全版本的字符串结构体&#xff0c;也是微软推荐使用的格式&#xff0c;通常情况下ANSI_STRING代表的类型是char *也就是ANSI多字节模式的字符串&#xff0c;而UNICODE_STRING则代…

C语言之初阶指针

一、指针&#xff1a; 其实按照我的理解&#xff0c;当我们写c语言程序的时候&#xff0c;创建的变量&#xff0c;数组等都要在内存上开辟空间。而每一个内存都有一个唯一的编号&#xff0c;这个编号也被称为地址编号&#xff0c;就相当于&#xff0c;编号地址指针。 二、指针…

2023金三银四常见Loadrunner面试题总结,附带答案

以下的loadrunner的面试题都是在面试过程中总结出来比较常见的面试题&#xff0c;现在分享给大家&#xff0c;希望可以帮助你们&#xff01; Q1、LoadRunner的工作原理是什么? Q2、LoadRunner分哪三部分? Q3、LoadRunner进行测试的流程? Q4、什么是并发?在lordrunner中&…

2.4 Windows驱动开发:内核字符串拷贝与比较

在上一篇文章《内核字符串转换方法》中简单介绍了内核是如何使用字符串以及字符串之间的转换方法&#xff0c;本章将继续探索字符串的拷贝与比较&#xff0c;与应用层不同内核字符串拷贝与比较也需要使用内核专用的API函数&#xff0c;字符串的拷贝往往伴随有内核内存分配&…

xss学习笔记

跨站脚本攻击 掌握XSS 的原理 掌握XSS 的场景 掌握XSS 的危害 掌握XSS 漏洞验证 掌握XSS 的分类跨站脚本攻击 漏洞概述 ​ 跨站点脚本&#xff08;Cross Site Scripting&#xff0c; XSS&#xff09;是指客户端代码注入攻击&#xff0c;攻击者可以在合法网站或Web 应用程…
最新文章