嵌入式系统的利器C++

一、嵌入式 C++ 概述

嵌入式 C++ 在嵌入式系统开发中占据着至关重要的地位。它是 C++ 的一个子集,由日本 CPU 大厂于 1996 年提出,目标是在保持 C++ 面向对象特性的同时,减小代码体积、提升执行效率并简化编译器。

在嵌入式系统开发中,嵌入式 C++ 发挥着重要作用。一方面,它继承了 C++ 的面向对象特性,使得开发者能够以更加模块化和可维护的方式进行编程。这对于大型嵌入式项目来说尤为重要,能够提高代码的复用性和可扩展性。

另一方面,嵌入式 C++ 通过去除一些昂贵的特性,如多重继承、虚拟基础类别、执行期型态讯息、新式 C++ 转型、mutable 型别、命名空间和异常处理等,减小了代码体积和运行开销。这对于资源受限的嵌入式设备来说是非常关键的,能够提高系统的性能和稳定性。

随着嵌入式开发领域使用 C++ 作为开发语言的公司和项目越来越多,嵌入式 C++ 为那些从桌面开发领域加入嵌入式开发阵营的程序员提供了一个熟悉的编程环境。同时,一些较新的操作系统如 eCos、Symbian 等都采用 C++ 编写,这也进一步证明了嵌入式 C++ 在嵌入式系统开发中的重要地位。

总之,嵌入式 C++ 在嵌入式系统开发中具有不可替代的作用,它既保留了 C++ 的面向对象优势,又适应了嵌入式系统的资源限制,为嵌入式开发提供了一种高效、可靠的解决方案。

二、嵌入式 C++ 的应用场景

(一)嵌入式系统领域

在消费电子设备方面,嵌入式 C++ 可用于开发智能手机的底层系统软件、高性能图形处理模块以及游戏引擎等。例如,某些手机游戏的核心渲染部分可能会使用嵌入式 C++ 编写,以实现流畅的游戏体验。在数字相机中,嵌入式 C++ 可用于实现复杂的图像处理算法、控制相机的硬件接口以及高效的图像存储和压缩功能。对于智能手表,它可以开发操作系统内核、低功耗蓝牙通信模块以及各种传感器驱动程序,在有限资源下实现丰富功能并保持长续航。

在工业自动化控制领域,可编程逻辑控制器(PLC)编程中,嵌入式 C++ 可用于开发高级控制算法和与外部设备的通信接口,实现复杂的运动控制算法,精确控制机器人手臂运动轨迹,或实时监测和控制工业生产过程中的参数。在工厂自动化系统中,它可以开发监控软件和数据采集模块,高效处理大量实时数据并与各种工业传感器和执行器通信,确保生产过程稳定高效运行。在智能电网设备方面,嵌入式 C++ 可实现高效的电力数据采集、分析和通信功能,为智能电网稳定运行提供支持。

在汽车电子系统方面,嵌入式 C++ 可开发车载娱乐系统的图形界面、音频处理和多媒体播放功能,实现高性能图形渲染和音频解码,为用户提供流畅娱乐体验。在发动机控制系统中,可实现复杂的燃油喷射控制、点火 timing 控制等关键功能,提高发动机性能和燃油效率。在自动驾驶系统中,可用于开发传感器融合算法、路径规划模块以及实时控制软件,处理大量传感器数据并实现实时决策。

(二)物联网设备领域

在智能家居设备方面,嵌入式 C++ 可开发智能音箱的语音识别和处理软件以及与其他智能家居设备的通信模块,实现高效音频处理和网络通信,快速响应用户指令并协同工作。用于智能冰箱、洗衣机、空调等家电的控制系统,实现智能化控制、远程监控和能源管理功能,提高使用便利性和节能效果。在智能门锁中,可开发安全认证和控制软件,实现高强度加密算法和可靠通信协议,确保安全性和稳定性。

