首页 文章 精选 留言 我的

精选列表

搜索[问答社区],共10000篇文章
优秀的个人博客,低调大师

开源项目 WEMQ 加入 Dromara 社区,物联网设备调试系统

项目背景 随着物联网技术的迅猛发展,越来越多的物联网设备被应用于各个行业和领域。物联网设备的调试和管理是确保设备正常运行和提供稳定服务的关键环节。然而,传统的物联网设备调试方案往往存在一些问题,如复杂的配置流程、安全性不足、功能不完善等。 为了解决这些问题,WeMQ应运而生。WeMQ是一款面向物联网设备运营商的开源物联网设备调试系统,旨在提供完整的物联网设备调试方案,并集成了设备管理、MQTT服务器管理、客户管理等功能。该系统采用自研的Nmqs通信层组件,实现了连接信息的加密,保证了数据的安全性。 WeMQ的项目背景源于对物联网设备调试过程中存在问题的深入研究和理解。通过提供开源的解决方案,WeMQ希望为物联网设备运营商提供一个高性能、安全可靠、功能强大的调试和管理平台,帮助他们简化设备调试流程、提高调试效率,并保证设备的稳定运行。 项目的主要特性: 提供一套完整的物联网设备调试方案,包括设备管理、MQTT服务器管理、客户管理等功能,帮助设备运营商简化调试流程。 自研 Nmqs 通信层组件,实现连接信息的加密,确保数据传输的安全性。 提供高性能、稳定可靠的服务,满足大规模物联网设备的调试和管理需求。 开源项目,吸引更多的开发者参与贡献,推动物联网设备调试领域的发展。 通过WeMQ,物联网设备运营商可以更轻松地进行设备调试和管理,提高工作效率,降低运营成本,并为最终用户提供更好的物联网设备体验。 技术选型 1. 系统环境 Java 8 Servlet 3.0 Apache Maven 3 2. 主框架 Spring Boot 2.7.x Spring Framework 5.3.x Spring MVC 5.3.x 3. 持久层 Mybatis 3.5.x Alibaba Druid 1.2.x Hibernate Validation 6.0.x Java MySQL Connector 8.0.x 4. 视图层 Thymeleaf 3.x Bootstrap 5.x Layui 2.x 5. 工具类 Apache Commons Hutool 5.x 6. 通信层 Nmqs 实现连接信息加密、消息转发,支持 WS/TCP 协议连接 Eclipse Paho 项目结构 cn.mmanager ├── mm-common // 工具类 │ └── annotation // 自定义注解 │ └── constant // 通用常量 │ └── core // 核心控制 │ └── enums // 通用枚举 │ └── exception // 通用异常 ├── mm-framework // 框架核心 │ └── aspectj // 注解实现 │ └── interceptor // 拦截器 │ └── manager // 异步处理 │ └── web // 前端控制 ├── mm-web // Web服务 ├── mm-dao // 数据访问层 ├── mm-service // 业务层 ├── mm-model // 模型 通信层 _ _ __ __ ____ _____ | \\ | | \\/ |/ __ \\ / ____| | \\| | \\ / | | | | (___ | . ` | |\\/| | | | |\\___ \\ | |\\ | | | | |__| |____) | |_| \\_|_| |_|\\___\\_\\_____/ 通信层组件在物联网设备调试系统中扮演着重要的角色,它负责设备与服务器之间的通信和数据传输。在WeMQ中,采用了自研的Nmqs通信层组件,它实现了连接信息的加密,确保数据传输的安全性。 Nmqs 通信层组件具有以下特点和功能: **连接信息加密:**Nmqs采用先进的加密算法,对设备与服务器之间的连接信息进行加密处理。这样可以确保通信过程中的数据安全,防止信息被窃取或篡改。 **安全认证:**Nmqs提供了安全认证机制,确保只有经过授权的设备和服务器才能建立连接。通过身份验证和密钥交换等方式,确保通信双方的身份合法性和通信的安全性。 **数据压缩和优化:**Nmqs支持数据压缩和优化技术,可以在传输过程中对数据进行压缩,减少数据传输的带宽占用和传输延迟,提高通信效率。 **可靠性保证:**Nmqs具备可靠性保证机制,能够处理通信过程中的数据丢失、重传和错误处理。它采用可靠的传输协议,确保数据的完整性和可靠性。 **适应性和灵活性:**Nmqs通信层组件具有良好的适应性和灵活性,可以适应不同的网络环境和设备类型。它支持多种通信协议和网络传输方式,能够适应不同的物联网设备调试场景。 通过自研的Nmqs通信层组件,WeMQ能够提供安全可靠的设备与服务器之间的通信服务。它保护设备数据的安全性,确保通信过程的可靠性和稳定性,为物联网设备调试和管理提供了强大的基础支持。 开源地址 Gitee:https://gitee.com/dromara/WeMQ Github:https://github.com/dromara/WeMQ Issues & Pull Requests 欢迎提交Issues和Pull Requests,开源大门永远向所有人敞开。 作者介绍 名称:NicholasLD 全栈开发工程师,物联网爱好者 Dromara 开源组织成员,dromara/WeMQ 作者 联系方式: Email: 878639947@qq.com WeChat: NicholasLD505

