浅谈云计算09 | 服务器虚拟化
服务器虚拟化基础
- 一、虚拟化的定义
- 二、系统虚拟化
- 三、服务器虚拟化的核心要义
- 四、典型实现:探索不同路径
- 五、全虚拟化与半虚拟化
- 六、主流服务器虚拟化技术
一、虚拟化的定义
虚拟化是一种将物理资源抽象为逻辑资源的技术,通过在物理硬件与操作系统、应用程序之间构建虚拟化层,打破物理资源的限制,为用户提供灵活、高效的计算环境。它涵盖了三层重要含义:其一,虚拟化的对象广泛,涵盖服务器、存储、网络等各类 IT 资源;其二,借助虚拟化技术,能够向用户屏蔽底层物理资源的复杂细节,如硬件配置、物理位置等,使用户专注于自身业务需求;其三,用户在虚拟环境中,可无障碍地实现原本在真实物理环境中的功能,甚至能达成更多高级应用场景,如快速部署、灵活迁移等。
虚拟化的主要目标在于简化 IT 资源的管理与运维,为使用者提供统一、标准的资源访问接口。这使得无论是最终用户、应用程序,还是各类服务,在面对 IT 基础设施的动态变化时,都能最大程度降低受影响程度。例如,企业在进行服务器升级或存储扩容时,依托虚拟化技术,用户无需大幅调整应用程序,就能平稳过渡,保障业务的连续性。
从实际效益看,虚拟化技术优势显著。一方面,能显著提升硬件资源利用率,将一台物理服务器分割为多个虚拟机,每个虚拟机运行独立的操作系统与应用程序,避免物理资源闲置浪费;另一方面,大幅降低企业的硬件采购、能耗、运维等成本,以较少的物理设备满足多样的业务需求。在管理层面,通过集中化的虚拟化管理平台,管理员可便捷地对众多虚拟机进行批量部署、监控与调整,极大减轻管理负担。同时,虚拟化技术增强了系统的可靠性与灵活性,虚拟机之间相互隔离,一个虚拟机的故障不会波及其他,且可在不同物理主机间灵活迁移,有效应对突发硬件故障,确保业务稳定运行。
二、系统虚拟化
系统虚拟化作为虚拟化技术的基石,是在一台物理计算机系统上,通过虚拟化管理器(Virtual Machine Monitor,简称 VMM)虚拟出一台或多台虚拟机(Virtual Machine,简称 VM),每个虚拟机都拥有自己的虚拟硬件,进而提供独立的虚拟执行环境。形象地说,它就像是在一台物理主机内开辟出多个 “虚拟主机”,这些 “虚拟主机” 彼此隔离,却又共享物理机的硬件资源,用户在使用时,感觉如同独占一台物理设备。
从架构层面看,VMM 运行在硬件资源层上,处于物理硬件与虚拟机之间,承担着关键的桥梁作用。一方面,它负责为虚拟机提供虚拟的硬件资源,如同为每个 “虚拟主机” 配备虚拟的 CPU、内存、I/O 设备等,至少涵盖 CPU 虚拟化模块、内存虚拟化模块、I/O 设备虚拟化模块这三个基本模块,并且要配备完备的调度机制,以合理安排多个虚拟机对物理资源的使用,同时提供一套完整的管理接口,方便管理员进行管控;另一方面,Hypervisor 还承担着部分物理资源管理的角色,类似于操作系统对硬件的管理职能,包括管理底层物理资源、提供安全隔离机制以及维护系统时间等,确保各个虚拟机在稳定、安全的环境下运行,互不干扰。
以常见的服务器场景为例,一台配备了强大 CPU、大容量内存和高速磁盘阵列的物理服务器,通过系统虚拟化技术,可被分割为多个虚拟机。每个虚拟机都被分配适量的虚拟 CPU 核心、内存空间以及磁盘存储容量,能够独立安装操作系统,如 Windows Server、Linux 等,运行各类应用程序,像 Web 服务器、数据库服务器、邮件服务器等,满足不同业务部门的需求。这不仅避免了为每个业务单独采购物理服务器带来的高昂成本,还提高了硬件资源的整体利用率,实现了资源的精细化分配与管理。
系统虚拟化的发展历程源远流长,1959 年,计算机科学家 Christopher Strachey 发表学术报告,首次提出虚拟化的基本概念,为后续发展奠定理论基础;上世纪六、七十年代,IBM 发明操作系统虚拟机技术,允许用户在一台主机上运行多个操作系统,开启了虚拟化技术的萌芽发展;然而,随着大规模集成电路出现和个人电脑普及,硬件成本降低,使得为共享昂贵硬件而生的虚拟化技术在七八十年代陷入低谷,仅在高档服务器中留存;直至上世纪九十年代末期,随着信息技术对资源管理灵活性、高效性需求的激增,虚拟化技术迎来复兴,从 VMware 基于二进制转换的全虚拟化,到 Denali 和 Xen 的修改客户端操作系统的半虚拟化,再到 Intel 和 AMD 的硬件虚拟化(Intel 的 VT-D 技术以及 AMD 的 SVM 技术),一路演进至今,呈现出全面蓬勃发展的态势,广泛应用于服务器、桌面、存储、网络等多个领域,成为现代信息技术架构不可或缺的核心支撑技术。
三、服务器虚拟化的核心要义
服务器虚拟化是在系统虚拟化基础上,聚焦于服务器领域的专项虚拟化技术应用,旨在对物理服务器的硬件资源进行抽象化管理,将一台物理服务器转化为多个可独立运行操作系统与应用程序的虚拟机。从本质上讲,它是在物理服务器硬件与上层操作系统、应用程序之间巧妙嵌入一层虚拟化软件层,也就是 Hypervisor,以此打破硬件资源与软件运行环境的紧耦合关系,为服务器资源的灵活调配与高效利用创造条件。
与传统的物理服务器部署模式相比,差异显著。传统模式下,一台物理服务器通常仅运行单一操作系统及对应应用程序,各服务器彼此独立,硬件资源无法共享,致使大量硬件资源闲置浪费,尤其在业务负载不均衡时,部分服务器资源利用率低下,而其他服务器却不堪重负;管理层面,每台服务器都需单独运维,包括系统更新、故障排查、性能优化等,运维成本高昂且效率欠佳。
服务器虚拟化则完美破解这些难题,通过 Hypervisor 对物理服务器的 CPU、内存、存储、网络 I/O 等核心硬件资源进行深度抽象,虚拟出多套供虚拟机使用的虚拟硬件资源,使多个虚拟机能够并行运行在同一台物理服务器之上,各虚拟机之间相互隔离,如同独立的物理服务器,各自运行不同的操作系统与多样化应用程序,像 Web 服务器、数据库服务器、邮件服务器等可共驻一台物理主机,实现硬件资源的充分共享,极大提升资源利用率;管理维度,借助集中化的虚拟化管理平台,管理员能对众多虚拟机进行统一管控,批量部署、实时监控、灵活调整资源分配、快速迁移虚拟机等复杂操作均可一键完成,运维效率大幅跃升,管理成本显著降低。
从实际应用成效看,服务器虚拟化优势尽显。在资源利用效率上,能将物理服务器的硬件资源利用率从传统的 10%-30% 提升至 60%-80%,甚至在优化配置下可逼近 100%,避免硬件资源闲置浪费,以少量物理服务器承载更多业务负载;成本控制方面,减少物理服务器采购数量,降低硬件采购成本,同时因服务器数量减少,机房空间占用、电力能耗、散热制冷成本随之削减,运维人力成本因集中管理与便捷操作也大幅降低;灵活性与扩展性上,业务增长时,可迅速在现有物理服务器上创建新虚拟机,即时分配所需资源,或灵活调整已有虚拟机资源配置,满足业务高峰需求,业务收缩时,回收闲置资源,整个过程无需额外添置物理硬件;高可用性保障领域,借助虚拟机实时迁移、快照备份等功能,物理服务器突发故障或需维护时,虚拟机可秒级迁移至其他正常物理服务器,确保业务无中断运行,极大增强业务连续性与系统可靠性;此外,在测试与开发场景,开发人员能快速搭建包含不同操作系统、软件配置的测试环境,测试完成后即刻销毁,反复利用资源,加速产品迭代周期。
四、典型实现:探索不同路径
服务器虚拟化的典型实现方式多样,各有千秋,其中虚拟机监视器(VMM)和虚拟化平台(Hypervisor)是核心支柱。
VMM 作为连接物理硬件与虚拟机的关键纽带,肩负重任。一方面,它负责对物理硬件资源进行深度抽象,将 CPU、内存、I/O 等硬件资源虚拟化为可供虚拟机使用的虚拟资源,为每个虚拟机营造出 “专属” 的硬件环境;另一方面,VMM 承担着虚拟机的全生命周期管理,从创建、启动、暂停、恢复,到销毁,全程精准把控,确保虚拟机稳定运行。同时,它还需精心调度物理资源,依据各虚拟机的负载需求,合理分配 CPU 时间片、内存空间等,保障整体运行效率,并在虚拟机之间构建起坚固的隔离屏障,防止故障蔓延与数据泄露,为虚拟机的安全稳定运行保驾护航。
Hypervisor 则是服务器虚拟化的大脑中枢,分为 Type 1(裸金属型)和 Type 2(托管型)两大类型。裸金属虚拟化似一位直接与硬件对话的勇士,以 VMware ESXi、Microsoft Hyper-V Server、Citrix XenServer 等为代表。它直接将 Hypervisor 安装在物理服务器硬件之上,摒弃中间宿主操作系统环节,让虚拟机能够直接与硬件 “亲密接触”。这带来诸多优势,性能表现卓越,虚拟机指令执行无需多层转换,最大限度减少性能损耗,如同跑车在高速公路上畅行无阻,能满足对性能要求极高的关键业务,如大型数据库、高性能计算任务;资源利用率极高,精准分配硬件资源,避免闲置浪费;兼容性广泛,支持多种类型操作系统并行运行,无论是 Windows、Linux 还是其他小众操作系统,皆能在其上找到立足之地。不过,它也并非完美无缺,Hypervisor 的开发难度颇高,如同打造精密航天器,需投入大量人力、物力进行研发与优化;对硬件适配性要求严格,需特定硬件平台支持,前期硬件选型与适配工作繁杂;运维管理复杂度较高,要求管理员具备深厚专业知识,熟悉 Hypervisor 底层原理与操作指令,才能确保整个系统稳定运行。
寄居虚拟化是一种依托宿主操作系统的实现形式,以 VMware Workstation、Oracle VirtualBox 等为典型代表。在这种模式下,虚拟化软件宛如一位寄居者,寄宿于宿主操作系统之内,借助宿主操作系统提供的 API 和驱动程序,施展创建、管理和运行虚拟机的本领。它的优势显而易见,安装过程如同搭积木般简单快捷,能迅速搭建起虚拟环境,满足临时测试、开发之需;资源利用上,可在一台物理主机上灵活开启多个虚拟机,充分挖掘硬件潜能;管理操作也极为便利,借助丰富的可视化工具,非专业人员也能轻松驾驭虚拟机的启停、监控与资源调配。然而,它也存在短板,虚拟机运行时犹如背负重担,性能会受宿主操作系统的制约,尤其在高负载场景下,性能瓶颈愈发凸显;对宿主操作系统过度依赖,一旦宿主系统 “生病”,如感染病毒、出现故障或资源枯竭,其上运行的所有虚拟机都将受到牵连,面临停机风险;安全防护层面,因与宿主系统共享硬件资源,宿主系统的安全漏洞极易成为攻击虚拟机的 “后门”,安全管理挑战重重;扩展性方面,受宿主操作系统内核参数、资源上限等制约,当虚拟机数量增多或资源需求膨胀时,往往力不从心,难以满足大规模应用场景的扩展需求。
五、全虚拟化与半虚拟化
全虚拟化恰似一位神奇的魔术师,致力于为虚拟机中的操作系统和应用程序营造出一种 “幻境”,让它们误以为自己正直接运行于物理硬件之上,毫无察觉身处虚拟环境。其实现原理精妙绝伦,当虚拟机发出特权指令时,虚拟机监视器(VMM)迅速介入,以二进制转换技术为 “魔法棒”,将这些特权指令巧妙转换为宿主机能够理解并执行的指令,从而实现虚拟机与物理硬件的无缝对接。这意味着,无论是 Windows、Linux,还是其他各类操作系统,都能未经修改,轻松入驻虚拟机,极大拓宽了适用范围。然而,这神奇 “魔法” 背后,也需付出一定代价。频繁的指令转换操作,如同负重奔跑,使得系统资源消耗加剧,性能损耗在所难免。在对计算性能要求极高、数据处理量庞大的场景下,如大型数据库事务处理、高强度科学计算等,全虚拟化的性能短板可能会逐渐显现。
半虚拟化则像一位与操作系统默契配合的搭档,采取截然不同的策略。它坦诚地向虚拟机中的操作系统 “交底”,让其知晓自身处于虚拟环境,进而引导操作系统主动修改内核代码,通过特殊的 API 与虚拟化软件建立紧密、高效的通信桥梁。如此一来,当操作系统需要访问硬件资源时,无需再借助复杂的指令转换,而是直接通过 API 向 VMM 发出请求,大幅削减了系统开销,使得性能表现趋近于物理机水平,在对性能要求苛刻的场景中优势尽显。不过,这种紧密协作也带来了兼容性的挑战。由于需要修改操作系统内核,对于像 Windows 这类闭源且更新频繁的操作系统而言,适配难度颇高,往往难以实现完美兼容,限制了其在部分场景下的应用广度。
从性能维度对比,在 CPU 密集型任务场景下,全虚拟化因指令转换导致的额外开销,使得 CPU 利用率相较于半虚拟化可能会降低 10%-30%,任务执行时间延长;而半虚拟化凭借内核优化与直接通信,能让 CPU 高效运转,快速完成任务。内存访问方面,全虚拟化的内存管理单元(MMU)需频繁模拟物理内存操作,引入额外延迟,半虚拟化则可利用内核感知优势,精准调度内存,提升内存访问速度。
兼容性层面,全虚拟化以广泛兼容著称,能容纳从古老版本到最新发行的各类操作系统,无需考虑内核适配问题,为用户提供极大便利;半虚拟化虽在性能上表现卓越,但受限于内核修改要求,对 Windows 系统及一些特定商业操作系统兼容性欠佳,适用场景相对聚焦。
应用场景抉择上,若企业业务多元,涵盖多种操作系统需求,如软件开发公司需为不同客户搭建包含各异操作系统的测试环境,或是云服务提供商要面向全球用户提供多样化系统选择,全虚拟化凭借其强大兼容性成为不二之选;反之,对于追求极致性能,运行单一、可定制操作系统的场景,如大规模数据中心的 Web 服务器集群、高频交易系统等,半虚拟化则可大显身手,以低延迟、高吞吐量保障业务高效运行。
六、主流服务器虚拟化技术
KVM,全称为 Kernel-based Virtual Machine,是基于 Linux 内核的开源虚拟化技术瑰宝。其架构精妙绝伦,由内核模块与用户空间管理工具珠联璧合而成。内核模块 kvm.ko 宛如一位深藏不露的幕后高手,运行于内核空间,专注于 CPU 和内存的虚拟化,将 Linux 内核巧妙幻化为功能强大的 Hypervisor,为虚拟机的稳定运行筑牢根基;而在用户空间,QEMU 则似一位长袖善舞的台前精灵,负责模拟和管理虚拟机所需的硬件 I/O 设备,从 CPU、内存到存储、网络,一应俱全,与内核模块通过 /dev/kvm 接口紧密交互,实现数据的高效流转。KVM 充分借力于现代处理器的硬件辅助虚拟化功能,如 Intel VT-x 和 AMD-V,让虚拟机如同插上翅膀,能够直接访问物理硬件资源,极大削减了虚拟化层的性能开销。它的优势显著,作为 Linux 内核的 “嫡系” 成员,能无缝融入 Linux 生态系统,与众多开源工具和软件相得益彰,尽享 Linux 内核持续更新带来的性能优化与功能增强福利;支持多种操作系统作为 Guest,无论是 Linux 家族成员,还是 Windows 等其他系统,皆能在 KVM 平台上和谐共处,为用户提供了广阔的选择空间;热插拔、实时迁移等高级特性更是一应俱全,满足企业在云计算、数据中心等复杂场景下对资源灵活调配、高可用性的严苛需求。
Xen 作为开源虚拟化领域的先驱,源自剑桥大学的学术智慧结晶,以其开创性的半虚拟化技术独树一帜。它采用裸金属架构,Xen Hypervisor 如同一位坚毅的守护者,直接运行在物理硬件之上,掌控全局资源调度与虚拟化管理大权。在其独特的管理模式中,Dom0 地位超然,作为特权虚拟机,犹如一位尽职的管家,运行 Linux 或 Unix 操作系统,肩负起管理所有硬件资源、驱动程序的重任,并为其他普通虚拟机(DomU)提供贴心服务;DomU 则专注于运行客户操作系统与应用程序,各司其职,保障整个系统高效运转。值得一提的是,Xen 为兼容封闭式操作系统,如 Windows,特别支持全虚拟化模式,借助 CPU 硬件辅助虚拟化功能与精心改良的 QEMU 工具,为其模拟出完整硬件幻境。同时,在全虚拟化环境下引入半虚拟化的 PV-on-HVM 设备,结合 MMU 硬件辅助虚拟化技术,让磁盘和网络访问如丝般顺滑,兼具兼容性与高性能。Xen 的优势突出,广泛的 CPU 架构兼容性令人瞩目,从主流的 x86/x86_64 到 RISC 架构的 IA64、ARM 等,皆能轻松驾驭,为不同硬件平台的虚拟化需求提供一站式解决方案;半虚拟化技术使得其在性能表现上可圈可点,尤其在对性能敏感的场景中,如高性能计算、云计算平台,能以低延迟、高吞吐量助力业务腾飞;开源特性吸引了全球开发者的目光,开源社区的持续贡献让 Xen 不断进化,功能日益丰富,适应性愈发广泛。
Hyper-V 作为微软倾心打造的虚拟化利器,依托 Windows 庞大生态,在企业级和个人用户的服务器与桌面虚拟化领域占据重要一席。其架构设计独具匠心,以虚拟化根管理器为核心,协调各方资源,运行在 Windows 操作系统之上,掌控虚拟机的生杀大权;虚拟化服务提供程序隐匿其中,默默为虚拟机运行提供关键支持;虚拟交换机则似一座无形桥梁,无缝连接宿主机与虚拟机,保障网络通信顺畅无阻。Hyper-V 从诞生之初便与 Windows Server 紧密捆绑,随着 Windows 系统版本迭代,不断进化升级,在 Windows Server 2008 中崭露头角,后续版本持续强化功能,更被集成到 Windows 10 客户端操作系统,为个人用户开启便捷虚拟化之门。它对 Windows 操作系统的天然亲和性,让用户在管理与使用上如鱼得水,借助 Windows 系统成熟的管理工具、丰富的软件生态,无论是创建、配置虚拟机,还是进行资源监控、性能优化,都能轻松上手;动态内存、快照等特色功能实用便捷,动态内存可依据虚拟机负载动态分配释放内存,优化资源利用,快照则能随时定格虚拟机状态,便于快速恢复与测试,为企业运维减负增效;在企业级市场,凭借微软强大的技术支持与品牌影响力,广泛应用于各类数据中心、企业办公场景,成为企业数字化转型的坚实助力。
相关文章:
浅谈云计算09 | 服务器虚拟化
服务器虚拟化基础 一、虚拟化的定义二、系统虚拟化三、服务器虚拟化的核心要义四、典型实现:探索不同路径五、全虚拟化与半虚拟化六、主流服务器虚拟化技术 一、虚拟化的定义 虚拟化是一种将物理资源抽象为逻辑资源的技术,通过在物理硬件与操作系统、应…...
【Ubuntu 24.04】虚拟机常见问题解决
1.24开启3D加速黑屏 参考文章:Ubuntu24开机黑屏,VMware卡死,虚拟机繁忙解决方案 没有3D加速就没有动画,所以我们需要开启3D加速,但是直接开启3D加速会黑屏 由于Ubuntu24内部的图形加速驱动异常,因此需要更新…...
【已解决】【记录】2AI大模型web UI使用tips 本地
docker desktop使用 互动 如果需要发送网页链接,就在链接上加上【#】号 如果要上传文件就点击这个➕号 中文回复 命令它只用中文回复,在右上角打开【对话高级设置】 输入提示词(提示词使用英文会更好) Must reply to the us…...
iostat命令详解
iostat 命令是 I/O statistics(输入/输出统计)的缩写,用来报告系统的 CPU 统计信息和块设备及其分区的 IO 统计信息。iostat 是 sysstat 工具集的一个工具,在 Ubuntu 系统中默认是不带 iostat 命令的,需要自行安装: $ sudo apt in…...
工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!
在工程管理领域,精准记录现场信息至关重要。水印相机拍照功能,为工程人员提供了强大的现场信息记录工具,助力工程管理和统计工程量,更可以将图片分享到电脑、分享给同事,协同工作。 一、打开图纸 打开手机版CAD快速看图…...
vue城市道路交通流量预测可视化系统
文章结尾部分有CSDN官方提供的学长 联系方式名片 文章结尾部分有CSDN官方提供的学长 联系方式名片 关注B站、收藏、不迷路! 项目亮点 编号:R09 🚇 网站大屏管理三大前端、vuespringbootmysql、前后端分离架构 🚇 流量预测道路查询…...
秩为1的矩阵可以表示为两个向量的外积
秩为1的矩阵可以表示为两个向量的外积,为什么 秩为 1 的矩阵可以表示为两个向量的外积,原因源于矩阵的线性代数性质。以下是详细的解释: 1. 矩阵的秩定义 矩阵的秩是矩阵列向量(或行向量)线性无关的最大个数。当矩阵…...
深入浅出 Android AES 加密解密:从理论到实战
深入浅出 Android AES 加密解密:从理论到实战 在现代移动应用中,数据安全是不可忽视的一环。无论是用户隐私保护,还是敏感信息的存储与传输,加密技术都扮演着重要角色。本文将以 AES(Advanced Encryption Standard&am…...
MySQL 与 Redis 的数据一致性问题
读数据的逻辑基本一致问题1: 一致性有哪些?MySQL 与 Redis 的数据一致性方案有哪些?先写MySQL还是先写Redis?缓存数据是更新还是清除?强一致还是最终一致?问题: 如果mysql写成功了,但是Redis写(删除)失败了怎么办?重试机制的幂等问题如何解决? 方案1: 先更新 MySQL 再清…...
【论文笔记】多个大规模数据集上的SOTA绝对位姿回归方法:Reloc3r
abstract 视觉定位旨在确定查询图像相对于姿势图像数据库的相机姿势。 近年来,直接回归相机姿势的深度神经网络由于其快速推理能力而受到欢迎。 然而,现有方法很难很好地推广到新场景或提供准确的相机姿态估计。 为了解决这些问题,我们提出了…...
UE5 打包项目
UE5 打包项目 flyfish 通过 “文件”->“打开项目”,然后在弹出的对话框中选择项目文件(通常是以.uproject为后缀的文件) 选择目标平台: 在 UE5 主界面中,找到 “平台”(Platforms)。根据…...
JavaEE之定时器及自我实现
在生活当中,有很多事情,我们不是立马就去做,而是在规定了时间之后,在到该时间时,再去执行,比如:闹钟、定时关机等等,在程序的世界中,有些代码也不是立刻执行,…...
好用的php商城源码有哪些?
选择一个优秀的商城工具,能更好地帮助大家建立一个好用的商城系统。目前比较流行的都是开源PHP商城系统,那么现实中都有哪些好用的PHP商城源码值得推荐呢?下面就带大家一起来了解一下。 1.TigShop 【推荐指数】:★★★★★☆ 【推…...
GO语言实现KMP算法
前言 本文结合朱战立教授编著的《数据结构—使用c语言(第五版)》(以下简称为《数据结构(第五版)朱站立》)中4.4.2章节内容编写,KMP的相关概念可参考此书4.4.2章节内容。原文中代码是C语言&…...
国产Docker可视化面板Dpanel的安装与功能解析
国产Docker可视化面板Dpanel的安装及功能介绍 Docker 可视化面板系统,提供完善的 docker 管理功能。 支持查看基本信息、运行状态统计、网络统计、磁盘统计、用量统计等功能 容器管理: 创建/修改容器 支持基本配置、环境变量、…...
Elaticsearch常用的浏览器插件
Elasticsearch head https://github.com/mobz/elasticsearch-headElasticsearch Tools https://www.chajianxw.com/developer/31765.html#google_vignetteElasticvue https://blog.csdn.net/weixin_60457220/article/details/143595846...
LabVIEW数据库管理系统
LabVIEW数据库管理系统(DBMS)是一种集成了数据库技术与数据采集、控制系统的解决方案。通过LabVIEW的强大图形化编程环境,结合数据库的高效数据存储与管理能力,开发人员可以实现高效的数据交互、存储、查询、更新和报告生成。LabV…...
【HM-React】08. Layout模块
基本结构和样式reset 结构创建 实现步骤 打开 antd/Layout 布局组件文档,找到示例:顶部-侧边布局-通栏拷贝示例代码到我们的 Layout 页面中分析并调整页面布局 代码实现 pages/Layout/index.js import { Layout, Menu, Popconfirm } from antd impor…...
SpringCloud
1.认识微服务 随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢? 1.0.学习目标 了解微服务架构的优缺点 1.1.单体架构 单体架构:将业务的所有功…...
HarmonyOS应用开发者初级认证最新版– 2025/1/13号题库新版
1.欢迎各位读者,本文档来自鸿蒙开发学员亲测,最新版。(考试时直接Ctrlf进行搜索,一定要认真比对答案,有的答案相似度很高)!!!!!! 欢迎…...
基于微信小程序的汽车销售系统的设计与实现springboot+论文源码调试讲解
第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…...
[免费]SpringBoot+Vue新能源汽车充电桩管理系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue新能源汽车充电桩管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue新能源汽车充电桩管理系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 随着信息化时代的到来࿰…...
《机器学习》之K-means聚类
目录 一、简介 二、K-means聚类实现步骤 1、初始化数据点、确定K值 2、通过距离分配数据点 3、更新簇中心 4、 迭代更新 三、聚类效果评价方式 1、轮廓系数的定义 2、整体轮廓系数 3、使用场景 4、优点 5、缺点 6、代码实现方法 四、K-means聚类代码实现 1、API接…...
【芯片封测学习专栏 -- 2D | 2.5D | 3D 封装的区别和联系】
请阅读【嵌入式开发学习必备专栏 Cache | MMU | AMBA BUS | CoreSight | Trace32 | CoreLink | ARM GCC | CSH】 文章目录 Overview线键合(wire-bonding)封装FOWLP2D封装2.5D 封装硅通孔(TSV)硅中介层无TSV的2.5D 3D封装 Overview 我们先要了解一下&…...
E12.【C语言】练习:求两个数的最大公约数
目录 1.枚举 2.辗转相除法 1.枚举 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main() {int a 0;int b 0;int tmp 0;scanf("%d %d", &a, &b);if (a < b){for (int i1; i < a; i){if (0a% i && 0b%i)tmp i;}}if …...
SVG图表
1、时序图 英文 #mermaid-svg-OyLuBTPnpbW9XDOB {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-icon{fill:#552222;}#mermaid-svg-OyLuBTPnpbW9XDOB .error-text{fill:#552222;stroke:#55…...
IDEA中创建maven项目
1. IDEA中创建maven项目 在IDEA中创建Maven项目,前提是已经安装配置好Maven环境。如还未配置安装Maven的,请先下载安装。如何下载安装,可参考我另外篇文章:maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…...
Laravel 中 Cache::remember 的基本用途
在 Laravel 中,Cache::remember 方法用于缓存数据,以提高应用程序的性能。当需要从数据库或其他较慢的数据源中检索数据时,可以使用 Cache::remember 来检查请求的数据是否已经被缓存。如果数据已缓存,则直接从缓存中读取…...
云数赋能:开启企业数字化转型的高速通道
目录 一、引言:数字化转型浪潮下的企业挑战与机遇 二、认识云数赋能 2.1 云计算:企业数字化的强大基石 2.2 大数据:挖掘企业潜藏价值的宝藏 三、云数赋能如何加速企业数字化转型 3.1 优化企业运营管理 3.2 提升客户体验 3.3 推动创新…...
Spring底层核心原理解析
本次分享会把Spring中核心知识点都给大家进行串讲,让大家对Spring的底层有一个整体的大致了解,比如: Bean的生命周期底层原理依赖注入底层原理初始化底层原理推断构造方法底层原理AOP底层原理Spring事务底层原理 但都只是大致流程&#…...
昵称 校验
1. 基本格式校验 1. 长度限制 • 设置最小和最大字符长度:2-20 个字符(常见范围)。 • 避免昵称过短或过长影响显示和识别。 • 示例: • 2 ≤ 长度 ≤ 20:let minLength 2 let maxLength 20 if nickname.count <…...
25/1/12 嵌入式笔记 学习esp32
了解了一下位选线和段选线的知识: 位选线: 作用:用于选择数码管的某一位,例如4位数码管的第1位,第2位) 通过控制位选线的电平(高低电平),决定当前哪一位数码管处于激活状…...
PostgreSQL 超级管理员详解
1. 什么是 PostgreSQL 超级管理员 PostgreSQL 超级管理员(superuser)是拥有数据库系统最高权限的用户。他们可以执行任何数据库操作,包括但不限于创建和删除数据库、用户、表空间、模式等。超级管理员权限是 PostgreSQL 中权限的最高级别。 …...
【centos】校时服务创建-频率修改
在 NTP 配置中,校时频率通常是由 NTP 协议自动管理的,NTP 会根据网络延迟和时间偏差动态调整校时频率。不过,您可以通过配置文件中的一些参数来影响 NTP 的行为。 如果想要更改 NTP 的校时频率,可以考虑以下几个方面:…...
mybatis分页插件:PageHelper、mybatis-plus-jsqlparser(解决SQL_SERVER2005连接分页查询OFFSET问题)
文章目录 引言I PageHelper坐标II mybatis-plus-jsqlparser坐标Spring Boot 添加分页插件自定义 Mapper 方法中使用分页注意事项解决SQL_SERVER2005连接分页查询OFFSET问题知识扩展MyBatis-Plus 框架结构mybatis-plus-jsqlparser的 Page 类引言 PageHelper import com.github.p…...
二、模型训练与优化(4):模型优化-实操
下面我将以 MNIST 手写数字识别模型为例,从 剪枝 (Pruning) 和 量化 (Quantization) 两个常用方法出发,提供一套可实际动手操作的模型优化流程。此示例基于 TensorFlow/Keras 环境,示范如何先训练一个基础模型,然后对其进行剪枝和…...
开发人员学习书籍推荐(C#、Python方向)
作为一名开发人员,持续学习和提升自己的技术水平是至关重要的。如今,技术不断更新换代,新的开发框架、语言和工具层出不穷。对于刚入行的开发者或希望深入某一领域的工程师来说,选对书籍是学习的捷径之一。本篇文章将推荐一些经典…...
【HTML+CSS+JS+VUE】web前端教程-31-css3新特性
圆角 div{width: 100px;height: 100px;background-color: saddlebrown;border-radius: 5px;}阴影 div{width: 200px;height: 100px;background-color: saddlebrown;margin: 0 auto;box-shadow: 10px 10px 20px rgba(0, 0, 0, 0.5);}...
【Elasticsearch】批量操作:优化性能
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探…...
sklearn-逻辑回归-制作评分卡
目录 数据集处理 分箱 分多少个箱子合适 分箱要达成什么样的效果 对一个特征进行分箱的步骤 分箱的实现 封装计算 WOE 值和 IV值函数 画IV曲线,判断最佳分箱数量 结论 pd.qcut 执行报错 功能函数封装 判断分箱个数 在银行借贷场景中,评分卡是…...
Saas数据库迁移单租户数据
1、背景 租户使用Saas系统,用一段时间后要将系统、数据搬迁到自建服务器。该Saas系统没有按租户分库,且数据库数据量太大,需要将单租户的数据抽取出来。Saas系统使用Mysql5.7数据库,主要使用INFORMATION_SCHEMA.COLUMNS表进行数据…...
23_Spring Boot中Redis缓存实现
1.基于注解的Redis缓存实现 下面我们在之前Spring Boot默认缓存管理的基础上引入Redis缓存组件,使用基于注解的方式讲解Spring Boot整合Redis缓存的具体实现。 1.使用@Cacheable、@CachePut、@CacheEvict注解定制缓存管理。对CommentServiceImpl类中的方法进行修改,使用@Ca…...
Vue 学习之旅:核心技术学习总结与实战案例分享(vue指令下+计算属性+侦听器)
Vue 学习之旅:核心技术学习总结与实战案例分享 文章目录 Vue 学习之旅:核心技术学习总结与实战案例分享一、指令补充(一)指令修饰符(二)v-bind 对样式操作的增强(三)v-model 应用于其…...
【Linux网络编程】数据链路层 | MAC帧 | ARP协议
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 🌈个人主页: 南桥几晴秋 🌈C专栏: 南桥谈C 🌈C语言专栏: C语言学习系…...
vscode vue 自动格式化
vscode vue 自动格式化 安装Prettier和Vetur插件 选择设置,并且转到编辑文件。增加如下内容。 {"editor.formatOnSave": true,"editor.defaultFormatter": "esbenp.prettier-vscode","[vue]": {"editor.defaultFor…...
GitCode G-Star 光引计划终审前十名获奖项目公示
在技术的浩瀚星空中,GitCode 平台上的 G-Star 项目熠熠生辉。如今,“光引计划” 已圆满落幕,众多 G-Star 项目作者,一同分享项目在 GitCode 平台托管的宝贵体验,并深入挖掘平台的多样玩法。 众多投稿纷至沓来…...
Postgres14.4(Docker安装)
Postgres14.4(Docker安装) 一,Docker拉取镜像 docker pull postgres:14.4 #检查镜像是否拉取成功 docker images | grep postgres二,新建挂载目录,并运行容器 mkdir -p /data/postgre/data chmod 777 /data/postgre/…...
R.swift库的详细用法
R.swift 是一个 Swift 工具库,它提供了一个自动生成的类 R,使得你可以通过类型安全的方式访问项目中的资源,例如图片、字体、颜色、XIB 文件等。通过 R.swift,你可以避免字符串类型的错误,提升代码的可维护性。 以下是 R.swift 库的详细用法: 1. 安装 R.swift 使用 Sw…...
Redis高危漏洞-GHSA-whxg-wx83-85p5:用户可能会使用特制的 Lua 脚本来触发堆栈缓冲区溢出
官方漏洞描述:https://github.com/redis/redis/security/advisories/GHSA-whxg-wx83-85p5 Redis 是一个高性能的键值数据库,广泛用于缓存和存储数据。由于其功能丰富,Redis 允许用户通过 Lua 脚本来执行服务器端的操作。Lua 脚本通常用来在 …...
分组通道自注意力G-CSA详解及代码复现
G-CSA定义 G-CSA (Grouped Channel Self-Attention) 是一种创新性的视觉注意力机制,巧妙地结合了卷积和自注意力的优势。通过将输入特征图划分为多个独立的通道组,在每个组内执行自注意力操作,G-CSA实现了高效的全局信息交互,同时保留了局部特征细节。这种方法不仅提高了模…...