在智能医疗设备方面,嵌入式 C++ 可用于开发心电图仪、血压计、血糖仪等医疗监测设备的软件,实现高效的数据采集、分析和传输功能,为医生提供准确诊断依据。开发远程医疗设备的通信软件和数据处理模块,实现稳定的网络通信和高效的数据压缩,确保远程医疗的实时性和可靠性。用于可穿戴医疗设备的软件,实现低功耗的数据采集和处理功能,为用户提供长期健康监测服务。

在智能城市设施方面,嵌入式 C++ 可用于开发智能交通系统的交通信号控制器、车辆识别系统和交通流量监测设备,实现高效的实时数据处理和通信功能,提高交通系统运行效率和安全性。开发智能路灯的控制系统,实现自动调光、故障检测和远程监控功能,实现高效能源管理和通信功能,降低城市照明能耗和维护成本。用于智能垃圾桶的传感器驱动程序和通信模块,实现自动满溢检测、垃圾分类识别和远程监控功能,提高城市垃圾处理效率和环保性。

三、嵌入式 C++ 的项目案例

(一)适合嵌入式的 C++ 开源项目

  1. Workflow
    • Workflow 是搜狗的服务器引擎,每日处理超百亿请求,非常适合在嵌入式应用上实现网络的框架设计。
    • 适用于嵌入式的特点
      • 支持多平台、多体系结构,除了常见的操作系统外,还可以在树莓派、国产龙芯处理器等不同体系结构上运行。
      • 编译快,除 OpenSSL 以外不依赖其他库,不到一分钟即可编出一个可用的 lib。
      • 体积小、支持编译裁剪,Kafka 协议默认不编译,还可裁剪其他不常用模块,库文件可缩小到 400k 左右。
      • 运行时内存小、调度快,默认配置下,tutorial 下的 helloworld server 服务占用物理内存仅 3824kb。
      • 自定义协议非常方便,社区活跃,项目负责人积极回复问题。
    • 框架能做的事情
      • 轻松搭建 server,以 http server 为例,只需简单几行代码即可。
      • 轻松高效发起客户端请求,支持多种协议,解决传统 C++ server 访问 mysql 时的问题。
      • 可建构异步任务流,支持串联、并联、串并联组合体及复杂的 DAG 结构。
      • 异步 IO,在 Linux 系统下可作为文件异步 IO 工具使用,性能超过标准调用。
      • 通信与计算一体化,自动对任务进行调度,适合网络通信的重计算模块。
  1. 其他嵌入式 C++ 开源项目推荐
    • CuTest:微小的 C 语言单元测试框,代码不到一千行。
    • cmockery:谷歌 C 单元测试框架。
    • googletest:谷歌 C++ 测试框架。
    • znfat:振南 fat,国产嵌入式文件系统方案。
    • libu:一个 C 语言写的多平台工具库。
    • LWIP:小型开源的 TCP/IP 协议栈。
    • SQLite:开源的嵌入式关系数据库。
    • OpenBLT:开源引导加载程序。
    • Linux Lab:Linux 内核实验室,基于 Docker/Qemu 的极速 Linux 内核学习、开发和测试环境。
    • airkissOpen:腾讯 airkiss 协议解析库。
    • nr_micro_shell:shell for MCU,单片机命令行交互。
    • FlexibleButton:基于标准 C 语言的小巧灵活的按键处理库。
    • mbedtls:开源、便携、易使用、可读且灵活的 SSL 库。
    • mosquitto:开源的 MQTT 代理。
    • inih:C 语言编写的 INI 文件解析器。
    • QP:QP 实时嵌入式框架。
    • MS-RTOS:Micro Safe RTOS。
    • protobuf-c:protobuf-c。
    • eepromfs:基于 EEPROM 的简易类文件的数据读写库。
    • gear-lib:适用于 IOT / 嵌入式 / 网络服务开发的 C 库。
    • mult_timer:Linux 下的超级精简的多重定时器。
    • EFSM:基于事件驱动的有限状态机。
    • GuiLite:大道至简 - 5 千行 / 仅头文件 / 全平台 GUI 库。
    • yoxios:基于 Linux 开发的轻量级物联网系统和硬件平台。
    • ToughGFX:C++ 编写的 GUI 软件框架。
    • emwin:老牌 GUI 库。
    • littlevGL:免费的开源图形库。
    • 野牛 LittlevGL demo:基于野牛开发板的 LittlevGL demo 程序。
    • MonoGUI:黑白图形用户接口系统。
    • MiniGUI:快速、稳定、跨操作系统的 GUI。
    • QT:跨平台的应用程序和用户界面框架。
    • Gtk:用于创造图形用户接口的图形库。
    • AWTK:ZLG 倾心打造的基于 C 语言开发的 GUI 框架。
    • HomeAssistant:基于 Python 的智能家居开源系统。
    • Domoticz:开源的智能家居系统。
    • Kaa IoT Platform:功能丰富的开放和高效的物联网云平台。
    • RT-Thread IoT SDK:基于 RT-Thread IOT 开发板的各类例程。
    • qt_2019_ncov:基于 Qt/C++ 实现的新冠肺炎疫情监控平台。
    • H7-TOOL_STM32H7_App:H7-TOOL 多功能开发工具。
    • DAPLink/CMSIS DAP:调试器,集成下载、调试和 USB 虚拟串口。
    • mcush:MCU shell。
    • DoST:Linux 下开发 STM32。
    • Crazepony:Crazepony 开源四轴飞行器。
    • MiniQ:迷你四轴飞行器。
    • LiPow-Firmware:基于 STM32G0 采用 USB type-C 供电的开源锂电池充电器。
    • Avem:轻量级无人机飞控。
    • SoftWareSerial:STM32 IO 口模拟实现软件串口程序。
    • 串口 ISP 程序:stm32 串口 ISP 程序。
    • DSO_Nano:手持示波器。
    • DSView:跨平台的逻辑分析仪。
    • MCU-Development:基于 51、430、STM32F10X、STM32F407X、T4MC123G 平台的各常见硬件模块 demo。
    • Arduino:开源电子原型平台。
    • EWAHBoolArray:bitmap 算法。

