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

理解阿里云的MQTT

一、阿里云的mqtt分几种

阿里云提供的MQTT服务主要分为‌标准MQTT协议‌和‌P2P模式MQTT‌两种类型,二者在通信模式及适用场景上有显著差异:


1、标准MQTT与P2P MQTT的区别

特性标准MQTTP2P模式MQTT
通信模式发布/订阅(Pub/Sub)模式 点对点直接通信模式 
Topic管理需预先约定Topic,发布者和订阅者必须匹配主题 发送方直接指定接收方的Client ID作为三级Topic,无需预先约定 3
订阅依赖接收者需提前订阅Topic才能接收消息 接收者无需订阅即可接收消息 
适用场景一对多广播、传感器数据采集等 设备间直接通信、控制指令下发等 

2、阿里云MQTT的其他分类

  1. MQTT 3.1.1与MQTT 5.0
    阿里云支持MQTT 3.1.1标准协议,并部分兼容MQTT 5.0特性(如会话过期、原因码等),但不完全支持所有MQTT 5.0功能(如不支持QoS 2)。

  2. 企业级扩展特性

    • RRPC同步模式‌:在标准Topic基础上支持同步调用,服务器可实时获取设备响应结果 7。
    • 服务质量(QoS)‌:支持QoS 0(最多一次)和QoS 1(至少一次),不支持QoS 2(仅一次)。
    • 安全机制‌:通过ClientID、Username、Password验证客户端身份 。

3、其他MQTT协议变种

  • MQTT-SN‌:专为低功耗嵌入式设备设计的简化版协议,适用于ZigBee等非TCP/IP网络 。
  • 私有协议扩展‌:部分厂商基于MQTT协议定制私有功能(如阿里云的P2P模式)。

总结

阿里云通过标准MQTT协议满足通用物联网场景需求,而P2P模式优化了点对点通信流程,降低了订阅成本。实际选择时需根据业务是否需要广播、实时性或设备间直接交互等需求决定模式

二、理解MQTT的两种模式区别

MQTT的两种模式可以类比日常生活中的通信方式:

1. 标准MQTT(Pub/Sub模式)—— 像微信群聊

  • 通信方式‌:就像在微信群里发消息,你(发布者)发送到特定Topic(群名),所有订阅该Topic的设备(群成员)都能收到消息 。
  • 代码特点‌:需要显式订阅Topic才能接收消息,类似必须先加群才能看消息:

csharpCopy Code

// 订阅Topic示例(MQTTnet库) await mqttClient.SubscribeAsync("home/livingroom/temperature");

  • 适用场景‌:传感器数据广播(如温度上报)、一对多通知 。

2. P2P模式MQTT—— 像微信私聊

  • 通信方式‌:直接指定目标设备的ClientID(类似微信号),消息直达对方,不需要中间Topic 。
  • 代码特点‌:用三级Topic隐式指定接收方,无需提前订阅:

csharpCopy Code

// P2P发送示例(阿里云规范) await mqttClient.PublishAsync($"p2p/{targetClientId}/command", "关机");

  • 适用场景‌:设备控制指令(如开关灯)、双向实时通信 。

核心区别总结表‌:

对比项标准MQTTP2P模式MQTT
通信效率群发,可能有冗余消息点对点,精准投递
开发复杂度需维护Topic订阅关系直接指定ClientID更直观
网络开销订阅者越多带宽消耗越大固定单路通信流量

建议在C#项目中用MQTTnet库时,标准模式用SubscribeAsync/PublishAsync,P2P模式则遵循云平台的特殊Topic规则

三、无人值守智能购物柜适用哪种模式

建议采用‌标准MQTT与P2P模式混合部署‌的方案。

以下为具体依据及行业案例:


①、核心场景适配性分析

1. ‌标准MQTT适用场景
  • 实时库存同步
    所有智能柜的库存变动数据(如商品取出、补货)需实时上报至中央管理系统,采用发布/订阅模式可实现多系统(ERP、区域库存监控)同时接收数据。
    示例代码(库存数据广播):

    csharpCopy Code

    // C#发布示例(MQTTnet库) await mqttClient.PublishAsync("smart_locker/inventory/region01", jsonData);

  • 促销信息推送
    需要向所有智能柜批量下发促销策略(如折扣、满减),通过订阅promotion/broadcast主题实现一对多广播。

