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

WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)

一、前言

随着物联网(IoT)技术的飞速发展,越来越多的设备开始连接到互联网,形成了一个万物互联的世界。在这个背景下,设备与云端之间的通讯变得尤为重要。

本文将探讨几种常见的无线通信模块——EC20-4G、Air724ug-4G、NBIOT-BC26 和 ESP8266-WIFI,并展示如何通过发送AT指令来控制这些模块,利用MQTT协议连接华为云物联网平台,实现数据的高效上传。

EC20-4G 和 Air724ug-4G 模块以其高速的数据传输能力和广泛的网络覆盖成为4G LTE通信的理想选择;NBIOT-BC26 模块则专为低功耗广域网(LPWAN)设计,特别适合于要求低带宽、远距离传输的应用场景;而 ESP8266-WIFI 模块则凭借其成本效益高、易于集成的特点,在Wi-Fi连接领域备受青睐。

下面将逐一介绍这些模块的基础配置方法,并通过具体的实例说明如何使用AT指令建立与华为云物联网平台的安全连接。介绍MQTT协议的优势,包括其轻量化、低延迟和高可靠性等特性,这些特性使得MQTT成为物联网领域中最受欢迎的消息传递协议之一。

通过这些模块的学习,可以了解到如何选择适合自己项目的通信模块,还能掌握实际的操作步骤,从硬件初始化到软件编程,最终成功地将传感器数据上传到云端。

二、模块介绍

2.1 EC20-4G模块

EC20-4G是Quectel(Quectel Wireless Solutions)公司推出的一款4G LTE无线通信模块,它主要面向全球市场,支持多个频段的4G LTE网络以及向下兼容的3G和2G网络。这款模块非常适合用于数据传输速率要求较高的应用场合,如工业路由器、移动支付终端、远程医疗设备、车联网和其他M2M(Machine to Machine)通讯领域。

EC20-4G模块采用LGA封装形式,拥有紧凑的设计,使得它可以轻松集成到各种类型的设备中,即便是在空间有限的应用环境中也能发挥良好的性能。该模块支持多种网络协议,例如TCP/IP, FTP, HTTP等,这使得开发者可以灵活地根据不同的应用场景选择合适的网络协议栈。

除了基本的数据传输功能外,EC20-4G还具备丰富的扩展接口,包括UART、USB、GPIO等,方便与其他硬件组件进行连接和交互。此外,还支持多种定位技术,比如GPS/GLONASS/Galileo/QZSS,使得集成位置服务成为可能。

在软件支持方面,EC20-4G提供了广泛的AT指令集,便于开发人员进行编程控制。同时,Quectel也为这款模块提供了详尽的技术文档和支持,帮助开发人员快速完成产品的开发和上市。

img

2.2 ESP8266-WIFI模块

ESP8266是一款由乐鑫科技(Espressif Systems)开发的高度集成的Wi-Fi SoC(系统级芯片),它专为移动设备、可穿戴技术和物联网应用而设计。ESP8266芯片内部集成了一个Tensilica L106超低功耗32位微处理器,主频可达80MHz至160MHz,拥有512KB的SRAM,以及内置的Wi-Fi模块,支持IEEE 802.11 b/g/n标准。这些特性使ESP8266成为一种成本效益高的解决方案,能够快速实现设备的Wi-Fi连接功能。

ESP8266模块通常以小型化的形式出现,比如ESP-01,它是一个非常小巧的模块,尺寸仅约为25mm x 18mm,却包含了所有必要的Wi-Fi功能。这样的尺寸使得它非常适合集成到空间受限的项目中。ESP8266模块通过简单的AT命令集来进行配置和控制,这让它对于那些希望快速添加互联网连接功能到现有产品中的工程师来说非常有吸引力。

除了作为独立的微控制器运行之外,ESP8266还可以作为从机与另一个主控器(如Arduino或树莓派、STM32、51单片机)配合工作,通过串口接收命令来执行Wi-Fi相关的任务。这种方式允许开发者利用ESP8266的强大网络功能,同时保持主控器对整个系统的控制。

image-20240910110815481

image-20240910110432673