(二)学习嵌入式可以做的项目案例

  1. 智能超市管理系统
    • 功能包括业务员登录、一维码扫描录入商品价格、二维码付钱或手动输入付钱、支持刷卡、支持本地数据库管理、支持商品价格调整等。
    • 系统组成有服务器(fs4412 芯片目标板)、扫描器、手机及 PC(QT 界面编写)等。
  1. WiFi 智能小车机器人
    • 涉及 Android 应用程序编写和嵌入式系统开发流程,需熟悉 C、C++、Linux 系统编译机制和脚本,以及安卓系统运作方式、API 接口等。
  1. 智能医疗云平台
    • 采用先进的诊疗传感器采集患者信息,将数据传输给医疗终端设备,再发送到远程医疗服务器,患者可通过医疗终端查看医师反馈结果。

四、嵌入式 C++ 的开发工具推荐

(一)常用开发工具

  1. Visual Studio Code
    • 特点:微软开发的开源代码编辑器,支持多种操作系统。具有轻量级、快速响应的特点,占用系统资源少,启动速度快。提供丰富的插件生态系统,可通过安装 C/C++ 插件获得智能感知的自动补全、代码调试、语法高亮等功能。支持自定义主题、快捷键等,满足开发者个性化需求。
    • 优势:跨平台能力强,无论在 Windows、Linux 还是 Mac OS 上都能提供一致的开发体验。内置的侧边栏 Git 命令和强大的调试功能,方便团队协作和代码版本管理。对于嵌入式开发,可通过安装特定插件支持多种开发工具链,提高开发效率。
  1. Eclipse
    • 特点:最初用于 Java 编程,现在可用于多种编程语言,包括 C/C++。是一个简单易用的开源软件,支持 Windows、Linux 和 Mac OS。具有庞大的社区,开发者在遇到问题时可以在网站上提交 Bug 并获取帮助。提供智能代码补全、Git 集成、跨平台支持等功能。
    • 优势:支持静态代码分析,有助于提高代码质量。丰富的插件可扩展软件功能,如安装特定插件可将 Eclipse 打造成强大的嵌入式开发环境。其简单高效的项目管理和智能的代码编辑功能,能提高开发效率。
  1. NetBeans
    • 特点:用 Java 编写的免费开源 IDE,支持多种操作系统。可以创建具有动态和静态库的 C/C++ 应用程序,允许从现有代码创建项目。具有丰富的插件集,可远程监控项目开发。提供简单高效的项目管理、智能的代码编辑和社区支持。
    • 优势:跨平台的支持使得开发者可以在不同操作系统上无缝切换开发环境。丰富的插件集满足不同开发需求,提高开发效率。社区支持强大,开发者可以在社区中获取帮助和分享经验。

