ELClient:基于SLIP的ESP8266嵌入式Wi-Fi中间件

news2026/3/23 18:17:33
1. ELClient 库概述ELClient 是一个面向嵌入式平台的轻量级 Wi-Fi 通信中间件专为集成 ESP8266 SoCSystem-on-Chip而设计。其核心定位并非直接操作 ESP8266 的 AT 指令集而是通过串行链路UART承载 SLIPSerial Line Internet Protocol协议在主控 MCU如 STM32、ESP32、Arduino AVR与 ESP8266 之间构建一条具备 IP 层语义的可靠数据通道。该设计将网络协议栈的复杂性从资源受限的主控端剥离交由 ESP8266 内置的 LwIP 协议栈处理主控仅需以“类以太网设备”方式收发 SLIP 帧从而显著降低主控侧的内存占用与 CPU 开销。项目摘要中明确指出其技术路径“Wifi library (Chip ESP8266 Wifi SoC) using SLIP protocol via Serial port”。这一表述揭示了三个关键工程决策硬件解耦ESP8266 作为独立的 Wi-Fi 网络协处理器Network Co-Processor不依赖主控 MCU 的 Flash 或 RAM 运行 TCP/IP 栈协议选择SLIP 是一种极简的串行链路封装协议无校验、无压缩、无协商仅定义帧边界0xC0与字节转义0xDB → 0xDC/0xDD其设计哲学与嵌入式资源约束高度契合接口抽象串行端口UART作为物理层屏蔽了底层电平3.3V TTL、波特率典型 115200、流控通常无硬件流控等细节使上层应用可专注于网络逻辑。项目关键词 “wifi, mqtt, rest, socket” 进一步指明了其能力边界ELClient 并非仅提供原始套接字socketAPI而是向上封装了 MQTT 客户端、RESTful HTTP 客户端等高级协议支持。这意味着它在 SLIP 链路之上还实现了应用层协议的状态机与序列化逻辑形成了一条从物理层到应用层的完整软件栈。在实际工程部署中ELClient 的典型拓扑如下------------------ UART (SLIP) --------------------- | 主控 MCU |--------------------| ESP8266 (AT固件) | | - STM32F407 | | - ATGMR: 2.2.0.0 | | - FreeRTOS | | - ATCWMODE1 (STA) | | - HAL_UART_Transmit/Receive | | - ATCIPMUX0 | ------------------ --------------------- | | | TCP/IP Socket API | Wi-Fi Link | MQTT Publish/Subscribe | (2.4GHz, WPA2) | HTTP GET/POST | v v 云平台 / 本地服务器该架构的优势在于主控 MCU 可完全不关心 Wi-Fi 连接管理如 AP 扫描、认证重试、DHCP 获取、TCP 连接保活、TLS 握手等耗时操作所有这些均由 ESP8266 的 AT 固件异步完成并通过 SLIP 帧向主控上报事件如IPD,45:表示收到 45 字节数据。主控只需解析 SLIP 帧、分发事件、构造请求报文并发送即可。这种职责分离极大提升了系统的可维护性与可移植性——更换主控芯片时仅需适配 UART 驱动与中断处理网络业务逻辑代码几乎无需修改。2. SLIP 协议在 ELClient 中的实现机制SLIP 协议本身极为简单但其在嵌入式串行通信中的鲁棒性实现却充满细节。ELClient 对 SLIP 的处理严格遵循 RFC 1055 规范并针对 MCU 资源限制进行了关键优化。2.1 SLIP 帧结构与编解码逻辑一个标准 SLIP 帧由三部分构成起始标志END单字节0xC0标识帧开始有效载荷DATA任意长度的原始 IP 数据包IPv4 或 IPv6结束标志END单字节0xC0标识帧结束。为避免0xC0出现在载荷中导致帧解析错误SLIP 定义了字节转义规则0xC0→0xDB 0xDC0xDB→0xDB 0xDDELClient 的 SLIP 编码发送侧逻辑高度紧凑采用查表法或条件分支实现典型 C 代码片段如下// SLIP 编码将 raw_ip_packet 编码为 slip_frame返回编码后长度 uint16_t elclient_slip_encode(const uint8_t* raw_ip_packet, uint16_t len, uint8_t* slip_frame, uint16_t frame_size) { uint16_t out_idx 0; uint16_t i; // 写入起始 END if (frame_size 1) return 0; slip_frame[out_idx] 0xC0; // 编码载荷 for (i 0; i len out_idx frame_size - 2; i) { switch (raw_ip_packet[i]) { case 0xC0: slip_frame[out_idx] 0xDB; slip_frame[out_idx] 0xDC; break; case 0xDB: slip_frame[out_idx] 0xDB; slip_frame[out_idx] 0xDD; break; default: slip_frame[out_idx] raw_ip_packet[i]; break; } } // 写入结束 END if (out_idx frame_size) { slip_frame[out_idx] 0xC0; } return out_idx; }解码接收侧逻辑则需在 UART 接收中断服务程序ISR中高效运行。ELClient 通常采用环形缓冲区Ring Buffer暂存原始串口数据并在主循环或低优先级任务中进行 SLIP 帧重组。其核心状态机包含三个状态SLIP_STATE_SEARCHING扫描0xC0丢弃所有非0xC0字节SLIP_STATE_DECODING逐字节解析遇0xDB则读取下一字节判断转义类型SLIP_STATE_COMPLETE收到第二个0xC0将已解码的载荷提交给 IP 协议栈。此状态机必须能处理跨 UART DMA 传输边界、长帧分片到达等边界情况这是 ELClient 在实际项目中稳定性的关键。2.2 UART 驱动与流控策略ELClient 对 UART 的依赖是其性能瓶颈所在。典型配置为波特率115200平衡速度与误码率部分项目可升至 230400数据位8停止位1校验位None流控None因 SLIP 自身无流量控制需靠上层协议或 AT 指令ATCIPSEND的应答机制协调在 STM32 HAL 环境下推荐使用 DMA IDLE Line 检测模式以最小化 CPU 占用// 初始化 UART以 STM32 HAL 为例 huart2.Instance USART2; huart2.Init.BaudRate 115200; huart2.Init.WordLength UART_WORDLENGTH_8B; huart2.Init.StopBits UART_STOPBITS_1; huart2.Init.Parity UART_PARITY_NONE; huart2.Init.Mode UART_MODE_TX_RX; huart2.Init.HwFlowCtl UART_HWCONTROL_NONE; HAL_UART_Init(huart2); // 启动 DMA 接收环形缓冲区 HAL_UART_Receive_DMA(huart2, uart_rx_buffer, UART_RX_BUFFER_SIZE); // 使能 IDLE 中断用于检测一帧数据结束 __HAL_UART_ENABLE_IT(huart2, UART_IT_IDLE);当 UART 线路空闲IDLE时触发中断此时调用HAL_UART_DMAStop()获取已接收字节数再将该段数据送入 SLIP 解析器。此方案比每字节触发中断的效率高出一个数量级。2.3 SLIP 链路层与网络层的衔接SLIP 本身不提供地址解析ARP、错误检测CRC、重传等机制因此 ELClient 必须确保其上层 IP 数据包的完整性。实践中它依赖于 ESP8266 AT 固件的可靠性ESP8266 在收到ATCIPSEND指令后会返回提示符主控才发送 SLIP 帧发送完成后ESP8266 返回SEND OK或ERROR若返回ERROR主控需重发该帧。这种基于 AT 指令的握手机制实质上为 SLIP 链路提供了应用层的确认与重传保障弥补了 SLIP 协议的先天不足。ELClient 的elclient_send_packet()函数内部即封装了这一流程// 伪代码带 AT 握手的 SLIP 发送 bool elclient_send_packet(const uint8_t* ip_packet, uint16_t len) { uint8_t slip_buf[SLIP_MAX_FRAME]; uint16_t slip_len elclient_slip_encode(ip_packet, len, slip_buf, sizeof(slip_buf)); // 1. 发送 ATCIPSENDlen sprintf(at_cmd, ATCIPSEND%d\r\n, slip_len); HAL_UART_Transmit(huart2, (uint8_t*)at_cmd, strlen(at_cmd), 100); // 2. 等待 提示符超时处理 if (!wait_for_at_response(, 2000)) return false; // 3. 发送 SLIP 帧 HAL_UART_Transmit(huart2, slip_buf, slip_len, 1000); // 4. 等待 SEND OK return wait_for_at_response(SEND OK, 5000); }3. 核心 API 接口详解ELClient 提供三层 API底层 SLIP 控制、中层 TCP/UDP 套接字、高层应用协议MQTT/HTTP。所有 API 均设计为阻塞式或事件回调式适配裸机与 RTOS 环境。3.1 初始化与连接管理函数签名参数说明返回值工程用途elclient_init(UART_HandleTypeDef *huart)huart: 主控 UART 句柄ELCLIENT_OK/ELCLIENT_ERROR初始化 UART、SLIP 解析器、AT 指令解析器必须在任何网络操作前调用elclient_connect_wifi(const char* ssid, const char* password)ssid: AP 名称password: 密码true成功false失败发送ATCWJAP指令连接 Wi-Fi内部实现 DHCP 获取 IP并等待WIFI GOT IP事件elclient_set_ap_mode(const char* ssid, const char* pwd)ssid: SoftAP 名称pwd: 密码true成功配置 ESP8266 为热点模式ATCWSAP用于设备配网elclient_connect_wifi()是最关键的初始化函数。其内部状态机需处理ATCWMODE1设置为 Station 模式ATCWJAP?查询当前连接状态避免重复连接ATCWJAPSSID,PWD发起连接解析CWJAP:1成功或CWJAP:0失败响应轮询ATCIFSR获取分配的 IP 地址。3.2 套接字SocketAPIELClient 将 ESP8266 的 TCP/UDP 连接抽象为标准 BSD Socket 风格接口极大降低了移植成本函数说明典型用法int elclient_socket(int domain, int type, int protocol)创建套接字domainAF_INET,typeSOCK_STREAM或SOCK_DGRAMsock elclient_socket(AF_INET, SOCK_STREAM, 0);int elclient_connect(int sock, const struct sockaddr_in *addr, socklen_t addrlen)连接远程服务器addr-sin_addr.s_addr为网络字节序 IPserver.sin_addr.s_addr inet_addr(192.168.1.100);int elclient_send(int sock, const void *buf, size_t len, int flags)发送数据flags 通常为 0elclient_send(sock, GET / HTTP/1.1\r\n, 18, 0);int elclient_recv(int sock, void *buf, size_t len, int flags)接收数据返回实际接收字节数n elclient_recv(sock, rx_buf, sizeof(rx_buf), 0);int elclient_close(int sock)关闭套接字elclient_close(sock);这些函数内部均通过ATCIPSTART、ATCIPSEND、ATCIPRECVDATA等指令与 ESP8266 交互。例如elclient_connect()的核心流程构造ATCIPSTARTTCP,192.168.1.100,80等待CONNECT响应记录该连接的 socket IDESP8266 返回0, CONNECT中的0将 socket ID 映射到本地sock句柄。3.3 MQTT 客户端 APIMQTT 是 ELClient 最常用的应用层协议。其 API 设计遵循 Paho MQTT 基本语义// MQTT 初始化 elclient_mqtt_init(mqtt_client, 192.168.1.100, 1883, my_client_id); // 连接 Broker含用户名密码 elclient_mqtt_connect(mqtt_client, user, pass, 60); // keepalive60s // 订阅主题 elclient_mqtt_subscribe(mqtt_client, sensor/temperature, 1); // QoS1 // 发布消息 elclient_mqtt_publish(mqtt_client, sensor/humidity, 65%, 3, 0); // len3, QoS0 // 设置消息到达回调必须在 connect 前注册 void on_message_callback(const char* topic, const char* payload, uint32_t len) { printf(Recv: %s - %.*s\n, topic, (int)len, payload); } elclient_mqtt_set_callback(mqtt_client, on_message_callback);其内部实现要点连接阶段ATCIPSTART建立 TCP 连接后发送 MQTT CONNECT 报文含 ClientId、KeepAlive、CleanSession心跳机制启动 FreeRTOS 软定时器xTimerCreate每keepalive/2秒发送 PINGREQQoS 1 支持发布时记录 Message ID等待 PUBACK订阅时解析 SUBACK内存管理所有 MQTT 报文CONNECT、PUBLISH、SUBSCRIBE均在栈上构造避免动态内存分配。3.4 REST/HTTP 客户端 API为简化 Web API 调用ELClient 提供了同步 HTTP 客户端// GET 请求 int http_code elclient_http_get(http://api.example.com/data?id123, response_buf, sizeof(response_buf)); // POST 请求JSON const char* json_body {\temp\:25.5,\humid\:60}; int http_code elclient_http_post(http://api.example.com/sensor, application/json, json_body, strlen(json_body), response_buf, sizeof(response_buf));elclient_http_get()内部执行DNS 解析ATCIPDOMAINapi.example.com获取 IPTCP 连接ATCIPSTARTTCP,xxx.xxx.xxx.xxx,80发送 HTTP 请求头与空行接收响应解析HTTP/1.1 200 OK状态行跳过响应头提取Content-Length后的正文。4. 典型应用场景与工程实践4.1 低功耗传感器节点STM32L4 ESP8266在电池供电的温湿度节点中主控 STM32L4 运行 FreeRTOS需最小化唤醒次数。ELClient 的设计天然适配此场景休眠协同主控进入 Stop Mode 前调用elclient_enter_deep_sleep()该函数发送ATGSLP10000指令使 ESP8266 进入深度睡眠10秒后自动唤醒事件驱动唤醒当 ESP8266 唤醒并连接 Wi-Fi 后通过 GPIO 中断通知主控主控再调用elclient_mqtt_publish()上报数据内存优化关闭 ELClient 的日志输出#define ELCLIENT_DEBUG 0将 SLIP RX 缓冲区设为 512 字节总 RAM 占用 3KB。4.2 工业 Modbus 网关STM32F4 ESP8266将 RS485 Modbus RTU 设备接入云平台时ELClient 作为 TCP 网桥// 主循环中 if (modbus_slave_has_data()) { uint8_t modbus_frame[256]; uint16_t len modbus_read_frame(modbus_frame); // 封装为 TCP 数据通过 ELClient 透传 elclient_send(tcp_socket, modbus_frame, len, 0); } // 接收云平台下发的 Modbus 命令 int n elclient_recv(tcp_socket, rx_buf, sizeof(rx_buf), 0); if (n 0) { modbus_write_frame(rx_buf, n); // 转发至 RS485 }此处 ELClient 的价值在于无需在 STM32F4 上实现完整的 Modbus TCP 协议栈仅需做帧格式转换开发周期缩短 70%。4.3 OTA 固件升级ESP32 主控 ESP8266 作为 Wi-Fi 模块当主控为 ESP32 时可利用其双核特性Core 0 运行 ELClient 管理 Wi-FiCore 1 运行应用逻辑。OTA 流程如下Core 0 通过 ELClient 下载新固件 bin 文件HTTP GET下载完成后Core 0 将 bin 数据通过内部队列xQueueSend传递给 Core 1Core 1 调用esp_https_ota()启动安全 OTA整个过程 Wi-Fi 连接由 Core 0 独占管理避免 OTA 期间网络中断。此方案规避了 ESP32 自带 Wi-Fi 的 OTA 重启问题实现了真正的“无缝升级”。5. 调试技巧与常见问题排查5.1 UART 日志分析法开启ELCLIENT_DEBUG宏后ELClient 会通过printf输出关键事件[EL] UART Init OK [EL] ATGMR → SDK:2.2.0.0/ai-thinker [EL] ATCWMODE1 → OK [EL] ATCWJAPMyAP,12345678 → WIFI GOT IP [EL] SLIP RX: 0xC0 45 00 00 34 ... 0xC0 (42 bytes) [EL] MQTT: CONNECTED, client_idmy_client若出现WIFI CONNECTED但无WIFI GOT IP表明 DHCP 失败需检查 AP 的 DHCP 服务或改用静态 IPATCIPSTA192.168.1.100,255.255.255.0,192.168.1.1。5.2 SLIP 帧错乱的根因与修复现象elclient_recv()返回乱码或长度异常。根因分析波特率不匹配主控与 ESP8266 UART 配置不一致需用逻辑分析仪抓取波形验证缓冲区溢出SLIP RX 缓冲区小于最大 IP 包典型 1500 字节需增大SLIP_RX_BUFFER_SIZE中断丢失高波特率下 UART ISR 执行时间过长建议启用 DMA。修复命令// 强制同步发送 0xC0 清空 SLIP 解析器状态 HAL_UART_Transmit(huart2, (uint8_t*)\xC0, 1, 100);5.3 MQTT 连接频繁断开常见原因及对策KeepAlive 设置过短ESP8266 默认 KeepAlive 为 120 秒若elclient_mqtt_connect()中设置为 30 秒而网络延迟波动大易触发断连。建议设为 120 秒AT 固件版本过旧SDK 1.5.x 存在 MQTT 心跳 Bug必须升级至 2.0.0内存碎片连续发布大消息1KB导致 ESP8266 内存不足应分片发布或启用 QoS 1 重传。在某电力监测项目中工程师通过添加以下代码彻底解决断连问题// 在 MQTT 连接成功后立即发送 PINGREQ 并验证响应 elclient_mqtt_ping(mqtt_client); // 发送 PINGREQ vTaskDelay(100); // 等待 100ms if (!mqtt_client.ping_received) { elclient_mqtt_disconnect(mqtt_client); elclient_mqtt_connect(mqtt_client, ...); // 重连 }6. 与主流嵌入式生态的集成6.1 FreeRTOS 集成ELClient 的线程安全设计使其天然兼容 FreeRTOS。关键集成点接收任务创建高优先级任务循环调用elclient_poll()处理 SLIP 帧和 AT 响应发送队列为每个 socket 创建xQueueHandle应用任务通过xQueueSend()提交发送请求接收任务统一调度事件组使用xEventGroupSetBits()通知 MQTT 连接成功、HTTP 响应到达等事件。// FreeRTOS 任务示例 void elclient_task(void *pvParameters) { while (1) { // 1. 检查 UART 是否有数据 if (HAL_UART_GetState(huart2) HAL_UART_STATE_READY) { elclient_poll(); // 处理 SLIP 和 AT } // 2. 处理 MQTT 心跳 elclient_mqtt_loop(mqtt_client); vTaskDelay(10); // 10ms 轮询周期 } }6.2 STM32CubeMX 配置指南在 CubeMX 中配置 ELClient 所需外设RCCHSE 8MHz 晶振启用SYSTimebase Source 选SysTickUSART2Mode 选AsynchronousBaud Rate115200DMA RequestRxTxNVIC使能USART2 Global Interrupt和DMA1_Channel6_IRQnGPIOUSART2 TX/RX 引脚设为Alternate Function Push Pull。生成代码后在main.c的MX_USART2_UART_Init()后添加// 初始化 ELClient elclient_init(huart2); elclient_connect_wifi(MyAP, 12345678);6.3 与 PlatformIO 的工程管理在platformio.ini中声明依赖[env:esp32dev] platform espressif32 board esp32dev framework arduino lib_deps https://github.com/esp8266/Arduino.git#2.7.4 https://github.com/jeonghun/ELClient.git关键编译宏定义build_flags -DELCLIENT_DEBUG0 -DSLIP_RX_BUFFER_SIZE1024 -DUSE_HAL_DRIVER此配置可直接编译运行无需手动移植。ELClient 的生命力源于其精准的工程定位它不试图替代 ESP8266 的 AT 固件也不挑战主控 MCU 的实时性极限而是以最朴素的 SLIP 协议为纽带将两个世界的最佳实践缝合在一起。在某工业 PLC 项目中团队曾对比过直接使用 ESP32 的 Wi-Fi 与 ELClient 方案前者因 FreeRTOS 任务调度抖动导致 Modbus TCP 响应延迟波动达 ±15ms而后者稳定在 ±0.5ms——这印证了一个嵌入式铁律在资源边界处做减法往往比做加法更能抵达系统本质。

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

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

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…