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

MQTT协议技术详解:深入理解物联网通信基础

MQTT协议技术详解:深入理解物联网通信基础

在这里插入图片描述

1. MQTT协议概述

MQTT (Message Queuing Telemetry Transport) 是一种轻量级的发布/订阅消息传输协议,专为资源受限设备和低带宽、高延迟或不可靠网络环境设计。作为物联网通信的核心协议之一,MQTT通过简单而高效的设计,实现了设备间可靠的异步通信。

2. 核心概念与术语

2.1 客户端(Client)

在MQTT中,客户端是指运行MQTT库并通过网络连接到MQTT服务器的设备或程序。每个客户端都可以:

  • 发布消息到特定主题
  • 订阅感兴趣的主题以接收消息
  • 取消订阅主题
  • 与服务器断开连接

2.2 服务器/代理(Server/Broker)

MQTT代理是协议的核心组件,负责接收来自客户端的所有消息,并将其路由到适当的目标客户端。具体职责包括:

  • 接受客户端连接请求
  • 处理客户端的订阅和取消订阅请求
  • 接收并转发发布的消息
  • 管理会话状态
  • 处理客户端断开连接

2.3 主题(Topic)

MQTT主题是消息路由的关键元素,它以UTF-8字符串形式定义,使用斜杠(/)创建层次结构。例如:

home/livingroom/temperature

主题通配符

  • +:单层通配符,匹配主题层次结构中的一个层级
    • 例:home/+/temperature匹配home/livingroom/temperaturehome/kitchen/temperature
  • #:多层通配符,匹配任意数量的层级,必须位于主题最后
    • 例:home/#匹配home/livingroom/temperaturehome/kitchen/humidity等所有以home/开头的主题

2.4 会话(Session)

MQTT会话表示客户端与代理之间的持久连接状态,包含:

  • 客户端的订阅信息
  • 尚未确认的QoS>0的消息
  • 客户端离线时收到的QoS>0的消息(若开启了持久会话)

2.5 服务质量(QoS)

MQTT定义了三个服务质量等级,用于控制消息传递的可靠性:

  • QoS 0 (最多一次)

    • 消息最多传递一次,不保证到达
    • 无确认机制,“发送后忘记”
    • 最低开销,适用于丢失部分数据可接受的场景
  • QoS 1 (至少一次)

    • 确保消息至少传递一次
    • 使用PUBACK报文确认
    • 可能导致重复消息
    • 中等开销,适用于不能接受数据丢失但可以处理重复的场景
  • QoS 2 (恰好一次)

    • 确保消息恰好传递一次
    • 使用四步握手(PUBLISH, PUBREC, PUBREL, PUBCOMP)
    • 最高开销,适用于对消息传递精确性要求高的场景

2.6 保留消息(Retained Message)

保留消息是一种特殊的MQTT消息,具有以下特性:

  • 代理存储每个主题的最新保留消息
  • 新订阅者连接并订阅该主题时,立即收到最新保留消息
  • 适用于发布设备状态或配置信息等需要持久保存的数据

2.7 遗嘱消息(Will Message)

遗嘱消息是客户端连接到代理时预设的消息,当客户端异常断开连接时自动发布,具有如下特点:

  • 在CONNECT报文中指定主题、内容和QoS
  • 用于通知其他客户端设备离线或断开连接
  • 可设为保留消息,便于新连接的客户端了解其他设备状态

2.8 清除会话(Clean Session)

CONNECT报文中的Clean Session标志用于控制会话状态:

  • 设置为true:代理不保留任何会话信息,所有订阅在断开连接时清除
  • 设置为false:代理保留会话状态,包括订阅和未确认的QoS>0消息

3. MQTT报文结构

MQTT协议定义了多种报文类型,每种报文由固定头部、可变头部和有效载荷组成。

3.1 固定头部(Fixed Header)

出现在所有MQTT报文中,包含:

  • 报文类型(4位)
  • 特定标志(4位)
  • 剩余长度(1-4字节,使用变长编码)