(二)在线编译器

  1. rextester.com
    • 特点:相对专业的在线编译器,可以显示编译时间、运行时间、内存占用等信息。支持多种编程语言,C 语言可选择 gcc、clang、vc 等编译器。用户界面简洁明了,方便使用。
    • 优势:无需安装和复杂配置,打开浏览器即可使用。对于初学者或者本地没有编译环境又想快速验证代码的情况非常实用。
  1. tutorialspoint.com
    • 特点:是一款比较全面的在线工具,支持前端技术、文档编辑、在线编译等丰富的功能。其中 C 语言(GCC)在线编译器功能强大,若代码有错误会提示错误位置,方便开发者快速定位问题。
    • 优势:功能全面,不仅可以进行在线编译,还提供了丰富的学习资源和工具。适合边学习边实践,提高学习效率。

五、如何学习嵌入式 C++

(一)基本数据类型

嵌入式 C++ 的基本数据类型包括整型、浮点型、字符型等。在学习过程中,需要了解不同数据类型的特点和用途。例如,整型用于表示整数,浮点型用于表示实数,字符型用于表示单个字符或 ASCII 码值。

同时,要掌握数据类型之间的转换方法。C++ 支持自动类型转换和明确类型转换。在实际编程中,可能需要将一种数据类型转换为另一种数据类型,以满足特定的需求。例如,可以将整数转换为浮点数,或者将字符型转换为整数。

(二)引用数据类型

在嵌入式 C++ 中,引用数据类型有常规键值对的无序对象、数组及函数等。Object 类存储该对象在栈中引用,真实数据存放在堆内存中。这意味着栈中存储了指针,指针指向堆中该实体的起始地址。

引用数据类型的特点是可以通过引用的方式来操作对象,避免了复制对象的开销。在学习过程中,需要了解引用的用法和与指针的区别。引用必须在定义的同时进行初始化,且在程序运行期间不能改变引用所指向的对象。而指针可以在任何时候进行赋值和改变指向。

(三)struct 用法

  1. 自然对界:在嵌入式 C++ 中,struct 是一种复合数据类型,其构成元素既可以是基本数据类型的变量,也可以是一些复合数据类型的数据单元。自然对界即默认对齐方式,是指按结构体的成员中 size 最大的成员对齐。例如,如果结构体中的最大成员是 int 类型,长度为 4 字节,那么结构体中的其他成员会按照 4 字节的单位进行对齐。
  1. 指定对界:一般地,可以通过使用伪指令#pragma pack (n)来改变缺省的对界条件,编译器将按照 n 个字节对齐。如果#pragma pack (n)中指定的 n 大于结构体中最大成员的 size,则其不起作用,结构体仍然按照 size 最大的成员进行对界。例如,当 n 为 4、8、16 时,其对齐方式均一样,sizeof(naturalalign)的结果都等于 12。而当 n 为 2 时,其发挥了作用,使得sizeof(naturalalign)的结果为 6。

在学习嵌入式 C++ 时,要掌握 struct 的用法,包括结构体的定义、成员变量的访问和初始化等。同时,要了解结构体的对齐方式,以便在编程中合理地安排结构体的成员,提高程序的性能和可维护性。

六、嵌入式 C++ 的特点

(一)与 C 语言对比的优势

