ARM架构服务器安装部署KVM虚拟化环境

一、查看内核是否支持KVM虚拟化

针对ARM架构服务器,若/dev/kvm 和 /sys/module/kvm任意一个不存在,都说明内核不支持KVM虚拟化

[root@localhost ~]# ls -l /dev/kvm
crw-rw----+ 1 root kvm 10, 232 May  6 09:18 /dev/kvm
 
[root@localhost ~]# ls /sys/module/kvm
parameters  uevent

扩展说明:
针对X86服务器,查看是否支持KVM虚拟化的命令如下:

#若是intel cpu,命令执行结果是vmx;若是amd cpu,命令执行结果是svm;
[root@localhost ~]# egrep -o 'vmx|svm' /proc/cpuinfo

二、关闭核心防护和防火墙

[root@localhost ~]# sed -i 's/enforcing/disabled/' /etc/selinux/config 
[root@localhost network-scripts]# getenforce
Enforcing

[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# systemctl disable iptables

三、配置网桥br0和静态IP

  • 使用ifconfig命令查看当前处于UP状态并且处于RUNNING状态的网卡接口
[root@localhost network-scripts]# ifconfig | grep RUNNING
enahisic2i1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

  • 基于网卡 enahisic2i1 的网络配置文件,复制生成网桥br0的网络配置文件

    cp /etc/sysconfig/network-scripts/ifcfg-enahisic2i1 /etc/sysconfig/network-scripts/ifcfg-br0
    
  • 修改网桥br0的网络配置文件,其中需要配置宿主机的静态IP

#Type使用桥接
TYPE=Bridge
#IP分配协议改为静态分配
BOOTPROTO=static
#修改NAME为br0
NAME=br0
#修改DEVICE为br0
DEVICE=br0
ONBOOT=yes
#宿主机的静态IP
IPADDR=192.168.110.66
#子网掩码
PREFIX=24
#网关
GATEWAY=192.168.110.1
#DNS
DNS1=114.114.114.114

  • 修改处于UP状态且处于RUNNING状态的网卡 enahisic2i1 的网络配置文件
TYPE=Ethernet
#Type使用Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
#IP分配协议改为静态分配
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=enahisic2i1
UUID=2205bd6f-9005-4c6e-92a6-ca7ad19e974f
DEVICE=enahisic2i1
ONBOOT=yes
BRIDGE=br0  
#指定桥接设备为br0          
  • 重启网络
#华为openeuler系统使用该命令,其他linux系统可以使用systemctl restart network
[root@localhost ~]# nmcli con reload; nmcli con up enahisic2i1
  • 查看网络连接
##如果配置成功,会有以下输出:
[root@localhost network-scripts]# brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.48570264e74c	no		enahisic2i1
virbr0		8000.5254006e8ff6	yes	
  • 设置ip转发
##修改内核参数
[root@localhost ~]# vi /etc/sysctl.conf
net.ipv4.ip_forward=1

四、安装GNOME桌面环境

##更新系统
[root@localhost ~]# yum update -y   
 
##安装字库
[root@localhost ~]# yum install dejavu-fonts liberation-fonts \
                    gnu-*-fonts google-*-fonts -y
 
##安装Xorg
[root@localhost ~]# yum install xorg-* -y
 
##这可能会安装很多没用的包,可以使用下面的命令安装必要的xorg相关包
[root@localhost ~]# yum install xorg-x11-apps xorg-x11-drivers xorg-x11-drv-ati \
    xorg-x11-drv-dummy xorg-x11-drv-evdev xorg-x11-drv-fbdev xorg-x11-drv-intel \
    xorg-x11-drv-libinput xorg-x11-drv-nouveau xorg-x11-drv-qxl \
    xorg-x11-drv-synaptics-legacy xorg-x11-drv-v4l xorg-x11-drv-vesa \
    xorg-x11-drv-vmware xorg-x11-drv-wacom xorg-x11-fonts xorg-x11-fonts-others \
    xorg-x11-font-utils xorg-x11-server xorg-x11-server-utils xorg-x11-server-Xephyr \
    xorg-x11-server-Xspice xorg-x11-util-macros xorg-x11-utils xorg-x11-xauth \
    xorg-x11-xbitmaps xorg-x11-xinit xorg-x11-xkb-utils -y
 
##安装GNOME及组件
[root@localhost ~]# yum install adwaita-icon-theme atk atkmm at-spi2-atk \
    at-spi2-core baobab \
    abattis-cantarell-fonts cheese clutter clutter-gst3 clutter-gtk cogl dconf \
    dconf-editor devhelp eog epiphany evince evolution-data-server file-roller folks \
    gcab gcr gdk-pixbuf2 gdm gedit geocode-glib gfbgraph gjs glib2 glibmm24 \
    glib-networking gmime30 gnome-autoar gnome-backgrounds gnome-bluetooth \
    gnome-builder gnome-calculator gnome-calendar gnome-characters \
    gnome-clocks gnome-color-manager gnome-contacts gnome-control-center \
    gnome-desktop3 gnome-disk-utility gnome-font-viewer gnome-getting-started-docs \
    gnome-initial-setup gnome-keyring gnome-logs gnome-menus gnome-music \
    gnome-online-accounts gnome-online-miners gnome-photos gnome-remote-desktop \
    gnome-screenshot gnome-session gnome-settings-daemon gnome-shell \
    gnome-shell-extensions gnome-software gnome-system-monitor gnome-terminal \
    gnome-tour gnome-user-docs gnome-user-share gnome-video-effects \
    gnome-weather gobject-introspection gom grilo grilo-plugins \
    gsettings-desktop-schemas gsound gspell gssdp gtk3 gtk4 gtk-doc gtkmm30 \
    gtksourceview4 gtk-vnc2 gupnp gupnp-av gupnp-dlna gvfs json-glib libchamplain \
    libdazzle libgdata libgee libgnomekbd libgsf libgtop2 libgweather libgxps libhandy \
    libmediaart libnma libnotify libpeas librsvg2 libsecret libsigc++20 libsoup \
    mm-common mutter nautilus orca pango pangomm libphodav python3-pyatspi \
    python3-gobject rest rygel simple-scan sushi sysprof tepl totem totem-pl-parser \
    tracker3 tracker3-miners vala vte291 yelp yelp-tools \
    yelp-xsl zenity -y
 
##启动gdm显示管理器
[root@localhost ~]# systemctl enable gdm
 
##设置系统默认以图形界面登录
[root@localhost ~]# systemctl set-default graphical.target
 
##查询当前开机运行级别
[root@localhost ~]# systemctl get-default  
 
##重启生效
[root@localhost ~]# reboot

五、 安装KVM及所需组件

**说明:**如果宿主机没有安装图形桌面,则无需安装virt-manager。virt-manager(Virtual Machine Manager)是图形化虚机管理器,类似于Esxi的Web Console管理页面。

##安装KVM及所需组件
[root@localhost ~]# yum install virt-manager virt-install bridge-utils \
                    libvirt qemu-kvm virt-viewer libcanberra-gtk2  libiscsi  \
                    dbus-devel  virt-clone dejavu-lgc-sans-fonts qemu-img \
                    libvirt-client virt-v2v libguestfs-tools xorg-x11-xauth -y
 
##查看virt-manager版本号
[root@localhost ~]# virt-manager --version

 
##查看virsh版本号
[root@localhost ~]# virsh --version    

 
##查看qemu-img版本号
[root@localhost ~]# qemu-img --version

 
##查看virt-install版本号
[root@localhost ~]# virt-install --version

六、修改sshd配置文件

[root@localhost ~]# sudo vi /etc/ssh/sshd_config
##确保该配置文件有如下内容
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost no
PermitTunnel yes
 
##重启 sshd 服务
[root@localhost ~]# systemctl restart sshd

七、启动libvirt并设置开机自启动

##启动
[root@localhost ~]# systemctl start libvirtd
 
##设置开机自启
[root@localhost ~]# systemctl enable libvirtd
 
##查看libvirt服务是否启动成功
##若服务处于running状态,说明服务启动成功
##可以正常使用libvirt提供的virsh命令行工具
[root@localhost ~]# systemctl status libvirtd

八、创建镜像目录和磁盘文件目录

##查看物理机磁盘空间
##通过df -hT发现/home目录空间最大
[root@localhost ~]# df -hT
Filesystem                 Type      Size  Used Avail Use% Mounted on
devtmpfs                   devtmpfs  4.0M     0  4.0M   0% /dev
tmpfs                      tmpfs     220G     0  220G   0% /dev/shm
tmpfs                      tmpfs      88G   60M   88G   1% /run
tmpfs                      tmpfs     4.0M     0  4.0M   0% /sys/fs/cgroup
/dev/mapper/openeuler-root ext4       69G   15G   51G  23% /
tmpfs                      tmpfs     220G     0  220G   0% /tmp
/dev/sda2                  ext4      974M  204M  704M  23% /boot
/dev/sda1                  vfat      599M  6.0M  593M   2% /boot/efi
/dev/mapper/openeuler-home ext4      1.7T  174G  1.5T  11% /home
tmpfs                      tmpfs      44G   72K   44G   1% /run/user/1003
 
##建立目录用来存放iso镜像文件
[root@localhost ~]# mkdir /home/iso
 
##建立目录用来存放qcow2磁盘文件
[root@localhost ~]# mkdir /home/qcow2

九、创建虚拟机的磁盘文件

##进入磁盘文件目录
[root@localhost ~]# cd /home/qcow2

##创建虚拟机的磁盘文件
##这里创建了一个名为vm1.qcow2,空间为400GB的动态扩展的qcow2格式的磁盘
##这里的400GB只是磁盘的最大值,没有被写入数据前只有不到200KB大小
[root@localhost ~]# qemu-img create -f qcow2 vm1.qcow2 400G
Formatting 'vm1.qcow2', fmt=qcow2 cluster_size=65536 extended_l2=off compression_type=zlib size=429496729600 lazy_refcounts=off refcount_bits=16 cache=writeback

##查看磁盘文件vm1.qcow2的卷信息,里面disk size是其实际占用的宿主机磁盘大小
##上面的400GB只是磁盘的最大值,这里可以看到,没有被写入数据前只有200KB大小
[root@localhost ~]# qemu-img info vm1.qcow2
image: vm1.qcow2
file format: qcow2
virtual size: 400 GiB (429496729600 bytes)
disk size: 200 KiB
cluster_size: 65536
Format specific information:
    compat: 1.1
    compression type: zlib
    lazy refcounts: false
    refcount bits: 16
    corrupt: false
    extended l2: false

十、图形化创建虚拟机

跳过创建过程

开始安装,配置语言、时区、安装源、网络、密码等信息。

Installation

1) [x] Language settings                 2) [x] Time settings
       (English (United States))                (Asia/Shanghai timezone)