3.2 可变头部(Variable Header)

根据报文类型不同而变化,可能包含:

  • 报文标识符
  • 协议名称和版本
  • 连接标志
  • 保持连接时间等

3.3 有效载荷(Payload)

包含实际传输的数据,根据报文类型可能包含:

  • 消息内容
  • 订阅主题和QoS
  • 客户端标识符等

3.4 主要报文类型

报文类型描述方向
CONNECT客户端请求连接到服务器客户端 → 服务器
CONNACK连接确认服务器 → 客户端
PUBLISH发布消息双向
PUBACKQoS 1发布确认双向
PUBRECQoS 2发布收到(第一步)双向
PUBRELQoS 2发布释放(第二步)双向
PUBCOMPQoS 2发布完成(第三步)双向
SUBSCRIBE订阅请求客户端 → 服务器
SUBACK订阅确认服务器 → 客户端
UNSUBSCRIBE取消订阅请求客户端 → 服务器
UNSUBACK取消订阅确认服务器 → 客户端
PINGREQPING请求客户端 → 服务器
PINGRESPPING响应服务器 → 客户端
DISCONNECT断开连接通知客户端 → 服务器

4. MQTT连接流程

4.1 建立连接

  1. 客户端发送CONNECT报文,包含:

    • 客户端标识符(Client ID)
    • Clean Session标志
    • 用户名和密码(可选)
    • 遗嘱消息设置(可选)
    • Keep Alive间隔
  2. 服务器回复CONNACK报文,包含:

    • 连接确认标志
    • 返回码(成功或失败原因)

4.2 保持连接

  • 客户端必须在Keep Alive间隔内至少发送一个控制报文
  • 如无数据交换,客户端发送PINGREQ
  • 服务器回复PINGRESP维持连接
  • 超时未收到任何报文,服务器关闭连接

4.3 消息发布

  1. 发布者发送PUBLISH报文,包含:

    • 主题名
    • 消息载荷
    • QoS级别
    • 保留标志
  2. 根据QoS级别,可能有后续确认流程:

    • QoS 0:无确认
    • QoS 1:接收方回复PUBACK
    • QoS 2:四步握手确认

4.4 订阅流程

  1. 客户端发送SUBSCRIBE报文,包含:

    • 报文标识符
    • 主题过滤器列表
    • 请求的QoS级别
  2. 服务器回复SUBACK报文,包含:

    • 报文标识符
    • 返回码列表(每个订阅的结果)

4.5 正常断开连接

  1. 客户端发送DISCONNECT报文
  2. 服务器关闭网络连接
  3. 如果设置了Clean Session=false,服务器保留会话状态

5. MQTT版本比较

5.1 MQTT 3.1

最早的标准化版本,由IBM开发。

5.2 MQTT 3.1.1 (2014年OASIS标准)

  • 改进了协议规范的明确性
  • 引入了更详细的错误代码
  • 增强了安全特性

5.3 MQTT 5.0 (2019年OASIS标准)

主要新功能:

  • 会话/消息过期:可设置消息存活时间
  • 主题别名:减少带宽使用
  • 用户属性:支持自定义元数据
  • 共享订阅:支持负载均衡
  • Request/Response模式:支持请求-响应模式
  • 服务器断开连接的原因:更详细的断开原因通知
  • 订阅标识符:追踪消息来源
  • 流量控制:限制并发消息数量

6. MQTT安全性

6.1 传输层安全性

  • TLS/SSL:加密传输数据,防止窃听
  • 证书验证:验证服务器和客户端身份

6.2 认证机制

  • 客户端ID:唯一标识客户端
  • 用户名/密码:基本认证方式
  • X.509证书:双向认证
  • OAuth/JWT:基于令牌的认证

6.3 授权控制

  • 访问控制列表(ACL):限制主题访问权限
  • 细粒度权限:发布/订阅分离控制

