【RA6M3 HMI Board线下培训笔记】 RT Thread实现物联网应用 ETH+MQTT+LVGL+RTOS 实现温湿度监测

【RA6M3 HMI Board线下培训笔记】 RT Thread实现物联网应用 ETH+MQTT+LVGL+RTOS 实现温湿度监测

1. 序言

随着物联网技术的飞速发展,越来越多的生活场景变得越来越智能,网联化、智能化越来越成为主旋律。

值此之际,RT-Thread 和 瑞萨电子共同举办 智能家居网络开发:RA6M3 HMI Board 以太网+GUI技术实践 线下培训

这次培训融合了很多物联网相关的知识,以太网ETH,MQTT协议,LVGL图像化界面和RTOS多任务开发,RT Thread Studio软件和生态高质量、高复用和高平台性的软件工具链将这四者综合起来,让开发者可以快速的上手物联网开发

image-20240125080425938

2. 瑞萨RA6M3芯片(Cortex M4内核)

下面我们先来介绍MCU,瑞萨RA6M3属于RA6系列微控制器,这个系列是瑞萨电子推出的高性能微控制器,主要针对物联网和工业应用。你想要的详细介绍,来啦!

  1. 核心特点:RA6M3使用了Arm Cortex-M4核心,这意味着它有着高效的处理能力和低功耗的特点。其最高频率可达200 MHz,这在微控制器界就像是“跑车”的性能。
  2. 内存配置:这款芯片拥有高达1MB的闪存和256KB的SRAM。这样的内存配置,在处理复杂程序时就能像是在公园散步一样轻松。
  3. 丰富的外设接口:RA6M3支持USB Full-speed和High-speed,有CAN接口,还支持SDHI、QSPI等。这些接口就像是一座桥,让RA6M3能和各种设备“握手”。
  4. 安全功能:安全性也是这款芯片的强项。它有安全加密模块,可以保护你的数据不被“偷窥”。
  5. 低功耗设计:在物联网时代,设备通常需要长时间运行。RA6M3在这方面做得很好,它的低功耗设计可以让设备长时间运行而不“喘气”。
  6. 图形功能:RA6M3还支持2D图形引擎和Capacitive Touch Sensing Unit,让你的界面美观又好用。

如下图所示,RA系列目前主要有以下四个系列:

image-20240125205532322

  • RA2 系列 – 低功耗:基于 Arm Cortex-M23 内核,最高频率 60 MHz,拥有高达 256 KB 的闪存和 32 KB 的 SRAM。电源电压范围为 1.6 V 到 5.5 V。外设包括全速 USB、CAN、24 位 ∑-△ 模数转换器 (ADC)、16 位数模转换器 (DAC)、电容式触摸感应以及安全功能。
  • RA4 系列 – 高性能和出色的功耗:基于支持 TrustZone 的 Arm Cortex-M33F 内核或 Arm Cortex-M4F 内核构建,最高频率 100 MHz。高达 1 MB 的闪存和 128 KB 的 SRAM。电压范围为 1.6 V 到 5.5 V。 外设包括电容式触摸感应、段码式 LCD 控制器、全速 USB、CAN、安全功能以及数据转换器和定时 器。RA4W1 系列器件还额外配备了 Bluetooth® 低功耗 (BLE) 5.0。
  • RA6 系列 – 高性能:基于支持 TrustZone 的 Arm Cortex-M33F 内核或 Arm Cortex-M4F 内核。最高频 率 240 MHz。高达 2 MB 的闪存和 640 KB 的 SRAM。电压范围为 2.7 V 到 3.6 V。外设包括数据转换 器、定时器、外部存储总线、以太网、全速和高速 USB、CAN、安全功能、电容式触摸感应和用于 TFT 显示的图形 LCD 控制器,以及一个 2D 图形引擎。RA6T1 和 RA6T2 系列器件带有用于电机控制 的增强型外设,如高分辨率 PWM 定时器或高级模拟模块。

