从云计算到物联网:虚拟化技术的演变与嵌入式系统的融合

文章目录

  • 一、硬件性能提升:摩尔定律与嵌入式虚拟化
  • 二、CPU多核技术:为嵌入式虚拟化提供支持
  • 三、业务负载整合:嵌入式虚拟化的核心需求
  • 四、降低硬件成本:虚拟化技术的经济效益
  • 五、软件重用与移植:虚拟化技术的优势
  • 六、异构操作系统的整合:虚拟化的独特价值
  • 七、嵌入式虚拟化的应用场景
  • 八、挑战与展望:嵌入式虚拟化的未来发展
  • 《嵌入式虚拟化技术与应用》
    • 编辑推荐
    • 内容简介
    • 目  录


随着物联网设备的爆炸式增长和万物互联应用的快速发展,嵌入式系统正面临着一系列的挑战与机遇。为了适应这一变革,虚拟化技术逐渐成为了业界关注的焦点,并在嵌入式系统中得到了广泛的应用。本文将深入探讨嵌入式系统为何需要虚拟化技术,以及这一跨界创新组合的应用场景。

一、硬件性能提升:摩尔定律与嵌入式虚拟化

随着半导体技术的飞速发展,摩尔定律在推动硬件性能提升的同时,也使得成本逐渐降低。这使得今天的嵌入式系统中的SoC(System on a Chip)性能得到了极大的提升,甚至在某些方面超越了传统的服务器。这种性能的提升为嵌入式系统引入虚拟化技术提供了可能。通过虚拟化技术,我们可以将多个操作系统或应用程序运行在单一的硬件平台上,进一步提升硬件资源的利用率。

二、CPU多核技术:为嵌入式虚拟化提供支持

随着CPU多核技术的发展,一个物理处理器能够同时执行多个线程或任务,这为嵌入式系统支持虚拟化技术提供了强大的基础。通过多核技术,我们可以轻松地在单个硬件平台上运行多个操作系统或应用程序,从而实现真正的并行处理。

三、业务负载整合:嵌入式虚拟化的核心需求

随着物联网的普及,不同业务之间的负载整合成为了关键需求。通过虚拟化技术,我们可以将各种业务负载整合到一个统一的平台上,从而实现资源的集中管理和优化。这种整合不仅有助于提升系统的整体性能,还能降低运营成本和维护难度。

四、降低硬件成本:虚拟化技术的经济效益

在嵌入式系统的应用中,节约硬件成本是一个重要的考虑因素。通过引入虚拟化技术,我们可以减少硬件系统的互连,降低整体硬件系统的复杂度。这不仅能够降低硬件成本,还能提升系统的可靠性和稳定性。

五、软件重用与移植:虚拟化技术的优势

在嵌入式系统中,软件重用和移植是一个重要的需求。通过虚拟化技术,我们可以将已有的软件系统进行封装和隔离,使其在不同的硬件平台上得到重用。此外,虚拟化技术还可以简化软件的移植过程,降低开发难度和维护成本。

六、异构操作系统的整合:虚拟化的独特价值

在许多应用场景中,我们需要将不同类型的操作系统(如实时系统和非实时系统、安全系统和非安全系统)整合到一个系统中。通过虚拟化技术,我们可以轻松地实现这种异构操作系统的整合,从而满足各种复杂的应用需求。这种整合不仅有助于提升系统的灵活性和可扩展性,还能降低开发和维护成本。

七、嵌入式虚拟化的应用场景

嵌入式虚拟化技术的应用场景十分广泛,包括但不限于以下几个方面:软件定义汽车驾驶舱、工业领域的工作负载整合、智能家居设备的集中管理、医疗设备的远程监控和维护等。在这些场景中,虚拟化技术能够有效地提升系统的性能、可靠性和可维护性。

八、挑战与展望:嵌入式虚拟化的未来发展

尽管嵌入式虚拟化技术已经得到了广泛的应用和认可,但仍面临着一些挑战。例如,如何进一步提升虚拟化技术的性能和效率、如何实现更精细的资源管理和调度等。未来,随着技术的不断进步和应用需求的不断增长,我们相信嵌入式虚拟化技术将会得到更广泛的应用和更深入的研究。


《嵌入式虚拟化技术与应用》

在这里插入图片描述

编辑推荐

