ESP8266采用AT指令连接华为云服务器方法(MQTT固件)

一、前言

本篇文章主要介绍3个内容:

(1)ESP8266-WIFI模块常用的AI指令功能介绍

(2)ESP8266烧写MQTT固件连接华为云IOT服务器。

(3)介绍华为云IOT服务器的配置过程。

ESP8266是一款功能强大的物联网芯片,它集成了处理器、Wi-Fi网络连接和TCP/IP协议栈,提供了简单而强大的无线网络连接能力,被广泛应用于各种物联网设备中。支持AT指令集,可以通过串口与其他设备进行通信,可以降低设备间的通信难度。

以下是ESP8266模块的主要特点和功能:

(1)小巧而强大:ESP8266模块的尺寸小,但它搭载了一个高性能的32位Tensilica L106 RISC处理器,时钟频率为80MHz,可以通过软件进行固件升级。

(2)Wi-Fi连接:ESP8266支持802.11 b/g/n标准,能够实现快速而稳定的无线网络连接。它可以作为Wi-Fi客户端连接到现有的Wi-Fi网络,也可以作为Wi-Fi接入点(AP)提供无线网络服务。

(3)TCP/IP协议栈:ESP8266集成了TCP/IP协议栈,可以通过Wi-Fi与其他设备进行通信,包括传输数据、发送HTTP请求、执行WebSocket通信等。

(4)GPIO引脚:ESP8266模块具有多个通用GPIO引脚,可用于连接和控制外部设备,如传感器、继电器、LED等。

(5)低功耗:ESP8266在待机模式下的功耗非常低,适用于需要长时间运行的低功耗应用。

(6)开发环境:ESP8266的开发可以使用多种编程语言和开发平台,如Arduino IDE、MicroPython、Lua等。这使得开发人员可以选择最适合他们的工具进行开发。

图片

图片

二、下载固件

ESP8266默认的固件不支持MQTT协议,需要重新下载固件。

链接:https://docs.ai-thinker.com/%E5%9B%BA%E4%BB%B6%E6%B1%87%E6%80%BB

三、常用的AT指令

【1】基础AT指令

 

cpp

AT:测试 AT 启动

AT+RST:重启模块

AT+GMR:查看版本信息

AT+CMD:查询当前固件支持的所有命令及命令类型

AT+GSLP:进⼊ Deep-sleep 模式

ATE:开启或关闭 AT 回显功能

AT+RESTORE:恢复出厂设置

AT+SAVETRANSLINK:设置开机 透传模式 信息

AT+TRANSINTVL:设置 透传模式 模式下的数据发送间隔

AT+UART_CUR:设置 UART 当前临时配置,不保存到 flash

AT+UART_DEF:设置 UART 默认配置, 保存到 flash

AT+SLEEP:设置 sleep 模式

AT+SYSRAM:查询当前剩余堆空间和最小堆空间

AT+SYSMSG:查询/设置系统提示信息

AT+SYSMSGFILTER:启用或禁用 系统消息 过滤

AT+SYSMSGFILTERCFG:查询/配置 系统消息 的过滤器

AT+SYSFLASH:查询或读写 flash 用户分区

AT+SYSMFG:查询或读写 manufacturing nvs 用户分区

AT+RFPOWER:查询/设置 RF TX Power

AT+SYSROLLBACK:回滚到以前的固件

AT+SYSTIMESTAMP:查询/设置本地时间戳

AT+SYSLOG:启用或禁用 AT 错误代码提示

AT+SLEEPWKCFG:设置 Light-sleep 唤醒源和唤醒 GPIO

AT+SYSSTORE:设置参数存储模式

AT+SYSREG:读写寄存器

【2】Wi-Fi AT 命令集

 

cpp

AT+CWINIT:初始化/清理 Wi-Fi 驱动程序

AT+CWMODE:查询/设置 Wi-Fi 模式 (Station/SoftAP/Station+SoftAP)

AT+CWSTATE:查询 Wi-Fi 状态和 Wi-Fi 信息