image-20240910110440932

2.3 BC26-NBIOT模块

BC26-NB是Quectel公司推出的一款窄带物联网(NB-IoT)模块,它专门针对低功耗广域网(LPWAN)的应用需求进行了优化。BC26-NB模块支持3GPP Release 13 NB-IoT标准,适用于各种需要长距离、低功耗、可靠连接的物联网应用,如智能计量、资产追踪、智慧城市基础设施监测等场景。

该模块采用了紧凑型设计,适合集成到空间受限的设备中。BC26-NB模块不仅支持NB-IoT网络,还具备低功耗模式,使得它可以在电池供电的情况下长时间运行,这对于需要长期部署在野外或难以更换电池的设备来说是非常有利的特点。此外,它还提供了一系列的硬件接口,如UART、SPI、I2C、PWM等,方便与外部传感器或其他硬件设备进行连接和数据交换。

在软件支持方面,BC26-NB模块配备了全面的AT指令集,简化了模块的初始化和配置过程。开发人员可以通过这些指令来控制模块的网络连接、数据传输等功能。Quectel公司还提供了详细的开发指南和技术支持,帮助用户快速地将BC26-NB模块集成到他们的物联网解决方案中。

由于NB-IoT网络覆盖范围广、穿透力强,BC26-NB模块可以实现深覆盖区域内的可靠通信,即使是在地下室或偏远地区也能保持稳定的连接。这种能力对于需要在复杂环境中工作的物联网设备来说至关重要。

image-20240910110347370

image-20240910110355183

image-20240910110401540

2.4 Air724-UG-4G模块

Air724-UG是Quectel公司推出的一款高性能的4G无线通信模块,它专为全球市场设计,支持多个频段的4G LTE Cat 4网络,同时兼容3G和2G网络,以便在全球范围内提供广泛的网络覆盖。该模块特别适合应用于需要高数据传输速率和稳定连接的行业解决方案中,如车载系统、工业路由器、远程监控系统以及移动支付终端等。

Air724-UG模块采用了LGA封装,具有紧凑的外形尺寸,这使其能够轻松地集成到空间受限的产品设计中。它支持多种网络协议,包括TCP/IP、FTP、HTTP等,这使得开发人员可以根据具体的应用场景灵活选择适当的协议栈。此外,Air724-UG还具备多个物理接口,如UART、USB、GPIO等,便于与其他硬件组件进行连接,从而增强系统的功能性和互操作性。

在功能特性方面,Air724-UG模块不仅支持高速数据传输,最高可达下行150Mbps和上行50Mbps的速率,还提供了丰富的扩展能力和附加功能。例如,它支持GNSS(全球导航卫星系统)功能,可用于定位服务;具备语音通话功能,适用于某些需要语音支持的应用场景;同时,该模块还支持多种安全机制,如SSL/TLS加密,保障了数据的安全传输。

Quectel为Air724-UG模块提供了详尽的技术文档和支持资源,包括开发指南、参考设计和SDK等,帮助开发人员快速启动项目并缩短产品上市时间。模块的易用性和Quectel的技术支持使得Air724-UG成为了一款理想的4G LTE解决方案,适用于多种专业领域的设备连接需求。

image-20240910110312204

image-20240910110302820

image-20240910110253667

三、MQTT协议介绍

MQTT协议概述

MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消息给感兴趣的客户端。

MQTT协议特点

MQTT协议具有以下主要特点:

  • 轻量级:MQTT协议的实现非常轻巧,占用资源少,非常适合于资源受限的设备,如传感器、嵌入式设备等。
  • 低带宽需求:MQTT协议的设计考虑到了带宽的高效利用,其报头非常小,这使得它能够在低带宽环境下有效工作。
  • 可靠的消息传递:MQTT提供了三种服务质量等级(QoS),允许发布者和订阅者之间选择合适的服务质量级别。
  • 支持多种传输层:虽然MQTT最初是基于TCP/IP设计的,但它也支持使用WebSockets和其他传输协议,以便更好地集成到现代Web应用中。
  • 安全性:MQTT支持TLS加密通信,保证了数据的安全性,并可以通过认证机制增强安全性。