2) [!] Installation source               4) [!] Software selection
       (Processing...)                          (Processing...)
3) [!] Installation Destination          6) [!] Network configuration
       (Processing...)                          (Not connected)
4) [!] Root password                     8) [!] User creation
       (Root account is disabled)               (No user will be created)

Please make a selection from the above ['b' to begin installation, 'q' to quit,
'r' to refresh]: 5 <=======输入5然后按Enter键,设置安装目录

Probing storage...

================================================================================
Installation Destination

1) [x] QEMU HARDDISK: 400 GiB (sda)

1 disk selected; 400 GiB capacity; 400 GiB free

Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to
refresh]: c <=======输入c继续

================================================================================

Partitioning Options

1) [ ] Replace Existing Linux system(s)
2) [x] Use All Space
3) [ ] Use Free Space
4) [ ] Manually assign mount points

Installation requires partitioning of your hard drive. Select what space to use
for the install target or manually assign mount points.

Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to

refresh]: c <=======输入c继续

================================================================================
Partition Scheme Options

1) [ ] Standard Partition
2) [ ] Btrfs
3) [x] LVM
4) [ ] LVM Thin Provisioning

Select a partition scheme configuration.

Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to

refresh]: 1 <=======输入1然后按Enter键,选择Standard Partition

================================================================================
Partition Scheme Options

