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

[嵌入式系统-28]:开源的虚拟机监视器和仿真器:QEMU(Quick EMUlator)与VirtualBox、VMware Workstation的比较

目录

一、QEMU概述

1.1 QEMU架构

1.2 QEMU概述

1.3 什么时候需要QEMU

1.4 QEMU两种操作模式

1.5 QEMU模拟多种CPU架构

二、QEMU与其他虚拟机的比较

2.1 常见的虚拟化技术

2.1 Linux KVM

2.2 Windows VirtualBox

2.3 Windows VMware workstation

三、VirtualBox、VMware Workstation 和 QEMU

3.1 比较方式1

3.2 比较方式2

3.3 VirtualBox、VMware Workstation 和 QEMU 对嵌入式系统的支持程度比较


一、QEMU概述

1.1 QEMU架构

1.2 QEMU概述

QEMU(Quick EMUlator)是一个开源的虚拟机监视器和仿真器,具有广泛的应用领域。

以下是有关 QEMU 的概述:

  1. 多平台支持:QEMU 可以在多个宿主操作系统(如Linux、Windows、macOS等)上运行,并支持模拟多种处理器架构,包括x86、ARM、MIPS、PowerPC等,以满足不同平台的虚拟化需求。

  2. 虚拟机仿真:QEMU 提供了对完整目标虚拟机系统的模拟,包括处理器、内存、外设等硬件设备的模拟。用户可以在虚拟机中安装和运行操作系统,实现对完整系统的仿真。

  3. 用户模式:QEMU 用户模式可让用户在主机操作系统(Window或Linux)上运行不同嵌入式架构的应用程序,通过二进制翻译技术实现跨平台运行,是一种轻量级的虚拟化解决方案

  4. 硬件模拟器:QEMU 提供了强大的硬件模拟器,可以模拟处理器、内存、硬盘、网卡、USB设备等多种硬件设备,使得虚拟机可以与各种外部设备进行交互。

  5. Device model:QEMU 提供了多样化的设备模型,可以模拟各种外设和硬件设备,包括网络设备、图形设备、存储设备等,满足虚拟机对外设的模拟需求。

  6. 虚拟化技术研究:QEMU 作为一个开源项目,广泛用于虚拟化技术的研究和开发,为虚拟化平台和工具提供了坚实的基础。

  7. 命令行接口:QEMU 提供了监视器(Monitor)命令行界面,用于管理和控制虚拟机的运行,包括配置虚拟机参数、执行调试和诊断操作等。

总的来说,QEMU 是一个功能强大、灵活性高的虚拟机监视器和仿真器,适用于各种应用场景,包括嵌入式系统开发、操作系统研究、软件开发和测试等。它的开源性和跨平台性使得它成为了虚拟化领域中的重要工具之一。

1.3 什么时候需要QEMU

QEMU(Quick EMUlator)在以下情况下可能会被使用:

  1. 跨平台开发:当您需要在一种处理器架构(如X86)上开发、测试或运行另一种处理器架构(如ARM/MIPS架构)的应用程序时,QEMU可以用作跨平台开发工具。通过QEMU的用户模式,您可以在主机操作系统上运行不同架构的应用程序,无需真实的目标硬件,极大的节省了开发成本,提升了开发效率

  2. 嵌入式系统开发:QEMU可以用于嵌入式系统开发,通过模拟目标处理器架构来运行和调试嵌入式软件。您可以在QEMU中创建一个仿真环境,安装嵌入式操作系统,如Linux、RT Thread,以及对应的设备驱动程序,进行软件开发和调试

  3. 虚拟化研究和开发:QEMU在虚拟化领域中具有重要作用,用于研究、开发和测试虚拟化技术。它提供了模拟多种处理器架构、硬件设备和外设的能力,并可用作虚拟机监视器进行虚拟机的创建和管理。

  4. 操作系统开发与测试:QEMU是一个方便的工具,可用于开发和测试操作系统。您可以在QEMU中模拟不同类型的计算机系统,运行和测试操作系统内核,进行调试和性能优化

  5. 应用程序兼容性测试:如果您为特定平台上的应用程序提供兼容性测试服务,QEMU可以用作测试工具。您可以在QEMU中创建虚拟机,模拟目标平台,然后在其上运行和测试应用程序的兼容性和性能。

  6. 教育和学习:QEMU是一个教学和学习的有用工具,可以帮助学生和开发者理解和实践虚拟化、操作系统和计算机系统的相关概念。

总之,QEMU在许多情况下都是一个有用的工具,特别是在需要模拟不同处理器架构、硬件设备和外设的场景下。它可以帮助开发者进行跨平台开发、嵌入式系统开发、虚拟化技术研究等任务。

1.4 QEMU两种操作模式