2. ‌P2P MQTT适用场景
  • 精准柜门控制
    用户扫码后需立即触发指定柜门开启,通过P2P模式直接发送指令到目标设备ClientID(如p2p/locker_001/open),避免因订阅延迟导致响应滞后。
    示例代码(柜门控制):

    csharpCopy Code

    // C# P2P指令发送 await mqttClient.PublishAsync($"p2p/{targetLockerID}/open", "unlock");

  • 故障告警直达
    单个柜体发生异常(如断电、网络中断)时,告警消息直接推送至运维人员终端,无需预先订阅告警Topic。


②、混合部署方案优势

维度标准MQTTP2P MQTT混合价值
实时性批量数据同步(1-3秒级)设备控制指令(<500ms)同时满足运营监控与用户体验
运维成本统一Topic管理,降低维护复杂度减少订阅关系维护,避免Topic爆炸按场景选择模式,优化资源消耗
容错能力QoS 1保障数据不丢失消息直达降低链路依赖关键操作(如支付)双重保障

③、行业成功案例参考

  1. 农夫山泉智能售卖机

    • 标准MQTT应用‌:全国3万台设备通过/sales_data主题每小时上报销量数据,用于动态补货决策。
    • P2P模式应用‌:设备故障时直接推送维修工单至属地工程师APP(ClientID绑定地理围栏)。
  2. 可口可乐无人柜(东南亚市场)

    • 混合架构节省30%带宽成本:促销信息广播用标准MQTT(QoS 0),支付完成指令用P2P模式(QoS 1)。
  3. 7-Eleven智能冷藏柜(日本试点)

    • P2P实现柜温异常实时控制:温度超标时直接下发制冷指令,响应速度比传统轮询模式提升5倍。

④、实施建议

  1. 协议层
    • 使用阿里云IoT平台等支持双模式的服务商,自动处理底层协议转换。
  2. 安全策略
    • 标准MQTT通道启用TLS加密传输业务数据,P2P通道增加设备指纹验证。
  3. 灰度验证
    • 先在小规模设备群测试P2P指令成功率(建议>99.9%),再逐步推广。

混合方案已在零售行业验证为最优解,既能发挥标准MQTT的广播优势,又能通过P2P实现关键操作的低延迟直达

四、注意事项

根据阿里云MQTT服务对通配符订阅的规则约束,100个节点的通配符使用需遵循以下关键限制及规避方案:


一、通配符订阅核心限制