1) [x] Standard Partition
2) [ ] Btrfs
3) [ ] LVM
4) [ ] LVM Thin Provisioning

Select a partition scheme configuration.

Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to

refresh]: c <=======输入c继续

================================================================================
Installation

1) [x] Language settings                 2) [x] Time settings
       (English (United States))                (Asia/Shanghai timezone)
2) [x] Installation source               4) [x] Software selection
       (Local media)                            (Minimal Install)
3) [x] Installation Destination          6) [ ] Network configuration
       (Automatic partitioning                  (Not connected)
       selected)
4) [!] Root password                     8) [!] User creation
       (Root account is disabled)               (No user will be created)

Please make a selection from the above ['b' to begin installation, 'q' to quit,

'r' to refresh]: 7 <=======输入7然后按Enter键,设置root账号的密码

================================================================================
Root password

1) [ ] SM3 encrypt

Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to

refresh]: 1 <=======输入1然后按Enter键,选择SM3加密方式

================================================================================
Root password

1) [x] SM3 encrypt

Please make a selection from the above ['c' to continue, 'q' to quit, 'r' to

refresh]: c <=======输入c继续

================================================================================
Root password

Please select new root password. You will have to type it twice.

Password: <=======输入密码然后按Enter键,这里不会反显

Password (confirm): <=======再次输入确认密码,然后按Enter键,这里也不会反显