AT+CWJAP:连接 AP

AT+CWRECONNCFG:查询/设置 Wi-Fi 重连配置

AT+CWLAPOPT:设置 AT+CWLAP 命令扫描结果的属性

AT+CWLAP:扫描当前可用的 AP

AT+CWQAP:断开与 AP 的连接

AT+CWSAP:配置 ESP32 SoftAP 参数

AT+CWLIF:查询连接到 ESP32 SoftAP 的 station 信息

AT+CWQIF:断开 station 与 ESP32 SoftAP 的连接

AT+CWDHCP:启用/禁用 DHCP

AT+CWDHCPS:查询/设置 ESP32 SoftAP DHCP 分配的 IPv4 地址范围

AT+CWAUTOCONN:上电是否自动连接 AP

AT+CWAPPROTO:查询/设置 SoftAP 模式下 802.11 b/g/n 协议标准

AT+CWSTAPROTO:设置 Station 模式下 802.11 b/g/n 协议标准

AT+CIPSTAMAC:查询/设置 ESP32 Station 的 MAC 地址

AT+CIPAPMAC:查询/设置 ESP32 SoftAP 的 MAC 地址

AT+CIPSTA:查询/设置 ESP32 Station 的 IP 地址

AT+CIPAP:查询/设置 ESP32 SoftAP 的 IP 地址

AT+CWSTARTSMART:开启 SmartConfig

AT+CWSTOPSMART:停止 SmartConfig

AT+WPS:设置 WPS 功能

AT+MDNS:设置 mDNS 功能

AT+CWJEAP:连接 WPA2 企业版 AP

AT+CWHOSTNAME:查询/设置 ESP32 Station 的主机

【3】TCP/IP AT 命令

 

cpp

AT+CIPV6: 启用/禁用 IPv6 网络 (IPv6)

AT+CIPSTATE:查询 TCP/UDP/SSL 连接信息

AT+CIPSTATUS (弃用):查询 TCP/UDP/SSL 连接状态和信息

AT+CIPDOMAIN:域名解析

AT+CIPSTART:建立 TCP 连接、UDP 传输或 SSL 连接

AT+CIPSTARTEX:建立自动分配 ID 的 TCP 连接、UDP 传输或 SSL 连接

[仅适用数据模式] +++: 退出 数据模式

AT+SAVETRANSLINK:设置 Wi-Fi 开机 透传模式 信息

AT+CIPSEND:在 普通传输模式 或 Wi-Fi 透传模式 下发送数据

AT+CIPSENDL:在 普通传输模式 下并行发送长数据

AT+CIPSENDLCFG:设置 AT+CIPSENDL 命令的属性

AT+CIPSENDEX:在 普通传输模式 下采用扩展的方式发送数据

AT+CIPCLOSE:关闭 TCP/UDP/SSL 连接

AT+CIFSR:查询本地 IP 地址和 MAC 地址

AT+CIPMUX:启用/禁用多连接模式

AT+CIPSERVER:建立/关闭 TCP 或 SSL 服务器

AT+CIPSERVERMAXCONN:查询/设置服务器允许建立的最大连接数

AT+CIPMODE:查询/设置传输模式

AT+CIPSTO:查询/设置本地 TCP 服务器超时时间

AT+CIPSNTPCFG:查询/设置时区和 SNTP 服务器

AT+CIPSNTPTIME:查询 SNTP 时间

AT+CIPSNTPINTV:查询/设置 SNTP 时间同步的间隔

AT+CIPFWVER:查询服务器已有的 AT 固件版本

AT+CIUPDATE:通过 Wi-Fi 升级固件

AT+CIPDINFO:设置 +IPD 消息详情

AT+CIPSSLCCONF:查询/设置 SSL 客户端配置

AT+CIPSSLCCN:查询/设置 SSL 客户端的公用名 (common name)

AT+CIPSSLCSNI:查询/设置 SSL 客户端的 SNI

AT+CIPSSLCALPN:查询/设置 SSL 客户端 ALPN