7. MQTT在物联网架构中的位置

MQTT在典型的IoT架构中扮演连接层角色:

+---------------+
| 应用层        |  移动应用、Web应用、企业系统
+---------------+
| 处理层        |  数据处理、分析、存储
+---------------+
| 连接层        |  MQTT代理、网关(MQTT在这一层)
+---------------+
| 感知层        |  传感器、设备、执行器
+---------------+

8. 主要MQTT实现

8.1 代理(Broker)实现

  • Eclipse Mosquitto:轻量级开源实现
  • EMQX:高性能、企业级MQTT平台
  • HiveMQ:企业级MQTT代理
  • RabbitMQ:通过插件支持MQTT
  • VerneMQ:基于Erlang的高性能分布式MQTT代理

8.2 客户端库

  • Paho:各种语言的官方MQTT客户端库
  • Eclipse Paho:Java、Python、C/C++、JavaScript等
  • MQTT.js:JavaScript实现
  • MQTT-C:C语言实现
  • mosquitto_pub/sub:命令行工具

9. MQTT最佳实践

9.1 主题设计

  • 使用层次结构设计主题
  • 避免过深或过宽的主题树
  • 保持一致的命名约定
  • 考虑扩展性和兼容性
  • 示例模式:{组织}/{位置}/{设备类型}/{设备ID}/{数据类型}

9.2 QoS选择

  • QoS 0:适用于高频率、非关键数据
  • QoS 1:适用于业务数据,需确保传递
  • QoS 2:适用于关键指令、付款确认等

9.3 客户端ID

  • 使用唯一标识符
  • 避免使用临时随机ID进行持久会话
  • 包含设备类型或位置信息可提高可管理性

9.4 保留消息

  • 用于共享状态和配置
  • 避免过大的保留消息
  • 使用特定主题存储设备状态

9.5 遗嘱消息

  • 用于设备状态监控
  • 设置为保留消息以便新客户端了解状态
  • 包含断开原因和时间戳

9.6 会话管理

  • 短期连接使用Clean Session=true
  • 长期监控设备使用Clean Session=false
  • 注意会话状态占用的资源

10. MQTT诊断和调试

10.1 常见问题

  • 连接断开
  • 消息丢失
  • 性能问题
  • 主题访问权限问题

10.2 调试工具

  • MQTT-Explorer:图形化MQTT客户端
  • mosquitto_sub:命令行订阅工具
  • Wireshark:网络协议分析
  • MQTT.fx:桌面MQTT客户端工具

10.3 性能监控

  • 连接数监控
  • 消息吞吐量
  • 消息延迟
  • 失败率和错误类型

11. MQTT与其他协议对比

特性MQTTHTTPCoAPAMQP
消息模式发布/订阅请求/响应请求/响应点对点和发布/订阅
传输层TCPTCPUDPTCP
消息开销小 (2字节起)
QoS三级确认与重传高级传递保证
适用场景物联网、传感器数据Web应用受限设备企业消息

12. 实际应用案例

12.1 智能家居

  • 灯光控制:home/living/lights/switch
  • 温度监控:home/bedroom/temperature
  • 门锁状态:home/entrance/doorlock/status

12.2 工业物联网

  • 设备状态监控:factory/line1/machine3/status
  • 传感器数据收集:factory/warehouse/sensor1/temperature
  • 远程控制:factory/line2/machine5/command

12.3 车联网

  • 车辆状态:vehicle/ABC123/status
  • 位置跟踪:vehicle/ABC123/location
  • 远程诊断:vehicle/ABC123/diagnostics

13. 未来发展趋势

  • 更紧密集成边缘计算
  • 增强安全机制
  • 与时序数据库和分析平台深度整合
  • 结合AI实现智能消息路由和过滤
  • 扩展到更多受限环境的应用场景

总结