C++ 在嵌入式开发中相比 C 语言具有多方面的优势。在面向对象编程方面,C++ 支持类、对象和继承等概念,这使得代码复用性更高,组织结构更加清晰。例如,在开发复杂的嵌入式系统时,可以通过定义不同的类来封装各种功能模块,提高代码的可维护性。同时,模板编程是 C++ 的一大特色,它使得代码可以更加泛型化,提升了复用性。例如,通过模板可以实现通用的数据结构和算法,适用于不同的数据类型,减少了重复代码的编写。

(二)嵌入式开发注意事项

  1. 类与对象:在嵌入式开发中,使用 C++ 类虽然带来了面向对象的好处,但也需要注意一些问题。因为 C++ 类需要额外的存储空间来保存虚函数表、对象成员等,所以在资源受限的嵌入式环境中,应尽量避免使用虚函数和多重继承,除非必要。这样可以减少内存占用,提高系统性能。
  1. RTTI 和异常处理:RTTI(Run-Time Type Information)在嵌入式系统中通常不使用,因为它会增加代码的体积和运行时开销。同样,虽然 C++ 的异常处理机制很方便,但在嵌入式开发中,为了减少代码开销,通常会关闭异常处理功能(通过编译选项 - fno-exceptions)。
  1. 动态内存分配:动态内存管理是 C++ 的优势,但在嵌入式系统中,内存紧张且通常没有内存管理单元(MMU)。因此,建议在嵌入式系统中尽量避免使用 new 和 delete,使用静态内存分配或预先分配好的内存池,以确保系统的稳定性和可靠性。

(三)常用技巧

  1. 使用结构体模拟寄存器:嵌入式系统需要操作硬件寄存器,可以通过结构体定义寄存器的布局。例如:struct GPIO{volatile uint32_t MODER;volatile uint32_t OTYPER;volatile uint32_t OSPEEDR;volatile uint32_t PUPDR;volatile uint32_t IDR;volatile uint32_t ODR;};#define GPIOA (*((GPIO*)0x40020000)),这样可以直接使用GPIOA.MODER = 0x1;来设置寄存器,提高了代码的可读性和可维护性。
  1. 模板的高效利用:模板可以减少代码重复,提高代码的泛型性。例如,可以通过模板实现一个通用的环形缓冲区:template<typename T, size_t N>class CircularBuffer{public:void put(T item){buffer[head] = item;head = (head +1) % N;}T get(){T item = buffer[tail];tail = (tail +1) % N;return item;}private:T buffer[N];size_t head = 0;size_t tail = 0;};,这个环形缓冲区可以用于不同的数据类型,提高了代码的复用性。

(四)编译器配置优化

  1. 编译器优化选项:在嵌入式开发中,代码大小和性能非常关键,可以通过编译器选项进行优化。例如,GCC 中的常用优化选项有 - O1、-O2、-O3,不同级别的优化可以在运行速度和代码大小之间进行权衡。-Os 是针对代码大小的优化,可以减少程序占用的存储空间。同时,-fno-exceptions 可以禁用异常处理,减少代码体积;-fno-rtti 可以禁用运行时类型识别,减少不必要的开销。
  1. 手动内存对齐:嵌入式系统中的某些硬件对内存对齐有要求,可以使用 alignas 关键字进行手动对齐。例如:alignas(4) uint32_t buffer[10];,这样可以确保数组 buffer 在内存中的存储地址是 4 的倍数,满足硬件的对齐要求,提高程序的性能。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机网络】【网络层】【习题】

计算机网络-传输层-习题 文章目录 13. 图 4-69 给出了距离-向量协议工作过程&#xff0c;表&#xff08;a&#xff09;是路由表 R1 初始的路由表&#xff0c;表&#xff08;b&#xff09;是相邻路由器 R2 传送来的路由表。请写出 R1 更新后的路由表&#xff08;c&#xff09;。…

C/C++精品项目之图床共享云存储(2):MySql连接池