AT+CIPSSLCPSK:查询/设置 SSL 客户端的 PSK

AT+CIPRECONNINTV:查询/设置 Wi-Fi 透传模式 下的 TCP/UDP/SSL 重连间隔

AT+CIPRECVTYPE:查询/设置套接字接收模式

AT+CIPRECVDATA:获取被动接收模式下的套接字数据

AT+CIPRECVLEN:查询被动接收模式下套接字数据的长度

AT+PING:ping 对端主机

AT+CIPDNS:查询/设置 DNS 服务器信息

AT+CIPTCPOPT:查询/设置套接字选项

【4】MQTT AT 命令集

 

cpp

AT+MQTTUSERCFG:设置 MQTT 用户属性

AT+MQTTLONGCLIENTID:设置 MQTT 客户端 ID

AT+MQTTLONGUSERNAME:设置 MQTT 登陆用户名

AT+MQTTLONGPASSWORD:设置 MQTT 登陆密码

AT+MQTTCONNCFG:设置 MQTT 连接属性

AT+MQTTALPN:设置 MQTT 应用层协议协商(ALPN)

AT+MQTTSNI:设置 MQTT 服务器名称指示(SNI)

AT+MQTTCONN:连接 MQTT Broker

AT+MQTTPUB:发布 MQTT 消息(字符串)

AT+MQTTPUBRAW:发布长 MQTT 消息

AT+MQTTSUB:订阅 MQTT Topic

AT+MQTTUNSUB:取消订阅 MQTT Topic

AT+MQTTCLEAN:断开 MQTT 连接

四、ESP8266-AT指令连接华为云IOT

下面是STM32的实际代码,通过串口发送AT指令控制ESP8266连接华为云IOT服务器、

cpp

void ESP8266_Init(void)
{
//====================================================实现设备在线===
   //【1】复位ESP8266
   printf("AT+RST\r\n");//第一步
   delay_ms(2000);
   //【2】设置为STA模式
   printf("AT+CWMODE=1\r\n");//第二步
   delay_ms(1500);
   //【3】设置连接的WIFI热点
   // 格式: AT+CWJAP="填写wifi名称","填写WiFi密码"
   printf("AT+CWJAP="123","12345678"\r\n");//第四步
   delay_ms(1500);
   //【4】设置MQTT的登录名和密码
   // 格式: AT+MQTTUSERCFG=0,1,"NULL","填写用户名","填写密码",0,0,""
   printf("AT+MQTTUSERCFG=0,1,"NULL","65620a943668046d0e31568c_room1","a83d06a34631b72d1b35bae5ef5e23c7ea723952c33796faa47410b107e7f4b7",0,0,""\r\n");//第五步
   delay_ms(1500);
   //【5】设置MQTT的ClientID
   // 格式: AT+MQTTCLIENTID=0,"填写ClientID"
   printf("AT+MQTTCLIENTID=0,"65620a943668046d0e31568c_room1_0_0_2023112515"\r\n");//第6步 客户端ID
   delay_ms(1500);
   // 【6】设置MQTT接入地址
   // 格式: AT+MQTTCONN=0,"填写MQTT接入的地址",1883,1
   printf("AT+MQTTCONN=0,"124.70.218.131",1883,1\r\n");//第7步
   delay_ms(2000);
   
}



void ESP8266_data_publish(char *att)
{
   // char publish_command[256];
   printf("%s",att);//第2步
   //printf("AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{\"services\":[{\"service_id\":\"stm32\",\"properties\":{\"%s\":%d}}]}",0,0\r\n", att, data);
   // printf("%s", publish_command);
}