3. 开发板介绍

本次使用的开发板是RT-Thread联合瑞萨推出的高性价比图形评估套件,取代传统的HMI+主控板硬件,一套硬件即可实现HMI+IOT+控制的全套能力。依托于瑞萨高性能芯片和RT-Thread软件生态,HMI Board不仅硬件性能强劲,同时软件生态丰富,主力开发者快速开发出GUI硬件产品。淘宝链接:https://item.taobao.com/item.htm?abbucket=6&id=721524271628&ns=1&skuId=5190654114275&spm=a21n57.1.0.0.7427523cJCmd89

开发板硬件配置如下图所示:

image-20240125214924784

image-20240125214510047

4. RT Thread Studio介绍

RT-Thread Studio是一个基于RT-Thread操作系统的一站式开发环境。RT-Thread,作为一个开源的实时操作系统(RTOS),在嵌入式领域非常受欢迎。那么RT-Thread Studio具体是什么样的,我们一探究竟:

  1. 一体化的开发环境:RT-Thread Studio集成了代码编辑、编译、下载、调试等功能。它就像是嵌入式开发者的“瑞士军刀”,应有尽有,用起来方便极了。
  2. 图形化配置:这个特点非常吸引人。你可以通过图形化界面来配置你的RT-Thread系统,不需要手动去修改复杂的配置文件。这就像是在用积木搭建房子,直观又好玩。
  3. 丰富的软件包支持:RT-Thread Studio提供了大量的软件包,涵盖了网络、文件系统、图形界面等多个领域。这些软件包就像是加油站,为你的项目提供强大的动力。
  4. 跨平台兼容:支持多种操作系统,无论你是Windows、Linux还是macOS用户,都能使用RT-Thread Studio。这种兼容性就像是“通用翻译器”,让不同系统的用户都能愉快交流。
  5. 仿真和调试功能:RT-Thread Studio提供了仿真和调试工具,可以让你在还没拿到实际硬件之前就开始软件开发。这就像是先有了“试衣间”,再去定制你的“高级定制服装”。
  6. 开源社区支持:由于RT-Thread本身就是开源的,RT-Thread Studio也享受着强大的社区支持。这意味着你可以获取丰富的学习资料和社区的帮助,就像有一个“智囊团”在身边。

5. 前期准备

上面我们介绍了本次培训的主要应用的软件和硬件,下面是我们本次培训所需要的软件按照和参考资料:

  • RT-Thread Studio下载链接:https://download_redirect.rt-thread.org/download/studio/RT-Thread_Studio_2.2.7-setup-x86_64.exe

  • SquareLine Studio下载链接:https://static.squareline.io/downloads/SquareLine_Studio_Windows_v1_3_2.zip

  • MQTTX 下载链接:https://packages.emqx.net/MQTTX/v1.9.6/MQTTX-Setup-1.9.6-x64.exe

  • 项目代码链接:hmi-board-eth-monitor

  • **项目参考教程:**https://docs.qq.com/doc/DY0FIWFVuTEpORlNn?login_t=1705968438854

  • **开发工具:**RT-Thread Studio/Keil MDK5(固件开发、编译),SquareLine Studio(LVGL UI设计工具)

  • **Demo代码:**链接:https://pan.baidu.com/s/1XdJvCTmsO8IjTumSQm_R-g 提取码:gxlj

6. 实践环节一:以太网外设的使用

6.1 安装SDK 软件包,瑞萨开发板支持包,DAP调试包

image-20240125221558487

image-20240125221809869

6.2 打开RT-Thread Studio创建新的RT-Thread项目

image-20240125220607957

6.3 选择基于开发板,选择HMI-Board开发板,类型选择模板工程,调试器选择板载DAP调试

image-20240125220841305

6.4 在 RT-Thread Setting 中的Hardware中使能 Ethernet (以太网)外设:

image-20240125222033509

image-20240125222239913

6.5 编译程序和下载

image-20240125223112150

编译成功

image-20240125223315894

下载代码:

image-20240125223404149

6.6 设置共享网络

image-20240125224104243

image-20240125224208584

6.7 烧录好固件后,打开串口终端,可以输入 ifconfig 命令查看是否获取到IP地址。

image-20240125224317066

image-20240125224413118

image-20240125230652017

6.8 获取到IP地址后,可以输入 ping www.baidu.com 测试网络是否可以用。

image-20240125230742434

7. 实践环节二:MQTT 软件包的使用

7.1 MQTT 简介

要理解MQTT协议,首先让我们了解为什么会开发MQTT。在1999年之前,石油和天然气行业面临着从油气管道到SCADA系统的数据交换的大问题。石油和天然气行业,尤其是油井和管道,通常位于非常偏远的地方,要从仪器和RTU获取数据到SCADA系统非常困难。为了获取数据,我们有诸如串行通信、卫星、低带宽无线电波系统等选项。但由于偏远的位置和网络带宽问题,我们无法及时获取数据,即使能获取到,响应也非常糟糕。因此,工程师Andy Stanford-Clerk和Allen Nipper在1999年开发并发明了MQTT,以解决所有这些问题。MQTT是一种适用于低成本、低带宽或不稳定连接的协议。现在,通过MQTT协议,你可以快速有效地从所有偏远地点使用低带宽获取数据。

image-20240125220321073

让我们借助一个简单的日常生活例子来理解MQTT协议。以YouTube为例,YouTube的工作原理与MQTT协议类似。比如说,它自动化学院的YouTube频道,有超过3700万个YouTube频道。因为你订阅了我的YouTube频道,所以每当我发布视频时,你肯定会在YouTube首页上得到更新。你还会看到更多来自你已订阅频道的视频推荐。因此,YouTube是基于发布和订阅机制工作的。我们将通过这个例子来简单理解MQTT概念。MQTT协议或消息队列遥测协议是基于发布和订阅机制工作的。MQTT有一个我们称之为MQTT代理或服务器的东西。MQTT代理是MQTT协议的核心,它负责接收所有消息,过滤这些消息,决定谁对它们感兴趣,然后将这些消息发布给所有订阅的客户端。因此,你现在看到的是我们的MQTT代理或服务器。

让我们理解使用MQTT协议的好处。MQTT协议的美妙之处在于它支持不可靠的网络,它有可靠的消息传递,你可以将这些协议扩展到数百万个设备,并启用安全功能,它轻巧且高效。

7.2 基于实践一的工程,在 RT-Thread Setting 中搜索 Kawaii-mqtt 软件包,并使能mqtt test功能,然后ctrl+s 拉取软件包到工程内:

image-20240126070935059