================================================================================
Installation

1) [x] Language settings                 2) [x] Time settings
       (English (United States))                (Asia/Shanghai timezone)
2) [x] Installation source               4) [x] Software selection
       (Local media)                            (Minimal Install)
3) [x] Installation Destination          6) [ ] Network configuration
       (Automatic partitioning                  (Not connected)
       selected)
4) [x] Root password                     8) [ ] User creation
       (Root password is set)                   (No user will be created)

Please make a selection from the above ['b' to begin installation, 'q' to quit,

'r' to refresh]: b <=======输入b然后按Enter键就开始安装

================================================================================
......
......
Installation complete

Use of this product is subject to the license agreement found at:
/usr/share/openEuler-release/EULA

Installation complete. Press ENTER to quit:<=======安装完成,按Enter键重启虚拟机

重启后就进入到虚拟机的登录界面
......
[  OK  ] Finished OpenEuler Security Tool.
[FAILED] Failed to start Network Manager Wait Online.  <======= 该问题可以忽略,登陆虚拟机,配置网络后即可解决
See 'systemctl status NetworkManager-wait-online.service' for details.
[  OK  ] Reached target Network is Online.
         Starting Crash recovery kernel arming...
         Starting Notify NFS peers of a restart...
         Starting System Logging Service...
[  OK  ] Started Notify NFS peers of a restart.
[  OK  ] Started System Logging Service.
[  OK  ] Reached target Multi-User System.
         Starting Record Runlevel Change in UTMP...
[  OK  ] Finished Record Runlevel Change in UTMP.
[  OK  ] Finished Crash recovery kernel arming.

localhost login: 

登录成功后,这时,如果要退出虚拟机,按 Ctrl + ] 即可。

十一、KVM虚拟机常见管理命令

## 从虚拟机退出到宿主机
[root@localhost ~]# Ctrl + ]
 
## 查看KVM进程 
[root@localhost ~]# ps axu |grep kvm       
 
## 查看libvirt的版本信息                  
[root@localhost ~]# virsh version   
 
## 列出当前有多少个虚拟机,以及其状态                         
[root@localhost ~]# virsh list    
 
## 列出当前有多少个虚拟机,包括关机状态的虚拟机                           
[root@localhost ~]# virsh list --all           
 
## 进入指定的虚拟机,进入的时候还需要按一下回车              
[root@localhost ~]# virsh console vm1                    
 
## 编辑虚拟机的配置    
[root@localhost ~]# virsh edit vm1       
 
## 使用XML文件创建一个虚拟机                    
[root@localhost ~]# virsh create vm1.xml            
 
## 使用XML文件定义一个虚拟机,但是不启动
[root@localhost ~]# virsh define vm1.xml     
 
## 启动虚拟机
[root@localhost ~]# virsh start vm1                          
 
## 重启虚拟机
[root@localhost ~]# virsh reboot vm1       
 
## 关闭虚拟机,比较优雅地做法,按部就班的关闭虚拟机
[root@localhost ~]# virsh shutdown vm1                    
 
## 强制停止虚拟机,是比较暴力的做法,相当于物理机的直接关闭电源
[root@localhost ~]# virsh destroy vm1                        
 
## 彻底销毁虚拟机,会删除虚拟机配置文件,但不会删除虚拟磁盘
[root@localhost ~]# virsh undefine vm1 --nvram               
 
## 设置宿主机开机时该虚拟机也开机
[root@localhost ~]# virsh autostart vm1       
 
## 解除开机启动
[root@localhost ~]# virsh autostart --disable vm1       
 
## 列出开机自动启动的虚拟机
[root@localhost ~]# virsh list --autostart        
 
## 挂起虚拟机
[root@localhost ~]# virsh suspend vm1                     
 
## 恢复挂起的虚拟机
[root@localhost ~]# virsh resume vm1                         
 
## 当机器是运行状态时,卸载虚拟磁盘命令(只是当前有效,重启后又回来了)
[root@localhost ~]# virsh detach-disk vm1 sdb        
 
