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

基于Arduino的ESP8266连接OneNET云平台(MQTT协议 物模型)(二)连接云平台

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、前期准备
    • 1.1 硬件配置
    • 1.2 软件环境配置
  • 二、接线
  • 三、核心代码
    • 3.1 总代码
  • 三、最终效果
  • 总结


前言

本系列将以0基础新手视角,完整演示Arduino+ESP8266连接OneNET云平台的全流程,涵盖ESP8266固件烧录、物模型的模型设计、MQTT协议配置及代码实现。建议搭配Arduino IDE 2.0+和Arduino开发板使用。

(二)本文为arduino连接ESP8266(ESP-01S)

前文为,ESP8266模块的测试以及MQTT固件的烧录,不可缺少。

一、前期准备

1.1 硬件配置

需准备Arduino开发板 和 ESP8266

1.2 软件环境配置

安装Arduino IDE 2.0.2
安装 EspSoftwareSerial 库(工具→库管理→搜索EspSoftwareSerial→安装)

二、接线

注:arduino的 5V 给ESP8266的3.3V 供电,不然电压可能不够。

代码中的这句话是指 arduino的软串口,RX为9,TX为10;此时我们用ESP8266的TX接9,RX接10
SoftwareSerial espSerial(9, 10);  // RX=9, TX=10  注意前面的是指arduino的TRX,连线时候ESP8266的TX应接9,RX接10
arduino unoESP8266
5V3.3V 和 EN(即CH_PD)
10RX
9TX
GNDGND

再从 引脚5 引出一根导线,连接 小电阻→LED灯→GND
以备之后测试云平台下发

三、核心代码

3.1 总代码

替换

const char* WIFI_SSID = "Xiaomi 15";
const char* WIFI_PWD = "147258369";
// OneNET参数
#define PRODUCT_ID "1SX9Lm39T5"
#define DEVICE_NAME "arduino"
#define TOKEN "version=2018-10-31&res=products%2F1SX

代码:

#include <SoftwareSerial.h>
#include <ArduinoJson.h>// 网络配置
const char* WIFI_SSID = "Xiaomi 15";
const char* WIFI_PWD = "147258369";
const char* MQTT_SERVER = "mqtts.heclouds.com";// OneNET 物联参数
const int MQTT_PORT = 1883;
#define PRODUCT_ID "1SX9Lm39T5"
#define DEVICE_NAME "arduino"
#define TOKEN "version=2018-10-31&res=products%2F1SX9Lm39T5%2Fdevices%2Farduino&et=2059472864&method=md5&sign=F5DI%2FHUhIdIeZx1CUsR%2ByQ%3D%3D"
// 硬件配置
SoftwareSerial espSerial(9, 10);  // RX=9, TX=10  注意前面的是指arduino的TRX,连线时候ESP8266的TX应接9,RX接10
#define TLED_PIN 5                   // LED控制引脚// 全局变量
const unsigned long readInterval = 3000;// 数据上报周期(ms)
int postMsgId = 0;       // 消息序列号
float temp = 20.25;      // 温度值
bool TLED_state = true;  // LED开关状态//前置函数声明
bool sendATCommand(const char* cmd, const char* ack, unsigned int timeout);void initESP8266();
void initSwitch();
void Post_Sensor();
void Post_Switch();void setup() {Serial.begin(9600);    // 调试串口espSerial.begin(9600); // ESP8266通信initESP8266();initSwitch();}
void loop() {handleMQTTMessage();// 定时上传数据static unsigned long lastPost = 0;if (millis() - lastPost >= readInterval) {Post_Switch();// Post_Sensor();lastPost = millis();}
}// AT指令发送函数(带超时检测)
bool sendATCommand(const char* cmd, const char* ack, unsigned int timeout) {espSerial.println(cmd);unsigned long start = millis();String response;while (millis() - start < timeout) {while (espSerial.available()) {char c = espSerial.read();response += c;}if (response.indexOf(ack) != -1) {Serial.print("[SUCCESS] ");Serial.println(cmd);return true;}}Serial.print("[ERROR] ");Serial.print(cmd);Serial.println(" 未收到预期响应");return false;
}void initESP8266(){// 初始化ESP8266sendATCommand("AT", "OK", 2000);
//  sendATCommand("AT+RST", "ready", 8000); sendATCommand("AT+CWMODE=1", "OK", 1000);sendATCommand("AT+CWDHCP=1,1", "OK", 1000);// 连接WiFiString cmd = "AT+CWJAP=\"" + String(WIFI_SSID) + "\",\"" + String(WIFI_PWD) + "\"";sendATCommand(cmd.c_str(), "OK", 5000);\// 配置MQTTString mqttCfg = "AT+MQTTUSERCFG=0,1,\"" + String(DEVICE_NAME) + "\",\"" + String(PRODUCT_ID) + "\",\"" + String(TOKEN) + "\",0,0,\"\"";sendATCommand(mqttCfg.c_str(), "OK", 5000);// 连接服务器String connCmd = "AT+MQTTCONN=0,\"" + String(MQTT_SERVER) + "\"," + String(MQTT_PORT) + ",1";sendATCommand(connCmd.c_str(), "OK", 5000);// 添加订阅命令(在MQTT连接成功后)String subscribeCmd = "AT+MQTTSUB=0,\"$sys/" + String(PRODUCT_ID) + "/" + String(DEVICE_NAME) + "/thing/property/set\",1";sendATCommand(subscribeCmd.c_str(), "OK", 2000);
}void initSwitch(){pinMode(TLED_PIN, OUTPUT);digitalWrite(TLED_PIN, TLED_state);
}void Post_Sensor(){postMsgId++;// 手动拼接字符串,双引号 \",逗号 \,,符合 ESP8266 的 AT 命令转义要求String jsonPayload = "\\\"id\\\":\\\"" + String(postMsgId) + "\\\"\\,"+ "\\\"version\\\":\\\"1.0\\\"\\,"+ "\\\"params\\\":{"+ "\\\"temp\\\":{\\\"value\\\":" + String(temp, 2) + "}\\,"+ "\\\"TLED\\\":{\\\"value\\\":" + (TLED_state ? "true" : "false") + "}"+ "}";jsonPayload = "{" + jsonPayload + "}";// 构造 MQTT 发布命令String pubCmd = "AT+MQTTPUB=0,\"$sys/" + String(PRODUCT_ID) + "/" + String(DEVICE_NAME)+ "/thing/property/post\",\"" + jsonPayload + "\",0,0";// 发送sendATCommand(pubCmd.c_str(), "OK", 3000);
}void Post_Switch(){postMsgId++;// 手动拼接字符串,双引号 \",逗号 \,,符合 ESP8266 的 AT 命令转义要求String jsonPayload = "\\\"id\\\":\\\"" + String(postMsgId) + "\\\"\\,"+ "\\\"version\\\":\\\"1.0\\\"\\,"+ "\\\"params\\\":{"+ "\\\"temp\\\":{\\\"value\\\":" + String(temp, 2) + "}\\,"+ "\\\"TLED\\\":{\\\"value\\\":" + (TLED_state ? "true" : "false") + "}"+ "}";jsonPayload = "{" + jsonPayload + "}";// 构造 MQTT 发布命令String pubCmd = "AT+MQTTPUB=0,\"$sys/" + String(PRODUCT_ID) + "/" + String(DEVICE_NAME)+ "/thing/property/post\",\"" + jsonPayload + "\",0,0";// 发送sendATCommand(pubCmd.c_str(), "OK", 3000);}// 接收数据函数 ▼
void handleMQTTMessage() {while (espSerial.available()) {String message = espSerial.readStringUntil('\n');if (message.indexOf("+MQTTSUBRECV:") != -1) { // 检测到新消息Serial.print("收到原始消息:"); Serial.println(message); // 调试输出// 提取JSON部分int jsonStart = message.indexOf('{');String jsonStr = message.substring(jsonStart);JsonDocument doc;DeserializationError error = deserializeJson(doc, jsonStr);if (!error) {if (doc["params"]["TLED"].as<bool>()) {digitalWrite(TLED_PIN, HIGH);TLED_state = true;Serial.println("✅ 已开灯");} else {digitalWrite(TLED_PIN, LOW);TLED_state = false;Serial.println("✅ 已关灯");}// 回复 set 指令int id = doc["id"] | 0; // 取出id进行回复(可选)String replyJson = String("{\\\"id\\\":\\\"") + id + "\\\",\\\"code\\\":200}";String cmd = "AT+MQTTPUB=0,\"$sys/" + String(PRODUCT_ID) + "/" + String(DEVICE_NAME) + "/thing/property/set/reply\",\"" + replyJson + "\",0,0";sendATCommand(cmd.c_str(), "OK", 1000);} else {Serial.println("[ERROR] JSON解析失败");}}}
}

三、最终效果

串口上,会出现几个error,属于正常情况,如响应超时等
后续出现的success,就代表上传成功
若有问题,则重复上篇文章,使用USB转TTL,进行AT指令测试
在这里插入图片描述在这里插入图片描述在这里插入图片描述

总结

本文搭建了 基于Arduino的ESP8266连接OneNET云平台(MQTT协议 物模型)。

相关文章:

基于Arduino的ESP8266连接OneNET云平台(MQTT协议 物模型)(二)连接云平台

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前期准备1.1 硬件配置1.2 软件环境配置 二、接线三、核心代码3.1 总代码 三、最终效果总结 前言 本系列将以0基础新手视角&#xff0c;完整演示ArduinoESP…...

空间注意力和通道注意力的区别

空间注意力和通道注意力是深度学习中两种常见的注意力机制。 1. ​​关注维度不同​​ ​​通道注意力​​&#xff08;Channel Attention&#xff09; 对特征图的每个通道分配不同的权重&#xff0c;强调“哪些通道更重要”。例如&#xff0c;在RGB图像中&#xff0c;可能红色…...

git 版本提交规范

Git 提交规范&#xff08;Git Commit Message Convention&#xff09;是为了让项目的提交历史更加清晰、可读、便于追踪和自动化工具解析。常见的规范之一是 Conventional Commits&#xff0c;下面是一个推荐的格式规范&#xff1a; &#x1f31f; 提交信息格式&#xff08;Con…...

Linux的基础的操作指令

一.目录文件&#xff1a;在Linux中的以d开头的文件&#xff0c;就叫做目录文件(Directory): 二.普通的文件&#xff1a;在Linux中的以-r开头的文件&#xff0c;就叫做普通的文件,他们通常以.txt .cpp .c为后缀: 三.pwd:查看当前目录的绝对路径:查看当前所在位置的目录的绝对路径…...

级联vs端到端、全双工、轮次检测、方言语种、商业模式…语音 AI 开发者都在关心什么?丨Voice Agent 学习笔记

编者按&#xff1a; A16Z在《AI Voice Agents: 2025 Update》中提到&#xff1a; 语音是 AI 应用公司最强大的突破之一。 它是人类沟通中最频繁&#xff08;也是信息密度最高的&#xff09;形式&#xff0c;AI 也让其首次变得“可编程”。 在13期Z沙龙&#xff0c;我们聚焦AI…...

使用Cloudflare加速网站的具体操作步骤

要通过Cloudflare加速网站&#xff0c;您需要按照以下步骤进行设置和配置。这些步骤包括域名设置、接入Cloudflare、配置缓存和其他设置&#xff0c;以及测试网站性能。 1. 注册Cloudflare账户 访问Cloudflare官网&#xff1a;前往 Cloudflare官网。创建账户&#xff1a;点击…...

编译原理实验(四)———— LR(1)分析法

一、实验目的 掌握LR(1)分析法的基本原理与实现流程。通过构造LR(1)分析表&#xff0c;验证符号串是否符合给定文法规则。理解LR(1)分析中向前搜索符&#xff08;Lookahead Symbol&#xff09;的作用&#xff0c;解决移进-归约冲突。 二、实验题目 1.对下列文法&#xff0c;用…...

【Redis】Jedis与Jedis连接池

目录 1. Jedis 单实例连接 2. Jedis 连接池&#xff08;JedisPool&#xff09; 3. JedisPool 与 Jedis 的区别 4. JedisPool 线程安全 6. 使用 JedisPool 的注意事项 1. Jedis 单实例连接 在最简单的用法中&#xff0c;Jedis 提供了直接与 Redis 服务器连接的方式。这适合…...

MongoDB数据库的安装到入门使用详细讲解

本篇文章主要讲解MongoDB的安装使用教程及基础的数据库管理和操作能力的讲解,通过本篇文章您可以快速的掌握对MongDB数据库的基本认识及,基础开发能力。 一、MongoDB介绍 MongoDB是一款免费开源的非关系型数据库,该数据库适应于复杂关系的存储和管理,非常适合数据结构复杂…...

Argo CD

文章目录 一、什么是 Argo CD二、为什么选择 Argo CD三、Argo CD 架构1、API服务器2、存储库服务器3、应用程序控制器 四、Argo CD 的使用1、要求2、安装 Argo CD2.1、创建 argocd 命名空间2.2、部署 Argo CD2.3、验证部署是否成功 3、下载 Argo CD CLI4、发布 Argo CD 服务器5…...

ElementUI中checkbox v-model绑定值为布尔、字符串或数字类型

这篇博客介绍了在Vue.js中使用El-Checkbox组件时&#xff0c;如何设置和处理v-model的布尔值和类型转换。通过示例代码展示了如何设置true-label和false-label属性来改变选中状态的值&#xff0c;适用于需要特定类型&#xff08;如字符串或整数&#xff09;的场景。v-model不能…...

Wasm Client SDK线上优化

前言 随着 WebAssembly&#xff08;Wasm&#xff09;在前端开发中的普及&#xff0c;越来越多的开源项目开始在浏览器端提供高性能的逻辑处理方案。OpenIM Wasm SDK 便是其中的代表&#xff1a;通过将 Go 语言编写的 OpenIMSDK 核心编译为 .wasm 文件&#xff0c;在前端即可完成…...

Spring(第一章)

一&#xff0c;Spring介绍 什么是Spring 1. 轻量级&#xff1a;Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 2. 依赖注入(DI --- dependency injection、IOC) 3. 面向切面编程(AOP --- aspect oriented programming) 4. 容器: Spring 是…...

蓝桥杯 18.分考场

分考场 原题目链接 题目描述 有 n 个人参加某项特殊考试。 为了公平&#xff0c;要求任何两个认识的人不能分在同一个考场。 你的任务是求出最少需要分几个考场才能满足这个条件。 输入描述 第一行&#xff1a;一个整数 n&#xff0c;表示参加考试的人数&#xff08;1 ≤…...

大文件分片上传进阶版(新增md5校验、上传进度展示、并行控制,智能分片、加密上传、断点续传、自动重试),实现四位一体的网络感知型大文件传输系统‌

上篇文章我们总结了大文件分片上传的主要核心&#xff0c;但是我对md5校验和上传进度展示这块也比较感兴趣&#xff0c;所以在deepseek的帮助下&#xff0c;扩展了一下我们的代码&#xff0c;如果有任何问题和想法&#xff0c;非常欢迎大家在评论区与我交流&#xff0c;我需要学…...

【项目管理】成本类计算 笔记

项目管理-相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff5e;-CSDN博客 &#xff08;一&#xff09;知识总览 项目管理知识域 知识点&#xff1a; &#xff08;项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域&#xff09; 对应&…...

Redis 事务

事务介绍 Redis 事务和 MySQL 事务在概念上类似的 把一些列的操作绑定成一组&#xff0c;让这一组能够批量执行 MySQL 事务 原子性&#xff1a;把多个操作打包成一个整体 一致性&#xff1a;事务执行前后数据合理 持久性&#xff1a;事务做出的操作都会修改硬盘 隔离性&#…...

JavaScript day5

立即执行函数 <script>(function(){ console.log//函数不需调用&#xff0c;立马执行 })() </script> //另外写法 <script> (function(){}()) </script> 常见的内置对象 Math console.dir()——打印对象的 使用Math中的属性——console.log(Math.…...

辛格迪客户案例 | 浙江高跖医药委托生产质量管理协同(OWL MAH)项目

一、案例概述 浙江高跖医药科技股份有限公司是一家集“研、产、销”为一体的专业化药品持证企业。高跖医药自成立之初就建立并运行着一套相对完善的质量管理体系&#xff0c;涵盖了药品的研发、生产监管及销售。高跖医药于2022年选择实施了辛格迪的“委托生产质量管理协同解决…...

科学养生指南:解锁健康生活新方式

在快节奏的现代生活中&#xff0c;健康养生已成为人们关注的焦点。科学合理的养生方式&#xff0c;能帮助我们增强体质、预防疾病&#xff0c;享受更优质的生活。​ 饮食是健康养生的基石。遵循 “均衡饮食” 原则&#xff0c;每日饮食需包含谷类、蔬菜水果、优质蛋白质和健康…...

FreeRTos学习记录--2.内存管理

后续的章节涉及这些内核对象&#xff1a;task、queue、semaphores和event group等。为了让FreeRTOS更容易使用&#xff0c;这些内核对象一般都是动态分配&#xff1a;用到时分配&#xff0c;不使用时释放。使用内存的动态管理功能&#xff0c;简化了程序设计&#xff1a;不再需…...

C++ 操作符重载Operator

C可以重载大多数操作符&#xff0c;如算术运算符号&#xff0c;-号。 位操作符<<,>> 下标符号[]等都可以重载。 重载的意思&#xff0c;是让这些符号&#xff0c;按你定义的行为来执行代码&#xff0c;但是这种自定义&#xff0c;是有限制的&#xff0c;必须有一…...

SBTI科学碳目标认证有什么要求?SBTI认证的好处?

SBTi&#xff08;科学碳目标倡议&#xff09;认证要求与好处 SBTi&#xff08;Science Based Targets initiative&#xff0c;科学碳目标倡议&#xff09;是由全球环境信息研究中心&#xff08;CDP&#xff09;、联合国全球契约&#xff08;UNGC&#xff09;、世界资源研究所&…...

RS232转Profibus DP网关:技术革新!

RS232转Profibus DP网关&#xff1a;技术革新&#xff01; 在工业自动化领域&#xff0c;通讯协议的多样性为系统设计提供了灵活性&#xff0c;但同时也带来了不同设备间通信的挑战。其中&#xff0c;RS232和Profibus DP是两种广泛应用的通讯协议。RS232&#xff0c;作为一种串…...

XAML基本语法与例子

XAML (eXtensible Application Markup Language) 是一种基于 XML 的声明性语言&#xff0c;主要用于 WPF、UWP、Xamarin.Forms 和 MAUI 等框架中构建用户界面。 基本语法结构 1. 根元素和命名空间声明 <Page x:Class"MyNamespace.MyPage"xmlns"http://sch…...

map和set封装

创作中心-CSDNhttps://mpbeta.csdn.net/mp_blog/creation/editor/147238663 目录 创作中心-CSDNhttps://mpbeta.csdn.net/mp_blog/creation/editor/147238663 一、封装原理 二、改造红黑树 三、实现迭代器 四、测试 五、小tip 一、封装原理 上一篇文章我们完成了红黑…...

Java第六节:创建线程的其它三种方式(附带源代码)

作者往期文章 Java第五节&#xff1a;继承thread类创建线程-CSDN博客 一、实现Runnable接口 创建一个Thread02类实现Runnable接口 二、使用匿名内部类 在Main函数中匿名内部类创建线程 三、使用Lambda表达式 在Main函数中利用Lambda表达式创建一个线程 四、源代码 此项目源代…...

041-代码味道-大泥团模块

代码味道-大泥团模块 代码味道-Blob Module深度解析与C重构实践 一、Blob Module定义与特征 Blob Module&#xff08;大泥团模块&#xff09;是代码坏味道中的一种典型表现&#xff0c;指某个类或模块承担了过多不相关的职责&#xff0c;导致代码结构臃肿、可维护性差。其核心…...

强化学习系统学习路径与实践方法

一、学习路径规划​​ ​​1. 基础巩固阶段&#xff08;1-2个月&#xff09;​​ ​​必读教材​​&#xff1a; 《Reinforcement Learning: An Introduction》(Sutton & Barto) ​​第1-6章​​重点掌握&#xff1a;马尔可夫决策过程&#xff08;MDP&#xff09;、贝尔曼…...

CSS字体

CSS字体 CSS 中的字体样式设置是网页设计的重要部分&#xff0c;以下是一些关键知识点和常见用法&#xff1a; 1.font-family &#xff1a; 用于设置元素的字体系列。可以指定一个或多个字体名称作为备选项&#xff0c;以确保如果某个字体不可用&#xff0c;可以使用下一个备选…...

JDBC:数据库访问的原始接口

目录 一、JDBC 基础入门&#xff1a;数据库访问的原始接口 JDBC 是什么&#xff1f;它在 Java 中扮演什么角色&#xff1f; JDBC 工作原理图解&#xff08;驱动 -> 连接 -> 执行 -> 关闭&#xff09; 常见 JDBC 驱动类型及差异 第一个 JDBC 示例程序&#xff1a;连…...

使用 Electron 打包可执行文件和资源:完整实战教程

一.项目结构 项目结构建议如下&#xff1a; my-electron-app/ ├── example.exe ← 需打包的外部程序 ├── config.json ← 配置文件 ├── native-lib/ ← 自定义库或 DLL │ └── yourlib.dll ├── main.js …...

【网络安全】CI/CD 流水线漏洞

【网络安全】CI/CD 流水线漏洞 1. 保护您的软件管道&#xff1a;CI/CD 安全2. 什么是 CI/CD 以及它为何重要&#xff1f;2.1 持续集成&#xff08;CI&#xff09;&#xff1a;构建坚实的基础2.2 持续交付&#xff08;CD&#xff09;&#xff1a;准备发布2.3 持续部署&#xff0…...

计算机是如何工作的(上)

对于学习JavaEE初阶为什么要知道计算机是如何工作的&#xff0c;是因为在未来我们写代码的时候&#xff0c;会出现一些bug&#xff0c;而在代码层面是看不出来的&#xff0c;所以我们需要了解一些关于计算机内部是如何工作的&#xff0c;从而提高代码的健壮度。 计算机的组成&…...

【SF顺丰】顺丰开放平台API对接(Java对接篇)

对接前置篇&#xff1a; 【SF顺丰】顺丰开放平台API对接&#xff08;注册、API测试篇&#xff09;_顺丰api接口对接指南-CSDN博客 1.实现效果展示 2.SF顺丰开放平台&#xff0c;JDK资源下载。 下载地址&#xff1a;顺丰开放平台 3.将下载的JDK放入项目中。 4.将JDK资源引入p…...

【KWDB创作者计划】_针对KWDB时序数据库(多副本集群环境)进行压力测试

【KWDB创作者计划】_针对KWDB时序数据库&#xff08;多副本集群环境&#xff09;进行压力测试 1. 概述2. 压测环境部署3. 生成测试数据4. 写入性能测试5. 查询性能测试7. 总结 1. 概述 KWDB是一款主要应用于工业物联网、数字能源、车联网、智慧产业等领域的时序数据库&#xff…...

24.中医知识问答删除历史对话功能前端代码实现

前端实现对话删除功能的完整指南 功能概述 前篇文章介绍了删除历史对话的后端开发&#xff0c;本篇将介绍如何在前端实现一个完整的对话删除功能&#xff0c;包括用户确认、API调用、状态管理和错误处理等关键环节。 功能拆解 1. 用户确认机制 javascript const confirmDe…...

在Cursor编辑器上部署MCP(Minecraft Coder Pack)完整指南

MCP&#xff08;Minecraft Coder Pack&#xff09;是用于反编译和修改Minecraft Java版代码的工具包。本教程将详细介绍如何在Cursor编辑器中配置和运行MCP&#xff0c;以便高效地进行Minecraft模组开发或代码研究。 1. 准备工作 1.1 所需工具 Cursor编辑器&#xff08;基于VS…...

STM32——相关软件安装

本文是根据江协科技提供的教学视频所写&#xff0c;旨在便于日后复习&#xff0c;同时供学习嵌入式的朋友们参考&#xff0c;文中涉及到的所有资料也均来源于江协科技&#xff08;资料下载&#xff09;。 Keil5 MDK安装 1.安装Keil5 MDK2.安装器件支持包方法一&#xff1a;离线…...

蓝牙WiFi模组rtl8821cs在Android14调

环境 SDK: AOSP14 主控&#xff1a;RK3576 蓝牙&#xff1a;RTL8821CS 先记一下官网文档关于蓝牙的资料 蓝牙 | Android Open Source Project 还在调&#xff0c;先看看啥情况&#xff0c;点赞多或者想起来记录再回来 TODO...

MCP实践第一步--磕磕碰碰搭环境

由于deepseek-r1不支持function calling&#xff0c;所以我们采用了deepseek-v3进行实践&#xff0c;模型名称为deepseek-chat&#xff0c;在deepseek官网获取api-key。 一、参照MCP官网设置环境 创建项目目录 uv init mcp-client # 若没有uv&#xff0c;则先通过pip instal…...

Java并发:线程池

目录 一、核心概念与设计原理 1、线程池的核心价值 2、核心接口和类 3、线程池的核心构造参数 4、线程池工作流程 二、参数选择 1、任务队列选择 2、拒绝策略选择 3、常见线程池选择 4、参数调优 三、 应用 1、创建建议 2、生命周期管理&#xff1a;优雅关闭 3、…...

Kubernetes集群超配节点容量

目录&#xff1a; 1、节点超配简介2、创建 PriorityClass3、运行请求节点容量的 Pod4、调整占位资源请求5、设置所需的副本数量6、自动扩缩容组件6.1、手动方式6.2、自动方式 1、节点超配简介 节点超配是一种主动预留部分集群计算资源的策略。这种预留有助于减少在扩缩容事件期…...

每日一题(小白)回溯篇7

首先我们可以判断出这是一个dfs的题目&#xff0c;因为简言之就是要求最短路径。其次这个题目与直接找最短路径有所不同&#xff0c;增加了条件必须依次穿过指定的符号。无论坦克走到任何一点都有四个方向可以走&#xff08;越界要判断&#xff09;&#xff0c;结束的条件是到达…...

rk3588上完成halcon的形状模型配准以及和opencv的图像转换

一、准备工作 1&#xff09;安装好halcon&#xff0c;确保halcon的c的调用是正常的 2&#xff09;编译好opencv 上面的两个步骤&#xff0c;均可以参考我的两个博文完成&#xff1a; Halcon在linux及ARM上的安装及c工程化_halcon linux-CSDN博客 RK3588上编译opencv 及基于…...

Spring Boot 断点续传实战:大文件上传不再怕网络中断

精心整理了最新的面试资料和简历模板&#xff0c;有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 一、痛点与挑战 在网络传输大文件&#xff08;如视频、数据集、设计稿&#xff09;时&#xff0c;常面临&#xff1a; 上传中途网络中断需重新开始服务器内…...

Springboot集成websocket实现消息推送

假设有个需求需要多个用户同时在对应的消息面板实时查看相关接口的执行流程进度&#xff0c;此时可以可考虑使用websocket来实现结果进度推送 一、引入websocket依赖&#xff0c;并编写WebSocket配置类 <dependency><groupId>org.springframework.boot</group…...

PostgreSQL 用户资源管理

PostgreSQL 用户资源管理 PostgreSQL 提供了多种机制来管理和限制用户对数据库资源的使用&#xff0c;以下是全面的资源管理方法&#xff1a; 1 连接限制 1.1 限制最大连接数 -- 在 postgresql.conf 中设置 max_connections 100 -- 全局最大连接数-- 为特定用户设置连接限…...

Uniapp:pages.json页面路由

目录 一、pages二、style 一、pages uni-app 通过 pages 节点配置应用由哪些页面组成&#xff0c;pages 节点接收一个数组&#xff0c;数组每个项都是一个对象&#xff0c;其属性值如下&#xff1a; 属性类型默认值描述pathString配置页面路径styleObject配置页面窗口表现nee…...

使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放

👑主页:吾名招财 👓简介:工科学硕,研究方向机器视觉,爱好较广泛… ​💫签名:面朝大海,春暖花开! 使用open3d将pcd点云按照颜色等级分块显示并令其随颜色变化播放 引言显示效果点云获取完整代码引言 有很多时候我们需要更改pcd点云某些区域的颜色,可能是颜色随着点…...