MQTT作为物联网通信的关键协议,通过其轻量级设计和灵活的消息模型,成功地解决了资源受限设备之间的可靠通信问题。深入理解MQTT的核心概念和最佳实践,可以帮助开发者构建更高效、可靠的物联网系统。随着物联网应用的不断扩展,MQTT协议的重要性将持续增长,在设备互联、数据收集与分析等方面发挥关键作用。

相关文章:

MQTT协议技术详解:深入理解物联网通信基础

MQTT协议技术详解:深入理解物联网通信基础 1. MQTT协议概述 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的发布/订阅消息传输协议,专为资源受限设备和低带宽、高延迟或不可靠网络环境设计。作为物联网通信的核心协议之一,MQTT…...

python中的进程锁与线程锁

在Python中,线程和进程使用锁的机制有所不同,需分别通过threading和multiprocessing模块实现。以下是具体用法及注意事项: 一、线程锁(Thread Lock) 基本用法 线程锁用于多线程环境下保护共享资源,防止数据…...

导出导入Excel文件(详解-基于EasyExcel)

前言: 近期由于工作的需要,根据需求需要导出导入Excel模板。于是自学了一下下,在此记录并分享!! EasyExcel: 首先我要在这里非常感谢阿里的大佬们!封装这么好用的Excel相关的API,真…...

仿正点原子驱动BMP280气压传感器实例