MQTT协议的基本概念

MQTT协议的核心概念包括客户端、服务器(Broker)、主题和消息。

  • 客户端(Client):任何连接到Broker的应用程序都可以被称为客户端。客户端可以订阅感兴趣的主题,接收其他客户端发布的消息,也可以发布消息。
  • 服务器(Broker):MQTT服务器或Broker是消息的中心节点,它接受客户端的连接请求,存储订阅关系,并将消息从发布者路由到订阅者。
  • 主题(Topic):主题是一个字符串,用于标识消息的类别或目的。客户端订阅主题后,可以接收到发布到该主题的所有消息。
  • 消息(Message):消息是由客户端发布的一组数据,它包含两部分:主题名和消息体。

MQTT协议的工作流程

MQTT的工作流程如下:

  1. 连接:客户端向Broker发送连接请求,包含客户端ID、用户名、密码等信息。
  2. 订阅:一旦连接成功,客户端可以订阅一个或多个主题。
  3. 发布:客户端可以向特定主题发布消息。
  4. 接收:如果客户端订阅了一个主题,则它可以接收该主题下的消息。
  5. 断开连接:当客户端完成所有操作后,可以断开与Broker的连接。

MQTT协议的应用场景

由于其轻量级特性和高效的消息传递能力,MQTT协议广泛应用于物联网(IoT)领域,特别是在智能家居、工业自动化、远程监控等领域。此外,随着移动互联网的发展,MQTT也被用于移动应用程序中的实时数据更新和推送服务。

四、上云测试

【1】MQTT服务器地址信息

下面的这个我华为云IOT物联网服务器的设备信息,方便下面进行测试。连接这个服务器。