QEMU 有两种主要操作模式,分别是用户模式(User mode)和系统模式(System mode):

  1. 用户模式(User mode)

    • 在用户模式下,QEMU 可以在主机操作系统上模拟目标处理器架构的应用程序的运行,而无需对整个操作系统进行虚拟化。这种模式适用于跨平台应用程序开发和测试。
    • QEMU会将目标架构的二进制指令翻译成主机平台的指令,实现应用程序的跨平台运行。
    • 用户模式适用于在一个已有的操作系统环境中模拟其他处理器架构的应用程序,使用户能够在不同的平台上运行应用程序。
  2. 系统模式(System mode)

    • 在系统模式下,QEMU 提供了对完整虚拟机的模拟,包括处理器、内存、外设等硬件设备的模拟。
    • 用户可以在系统模式下安装和运行操作系统,实现对整个系统的仿真,包括启动一个完整的虚拟机。
    • 系统模式适用于需要模拟整个操作系统和硬件环境的场景,比如操作系统开发、虚拟化研究和嵌入式系统开发。

通过这两种操作模式,QEMU 可以满足不同用户和应用场景的需求,提供了灵活且强大的虚拟化功能。用户可以根据实际情况选择适合的操作模式进行虚拟化

1.5 QEMU模拟多种CPU架构

QEMU是一个功能强大的虚拟化和仿真工具,可以模拟多种CPU架构,包括:

  1. x86架构:QEMU可以模拟x86架构的CPU,包括32位和64位的x86指令集。

  2. ARM架构:QEMU支持广泛的ARM处理器架构,如ARMv5、ARMv6、ARMv7和ARMv8。

  3. PowerPC架构:QEMU可以模拟PowerPC架构的CPU,包括 PowerPC 64 和 PowerPC 32。

  4. MIPS架构:QEMU支持多种MIPS处理器架构,如MIPS32和MIPS64。

  5. SPARC架构:QEMU可以模拟SPARC架构的CPU,包括32位和64位的SPARC指令集。

  6. RISC-V架构:QEMU也支持最新的RISC-V架构,包括RV32(32位)和RV64(64位)。

此外,QEMU还支持其他一些较少使用的CPU架构,如Alpha、S390和SH4等。

QEMU的灵活性和可扩展性使其成为多种平台和架构的首选仿真工具。用户可以根据具体的需求和场景选择合适的CPU架构来进行仿真和虚拟化操作。

二、QEMU与其他虚拟机的比较

2.1 常见的虚拟化技术

2.1 Linux KVM

Linux KVM(Kernel-based Virtual Machine)是一个基于 Linux 内核的开源虚拟化解决方案,它允许将 Linux 内核转变为一个虚拟化监视器,提供虚拟机的管理和运行环境。

以下是关于 Linux KVM 的一些关键信息:

  1. 架构:Linux KVM 利用 Linux 内核的虚拟化特性,通过使用硬件虚拟化扩展(如Intel VT和AMD-V)来提供虚拟机的性能和安全性。它利用了 Linux 内核的虚拟化模块(KVM 模块)作为虚拟化基础,用户可以在 Linux 主机上运行虚拟机。

  2. 性能:Linux KVM 的硬件加速虚拟化技术使得虚拟机可以直接访问宿主机的硬件资源,因此提供了较高的性能。通过与硬件虚拟化扩展结合,Linux KVM 能够实现接近原生性能的虚拟化。

  3. 管理工具:Linux KVM 配套了一系列管理虚拟机的工具,其中最常用的是 libvirt。libvirt 是一个用于管理不同虚拟化技术的工具集,它提供了 API 和命令行工具,用于配置、创建、启动和监控虚拟机。

  4. 虚拟机支持:Linux KVM 支持各种客户操作系统的虚拟化。用户可以在 Linux KVM 上运行 Linux、Windows、BSD 等多种操作系统,实现不同操作系统之间的隔离和管理。

  5. 安全性:由于 Linux KVM 利用硬件虚拟化技术,并且直接依赖 Linux 内核,因此提供了较高的安全性。虚拟机之间有较好的隔离,并且可以通过 Linux 内核的安全功能进行加固和保护。

总的来说,Linux KVM 是一种成熟、高性能且安全的虚拟化解决方案,适用于服务器虚拟化、云计算平台等需求。它与 Linux 内核紧密结合,提供了可靠的虚拟化环境,并且得到了业界的广泛认可和支持。

2.2 Windows VirtualBox

