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

MQTT协议详解:物联网通信的轻量级解决方案

MQTT协议详解:物联网通信的轻量级解决方案

在这里插入图片描述

引言

在物联网(IoT)快速发展的今天,设备间高效可靠的通信变得至关重要。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的发布/订阅协议,已成为物联网通信的首选解决方案。本文将深入探讨MQTT的核心概念、工作原理及Python实现示例。

MQTT核心概念

什么是MQTT?

MQTT是一种基于TCP/IP的轻量级消息传输协议,由IBM在1999年开发,最初用于卫星通信和石油管道监控。它具有以下特点:

  • 轻量级:最小报文头仅2字节,适合带宽受限环境
  • 发布/订阅模式:解耦消息发送方与接收方
  • 可靠性保证:提供三种服务质量级别(QoS)
  • 低功耗:适合电池供电设备的长期运行

关键组件

MQTT系统包含三个核心组件:

  1. 发布者(Publisher):消息的生产者,如传感器、监控设备等
  2. 订阅者(Subscriber):消息的消费者,如数据处理应用、控制终端等
  3. 代理(Broker):中心节点,负责接收所有消息并将其分发给订阅对应主题的客户端

主题和消息

  • 主题(Topic):消息的分类标识,使用层次结构组织,如home/kitchen/temperature
  • 通配符:支持+(单层)和#(多层)通配符订阅,如home/+/temperature
  • 消息(Message):通过主题传递的实际数据载荷,格式不限

服务质量(QoS)

MQTT提供三种服务质量级别,平衡可靠性与资源开销:

  1. QoS 0(最多一次):消息可能丢失,适合容忍丢失的场景
  2. QoS 1(至少一次):确保消息到达,但可能重复
  3. QoS 2(恰好一次):保证消息只传递一次,资源开销最大

MQTT特色功能

会话持久性

客户端可以请求服务器在断开连接期间保留其订阅状态,重连后继续接收消息。

遗嘱消息(LWT)

客户端可设置"遗嘱",当异常断开连接时,Broker自动发布此消息通知其他客户端。

保留消息

发布者可标记消息为"保留",Broker会存储该主题最新的保留消息,新订阅者连接时立即接收。

Python实现MQTT通信

下面通过两个Python示例展示MQTT的实际应用:一个发布者和一个订阅者。

发布者实现

发布者定期生成传感器数据并发布到指定主题:

"""
MQTT发布者客户端此程序创建一个MQTT发布者,定期发布传感器数据
"""import paho.mqtt.client as mqtt
import time
import json
import random# 回调函数 - 连接成功时触发
def on_connect(client, userdata, flags, rc):print(f"连接结果: {rc}")if rc == 0:print("已成功连接到MQTT服务器")# 创建发布者客户端
def create_publisher(broker_address="broker.emqx.io", port=1883, topic="sensor/data"):client_id = f"publisher-{random.randint(0, 1000)}"client = mqtt.Client(client_id=client_id)client.on_connect = on_connectprint(f"正在连接到 {broker_address}...")client.connect(broker_address, port, 60)# 开始循环处理网络事件client.loop_start()return client, topic# 模拟传感器数据
def generate_sensor_data():return {"temperature": round(random.uniform(20, 30), 1),"humidity": round(random.uniform(40, 80), 1),"timestamp": time.time()}if __name__ == "__main__":# 配置broker_address = "broker.emqx.io"port = 1883topic = "home/livingroom/sensor"# 创建发布者publisher, topic = create_publisher(broker_address, port, topic)try:# 每隔2秒发布一次数据print(f"开始发布数据到主题: {topic}")while True:sensor_data = generate_sensor_data()payload = json.dumps(sensor_data)print(f"发布消息: {payload}")publisher.publish(topic, payload, qos=1)time.sleep(2)except KeyboardInterrupt:print("程序被用户中断")finally:# 清理publisher.loop_stop()publisher.disconnect()print("发布者已断开连接")

效果如下:
在这里插入图片描述
在这里插入图片描述

订阅者实现

订阅者连接到相同主题并处理收到的消息:

"""
MQTT订阅者客户端此程序创建一个MQTT订阅者,接收并显示传感器数据
"""
import paho.mqtt.client as mqtt
import json
import random# 回调函数 - 连接成功时触发
def on_connect(client, userdata, flags, rc):print(f"连接结果: {rc}")if rc == 0:print("已成功连接到MQTT服务器")# 连接成功后订阅主题client.subscribe(userdata["topic"])print(f"已订阅主题: {userdata['topic']}")# 回调函数 - 收到消息时触发
def on_message(client, userdata, msg):print(f"收到主题 '{msg.topic}' 的消息: {msg.payload.decode()}")try:data = json.loads(msg.payload.decode())print(f"温度: {data['temperature']}°C, 湿度: {data['humidity']}%")except json.JSONDecodeError:print("消息格式不是JSON")except KeyError:print("JSON数据中缺少预期的字段")# 创建订阅者客户端
def create_subscriber(broker_address="broker.emqx.io", port=1883, topic="sensor/data"):client_id = f"subscriber-{random.randint(0, 1000)}"userdata = {"topic": topic}client = mqtt.Client(client_id=client_id, userdata=userdata)client.on_connect = on_connectclient.on_message = on_messageprint(f"正在连接到 {broker_address}...")client.connect(broker_address, port, 60)return clientif __name__ == "__main__":# 配置broker_address = "broker.emqx.io"port = 1883topic = "home/livingroom/sensor"# 创建订阅者subscriber = create_subscriber(broker_address, port, topic)try:print("开始监听消息...")# 开始处理网络事件的循环(阻塞)subscriber.loop_forever()except KeyboardInterrupt:print("程序被用户中断")finally:# 清理subscriber.disconnect()print("订阅者已断开连接")

在这里插入图片描述
在这里插入图片描述

MQTT实际应用场景

MQTT在多种IoT场景中表现出色:

  1. 智能家居:连接各种家用设备,实现远程监控和控制
  2. 工业物联网:监控生产设备和环境参数
  3. 医疗监护:实时收集和传输患者生命体征数据
  4. 远程资产监控:如车队管理、能源基础设施监测
  5. 环境监测:气象站、水质监测、空气质量检测等

MQTT vs. 其他协议

与其他通信协议相比,MQTT具有明显优势:

特性MQTTHTTPCoAP
消息开销很小较大
电池效率
可靠性QoS保证请求/响应确认机制
通信模式发布/订阅请求/响应请求/响应
适用场景低带宽环境网页应用受限设备

MQTT版本比较

目前广泛使用的MQTT版本有:

  • MQTT 3.1.1:2014年成为OASIS标准,大多数设备支持
  • MQTT 5.0:2019年发布,引入了更多功能,如共享订阅、消息过期等

实施MQTT的最佳实践

  1. 合理设计主题层次:避免过深或过浅的结构
  2. 适当选择QoS级别:根据应用需求平衡可靠性与资源消耗
  3. 安全防护:使用TLS加密和用户名/密码认证
  4. 设置合理的keepalive:避免不必要的连接中断
  5. 有效使用客户端ID:确保唯一性,便于管理和故障排查

常见MQTT代理服务器

市场上有多种MQTT代理实现可供选择:

  • Mosquitto:轻量级,适合资源受限环境
  • EMQX:高性能企业级MQTT平台
  • HiveMQ:企业级MQTT代理,支持大规模部署
  • AWS IoT Core:云原生MQTT服务

结论

MQTT凭借其轻量级、低功耗和可靠性,已成为物联网通信的重要协议。通过本文的Python示例,我们看到了MQTT实现发布/订阅通信的简洁性和灵活性。随着物联网的发展,MQTT将继续在设备互联领域发挥关键作用。

无论是智能家居爱好者还是企业级IoT应用开发者,掌握MQTT都将为您的物联网项目提供可靠的通信基础。

相关文章:

MQTT协议详解:物联网通信的轻量级解决方案

MQTT协议详解:物联网通信的轻量级解决方案 引言 在物联网(IoT)快速发展的今天,设备间高效可靠的通信变得至关重要。MQTT(Message Queuing Telemetry Transport)作为一种轻量级的发布/订阅协议,已成为物联网通信的首选解决方案。本文将深入探…...

【时时三省】(C语言基础)使用字符串处理函数

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 在C函数库中提供了一些用来专门处理字符串的函数,使用方便。几乎所有版本的C语言编译系统都提供这些函数。下面介绍几种常用的函数。 ①puts函数 输出字符串的函数 其一般形式…...

工具学习_VirusTotal使用