7.2 将下面代码粘贴覆盖 packages/kawaii-mqtt-latest/test/test.c
#include <stdio.h>
#include <stdint.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include "mqttclient.h"static void sub_topic_handle1(void* client, message_data_t* msg)
{(void) client;KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------");KAWAII_MQTT_LOG_I("%s:%d %s()...\ntopic: %s\nmessage:%s", __FILE__, __LINE__, __FUNCTION__, msg->topic_name, (char*)msg->message->payload);KAWAII_MQTT_LOG_I("-----------------------------------------------------------------------------------");
}static int mqtt_publish_handle1(mqtt_client_t *client)
{mqtt_message_t msg;memset(&msg, 0, sizeof(msg));msg.qos = QOS0;msg.payload = (void *)"this is a kawaii mqtt test ...";return mqtt_publish(client, "pub5323", &msg);
}static char cid[64] = { 0 };
static void kawaii_mqtt_demo(void *parameter)
{mqtt_client_t *client = NULL;rt_thread_delay(6000);mqtt_log_init();client = mqtt_lease();rt_snprintf(cid, sizeof(cid), "rtthread-5323", rt_tick_get());mqtt_set_host(client, "broker.emqx.io");mqtt_set_port(client, "1883");mqtt_set_user_name(client, "RT-Thread");mqtt_set_password(client, "012345678");mqtt_set_client_id(client, cid);mqtt_set_clean_session(client, 1);KAWAII_MQTT_LOG_I("The ID of the Kawaii client is: %s ",cid);mqtt_connect(client);mqtt_subscribe(client, "sub5323", QOS0, sub_topic_handle1);while (1) {mqtt_publish_handle1(client);mqtt_sleep_ms(4 * 1000);}
}int ka_mqtt(void)
{rt_thread_t tid_mqtt;tid_mqtt = rt_thread_create("kawaii_demo", kawaii_mqtt_demo, RT_NULL, 2048, 17, 10);if (tid_mqtt == RT_NULL) {return -RT_ERROR;}rt_thread_startup(tid_mqtt);return RT_EOK;
}
MSH_CMD_EXPORT(ka_mqtt, Kawaii MQTT client test program);
7.3 编译,烧录固件到开发板中,使用 ifconfig 命令查看是否获取到IP地址:

image-20240126071457977

7.4 输入 ka_mqtt 命令,等待连接MQTT服务器成功:

image-20240126071552972

7.5 上位机软件配置:安装MQTTX-Setup-1.9.6-x64.exe 软件,新建配置,按下图进行配置

image-20240126073435964

image-20240126071759607

**注意:**订阅和发布的topic需要和开发板上的topic保持一致(sub/pub+手机号后四位)

7.6 更改test.c中的mqtt_subscribe()中的命名,和客户端保持一致

image-20240126073036258

7.7 在MQTT中向订阅的topic发送信息

image-20240126073157020

{"temp": 23,"humi": 20,"lux": 120
}
7.8 使用MQTT工具向开发板订阅的Topic发送数据:

开发板串口终端接收到此消息,并打印:

image-20240126073339120

8. 实践环节三:LVGL 以太网数据监视器

8.1 LVGL介绍

LVGL在2016年左右诞生了。它最初是作为一个简单的GUI库开始的,目标是提供轻量级、易于使用的界面解决方案。随着时间的推移,LVGL逐渐发展成为一个功能丰富、高度可定制的图形库,支持各种显示和输入设备,变得越来越流行。

优点:

  1. 轻量级: 正如其名,LVGL非常适合资源有限的嵌入式系统。
  2. 易于使用: 它提供了丰富的控件和简单的API,让开发者容易上手。
  3. 高度可定制: 你可以根据自己的需求定制各种界面。
  4. 跨平台兼容: 支持多种操作系统和硬件平台,非常灵活。

image-20240125201750399

8.2 使用Demo代码导入到RT Thread中

1、打开RT-Thread Studio 选择导入:

image-20240126074436982

image-20240126074505665

image-20240126074628047

image-20240126074657207

8.3 点击编译按钮,等待编译完成,下载

image-20240126074907747

8.4 当程序下载到开发板中,LVGL设计的UI界面显示在下面的图中,按下属的操作即可通过MQTT发送相应的信息到开发板中

image-20240126075005870

image-20240126074948091

image-20240126075019264

image-20240126075135345

image-20240126075157077

image-20240126075210477

image-20240126075221953

image-20240126075231489

image-20240126075248788

image-20240126075328852

image-20240126075342649

9. 实践环节四:使用Squareline Studio开发UI