VirtualBox 是一款由 Oracle 公司开发的开源虚拟化软件,支持在各种主机操作系统上运行多个客户操作系统。下面是关于 Windows VirtualBox 的一些关键信息:

  1. 支持的操作系统:VirtualBox 可以在 Windows 平台上安装和运行,同时也支持其他操作系统,如 macOS、Linux 和 Solaris 等。这使得用户可以在 Windows 环境下轻松创建和管理虚拟机。

  2. 特点

    • 用户友好:VirtualBox 提供了直观的用户界面,方便用户进行虚拟机的创建、配置和管理。
    • 免费开源:VirtualBox 是开源软件,用户可以免费获取和使用,并可以根据需要自行定制和修改。
    • 可扩展性:VirtualBox 支持丰富的扩展功能和插件,用户可以通过安装扩展包来增强虚拟机的功能。
    • 性能稳定:VirtualBox 在 Windows 环境下提供了稳定的性能,并支持硬件加速和多核处理器等特性。
  3. 功能

    • 虚拟机创建与管理:VirtualBox 允许用户创建和管理多个虚拟机,可以在虚拟机中安装不同的客户操作系统。
    • 虚拟设备支持:VirtualBox 提供了对各种虚拟设备的支持,包括虚拟 CPU、内存、硬盘、网络和 USB 设备等。
    • 快照功能:VirtualBox 支持虚拟机快照功能,用户可以保存当前虚拟机状态的快照,并在需要时恢复到特定的快照点。
    • 共享文件夹:VirtualBox 允许用户在虚拟机和主机之间共享文件夹,方便文件传输和共享。

总的来说,Windows VirtualBox 是一个功能丰富、易于使用的虚拟化软件,适用于个人用户、开发者和企业用户在 Windows 环境下搭建虚拟化环境,进行开发、测试和运行多个操作系统。

VirtualBox可以模拟多种CPU架构,包括:

  1. x86架构:VirtualBox主要用于模拟x86架构的CPU,如Intel和AMD的处理器。

  2. x86_64架构:VirtualBox也能够模拟64位的x86架构CPU,即x86_64或AMD64架构。

  3. ARM架构:VirtualBox支持模拟ARM处理器架构,如ARMv7和ARMv8。

  4. PowerPC架构:VirtualBox还可以模拟PowerPC架构的CPU,用于运行PowerPC系统。

需要注意的是,虽然VirtualBox可以模拟这些CPU架构,但模拟性能可能与真实硬件有所差异,特别是对于需要大量计算资源的场景。 同时,在模拟不同架构的CPU时,还需要相应的虚拟机映像或操作系统镜像才能运行相应的软件。

2.3 Windows VMware workstation

VMware Workstation 是 VMware 公司推出的虚拟化软件,主要用于在个人计算机上创建和管理虚拟机。以下是关于 Windows VMware Workstation 的一些关键信息:

  1. 功能特点

    • 多操作系统支持:VMware Workstation 可以在 Windows 主机上同时运行多个不同的客户操作系统,如 Windows、Linux、macOS 等。
    • 快照功能:支持虚拟机的快照功能,用户可以保存虚拟机的状态并在需要时恢复到特定快照点。
    • 共享文件夹:允许用户在虚拟机和主机之间共享文件夹,方便文件传输和共享。
    • 连接到虚拟云环境:支持连接到云服务提供商的虚拟机实例,方便开发和测试云应用。
  2. 性能和稳定性

    • VMware Workstation 提供了良好的性能和稳定性,在 Windows 环境下能够高效运行多个虚拟机实例。
    • 支持硬件加速等功能,提升虚拟机的性能表现。
  3. 虚拟网络编辑器

    • 提供虚拟网络编辑器,用户可以定义和配置虚拟网络,模拟不同网络环境下的网络通信。
  4. 版本和许可

    • VMware Workstation 提供不同版本,如 VMware Workstation Player 和 VMware Workstation Pro,用户可以根据需要选择适合的版本。
    • 需要购买许可证来使用 VMware Workstation Pro,而 VMware Workstation Player 可以免费使用。

总的来说,VMware Workstation 是一款功能强大且稳定的虚拟化软件,在 Windows 环境下为用户提供了创建、运行和管理虚拟机的解决方案,适用于开发、测试、演示等各种场景。

VMware Workstation 可以模拟多种 CPU 架构,包括:

  1. x86 架构:VMware Workstation 主要用于模拟 x86 架构的 CPU,包括 Intel 和 AMD 的处理器。

  2. x86_64 架构:VMware Workstation 支持模拟 64 位的 x86 架构 CPU,即 x86_64 或 AMD64 架构。

  3. ARM 架构:最新版本的 VMware Workstation 也可以模拟 ARM 处理器架构,如 ARMv8。

  4. PowerPC 架构:部分版本的 VMware Workstation 可以模拟 PowerPC 架构的 CPU,用于运行 PowerPC 系统。

需要注意的是,虽然 VMware Workstation 支持多种 CPU 架构的模拟,但在模拟性能和兼容性方面可能会有一定差异,特别是对于需要较高计算资源的场景。在模拟不同架构的 CPU 时,还需配合相应的虚拟机映像或操作系统镜像才能正确运行相应的软件。

三、VirtualBox、VMware Workstation 和 QEMU

3.1 比较方式1