int main()
{
   //【7】上传数据
              // 格式: AT+MQTTPUB=0," 发布的主题 ","上报的json数据",0,0
              // $oc/devices/64047c741eaf704179abaa58_Temp_test/sys/properties/report ","{"services":[{"service_id":"esp8266_data","properties":{"temp": 100}}]}

              //
              //组合上传的数据0---上传单个
              sprintf(MQTT_buff,"AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{"services":[{"service_id":"stm32","properties":{"Temp":%d}}]}",0,0\r\n",
              temperature);
             
              //组合上传的数据--上传多个
              //sprintf(MQTT_buff,"AT+MQTTPUB=0,"$oc/devices/65620a943668046d0e31568c_room1/sys/properties/report","{"services": [{"service_id": "stm32","properties":{"Temp":%d,"Humi":%d,"Fire":%d,"MQ-135":%d,"Water":%d,"SPO2":%d,"HR":%d}}]}",0,0\r\n",
              //temperature,humidity,Fire,z,Water,SPO2,HR);
             
             
              //上传数据
              ESP8266_data_publish(MQTT_buff);
}

五、华为云IOT服务器部署过程

在华为云IOT平台上,需要进行设备接入、数据模型定义、规则引擎配置和应用开发等四个核心模块的开发。其中,设备接入模块包括设备注册、获取设备证书、建立连接等步骤,以保障设备与云平台之间的安全通信;数据模型定义模块需要根据实际需求定义相应的数据模型,包括上传数据格式、设备属性和服务等。规则引擎配置模块需要完成实时消息推送、远程控制和告警等功能。应用开发模块则是将完整的智能井盖系统进行打包,为用户提供统一的操作接口。

华为云官网: https://www.huaweicloud.com/

打开官网,搜索物联网,就能快速找到 设备接入IoTDA

图片

5.1 物联网平台介绍

华为云物联网平台(IoT 设备接入云服务)提供海量设备的接入和管理能力,将物理设备联接到云,支撑设备数据采集上云和云端下发命令给设备进行远程控制,配合华为云其他产品,帮助我们快速构筑物联网解决方案。

使用物联网平台构建一个完整的物联网解决方案主要包括3部分:物联网平台、业务应用和设备。

物联网平台作为连接业务应用和设备的中间层,屏蔽了各种复杂的设备接口,实现设备的快速接入;同时提供强大的开放能力,支撑行业用户构建各种物联网解决方案。

设备可以通过固网、2G/3G/4G/5G、NB-IoT、Wifi等多种网络接入物联网平台,并使用LWM2M/CoAP、MQTT、HTTPS协议将业务数据上报到平台,平台也可以将控制命令下发给设备。

业务应用通过调用物联网平台提供的API,实现设备数据采集、命令下发、设备管理等业务场景。

图片

5.2 开通物联网服务

地址: https://www.huaweicloud.com/product/iothub.html

图片

开通标准版免费单元。

图片

图片

开通之后,点击总览,查看接入信息。 我们当前设备准备采用MQTT协议接入华为云平台,这里可以看到MQTT协议的地址和端口号等信息。

图片

总结:

 

cpp

端口号:   MQTT (1883)| MQTTS (8883)
接入地址: a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com

根据域名地址得到IP地址信息:

 

cpp

Microsoft Windows [版本 10.0.19044.2846]
(c) Microsoft Corporation。保留所有权利。

C:\Users\11266>ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com

正在 Ping a3433ab133.iot-mqtts.cn-north-4.myhuaweicloud.com [121.36.42.100] 具有 32 字节的数据:
来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31
来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31
来自 121.36.42.100 的回复: 字节=32 时间=36ms TTL=31
来自 121.36.42.100 的回复: 字节=32 时间=37ms TTL=31

121.36.42.100 的 Ping 统计信息:
   数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
   最短 = 36ms,最长 = 37ms,平均 = 36ms

C:\Users\11266>

图片

MQTT协议接入端口号有两个,1883是非加密端口,8883是证书加密端口,单片机无法加载证书,所以使用1883端口比较合适。 接下来的ESP8266就采用1883端口连接华为云物联网平台。

5.3 创建产品

(1)创建产品

点击右上角创建产品。

图片

(2)填写产品信息

根据自己产品名字填写,设备类型选择自定义类型。

(3)添加自定义模型

产品创建完成之后,点击进入产品详情页面,翻到最下面可以看到模型定义。

图片