限制类型约束值触发场景规避建议
单父级Topic通配订阅数量≤100个有效订阅 同一父级Topic下的通配符订阅总数超过100时,仅保留前100个有效 合并订阅层级(如用group1/#替代多个子级订阅)
通配符层级深度建议≤7层 深层订阅(如a/b/c/d/e/f/g/#)影响路由效率 采用扁平化结构(如region/lockerID/status
轻量版实例支持性完全禁用通配符 使用轻量版实例时所有通配符订阅失效 升级至标准版或铂金版实例 

二、100节点场景操作示例

1. ‌错误设计(触发限制)

csharpCopy Code

// 错误:同一父级Topic下创建101个通配符订阅(超过100上限)

for (int i=1; i<=101; i++) {

await mqttClient.SubscribeAsync($"lockers/area1/shelf{i}/#"); // 每个shelf创建独立通配符订阅 }

后果‌:第101个订阅将被丢弃,对应节点无法接收消息 2

2. ‌优化方案(合规设计)

csharpCopy Code

// 正确:合并订阅层级至父级Topic

await mqttClient.SubscribeAsync("lockers/area1/#"); // 单通配符覆盖所有子节点

优势‌:仅占用1个通配符订阅配额,可扩展至1000+节点 36


三、扩展容量方案

  1. 实例规格升级

    • 铂金版实例支持定制通配符订阅数量上限(需联系技术支持调整)1
    • 标准版建议单个父级Topic下通配符订阅不超过50个以保证稳定性 2
  2. Topic拆分策略

    • 按区域划分父级Topic(不同父级各自计数):

      bashCopy Code

      lockers/regionA/# # 占用1个配额 lockers/regionB/# # 另一个配额

    • 通过业务维度隔离(如按功能类型拆分):

      bashCopy Code

      inventory/# # 库存类订阅 payment/# # 支付类订阅


四、运维监控要点

  • 订阅关系查询‌:通过阿里云控制台Topic订阅关系面板实时监测各父级Topic下的通配符数量 2
  • 告警配置‌:设置订阅数超过80时触发告警(预留扩容缓冲期)1

注:极端情况下如需超100订阅,建议采用共享订阅模式($share/group/topic)分散负载 3,但需注意消息去重逻辑实现

五、用个例子理解“单父级Topic通配订阅数量

用一个快递站的例子来解释这个限制:

假设你开了一个快递站(父级Topic),有200个快递柜(子级订阅)。

阿里云规定:

  1. 每个快递站最多只能装100个智能快递柜(通配符订阅上限)
  2. 如果你强行安装第101个柜子,系统会自动拆掉多装的柜子(仅保留前100个有效)

具体表现:

  • 错误做法:给每个快递柜单独开监控(/station/柜号1/station/柜号2...到/station/柜号101
    结果:第101号柜的监控画面会黑屏(订阅失效)

  • 正确做法:在快递站门口装一个总监控(/station/#),通过这一个监控就能看到所有柜子
    好处:只用掉1个名额,还能监控无限个柜子

这就好比学校广播:

  • 笨方法:给每个班级单独拉广播线(很快超过100条线限制)
  • 聪明方法:全校共用1条广播线路(/school/#),通过内容区分班级

六、快递站监控案例详解(MQTT订阅限制)核心区别说明

通配符订阅(/station/#)‌

相当于在快递站门口安装1个万能监控探头,该探头通过模式匹配可看到‌所有柜子‌(包括未来新增的),只消耗1个订阅名额‌

逐个订阅(/station/+)‌

相当于给每个快递柜单独安装监控探头,每新增1个柜子就需要新增1个探头,每个柜号都独立消耗订阅名额‌(超过100即失效)

技术本质差异
订阅方式资源消耗扩展性匹配规则
/station/#1个名额无限制匹配station下的所有层级
/station/+N个名额≤100需明确指定每个柜号路径
常见误区澄清
  • /station/柜号%不是标准MQTT通配符(正确单层通配符应为/station/+
  • 阿里云的限制是针对‌相同父路径下的独立订阅数‌,通配符订阅不受此限

csharp
Copy Code
// 错误实现(逐个订阅)
for(int i=1; i<=200; i++) {
    mqtt.Subscribe($"/station/{i}"); // 第101个开始失效
}

// 正确实现(通配符订阅)
mqtt.Subscribe("/station/#"); // 永久有效

七、理解MQTT通配符 /station/# 与 /station/+ 的核心区别

1. ‌层级匹配规则
通配符匹配范围示例说明
+单层‌通配符,仅匹配‌一个层级‌的任意字符串/station/+ → 匹配 /station/001,但不匹配 /station/001/status7
#多层‌通配符,匹配‌所有子层级/station/# → 匹配 /station/001/station/001/status等任意深度路径7
2. 实际应用场景对比

场景:快递站监控系统

bashCopy Code

# 使用单层通配符(+) 订阅 Topic:/station/+

可接收:/station/101(柜号层消息)

丢失:/station/101/temperature(子层传感器数据):ml-citation{ref="7" data="citationList"}

# 使用多层通配符(#)

订阅 Topic:/station/#

可接收:/station/101、/station/101/temperature、/station/101/door/lock 等所有层级消息:ml-citation{ref="7" data="citationList"}

3. 订阅限制规避策略

假设场景:

  • 快递站已有200个柜子,每个柜子有多个传感器(如 /station/101/temperature
  • 错误做法‌:逐个订阅 /station/101/station/102... → 超过阿里云单个父级Topic下100订阅限制2
  • 正确做法‌:

    csharpCopy Code

    // C#代码示例:只需1个订阅 mqttClient.Subscribe("station/#"); // 覆盖所有层级,仅消耗1个订阅名额:ml-citation{ref="7" data="citationList"}

4. 常见误区澄清
  • %符号无效‌:MQTT标准中‌没有%通配符(常见于SQL的LIKE语句),正确单层通配符应为+
  • 订阅效率差异‌:

    csharpCopy Code

    // 错误:生成100+独立订阅(易超限)

  • foreach(var id in deviceIds) {

  • mqtt.Subscribe($"station/{id}"); // 每个订阅独立计数:ml-citation{ref="2" data="citationList"} } // 正确:单一通配符覆盖所有设备 mqtt.Subscribe("station/#"); // 统一监听,无视设备数量:ml-citation{ref="7" data="citationList"}

5. 运维验证建议

bashCopy Code

# 测试订阅有效性

mosquitto_sub -t "station/+/temperature" 仅监听柜子温度层

mosquitto_sub -t "station/#"         监听全站所有消息


总结‌:根据业务需求选择通配符。若需监控设备的所有子层级数据(如传感器、状态等),用#;若仅需单层数据(如柜号本身的操作指令),用+;

相关文章:

理解阿里云的MQTT

一、阿里云的mqtt分几种 阿里云提供的MQTT服务主要分为‌标准MQTT协议‌和‌P2P模式MQTT‌两种类型&#xff0c;二者在通信模式及适用场景上有显著差异&#xff1a; 1、标准MQTT与P2P MQTT的区别 ‌特性‌‌标准MQTT‌‌P2P模式MQTT‌‌通信模式‌发布/订阅&#xff08;Pub/S…...

HarmonyOS5云服务技术分享--云缓存快速上手指南

大家好&#xff0c;今天我们来聊聊如何快速上手华为AppGallery Connect&#xff08;AGC&#xff09;的云缓存服务。作为一款基于Serverless架构的Key-Value型缓存服务&#xff0c;它不仅能自动弹性伸缩&#xff0c;还能免去运维烦恼&#xff0c;非常适合高并发场景下的数据快速…...

FreeSWITCH rtcp-mux 测试

rtcp 跟 rtp 占用同一个端口&#xff0c;这就是 rtcp 复用 Fs 呼出是这样的&#xff1a; originate [rtcp_muxtrue][rtcp_audio_interval_msec5000]user/1001 &echo 需要同时指定 rtcp_audio_interval_msec&#xff0c;否则 rtcp_mux 不能生效 Fs 呼入不需要配置&#xf…...

浏览器播放 WebRTC 视频流

源码&#xff08;vue&#xff09; <template><video ref"videoElement" class"video" autoplay muted playsinline></video> </template><script setup lang"ts">import { onBeforeUnmount, onMounted, ref } fr…...

SpringBoot3+Vue3(1)-后端 请求头校验,jwt退出登录,mybaits实现数据库用户校验

1.后端&#xff1a;jwt请求头校验 解析 工具类jwtUtils 解析token 令牌是否过期&#xff0c;验证 正常、异常、运行时错误 倒入工具类是resource 工具类中添加解析用户的方法&#xff1a; 在 在工具类添加id解析 此处调用 添加controller做测试 测试&…...

Oracle RAC 中的 RBAL 进程

Oracle RAC 中的 RBAL 进程 RBAL 进程概述 RBAL&#xff08;ReBalancer&#xff09;是 Oracle RAC 和 ASM&#xff08;Automatic Storage Management&#xff09;环境中的一个关键后台进程&#xff0c;主要负责 ASM 磁盘组的重新平衡操作。 主要功能 磁盘组监控&#xff1a…...

mac上将 Excel 文件的扩展名从 .xls 改为 .xlsx 后,打开时报错:“文件格式或文件扩展名无效”。

方法一&#xff1a;使用 Excel for Mac 打开并另存为 打开 Excel 应用程序。 打开你的 .xls 文件&#xff1a; 如果 Excel 能正常打开它&#xff0c;说明文件没问题。 在菜单栏点击&#xff1a;文件 → 另存为。 在文件格式中选择&#xff1a;Excel 工作簿 (.xlsx)。 点击保存…...

【算法-栈】深入栈模拟题:从题型特征到实现技巧

算法相关知识点可以通过点击以下链接进行学习一起加油&#xff01;双指针滑动窗口二分查找前缀和位运算模拟链表哈希表字符串模拟 在算法学习中&#xff0c;栈是最基础也是最容易上手的数据结构之一。然而&#xff0c;当它被用于模拟复杂操作流程时&#xff0c;却常常成为区分“…...

OK536N-C测评:开箱体验以及在Linux下如何管理开发板

前言 OK536N-C终于到我手上了&#xff0c;因为我的主要领域是做嵌入式音视频。例如相机类产品&#xff0c;录像类产品&#xff0c;直播类产品都是我所涉及到的。本片文章一起来开箱见证下OK536N-C有哪些魅力&#xff0c;据说很强。 对于一个嵌入式领域的开发者来说&#xff0…...

【强化学习】深度强化学习 - Deep Q-Network(DQN)算法

文章目录 摘要一、DQN核心原理1. Q-learning回顾2. 用深度网络逼近Q函数3. 经验回放&#xff08;Experience Replay&#xff09;4. 目标网络&#xff08;Target Network&#xff09;5. 损失函数6. ε-贪心策略&#xff08;ε-greedy&#xff09; 二、算法流程与伪代码三、典型实…...

Python实例题:PyOt实现简易浏览器

目录 Python实例题 题目 代码实现 功能说明 基本浏览功能&#xff1a; 标签页支持&#xff1a; 用户界面&#xff1a; 使用方法 注意事项 Python实例题 题目 PyOt实现简易浏览器 代码实现 import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QT…...

MinerU可视化界面程序部署(Windows环境)

前提是要安装好MinerU&#xff0c;才能部署可视化程序&#xff08;这个可视化程序的源码是MinerU自带的&#xff09;&#xff0c;安装MinerU的步骤参考&#xff1a; MinerU安装(pdf转markdown、json)-CSDN博客 下面进行可视化界面的部署操作&#xff08;在Windows环境部署&…...

STM32之定时器(TIMER)与脉冲宽度调制(PWM)

一、STM32定时器的原理与应用 基本概念 定时器的作用一般是为了使用定时功能和中断功能&#xff08;洗衣机、微波炉、电风扇、智能空调......&#xff09;&#xff0c;当然在STM32中也可以利用定时器产生周期性的脉冲信号来控制不同的外设&#xff08;电机的转速、舵机的角度…...

Linux jq 命令使用详解

简介 jq 是一个命令行 JSON 处理器&#xff0c;允许解析、过滤、转换和格式化 JSON 数据&#xff0c;提取特定字段或重构 JSON&#xff0c;高效使用 JSON 中的 API 或配置文件。 安装 Debian/Ubuntu sudo apt install jqCentOS/RHEL sudo yum install jq或sudo dnf insta…...

【25软考网工】第七章 (2)UOS Linux文件和目录管理、用户和组管理

博客主页&#xff1a;christine-rr-CSDN博客 ​​专栏主页&#xff1a;软考中级网络工程师笔记 ​​​ 大家好&#xff0c;我是christine-rr !目前《软考中级网络工程师》专栏已经更新三十多篇文章了&#xff0c;每篇笔记都包含详细的知识点&#xff0c;希望能帮助到你&#x…...

1.3 C++之变量与数据类型

变量与数据类型教程 目标 理解变量是存储数据的“容器”&#xff0c;数据类型决定容器中能放什么。掌握 int, float, char, bool 的使用。学会声明变量、赋值&#xff0c;定义常量 const。 一、什么是变量&#xff1f; 生活比喻&#xff1a;变量就像“贴了标签的盒子” 盒子…...

SAR ADC 比较器寄生电容对性能的影响

比较器的输入端直接连接CDAC的输出,那比较器的输入端的寄生电容对SAR ADC的性能是否有影响,我们来分析一下。 这是一个单端传统的SAR ADC,SAR ADC 转换只需要采样阶段和转换两个阶段,其中采样阶段一般包含比较器的offset的校正。 采样阶段:接Vin的开关闭合,接Vcom的开关…...

20250520在全志H3平台的Nano Pi NEO CORE开发板上运行Ubuntu Core16.04.3时跑通4G模块EC20

1、h3-sd-friendlycore-xenial-4.14-armhf-20210618.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区&#xff0c;可以使用SD Card Formatter/SDCardFormatterv5_WinE…...

探秘汽车门槛梁内板右后段成型工艺

引言&#xff1a;汽车制造的关键环节 在汽车制造的复杂体系中&#xff0c;每一个零部件都扮演着不可或缺的角色&#xff0c;其中汽车门槛梁内板右后段虽看似平凡&#xff0c;却对汽车的整体性能和安全起着关键作用。它是车身结构的重要组成部分&#xff0c;犹如建筑的基石&…...

阅读笔记---城市计算中用于预测学习的时空图神经网络研究综述

摘要 随着近年来传感技术的进步&#xff0c;智能城市产生并记录了无数的时空数据。预测时空数据的演变模式是城市计算的一个重要而又苛刻的方面&#xff0c;它可以增强各个领域的智能管理决策&#xff0c;包括交通、环境、气候、公共安全、医疗保健等。传统的统计和深度学习方…...

SpringBootDay1|面试题

目录 一、springboot框架 1、什么是springboot 2、Spring Boot的主要优点 3、springboot核心注解 4、定义banner&#xff08;springboot的logo&#xff09; 5、springboot配置文件 6、springboot 整合 jdbc 二、面试题 1&#xff09;springmvc的作用 ​编辑 2&#x…...

PyCharm2025的字体的设置

前言 Pycharm中的字体调节&#xff0c;看起来似乎无足轻重。但是&#xff0c;能从容的调节&#xff0c;也是蛮好的&#xff0c;特别是做程序演示的时候。 当前PyCharm采用的是最新的2025.1.1版本&#xff08;Community&#xff09;,当前的操作系统是Windows。 一、初始状态 …...

【Linux】进程间通信(三):命名管道

&#x1f4dd;前言&#xff1a; 这篇文章我们来讲讲Linux 进程间通信&#xff08;三&#xff09;——命名管道 &#x1f3ac;个人简介&#xff1a;努力学习ing &#x1f4cb;个人专栏&#xff1a;Linux &#x1f380;CSDN主页 愚润求学 &#x1f304;其他专栏&#xff1a;C学习…...

人工智能+:职业技能培训的元命题与能力重构

当“人工智能”成为各行各业的热门命题时&#xff0c;我们似乎跳过了一个更根本的思考&#xff1a;人类究竟需要怎样的AI能力&#xff1f;这个问题不解决&#xff0c;任何技术赋能都可能沦为无本之木。真正的挑战不在于如何应用AI&#xff0c;而在于如何定义人与AI的能力边界—…...

HarmonyOS5云服务技术分享--云存储SDK文章整理

在HarmonyOS ArkTS应用中集成华为云存储SDK指南 大家好呀&#xff01;今天咱们来聊聊如何将华为云存储SDK集成到基于ArkTS&#xff08;API 9-11&#xff09;的HarmonyOS应用中。这篇指南会手把手带你完成从环境准备到代码实现的完整流程&#xff0c;过程中遇到的常见问题也会贴…...

《财务自由之路Ⅱ》理论篇

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 欢迎评论交流&#xff0c;感谢您的阅读&#x1f604;。 目录 引言认知赚钱方式收入与负债都很重要整天工作的人&#xff0c;没有时间赚钱 一些建议做法…...

AI筑基,新质跃升|英码科技亮相华为广东新质生产力创新峰会,发布大模型一体机新品,助力产业智能化转型

5月15日&#xff0c;以“AI筑基&#xff0c;新质跃升”为主题的华为中国行2025广东新质生产力创新峰会在惠州圆满召开。本次峰会聚焦人工智能、算力基础设施等新ICT技术如何驱动“新质生产力”&#xff0c;共探广东高质量发展新路径。英码科技受邀出席本次峰会&#xff0c;并携…...

【C++】C++的拷贝构造函数介绍使用

拷贝构造函数 1.作用示例代码1&#xff1a;拷贝构造函数的调用示例代码2&#xff1a;系统默认的拷贝构造做的事情示例代码3&#xff1a;写法1-4示例代码4&#xff1a;写法5示例代码5&#xff1a;C编译器默认给类提供了4中隐含的方法 2.语法规则示例代码&#xff1a; 3.深拷贝和…...

能管理MySQL、Oracle、达梦数据库的桌面管理软件开源了

能管理MySQL、Oracle、达梦数据库的桌面管理软件开源了 能管理MySQL、Oracle、达梦数据库的桌面管理软件开源了1.项目介绍2. 项目源码开发2.1克隆项目2.2 配置并运行 3.使用3.1添加数据库连接3.2新增表3.3操作表3.4 运行sql 4.总结 能管理MySQL、Oracle、达梦数据库的桌面管理…...

5.20打卡

浙大疏锦行 DAY 31 文件的规范拆分和写法 知识点回顾 1. 规范的文件命名 2. 规范的文件夹管理 3. 机器学习项目的拆分 4. 编码格式和类型注解 作业&#xff1a;尝试针对之前的心脏病项目&#xff0c;准备拆分的项目文件&#xff0c;思考下哪些部分可以未来复用。 预处理&am…...

unity XCharts插件生成曲线图在UICanvas中

【推荐100个unity插件之22】基于UGUI的功能强大的简单易用的Unity数据可视化图表插件——XCharts3.0插件的使用_unity xcharts-CSDN博客...

创建thinkphp项目并配置数据库

配置环境并引入UI ssr模式 使用 composer 命令在指定的目录安装 Thinkphp6.x composer create-project topthink/think tp6demo出现Fatal error: Directive ‘track_errors’ is no longer available in PHP in Unknown on line 0说明你的php版本较高&#xff0c;在php.ini中…...

头歌实践平台:动态NAT配置

第一&#xff1a;打开GNS3&#xff0c;创建名为nat的项目文件 第二&#xff1a;创建网络拓扑结构如下&#xff1a; note:s端口线需要在关闭路由器的情况下双击进入&#xff0c;选配4T端口&#xff08;不要忘记点击OK&#xff09; 第三&#xff1a;打开所有设备&#xff08;所…...

贝叶斯优化+CNN+LSTM=小论文创新点

2周速成小论文可能吗&#xff1f;有点悬&#xff0c;但有可能。今天我就给论文er推荐一个高潜力、易创新、适合速发的小论文选题&#xff1a;贝叶斯优化CNNLSTM&#xff01; 这种“三结合”的优势在于技术成熟度高&#xff08;经典CNN和LSTM&#xff09;、创新点灵活性强&…...

软考中级软件设计师——计算机网络 IP地址与子网掩码相关题型

一、常见题型分类 题型考查重点解题关键子网划分根据需求划分子网&#xff0c;计算网络地址、广播地址、可用主机范围等二进制与十进制转换&#xff0c;子网掩码计算&#xff0c;网络位与主机位划分子网掩码转换CIDR表示法&#xff08;如/24&#xff09;与点分十进制&#xff…...

bi报表是什么意思?如何制作一张bi报表?

目录 一、BI 报表是什么意思&#xff1f; 1. BI 报表的基本概念 2. BI 报表的特点 3. BI 报表的作用 二、制作 BI 报表的前期准备 1. 明确报表的目标和需求 2. 确定数据来源 3. 选择合适的 BI 工具 三、制作 BI 报表的具体步骤 1. 数据收集与整理 2. 数据分析 3. 可…...

vivado fpga程序固化

一般下载到fpga上的程序在掉电之后就会丢失&#xff0c;如果想要掉电之后程序不丢失&#xff0c;就需要将比特流文件固化到板载的flash上。 以下以我的7a100t开发板为例&#xff0c;介绍程序固化的流程 点击OK就可以下载了。...

人生的真谛杂谈

文章目录 自我的哲学奠基自我存在的真实性身体与思想的决定关系自由意志自我的当代解构 三观的意义系统构建世界观&#xff1a;认知世界的根基人生观&#xff1a;生命意义的探索价值观&#xff1a;行为选择的准则三观构建的终极目标 价值的哲学解构价值的本体论价值客观性的形而…...

【Java】继承和多态在 Java 中是怎样实现的?

extends 关键字 class 子类 extends 父类 {... } // 类继承是单继承父类的哪些成员被继承 ? 访问修饰符 public 和 protected 修饰的父类成员字段和成员方法可以被继承 , 父类的默认方法只能在同包下继承 , 父类的 private 成员和构造方法不可继承 . super 关键字 表示父类…...

输出字母在字符串中位置索引

输入一个字符串&#xff0c;再输入两个字符&#xff0c;求这两个字符在字符串中的索引。 输入格式: 第一行输入字符串 第二行输入两个字符&#xff0c;用空格分开。 输出格式: 从右向左输出字符和索引&#xff0c;即下标最大的字符最先输出。每行一个。 输入样例: 在这里…...

Oracle中如何解决LATCH:CACHE BUFFERS LRU CHAIN

简单来讲&#xff0c;Oracle为了高效管理BUFFER CACHE主要使用以下2种LRU列&#xff1a; LRU列&#xff0c;又叫替换列&#xff08;replacement list&#xff09;&#xff0c;其中又分为主列和辅助列。 主列&#xff1a;已使用的缓冲区列&#xff0c;分为HOT和COLD区域。HOT区…...

FPGA:基于Vivado的仿真流程与波形调试实践

在FPGA开发过程中&#xff0c;仿真是验证设计逻辑正确性的关键环节。尤其在复杂系统中&#xff0c;单靠硬件板级调试远远不够&#xff0c;往往需要依赖仿真工具提前发现潜在问题&#xff0c;提升开发效率。本文将结合Xilinx Vivado设计套件&#xff0c;系统梳理从仿真环境构建到…...

前端流行框架Vue3教程:20. 插槽slot(2)

插槽slot&#xff08;2&#xff09; 渲染作用域 插槽内容可以访问到父组件的数据作用域&#xff0c;因为插槽内容本身是在父组件模板中定义的 SlotsTow.vue <script> export default {data() {return {};} } </script><template><h3>Slots续集</…...

CodeBuddy全新升级:体验Craft智能体的对话式编程革命

本文所使用的 CodeBuddy 免费下载链接&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 腾讯云AI编程助手官网&#xff1a;腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴 目录 引言&#xff1a;软件开发的新范式 一、Craft智能体核心功能解析 1.1 自然语…...

基于SpringBoot+Vue的学籍管理系统的设计与实现

获取源码&#xff1a;SpringBootVue的学籍管理系统: 学籍管理系统&#xff1a;登录、个人中心、学生管理、教师管理、学院管理、专业管理、班级信息管理、课程信息管理、学生成绩管理、学生学籍管理、招生信息录入等功能 系统演示视频地址&#xff1a;SpringBootVue的学籍管理…...

【动态规划】P10988 [蓝桥杯 2023 国 Python A] 走方格|普及+

本文涉及知识点 C动态规划 P10988 [蓝桥杯 2023 国 Python A] 走方格 题目描述 给定一个 N N N 行 N N N 列的方格&#xff0c;第 i i i 行第 j j j 列的方格坐标为 ( i , j ) (i, j) (i,j)&#xff0c;高度为 H i , j H_{i,j} Hi,j​。小蓝从左上角坐标 ( 0 , 0 ) …...

pycharm无法正常调试问题

pycharm无法正常调试问题 1.错误代码 已连接到 pydev 调试器(内部版本号 231.8109.197)Traceback (most recent call last):File "E:\Python\pycharm\PyCharm 2023.1\plugins\python\helpers\pydev\_pydevd_bundle\pydevd_comm.py", line 304, in _on_runr r.deco…...

自学嵌入式 day21 - 数据结构 双向链表

1.双向链表 2.基础操作 &#xff08;1&#xff09;头部插入 int InsertHeadDouLinkList(DouLinkList *dl,DATATYPE *data) { DouLinkNode *newnode (DouLinkNode *)malloc(sizeof(DouLinkNode));//定义新节点来存储需插入的数据 if(NULL newnode)//判断结点空间…...

Ubuntu 22.04安装zabbix7.0.0图形中文乱码

在 Ubuntu 22.04 上安装 Zabbix 7.0.0 时&#xff0c;如果图形界面&#xff08;如仪表盘、图表&#xff09;出现中文乱码&#xff0c;通常是因为缺少中文字体或字体配置不正确。以下是完整的解决方案&#xff1a; 1. 安装中文字体 安装 fonts-wqy-microhei&#xff08;文泉驿微…...

docker环境和dockerfile制作

docker 一、环境和安装 1、 docker安装 使用 root 权限登录 CentOS。确保 yum 包更新到最新sudo yum update卸载旧版本yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-selinux …...