VirtualBox、VMware Workstation 和 QEMU 是三种常见的虚拟化软件,它们都具有各自的特点和适用场景。下面是它们的比较:

  1. VirtualBox

    • 开源免费:VirtualBox 是一款开源软件,可以免费获取和使用。
    • 易用性:具有直观的用户界面,适合初学者和个人用户使用。
    • 跨平台支持:支持在多种操作系统上运行,如 Windows、macOS、Linux 等。
    • 功能丰富:提供了丰富的功能,如快照、共享文件夹等。
    • 性能:性能较好,适用于轻量级虚拟化需求。
  2. VMware Workstation

    • 商业软件:VMware Workstation 是一款商业软件,提供了更多高级功能。
    • 性能优化:在性能和稳定性上有一定优势,支持硬件加速等技术。
    • 专业特性:支持连接到云服务、虚拟网络编辑器等专业特性。
    • 多版本选择:提供不同版本,适合个人用户和企业用户使用。
  3. QEMU

    • 开源软件:QEMU 是一款开源虚拟化软件,提供了强大的虚拟化功能。
    • 系统级虚拟化:支持系统级虚拟化,可以模拟整个计算机系统。
    • 性能:性能相对较高,适合高性能计算和虚拟化需求。
    • 灵活性:支持模拟多种处理器架构,如 x86、ARM 等。

总的来说,选择使用哪种虚拟化软件取决于用户的需求和使用场景。如果你是初学者或个人用户,并且注重易用性和免费性,可以选择 VirtualBox;如果你有一定的虚拟化经验并需要更高级的功能和性能,可以考虑使用 VMware Workstation;而如果你需要高性能和灵活性,并且对系统架构有特殊需求,可以考虑使用 QEMU。

3.2 比较方式2

下面是VirtualBox、VMware Workstation和QEMU的更详细比较:

  1. 虚拟化技术和支持的操作系统

    • VirtualBox:使用硬件虚拟化技术,如 Intel VT-x 或 AMD-V,并支持在各种操作系统上运行虚拟机。
    • VMware Workstation:同样使用硬件虚拟化技术,并且支持广泛的操作系统,包括 Windows、Linux、macOS和Solaris。
    • QEMU:支持系统级虚拟化,可以模拟多个处理器架构,例如 x86、ARM、PowerPC等
  2. 用户界面和易用性

    • VirtualBox:提供直观且易于使用的图形用户界面(GUI),适合初学者和个人用户。
    • VMware Workstation:GUI非常友好,具有高度可定制性,同时提供了命令行界面(CLI),适合专业和企业用户。
    • QEMU:以命令行为主,没有提供图形用户界面,适合专业用户和开发人员。
  3. 虚拟机管理和功能

    • VirtualBox:提供了丰富的虚拟机管理功能,如快照、复制、共享文件夹和虚拟网络等。
    • VMware Workstation:具有更多高级管理功能,如团队协作、连接到云环境、多屏幕支持以及虚拟网络编辑器等。
    • QEMU:提供了基本的虚拟机管理功能,但较少的图形界面管理功能。
  4. 性能和稳定性

    • VirtualBox:性能较好,适用于一般的虚拟化需求,但在某些情况下性能可能略低于其他软件。
    • VMware Workstation:针对性能进行了优化,具有较好的稳定性和性能。
    • QEMU:被广泛用于高性能计算和虚拟化需求,具有较高的性能和稳定性。
  5. 许可和定价

    • VirtualBox:是免费的开源软件,适用于商业和非商业环境。
    • VMware Workstation:是商业软件,需要购买许可证才能使用。提供了免费的 VMware Workstation Player 版本供个人用户使用。
    • QEMU:是免费的开源软件,可以自由使用和修改。

总体而言,VirtualBox适用于初学者和个人用户,具有易用性和开放源代码的特点;VMware Workstation则适用于更高级的需求,提供了更多高级功能和管理选项;QEMU则更适合专业用户和开发人员,对性能和灵活性有较高要求。选择适合自己需求的虚拟化软件应根据使用场景、功能需求和个人偏好进行权衡

3.3 VirtualBox、VMware Workstation 和 QEMU 对嵌入式系统的支持程度比较

VirtualBox、VMware Workstation和QEMU都可以用于模拟和虚拟化嵌入式系统,但它们在对嵌入式系统的支持程度上有一些区别:

  1. VirtualBox:对嵌入式系统的支持相对较弱。虽然VirtualBox可以模拟多种CPU架构,但通常更适合在桌面和服务器环境下运行常见的操作系统,对于一些专门定制的嵌入式系统可能兼容性不如其他工具。

  2. VMware Workstation:VMware Workstation在支持嵌入式系统方面要比VirtualBox强一些。它对多种CPU架构和操作系统的支持更为广泛,可以更好地模拟和运行嵌入式系统。

  3. QEMU:QEMU在支持嵌入式系统方面表现较好。由于QEMU的灵活性和可扩展性,它可以模拟多种CPU架构和嵌入式系统,并提供更多定制和配置选项,适用于开发和测试各种嵌入式平台。