Squareline Studio是一个专门为嵌入式设备设计的用户界面开发工具。它旨在简化嵌入式UI的设计和开发流程。如果你是一名嵌入式开发新手,那么使用Squareline Studio来开发UI就像是找到了一把开启嵌入式界面大门的钥匙。下面是一些关于使用Squareline Studio的要点:

  1. 直观的图形设计界面

    • Squareline Studio提供了一个直观易用的图形界面,你可以通过拖放组件来设计UI,就像是在玩拼图一样简单有趣。
  2. 组件丰富

    • 它拥有丰富的UI组件,比如按钮、滑块、文本框等,这就像是你的设计工具箱,里面应有尽有。
  3. 预览功能

    • Squareline Studio支持实时预览功能,你可以即时看到UI更改的效果。这就像是拥有了一个“魔镜”,让你立刻看到变化。
  4. 代码生成

    • 设计完成后,Squareline Studio可以自动生成C代码,这就省去了手动编写代码的麻烦,对于新手来说,这无疑是一大利好。
  5. 自定义样式

    • 它允许你自定义组件的样式,包括颜色、字体等,这让你的界面不仅功能强大,而且美观大方。
  6. 跨平台兼容

    • Squareline Studio生成的代码可以在多种平台上运行,无论是ARM、x86还是其他,这就像是通用的“翻译器”,让你的UI在不同的设备上都能“说同一种语言”。
  7. 易于学习

    • 对于新手来说,Squareline Studio相对易于学习和上手。它的用户界面直观,功能划分清晰,就像是有了一位耐心的老师,指导你一步步完成设计。

使用Squareline Studio开发UI,对于嵌入式开发新手来说,是一个既省时又高效的选择。它不仅让UI设计变得简单,而且通过自动生成代码,大大降低了开发的复杂度。简而言之,Squareline Studio就像是嵌入式UI设计的“魔法棒”,让原本复杂的过程变得简单有趣!

**实践指导可以参考:**https://docs.qq.com/doc/DY0FIWFVuTEpORlNn?login_t=1705968438854

下图是我在培训时自己的做的UI界面,做好的样式可以直接下载到开发板上面

image-20240126080933143

10. 总结

通过上述的动手编程,体会到RT-Thread作为一个开源实时操作系统,在物联网、MQTT、以太网以及LVGL这些领域的表现可以说是既专业又用户友好。

  1. 物联网方面
    • 集成度高:RT-Thread提供了完整的物联网协议栈支持,包括但不限于M2M、CoAP等。这些协议已经被集成在RT-Thread中,对于新手来说,这意味着可以直接使用,而不需要从头开始开发。
    • 文档和社区支持:RT-Thread有着详尽的文档和活跃的社区支持,对于遇到问题的新手来说,这是学习和解决问题的宝贵资源。
  2. MQTT方面
    • 简单的客户端实现:RT-Thread内置了MQTT客户端实现,对于初学者而言,这降低了实现MQTT通信的复杂度。通过简单的API调用,新手可以快速搭建起MQTT通信。
    • 示例和教程:RT-Thread提供了MQTT使用的示例和教程,这对于刚接触MQTT的新手非常有帮助,可以快速理解并上手。
  3. 以太网方面
    • 驱动和网络栈支持:RT-Thread为常用的以太网芯片提供了驱动支持,并且集成了LwIP网络栈,这让新手能够更容易地实现以太网通信。
    • 配置简便:通过RT-Thread的图形化配置工具,新手可以很容易地完成以太网相关的设置,无需深入了解复杂的网络配置。
  4. LVGL图形库方面
    • 高度集成:RT-Thread对LVGL图形库有很好的支持和集成。LVGL是一个轻量级的图形库,非常适合用在资源有限的嵌入式设备上。
    • 易于使用的API:LVGL提供了易于理解和使用的API,对于新手来说,这意味着可以更快地开发出漂亮的用户界面。
    • 丰富的文档和例程:LVGL有着详尽的文档和丰富的示例,这对于初学者来说非常重要,可以帮助他们快速上手和理解图形界面的开发。

