服务器虚拟化(详解)
服务器虚拟化是一种技术,通过将物理服务器的硬件资源(如CPU、内存、存储、网络等)抽象化并分割成多个虚拟机(VM),每个虚拟机可以独立运行不同的操作系统和应用程序。虚拟化使得资源使用更加高效,提供了更高的灵活性、可扩展性和隔离性。它已成为现代数据中心和云计算的核心技术之一。
1. 虚拟化的基本概念
1.1 虚拟化类型
- 硬件虚拟化(Full Virtualization):通过虚拟机监控程序(Hypervisor)将物理硬件虚拟化成多个虚拟硬件资源,每个虚拟机有自己的操作系统和应用程序,完全隔离。常见的Hypervisor有
VMware ESXi
、KVM
、Xen
等。 - 操作系统级虚拟化(OS-level Virtualization):与硬件虚拟化不同,它不模拟硬件,而是通过在操作系统内部分割资源创建多个独立的虚拟环境。例如,Linux中的
LXC
(Linux Containers)和Docker
就是操作系统级虚拟化的典型代表。
1.2 虚拟化组件
-
Hypervisor(虚拟机监控程序):负责虚拟机的创建、管理和监控,是虚拟化的核心。根据部署位置可以分为:
- Type 1 Hypervisor:直接运行在物理硬件上,不依赖于操作系统(例如
VMware ESXi
、Microsoft Hyper-V
、Xen
)。 - Type 2 Hypervisor:安装在操作系统上,通过操作系统来运行虚拟机(例如
VirtualBox
、VMware Workstation
)。
- Type 1 Hypervisor:直接运行在物理硬件上,不依赖于操作系统(例如
-
虚拟机(VM):每个虚拟机具有独立的操作系统和应用程序,通过Hypervisor共享底层硬件资源。
-
虚拟化管理平台:如
VMware vCenter
、Microsoft System Center
等,用于集中管理虚拟化环境中的虚拟机、资源、存储、网络等。
2. 虚拟化的优势
- 资源优化:虚拟化可以将一台物理服务器分割为多个虚拟机,从而更好地利用硬件资源。避免了服务器的资源浪费。
- 隔离性:每个虚拟机相互独立,虚拟机之间的操作系统和应用程序不会相互影响,提供了良好的安全性和容错性。
- 弹性和扩展性:虚拟机可以根据需求快速创建、删除或迁移,非常适合动态变化的负载环境。
- 高可用性:虚拟机可以在物理服务器之间迁移,提供了更好的灾难恢复能力。例如,虚拟化平台支持虚拟机的实时迁移(vMotion)。
- 简化管理:通过虚拟化管理平台集中管理所有虚拟机和资源,减少了硬件管理的复杂性。
3. 常见的虚拟化技术
3.1 VMware
- VMware vSphere是一个全面的虚拟化平台,包括了ESXi Hypervisor和vCenter管理平台。VMware虚拟化解决方案广泛用于企业级数据中心,支持虚拟机的高可用性、实时迁移、负载均衡等功能。
- vMotion:实时迁移虚拟机,不会中断服务。
- HA(High Availability):高可用性,自动重启虚拟机。
3.2 KVM(Kernel-based Virtual Machine)
- KVM是一个开源的虚拟化技术,它是Linux内核的一部分,通过虚拟化扩展(如Intel VT-x和AMD-V)实现硬件加速虚拟化。
- KVM通过
libvirt
和QEMU
等工具提供管理接口,是现代Linux系统中常用的虚拟化解决方案。 - 支持虚拟机的快照、迁移等功能,可以通过
virt-manager
等管理工具进行管理。
3.3 Xen
- Xen是一个开源的虚拟化平台,支持全虚拟化(Full Virtualization)和半虚拟化(Para-Virtualization)模式。它最初由剑桥大学开发,目前被多家云平台提供商(如Amazon AWS)使用。
- Xen的架构包括一个特权虚拟机(Dom0)和多个非特权虚拟机(DomU)。
3.4 Docker和LXC(Linux Containers)
- Docker是一种轻量级的操作系统级虚拟化技术,通过容器化的方式将应用程序和其依赖打包成容器,容器之间共享主机操作系统内核。
- LXC提供了一个类似虚拟机的环境,但没有完整的虚拟化开销,它使用Linux内核的控制组(Cgroups)和命名空间(Namespaces)实现轻量级虚拟化。
4. 虚拟化管理与自动化
4.1 虚拟化管理平台
- vCenter Server:VMware的管理平台,集中管理虚拟机、存储、网络、资源池等。
- Microsoft System Center Virtual Machine Manager (SCVMM):用于管理Hyper-V环境中的虚拟机。
- oVirt:基于KVM的开源虚拟化管理平台,可以管理虚拟机、存储、网络、集群等资源。
4.2 虚拟化自动化
- 自动化部署:使用
Ansible
、Puppet
、Chef
等配置管理工具来自动化虚拟机的部署和配置管理。 - 资源调度与自动化伸缩:现代虚拟化平台(如
OpenStack
、vSphere
、Kubernetes
)支持自动化的资源调度和按需伸缩。
5. 虚拟化的性能优化
- 资源分配:合理配置虚拟机的CPU、内存、存储资源。避免资源分配过多导致资源浪费或过少导致性能瓶颈。
- 硬件加速:启用硬件虚拟化支持(如Intel VT-x或AMD-V)以提高虚拟机的性能。
- 网络优化:使用虚拟交换机(vSwitch)优化虚拟机间的通信,或者采用SR-IOV技术直接访问物理网卡,提高网络性能。
- 磁盘IO优化:通过共享存储或SSD加速虚拟机的磁盘IO性能,避免虚拟化层对磁盘性能的影响。
6. 虚拟化的安全性
- 隔离性:虚拟化提供了良好的隔离性,可以将不同的应用程序、服务、甚至操作系统隔离在不同的虚拟机中,防止不同虚拟机之间相互影响。
- 网络安全:使用虚拟网络与物理网络隔离,避免外部攻击直接影响虚拟机。
- 资源限制:使用资源控制技术(如Cgroups、cgroups)限制虚拟机的资源使用,防止资源过度使用导致性能下降。
- 虚拟机加密:一些虚拟化平台支持虚拟机的加密,确保虚拟机数据的安全性。
7. 虚拟化的挑战
- 性能开销:尽管虚拟化带来了灵活性,但虚拟化技术本身会带来一定的性能开销,特别是在I/O密集型应用中,虚拟化的开销可能较为显著。
- 资源管理:合理分配硬件资源,避免虚拟机资源冲突或过度分配。
- 安全问题:虚拟机与宿主机之间的隔离性虽然较强,但在某些攻击情况下,虚拟化可能会成为攻击的目标。需要定期更新虚拟化软件、加强安全防护。
8. 举例操作KVM
好的,下面我将以 KVM(Kernel-based Virtual Machine)为例,详细介绍如何在 Linux 系统上安装、配置和管理虚拟机。KVM 是一种开源的虚拟化技术,它是 Linux 内核的一部分,支持硬件虚拟化扩展,如 Intel VT-x 或 AMD-V。
1. 安装 KVM 及相关工具
首先,你需要确保你的服务器支持硬件虚拟化(Intel VT-x 或 AMD-V)。你可以通过以下命令来检查 CPU 是否支持虚拟化:
# 检查CPU是否支持硬件虚拟化
egrep -c '(vmx|svm)' /proc/cpuinfo
- 如果输出为 1 或大于 1,说明你的 CPU 支持硬件虚拟化。
- 如果输出为 0,说明你的 CPU 不支持虚拟化。
接下来,我们在 Linux 系统中安装 KVM 和相关工具。以基于 Ubuntu 的系统为例:
# 更新软件包列表
sudo apt update# 安装 KVM 和相关工具
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
qemu-kvm
:KVM 的用户空间工具。libvirt
:KVM 管理库,提供 API 来管理虚拟机。virt-manager
:一个图形化管理工具,帮助管理虚拟机。
2. 检查 KVM 是否安装成功
安装完成后,检查 KVM 是否正常工作:
# 查看 KVM 模块是否加载
lsmod | grep kvm
输出类似以下内容,表示 KVM 模块已加载:
kvm_intel 204800 0
kvm 651264 1 kvm_intel
此外,确保 libvirt
服务正在运行:
# 检查 libvirt 服务状态
sudo systemctl status libvirtd
如果服务未启动,可以使用以下命令启动:
# 启动 libvirt 服务
sudo systemctl start libvirtd
3. 创建虚拟机
使用 virt-manager
工具,你可以轻松创建和管理虚拟机。你可以通过图形化界面来完成以下步骤:
-
打开
virt-manager
:virt-manager
-
在图形界面中,点击左上角的 “新建” 按钮来创建新的虚拟机。
-
根据提示,选择操作系统类型(比如 Ubuntu、CentOS 等)和版本,分配 CPU、内存、存储等资源。
-
创建完虚拟机后,你可以通过 虚拟机管理器 来启动、停止、暂停和管理虚拟机。
使用命令行创建虚拟机
如果你不想使用图形界面,你也可以使用 virt-install
命令来创建虚拟机。以下是一个例子:
sudo virt-install \--name test-vm \--ram 2048 \--vcpus 2 \--disk path=/var/lib/libvirt/images/test-vm.img,size=10 \--cdrom /path/to/ubuntu.iso \--network network=default \--os-type linux \--os-variant ubuntu20.04 \--graphics spice \--console pty,target_type=serial
--name
:指定虚拟机名称。--ram
:分配的内存(MB)。--vcpus
:分配的 CPU 数量。--disk
:虚拟机硬盘的路径及大小。--cdrom
:ISO 文件路径,用于安装操作系统。--network
:选择虚拟机的网络类型(此处为默认虚拟网络)。--os-type
:指定操作系统类型(如 Linux)。--os-variant
:指定操作系统的版本(此处为 Ubuntu 20.04)。--graphics
:图形显示类型,spice
是一种常用的虚拟显示协议。
4. 管理虚拟机
使用 virsh
命令行工具可以管理虚拟机。常见命令如下:
-
查看所有虚拟机:
sudo virsh list --all
-
启动虚拟机:
sudo virsh start test-vm
-
停止虚拟机:
sudo virsh shutdown test-vm
-
查看虚拟机信息:
sudo virsh dominfo test-vm
-
进入虚拟机的控制台(如果配置了串口):
sudo virsh console test-vm
-
删除虚拟机:
sudo virsh undefine test-vm
如果要删除虚拟机的所有磁盘和配置文件,可以使用:
sudo virsh undefine test-vm --remove-all-storage
5. 网络配置
在虚拟化环境中,虚拟机需要连接到物理主机的网络。可以使用 桥接网络 或 NAT 网络配置。
-
桥接网络:将虚拟机直接连接到物理网络,使其能够直接与其他物理主机通信。要配置桥接网络,需要编辑虚拟机的网络设置,并创建一个桥接接口。
创建桥接网络示例(使用
brctl
工具):# 创建桥接接口 sudo brctl addbr br0 sudo ip addr add 192.168.1.10/24 dev br0 sudo ip link set dev br0 up sudo brctl addif br0 eth0 # eth0 为物理网卡
配置虚拟机使用桥接网络。
-
NAT网络:通过虚拟化平台提供的 NAT 网络,虚拟机共享主机的网络连接。可以在
libvirt
配置文件中启用 NAT 网络。
6. 虚拟机快照和备份
虚拟化平台支持虚拟机的快照,便于恢复到某个特定状态:
# 创建虚拟机的快照
sudo virsh snapshot-create-as test-vm snapshot1 "Snapshot Description"
恢复快照:
sudo virsh snapshot-revert test-vm snapshot1
7. 虚拟机性能调优
- 虚拟 CPU 配置:根据虚拟机的工作负载,调整虚拟 CPU 的数量和调度策略。
- 内存分配:为虚拟机分配适当的内存,并启用内存热添加(hot-plug)功能以实现动态扩展。
- I/O 性能:通过使用
virtio
设备驱动来优化虚拟机的磁盘 I/O 和网络性能。
8. KVM 的高级功能
- vhost-net 加速:
vhost-net
提供了对网络 I/O 的加速。 - SR-IOV:为虚拟机提供直接访问物理网卡的能力,提升网络性能。
- 存储池:通过
libvirt
管理多个存储池,为虚拟机提供存储。 - 虚拟机迁移:通过
virt-migrate
或virsh migrate
命令,将虚拟机从一台物理主机迁移到另一台物理主机。
9. 总结
服务器虚拟化通过虚拟机或容器化技术提供了资源的隔离性、灵活性和高效利用。虚拟化不仅在数据中心环境中得到了广泛应用,也在云计算、容器化等领域发挥着重要作用。合理选择虚拟化平台、优化资源配置、确保安全性是虚拟化成功实施的关键。
相关文章:
服务器虚拟化(详解)
服务器虚拟化是一种技术,通过将物理服务器的硬件资源(如CPU、内存、存储、网络等)抽象化并分割成多个虚拟机(VM),每个虚拟机可以独立运行不同的操作系统和应用程序。虚拟化使得资源使用更加高效,…...
今日写题work05
题目:用队列实现栈 思路 队列的特点是先进先出,而栈的特点是后进先出。所以想要用队列实现模拟栈,我们可以使用两个队列,一个队列负责压栈,一个队列负责出栈。压栈很简单就是检空再调用队列的push就好,那出…...
DeepSeek模型架构及优化内容
DeepSeek v1版本 模型结构 DeepSeek LLM基本上遵循LLaMA的设计: 采⽤Pre-Norm结构,并使⽤RMSNorm函数. 利⽤SwiGLU作为Feed-Forward Network(FFN)的激活函数,中间层维度为8/3. 去除绝对位置编码,采⽤了…...
145,【5】 buuctf web [GWCTF 2019]mypassword
进入靶场 修改了url后才到了注册页面 注测后再登录 查看源码 都点进去看看 有个反馈页面 再查看源码 又有收获 // 检查$feedback是否为数组 if (is_array($feedback)) {// 如果是数组,弹出提示框提示反馈不合法echo "<script>alert(反馈不合法);<…...
Beszel监控Docker安装
一、Beszel Hub安装 #Beszel Hub安装 mkdir -p ./beszel_data && \ docker run -d \--name beszel \--restartunless-stopped \-v ./beszel_data:/beszel_data \-p 8090:8090 \henrygd/beszel#创建账号 账号/密码:adminadmin.com/adminadmin.com 二、Besz…...
Ansible批量配置服务器免密登录步骤详解
一、准备工作 192.168.85.138 安装ansible,计划配置到139的免密 192.168.85.139 待配置免密 1. 生成SSH密钥对 在Ansible控制节点生成密钥对,用于后续免密认证: ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa 全部回车默认,无…...
使用llama.cpp在gpu和cpu上运行deepseek-r1 7b的性能对比
使用deepseek-r1 7b模型的q5km量化版本进行测试, gpu上的token解码速度是cpu的近8倍. 测试环境: ubuntu22.04 x86llama.cpp cpu intel 10750h 4.41 tokens / s model size params backend threads test t/s qwen2 7B Q5_K - Medium 5.07 GiB 7.62 B CPU 6 pp512 …...
1.【BUUCTF】[SUCTF 2019]EasyWeb
进入题目页面如下 给出源码开始代码审计 <?php // 定义一个名为 get_the_flag 的函数,该函数主要处理文件上传逻辑 function get_the_flag(){// 构造用户上传文件的目录,目录名是 "upload/tmp_" 加上客户端 IP 地址的 MD5 哈希值$userdir…...
GMSL 实例1:当 MAX96717 遇上 MAX96724,打通 Camera 视频数据传输
新年伊始,继 Deepseek 在 AI 圈掀起风波之后。比亚迪在2月10日发布会上重磅官宣:全系车型将搭载自研的高阶智驾系统“天神之眼”,覆盖从10万元级入门车型到高端豪华车型的所有范围。此举如一颗重磅炸弹投向当前一卷再卷的新能源汽车赛道&…...
2025有哪些关键词优化工具好用
越来越多的企业和个人开始意识到搜索引擎优化(SEO)对于网站曝光和业务增长的重要性。在SEO优化的过程中,关键词优化占据着至关重要的地位。关键词是用户在搜索引擎中输入的词语,优化关键词有助于提高网站在搜索结果中的排名&#…...
Python常见面试题的详解6
1. 按字典 value 值排序 要点:对于给定字典,使用 sorted() 函数结合 items() 方法,依据 value 进行排序,也可以定义一个通用函数,支持按 value 升序或降序排序。示例: python d {a: 1, b: 2, c: 3, d: …...
宝塔和docker的区别
宝塔面板 vs Docker:区别、场景与互补使用指南 eepseek回答宝塔和docker的区别 好的,我现在需要回答用户关于宝塔面板和Docker之间的区别的问题。首先,我需要明确这两个工具各自的定义、功能以及它们适用的场景,这样才能准确比较…...
vscode调试redis
系统:ubuntu redis:redis-6.0.3 1.在vs中安装c/c编译插件 2.用vscode打开redis-6.0.3 3.在菜单中找到run->Add Configuration… 4.会在目录中生成一个./vscode目录,里面包含launch.json,修改launch.json中的program:${workspaceFolder}…...
tcp/ip协议设置参数,tcp/ip协议6设置
TCP/IP协议设置参数主要涉及到IP地址、子网掩码、网关地址以及DNS服务器地址等关键参数。这些参数的配置确保了网络设备能够正确地接入互联网并与其他设备进行通信。以下是对这些参数设置的详细说明: 1. IP地址 定义:IP地址是互联网中用于唯一标识每一…...
计算机网络原理试题二
一、单选 1.(单选题,5分)以下关于计算机网络定义的描述中,错误的是 A.以能够相互共享资源的方式互联起来的自治计算机系统的集合 B.计算机资源主要指计算机的CPU、内存和操作系统 C.互联的计算机既可以联网工作,也可以脱网单机工作 D.联网计算机之间的通信必须遵循…...
#渗透测试#批量漏洞挖掘#致远互联AnalyticsCloud 分析云 任意文件读取
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
企业文件共享中的权限管理与安全风险防范
在企业的日常运营中,文件共享是必不可少的一项工作。然而,文件共享过程中如果权限管理不当,极易引发安全风险,导致企业敏感信息泄露。因此,加强文件共享中的权限管理与安全风险防范,对于保障企业信息安全至…...
2025智能硬件售后服务管理系统选择的六大标准
2025智能硬件售后服务管理系统选择的六大标准 随着2025年的到来,智能硬件行业正以前所未有的速度发展,产品迭代加速,用户需求日益多样化。在这一背景下,售后服务管理系统的选择成为了智能硬件厂商能否在激烈的市场竞争中脱颖而出…...
C++ references
C复杂在于提供了太多的内存模型 或者说: 提供了两种东西: 1、可以放对象的地方: 堆栈堆全局数据区里 2、提供了很多访问对象的方式 变量是对象指针访问对象引用来访问对象 3 * 3 9 种访问对象的方式 规则 引用一般初始化࿰…...
STM32 RCC功能说明 复位和时钟控制RCC
目录 背景 RCC配置时钟主要涉及两方面 程序 第1步、RCC默认初始化 第2步、等待HSE工作稳定 第3步、设置PLL时钟源以及倍频数 第4步、设置AHB总线时钟(HCLK) 第5步、设置PCLK1(APB1总线) 第6步、设置PCLK2(APB2总线) 第7步、FLASH存储器的配置 …...
2024年终总结和2025年规划
2024年的主线是AI基础的学习和读书,虽然AI学习花费了更多的时间,但是读书长久看来于我是更重要的事情,哈哈哈,因此先简单回顾一下读书记忆,回顾我的2024,再展望一下我的2025. 我的2024年记忆 读万卷书&am…...
Day2 25/2/15 SAT
【一周刷爆LeetCode,算法大神左神(左程云)耗时100天打造算法与数据结构基础到高级全家桶教程,直击BTAJ等一线大厂必问算法面试题真题详解(马士兵)】https://www.bilibili.com/video/BV13g41157hK?p4&v…...
新版电脑通过wepe安装系统
官方下载链接 WIN10下载 WIN11下载 微PE 启动盘制作 1:选择启动盘的设备 2:选择对应的U盘设备,点击安装就可以,建议大于8g 3:在上方链接下载需要安装的程序包,放入启动盘,按需 更新系统 …...
分享一个使用的音频裁剪chrome扩展-Ringtone Maker
一、插件简介 铃声制作器是一个简单易用的 Chrome 扩展,专门用于制作手机铃声。它支持裁剪音频文件的特定片段,并将其下载为 WAV 格式,方便我们在手机上使用。无论是想从一段长音频中截取精彩部分作为铃声,还是对现有的音频进行个…...
Managed Lustre 和 WEKA:高性能文件系统的对比与应用
Managed Lustre 和 WEKA:高性能文件系统的对比与应用 1. 什么是 Managed Lustre?主要特点:适用场景: 2. 什么是 WEKA?主要特点:适用场景: 3. Managed Lustre 和 WEKA 的对比4. 如何选择 Managed…...
自己制作网站教程方法
SaaS建站,作为一种创新的网站构建模式,通过将网站建设所需的复杂软硬件资源整合到云端,为用户带来了前所未有的便捷性、高效性和灵活性,彻底颠覆了传统网站建设的固有模式,为用户提供了一个更为理想且适应性强的建站解…...
基于角色访问控制的UML 表示02
一个用户可以成为很多角色的成员,一个角色可以有许多用户。类似地,一个角色可以有多个权限,同一个权限可以被指派给多个角色。每个会话把一个用户和可能的许多角色联系起来。一个用户在激发他或她所属角色的某些子集时,建立了一个…...
平面与平面相交算法杂谈
1.前言 空间平面方程: 空间两平面如果不平行,那么一定相交于一条空间直线, 空间平面求交有多种方法,本文进行相关讨论。 2.讨论 可以联立方程组求解,共有3个变量,2个方程,而所求直线有1个变量…...
28 在可以控制 postgres 服务器, 不知道任何用户名的情况下怎 进入 postgres 服务器
前言 最近有这样的一个需求, 有一个 postgres 服务器 但是 不知道 他的任何的用户名密码, 但是我想要查询这台 postgres 服务器 然后 基于这个需求, 我们看一下 怎么来处理 pg_hba.conf 认证方式修改为 trust 首先将 postgres 服务器的认证方式修改为 trust 这时候 …...
Java短信验证功能简单使用
注册登录阿里云官网:https://www.aliyun.com/ 搜索短信服务 自己一步步申请就可以了 开发文档: https://next.api.aliyun.com/api-tools/sdk/Dysmsapi?version2017-05-25&languagejava-tea&tabprimer-doc 1.引入依赖 <dependency>…...
哈希表(典型算法思想)—— OJ例题算法解析思路
目录 一、1. 两数之和 - 力扣(LeetCode) 算法代码: 1. 问题描述 2. 核心思路 3. 代码实现思路 (1)初始化哈希表 (2)遍历数组 (3)返回结果 4. 时间复杂度分析 …...
Linux软件编程——标准IO(2025.2.14)
目录 一、操作系统 1.重点内容 2.学习方法 二、文件操作 1. 必要性 2. Linux文件类型 3. Linux文件操作方法 4.文件操作思想 5.标准IO 6.函数接口 (1)fopen打开文件 (2)fputc字符写入文件 (3&#x…...
YOLOV8的学习记录(二) yolo8的几个内置模型简介
YOLOv8 是一个多功能的计算机视觉框架,支持多种任务,包括分类(Classify)、检测(Detect)、旋转目标检测(OBB)、姿态估计(Pose)、实例分割(Segment&…...
初阶c语言(练习题,猜随机数,关机程序)
目录 第一题,使用函数编写一个随机数,然后自己猜,猜随机数 第二道题(关机程序) 实现代码(关机程序) 实现代码(猜数字) 前言: 学习c语言,学习…...
中上211硕对嵌入式AI感兴趣,如何有效规划学习路径?
今天给大家分享的是一位粉丝的提问,中上211硕对嵌入式AI感兴趣,如何有效规划学习路径? 接下来把粉丝的具体提问和我的回复分享给大家,希望也能给一些类似情况的小伙伴一些启发和帮助。 同学提问: 中上211,…...
如何在wps中使用AI
1、访问官网:https://ai.wps.cn 2、 下载WPS AI客户端 3、本地安装, 安装时需要关闭wps 安装完成后打开wps,菜单中新增OfficeAI 点击【设置】按钮,弹出如下窗口 选择【大模型设置】中 模型平台选择(硅基流程…...
单例设计模式
简介 单例模式是设计模式中的创建型设计模式,用来保证一个类只能创建一个对象,通常包括饿汉式单例、懒汉式单例。 一、饿汉式单例 饿汉式单例是在类加载时就进行创建的,如: public class Apple {// 由于是单例,因…...
离线量化算法和工具 --学习记录1
离线量化算法和工具 一、离线量化的基础概念1.1、基本流程1.2、量化的优点和缺点1.3、如何生产一个硬件能跑的量化模型1.4、PTQ的概念以及和QAT的区别1.5、离线量化的标准流程1.6、校准数据的选择1.7、量化模式的选择1.8、校准方式的选择1.9、量化算法的选择1.10、写入量化参数…...
Redis 03章——10大数据类型概述
一、which10 (1)一图 (2)提前声明 这里说的数据类型是value的数据类型,key的类型都是字符串 官网:Understand Redis data types | Docs (3)分别是 1.3.1redis字符串࿰…...
芯麦GC6208:革新摄像机与医疗设备的智能音频解决方案
引言 在现代科技的推动下,音频设备和图像处理在各个领域的应用日益广泛。芯麦科技的GC6208是一款创新的音频处理芯片,具有高性能和多功能性,适用于摄像机、医疗设备等多种产品。本文将探讨GC6208在这些领域中的应用及其带来的优势。 1. 在摄…...
代码随想录算法营Day39 | 416. 分割等和子集
416. 分割等和子集 这题换句话说就是是否能找出一个子集,使这个子集的总和等于数组总和的一半,数组里每个元素只能选一次。我们确立一个dp数组,长度为数组总和的half1,内容为False。索引表示和,索引里的内容表示该数是…...
【前端】自己从头实现一个gpt聊天页面
预览 最小化功能点 主界面:侧边栏会话历史、聊天窗口发送和断开。侧边栏:展示会话列表,每个会话包含多条聊天记录, 通过localstorage本地储存和恢复,会话需要重命名和删除。聊天框:区分一下发送者和回答者…...
浅说树形dp
文章目录 前言树形dp的转移方式树形dp的使用的场景小结 初步感知——简单的树形dp例题1例题2 深入分析——树形dp的经典模型最大独立集最小点覆盖最小支配集树上直径 前言 因为树的形式非常适合递归,他所带来的访问顺序也是非常符合拓扑排序的,故而在处…...
Matlab 多项式曲线拟合(三维)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 对于高维空间曲线的拟合,参数化是一种非常好的方式,可以让我们很容易得到我们想要的目标曲线。 假设给定一组数据点 ( u i , x i ) 、 ( u i ...
大语言模型推理中的显存优化 有哪些
大语言模型推理中的显存优化 有哪些 目录 大语言模型推理中的显存优化 有哪些显存优化背景Offloading/Checkpoint原理举例显存优化背景 在大语言模型推理时,显存是显著瓶颈。以开源的BLOOM 176B模型为例,在8张A100计算卡上,通常对话设置下仅能进行批量为10左右的推理。为缓…...
机器学习:k均值
所有代码和文档均在golitter/Decoding-ML-Top10: 使用 Python 优雅地实现机器学习十大经典算法。 (github.com),欢迎查看。 在“无监督学习”中,训练样本的标记信息是未知的,目标是通过对无标记训练样本的学习来揭示数据的内在性质及规律&…...
【图像加密解密】空间混沌序列的图像加密解密算法复现(含相关性检验)【Matlab完整源码 2期】
1、说明 本文给出详细完整代码、完整的实验报告和PPT。 环境:MATLAB2019a 复现文献:[1]孙福艳,吕宗旺.Digital image encryption with chaotic map lattices[J].Chinese Physics B,2011,20(04):136-142. 2、部分报告内容 3 部分源码与运行步骤 3.1 部…...
Unity学习part3
此为b站视频【【Unity教程】零基础带你从小白到超神】 https://www.bilibili.com/video/BV1gQ4y1e7SS/?p55&share_sourcecopy_web&vd_source6e7a3cbb802eb986578ad26fae1eeaab的笔记 1、反向动力学 打开ik处理 public class PlayerMoveController : MonoBehaviour {…...
【2025最新版】软件测试面试题总结(150道题含答案解析)
接口测试面试题 1:你平常做接口测试的过程中发现过哪些 bug? 2:平常你是怎么测试接口的? 3:平常用什么工具测接口? 4: webService 接口是如何测试的? 5:没有接口文档,如何做接口测试? 6&…...
双轴伺服电机驱动控制器AGV、AMR专用双伺服电机驱动控制器解决方案
工业机器人数控机床XY机械手双轴机器人堆垛机专用双轴伺服电机驱动控制器48V 14ARMS带有STO功能,隔离高压CAN/RS485/USB通讯支持编码器和霍尔输入 双伺服电机驱动控制器TMCM2611功能介绍 集成2个伺服电机的控制和驱动于一体供电电压48V,驱动电流14A RM…...