适读人群 :本书定位的读者是从事嵌入式虚拟化领域开发的技术人员,或者任何想了解如何在嵌入式系统上实现虚拟机管理程序的专业人员。

1.英特尔开源软件技术中心虚拟化项目组专家力作,本书围绕嵌入式虚拟化技术的核心内容,详细解读Linux基金会开源嵌入式虚拟机ACRN技术的架构、原理和应用实现。本书还特别披露和总结了虚拟化系统的实时性能调优方法和功能安全认证实践。读者可以从第一行代码实现一个x86平台上的“小身材、大能耐”的嵌入式虚拟机。ACRN开源项目的地址:https://projectacrn.org/。
2.读者通过该书学习,在需要高算力的嵌入式应用场景中,基于x86平台和ACRN虚拟化技术可以实现工业领域的工作负载整合或软件定义汽车智能驾驶舱等应用产品。
3.本书适合从事嵌入式虚拟化领域开发的技术人员,或者任何想了解如何在嵌入式系统上实现虚拟机管理程序的专业人员。

内容简介

伴随着物联网设备的指数级增长,在需要高算力的场景,例如软件定义汽车驾驶舱、工业领域的工作负载整合,开源虚拟化技术在嵌入式系统上受到了越来越多的关注和应用。本书首先介绍虚拟化技术的基本原理,包括CPU虚拟化、内存虚拟化、中断虚拟化和设备虚拟化,对比KVM在云服务器上参考实现,重点介绍了开源嵌入式虚拟机ACRN的架构设计、原理和实现。还特别总结了虚拟化系统的实时性能调优方法和功能安全认证实践,以及嵌入式虚拟化技术的典型应用场景案例分析。本书作为嵌入式虚拟化技术入门参考书,通过对ACRN开源软件的介绍,帮助读者从代码开始了解、学习、开发虚拟机软件,掌握嵌入式虚拟化技术并应用于工程实践。

目  录

推荐序一

推荐序二

前言

第1章 虚拟化技术概述 / 1

1.1 虚拟化技术的发展历史 / 1

1.2 VMM模型的分类 / 3

1.3 虚拟化技术的分类 / 4

1.4 云虚拟化与嵌入式虚拟化 / 5

1.4.1 嵌入式虚拟化的背景与原因 / 5

1.4.2 云虚拟化和嵌入式虚拟化

   的区别 / 5

1.5 嵌入式虚拟化技术的挑战 / 6

1.6 本章小结 / 72章 虚拟化技术原理 / 8

2.1 通用虚拟化架构 / 8

2.1.1 虚拟化的基本概念 / 8

2.1.2 虚拟化技术的基本原理 / 9

2.1.3 虚拟化的主要方式 / 18

2.1.4 VMM的分类 / 19

2.2 云虚拟化和嵌入式虚拟化对比 / 22

2.3 嵌入式虚拟化的场景 / 23

2.4 嵌入式虚拟化技术的特征 / 23

2.5 本章小结 / 253章 开源虚拟化技术—KVM / 26

3.1 KVM的历史 / 26

3.2 KVM的原理 / 27

3.2.1 KVM的架构 / 27

3.2.2 KVM API及示例 / 28

3.3 KVM虚拟化实现 / 32

3.3.1 KVM的初始化 / 33

3.3.2 KVM虚拟机的创建 / 35

3.3.3 CPU虚拟化 / 36

3.3.4 内存虚拟化 / 43

3.3.5 中断虚拟化 / 56

3.4 设备虚拟化 / 61

3.4.1 仿真设备 / 61

3.4.2 半虚拟化设备 / 62

3.4.3 直通设备 / 63

3.4.4 KVM设备虚拟化实现 / 64

3.5 本章小结 / 684章 嵌入式虚拟化技术—

    ACRN实现 / 69

4.1 ACRN简介 / 69

4.1.1 ACRN的由来 / 69

4.1.2 ACRN的关键技术特点 / 70

4.1.3 许可证和社区 / 71

4.2 ACRN应用场景 / 71

4.3 ACRN架构设计 / 73

4.3.1 ACRN 1.0整体架构 / 73

4.3.2 ACRN 2.0/3.0 整体架构 / 74

4.3.3 ACRN的关键组成 / 75

4.3.4 ACRN Hypervisor的架构 / 76

4.4 CPU虚拟化与实现 / 77