总体来说,RT-Thread在物联网、MQTT、以太网和LVGL图形库方面对新手非常友好。它通过提供集成的解决方案、丰富的文档、社区支持以及简单易用的API,大大降低了新手入门的门槛。对于刚入门的嵌入式开发者来说,使用RT-Thread就像是有了一个全面且易懂的导师,让整个学习过程变得更加轻松和愉快。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

光耦驱动继电器电路图大全

光耦驱动继电器电路图&#xff08;一&#xff09; 注&#xff1a; 1U1-1脚可接12V&#xff0c;也可接5V&#xff0c;1U1导通&#xff0c;1Q1导通&#xff0c;1Q1-30V&#xff0c;线圈两端电压为11.7V. 1U1-1脚不接或接地&#xff0c;1U1不通&#xff0c;1Q1截止&#xff0c;1…

蓝桥OJ3694肖恩的投球游戏plus

二维差分 #include<bits/stdc.h> using namespace std;const int N 1e3 5; int a[N][N],d[N][N];int main() {int n, m, q;cin >> n >> m >> q;for (int i 1 ; i < n; i){for (int j 1; j < m; j){cin >> a[i][j];d[i][j] a[i][j] a…

webug存在的越权漏洞-水平越权以及垂直越权的漏洞复现(超详解)

越权漏洞-webug、 1.登录 账号&#xff1a;admin 密码&#xff1a;admin 2.进入逻辑漏洞 3.进入越权修改密码靶场 &#xff08;1&#xff09;输入账号密码 进入进去会发现没有权限进入 方法一&#xff1a; 这里我们只需要将 127.0.0.1:8080/control/a/auth_cross/cross_a…

pytorch实战-图像生成与对抗

1 概述 what&#xff1a;给定一句话&#xff0c;或一些要求&#xff0c;按要求生成需要的图像。 本篇总结主要包含反卷积和GAN&#xff08;generative adversial network, GAN&#xff09; 2 反卷积与图像生成 what&#xff1a;反卷积可以看成卷积的反操作&#xff0c;但不…

紫光展锐T760_芯片性能介绍_展锐T760安卓核心板定制

展锐T760核心板是一款基于国产5G芯片的智能模块&#xff0c;采用紫光展锐T760制程工艺为台积电6nm工艺&#xff0c;支持工艺具有出色的能效表现。其采用主流的44架构的八核设计&#xff0c;包括4颗2.2GHz A76核心和4颗A55核心设计&#xff0c;内存单元板载可达8GB Ram256GB ROM…

uniapp vuecli项目融合[小记]:将多个项目融合,打包成一个小程序/App,拆分多个H5应用

前言&#xff1a; 目前两个uniapp vuecli开发的项目【A、B】&#xff0c;新规划的项目C&#xff1a;需要融合项目B 80%的功能模块&#xff0c;同时也需要涵盖项目A的所有功能模块。 应用需求&#xff1a; 1、新项目C【小程序】可支持切换到应用A/C界面【内部通过初始化、路由跳…

0125-1-vue3初体验

vue3尝鲜体验 初始化 安装vue/clinext&#xff1a; yarn global add vue/clinext # OR npm install -g vue/clinext然后在 Vue 项目运行&#xff1a; vue upgrade --next项目目录 vue3-template ├── index.html // html模板 ├── mock // mock数据 │ └── user.…

qt学习:QListWidget控件+自定义条目项+双击删除+单击获取

目录 图片 头函数 接口 显示案例 方法1 方法2 方法3 方法4 自定义 方法5 在方法4上实现 图片 头函数 #include <QListWidgetItem> 接口 //不怎么常用void addItem(const QString &label)void addItems(const QStringList &labels) //自定义条目项…

Redis客户端之Redisson(二)Redisson分布式锁

一、原理&#xff1a; Redisson并没有通过setNx命令来实现加锁&#xff0c;而是基于 Redis 看⻔狗机制&#xff0c;自己实现了一套分布式锁逻辑。 1、加锁机制&#xff1a; 二、使用方法&#xff1a;