模型简单来说: 就是存放设备上传到云平台的数据。比如:环境温度、环境湿度、环境烟雾浓度、火焰检测状态图等等,这些我们都可以单独创建一个模型保存。

5.4 添加设备

产品是属于上层的抽象模型,接下来在产品模型下添加实际的设备。添加的设备最终需要与真实的设备关联在一起,完成数据交互。

(1)注册设备

点击右上角注册设备。

图片

(2)根据自己的设备填写

在弹出的对话框里填写自己设备的信息。根据自己设备详细情况填写。

(3)保存设备信息

创建完毕之后,点击保存并关闭,得到创建的设备密匙信息。该信息在后续生成MQTT三元组的时候需要使用。

5.5 MQTT协议主题订阅与发布

(1)MQTT协议介绍

当前的设备是采用MQTT协议与华为云平台进行通信。

MQTT是一个物联网传输协议,它被设计用于轻量级的发布/订阅式消息传输,旨在为低带宽和不稳定的网络环境中的物联网设备提供可靠的网络服务。MQTT是专门针对物联网开发的轻量级传输协议。MQTT协议针对低带宽网络,低计算能力的设备,做了特殊的优化,使得其能适应各种物联网应用场景。目前MQTT拥有各种平台和设备上的客户端,已经形成了初步的生态系统。

MQTT是一种消息队列协议,使用发布/订阅消息模式,提供一对多的消息发布,解除应用程序耦合,相对于其他协议,开发更简单;MQTT协议是工作在TCP/IP协议上;由TCP/IP协议提供稳定的网络连接;所以,只要具备TCP协议栈的网络设备都可以使用MQTT协议。 本次设备采用的ESP8266就具备TCP协议栈,能够建立TCP连接,所以,配合STM32代码里封装的MQTT协议,就可以与华为云平台完成通信。

华为云的MQTT协议接入帮助文档在这里: https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

图片

业务流程:

图片

(2)华为云平台MQTT协议使用限制

描述限制
支持的MQTT协议版本3.1.1
与标准MQTT协议的区别支持Qos 0和Qos 1支持Topic自定义不支持QoS2不支持will、retain msg
MQTTS支持的安全等级采用TCP通道基础 + TLS协议(最高TLSv1.3版本)
单帐号每秒最大MQTT连接请求数无限制
单个设备每分钟支持的最大MQTT连接数1
单个MQTT连接每秒的吞吐量,即带宽,包含直连设备和网关3KB/s
MQTT单个发布消息最大长度,超过此大小的发布请求将被直接拒绝1MB
MQTT连接心跳时间建议值心跳时间限定为30至1200秒,推荐设置为120秒
产品是否支持自定义Topic支持
消息发布与订阅设备只能对自己的Topic进行消息发布与订阅
每个订阅请求的最大订阅数无限制

(3)主题订阅格式

帮助文档地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

图片

对于设备而言,一般会订阅平台下发消息给设备 这个主题。

设备想接收平台下发的消息,就需要订阅平台下发消息给设备 的主题,订阅后,平台下发消息给设备,设备就会收到消息。

(4)主题发布格式

对于设备来说,主题发布表示向云平台上传数据,将最新的传感器数据,设备状态上传到云平台。

这个操作称为:属性上报。

帮助文档地址:https://support.huaweicloud.com/usermanual-iothub/iot_06_v5_3010.html

图片

5.6 MQTT三元组

MQTT协议登录需要填用户ID,设备ID,设备密码等信息,就像我们平时登录QQ,微信一样要输入账号密码才能登录。MQTT协议登录的这3个参数,一般称为MQTT三元组。

接下来介绍,华为云平台的MQTT三元组参数如何得到。

(1)MQTT服务器地址

要登录MQTT服务器,首先记得先知道服务器的地址是多少,端口是多少。

帮助文档地址: https://console.huaweicloud.com/iotdm/?region=cn-north-4#/dm-portal/home

图片

MQTT协议的端口支持1883和8883,它们的区别是:8883 是加密端口更加安全。但是单片机上使用比较困难,所以当前的设备是采用1883端口进连接的。