4.4.1 处理器管理 / 79

4.4.2 vCPU 生命周期 / 80

4.4.3 vCPU调度 / 80

4.4.4 VMX 初始化 / 85

4.4.5 CPUID 虚拟化 / 85

4.4.6 MSR虚拟化 / 86

4.4.7 CR虚拟化 / 86

4.4.8 IO/MMIO模拟 / 86

4.4.9 指令模拟 / 87

4.4.10 TSC 模拟 / 88

4.4.11 ART虚拟化 / 88

4.4.12 XSAVE虚拟化 / 89

4.5 内存虚拟化及实现 / 90

4.5.1 概述 / 90

4.5.2 Hypervisor物理内存管理 / 91

4.5.3 Hypervisor内存虚拟化 / 93

4.5.4 与EPT相关的VM Exit / 96

4.5.5 服务虚拟机内存管理 / 96

4.5.6 可信 / 97

4.6 中断虚拟化及实现 / 98

4.6.1 概述 / 98

4.6.2 物理中断 / 100

4.6.3 虚拟中断 / 105

4.6.4 中断重映射 / 107

4.7 I/O虚拟化及实现 / 110

4.7.1 I/O访问捕获路径 / 111

4.7.2 Hypervisor中的I/O模拟 / 112

4.7.3 I/O请求 / 112

4.8 本章小结 / 1155章 嵌入式虚拟化技术—

       ACRN设备虚拟化 / 116

5.1 ACRN设备模型介绍 / 116

5.2 ACRN全虚拟化设备 / 119

5.2.1 PS/2控制器 / 119

5.2.2 UART串口 / 121

5.2.3 USB设备 / 122

5.2.4 AHCI控制器 / 125

5.2.5 系统时钟 / 126

5.2.6 看门狗设备 / 131

5.2.7 Ivshmem / 132

5.2.8 显卡设备 / 134

5.3 ACRN的virtio设备 / 135

5.3.1 ACRN的virtio框架实现 / 135

5.3.2 virtio-net / 139

5.3.3 virtio-blk / 141

5.3.4 virtio-input / 143

5.3.5 virtio-console / 144

5.3.6 virtio-i2c / 146

5.3.7 virtio-gpio / 148

5.3.8 virtio-rnd / 150

5.3.9 virtio-gpu / 151

5.4 本章小结 / 1526章 嵌入式虚拟化技术—

    ACRN安装使用 / 153

6.1 系统环境硬件配置 / 153

6.1.1 开发环境搭建 / 153

6.1.2 目标机硬件配置要求 / 154

6.2 ACRN支持三种模式的场景 / 154

6.2.1 共享模式的场景 / 155

6.2.2 分区模式的场景 / 156

6.2.3 混合模式的场景 / 156

6.3 安装部署流程 / 157

6.4 安装部署入门指南 / 159

6.4.1 选择硬件和场景 / 160

6.4.2 准备开发机环境 / 160

6.4.3 准备目标机并生成目标

   平台配置文件 / 162

6.4.4 编译ACRN / 169

6.4.5 在目标机上安装ACRN / 170

6.4.6 启动ACRN和服务

      虚拟机 / 171

6.4.7 启动用户虚拟机 / 171

6.5 本章小结 / 1727章 嵌入式虚拟化技术——实时

    性能优化 / 173

7.1 整体架构设计 / 173

7.1.1 实时性的分类 / 175

7.1.2 实时性的优化准则 / 175

7.2 ACRN虚拟机优化 / 177

7.3 CPU优化 / 179

7.4 中断优化 / 180

7.5 内存优化 / 181

7.5.1 缓存分配技术 / 182

7.5.2 软件SRAM / 185

7.6 I/O虚拟化 / 186

7.6.1 GPU直通 / 187

7.6.2 其他设备虚拟化 / 188

7.7 客户机优化—实时操作系统 / 188

7.8 工具辅助优化 / 189

7.8.1 ACRNTrace介绍 / 189

7.8.2 vmexit命令 / 191

7.8.3 PMU的数据分析 / 192

7.8.4 RTOS的实时性基准测试工具 / 192

7.8.5 Intel TCC的介绍 / 194

7.9 虚拟机间通信 / 197

7.10 本章小结 / 1988章 嵌入式实时操作系统 / 199

8.1 RTOS介绍 / 199