一&#xff1a;介绍 C/C精品项目之图床共享云存储&#xff08;1&#xff09; 我们项目的第一个文章讲解了很多的基础组件&#xff0c;包括线程池。我们都知道线程池是为了资源的复用&#xff0c;提高效率。而我们的MySql连接池也是一样的&#xff0c;是为了维持管理固定数量的…

网安数学基础-同余关系

文章目录 参考等价关系实例 同余同余和等价同余的运算 乘法逆元一次同余方程消去律 剩余类中国剩余定理欧拉函数欧拉定理 费马小定理 参考 【一口气学完】密码学的数学基础2&#xff0c;《同余关系》&#xff0c;一小时学完 等价关系 三角形里的全等关系 等价关系定义 下面这…

工业主板市场现状和主要市场驱动因素概述

工业主板市场是计算机硬件行业中的一个重要细分市场&#xff0c;专注于供应专为工业应用而设计的主板。与消费级主板不同&#xff0c;工业主板可承受极端条件&#xff0c;包括高温、连续运行以及暴露在灰尘和潮湿环境中。工业主板对于制造、自动化、医疗、国防和能源等行业中使…

舌尖上的传统美味 —— 食家巷白吉饼

第一眼看到食家巷白吉饼&#xff0c;就被它朴实的外表所吸引。圆润的形状&#xff0c;淡淡的麦色&#xff0c;没有过多的装饰&#xff0c;却散发着一种让人安心的质朴之美。 &#x1f388;拿起一个白吉饼&#xff0c;轻轻一掰&#xff0c;“咔” 的一声&#xff0c;那酥脆的外…

OpenHarmony-1.启动流程

OpenHarmony启动流程 1.kernel的启动 流程图如下所示&#xff1a;   OpenHarmony(简称OH)的标准系统的底层系统是linux&#xff0c;所以调用如下代码&#xff1a; linux-5.10/init/main.c: noinline void __ref rest_init(void) {struct task_struct *tsk;int pid;rcu_sch…

ANR分析实例

目录 一、ANR出的问题原因 二、日志分析 2.1 CPU 负载 2.2 内存 2.3 堆栈信息 三、案例分析 3.1 主线程无卡顿&#xff0c;处于正常状态堆栈 3.2 主线程执行耗时操作 3.3 主线程被锁阻塞 3.4 CPU被抢占 3.5 内存紧张导致ANR 3.6 系统服务超时导致ANR 3.7 Input dis…

知识库搭建:高企创新创业的智慧引擎与未来趋势

在当今这个科技迅猛发展的时代&#xff0c;高新技术企业&#xff08;简称“高企”&#xff09;作为推动经济社会进步的重要力量&#xff0c;正面临着前所未有的创新挑战与机遇。知识库&#xff0c;这一信息时代的关键工具&#xff0c;不仅汇聚了高企内部的丰富知识与经验&#…

D67【python 接口自动化学习】- python基础之数据库

day67 Python操作MySQL基础使用 学习日期&#xff1a;20241113 学习目标&#xff1a;MySQL数据库-- 136 Python操作MySQL基础使用 学习笔记&#xff1a; pymysql 创建MySQL的数据库链接 执行sql语句 总结 Python中使用第三方库&#xff1a;pymysql来操作MySQL&#xff0c;…

容器管理平台KubeSphere的使用

在之前的课程中我们是在minikube中安装了K8S环境,然后通过kubectl命令来管理K8S的,这种用命令来管理的方式虽然对程序员来说看起来很炫酷,但有时候用起来还是挺麻烦的。这节课程给大家介绍一款企业级容器管理平台KubeSphere,使用它能更方便地管理K8S中的容器,希望对大家有…

低代码可视化-uniapp气泡弹窗组件可视化-代码生成器

气泡弹窗组件是产品设计中常用的控件之一&#xff0c;以下是对uniapp气泡弹窗组件可视化的详细解析&#xff1a; 一、组件定义 气泡弹窗组件&#xff08;diy-popover &#xff09;指的是当触发某项操作时&#xff0c;在页面上方或特定位置展示的弹出层容器&#xff0c;容器内…