VirusTotal Intelligence 允许用户在其庞大的数据集中进行搜索,以查找符合特定条件的文件,例如哈希值、杀毒引擎检测结果、元数据信息、提交时的文件名、文件结构特征、文件大小等。可以说,它几乎是恶意软件领域的“谷歌搜索引擎”。 网页使…...

Linux下mysql的安装与远程链接

linux安装mysql 01下载依赖: 找到网址/download下: 最下面MySQL Community(mysql社区版) 选择MySQL Community Server 选择对应的mysql版本 操作系统版本选择 根据操作系统的版本选择具体版本号 下载离线版本 安装包详情 0…...

WebpackVite总结篇与进阶

模块化 Webpack Webpack 入口entry 分离app和第三方库入口 这是什么? 这是告诉 webpack 我们想要配置 2 个单独的入口点(例如上面的示例)。 为什么? 这样你就可以在 vendor.js 中存入未做修改的必要 library 或文件&#xff0…...

数据工具:数据同步工具、数据血缘工具全解析

目录 一、数据同步工具 (一)数据同步工具的定义与基本原理 (二)数据同步工具的类型 (三)数据同步工具的应用场景 二、数据血缘工具 (一)数据血缘工具的定义与作用 &#xff0…...

贪吃蛇游戏排行榜模块开发总结:从数据到视觉的实现

一、项目背景与成果概览 在完成贪吃蛇游戏核心玩法后,本次开发重点聚焦于排行榜系统的实现。该系统具备以下核心特性: 🌐 双数据源支持:本地存储(localStorage)与远程API自由切换 🕒 时间维度统计:日榜/周榜/月榜/全时段数据筛选 🎮 模式区分:闯关模式(关卡进度…...

亚远景-基于ASPICE的汽车供应链质量管控培训

以下是一份基于ASPICE的汽车供应链质量管控培训的介绍: 培训目标 理解ASPICE核心概念:帮助学员全面掌握ASPICE的框架结构、最新版本的更新内容,深入理解过程评估模型和参考模型的实际应用。 提升开发过程成熟度:通过培训&#x…...

【工作记录】Kong Gateway 入门篇之部署及简单测试

Kong Gateway部署 Kong Gateway 可以通过多种方式部署,包括 Docker、Kubernetes、以及直接安装在操作系统上。以下是常见的部署方法: 使用 Docker 部署 安装 Docker 和 Docker Compose。创建一个 docker-compose.yml 文件,内容如下&#x…...

【Qt】之音视频编程1:QtAV的背景和安装篇

QtAV 背景与核心概念 1. 什么是 QtAV? QtAV 是一个基于 Qt 框架 和 FFmpeg 的多媒体播放库,旨在为 Qt 应用程序提供高性能、跨平台的音视频播放、处理及渲染功能。它封装了 FFmpeg 的底层编解码能力,并通过 Qt 的图形系统(如 QM…...

Centos7安装部署wordpress个人博客保姆级教程

目录 关闭防火墙修改yum镜像源安装 php安装mysql安装nginx关闭SELinux配置nginx转发php文件到fpm服务下载wordpress与配置 centos: 7 php:8.1.29 wordpress:6.8.1 nginx:1.26.1 mysql:5.6.51 关闭防火墙 # 停止防火墙 systemctl stop firewalld # 禁止开启启动 systemctl …...

Python-简单网络编程 I

目录 一、UDP 网络程序1. 通信结构图2. Python 代码实现1)服务器端2)客户端 3. 注意 二、TCP 网络程序1. 通信结构图2. Python 代码实现1)服务器端2)客户端 3. 注意 三、文件下载1. PyCharm 程序传参1)图形化界面传参2…...

深入浅出之STL源码分析8_三个指针

引言 在第一篇文章 深入浅出之STL源码分析1_vector基本操作-CSDN博客 中有引出了下面的几个问题 1.刚才我提到了我的编译器版本是g 11.4.0,而我们要讲解的是STL(标准模板库),那么二者之间的关系是什么?STL安装后我们…...

数据结构(七)——图

一、图的定义与基本术语 1.图的定义 图G由顶点集V和边集E组成,记为G(V,E),其中V(G)表示图G中顶点的有限非空集;E(G)表示图G中顶点之间的关系(边)的集合 注意:线性表可以是空表,树可以是空树&…...

养生:打造健康生活的全方位策略

