RT-Thread软件包,RyanMqtt 2.0 发布,全面重构:更轻、更快、更安全、更可靠 | 技术集结

嵌入式MQTT客户端RyanMqtt:从协议解析到物联网设备稳定通信实战 MQTT作为一种轻量级的发布/订阅消息传输协议,是物联网设备与云端通信的基石。其核心原理在于通过代理服务器解耦消息生产者和消费者,支持不同服务质量等级,确保在不可靠网络下的数据传输。这一特性为资源受限的嵌入式设备提供了高效、低功耗的通信方案,广泛应用于智能家居、工业遥测等场景。在嵌入式C语言开发中,实现一个稳定、可移植的MQTT客户端是关键挑战。RyanMqtt作为一个纯C编写的轻量级库,通过平台无关的接口抽象和简洁的状态机设计,解决了与特定网络栈的强耦合问题。它允许开发者专注于应用逻辑,通过实现几个核心回 阅读详情

🚀 RyanMqtt 2.0

RT-Thread 社区精品软件包 RyanMqtt 发布 2.0 新版本!🚀
更轻、更快、更安全、更可靠,为你的物联网连接注入新动力。

软件包地址:https://packages.rt-thread.org/detail.html?package=RyanMqtt

原文链接,欢迎讨论:https://club.rt-thread.org/ask/article/3d5f29ae6ac922e0.html

🌟核心亮点

维度

变更类型

核心价值

协议栈

Paho MQTT Embedded → coreMQTT

社区维护活跃、测试覆盖完善,为未来 MQTT 5.0 支持奠定基础

运行时安全分析验证

使用 Sanitizer 进行运行时安全分析验证

调试阶段捕获内存越界、Use-after-free、数据竞争、未定义行为、内存泄漏等问题,提升代码健壮性与安全性

高质量代码保障

引入 clang-tidy 和 Cppcheck 进行静态分析

高质量代码保障,接近语法级”零缺陷“,显著提升可维护性

AI 辅助开发与审查

使用 coderabbitai 和 Copilot 辅助编码与代码审查

AI 辅助开发与审查,持续提升代码质量,构筑安全防线

内存管理优化

固定缓冲区 → 动态按需分配

采用按需动态分配,降低运行内存占用

线程安全强化

更完善的线程安全

支撑复杂线程应用场景,杜绝竞态风险

测试体系升级

新增专项测试

覆盖广泛场景,全链路内存泄漏检测,强化稳定性与可靠性

📈公共 API 变化

新增接口

// 批量订阅/取消订阅extern RyanMqttError_e RyanMqttSubscribeMany(RyanMqttClient_t *client, int32_t count,          RyanMqttSubscribeData_t subscribeManyData[]);extern RyanMqttError_e RyanMqttUnSubscribeMany(RyanMqttClient_t *client, int32_t count,            RyanMqttUnSubscribeData_t unSubscribeManyData[]);// 带用户数据的发布extern RyanMqttError_e RyanMqttPublishAndUserData(RyanMqttClient_t *client, char *topic, uint16_t topicLen,        char *payload, uint32_t payloadLen, RyanMqttQos_e qos,        RyanMqttBool_e retain, void *userData);// 线程安全的订阅查询,仅可通过 RyanMqttSafeFreeSubscribeResources 进行安全释放。extern RyanMqttError_e RyanMqttGetSubscribeSafe(RyanMqttClient_t *client, RyanMqttMsgHandler_t **msgHandles,      int32_t *subscribeNum);extern RyanMqttError_e RyanMqttSafeFreeSubscribeResources(RyanMqttMsgHandler_t *msgHandles, int32_t subscribeNum);// 订阅数量查询extern RyanMqttError_e RyanMqttGetSubscribeTotalCount(RyanMqttClient_t *client, int32_t *subscribeTotalCount);// 获取 MQTT Config 信息,仅可通过 RyanMqttFreeConfigFromGet 进行安全释放。extern RyanMqttError_e RyanMqttGetConfig(RyanMqttClient_t *client, RyanMqttClientConfig_t **pclientConfig);extern RyanMqttError_e RyanMqttFreeConfigFromGet(RyanMqttClientConfig_t *clientConfig);