Unity3D学习FPS游戏(11)敌人AI巡逻(NavMesh)

前言&#xff1a;前面两篇博客已经实现了简单的敌人&#xff0c;但是呢&#xff0c;这样很无趣。因为敌人只会站在原地被攻击&#xff0c;所以本篇我们将实现敌人AI巡逻&#xff0c;让敌人动起来。 敌人AI巡逻 场景丰富一下导航网格NavMesh构建导航网格导航网格优化玩家被当作…

遇到“msvcr120.dll丢失”要怎么解决?详解msvcr120.dll的解决方法

遇到“msvcr120.dll丢失”错误通常表明你的系统缺少一个关键的DLL文件&#xff0c;这是Microsoft Visual C 2013的一部分。这个问题可能导致某些程序无法运行&#xff0c;影响电脑性能。不过&#xff0c;解决这一问题并不复杂。接下来&#xff0c;本文将向你展示几种简单的修复…

git相关知识

前言&#xff1a;在学习git之前首先需要了解几个概念&#xff1a;工作区&#xff0c;暂存区&#xff0c;版本库。 工作区&#xff1a;是电脑上写代码或者文件的目录。 暂存区&#xff1a;一般存放在.git目录下的index中&#xff0c;也称索引。&#xff08;git add&#xff09…

Spring Boot项目的配置文件有哪些?加载优先级谁最高?配置优先级谁最高?

目录 一. 结论 二. .prperties、.yml、.yaml 文件类型简介及注意点 2.1 文件简介 2.2. .prperties&#xff08;默认格式/传统格式&#xff09; 2.3 application.yml&#xff08;主流格式&#xff09; 2.4 application.yaml&#xff08;主流格式&#xff09; 2.5 配置文件…

蓝牙眼镜WT6900HA语音控制芯片方案:开启智能穿戴新篇章

前言&#xff1a; 随着科技的飞速发展&#xff0c;智能穿戴设备已经逐渐融入我们的日常生活。从智能手表到智能手环&#xff0c;再到如今的智能蓝牙眼镜&#xff0c;这些设备不仅改变了我们的生活方式&#xff0c;更引领了一场科技革命。 今天&#xff0c;我们要为大家介绍一款…

项目管理【02】项目开发完整指南

移动端项目开发完整指南&#xff1a;从需求到上线 在移动应用开发过程中&#xff0c;一个项目从最初的需求到最终上线&#xff0c;需要经过多个关键阶段。本文将详细介绍整个开发流程中的最佳实践&#xff0c;帮助开发团队更高效地完成项目。 一、准备阶段 项目启动前的准备工…

快手直播间采集教程,快手引流,快手截流,截流工具,直播间截流,快手直播间采集,获客系统,获客软件

功能&#xff1a; 1.输入快手直播间链接可一键监控直播间 2.可采集新进直播间的人 3.可采集直播间所有动作&#xff0c;包含&#xff1a;发弹幕的人和内容、送礼物的人和送的礼物、点亮爱心的人 4.可一键导出新进直播间的快手ID 5.可一键导出直播间动作列表&#xff0c;也可以筛…

sol机器人pump机器人如何实现盈利的?什么是Pump 扫链机器人?

什么是Pump 扫链机器人&#xff0c;它的盈利逻辑优化策略是什么&#xff1f; Pump 扫链机器人&#xff0c;通过智能化、自动化的买卖操作帮助投资者实现快速盈利。在此基础上&#xff0c;我们对该机器人的盈利逻辑进行了深度优化&#xff0c;涵盖了买入策略和止盈策略的各个方面…

【vue2】13.自定义指令

目录 自定义指令 自定义指令的作用? 自定义指令的使用步骤? 1. 注册 (全局注册 或 局部注册) 2. 标签上 v-指令名 使用 自定义指令 - 指令的值 1. 通过指令的值相关语法&#xff0c;可以应对更复杂指令封装场景 2. 指令值的语法&#xff1a; 自定义指令 - v-loading…