8.1.1 常见的RTOS / 199

8.1.2 从GPOSRTOS的转换 / 200

8.1.3 RTOS运行在虚拟机上的

   注意事项 / 200

8.2 Xenomai / 201

8.2.1 Xenomai的起源 / 201

8.2.2 Xenomai的特性 / 202

8.2.3 Xenomai 3.1系统架构 / 204

8.3 PREEMPT_RT Linux / 205

8.3.1 PREEMPT_RT Linux的起源 / 206

8.3.2 PREEMPT_RT Linux的发展 / 206

8.3.3 PREEMPT_RT的特性 / 207

8.4 Zephyr / 213

8.4.1 Zephyr的起源 / 213

8.4.2 Zephyr的特点 / 213

8.4.3 Zephyr的系统架构 / 214

8.4.4 Zephyr的实现 / 219

8.5 本章小结 / 2249章 嵌入式虚拟化技术赋能功能安全 / 226

9.1 功能安全背景 / 226

9.2 功能安全概述 / 227

9.2.1 风险概念 / 229

9.2.2 功能安全标准的基本

   术语与定义 / 230

9.2.3 风险和安全完整性 / 232

9.2.4 系统功能安全 / 234

9.2.5 软件功能安全 / 236

9.3 典型软件安全设计 / 236

9.4 混合关键性系统 / 239

9.4.1 混合关键性系统典型应用场景 / 239

9.4.2 QNX Hypervisor / 241

9.5 ACRN赋能混合关键性系统 / 243

9.5.1 安全目标 / 245

9.5.2 系统级安全措施 / 246

9.5.3 独立性相关安全措施 / 247

9.5.4 安全分析 / 248

9.5.5 系统化开发流程 / 249

9.5.6 安全状态设计 / 253

9.5.7 安全架构设计 / 254

9.5.8 安全需求概述 / 256

9.5.9 使用限制 / 261

9.6 嵌入式虚拟化技术的功能

  安全价值 / 265

9.7 本章小结 / 26510章 应用案例—智能数控

     系统和数字孪生 / 266

10.1 行业概述 / 266

10.2 行业挑战与需求 / 266

10.3 解决方案 / 267

10.4 具体实现 / 268

10.4.1 架构设计 / 268

10.4.2 虚拟机与云端应用的

       协同机制 / 270

10.4.3 编译及安装 / 271

10.5 方案优势 / 272

10.6 本章小结 / 27311章 应用案例—基于机器视觉和机器

     控制的工作负载整合 / 274

11.1 行业概述 / 274

11.1.1 迈向工业4.0 / 274

11.1.2 物联网中的工作负载整合 / 275

11.1.3 现代工业物联网模型 / 275

11.2 行业挑战与需求 / 276

11.2.1 工业自动化需要数字化转型 / 276

11.2.2 软件定义的基础设施帮助

    工业数字化转型 / 277

11.2.3 将软件定义的基础设施应用于

    工业自动化 / 277

11.2.4 在工业领域进行工作负载整合

    的需求 / 279

11.2.5 工业控制领域的工作负载

    整合案例—机器视觉和

    机器控制 / 280

11.3 解决方案 / 281

11.3.1 负载整合技术方案—虚拟化

    和容器化 / 281

11.3.2 通过虚拟化技术实现工作

    负载整合 / 282

11.4 具体实现 / 284

11.4.1 机器视觉—运行在人机交互

    虚拟机里 / 284

11.4.2 机器控制—运行在实时

    虚拟机里 / 285

11.4.3 服务虚拟机—为整机系统

    提供后台服务 / 285

11.4.4 嵌入式虚拟机管理程序—

    ACRN Hypervisor / 286

11.4.5 硬件资源和I/O设备的分配 / 286

11.4.6 虚拟机间通信 / 287

11.4.7 物理硬件平台—基于x86的

    工控机 / 287

11.4.8 性能调优 / 287

11.4.9 安装步骤示例 / 288

11.5 方案优势 / 288

11.6 本章小结 / 28912章 应用案例—自主移动机器人 / 290

12.1 行业概述 / 290

12.2 行业挑战与需求 / 290

12.3 解决方案 / 291

12.4 具体实现 / 292

12.5 安装步骤示例 / 295

12.6 方案优势 / 295

12.7 本章小结 / 29613章 应用案例—软件定义汽车

     驾驶舱 / 297