优秀的个人博客,低调大师

分布式任务调度框架 DisJob 加入 Dromara 开源社区

作者简介 网名Ponfee,Dromara开源组织成员,dromara/disjob项目作者。在国内多个一线大厂待过,有过后端、全栈、大数据等相关工作经历。 关于Disjob Disjob是天然为支持分布式长任务执行而设计的,它除了具备常规的任务调度功能外,还提供:任务拆分及分布式并行执行、暂停及取消运行中的任务、恢复执行被暂停的任务、保存任务的执行快照(Checkpoint)、任务编排(DAG)、广播任务等能力。以下是Disjob的整体流程图: 应用场景举例 举个简单的例子:统计在\\(0,1万亿]\*\*区间内质数的个数。如果单机单线程CPU去统计的话不知道要到何年马月,这里我们就可以用Disjob框架提供的分布式并行执行的能力来解决该类问题。 拆分任务 先根据当前的机器资源情况来决定拆分任务的数量,比如按照我们的机器数量及core CPU数量(因为质数统计是CPU密集型),决定拆分为10个任务。 分发任务 总任务被拆分成10个子任务后,框架会使用指定的路由算法把子任务分发给这些机器。 接收任务 机器接收到子任务后,会提交到框架的自定义线程池中执行。 分布式并行执行 在执行时我们可以使用分批次方式(通过代码循环)来统计,这里我们指定task-1在第一次循环统计(0, 1亿],第二次循环统计(10亿, 11亿],以此类推最后一次循环统计(9990亿, 9991亿]。同理其它的task也是按同样的方式分布式并行统计。 P.s. 黎曼猜想中可知质数分布是大体均匀的,判断一个数是否质数有很多方法,如埃氏筛法、欧拉筛法、Miller Rabin素性检验,我们可以使用Guava库提供的素性检验。 Checkpoint 如果在统计过程中机器宕机后怎么办?难道再从头开始统计吗?No No No!我们可以在每循环10次(或每隔执行超过1分钟)时使用Checkpoint保存当前task-1的执行快照。宕机异常后的重新启动任务时会读取这份快照数据,从上一次的状态中接着继续统计。 以下是task-1任务保存的快照数据样例 { "next":4000000001, // 下一次循环时要统计的区间为(40亿, 41亿] "count":19819734, // 已经统计到了 19819734 个质数 "finished":false // 当前任务是否已经统计完成:true-是;false-否; } 暂停与恢复 假如我们的这几台机器资源需要临时做其它的事情,想把当前的统计任务暂停一段时间。No problem!框架是支持暂停执行中的任务,只需要在管理后台的调度实例页面,找到该任务点击暂停按钮即可。在暂停时任务会接收到一个中断信号,收到中断信号时同样可以在代码中使用Checkpoint保存当前的执行快照。 当其它事情处理完后,我们可以在管理后台的调度实例页面,找到被暂停的这个任务,点击恢复按钮,此时任务会从上一次保存的状态中恢复继续执行。 任务编排 现在这个质数统计的总任务已经执行完了,共10个子任务,每个子任务都统计出了它的那部分结果。Disjob能自动帮我汇总结果吗?Yes!框架提供了非常强大且方便的表达式来编排任务,如:A->B,C,(D->E)->D,F->G,现在我们可以创建一个汇总任务,然后再把这两个任务编排在一起。以下是本例中质数统计的job表数据,其中job_handler指定了编排的这两个任务处理器(代码在Disjob的开源项目中)。 INSERT INTO `sched_job` ( `job_id`, `job_group`, `job_name`, `job_handler`, `job_state`, `job_type`, `job_param`, `trigger_type`, `trigger_value`, `next_trigger_time` ) VALUES ( 1003164910267351009, 'default', 'prime-count-dag', 'cn.ponfee.disjob.test.handler.PrimeCountJobHandler -> cn.ponfee.disjob.test.handler.PrimeAccumulateJobHandler', 1, 2, '{\\"m\\":1,\\"n\\":10000000000,\\"blockSize\\":100000000,\\"parallel\\":10}', 2, '2023-09-02 18:00:00', unix_timestamp()*1000 ); 本例中的质数统计流程图如下 结语 Disjob还有很多的功能需要去完善打磨,正如Dromara的口号:一个人或许能走的更快,但一群人会走的更远。期待有更多的人一起参与共建! 项目链接 gitee: https://gitee.com/dromara/disjob github: https://github.com/dromara/disjob 个人博客:http://www.ponfee.cn

优秀的个人博客,低调大师

【官宣】聚合短信工具 sms-aggregation 加入 dromara 社区

sms-aggregation 聚合短信发送工具 作者介绍 名称:wind dromara 开源组织成员,dromara/sms_aggregation 作者 java高级开发工程师,拥有丰富实战经验 个人空间:https://gitee.com/MR-wind 官方文档:https://wind.kim/ 关于 SMS Aggregation ​ SMS Aggregation 是一款聚合短信发送工具,统一了各个厂商的发送功能和发送方法,省去学习不同短信厂商的差异化的时间,极简单的使用,可以让你在三分钟内完成短信发送功能的编写,并且额外添加了许多常用的工具和方法,让简单的事情回归简单的本质 使用 引入maven依赖 配置yml文件 注入统一接口 调用对应方法 完成短信发送 支持厂商 各个厂商正在不断的适配中,最新的支持请查看官网 阿里云国内短信 腾讯云国内短信 华为云国内短信 合一短信 云片短信 配置文件 以下以阿里云短信为例 sms: # 短信服务商 supplier: alibaba alibaba: #阿里云的accessKey accessKeyId: 您的accessKey #阿里云的accessKeySecret accessKeySecret: 您的accessKeySecret #短信签名 signature: 测试签名 #模板ID 用于发送固定模板短信使用 templateId: SMS_215125134 #模板变量 上述模板的变量 templateName: code #请求地址 默认为dysmsapi.aliyuncs.com 如无特殊改变可以不用设置 requestUrl: dysmsapi.aliyuncs.com 注入接口 @Autowired private SmsBlend sms; 调用对应方法 已发送标准短信为例 @RestController @RequestMapping("/test/") public class DemoController { //注入短信工具 @Autowired private SmsBlend sms; // 测试发送固定模板短信 @RequestMapping("/") public void doLogin(String username, String password) { sms.sendMessage("18888888888","测试发送固定模板短信"); } } 关注项目 对项目有什么想法或者建议,可以加我微信拉交流群,或者创建issues,一起完善项目 个人微信: Crazy-d1810

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册