总的来说,如果你需要模拟和虚拟化嵌入式系统,QEMU可能是更好的选择。它提供了更多定制性和灵活性,可以满足不同嵌入式系统开发和测试的需求

VMware Workstation也是一个不错的选择,其支持程度也比较全面。而对于一般的桌面和服务器操作系统虚拟化需求,VirtualBox和VMware Workstation都是不错的选择。

相关文章:

[嵌入式系统-28]:开源的虚拟机监视器和仿真器:QEMU(Quick EMUlator)与VirtualBox、VMware Workstation的比较

目录 一、QEMU概述 1.1 QEMU架构 1.2 QEMU概述 1.3 什么时候需要QEMU 1.4 QEMU两种操作模式 1.5 QEMU模拟多种CPU架构 二、QEMU与其他虚拟机的比较 2.1 常见的虚拟化技术 2.1 Linux KVM 2.2 Windows VirtualBox 2.3 Windows VMware workstation 三、VirtualBox、VM…...

计算机组成原理:存储系统【三】

🌈个人主页:godspeed_lucip 🔥 系列专栏:计算机组成与原理基础 🚀1 只读存储器ROM✈️1.1 总览✈️1.2 各种ROM✈️1.3 计算机内部重要的ROM✈️1.4 总结 🚀2 主存储器与CPU的连接🛩️2.1 总览&…...

学习Android的第十三天

目录 Android TextClock 文本时钟控件 TextClock 控件主要属性和方法 简单的 TextClock 参考文档 Android AnalogClock 控件 AnalogClock 属性 Android Chronometer 计时器 Chronometer 属性 Chronometer 主要方法 范例: 完整的计时器 范例: …...

【开源】SpringBoot框架开发学校热点新闻推送系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 新闻类型模块2.2 新闻档案模块2.3 新闻留言模块2.4 新闻评论模块2.5 新闻收藏模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 新闻类型表3.2.2 新闻表3.2.3 新闻留言表3.2.4 新闻评论表3.2.5 新闻收藏表 四、系统展…...

代码随想录刷题笔记 DAY 28 | 复原 IP 地址 No.93 | 子集 No.78 | 子集 II No.90