在生活节奏不断加快的当下,养生已成为提升生活质量、维护身心平衡的重要方式。从饮食、运动到睡眠,再到心态调节,各个方面的养生之道共同构建起健康生活的坚实基础。以下为您详细介绍养生的关键要点,助您拥抱健康生活。 饮食养生…...

数据结构(2)线性表-顺序表

知道一个算法的好坏怎么去判断以后,就该正式的去学习一些常见的数据结构,当然,这里的数据结构仅仅是初阶,不会挨个一个一个学完,后期慢慢来。 一、数据结构总论 一般按照逻辑结构和存储结构来分类,在初阶…...

【深度学习-Day 10】机器学习基石:从零入门线性回归与逻辑回归

Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...

芯片:金线的作用

一、金线的核心作用:互联芯片与外部封装 金线(Gold Wire)在芯片制造中主要用于引线键合(Wire Bonding),这是将芯片(Die)与外部封装引脚(Lead Frame或Substrate&#xff…...

Vue3+uniapp 封装axios

1.第一步在项目根目录新建utils文件夹,里边新建两个文件request.js和uni-api-promisify.js 2.request.js 代码 要安装axios import axios from axios import { showToast } from /utils/uni-api-promisify// 创建axios实例 const service axios.create({baseURL:…...

Nacos源码—9.Nacos升级gRPC分析七

大纲 10.gRPC客户端初始化分析 11.gRPC客户端的心跳机制(健康检查) 12.gRPC服务端如何处理客户端的建立连接请求 13.gRPC服务端如何映射各种请求与对应的Handler处理类 14.gRPC简单介绍 10.gRPC客户端初始化分析 (1)gRPC客户端代理初始化的源码 (2)gRPC客户端启动的源码…...

与智能体高效协作:Kimi交互逻辑探索与提示词设计实践【附kimi提示词合集下载】

引言:智能时代的人机协作新范式 在持续使用多款AI助手完成技术文档分析、数据分析等任务后,我逐渐意识到工具效能的核心不仅在于技术参数,更在于使用者对交互逻辑的理解深度。本文将基于实际项目经验,探讨智能体交互的本质规律&a…...

Web 架构之负载均衡会话保持

文章目录 一、引言二、思维导图三、负载均衡会话保持的概念3.1 定义3.2 作用 四、负载均衡会话保持的实现方式4.1 基于 IP 地址原理代码示例(以 Nginx 为例)注释 4.2 基于 Cookie原理代码示例(以 HAProxy 为例)注释 4.3 基于 SSL …...

遨游卫星电话与普通手机有什么区别?

在数字化浪潮席卷全球的今天,通信设备的角色早已超越传统语音工具,成为连接物理世界与数字世界的核心枢纽。然而,当普通手机在都市丛林中游刃有余时,面对偏远地区、危险作业场景的应急通信需求,其局限性便显露无遗。遨…...

【Redis】谈谈Redis的设计

Redis(Remote Dictionary Service)是一个高性能的内存键值数据库,其设计核心是速度、简单性和灵活性。以下从架构、数据结构、持久化、网络模型等方面解析 Redis 的设计实现原理: 1. 核心设计思想 内存优先:数据主要存…...

聊天项目总结

目前项目 完成了个人信息修改,添加好友,创建群聊,添加群聊,在线状态,删除好友,退出群,解散群,好友申请,群资料修改,群管理,群主转让,…...

智能手表整机装配作业指导书(SOP)

📄 智能手表整机装配作业指导书(SOP) 产品名称:Aurora Watch S1 产品型号:AWS1-BG22 版本号:SOP-AWS1-V1.0 编制日期:2025年5月6日 编制单位:制造工程部(ME)…...

c语言第一个小游戏:贪吃蛇小游戏05

贪吃蛇脱缰自动向右走&#xff1a;脱缰的野蛇 #include <curses.h> #include <stdlib.h> struct snake{ int hang; int lie; struct snake *next; }; struct snake *head; struct snake *tail; void initNcurse() { initscr(); keypad(stdscr,1); } int …...

ES6中的解构

在 JavaScript&#xff08;包括 TypeScript&#xff09;中&#xff0c;数组解构和对象解构是 ES6 引入的两个非常实用的语法特性&#xff0c;它们可以帮助我们更方便地从数组或对象中提取数据。 一、数组解构&#xff08;Array Destructuring&#xff09; &#x1f4cc; 基本用…...

Pycharm的终端执行allure命令出现command not found

Pycharm的接口自动化项目用的是venv虚拟环境&#xff0c;已下载和配置好Allure路径&#xff0c;查看Allure版本正常。 问题&#xff1a;在重新打开Pycham的项目时&#xff0c;在Pycharm终端中执行allure相关命令就会报错zsh: allure: command not found 原因&#xff1a;在PyC…...

[ctfshow web入门] web72

信息收集 下载index.php并查看&#xff0c;和上题差不多 error_reporting(0); ini_set(display_errors, 0); // 你们在炫技吗&#xff1f; if(isset($_POST[c])){$c $_POST[c];eval($c);$s ob_get_contents();ob_end_clean();echo preg_replace("/[0-9]|[a-z]/i",…...

【Folium】使用离线地图

文章目录 相关文献离线地图下载Folium 使用离线地图 相关文献 Folium — Folium 0.19.5 documentationOffline Map Maker 离线地图下载 我们使用 Offline Map Maker 进行地图下载。 特别注意&#xff1a;Folium 默认支持 WGS84 坐标系&#xff0c;建议下载 WGS84 坐标系的地…...

嵌入式自学第二十天(5.13)

&#xff08;1&#xff09;线性表顺序存储的优缺点&#xff1a; 优点&#xff1a;无需为表中逻辑关系添加额外存储空间&#xff1b; 可以快速随机访问元素&#xff0c;时间复杂度O(1)。 缺点&#xff1a;插入删除需要移动元素O(n&#xff09;&#xff1b; 无法动态存储。 …...

ThingsBoard3.9.1 MQTT Topic(4)

本章中的主题适用于网关设备。 1.网关订阅设备属性的topic&#xff1a;v1/gateway/attributes/response 订阅后接收到的响应格式。 { "id":3, "device":"m1", "values":{ "version":"V1.2"…...

centos中JDK_PATH 如何设置

在 CentOS 7.9 中设置 JDK_PATH&#xff08;即 JAVA_HOME&#xff09;的步骤如下。JAVA_HOME 是一个环境变量&#xff0c;用于指向 Java 开发工具包&#xff08;JDK&#xff09;的安装路径。 1. 查找 JDK 安装路径 首先&#xff0c;你需要找到 JDK 的安装路径。可以通过以下命…...

一次讲清 FP32 / FP16 / BF16 / INT8 / INT4

一次讲清 FP32 / FP16 / BF16 / INT8 / INT4 目标&#xff1a;让你3 分钟读懂格式原理&#xff0c;5 分钟学会选型。 只记一句&#xff1a;“指数定范围&#xff0c;尾数定精度&#xff1b;位宽定显存&#xff0c;硬件定成本”。 1 | 为什么要有这么多格式&#xff1f; …...

PH热榜 | 2025-05-13

1. FirstQuadrant 标语&#xff1a;通过以人为本的人工智能来最大化B2B销售 介绍&#xff1a;销售人工智能&#xff0c;帮助创始人和收益团队提高效率&#xff0c;保持组织有序&#xff0c;并促成更多交易。它通过简化销售幕后工作&#xff0c;确保每个细节都不会遗漏。 产品…...

java基础-泛型

文章目录 目录 文章目录 前言 一、泛型的作用 1.类型安全 2.通用性 这里再举个例子 二、泛型的实现 1.泛型类 2.泛型接口 3.泛型方法 4.T符号的起源&#xff08;额外&#xff09; 三、泛型擦除 四、泛型通配符 1.上界通配符&#xff08; &#xff09; 为什么用于…...

对抗帕金森:在疾病阴影下,如何重掌生活主动权?

帕金森病&#xff0c;一种影响全球超 1000 万人的神经退行性疾病&#xff0c;正无声地改变着患者的生活轨迹。随着大脑中多巴胺分泌减少&#xff0c;患者逐渐出现肢体震颤、肌肉僵硬、步态迟缓等症状&#xff0c;甚至连扣纽扣、端水杯这类日常动作都变得艰难。更棘手的是&#…...

网络协议与系统架构分析实战:工具与方法全解

网络协议与系统架构分析实战&#xff1a;工具与方法全解 在互联网系统的开发、运维与安全分析中&#xff0c;协议解析与抓包分析是不可或缺的核心技能。本文将系统梳理主流协议解析工具、协议自动识别方案&#xff0c;并结合实际抓包案例&#xff0c;讲解如何还原和推测底层系…...

使用PocketFlow构建Web Search Agent

前言 本文介绍的是PocketFlow的cookbook中的pocketflow-agent部分。 回顾一下PocketFlow的核心架构&#xff1a; 每一个节点的架构&#xff1a; 具体介绍可以看上一篇文章&#xff1a; “Pocket Flow&#xff0c;一个仅用 100 行代码实现的 LLM 框架” 实现效果 这个Web S…...

基于STM32、HAL库的TLV320AIC3204IRHBR音频接口芯片驱动程序设计

一、简介: ADAU1701JSTZ-RL 是一款高性能音频编解码器 (Codec),专为便携式和低功耗应用设计。它集成了 ADC、DAC、麦克风前置放大器、耳机放大器和数字信号处理功能,支持 I2S/PCM 音频接口和 I2C 控制接口,非常适合与 STM32 微控制器配合使用。 二、硬件接口: 典型的 ST…...

轻量级高性能推理引擎MNN 学习笔记 02.MNN主要API

1. MNN 主要API 注意&#xff1a;本学习笔记只介绍了我在学习过程中常用的API &#xff0c;更多MNN API 请参考官方文档。 1.1. 推理时操作流程 创建Interpreter &#xff1a; createFromFile()通过Interpreter创建Session &#xff1a;createSession()设置输入数据: getSes…...

STM32 ADC 模数转换器详解:原理、配置与应用

STM32 ADC 模数转换器详解&#xff1a;原理、配置与应用 在嵌入式系统中&#xff0c;模数转换&#xff08;ADC&#xff09;是实现传感器信号采集、信号处理等任务的关键环节。STM32 微控制器作为一款功能强大的 32 位微控制器&#xff0c;其内置的 ADC 模块为开发者提供了高效…...

18.Excel数据透视表:第1部分创建数据透视表

一 什么是数据透视表 通过万花筒可以用不同的方式査看里面画面图像&#xff0c;在excel中可以将数据透视表看作是对准数据的万花筒&#xff0c;用不同角度去观察数据&#xff0c;也可以旋转数据&#xff0c;对数据进行重新排列&#xff0c;对大量的数据可以快速的汇总和建立交叉…...

AI 模型训练轻量化技术在军事领域的实战应用与技术解析

AI 模型训练轻量化技术在军事领域的实战应用与技术解析 一、引言 在人工智能与军事领域深度融合的当下&#xff0c;AI 模型训练轻量化技术正成为破解战场资源限制的关键钥匙。通过模型压缩、量化、剪枝等核心技术&#xff0c;轻量化模型在算力受限、通信不稳定的复杂战场环境中…...

科学养生,开启健康生活

在快节奏的现代生活中&#xff0c;健康养生成为人们关注的焦点。科学合理的养生方式&#xff0c;无需依赖传统医学理论&#xff0c;也能有效提升生活质量&#xff0c;为身体注入活力。​ 均衡饮食是养生的基础。每天应保证摄入足够的蛋白质、碳水化合物和脂肪&#xff0c;同时…...

高效跨平台文件传输与管理的工具

软件介绍 这款名为 Coolmuster Mobile Transfer 的工具是一款多平台支持的文件传输工具&#xff0c;能高效地在不同设备间进行文件传输与管理。 适用场景 它适用于多种场景&#xff0c;无论是个人文件整理、家庭成员间资料共享&#xff0c;还是企业场景下的工作文件处理&…...

如何优化 Linux 服务器的磁盘 I/O 性能

# 优化 Linux 服务器磁盘 I/O 性能的全面指南 ## 1. 识别 I/O 瓶颈 首先确定是否存在 I/O 瓶颈以及瓶颈位置&#xff1a; bash # 使用 iostat 查看磁盘 I/O 统计 iostat -x 1 # 使用 iotop 查看进程级 I/O 使用情况 iotop # 使用 vmstat 查看系统整体 I/O 情况 vmstat 1 …...

Python基础学习-Day23

目录 基础概念转换器&#xff08;transformer&#xff09;估计器&#xff08;estimator&#xff09;管道&#xff08;pipeline&#xff09; 实例pipeline 基础概念 pipeline在机器学习领域可以翻译为“管道”&#xff0c;也可以翻译为“流水线”&#xff0c;是机器学习中一个重…...

【Ubuntu】扩充磁盘大小

sudo apt-get install gparted 安装完成后&#xff0c;搜索gparted软件&#xff0c;打开gparted 参考...