## 永久添加磁盘
[root@localhost ~]# virsh attach-disk vm1 \
                    /var/lib/libvirt/images/disk1/additional/vm1/file1 sdb \
                    --subdriver=qcow2 --config --live --persistent                                                 
## 查看虚拟机有几块网卡 
[root@localhost ~]# virsh domiflist vm1           
 
## 查看虚拟机的磁盘
[root@localhost ~]# virsh domblklist vm1                     
 
## 查看虚拟机的cpu数量
[root@localhost ~]# virsh vcpucount vm1   

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

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

相关文章

C#编写的金鱼趣味小应用 - 开源研究系列文章

今天逛网&#xff0c;在GitHub中文网上发现一个源码&#xff0c;里面有这个金鱼小应用&#xff0c;于是就下载下来&#xff0c;根据自己的C#架构模板进行了更改&#xff0c;最终形成了这个例子。 1、 项目目录&#xff1b; 2、 源码介绍&#xff1b; 1) 初始化&#xff1b; 将样…

通过无障碍服务(AccessibilityService)实现Android设备全局水印显示

一、无障碍功能简介 首先我们先来了解下无障碍功能的官方介绍&#xff1a; 无障碍服务仅应用于帮助残障用户使用 Android 设备和应用。它们在后台运行&#xff0c;并在触发 AccessibilityEvents 时接收系统的回调。此类事件表示用户界面中的某些状态转换&#xff0c;例如焦点已…

【Blackbox Exporter】prober.Handler源码详细分析

http.HandleFunc(path.Join(*routePrefix, "/probe"), func(w http.ResponseWriter, r *http.Request) {sc.Lock()conf : sc.Csc.Unlock()prober.Handler(w, r, conf, logger, rh, *timeoutOffset, nil, moduleUnknownCounter, allowedLevel)})我们了解到blackbox_ex…

SpringMVC核心、两种视图解析方法、过滤器拦截器 “ / “ 的意义

SpringMVC的执行流程 1. Spring MVC 的视图解析机制 Spring MVC 的核心职责之一是将数据绑定到视图并呈现给用户。它通过 视图解析器&#xff08;View Resolver&#xff09; 来将逻辑视图名称解析为具体的视图文件&#xff08;如 HTML、JSP&#xff09;。 核心流程 Controlle…

基于动力学的MPC控制器设计盲点解析

