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

部署 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 --allId    名称                         状态
----------------------------------------------------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 --allId    名称                         状态
----------------------------------------------------2     centos01                       running

7、挂起虚拟机

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

8、恢复虚拟机

[root@localhost ~]# virsh resume centos01
域 centos01 被重新恢复
[root@localhost ~]# virsh list --allId    名称                         状态
----------------------------------------------------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 --allId    名称                         状态
-----------------------------------------------------     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

相关文章:

部署 KVM 虚拟化平台

虚拟化技术的演变过程分为软件模拟、虚拟化层翻译、容器虚拟化三个阶段 1 软件模拟的技术方式 软件模拟是通过软件完全模拟CPU、网卡、芯片组、磁盘等计算机硬件,因为是软件模拟,所以理论上可以模拟任何硬件,甚至不存在的硬件。但是由于是软…...

Juniper PPPOE双线路冗余RPM配置

------------------ 浮动静态路由 set routing-options static route 0.0.0.0/0 next-hop pp0.0 qualified-next-hop pp0.1 preference 10 ----------------- RPM测试的内容,包括从哪个接口发起测试,测试ping等等 #指定探针类型用ICMP请求 #探测的目标地址 #探测间隔 #探测阈…...

原生JS实现视频截图

视频截图效果预览 利用Canvas进行截图 要用原生js实现视频截图,可以利用canvas的绘图功能 ctx.drawImage,只需要获取到视频标签,就可以通过drawImage把视频当前帧图像绘制在canvas画布上。 const video document.querySelector(video) con…...

前端Rust二进制/wasm全平台构建流程简述

前言 开门见山,现代前端 Rust 构建基本分三大类,即 构建 .wasm 、构建 .node 二进制 、构建 swc 插件。 入门详见 《 前端Rust开发WebAssembly与Swc插件快速入门 》 。 对于单独开发某一类的流程,在上述参考文章中已有介绍,但对于…...

加解密算法相关技术详解

文章目录 简介工作机制加解密对称密钥算法非对称密钥算法 数字信封数字签名数字证书技术对比 推荐阅读 简介 随着网络技术的飞速发展,网络安全问题日益重要,加解密技术是网络安全技术中的核心技术,是最常用的安全保密手段。 加密&#xff1…...

Clickhouse学习笔记(13)—— Materialize MySQL引擎

该引擎用于监听 binlog 事件,类似于canal、Maxwell等组件 ClickHouse 20.8.2.3 版本新增加了 MaterializeMySQL 的 database 引擎,该 database 能映射到 MySQL中的某个database ,并自动在ClickHouse中创建对应ReplacingMergeTree。 ClickHous…...

《QT从基础到进阶·二十四》按钮组QButtonGroup,单选框QRadioButton和多选框QCheckBox

1、按钮组QButtonGroup 如果有多个单选按钮,可以统一放进一个按钮组。 图中有三个单选按钮放进了一个QGroupBox,并且设置了水平布局,现在要将这三个单选按钮放进一个按钮组,之前的想法是先把三个按钮加入按钮组,再把按钮组放进QG…...

Ansible--playbook剧本

目录 一、playbook: playbook的组成: palybook的编写注意事项 二、playbook的编写格式(示例) 2.1 编写yaml文件 2.2 定义、引用变量 2.3 指定远程主机sudo切换用户 2.4 when条件判断 2.5 迭代 2.6 Templates 模块 2.7 tags 模…...

MacOS下VMware Fusion配置静态IP

前言 在虚拟机安装系统后,默认是通过DHCP动态分配的IP,这会导致每次重启虚拟机ip都可能会改变,使用起来会有很多不便。 配置静态IP 查看主机网关地址 cat /Library/Preferences/VMware\ Fusion/vmnet8/nat.conf 查看主机DNS,m…...

三、机器学习基础知识:Python常用机器学习库(中文文本分析相关库)

文章目录 1、Jieba库1.1 主要函数1.2 词性标注1.3 关键词提取 2、WordCloud库2.1 常见参数2.2 词云绘制 文本分析是指对文本的表示及其特征的提取,它把从文本中提取出来的特征词进行量化来表示文本信息,经常被应用到文本挖掘以及信息检索的过程当中。 1、…...

Nginx 使用笔记大全(唯一入口)

Linux服务器因为Nginx日志access.log文件过大项目无法访问 项目处于运行状态下无法访问,第一步查看磁盘状态 1、查看磁盘状态 df -h 2、查找100M以上的文件 find / -size 100M |xargs ls -lh 3、删除文件 rm -rf /usr/local/nginx/logs/access.log 4、配置nginx.…...

数据结构-二叉排序树(建立、查找、修改)

二叉排序树概念 二叉排序树是动态查找表的一种,也是常用的表示方法。 其中,它具有如下性质: 1.若它的左子树非空,则其左子树的所有节点的关键值都小于根节点的关键值。 2.若它的右子树非空,则其右子树的所有节点的…...

Linux 性能优化之使用 Tuned 配置优化方案

写在前面 考试整理相关笔记博文内容涉及 Linux tuned 调优工具的简单认知调优配置文件的简单说明,自定义调优方案介绍理解不足小伙伴帮忙指正 对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意&#xff…...

Day02_《MySQL索引与性能优化》

文章目录 一、SQL执行顺序二、索引简介1、关于索引2、索引的类型Btree 索引Btree 索引 三、Explain简介四、Explain 详解1、id2、select_type3、table4、type5、possible_keys6、key7、key_len8、ref9、rows10、Extra11、小案例 五、索引优化1、单表索引优化2、两表索引优化3、…...

(只需三步)Vmvare tools安装教程,实现与windows互通复制粘贴与文件拖拽

首先确保Ubuntu是联网的,如果连不上网可以参考我的这个联网教程,也很简单 (只需三步)虚拟机上vm的ubuntu不能联上网怎么办-CSDN博客 第一步:卸载之前的tools,确保没有残留 sudo apt-get autoremove open-vm-tools 第…...

Android自定义控件:一款多特效的智能loadingView

先上效果图(如果感兴趣请看后面讲解): 1、登录效果展示 2、关注效果展示 1、【画圆角矩形】 画图首先是onDraw方法(我会把圆代码写上,一步一步剖析): 首先在view中定义个属性:priv…...

C语言之初阶指针

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

MongoDB基础知识~

引入MongoDB: 在面对高并发,高效率存储和访问,高扩展性和高可用性等的需求下,我们之前所学习过的关系型数据库(MySql,sql server…)显得有点力不从心,而这些需求在我们的生活中也是随处可见的,例如在社交中…...

41. 缺失的第一个正数

给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3示例 2: 输入:nums [3…...

数据结构—数组栈的实现

前言:各位小伙伴们我们前面已经学习了带头双向循环链表,数据结构中还有一些特殊的线性表,如栈和队列,那么我们今天就来实现数组栈。 目录: 一、 栈的概念 二、 栈的实现 三、 代码测试 栈的概念: 栈的概念…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...

Java求职者面试指南:计算机基础与源码原理深度解析

Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

Linux nano命令的基本使用

参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验

Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...