EasyExcel实现下载模板

实体类&#xff1a; package com.aicut.monitor.domain;import com.alibaba.excel.annotation.ExcelIgnore; import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.alibaba.excel.annotation.write.s…

YOLOv8全网独家首发:Powerful-IoU更好、更快的收敛IoU | 2024年最新IoU

💡💡💡本文独家改进:Powerful-IoU更好、更快的收敛IoU,是一种结合了目标尺寸自适应惩罚因子和基于锚框质量的梯度调节函数的损失函数 💡💡💡MS COCO和PASCAL VOC数据集实现涨点 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.htm…

【新课上架】安装部署系列Ⅲ—Oracle 19c Data Guard部署之两节点RAC部署实战

01 课程介绍 Oracle Real Application Clusters (RAC) 是一种跨多个节点分布数据库的企业级解决方案。它使组织能够通过实现容错和负载平衡来提高可用性和可扩展性&#xff0c;同时提高性能。本课程基于当前主流版本Oracle 19cOEL7.9解析如何搭建2节点RAC对1节点单机的DATA GU…

数学知识第一期 质数

前言 本文是关于质数的一些内容&#xff0c;希望能够对大家有帮助&#xff01;&#xff01;&#xff01; 一、质数的基本内容 定义&#xff1a; 质数又称素数。一个大于1的自然数&#xff0c;除了1和它自身外&#xff0c;不能被其他自然数整除的数叫做质数&#xff1b;否则…

Go Zero微服务个人探究之路(十)实战走通微服务前台请求调用的一套流程model->rpc微服务->apiHTTP调用

前言 Go语言凭借低占用&#xff0c;高并发等优秀特性成为后台编程语言的新星&#xff0c;GoZero框架由七牛云技术副总裁团队编写&#xff0c;目前已经成为Go微服务框架里star数量最多的框架 本文记录讲述笔者一步步走通前台向后台发出请求&#xff0c;后台api调用rpc服务的相…

VR数字展厅,平面静态跨越到3D立体化时代

近些年&#xff0c;VR的概念被越来越多的人提起&#xff0c;较为常见的形式就是VR数字展厅。VR数字展厅的出现&#xff0c;让各地以及各行业的展厅展馆的呈现和宣传都发生了很大的改变和革新&#xff0c;同时也意味着展览传播的方式不再局限于原来的图文、视频&#xff0c;而是…

【Redis】list以及他的应用场景

介绍 &#xff1a;list 即是 链表。链表是一种非常常见的数据结构&#xff0c;特点是易于数据元素的插入和删除并且且可以灵活调整链表长度&#xff0c;但是链表的随机访问困难。许多高级编程语言都内置了链表的实现比如 Java 中的 LinkedList&#xff0c;但是 C 语言并没有实现…

Spring Boot如何统计一个Bean中方法的调用次数

目录 实现思路 前置条件 实现步骤 首先我们先自定义一个注解 接下来定义一个切面 需要统计方法上使用该注解 测试 实现思路 通过AOP即可实现&#xff0c;通过AOP对Bean进行代理&#xff0c;在每次执行方法前或者后进行几次计数统计。这个主要就是考虑好如何避免并发情况…

JavaScript Proxy 对象、eval函数详解

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ 目录 ✨ 前言 ✨ 正文 Proxy 什么是 Proxy 代理 handlers get 捕获器 se…

Oracle ORA-09925

Error : 30: Read-only file system 造成这个问题的原因大多数是因为非正常关机后导致文件系统受损引起的&#xff0c;在系统重启之后&#xff0c;受损分区就会被Linux自动挂载为只读。 解决办法之一&#xff1a; 重启系统

聚观早报 | 特斯拉公布2023年财报;五菱红1号电池正式发布

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月26日消息 特斯拉公布2023年财报 五菱红1号电池正式发布 Redmi Note 13 Pro新春版开售 三星Galaxy S24系列发布…