IP地址:117.78.5.125
端口号:1883
ClientId      64000697352830580e48df07_dev1_0_0_2023030206
Username      64000697352830580e48df07_dev1
Password      a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449
订阅主题:$oc/devices/64000697352830580e48df07_dev1/sys/messages/down
发布主题:$oc/devices/64000697352830580e48df07_dev1/sys/properties/report
发布的消息:{"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}

【2】ESP8266-WIFI连接

要通过ESP8266模块使用AT指令来连接MQTT服务器,订阅特定的主题,并发布消息,可以按照以下步骤操作。

请注意,这里提供的AT命令序列是基于ESP8266模块支持的MQTT功能。

下面是一个示例流程:

  1. 初始化ESP8266

    • AT+RST 重启模块
    • AT 测试模块是否响应
    • AT+CIPMUX=1 设置多连接模式(可选)
    • AT+CIPRXGET=1,100 设置接收数据的方式(可选)
  2. 设置Wi-Fi连接

    • AT+CWMODE=3 设置为Station+AP模式(通常只需要Station模式即可,即设置为1)
    • AT+CWJAP="yourSSID","yourPassword" 连接到Wi-Fi网络
  3. 配置MQTT客户端

    • AT+CIPMQTTCFG="117.78.5.125",1883,"64000697352830580e48df07_dev1_0_0_2023030206","64000697352830580e48df07_dev1","","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449",0,0,60 配置MQTT客户端参数,包括服务器地址、端口、客户端ID、用户名、密码等
  4. 连接MQTT服务器

    • AT+CIPMQTTC=1 连接到MQTT服务器
  5. 订阅主题

    • AT+CIPMQTTSUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down",2 订阅指定的主题
  6. 发布消息

    • AT+CIPMQTTPUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",2,0,0,"{"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}" 发布消息到指定主题
  7. 断开MQTT连接

    • AT+CIPMQTTDISC=0 断开与MQTT服务器的连接
  8. 关闭TCP/IP连接

    • AT+CIPCLOSE 关闭当前的TCP/IP连接

注意,在使用中,需要将"yourSSID"和"yourPassword"替换为实际使用的Wi-Fi网络的SSID和密码。

【3】NBIOT-BC26

使用NBIoT-BC26模块连接MQTT服务器的过程与使用ESP8266类似,但是命令集有所不同。

以下是使用NBIoT-BC26模块通过AT指令连接MQTT服务器、订阅主题以及发布消息的示例流程:

  1. 初始化模块

    • AT 检查模块是否在线
    • ATE0 关闭回显
    • AT+CFUN=1 启用射频功能
    • AT+CGATT=1 附着到网络
  2. 设置网络参数

    • AT+CNOPS=0 设置网络操作模式
    • AT+CGDCONT=1,"IP","your_apn" 设置PDP上下文,使用您的运营商提供的APN
  3. 激活PDP上下文

    • AT+CGACT=1,1 激活PDP上下文
  4. 配置MQTT客户端

    • AT+QMTOPEN=0,"tcp","117.78.5.125",1883 打开一个TCP连接到MQTT服务器
  5. 建立MQTT连接

    • 使用AT+QMTCONN命令进行连接,此命令会发送MQTT CONNECT包给服务器。
    • AT+QMTCONN=0,"64000697352830580e48df07_dev1_0_0_2023030206",60,0,1,0,"64000697352830580e48df07_dev1","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449" 连接MQTT服务器,参数包括客户端ID,保持活动时间,Clean Session标志,Will标志,Will QoS,Will保留位,用户名和密码。
  6. 订阅主题

    • AT+QMTSUB=0,2,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down" 订阅主题
  7. 发布消息

    • AT+QMTPUB=0,1,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",0,0,0,512 开始发送消息
    • {"services": [{"service_id": "stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]} 发送的消息内容
  8. 断开MQTT连接

    • AT+QMTDISC=0 断开MQTT连接
  9. 关闭TCP连接

    • AT+QMTCLS=0 关闭TCP连接
  10. 去激活PDP上下文

    • AT+CGACT=1,0 去激活PDP上下文

上述命令序列是基于NBIoT-BC26模块的MQTT功能。

【4】EC20-4G模块

对于EC20模块(通常是4G LTE模块),连接MQTT服务器、订阅主题和发布消息的AT指令会有所不同。

以下是使用EC20模块通过AT指令完成这些操作的流程:

  1. 初始化EC20模块
AT

检查EC20是否正常工作。

  1. 设置工作模式为数据模式(如果尚未设置)
AT+QCFG="nwscanmode",0,1

设置网络扫描模式为自动。

  1. 连接到移动网络
AT+QNWINFO

检查网络连接状态。

  1. 设置MQTT服务器的IP地址和端口
AT+QMTOPEN=0,"117.78.5.125",1883

连接到MQTT服务器的指定IP和端口。

  1. 登录MQTT服务器
AT+QMTCONN=0,"64000697352830580e48df07_dev1","a695af9883c5d0e3817bc6971beeecadf8c7c595677c461b1fe75882ed2bf449",0,0

使用客户端ID、用户名和密码连接MQTT服务器。

  1. 订阅MQTT主题
AT+QMTSUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/messages/down",1

订阅指定的MQTT主题。

  1. 发布消息到MQTT主题
AT+QMTPUB=0,"$oc/devices/64000697352830580e48df07_dev1/sys/properties/report",0,0,{"services":[{"service_id":"stm32","properties":{"DHT11_T":18,"DHT11_H":80,"MQ2":1,"water":1,"flame":1,"light":0,"LED1":0,"LED2":0,"LED3":0}}]}

向指定的MQTT主题发布消息。

  1. 断开MQTT连接
AT+QMTDISC=0

断开与MQTT服务器的连接。

  1. 关闭EC20模块(如果需要)
AT+QPOWD=1

关闭EC20模块或使其进入省电模式。

  1. 检查状态(可选)
AT+QMTSTAT=0

检查MQTT连接状态。

请注意:

  • AT+QMTOPENAT+QMTCONNAT+QMTSUBAT+QMTPUB 命令中的第一个参数 0 是连接的会话编号。可以根据需要调整它。
  • 发布的消息格式要符合MQTT协议的要求,可能需要根据具体的EC20模块固件版本调整。
  • 确保你已经在模块中设置了正确的APN,并成功连接到移动网络。

相关文章:

WIFI、NBIOT、4G模块调试AT指令连接华为云物联网服务器(MQTT协议)

一、前言 随着物联网(IoT)技术的飞速发展,越来越多的设备开始连接到互联网,形成了一个万物互联的世界。在这个背景下,设备与云端之间的通讯变得尤为重要。 本文将探讨几种常见的无线通信模块——EC20-4G、Air724ug-4…...

打造自己的RAG解析大模型:(新技能)企业垂类数据标注(一)

在上一篇文章中,我们以通用版面分析服务为例,展示了从模型发布到API集成的完整流程。如果你成功完成了这些步骤,值得庆祝!这不仅意味着你已成功安装PaddleX,还掌握了利用它发布OCR和目标检测等大模型服务的能力&#x…...

怎么理解ES6 Proxy

Proxy 可以理解成,在目标对象之前架设一层 “拦截”,外界对该对象的访问,都必须先通过这层拦截,因此提供了一种机制,可以对外界的访问进行过滤和改写。Proxy 这个词的原意是代理,用在这里表示由它来 “代理…...

verilog实现一个5bit序列检测器

以下是用 Verilog 实现一个 5bit 序列检测器的代码: module five_bit_sequence_detector(input clk,input reset,input [4:0] in,output reg detected );// 定义状态参数localparam IDLE 4b0000;localparam STATE1 4b0001;localparam STATE2 4b0010;localparam …...

Redis数据安全_持久化机制

由于Redis的数据都存放在内存中,如果没有配置持久化,Redis重启后数据就全丢失了,于是需要开启Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据。 持久化机制概述 对于Redis而言…...

什么是信息熵,什么是交叉熵,什么是KL散度?

什么是信息熵? 信息熵(Entropy)是信息论中的一个基本概念,用来衡量一个随机变量不确定性的大小。它反映了对一个事件结果的预测难度,或者说是描述这个事件需要多少“信息量”。信息熵是由香农(Claude Shan…...

开发者的福音:PyTorch 2.5现已支持英特尔独立显卡训练

《PyTorch 2.5重磅更新:性能优化新特性》中的一个新特性就是:正式支持在英特尔独立显卡上训练模型! PyTorch 2.5 独立显卡类型 支持的操作系统 Intel 数据中心GPU Max系列 Linux Intel Arc™系列 Linux/Windows 本文将在IntelCore™…...

Deep InfoMax(DIM)(2019-02-ICLR)

论文:LEARNING DEEP REPRESENTATIONS BY MUTUAL INFORMATION ESTIMATION AND MAXIMIZATION ABSTRACT 研究目标 研究通过最大化输入和深度神经网络编码器输出之间的互信息来进行无监督表示学习目的是学习到对下游任务有用的特征表示 核心发现:结构很重…...

2024年10月中国数据库排行榜:TiDB续探花,GaussDB升四强

10月中国数据库流行度排行榜如期发布,再次印证了市场分层的加速形成。国家数据库测评结果已然揭晓,本批次通过的产品数量有限,凸显了行业标准的严格与技术门槛的提升。再看排行榜,得分差距明显增大,第三名与后续竞争者…...

css边框修饰

一、设置线条样式 通过 border-style 属性设置,可选择的一些属性如下: dotted:点线 dashed:虚线 solid:实线 double:双实线 效果如下: 二、设置边框线宽度 ① 通过 border-width 整体设置…...

利用Python进行数据可视化:实用指南与推荐库

利用Python进行数据可视化:实用指南与推荐库 数据可视化是将数据转化为图形和图表的过程,它能够帮助我们更直观地理解数据的趋势、模式和关系。在Python中,有许多强大的库可用于数据可视化,从简单的折线图到复杂的交互式图表,应有尽有。本文将详细介绍Python数据可视化的…...

MobileNetv2网络详解

背景: MobileNet v1中DW卷积在训练完之后部分卷积核会废掉,大部分参数为“0” MobileNet v2网络是由Google团队在2018年提出的,相比于MobileNet v1网络,准确率更高,模型更小 网络亮点: Inverted Residu…...

惊了!大模型连这样的验证码都能读懂_java_识别验证码

最近在看视觉大模型的能力,然后用了某网站的一个验证码试了试,竟然连这样的验证码都能认识,这个有点夸张,尤其是这个9和6颠倒的都能理解,现在的能力已经这么牛了么 具体就是用了通义最新的qwen vl模型spring ai alibab…...

【小白学机器学习26】 极大似然估计,K2检验,logit逻辑回归(对数回归)(未完成----)

目录 1 先从一个例题出来,预期值和现实值的差异怎么评价? 1.1 这样一个问题 1.2 我们的一般分析 1.3 用到的关键点1 1.4 但是差距多远,算是远呢? 2 极大似然估计 2.1 极大似然估计的目的 2.1.1 极大似然估计要解决什么问题…...

【日常记录-Java】SLF4J扫描实现框架的过程

1. 简介 SLF4J(Simple Logging Facade for Java)作为一种简单的门面或抽象,服务于其他各种日志框架,例如JUL、log4j、logback等,核心作用有两项: 提供日志接口;提供获取具体日志对象的方法; 2. 扫描过程 …...

uni-app 获取 android 手机 IMEI码

1、需求来源 最近项目上需要获取手机的IMEI码,并且在更换手机号登录后,需要提示重新更新IMEI码。 2、需求拆分 2.1 获取 IMEI 码 查阅 uni-app 官网发现在android 10 已经无法获取imei码,所以对于这个需求拆分成两种情况。 第一种情况&am…...

后台管理系统的通用权限解决方案(八)认证机制介绍、JWT介绍与jjwt框架的使用

文章目录 1 认证机制介绍1.1 HTTP Basic Auth1.2 Cookie-Session Auth1.3 OAuth1.4 Token Auth 2 JWT2.1 JWT介绍2.2 JWT的数据结构2.2.1 JWT头2.2.2 JWT有效载荷2.2.3 JWT签名 3 jjwt3.1 jjwt介绍3.2 jjwt案例 1 认证机制介绍 1.1 HTTP Basic Auth HTTP Basic Auth 是一种简…...

接口测试 —— Postman 变量了解一下!

Postman变量是在Postman工具中使用的一种特殊功能,用于存储和管理动态数据。它们可以用于在请求的不同部分、环境或集合之间共享和重复使用值。 Postman变量有以下几种类型: 1、环境变量(Environment Variables): 环境变量是在…...

鸿蒙系统:核心特性、发展历程与面临的机遇与挑战

好动与不满足是进步的第一必需品 文章目录 前言重要特点和组成部分核心特性主要组件发展历程 机遇挑战总结 前言 鸿蒙系统(HarmonyOS)是由华为技术有限公司开发的一款面向全场景的分布式操作系统。它旨在为用户提供更加流畅、安全且高效的数字生活体验&…...

从0到1,用Rust轻松制作电子书

我之前简单提到过用 Rust 做电子书,今天分享下如何用Rust做电子书。制作电子书其实用途广泛,不仅可以用于技术文档(对技术人来说非常方便),也可以制作用户手册、笔记、教程等,还可以应用于文学创作。 如果…...

半天入门!锂电池剩余寿命预测(Python)

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客 拒绝信息泄露!VMD滚动分…...

学生党头戴式耳机哪款音质更胜一筹?TOP4好音质头戴式耳机推荐

在挑选头戴式耳机时,市场上琳琅满目的品牌和型号常常让人目不暇接。究竟哪个学生党头戴式耳机哪款音质更胜一筹?这已成为许多人面临的难题。由于每个人对耳机的偏好各有侧重——一些人追求音质的纯净,一些人重视佩戴的舒适性,而另…...

数据结构 ——— 二叉树的概念及结构

目录 二叉树的概念 特殊的二叉树 一、满二叉树 二、完全二叉树 二叉树的概念 二叉树树示意图: 从以上二叉树示意图可以看出: 二叉树每个节点的度不大于 2 ,那么整个二叉树的度也不大于 2 ,但是也不是每个节点都必须有 2 个…...

【React】React 的核心设计思想

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 React 的核心设计思想引言声明式编程声明式 vs 命令式示例 组件化组件的优势组件…...

C++ 二叉树进阶:相关习题解析

目录 1. 二叉树创建字符串。 2. 二叉树的分层遍历1 3. 二叉树的分层遍历2 4. 二叉树的最近公共祖先 5. 将二叉搜索树转换为排序的双向链表 6. 从前序与中序遍历序列构造二叉树 7. 从中序与后序遍历序列构造二叉树 8. 二叉树的前序遍历,非递归迭代实现 9.…...

Matlab实现蚁群算法求解旅行商优化问题(TSP)(理论+例子+程序)

一、蚁群算法 蚁群算法由意大利学者Dorigo M等根据自然界蚂蚁觅食行为提岀。蚂蚁觅食行为表示大量蚂蚁组成的群体构成一个信息正反馈机制,在同一时间内路径越短蚂蚁分泌的信息就越多,蚂蚁选择该路径的概率就更大。 蚁群算法的思想来源于自然界蚂蚁觅食&a…...

2024年10月HarmonyOS应用开发者基础认证全新题库

注意事项:切记在考试之外的设备上打开题库进行搜索,防止切屏三次考试自动结束,题目是乱序,每次考试,选项的顺序都不同 这是基础认证题库,不是高级认证题库注意看清楚标题 高级认证题库地址:20…...

kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?

大家好,我是锋哥。今天分享关于【kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?】面试题?希望对大家有帮助; kafka 分布式(不是单机)的情况下,如何保证消息的…...

数据分析案例-苹果品质数据可视化分析+建模预测

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…...

沈阳乐晟睿浩科技有限公司抖音小店运营创新

在当今这个数字化迅猛发展的时代,电子商务已经成为推动经济增长的重要引擎。而在电商的广阔舞台上,短视频与直播带货的崛起无疑是最为耀眼的明星之一。作为这一领域的佼佼者,抖音小店凭借其庞大的用户基础和独特的算法优势,吸引了…...

php新闻网站源码/aso推广平台

小白做好前端html设计后,马上开始进入数据库结构设计步骤。 在开始之前,小白回忆了一下老大在公司里培训时讲过的数据库设计解说: 对于初学者来说,很多拿到原型时不知道怎么设计数据表结构,这是很正常的事,…...

js代码网站大全/珠海企业网站建设

RT1052之GPIO与IOMUX原文链接:https://blog.csdn.net/weixin_44021648/article/details/113839882 前提提一句,i.MX RT1052与imx6ul的很多片内外设的架构长的都是一样的。 RT1052 GPIO和IOMUX 一、简介 按照编写STM32程序的思维,其实GPIO和I…...

东莞疾控最新通告今天/短视频入口seo

参考链接 点击按钮直接上传文 /*批量导入*//*#load:为按钮,点击后生成一个隐藏的input file标签*/$(#load).after(<input type"file" id"load_xls" name"file" style"display:none" onchange "uploadFile()">);$(#loa…...

wordpress结构化标签/拉新推广赚钱的app

目录 1. asyncio 简介 1.1 协程与 asyncio协程编写的三个组成部分&#xff1a;1. 事件循环&#xff0c; 2. 回调(驱动生成器)&#xff0c; 3. epoll&#xff08;IO 多路复用&#xff09; asyncio 是 python 用于解决异步 IO 编程的一整套解决方案。基于 asyncio 的框架有: torn…...

网站建设制作一个网站的费用/如何写软文推广产品

字符串与字节数组的转换 String str "helloworld"; byte data[] str.getBytes(); for(int x 0 ; x < data.length ; x) { data[x]- 32 ; System.out.print(datd[x] ,); } System.out.println(new String(data)); 通过程序可以发现&#xff0c;字节并不适合处…...

南京市建设厅网站/宁波seo快速排名

Reachability是苹果官方给的检查网络状态的库,想必每个基于网络的应用都会用它来检查网络状态吧,当然笔者也不例外.可是正当自信满满的我&#xff0c;用这个库用的不亦乐乎的时候,突然发现我写的基于网络的程序工作的不是那么流畅了,尤其是仔细检查以后确定是因为用了Reachabil…...