文章目录 Day 2801. 复原 IP 地址(No. 93)1.1 题目1.2 笔记1.3 代码 02. 子集(No. 78)2.1 题目2.2 笔记2.3 代码 03. 子集 II(No. 90)3.1 题目3.2 笔记3.3 代码 Day 28 01. 复原 IP 地址(No. 9…...

LeetCode LCR 085. 括号生成

题目链接https://leetcode.cn/problems/IDBivT/description/ 正整数 n 代表生成括号的对数&#xff0c;请设计一个函数&#xff0c;用于能够生成所有可能的并且 有效的 括号组合。 class Solution {public List<String> generateParenthesis(int n) {List<String>…...

django定时任务(django-crontab)

目录 一&#xff1a;安装django-crontab&#xff1a; 二&#xff1a;添加django_crontab到你的INSTALLED_APPS设置&#xff1a; 三&#xff1a;运行crontab命令来创建或更新cron作业&#xff1a; 四&#xff1a;定义你的cron作业 五&#xff1a;创建你的管理命令&#xff…...

【教3妹学编程-算法题】输入单词需要的最少按键次数 II

2哥 : 叮铃铃&#xff0c;3妹&#xff0c;准备复工了啊&#xff0c;过年干嘛呢&#xff0c;是不是逛吃逛吃&#xff0c;有没有长胖呢。 3妹&#xff1a;切&#xff0c;不想上班&#xff0c;假期能不能重来一遍啊&#xff0c;虽然在家我妈张罗着要给我相亲呢。可是在家还是很好的…...

突破编程_C++_高级教程(多线程编程实例)

1 生产者-消费者模型 生产者-消费者模型是一种多线程协作的设计模式&#xff0c;它主要用于处理生产数据和消费数据的过程。在这个模型中&#xff0c;存在两类线程&#xff1a;生产者线程和消费者线程。生产者线程负责生产数据&#xff0c;并将其放入一个共享的数据缓冲区&…...

精读《Function Component 入门》

1. 引言 如果你在使用 React 16&#xff0c;可以尝试 Function Component 风格&#xff0c;享受更大的灵活性。但在尝试之前&#xff0c;最好先阅读本文&#xff0c;对 Function Component 的思维模式有一个初步认识&#xff0c;防止因思维模式不同步造成的困扰。 2. 精读 什…...

类的构造方法

在类中&#xff0c;出成员方法外&#xff0c;还存在一种特殊类型的方法&#xff0c;那就是构造方法。构造方法是一个与类同名的方法&#xff0c;对象的创建就是通过构造方法完成的。每个类实例化一个对象时&#xff0c;类都会自动调用构造方法。 构造方法的特点&#xff1a; 构…...

ChatGPT和LLM

ChatGPT和LLM&#xff08;大型语言模型&#xff09;之间存在密切的关系。 首先&#xff0c;LLM是一个更为抽象的概念&#xff0c;它包含了各种自然语言处理任务中使用的各种深度学习模型结构。这些模型通过建立深层神经网络&#xff0c;根据已有的大量文本数据进行文本自动生成…...

「优选算法刷题」:判定字符是否唯一

一、题目 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 示例 1&#xff1a; 输入: s "leetcode" 输出: false 示例 2&#xff1a; 输入: s "abc" 输出: true限制&#xff1a; 0 < len(s) < 100 s[i]仅包含小写字母 二…...

详解自定义类型:枚举与联合体!

目录 ​编辑 一、枚举类型 1.枚举类型的声明 2.枚举类型的优点 3.枚举类型的使用 二、联合体类型(共用体&#xff09; 1.联合体类型的声明 2.联合体的特点 3.相同成员的结构体和联合体的对比 4.联合体大小的计算 5.用联合体判断大小端 三.完结散花 悟已往之不谏&…...

第13章 网络 Page738~741 13.8.3 TCP/UDP简述

libcurl是C语言写成的网络编程工具库&#xff0c;asio是C写的网络编程的基础类型库 libcurl只用于客户端&#xff0c;asio既可以写客户端&#xff0c;也可以写服务端 libcurl实现了HTTP\FTP等应用层协议&#xff0c;但asio却只实现了传输层TCP/UDP等协议。 在学习http时介绍…...

Tomcat要点总结

一、Tomcat 服务中部署 WEB 应用 1.什么是Web应用 &#xff08;1&#xff09; WEB 应用是多个 web 资源的集合。简单的说&#xff0c;可以把 web 应用理解为硬盘上的一个目录&#xff0c; 这个目录用于管理多个 web 资源。 &#xff08;2&#xff09;Web 应用通常也称之为…...

Ubuntu 20.04 安装RVM

RVM是管理Ruby版本的工具,使用RVM可以在单机上方便地管理多个Ruby版本。 下载安装脚本 首先使下载安装脚本 wget https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer 如果出现了 Connection refused 的情况, 可以考虑执行以下命令修改dns,再执…...

Ps:污点修复画笔工具

污点修复画笔工具 Spot Healing Brush Tool专门用于快速清除图像中的小瑕疵、污点、尘埃或其他不想要的小元素。 它通过分析被修复区域周围的内容&#xff0c;无需手动取样&#xff0c;自动选择最佳的修复区域来覆盖和融合这些不完美之处&#xff0c;从而实现无痕修复的效果。 …...

JAVA面试题17

什么是Java中的静态内部类&#xff1f;它与非静态内部类有什么区别&#xff1f; 答案&#xff1a;静态内部类是定义在另一个类中的类&#xff0c;并且被声明为静态。与非静态内部类不同&#xff0c;静态内部类不依赖于外部类的实例&#xff0c;可以直接访问外部类的静态成员。 …...

数据备份和恢复

数据备份和恢复 什么情况下会用到数据备份呢 数据丢失的场景 人为误操作造成的某些数据被误操作 软件BUG造成数据部分或者全部丢失 硬件故障造成数据库部分或全部丢失 安全漏洞被入侵数据恶意破坏 非数据丢失场景 基于某个时间点的数据恢复 开发测试环境数据库搭建 相同数据库的…...

核心篇 - 集成IS-IS配置实战

文章目录 一. 实验专题1.1. 实验1&#xff1a;配置单区域集成IS-IS1.1.1. 实验目的1.1.2. 实验拓扑1.1.3. 实验步骤&#xff08;1&#xff09;配置IP地址&#xff08;2&#xff09;配置IS-IS 1.1.4. 实验调试&#xff08;1&#xff09;查看邻接表&#xff08;2&#xff09;查看…...

【OpenAI Sora】开启未来:视频生成模型作为终极世界模拟器的突破之旅

这份技术报告主要关注两个方面&#xff1a;&#xff08;1&#xff09;我们的方法将各种类型的视觉数据转化为统一的表示形式&#xff0c;从而实现了大规模生成模型的训练&#xff1b;&#xff08;2&#xff09;对Sora的能力和局限性进行了定性评估。报告中不包含模型和实现细节…...

MVC 、DDD、中台、Java SPI(Service Provider Interface)

文章目录 引言I 单体架构DDD实现版本1.1 核心概念1.2 DDD四层架构规范1.3 案例1.4 请求转发流程II 领域服务调用2.1 菱形对称架构2.2 中台III Java SPI3.1 概念3.2 实现原理3.3 例子:本地SPI找服务see alsojava -cp</...

C++单例模式的实现

单例模式就是在整个程序运行期都只有一个实例。在代码实现方面&#xff0c;我们要限制new出多于一个对象这种情况的发生。而不是仅仅依靠无保障的约定。 目前大多数的编程语言的做法都是私有化构造函数&#xff0c;对外提供一个获取实例的接口。这样做的目的使实例的创建不能在…...

rust函数 stuct struct方法 关联函数

本文结合2个代码实例主要介绍了rust函数定义方法&#xff0c;struct结构体定义、struct方法及关联函数等相关基础知识。 代码1&#xff1a; main.rc #[derive(Debug)]//定义一个结构体 struct Ellipse {max_semi_axis: u32,min_semi_axis: u32, }fn main() {//椭圆&#xff0…...

浅谈基于中台模式的大数据生态体系的理解

这篇文章主要浅谈一下我对大数据生态体系建设的理解。 大数据生态系统为高并发&#xff0c;高吞吐&#xff0c;高峰值&#xff0c;高堆积等大规模数据的采集&#xff0c;处理&#xff0c;计算&#xff0c;存储&#xff0c;服务提供了完善的处理体系&#xff0c;致力于打造核心数…...

MySQL的锁机制

一&#xff1a;概述 锁是计算机协调多个进程或线程并发访问某一资源的机制&#xff08;避免争抢&#xff09;&#xff1b; 在数据库中&#xff0c;除传统的计算资源&#xff08;如CPU&#xff0c;RAM&#xff0c;I/O等&#xff09;的争用以外&#xff0c;数据也是一种供许多用…...

已解决ImportError: cannot import name ‘PILLOW_VERSION‘异常的正确解决方法,亲测有效!!!

已解决ImportError: cannot import name PILLOW_VERSION异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 文章目录 问题分析 报错原因 解决思路 解决方法 总结 在Python项目开发中&#xff0c;依赖管理是保证项目正常运行的关键环节。然而&…...

力扣:300. 最长递增子序列

动态规划: 1. 先定义dp数组来表示在下标为i时最长递增子序列&#xff0c;先初始化一下每个下标的值为dp【i】1。同时我们要判断在下标i之前的最长的递增子序列为多少&#xff0c;在判断当前的下标i是否满足递增的条件满足的话就进行dp【i】的重新赋值。之后要更新接受的最长递…...

Swing程序设计(10)列表框,文本框,文本域,密码框

文章目录 前言一、列表框二、文本框&#xff08;域&#xff09; 1.文本框2.文本域三、密码框总结 前言 该篇文章简单介绍了Java中Swing组件里的列表框、文本框、密码框。 一、列表框 列表框&#xff08;JList&#xff09;相比下拉框&#xff0c;自身只是在窗体上占据固定的大小…...

【Java八股面试系列】JVM-常见参数设置

目录 堆内存相关 显式指定堆内存–Xms和-Xmx 显式新生代内存(Young Generation) 显式指定永久代/元空间的大小 垃圾收集相关 垃圾回收器 GC 日志记录 处理 OOM JDK监控和故障处理工具总结 堆内存相关 Java 虚拟机所管理的内存中最大的一块&#xff0c;Java 堆是所有线…...

【Python--Web应用框架大比较】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Django Django太重了&#xff0c;除了web框架&#xff0c;自带ORM和模板引擎&#xff0c;灵活和自由度不…...

Effective Objective-C 学习第三周

理解引用计数 Objective-C 使用引用计数来管理内存&#xff1a;每个对象都有个可以递增或递减的计数器。如果想使某个对象继续存活&#xff0c;那就递增其引用计数&#xff1a;用完了之后&#xff0c;就递减其计数。计数变为 0时&#xff0c;就可以把它销毁。 在ARC中&#xf…...

人工智能学习与实训笔记(四):神经网络之NLP基础—词向量

人工智能专栏文章汇总&#xff1a;人工智能学习专栏文章汇总-CSDN博客 本篇目录 四、自然语言处理 4.1 词向量 (Word Embedding) 4.1.1 词向量的生成过程 4.1.2 word2vec介绍 4.1.3 word2vec&#xff1a;skip-gram算法的实现 4.2 句向量 - 情感分析 4.2.1 LSTM (Long S…...

【教程】Kotlin语言学习笔记(一)——认识Kotlin(持续更新)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 【Kotlin语言学习】系列文章 第一章 《认识Kotlin》 文章目录 【Kotlin语言学习】系列文章一、Kotlin介绍二、学习路径 一、…...

MySQL性能分析1

1、查看执行频次 查看当前数据库的INSERT,UPDATE,DELETE,SELECT的访问频次&#xff0c;得到当前数据库是以插入&#xff0c;更新和删除为主还是以查询为主&#xff0c;如果是以插入&#xff0c;更新和删除为主的话&#xff0c;那么优化比重可以轻一点儿。 语法&#xff1a; …...

四、案例 - Oracle数据迁移至MySQL

Oracle数据迁移至MySQL 一、生成测试数据表和数据1.在Oracle创建数据表和数据2.在MySQL创建数据表 二、生成模板文件1.模板文件内容2.模板文件参数详解2.1 全局设置2.2 数据读取&#xff08;Reader&#xff09;2.3 数据写入&#xff08;Writer&#xff09;2.4 性能设置 三、案例…...

ABC340 A-F题解

文章目录 A题目AC Code&#xff1a; B题目AC Code&#xff1a; C题目AC Code&#xff1a; D题目AC Code&#xff1a; E题目思路做法时间复杂度AC Code&#xff1a; F题目思路AC Code&#xff1a; A 题目 模拟即可&#xff0c;会循环都能写。 AC Code&#xff1a; #include …...

微软 CMU - Tag-LLM:将通用大语言模型改用于专业领域

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 论文地址&#xff1a;https://arxiv.org/abs/2402.05140 Github 地址&#xff1a;https://github.com/sjunhongshen/Tag-LLM 大语言模型&#xff08…...

Kafka集群安装与部署

集群规划 准备工作 安装 安装包下载&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1BtSiaf1ptLKdJiA36CyxJg?pwd6666 Kafka安装与配置 1、上传并解压安装包 tar -zxvf kafka_2.12-3.3.1.tgz -C /opt/moudle/2、修改解压后的文件名称 mv kafka_2.12-3.3.1/ kafka…...

C++初阶(十一) list

一、list的介绍及使用 1.1 list的介绍 list的文档介绍 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代。 2. list的底层是双向链表结构&#xff0c;双向链表中每个元素存储在互不相关的独立节点中&#xff0c;在节点…...

图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化

图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化 卷积神经网络的一些基本概念&#xff1a;图像卷积、步长、填充、特征图、多通道卷积、权重共享、感受野、池化 1.图像卷积、步长、填充 图像卷积&#xff1a;卷积核矩阵在一个原始图像矩阵上 “从上往下、…...

CMake进行C/C++与汇编混合编程

1. 前提 这篇文章记录一下怎么用CMake进行项目管理, 并用C/C和汇编进行混合编程, 为了使用这项技术, 必须在VS的环境中安装好cmake组件 由于大部分人不会使用C/C与汇编进行混合编程的情况。所以这篇文章并不适用于绝大部分人不会对其中具体细节进行过多叙述。只是做一些简单的…...

缓存预热!真香

预热一般指缓存预热&#xff0c;一般用在高并发系统中&#xff0c;为了提升系统在高并发情况下的稳定性的一种手段。 缓存预热是指在系统启动之前或系统达到高峰期之前&#xff0c;通过预先将常用数据加载到缓存中&#xff0c;以提高缓存命中率和系统性能的过程。缓存预热的目…...

VS中设置#define _CRT_SECURE_NO_WARNINGS的原因和设置方式

原因&#xff1a; 在编译老的用C语言的开源项目的时候&#xff0c;可能因为一些老的.c文件使用了strcpy,scanf等不安全的函数&#xff0c;而报警告和错误&#xff0c;而导致无法编译通过。 解决方案&#xff1a; 我们有两种解决方案&#xff1a; 1、在指定的源文件的开头定…...

【网站项目】155在线考试与学习交流网页平台

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…...

解决IDEA的Project无法正常显示的问题

一、问题描述 打开IDEA&#xff0c;结果发现项目结构显示有问题&#xff1a; 二、解决办法 File -> Project Structure… -> Project Settings (选Modules)&#xff0c;然后导入Module 结果&#xff1a; 补充&#xff1a; IDEA提示“The imported module settings a…...

CDF和PDF的比较

以下内容来自ChatGPT&#xff0c;科技改变生活 Cumulative Distribution Function (CDF)&#xff08;累积分布函数&#xff09;和 Probability Density Function (PDF)&#xff08;概率密度函数&#xff09;是统计学和概率论中两个重要的概念&#xff0c;用于描述随机变量的性…...

编译基本过程 预处理器

编译基本过程 源代码(main.c)->预处理器(cpp)->编译器(gcc/clang/msvc)->汇编器(as)->链接器(ld)->可执行文件(main.exe) 预处理器 C语言中预处理器&#xff1a;执行预处理命令(文件包含、宏替换、条件编译)处理注释(将所有注释替换为空格)处理续行符(将所有…...

模拟算法.

1.什么是模拟 在信息奥赛中,有一类问题是模拟一个游戏的对弈过程或者模拟一项任务的操作过程.比如乒乓球在比赛中模拟统计记分最终判断输赢的过程等等,这些问题通常很难通过建立数学模型用特定的算法来解决因为它没有一种固定的解法,需要深刻理解出题者对过程的解释一般只能采…...