根据上面的域名和端口号,得到下面的IP地址和端口号信息: 如果设备支持填写域名可以直接填域名,不支持就直接填写IP地址。 (IP地址就是域名解析得到的)

华为云的MQTT服务器地址:121.36.42.100
华为云的MQTT端口号:1883

(2)生成MQTT三元组

华为云提供了一个在线工具,用来生成MQTT鉴权三元组: https://iot-tool.obs-website.cn-north-4.myhuaweicloud.com/

打开这个工具,填入设备的信息(也就是刚才创建完设备之后保存的信息),点击生成,就可以得到MQTT的登录信息了。

下面是打开的页面:

图片

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

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

相关文章

vite引入图片用法

在 vite 中 引入图片方式跟其他脚手架创建项目的引入方式不一样 要使用 import.meta.url 他是一个 ESM 的原生功能 const mapPicSrc ref(new URL(/assets/charts/bdf.png, import.meta.url).href) 如果使用 require 引入会报错 说没有 require 模块

【Shell实战案例面试题】输入网卡的名字,来输出网卡的IP

1.问题 参数后判断要加"" 名字为空时显示ip 2.分析 把本机的所有网卡名列出来,来引导用户输入 使用命令列出所有网卡信:ifconfig/ip a 设计一个函数,把网卡名作为参数,函数返回网卡的IP 在获取某个网卡IP时,考虑网…

解决NuxtJS3中安装pinia报错

使用npm install pinia 安装pinia报错。 修改镜像后也报错: 方式一: npm config set registry https://registry.npm.taobao.org/ npm install pinia方式二: npm config set registry https://registry.npmjs.org/ npm install pinia解决方…

C++仿函数、万能头文件、transform学习

这是网上的一个代码,里面的一些东西以前没用过; #include <bits/stdc++.h> using namespace std;// A Functor class increment { private:int num; public:increment(int n) : num(n) { }int operator () (int arr_num) const {return num + arr_num;} };// Driver …

关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION (by liuhui)

关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION &#xff08;by liuhui&#xff09; 关于TongWeb部署应用报错java.lang.NoSuchFieldError: REFLECTION 问题现象&#xff1a;xml解析对象工厂类错误导致解析失败 解决办法&#xff1a;增加配置参数问题解决 -…

awk命令使用方法

简介 awk 是一种强大的文本处理工具&#xff0c;可以用于处理结构化的文本数据。它可以根据指定的模式和动作来筛选、处理和格式化文本。 下面是一些常见的 awk 命令使用方法。 详细介绍 基本语法&#xff1a; awk pattern { action } filename其中&#xff0c;pattern 是用…

【LeetCode: Z 字形变换 + 模拟】

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

(自用)learnOpenGL学习总结-高级OpenGL-帧缓冲Framebuffers

我们在之前使用了很多缓冲了&#xff1a;颜色缓冲、深度缓冲、模板缓冲。这些缓冲结合起来叫做帧缓冲&#xff0c; 其实也能从名字理解&#xff0c;每一帧屏幕都需要不断更新画面&#xff0c;对应的缓冲也需要更新。 不过上面这些都是在默认的缓冲里面做的&#xff0c;现在我…

数据建模及可视化解决方案

一、需求背景 1. 数据量的爆炸性增长:随着互联网和物联网技术的发展,我们正处于一个数据爆炸的时代。企业和组织需要有效地管理和利用这些海量数据,而数据建模平台可以帮助他们实现这一目标。 2. 数据多样性和复杂性:数据来源的多样化和复杂性使得数据管理和分析变得更加…

基于 GPU 渲染的高性能空间包围计算

空间包围检测在计算机图形学、虚拟仿真、工业生产等有着广泛的应用。 现代煤矿开采过程中&#xff0c;安全一直是最大的挑战之一。地质空间中存在诸多如瓦斯积聚、地质构造异常、水文条件不利等隐蔽致灾因素&#xff0c;一旦被触发&#xff0c;可能引发灾难性的后果。因此在安…