13.1 行业概述 / 297

13.1.1 多个独立ECU的实现 / 298

13.1.2 软件定义驾驶舱 / 299

13.2 行业挑战与需求 / 300

13.3 解决方案 / 302

13.4 具体实现 / 303

13.4.1 基于x86架构的SoC / 304

13.4.2 ACRN Hypervisor / 304

13.4.3 仪表盘系统—服务

    虚拟机 / 304

13.4.4 中控娱乐系统—用户

    虚拟机 / 304

13.4.5 Intel GVT-g图形显卡共享 / 305

13.5 编译及安装 / 306

13.6 方案优势 / 307

13.7 软件定义驾驶舱的未来展望 / 307

13.8 本章小结 / 308

附录 / 309

附录A Xenomai及其应用程序的

    编译和安装 / 309

附录B PREEMPT_RT Linux的

    编译和安装 / 316

附录C Zephyr的编译和安装 / 319

附录D 在ACRN上安装运行两个

    虚拟机 / 323

附录E ROS 2安装与使用示例 / 331

技术术语表 / 335

参考文献 / 342

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

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

相关文章

近期孩子燃放烟花已引发多起火灾 富维图像烟火识别防止悲剧发生

近期,孩子们燃放烟花造成的火灾事件频发,这不仅威胁到社区的安全,更触动了每个家庭的心。在这样的背景下,“预防胜于治疗”显得尤为重要。北京富维图像公司的FIS智能图像识别系统,就是这样一款能够及时防止悲剧发生的创…

旷视low-level系列(一):Bayer Pattern Unification and Bayer Preserving Au

文章目录 1. Motivation2. Contribution3. Methods3.1 BayerUnify3.2 BayerAug 4. CommentsReference 1. Motivation 对于RAW域去噪,通常会将单通道bayer格式的RAW图打包成4通道,然后送入神经网络。不同厂家生产的sensor出的RAW图可能具有不同的bayer模…

QtRVSim(二)一个 RISC-V 程序的解码流程