新增功能价值

接口

用途

优势

SubscribeMany

批量订阅/取消多个主题

减少网络往返,提升吞吐效率

PublishAndUserData

发布消息附带上下文

回调中可直接读取用户数据,简化状态管理

GetSubscribeSafe

安全查询订阅状态

内部同步,多线程安全

GetSubscribeTotalCount

获取订阅总数量

便于监控与资源调度

🔧平台抽象层优化

1. 统一时间接口

uint32_tplatformUptimeMs(void);
  • 跨平台毫秒级运行时间

  • 内部处理 32 位回绕,长时间运行稳定

2. 网络收发模型简化

  • 收发接口改为单次调用语义,减少冗余循环与分支

  • 返回实际传输字节数,更贴近底层行为

  • 异常恢复路径更明确

🧪 测试体系全面升级

新增 8 大类专项测试用例,覆盖从基础功能到极限压力场景的全流程验证:

测试类别

测试目标

1. 客户端销毁压力测试

验证资源释放的幂等性与完整性

2. 心跳与超时处理

Keep-Alive、PINGREQ/RESP 机制验证

3. 消息链路完整性(QoS 0/1/2

QoS 0/1/2 消息端到端可靠性验证

4. 自动/手动重连机制

状态机正确性与连接恢复能力

5. 批量/重复订阅一致性

订阅表一致性、内存安全、去重逻辑

6. 多客户端高并发

20+ 客户端并发运行稳定性

7. 单客户端多线程共享(20 线程 × 各 1000 条 QoS1/2 消息)

锁机制、数据一致性、竞态防护

8. 公共API参数校验

提升接口健壮性与可用性

📊测试覆盖范围

  • 基础连接:100 次循环连接/断开,混合 QoS 消息与订阅

  • 消息流控:连续发送 QoS0/1/2 等级 1000 条消息,混合 QoS 压力测试

  • 订阅管理:批量、大量、重复、混合 QoS 订阅与取消

  • 并发压测:

    • 单客户端 20 线程 × 各 1000 条 QoS1/2 消息

    • 多客户端 20 并发实例进行双向发布/订阅

  • 可靠性:长连接、弱网、Keep-Alive、重连机制验证

  • 资源安全:全链路内存泄漏、句柄泄漏检测

📊代码质量与规范

✅ 工具链全面集成

工具

用途

Sanitizer

运行时捕获内存与线程安全问题

clang-tidy

静态分析潜在缺陷(空指针、资源泄漏等)

Cppcheck

深度扫描内存与资源问题

ClangFormat

统一代码风格

编译器警告

-Wall -Wextra(默认)、-Weffc++/-Weverything(Clang 可选,CI 强化时开启)

✅ 检查重点覆盖

  • 内存安全:杜绝泄漏、越界、悬空指针

  • 性能优化:减少冗余拷贝与低效算法

  • 可读性:命名规范、注释完整、逻辑清晰 

✅成果:实现接近语法级”零缺陷“,长期维护成本大幅降低

 🔒安全性与可靠性全面提升

  • 公共 API 全面审查

  • 核心数据结构访问均受同步机制保护

  • 动态内存策略更健壮,异常路径也能安全释放

  • 输入验证与边界检查更严格,防御性编程增强

  • 网络异常处理更完善,弱网环境下连接恢复更快

  • 错误恢复路径更稳健,超时策略更精准

🎉总结

本次 RyanMqtt 2.0 是一次具有里程碑意义的升级:

  1. 技术栈现代化:迁移至 coreMQTT,拥抱更活跃的生态与未来扩展能力

  2. 架构更清晰:模块高度解耦,抽象设计更合理

  3. 质量更可信:专项测试 + 静态分析 + AI 审查构筑强大防线

  4. 性能再优化:更低资源占用、更高吞吐效率

  5. 维护更轻松:统一代码规范、平台抽象降低长期开发成本

🔄从 1.x 迁移至 2.x

RyanMqtt 2.0 在设计上尽量减少破坏性变更。升级过程极为简单:                

从 V1.x 升级到 V2.x 时,需在 RyanMqttClientConfig_t 结构体中移除以下四个已废弃字段:

char *recvBuffer;        // MQTT 接收缓冲区(已废弃)char *sendBuffer;        // MQTT 发送缓冲区(已废弃)uint32_t recvBufferSize; // 接收缓冲区大小(已废弃)uint32_t sendBufferSize; // 发送缓冲区大小(已废弃)

受影响的主要接口(其余接口原则上兼容,如有差异以头文件为准):

RyanMqttError_e RyanMqttSetConfig(RyanMqttClient_t *client, RyanMqttClientConfig_t *clientConfig);// packetType 不再使用enum msgTypes, 新类型请参考 RyanMqttPublic.h 文件内MQTT packet types宏定义RyanMqttError_e RyanMqttDiscardAckHandler(RyanMqttClient_t *client, uint8_t packetType, uint16_t packetId);

其余 API 与配置保持兼容,无需额外修改即可完成迁移。若编译期出现不兼容,请以 mqttclient/include/*.h 中的最新签名为准。

强烈建议所有用户都升级到2.0!选择latest就是2.0版本,已在公司项目运行好几个月

不准备升级到2.0的用户可以选择1.2.1版本,是V1的最后一个版本

RyanMqtt github仓库:

https://github.com/Ryan-CW-Code/RyanMqtt

RT-Thread社区软件包:

https://packages.rt-thread.org/detail.html?package=RyanMqtt

20250916更新

RyanMqtt核心库细节优化、test新增3个测试例程

测试类别

测试目标

随机网络故障弱网丢包测试

在弱网及高丢包环境下,完成 QOS 全等级消息完整性与内存回收验证

随机网络故障内存回收检测

验证异常网络情况下的内存释放,提升接口健壮性与可用性

随机内存故障,内存回收测试

验证内存异常情况下的资源释放,提升接口健壮性与可用性

20251013更新

  • 修复客户端销毁逻辑:在 init 后未执行 start 即销毁时,资源无法释放的问题

  • 支持零长度字符串:clientId、userName、password 现在允许长度为 0

  • 内存优化:降低 Config 内存占用

  • 测试增强:补充对应的单元测试代码

RT-Thread Github 开源仓库,欢迎撒个星(Star)支持,更期待你的代码贡献: https://github.com/RT-Thread/rt-thread

图片

图片

图片

想要在RT-Thread平台或社区投放内容?

或想参与相关直播活动及赛事?

RT-Thread已开放对接窗口,

请通过邮件与我们取得联系,期待合作!

合作邮箱: tongfangyi@rt-thread.com 

点击“阅读原文”下载RyanMqtt 2.0软件包

从零上手RyanMqtt:嵌入式C语言MQTT客户端库实战指南 MQTT(消息队列遥测传输)是一种基于发布/订阅模式的轻量级物联网通信协议,其核心原理是通过代理服务器(Broker)实现设备间的异步消息传递。该协议设计精简、开销低,特别适合网络带宽有限、计算资源受限的嵌入式环境,在物联网、移动应用和工业自动化等领域具有极高的技术价值。在实际工程中,开发者常面临如何在资源受限的嵌入式设备上高效、稳定集成MQTT功能的挑战。本文以高度可移植、资源占用极低的C语言嵌入式MQTT客户端库RyanMqtt为例,深入解析其纯C实现、事件驱动模型与配置裁剪机制,并详细演示了在STM3 阅读详情

相关推荐

Mqtt客户端(org.eclipse.paho.ui.app-1.0.2-win32.win32.x86_64.rar)

Mqtt客户端(org.eclipse.paho.ui.app-1.0.2-win32.win32.x86_64.rar),结合文章:https://blog.csdn.net/weixin_42401291/article/details/102828779

物联网MQTT消息质量实战:RyanMqtt QoS稳定性测试与调优指南

在物联网和分布式系统中,消息中间件是实现设备与云端可靠通信的核心组件。其核心原理在于通过异步解耦和可靠投递机制,确保数据在复杂网络环境下的有序传输。MQTT协议因其轻量级、低功耗和基于发布/订阅模式的特点,成为物联网场景下的关键技术标准,其技术价值在于为海量、资源受限的设备提供了高效、可靠的通信基础。协议中的QoS(服务质量)等级机制,直接决定了消息是“至多一次”、“至少一次”还是“确保一次”送达,这是保障业务数据完整性与一致性的基石。在实际的工程实践中,尤其是在智能电表、环境传感器等弱网环境下,对MQTT

weixin_42545159的博客 572

保姆级教程:在LKD3588开发板上为RK3588添加SC2210摄像头驱动(含完整DTS配置)

本文提供了一份详细的教程,指导如何在LKD3588开发板上为RK3588处理器添加SC2210摄像头驱动,包括完整的DTS配置和内核编译步骤。教程涵盖了环境准备、驱动文件添加、DTS配置详解、内核编译与烧录、驱动测试以及常见问题排查,帮助开发者快速实现SC2210传感器在RK3588平台上的集成与优化。

weixin_42641741的博客 479

RTT使用paho-mqtt软件包开发过程中发现的问题以及修复

内容简介:本文是基于RT-Thread移植较新paho-mqtt软件包(24年移植1.2.0版本)实现串口到mqtt透传开发时,总结当前环境下尚未支持的部分功能以及应用中不符合本人项目开发的性能缺陷,并对其提出优化方案以供借鉴。

宅心超人的分享 2233

深度学习PyTorch代码模板——模型训练框架、数据处理、绘图…

个人用深度学习代码模板:模型训练框架、数据处理、绘图等。待补充。

https://www.hyperplasma.top 1905

TongWeb微服务部署实战:Nacos注册与网关路由的疑难解析

本文分享了将Spring Cloud微服务迁移至TongWeb应用服务器时,解决Nacos服务注册失败与Spring Cloud Gateway路由失效的实战经验。针对Nacos注册问题,通过实现ApplicationRunner接口并利用JMX获取容器端口,实现了手动注册;针对网关路由问题,建议将基于WebFlux的Gateway模块改为JAR包独立部署,以保障其原生运行环境。文章为在TongWeb上进行微服务部署提供了关键的问题排查思路与混合架构部署的最佳实践。

weixin_29209801的博客 238

MQTT协议发布和订阅的实现,一步步带你实现发布订阅服务。

当然普通的通信业务开发也是完全可以使用的。下面的代码 ,我们实现一个MQTTServer,同时监听了客户端连接事件、客户端断开连接事件、客户端发布消息事件、客户端订阅主题事件、客户端取消订阅主题事件。当订阅者订阅了某个主题的时候,如果发布者发送消息的服务器,服务器会将这些消息全部通知 给已订阅的订阅者。同时,微软也给我们提供了具体的案例代码,强烈建议大家按照官方的案例代码实现自己的MQTT服务器和MQTT客户端。订阅者运行效果如下,可以看到订阅者订阅了相同名称的主题之后,会不断的接收到发布者发布的消息。

曹瑞鹏的博客(专注于.NET开发,Unity开发) 2451

opencode 完全指南:终端AI编程助手的安装、模型配置与实战

在AI编程助手快速迭代的当下,开发者对终端环境下的自动化编码需求愈发强烈。以自然语言驱动代码修改、命令执行与测试验证,已成为提升工程效率的重要方向。这类工具普遍遵循模型无关的设计原则,通过兼容OpenAI格式的接口接入多种大模型,并借助多会话管理、Skills、Memory等机制实现可审查、可干预的闭环流程。从安装配置到日常使用,再到apihub网关与免费模型的接入,终端AI助手在代码审查、跨文件重构、浏览器自动化验证等场景中展现出独特价值。本文聚焦opencode这一开源CLI工具,详细拆解其核心定位、模

weixin_33868027的博客 417

kawaii-mqtt移植记录

kawaii-mqtt 移植总结:​ 由于业务需要使用MQTT来传输数据,而对于单片机实现来说,一般就两种方案,第一种是通过网络模块的自带的MQTT通过AT命令或者MQTT透传方式,第二种是模块不具备MQTT协议通过TCP的方式实现MQTT协议。​ 第一种方式基本基本按照模块AT命令配置好后就可以收发数据,比较容易实现。​ 第二种方式需要基于TCP的方式移植一个MQTT协议栈。

u013610102的博客 1118

DRM驱动代码分析:展频 跳频

DRM驱动代码分析:展频 跳频

yuuu_cheer的博客 2670

[华为ensp]双核心的园区网

(给部分只会emm......借鉴的朋友提个醒,在group-member e0/0/2 to e0/0/20是所选,所以到了p l t那会给2-20端口都配置上trunk,别紧张,不是你问题)完成上述配置后,PC1可以ping通HTTP2服务器,Client1可以访问HTTP2服务器的HTTP站点,如果不能就要检查上述是否正确。本次实验主要目的是采用双核心的冗余网络,采用MSTP和VRRP技术,在核心层交换机上配置SC1上配置OSPF协议。SC1交换机上配置VRRP。在SC1上配置DHCP。

2301_78859499的博客 1416

从一到无穷大 #108:Meta 的 AI 存储架构——BLOB 重构与跨地域数据加载

在 Meta 的旧 BLOB 服务里,数据已经放到闪存上,一次请求中的多层元数据查询仍可能耗费数百毫秒,部分请求还要跨地域。底层介质变快以后,上层存储服务的查找和转发开销开始直接影响 GPU 利用率。[1]另一种等待发生在训练之前。GPU 分散在不同地域,研究者要先找到有算力的地方,再把训练数据搬过去。一次小规模实验也可能先花几个小时导入数据,调整数据后再等一轮。Meta 保留了底层 Tectonic,改造了它上面的 BLOB 访问路径。

李兆龙的博客 461

在最新版eclipse中配置使用AI AIcoder _AIcoder配置GPUSTACK使用_配置OLLAMA本地AI模型利用_集合---AI场景应用工作笔记

本文介绍了三款实用的编程辅助工具:一款便捷的反编译插件,可直接在插件市场安装使用;GitHub Copilot提供每月2000次代码补全和50条聊天记录的免费额度,支持智能代码提示功能;aicoder支持配置本地模型运行。这些工具都能有效提升开发效率,其中GitHub Copilot的智能补全功能尤为突出。

添柴程序猿的专栏 1225

HackerTube :一个人+ Opus 5.5,2小时重构 YouTube

咱就说,有没有一种可能,给你把青龙偃月刀,你也耍不出关二爷的威风,还要抱怨这玩意有什么存在的意义,不符合人体工程学,有肌肉拉伤风险?- A\ 天天吹自己模型多牛逼,能越狱,我用了 Claude 也不过如此,xxx 做了2小时也没做多好,反复说他叮也叮不懂。现如今,大模型已经不再是写代码的辅助工具了,它是把个人的想法直接编译成可用服务的最小生产力闭环。让原本的抬头仰望,变成了遥不可及。

0x0007 的博客 510

Python之afdx包语法、参数和实际应用案例

Python 的 afdx 包是针对 AFDX 协议的轻量级开发工具,专注于 AFDX 数据帧的解析、构造、发送/接收、协议合规性校验等核心能力,广泛应用于航空电子设备测试、仿真、数据监控等场景。

王国平的博客 982

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

横琴×大湾区GEO规范共建计划正式启动:以“透明度量”重构跨境品牌信任新基建副标题:立足珠澳·辐射湾区——三方签约打造“可信GEO”全要素生态闭环

这套组合的稀缺性,还在于它不是把几家公司的业务简单并列,而是围绕“可信GEO”形成一条可运转的服务链:真实贸易与本地消费场景提供应用土壤,海外社媒矩阵与跨境数据合规提供传播与确权能力,GEO落地服务提供从诊断到复盘的可交付执行,开放监测底座提供不依附于执行方的效果校验,澳门主流报业协同资源则把本地公信力、公共议题与社会认知入口前置到共建过程中。至此,中智云的真实贸易场景、麦芽科技的跨境传播网络、横琴必优的底层度量技术,以及澳门主流报业协同资源提供的本地公信力与公共议题入口,完成了四块关键拼图的严丝合缝。

web15185420056的博客 239

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

圆满验收 | 泰胜风能 & 开目MOM,数智重构风电塔筒制造内核

依托 SCADA 系统实现焊接参数自动化回传,实时采集焊缝编号、WPS 工艺规程、焊材牌号批次、焊接电压电流、焊接速度、预热及层间温度、保护气体流量等关键工艺指标,自动生成完整焊接过程电子档案,开目MOM摒弃单点系统改造的建设思路,采用顶层规划、软硬一体的整体解决方案,打通生产执行、设备全生命周期运维、全流程质量管控、焊接工艺参数自动采集、能源消耗数据实时采集全业务链路。一节节钢制筒体,历经下料、卷板、焊接、组对、防腐、终检等多道加工与焊接,生产管控、质量追溯、设备管理,又是如何做到精准可控?

开目软件kmsoft.com.cn,中国高端工业软件知名厂商 174

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

国内数据分类分级平台分析:大模型赋能下的技术能力重构分析

数据分类分级平台正经历从 "规则扫描器" 到 "智能数据资产理解引擎" 的跃迁。大模型重构的不只是识别准确率,而是把过去依赖专家经验的语义理解、定级判断、标签维护,变成可规模化、可私有化、可持续学习的平台能力。但这并不意味着人被替代 —— 行业分级标准的把握、误分级的风险承担、业务部门的协同推进,仍然需要专业服务团队深度参与。

KKKlucifer的博客 283

21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比

21_MySQL 优化案例集 —— 慢 SQL 优化、索引重构与参数调整收益对比 系列定位 :《MySQL 数据库全栈运维实战系列》第 21 篇,与《Oracle 数据库全栈运维实战系列(VMware 版)》同构对标。 适用版本 :MySQL 8.0(5.7 差异随文标注)。 官方文档 :MySQL…

dk843108982的博客 234

视觉Transformer的“第二次革命”:ViT³如何用测试时训练重构注意力范式

ViT³提出视觉Transformer的“第二次革命”,通过测试时训练(TTT)重构注意力范式,以线性复杂度实现高精度建模。其核心思想是将注意力视为用上下文构建内部模型,而非简单加权求和。研究总结六条设计原则,如采用MSE损失、全Batch单轮训练、卷积内部结构等,构建纯TTT架构,在1248×1248图像上显存降低90.3%,速度提升4.6倍,性能超越线性注意力与Mamba,推动高效高分辨率视觉计算发展。

weixin_46846685的博客 245

国内数据安全服务的产品智能化转型:大模型赋能下的技术能力重构分析

大模型给国内数据安全服务带来的,不是又一个营销概念,而是一次真实的技术能力重构 —— 识别从规则走向语义、策略从手工走向生成、研判从阈值走向推理、报告从写作走向沉淀、运营从工单走向对话。但重构不是颠覆:安全场景对准确性、可解释性、合规性的高要求,决定了大模型必须是副驾而非司机,必须私有化部署、必须行业微调、必须人在回路。从国内头部服务商在运营商、政企场景的落地实践看,真正有价值的智能化,是把模型能力扎进具体服务流程里,和 4A、工单、信创底座打通,让专家效率倍增、让客户数据不出域、让合规交付自动化。

KKKlucifer的博客 221

中烟创新×某电力公司 | AI大模型重构电力合规反事故演习

更进一步,查阅任何一项内部制度时,“制度优化建议智能体”会自动将制度全文与上位法、行业规范比对,识别条款滞后、内容冲突、管控缺失——制度治理从“定期运动式检查”,变成“随时在线、持续体检”。权重可按岗位、业务重点、风险等级灵活配置,最终生成可视化画像与等级评定(优秀、良好、合格、待改进)——合规管理从“模糊感知”走向“精准画像”,“印象分”让位于“数据分”。让确定性的任务走确定性的路,让需要“想”的任务交给会“想”的模型——“大模型+小模型”协同,不是技术的折中,而是工程的最优。沉淀下来的经验,不会。

ZYCX_0517的博客 366

产教融合从“深水区“走向“未来实训中心“:AI+XR重构智慧养老人才培养链条

老龄化加剧催生养老人才缺口,传统实训受限于场景、设备与资源。南京恒点依托AI+XR技术,打造智慧实训室,通过虚拟仿真、沉浸体验、虚实结合与智能评价,破解“场景难进、设备难用、资源难融”三大难题,实现评估能力标准化培养。以《老年人能力评估规范》为标尺,构建可复制、可持续的产教融合新范式,推动职业教育从“有”到“优”,助力养老专业迈向高质量发展。

恒点虚拟仿真官方博客 327

中控屏退位,AR-HUD上位?L3重构座舱交互底层逻辑

小鹏旗下G7、X9搭载自研图灵AI芯片与AI BOX,采用端侧推理为主、云端协同为辅的架构,配备追光全景AR HUD,将VLM视觉大模型识别出的障碍物、鬼探头风险、车道引导、智驾决策结论,直接锚定叠加在真实路面之上,并完成实景虚实贴合验证。值得注意的是,安全预警和商业推荐共享同一块AR视野,如果视觉层级、出场顺序没有清晰隔离,驾驶员很容易混淆“必须响应的风险”和“可选的 AI 推荐”,一旦发生事故,会带来责任认定的争议。总体来看,中控屏让位、AR-HUD站上交互前台,本质是L3对人机安全交互规则的重塑。

高工智能汽车 196

编队系列(三)|固定翼编队避碰架构:行为融合+人工势场+队形重构

行为法把固定翼编队任务拆成路径跟踪、队形保持、速度协调、机间分离和障碍物避让等局部控制项,人工势场可以为分离与避障提供计算量较低的虚拟运动向量。但简单加权求和不能消除局部极小、向量抵消、指令跳变和安全阈值失效问题。合成向量进入固定翼前,还必须经过航迹角变化率、滚转角、速度范围和前向预警距离约束。当障碍通道无法容纳原始队形时,提前将槽位平滑重构为横向压缩、纵向错列、分组或高度分层形式,可以减少局部避让与刚性队形保持之间的直接冲突。

2302_80148937的博客 306

【鸿蒙心迹】折叠屏适配实战——展开/折叠状态下的 UI 重构(HarmonyOS 7.x)

折叠屏展开那一刻,布局不是"被放大",而是被重构——单栏切双栏、列表变分栏、顶部 Tab 变侧边导航。本文用邮件类应用适配折叠屏的真实过程为案例,讲清展开/折叠状态监听、双栏重构、半折叠悬停态处理,以及最容易被忽略的一件事:状态在布局重建后不能丢。附 5 个真实踩坑(现象→根因→解决→教训)与自查清单。

腾讯云创作之星、华为云云享专家,深耕电商全栈高并发系统实战,分享可商用商城项目源码。 357
上一篇: 线下硬核实战:人形检测 + 屏显终极玩法 | 活动速递
下一篇: 2025 RT-Thread 嵌入式大赛排名公布!作品共赏,看大奖花落谁家!
RT-Thread物联网操作系统
博客等级 码龄6年 2万+粉丝 392原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值