文章目录 Apollo MPC控制器的设计架构误差模型和离散化预测模型推导目标函数和约束设计优化求解优化OSQP求解器参考文献 Apollo MPC控制器的设计架构 误差模型和离散化 状态变量和控制变量 1、Apollo MPC控制器中状态变量主要有如下6个 matrix_state_ Matrix::Zero(basic_stat…

DC-DC 降压转换器设计提示和技巧

基本 DC-DC 降压转换器电路 在开始之前&#xff0c;我们先回顾一下DC-DC降压转换器的电路&#xff1a; 为了帮助您&#xff0c;我开发了降压设计中“什么影响什么”的矩阵&#xff1a; 主要的权衡是电感&#xff08;与 k 因子成反比&#xff0c;即峰峰值与平均电感电流之比&a…

Unity3D仿星露谷物语开发9之创建农场Scene

1、目标 绘制农场的场景。通过不同Sorting Layer控制物体的显示优先级&#xff0c;绘制Tilemap地图&#xff0c;添加Tilemap Collider碰撞器&#xff0c;同时添加Composite Collider碰撞器优化性能。 ps&#xff1a;绘制Tilemap的技巧&#xff1a;通过"Shift [" 可…

Linux 定时任务:轻松创建与精准执行

Linux 定时任务&#xff1a;轻松创建与精准执行 在 Linux 系统的运维与自动化管理领域&#xff0c;定时任务扮演着举足轻重的角色。它能够让系统在预设的时间点或周期性时段&#xff0c;自动执行特定的脚本、命令&#xff0c;极大地减轻了管理员的工作负担&#xff0c;提升工作…

Linux驱动开发:深入理解I2C时序(二)

在Linux驱动开发中,I2C时序的理解和正确处理是保证I2C设备正常工作和通信的关键。I2C协议的时序特性决定了数据的有效传输和设备间的协作。因此,掌握I2C的时序细节,以及如何在Linux内核中进行时序处理,能够让开发者更好地处理设备通信问题。 本文将继续深入探讨I2C通信协议…

国产编辑器EverEdit - 常用资源汇总

1 国产编辑器EverEdit-常用资源汇总 EverEdit是一款国产文本编辑器&#xff0c;历经超过15年的更新和维护&#xff0c;拥有不输业界顶级商业文本编辑器(EmEditor、UltraEdit)的实力&#xff0c;甚至在某些方面的功能更强(当然&#xff0c;各有千秋)&#xff0c;开发者对文本编辑…

解决uniapp H5页面限制输入框只能输数字问题

工作记录 最最近在做 uniapp 开发的移动端 H5 页面&#xff0c;有个需求是金额输入框只能输入数字&#xff0c;不能输入小数点和其他字符&#xff0c;经过各种尝试&#xff0c;发现其他字符可以通过正则过滤掉&#xff0c;但是输入小数点的话&#xff0c;因为没有触发 input 和…

面试准备备备备

职业技能 放到简历的黄金位置&#xff08;HR刷选简历的重要参考&#xff09; 基本准则&#xff1a;写在简历上的必须能聊&#xff0c;不然就别写 参考公式&#xff1a;职业技能 必要技术 其他技术 针对性的引导面试官&#xff08;让他问一些你想让他问的&#xff09; 寻找合…

npm install --global windows-build-tools --save 失败

注意以下点 为啥下载windows-build-tools&#xff0c;是因为node-sass4.14.1 一直下载不成功&#xff0c;提示python2 没有安装&#xff0c;最终要安装这个&#xff0c;但是安装这个又失败&#xff0c;主要有以下几个要注意的 1、node 版本 14.21.3 不能太高 2、管理员运行 …

Jenkins 中自动化部署 Spring Boot 项目

&#x1f468;&#x1f3fb;‍&#x1f4bb; 热爱摄影的程序员 &#x1f468;&#x1f3fb;‍&#x1f3a8; 喜欢编码的设计师 &#x1f9d5;&#x1f3fb; 擅长设计的剪辑师 &#x1f9d1;&#x1f3fb;‍&#x1f3eb; 一位高冷无情的全栈工程师 欢迎分享 / 收藏 / 赞 / 在看…

【DSP/matlab】fftshift 是什么意思?在信号处理中有什么作用?

文章目录 前言一、定义什么是 fftshift&#xff1f;fftshift 在信号处理中的作用&#xff1a; 前言 dsp_paper 一、定义 fftshift 是一个在信号处理和数字信号处理中常用的函数&#xff0c;特别是在使用快速傅里叶变换&#xff08;FFT&#xff09;时。这个函数的主要作用是将…

【PCIe 总线及设备入门学习专栏 4.2 -- PCI 总线的三种传输模式 】

文章目录 OverviewProgrammed I/O&#xff08;PIO&#xff09;Direct Memory Access (DMA)Peer-to-Peer 本文转自&#xff1a;https://blog.chinaaet.com/justlxy/p/5100053095 Overview 本文来简单地介绍一下PCI Spec规定的三种数据传输模型&#xff1a;Programmed I/O&…

SpringBoot_第二天

SpringBoot_第二天 学习目标 Mybatis整合&数据访问 使用SpringBoot开发企业项目时&#xff0c;持久层数据访问是前端页面数据展示的基础&#xff0c;SpringBoot支持市面上常见的关系库产品(Oracle,Mysql,SqlServer,DB2等)对应的相关持久层框架&#xff0c;当然除了对于关系…

分类模型评估利器-混淆矩阵

相关文章 地理时空动态模拟工具介绍&#xff08;上&#xff09; 地理时空动态模拟工具介绍&#xff08;下&#xff09;地理时空动态模拟工具的使用方法 前言 混淆矩阵&#xff08;Confusion Matrix&#xff09;是机器学习领域中用于评估分类模型性能的一种工具。它通过矩阵的…

【SpringMVC】拦截器

拦截器&#xff08;Interceptor&#xff09;是一种用于动态拦截方法调用的机制。在 Spring MVC 中&#xff0c;拦截器能够动态地拦截控制器方法的执行过程。以下是请求发送与接收的基本流程&#xff1a; 当浏览器发出请求时&#xff0c;请求首先到达 Tomcat 服务器。Tomcat 根…

el-table 实现纵向多级表头

为了实现上图效果&#xff0c;最开始打算用el-row、el-col去实现&#xff0c;但发现把表头和数据分成两大列时&#xff0c;数据太多时会导致所在格高度变高。但由于每一格数据肯定不一样&#xff0c;为保持高度样式一致&#xff0c;就需要我们手动去获取最高格的高度之后再设置…