继上一篇文章简单代码分析后,本文主要调研如何实现对指令的解析运行。 调试配置 使用 gdb 工具跟踪调试运行。 c_cpp_properties.json 项目配置: {"name": "QtRvSim","includePath": ["${workspaceFolder}/**&quo…

21.云原生之GitLab pipline语法实战(CI基础)

云原生专栏大纲 文章目录 gitlab-ci.yml 介绍GitLab中语法检测gitlab-ci.yml 语法job定义作业before_script和after_scriptstages定义阶段tages指定runnerallow_failure运行失败when控制作业运行retry重试timeout超时parallel并行作业only & exceptrulescache 缓存cache:p…

ETL能实现什么流程控制方式?

随着大数据时代的到来,数据处理工具成为各个行业中不可或缺的一部分。运用数据处理工具,能够大幅度帮助开发人员进行数据处理等工作,以及能够更好的为企业创造出有价值的数据。那在使用ETL工具时,我们往往会通过ETL平台所携带的组…

萝卜大杂烩 | 一篇文章扫盲Python、NumPy 和 Pandas,建议收藏!(适合初学者、python入门)

本文来源公众号“萝卜大杂烩”,仅用于学术分享,侵权删,干货满满。 原文链接:长文预警,一篇文章扫盲Python、NumPy 和 Pandas,建议收藏慢慢看 Python作为简单易学的编程语言,想要入门还是比较容…

2、鼠标事件、键盘事件、浏览器事件、监听事件、冒泡事件、默认事件、属性操作

一、鼠标事件 1、单击事件&#xff1a;onclick <body><header id"head">我是头部标签</header> </body> <script> var head document.getElementById("head")head.onclick function () {console.log("我是鼠标单击…

单片机设计_智能蓝牙电子秤(51单片机、HX711AD)

想要更多项目私wo!!! 一、电路设计 智能蓝牙电子称由51单片机、HX711AD称重模块、HC-05蓝牙模块、LCD1602等电路组成硬件部分,然后上传至APP。 二、运行结果 三、部分代码 #include "main.h" #include "HX711.h" #include "uart.h" #include …

podman+centos和docker+alpine中作性能对比遇到的问题及解决

1.dockeralpine中遇到这个问题 这是由于缺少相关的配置和依赖造成的 通过以下命令在alpine中安装相关配置 apk add --no-cache build-base cairo-dev cairo cairo-tools jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev 2.alpine中python找…

API网关-Apisix RPM包方式自动化安装配置教程

文章目录 前言一、简介1. etcd简介2. APISIX简介3. apisix-dashboard简介 二、Apisix安装教程1. 复制脚本2. 增加执行权限3. 执行脚本4. 浏览器访问5. 卸载Apisix 三、命令1. Apisix命令1.1 启动apisix服务1.2 停止apisix服务1.3 优雅地停止apisix服务1.4 重启apisix服务1.5 重…

【云原生】认识docker容器操作命令

目录 一、容器操作命令 1、创建容器 2、删除容器以及停止容器运行 3、查看容器的运行状态 4、查看容器的详细信息 5、将容器的文件传输到宿主机以及将宿主机的文件传输到容器中 6、批量删除容器 7、进入容器 二、容器的迁移 1、先在容器中创建测试文件 2、将容器存储…

洛谷 P5635 【CSGRound1】天下第一

原址链接 P5635 【CSGRound1】天下第一 先看标签 搜索&#xff1f;模拟&#xff1f;用不着这么复杂 创建函数a(int x,int y,int p) a(int x,int y,int p){if(x<0){return 1;}x (xy)%p;if(y<0){return 2;}y (xy)%p;return a(x,y,p); }写入主函数 #include<iostrea…

防御保护----防火墙的安全策略、NAT策略实验

实验拓扑&#xff1a; 实验要求&#xff1a; 1.生产区在工作时间&#xff08;9&#xff1a;00-18&#xff1a;00&#xff09;内可以访问DMZ区&#xff0c;仅可以访问http服务器&#xff1b; 2.办公区全天可以访问DMZ区&#xff0c;其中10.0.2.10可以访问FTP服务器和HTTP服务器…

Flink实现数据写入MySQL

先准备一个文件里面数据有&#xff1a; a, 1547718199, 1000000 b, 1547718200, 1000000 c, 1547718201, 1000000 d, 1547718202, 1000000 e, 1547718203, 1000000 f, 1547718204, 1000000 g, 1547718205, 1000000 h, 1547718210, 1000000 i, 1547718210, 1000000 j, 154771821…

Windows Server 安装 Docker

一、简介 Docker 不是一个通用容器工具&#xff0c;它依赖运行的 Linux 内核环境。Docker 实质上是在运行的 Linux 服务器上制造了一个隔离的文件环境&#xff0c;所以它执行的效率几乎等同于所部署的 Linux 主机服务器性能。因此&#xff0c;Docker 必须部署在 Linux 内核系统…

【保驾护航】HarmonyOS应用开发者基础认证-题库

通过系统化的课程学习&#xff0c;熟练掌握DevEco Studio&#xff0c;ArkTS&#xff0c;ArkUI&#xff0c;预览器&#xff0c;模拟器&#xff0c;SDK等HarmonyOS应用开发的关键概念&#xff0c;具备基础的应用开发能力。 考试说明 1、考试需实名认证&#xff0c;请在考前于个…

【LeetCode: 135. 分发糖果 + 贪心】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

嵌入式-stm32-江科大-OLED调试工具

文章目录 一&#xff1a;OLED调试工具1.1 OLED显示屏介绍1.2 实验&#xff1a;在OLED显示屏的使用1.3 自己新增功能测试道友&#xff1a;今天没有开始的事&#xff0c;明天绝不会完成。 一&#xff1a;OLED调试工具 1.1 OLED显示屏介绍 学习任何一门语言就需要进行调试&#…

Java基础进阶03-注解和单元测试

目录 一、注解 1.概述 2.作用 3.自定义注解 &#xff08;1&#xff09;格式 &#xff08;2&#xff09;使用 &#xff08;3&#xff09;练习 4.元注解 &#xff08;1&#xff09;概述 &#xff08;2&#xff09;常见元注解 &#xff08;3&#xff09;Target &#x…

第13次修改了可删除可持久保存的前端html备忘录:删除按钮靠右,做了一个背景主题:现代深色

第13次修改了可删除可持久保存的前端html备忘录&#xff1a;删除按钮靠右&#xff0c;做了一个背景主题&#xff1a;现代深色 备忘录代码 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"vi…
最新文章