文章目录 前言 一、寄存器头文件定义 二、设备树文件中添加节点 三、驱动文件编写 四、编写驱动测试文件并编译测试 总结 前言 本文驱动开发仿照正点原子的iic驱动实现,同时附上bmp280的数据手册,可访问下面的链接: BMP280_Bosch(博世…...

Java 反射机制(Reflection)

一、理论说明 1. 反射的定义 Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为 Jav…...

每日Prompt:发光线条解剖图

提示词 一幅数字插画,描绘了一个 [SUBJECT],其结构由一组发光、干净且纯净的蓝色线条勾勒而成。画面设定在深色背景之上,以突出 [SUBJECT] 的形态与特征。某个特定部位,如 [PART],通过红色光晕加以强调,以…...

从新手到高手:全面解析 AI 时代的「魔法咒语」——Prompt

引言:AI 时代的「语言炼金术」 在人工智能技术突飞猛进的今天,我们正在经历一场堪比工业革命的生产力变革。从聊天机器人到图像生成,从数据分析到自动化写作,AI 模型正在重塑人类与信息交互的方式。而在这一切背后,隐…...

【SpringBoot】集成kafka之生产者、消费者、幂等性处理和消息积压

目录 配置文件 application.properties启动类 ApplicationKafka 配置Message 消息实体类MessageRepository 消息处理消息积压监控服务Kafka消息消费者服务Kafka消息生产者服务API控制器提供测试接口关键特性说明生产环境建议 配置文件 application.properties # 应用配置 serv…...

[SAP] 通过事务码Tcode获取程序名

如何通过事务码查找对应的程序名? 方法一:直接运行事务码,跳转至功能详情页面,点击【系统】|【状态】即可获取对应事务码的程序名 从上面可以了解到自定义的事务码"ZMM01"对应的程序名为"ZYT36_ZMM001_01"&a…...

蓝桥杯12届国B 纯质数

题目描述 如果一个正整数只有 1 和它本身两个约数,则称为一个质数(又称素数)。 前几个质数是:2,3,5,7,11,13,17,19,23,29,31,37,⋅⋅⋅ 。 如果一个质数的所有十进制数位都是质数,我们称它为纯质数。例如&#xff1…...

国产大模型「五强争霸」,决战AGI!

来源 | 新智元 DeepSeek的横空出世,已经彻底改变了全球的AI局势。 从此,不仅中美大模型竞争格局改变,国产大模型的产业版图,也被一举打破! 纵观中国基础大模型的市场,可以看到,如今的基础大模…...

C++修炼:继承

Hello大家好&#xff01;很高兴我们又见面啦&#xff01;给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 我的博客&#xff1a;<但凡. 我的专栏&#xff1a;《编程之路》、《数据结构与算法之美》、《题海拾贝》、《C修炼之路》 欢迎点赞&#xff0c;关注&am…...

Mysql新增

插入一个记录需要的时间由下列因素组成&#xff0c;其中的数字表示大约比例&#xff1a; 连接&#xff1a;(3)发送查询给服务器&#xff1a;(2)分析查询&#xff1a;(2)插入记录&#xff1a;&#xff08;1x记录大小&#xff09;插入索引&#xff1a;&#xff08;1x索引&#x…...

华秋2025电子设计与制造技术研讨会(华东站)成功举办!

“探索科技前沿&#xff0c;共筑创新未来”——华秋“2025电子设计与制造技术研讨会第一站&#xff1a;华东站”在江苏苏州圆满落幕。 随着电子信息产业的持续增长和数字化经济的加速转型&#xff0c;数字化电子供应链的作用愈发显著。本届研讨聚焦EDA设计、DFM软件分析、多层…...

[学习] RTKLib详解:qzslex.c、rcvraw.c与solution.c

RTKLib详解&#xff1a;qzslex.c、rcvraw.c与solution.c 本文是 RTKLlib详解 系列文章的一篇&#xff0c;目前该系列文章还在持续总结写作中&#xff0c;以发表的如下&#xff0c;有兴趣的可以翻阅。 [学习] RTKlib详解&#xff1a;功能、工具与源码结构解析 [学习]RTKLib详解…...

【Ubuntu】neovim Lazyvim安装与卸载

安装neovim # 下载 AppImage wget https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.appimage# 添加执行权限 chmod ux nvim-linux-x86_64.appimage# 移动到系统路径&#xff0c;重命名为 nvim sudo mv nvim-linux-x86_64.appimage /usr/local/b…...

数据结构(一) 绪论

一. 时间复杂度: (1)定义: 时间复杂度是衡量算法执行时间随输入规模(通常用n表示)增长的变化趋势的指标,时间复杂度用O符号表示 用于描述算法在最坏情况下或平均情况下的时间需求 时间复杂度关注的是操作次数的增长率&#xff0c;而非具体执行时间 常见的时间复杂度由小到大依次…...

数据库事务并发问题

目录 脏读 幻读 不可重复读 三者的区别 脏读、幻读和不可重复读是在数据库并发操作中可能出现的问题&#xff0c;以下是对它们的详细介绍&#xff1a; 脏读 定义&#xff1a;指一个事务读取了另一个未提交事务修改的数据。示例&#xff1a;事务 A 修改了一条数据&#xf…...

Android之横向滑动列表

文章目录 前言一、效果图二、使用步骤1.xml布局2.代码3.HomeHxBean3.adapter4.item布局5.两个drawable 总结 前言 横向滑动列表有多种实现方式&#xff0c;也可以用tablayout&#xff0c;也可以用recyclerview&#xff0c;今天主要介绍recyclerview。 一、效果图 二、使用步骤…...

系统稳定性之上线三板斧

&#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、《Java项目实战——深入理解大型互联网企业通用技术》&#xff08;基础篇&#xff09;、&#xff08;进阶篇&#xff09;、&#xff08;架构篇&#xff09;清华大学出版社签约作家、Java领域优质创作者、CSDN博客专家、…...

aardio - godking.vlistEx.listbar + win.ui.tabs 实现多标签多页面切换

方法一&#xff1a; import win.ui; import godking.vlistEx.listbar; import fonts.fontAwesome; /*DSG{{*/ mainForm win.form(text"vlistEx - table adapter";right895;bottom503) mainForm.add({ custom{cls"custom";text"自定义控件";lef…...

鸿蒙 核心与非核心装饰器

HarmonyOS NEXT 版本中完整的 ArkTS 装饰器分类整理&#xff08;含核心与非核心装饰器&#xff0c;已剔除废弃特性&#xff09; 一、核心装饰器&#xff08;Essential Decorators&#xff09; 1. 组件基础 装饰器功能Entry应用入口组件&#xff0c;每个模块必须且仅有一个&am…...

TypeScript 知识框架

一、TypeScript 基础 1. 类型系统 基本类型: number, string, boolean, null, undefined, symbol, bigint 引用类型: object, array, function, class 特殊类型: any, unknown, void, never 类型推断与类型注解 类型断言 (as 语法和 <Type> 语法) 2. 接口与类型别名 接口…...

web-ui开源程序是建立在浏览器使用的基础上,旨在使 AI 代理可以访问网站

​一、软件介绍 文末提供程序和源码下载 web-ui开源程序是建立在浏览器使用的基础上&#xff0c;旨在使 AI 代理可以访问网站。WebUI&#xff1a;基于 Gradio 构建&#xff0c;支持大部分 browser-use 功能。此 UI 设计为用户友好型&#xff0c;并支持与浏览器代理轻松交互。扩…...

【ns3】TCP三次握手源码解析

文章目录 TCP三次握手过程三次握手源码 TCP三次握手过程 三次握手源码 下面是ns3里三次握手整体过程的源码&#xff0c;和上面图解一一对应&#xff1a; TCP socket的状态枚举&#xff1a; 整体过程&#xff1a; 客户端首先connect&#xff1a;tcp-socket-base::connect调用Do…...

【YOLO模型】参数全面解读

使用YOLO模型时&#xff0c;需要调节各种参数&#xff0c;网络文章和官方文档有点不方便&#xff0c;整理了下面的内容备用&#xff1a; 获取最全最新的参数列表: Ultralytics官方文档: 这是获取YOLOv11&#xff08;以及YOLOv8等&#xff09;最权威、最详细参数信息的地方。通…...

跨境电商定价革命:亚马逊“逆向提价“策略背后的价值重构逻辑

导言&#xff1a;打破价格魔咒的销量奇迹 2024年Q3亚马逊平台上演商业悖论&#xff1a;在TOP5000卖家中&#xff0c;12%实施5%-15%温和提价的商户&#xff0c;41%实现单量30.4%的季度增长。这一现象颠覆"低价即流量"的电商铁律&#xff0c;揭开新消费时代"价值定…...

Kafka、RabbitMQ、RocketMQ的区别

以下是 RabbitMQ、RocketMQ、Kafka 的核心区别对比&#xff1a; 一、架构设计差异 ‌Kafka‌ 基于分布式日志的发布-订阅模型&#xff0c;通过分区&#xff08;Partition&#xff09;实现水平扩展&#xff0c;依赖 ZooKeeper 管理集群消费者通过消费者组&#xff08;Consumer G…...

win10 局域网内聊天

在 Windows 10 的局域网 中&#xff0c;如果你想实现 多个用户之间的聊天功能&#xff0c;可以选择以下几种方案&#xff0c;取决于你需要的是&#xff1a; • ✅ 命令行纯文字聊天&#xff08;如 Linux talk&#xff09; • ✅ 图形界面聊天室 • ✅ 局域网广播消息 • ✅ 多人…...

【前端三剑客】Ajax技术实现前端开发

目录 一、原生AJAX 1.1AJAX 简介 1.2XML 简介 1.3AJAX 的特点 1.3.1AJAX 的优点 1.3.2AJAX 的缺点 1.4AJAX 的使用 1.4.1核心对象 1.4.2使用步骤 1.4.3解决IE 缓存问题 1.4.4AJAX 请求状态 二、jQuery 中的AJAX 2.1 get 请求 2.2 post 请求 三、跨域 3.1同源策略…...

论文学习_Trex: Learning Execution Semantics from Micro-Traces for Binary Similarity

摘要&#xff1a;检测语义相似的函数在漏洞发现、恶意软件分析及取证等安全领域至关重要&#xff0c;但该任务面临实现差异大、跨架构、多编译优化及混淆等挑战。现有方法多依赖语法特征&#xff0c;难以捕捉函数的执行语义。对此&#xff0c;TREX 提出了一种基于迁移学习的框架…...

数据压缩的概念和优缺点

一、数据压缩的概念 数据压缩是通过特定算法&#xff08;压缩算法&#xff09;对数据进行重新编码&#xff0c;以减少数据存储空间或传输带宽的技术。其核心目标是在不丢失关键信息&#xff08;或允许一定程度信息损失&#xff09;的前提下&#xff0c;降低数据量&#xff0c;…...

spaCy基础入门

spaCy 概览说明 spaCy 是一个现代、快速、工业级 NLP 工具库&#xff0c;专门为实际工程应用设计&#xff0c;提供&#xff1a; • 分词&#xff08;Tokenization&#xff09; • 词性标注&#xff08;POS Tagging&#xff09; • 命名实体识别&#xff08;NER&#xff09; •…...

vue3项目创建-配置-elementPlus导入-路由自动导入

目录 方法一&#xff1a;create-vue 方法二 &#xff1a;Vite Vue Vite.config.ts配置 引入element-plus 安装 如何在项目中使用 Element Plus 完整引入 按需导入 vue3vite中自动配置路由的神器&#xff1a;vite-plugin-pages 1. 安装 2、修改vite.config.js中配置…...

2025年的电脑能装win7吗_2025年组装电脑装win7详细图文教程

2025年的电脑能装win7吗&#xff1f;2025年的电脑可以安装Win7&#xff0c;但存在一些限制和挑战。2025年的电脑基本上是14代和15代处理器&#xff0c;需要特定的条件和步骤才能安装win7&#xff0c;并且只能采用独立显卡&#xff0c;因为没有集成显卡驱动。另外注意目前2025年…...

windowsC++操作ADB

文章目录 一、ADB基础1. 工作原理2. 安装与配置 二、常用ADB指令分类1. 设备连接与管理2. 文件传输3. 应用管理4. 设备交互5. 系统信息6. 日志与调试7. 网络与端口转发 三、高级用法1. 多设备管理2. 无线ADB连接3. 批量执行命令4. ADB脚本示例 四、常见问题与解决方案五、注意事…...

Springboot实现重试机制

背景 研发工作中时常遇到要和其他服务对接&#xff0c;依赖对方能力的情况&#xff0c;最恶心的是对方提供的服务不稳定&#xff0c;时灵时不灵的&#xff0c;进而影响到自己功能的稳定性。万一发生了这种事&#xff0c;做为研发&#xff0c;咱该怎么办&#xff1f;通过容错直接…...

CS内网渗透 ----【内网渗透实战】PsExec vs Telnet:建立IPC通道实现横向移动与域控上线全解析

目录 1. 什么是 PsExec&#xff1f; 2. 什么是 Telnet&#xff1f; 3. PsExec 与 Telnet 的区别及优势 3.1 主要区别 3.2 内网渗透中的优势 4. 实际案例 —— 使用 PsExec 上线域控主机 案例背景 操作步骤 案例效果 5. 总结 利用 PsExec 建立 IPC 通道 —— IPC 的定…...

第二十三天打卡

作业&#xff1a; 整理下全部逻辑的先后顺序&#xff0c;看看能不能制作出适合所有机器学习的通用pipeline 数据预处理 → 特征选择 → 降维 → 模型训练 import pandas as pd import numpy as np from sklearn.model_selection import train_test_split, GridSearchCV from sk…...

aardio - 将文本生成CSS格式显示

import win.ui; /*DSG{{*/ var winform win.form(text"aardio form";right759;bottom469) winform.add( button{cls"button";text"Button";left340;top130;right430;bottom180;z3}; edit{cls"edit";text"我是一串文本";lef…...

【漫话机器学习系列】256.用 k-NN 填补缺失值

用 k-NN 填补缺失值&#xff1a;原理、实现与应用 在实际的数据科学项目中&#xff0c;我们经常会遇到数据缺失&#xff08;Missing Values&#xff09;的问题。缺失值如果处理不当&#xff0c;不仅会影响模型训练&#xff0c;还可能导致最终结果偏差。 今天&#xff0c;我们…...

tomcat与nginx之间实现多级代理

准备工作 准备5台虚拟主机&#xff1b;至少准备3台虚拟主机&#xff1b; 设备1作为代理服务器&#xff1b;设备2与设备4作为处理静态资源请求服务器&#xff08;使用nginx&#xff09;&#xff1b;设备3与设备5作为处理动态资源服务器&#xff08;使用tomcat&#xff09; 设…...

商业航天运动控制系统中的高可靠性芯片解决方案:挑战、策略与应用研究

摘要&#xff1a;随着商业航天领域的迅速发展&#xff0c;运动控制系统对芯片的可靠性提出了前所未有的挑战。本文深入探讨了商业航天运动控制系统中芯片可靠性面临的挑战&#xff0c;包括宇宙辐射效应、极端环境适应性及系统级可靠性保障等。同时&#xff0c;通过案例研究展示…...

[Java实战]Spring Boot 3 整合 Ehcache 3(十九)

[Java实战]Spring Boot 3 整合 Ehcache 3&#xff08;十九&#xff09; 引言 在微服务和高并发场景下&#xff0c;缓存是提升系统性能的关键技术之一。Ehcache 作为 Java 生态中成熟的内存缓存框架&#xff0c;其 3.x 版本在性能、功能和易用性上均有显著提升。本文将详细介绍…...

【Flask全栈开发指南】从零构建企业级Web应用

目录 &#x1f31f; 前言&#x1f3d7;️ 技术背景与价值&#x1f6a7; 当前技术痛点&#x1f6e0;️ 解决方案概述&#x1f465; 目标读者说明 &#x1f50d; 一、技术原理剖析&#x1f4ca; 核心概念图解&#x1f4a1; 核心作用讲解&#x1f9e9; 关键技术模块说明⚖️ 技术选…...

使用docker安装clickhouse集群

1、简介 clickhouse 作为大数据场景中&#xff0c;实现快速检索的常用列式存储数据库&#xff0c;采用物理机部署&#xff0c;会在数据量大的场景中&#xff0c;物理机器存储达到阈值需要扩容&#xff0c;会带来比较大的问题&#xff0c;因此&#xff0c;使用docker部署clickho…...

佰力博科技准静态d33测试的注意事项

准静态d33测试是测量压电材料纵向压电应变常数的重要方法&#xff0c;其注意事项包括以下几个方面&#xff1a; 选择合适的测量设备 准静态d33测试需要使用专用的压电测试仪&#xff0c;如佰力博PEAI1000高精度压电分析仪、准静态d33测量仪或PCA1000压电陶瓷综合参数分析仪。这…...

iOS设备投屏Archlinux

我的iphone手机屏太小&#xff0c;我想把手机投到archlinux电脑上看。与是我就想找一个免费的软件。 UxPlay https://github.com/FDH2/UxPlay GPLv3&#xff0c;开源。原来只支持 AirPlay Mirror 协议&#xff0c;现在新增 支持来自 AirPlay 的纯音频 &#xff08;Apple Los…...

VUE_UI组件的二次封装

属性和事件 <template><div><myInput a"1" b"2" c"3" change"() > {}"></myInput></div> </template>myInput.vue <template><div><el-input v-bind"$attrs">&…...

算法·KMP

KMP算法的思想 想要一次性遍历模板串 s 1 s_1 s1​&#xff0c;不在匹配失败时重新开始遍历子串 s 2 s_2 s2​&#xff0c;实现模板串不回退的效果。 KMP数组的理解 KMP数组有两种定义&#xff1a;一是匹配失败后&#xff0c;子串 s 2 s_2 s2​应该回退的位置&#xff0c;一种…...