架构整洁之道-组件构建原则

5 组件构建原则 大型软件系统的架构过程与建筑物修建很类似&#xff0c;都是由一个个小组件组成的。所以&#xff0c;如果说SOLID原则是用于指导我们如何将砖块砌成墙与房间的&#xff0c;那么组件构建原则就是用来指导我们如何将这些房间组合成房子的。 5.1 组件 组件是软件的…

漏洞原理SQL注入 手工注入漏洞

漏洞原理SQL注入 手工注入漏洞 SQL 注入的前置知识 information_schema库information_schema 是mysql5.0以上版本中自带的一个数据库。tables表information_schema库中的tables表中table_schema列&#xff08;存储数据库名&#xff09;和table_name列&#xff08;存储表名&…

慎投!这3本期刊诚信风险高,被警告和风险低的期刊选哪个?

近年来&#xff0c;学术界对学术诚信的关注越来越多&#xff0c;期刊的学术诚信风险也日益受到关注。科睿唯安在今年三月份剔除的35本SCI期刊中&#xff0c;绝大多数涉及学术诚信问题&#xff01;据官方介绍&#xff0c;其已正式开发了一款AI工具&#xff0c;可以锁定存在学术诚…

R-YOLO

Abstract 提出了一个框架&#xff0c;名为R-YOLO&#xff0c;不需要在恶劣天气下进行注释。考虑到正常天气图像和不利天气图像之间的分布差距&#xff0c;我们的框架由图像翻译网络&#xff08;QTNet&#xff09;和特征校准网络&#xff08;FCNet&#xff09;组成&#xff0c;…

ES 分词器

概述 分词器的主要作用将用户输入的一段文本&#xff0c;按照一定逻辑&#xff0c;分析成多个词语的一种工具 什么是分词器 顾名思义&#xff0c;文本分析就是把全文本转换成一系列单词&#xff08;term/token&#xff09;的过程&#xff0c;也叫分词。在 ES 中&#xff0c;Ana…

部署一个私有化的博客系统

效果 安装 1.创建目录 mkdir /opt/typecho/usr cd /opt/typecho 2.编写配置文件 vim docker-compose.yml 内容如下 version: 3 services:typecho:image: joyqi/typecho:nightly-php7.4-apachecontainer_name: typechorestart: alwaysenvironment:- TYPECHO_SITE_URLhttp:…

大模型应用开发:为产品创建一个AI客服/智能助手

欢迎阅读本系列文章&#xff01;我将带你一起探索如何使用OpenAI API来开发GPT应用。无论你是编程新手还是资深开发者&#xff0c;都能在这里获得灵感和收获。 本文将继续展示AI助手的开发方式&#xff0c;在OpenAPI中它的名字是Assistants。 什么是Assistants&#xff1f; 在之…

《信息系统项目管理师》备考计划

《信息系统项目管理师》证书价值和作用 信息系统项目管理师证书的价值体现在提升专业知识、助力职业发展、职称评定、技能补贴和人才引进或积分落户等方面。 一方面可以通过系统学习&#xff0c;可以显著提高自己在信息系统项目管理领域的专业水平。方便自己以后向更多的方向…

【思科】 GRE VPN 的实验配置

【思科】GRE VPN 的实验配置 前言报文格式 实验需求配置拓扑GRE配置步骤R1基础配置GRE 配置 ISP_R2基础配置 R3基础配置GRE 配置 PCPC1PC2 抓包检查OSPF建立GRE隧道建立 配置文档 前言 VPN &#xff1a;&#xff08;Virtual Private Network&#xff09;&#xff0c;即“虚拟专…

路由进阶

文章目录 1.路由的封装抽离2.声明式导航 - 导航链接3.声明式导航-两个类名自定义匹配的类名 4.声明式导航 - 跳转传参查询参数传参动态路传参两种传参方式的区别动态路由参数可选符 5.Vue路由 - 重定向6.Vue路由 - 4047.Vue路由 - 模式设置8.编程式导航 - 两种路由跳转9.编程式…