首页 文章 精选 留言 我的

精选列表

搜索[轻量版],共10000篇文章
优秀的个人博客,低调大师

mica-mqtt 1.0.0 正式版发布

一、简介 mica-mqtt 基于 t-io 实现的简单、低延迟、高性能 的 mqtt 物联网开源组件。使用详见Gitee:mica-mqtt-example 模块。 二、功能 支持 MQTT v3.1、v3.1.1 以及 v5.0 协议。 支持 MQTT client 客户端。 支持 MQTT server 服务端。 支持 MQTT 遗嘱消息。 支持 MQTT 保留消息。 支持自定义消息(mq)处理转发实现集群。 支持 GraalVM 编译成本机可执行程序。 MQTT 客户端 阿里云 mqtt 连接 demo。 三、待办 添加 Spring boot stater。 添加 websocket子协议支持mqtt.js。 四、使用 4.1 maven 依赖 <dependency> <groupId>net.dreamlu</groupId> <artifactId>mica-mqtt-core</artifactId> <version>${最新版本}</version> </dependency> 4.2 mica-mqtt 客户端 // 初始化 mqtt 客户端 MqttClient client = MqttClient.create() .ip("127.0.0.1") .port(1883) // 默认:1883 .username("admin") .password("123456") .version(MqttVersion.MQTT_5) // 默认:3_1_1 .clientId("xxxxxx") // 默认:MICA-MQTT- 前缀和 36进制的纳秒数 .bufferAllocator(ByteBufferAllocator.DIRECT) // 堆内存和堆外内存,默认:堆内存 .readBufferSize(512) // 消息一起解析的长度,默认:为 8092 (mqtt 消息最大长度) .keepAliveSecs(120) // 默认:60s .timeout(10) // 超时时间,t-io 配置,可为 null,为 null 时,t-io 默认为 5 .reconnect(true) // 是否重连,默认:true .reInterval(5000) // 重连重试时间,reconnect 为 true 时有效,t-io 默认为:5000 .willMessage(builder -> { builder.topic("/test/offline").messageText("hello"); // 遗嘱消息 }) // .properties() // mqtt5 properties .connect(); // 连接 ​ // 消息订阅,同类方法 subxxx client.subQos0("/test/#", (topic, payload) -> { logger.info(topic + '\t' + ByteBufferUtil.toString(payload)); }); // 取消订阅 client.unSubscribe("/test/#"); ​ // 发送消息 client.publish("/test/client", ByteBuffer.wrap("mica最牛皮".getBytes(StandardCharsets.UTF_8))); ​ // 断开连接 client.disconnect(); // 重连 client.reconnect(); // 停止 client.stop(); 4.3 mica-mqtt 服务端 // 注意:为了能接受更多链接(降低内存),请添加 jvm 参数 -Xss129k MqttServer mqttServer = MqttServer.create() // 默认:127.0.0.1 .ip("127.0.0.1") // 默认:1883 .port(1883) // 默认为: 8092(mqtt 默认最大消息大小),为了降低内存可以减小小此参数,如果消息过大 t-io 会尝试解析多次(建议根据实际业务情况而定) .readBufferSize(512) // 自定义认证 .authHandler((clientId, userName, password) -> true) // 消息监听 .messageListener((clientId, topic, mqttQoS, payload) -> { logger.info("clientId:{} topic:{} mqttQoS:{} message:{}", clientId, topic, mqttQoS, ByteBufferUtil.toString(payload)); }) // 堆内存和堆外内存选择,默认:堆内存 .bufferAllocator(ByteBufferAllocator.HEAP) // 心跳超时时间,默认:120s .heartbeatTimeout(120_1000L) // ssl 配置 .useSsl("", "", "") // 自定义客户端上下线监听 .connectStatusListener(new IMqttConnectStatusListener() { @Override public void online(String clientId) { ​ } ​ @Override public void offline(String clientId) { ​ } }) // 自定义消息转发,可用 mq 广播实现集群化处理 .messageDispatcher(new IMqttMessageDispatcher() { @Override public void config(MqttServer mqttServer) { ​ } ​ @Override public boolean send(Message message) { return false; } ​ @Override public boolean send(String clientId, Message message) { return false; } }) .debug() // 开启 t-io debug 信息日志 .start(); ​ // 发送给某个客户端 mqttServer.publish("clientId","/test/123", ByteBuffer.wrap("mica最牛皮".getBytes()), MqttQoS.EXACTLY_ONCE); ​ // 发送给所有在线监听这个 topic 的客户端 mqttServer.publishAll("/test/123", ByteBuffer.wrap("mica最牛皮".getBytes()), MqttQoS.EXACTLY_ONCE); ​ // 停止服务 mqttServer.stop(); 五、效果演示 六、文档和资源 mica-mqtt 使用文档 mica-mqtt 发行版本

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

Jarboot v1.0.7 稳定版发布

GitHub:https://github.com/majianzheng/jarboot 重大特性更新: 1、启动的jar文件配置支持绝对路径和相对路径两种方式; 2、增加配置项:Jarboot启动后是否自动启动其管理的服务,默认不启动; 3、原通用配置项的配置文件统一移到jarboot.properties配置文件中; 4、启动的VM参数配置,配置项为为一个.vmoptions的配置文件,支持相对路径和绝对路径,多个服务可以共用一个vmoptions配置文件; 5、工作路径和JDK的配置,支持相对路径和绝对路径; 6、issue [#13] 命令行中引号内存在空格时解析错误的bug,修复完成; 7、启动优先级排序错误bug的修复,优先级数值大者优先启动; 8、VM参数和程序传入参数编辑支持弹窗富文本编辑; 其他更新: 1、消息推送机制重构,优化性能; 2、增加startup和shutdown的脚本; 3、移除swagger-ui; 4、引入p3c等代码检查规范; 5、Json序列化存在部分bug,fastjson -> jackson

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

maven deploy 集成 gitlab ci 自动发版

背景 多模块的 maven 项目,抽象了通用的代码逻辑作为单独的 maven 模块,这样,不仅自己项目可以用,也可以提供依赖给其他项目用,那么这个时候需要将这个模块上传到 maven 私服,发布 maven 私服时,release 版本不支持覆盖,所以需要集成 ci 工具,给 maven 模块自动加上版本号,并自动完成 deploy 操作。本文方案依赖 maven 打包插件 flatten-maven-plugin,maven 版本要求大于等于3.5.0 maven 配置 1、将 root 模块的 version 变量化,如新增如下的版本号 properties 参数 <modelVersion>4.0.0</modelVersion> <groupId>com.github.kl</groupId> <artifactId>demo</artifactId> <packaging>pom</packaging> <version>${revision}</version> <name>${project.artifactId}</name> <modules> <module>core</module> <module>common</module> <module>admin</module> </modules> <properties> <revision>1.0</revision> </properties> 2、子模块依赖父模块,依然使用 ${revision} 占位符代替,依赖子模块使用 ${project.version},如: <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.github.kl</groupId> <artifactId>demo</artifactId> <version>${revision}</version> </parent> <artifactId>core</artifactId> <packaging>jar</packaging> <name>${project.artifactId}</name> <dependencies> <dependency> <groupId>com.github.kl</groupId> <artifactId>common</artifactId> <version>${project.version}</version> </dependency> </dependencies> 3、不纳入自动版本号的模块,指定 version,同时,这种模块也不需要 deploy 到私服,配置跳过,如: <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.github.kl</groupId> <artifactId>demo</artifactId> <version>1.0</version> </parent> <artifactId>admin</artifactId> <packaging>jar</packaging> <name>${project.artifactId}</name> <properties> <maven.deploy.skip>true</maven.deploy.skip> </properties> <dependencies> <dependency> <groupId>com.github.kl</groupId> <artifactId>common</artifactId> <version>${project.version}</version> </dependency> </dependencies> 4、root 模块添加支持外部传入版本号参数的构建插件 flatten-maven-plugin,添加私服仓库地址 <build> <plugins> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>flatten-maven-plugin</artifactId> <version>1.1.0</version> <configuration> <updatePomFile>true</updatePomFile> <flattenMode>resolveCiFriendliesOnly</flattenMode> </configuration> <executions> <execution> <id>flatten</id> <phase>process-resources</phase> <goals> <goal>flatten</goal> </goals> </execution> <execution> <id>flatten.clean</id> <phase>clean</phase> <goals> <goal>clean</goal> </goals> </execution> </executions> </plugin> </plugins> </build> <distributionManagement> <repository> <id>repo</id> <url>https://nexus.dev.com/repository/maven-releases/</url> </repository> </distributionManagement> 完成如上步骤后,deploy 时,就可以通过传入系统参数的方式,动态指定版本号,如:mvn deploy -Drevision=xxx gitlab ci 配置 1、在项目根目录创建文件 .ci/settings.xml , 内容如下: <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>repo</id> <username>${env.NEXUS_REPO_USERNAME}</username> <password>${env.NEXUS_REPO_PASSWORD}</password> </server> </servers> </settings> 这个文件配置了 repo 的 maven 私服仓库 server,因为这个配置跟随项目的 git 走的,为了防止用户名和密码泄露,从环境变量中获取(提前在 gitlab 里配置好) 2、在.gitlab-ci.yml 中新增 build-deploy 流程 build-deploy: stage: build-deploy image: maven:3.6.3-openjdk-8-slim only: - master - dev variables: MAVEN_OPTS: "-Xmx512m -Xms512m -Dmaven.repo.local=$CI_PROJECT_DIR/repository" script: - mvn -s .ci/settings.xml --batch-mode clean deploy -Drevision=1.0-${CI_PIPELINE_IID} artifacts: paths: - admin/target expire_in: 1 week cache: paths: - repository

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

Ant Design Vue 2.0 正式版发布

Vue 3、TS重构、虚拟Select、暗黑主题、使用 Composition API 重构全新文档、TS / JS 双示例 来不及多说了,快上车 https://2x.antdv.com/components/overview-cn/ Ant Design of Vue 是 Ant Design 的 Vue 实现,开发和服务于企业级后台产品。 特性 提炼自企业级中后台产品的交互语言和视觉风格。 开箱即用的高质量 Vue 组件。 共享Ant Design of React设计工具体系。 支持环境 现代浏览器和 IE11 及以上, 如果需要支持 IE9,可以选择使用1.x 版本。 支持服务端渲染。 Electron

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

sqltoy-orm 4.13.12 发版,ORM 框架

开源地址: github:https://github.com/chenrenfei/sagacity-sqltoy gitee:https://gitee.com/sagacity/sagacity-sqltoy idea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugins 更新内容 1、大幅改进EntityQuery和QueryExecutor,为其增加缓存翻译、filters、分页优化、日期数字格式化、安全脱敏等,为中等规模sql代码中编写提供了便利。 @Test public void findEntityByVO() { List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class, EntityQuery.create().where("#[staffId=:staffId]#[and staffName like :staffName] #[ and status=:status]") .values(new StaffInfoVO().setStatus(-1).setStaffName("陈").setStaffId("S0005")) .filters(new ParamsFilter("status").eq(-1)).filters(new ParamsFilter("staffName").rlike()) .filters(new ParamsFilter("staffId").primary()).secureMask(MaskType.ADDRESS, "address") .secureMask(MaskType.TEL, "telNo")); System.err.println(JSON.toJSONString(staffVOs)); } 2、改进isUnique的实现策略,减少一次count查询提升了效率! 3、修复update级联操作时,在mysql、postgresql、sqlite等场景下改用2次交互模式解决上述数据库自身bug导致的问题(非空字段问题)! 参见sqltoy4.2.6 版本反馈的bug mysql的on duplicate key update 当某个字段在数据库中设置为not null,发生SQL 错误 [1048] [23000]: Column 'NAME' cannot be null 快速了解 sqltoy-orm: sqltoy是全新一代的ORM框架,兼顾jpa对象式操作的优势,同时极大增强了查询功能,辅以科学的sql编写模式、巧妙的缓存翻译集成、极致的分页优化以及针对大规模数据下的分库分表、超复杂场景下的mongodb、elastic、clickhouse组合应用! sqltoy给你带来了多种主键策略,除常规的UUID、sequence、identity外,还包含雪花算法和基于redis产生有规则的业务主键等。 sqltoy还提供了针对统计分析的:数据旋转、无限级分组计算、同比环比等来减少开发者写复杂sql。 sqltoy在很多方面提供了极为实用的方法,如:树形表处理、isUnique、findTop、getRandomResult、updateFetch等等 sqltoy不走jooq全对象式、mybatis全sql式这种不是天就是地从来没有考虑过后期需求变更和运维苦逼的极端路子,紧贴项目实战发展起来的框架,让各自技术以合理的方式应用于合理的地方! 简要举例介绍(详情请参见sqltoy下面的sqltoy-quickstart演示项目): JPA式的CRUD,但规避了其不足,提供了默认的SqlToyCRUDService(简单的则无需写service方法) 和 SqlToyLazyDao(开发无需自己写Dao,只需要写Service业务逻辑),可以了解类似于update、updateAll、saveOrUpdate等内在逻辑,减少了数据库交互,考虑了高并发和业务对象变更的特征! @Autowired private SqlToyCRUDService sqlToyCRUDService; //基于对象保存 sqlToyCRUDService.save(staffInfo); //基于对象更新(字段值为null的不会参与变更) sqlToyCRUDService.update(staffInfo); //深度变更,全部字段都参与变更 sqlToyCRUDService.updateDeeply(staffInfo); //基于对象更新(制定强制修改的字段) sqlToyCRUDService.update(staffInfo,"staffName","onDuty"); //基于对象更新 sqlToyCRUDService.saveOrUpdate(staffInfo); //加载对象 sqlToyCRUDService.load(new StaffInfoVO("S190715009")); //加锁获取对象 sqlToyCRUDService.load(new StaffInfoVO("S190715009"),LockMode.UPGRADE); //判断对象是否唯一 sqlToyCRUDService.isUnique(staffInfo, "staffCode"); //delete\deleteAll\updateAll\loadAll 等等不一一写完 sqltoy提供了最简洁的动态sql编写 我们对比一下mybatis的实现! 不要顾首不顾腚式看问题: 产品改需求增加条件增加显示列,后期人员变动! 从需求调整和后期维护的角度,你自己分析mybatis这种做调整是不是很麻烦(先放入客户端调试、调试完再整理成mybatis的格式) 缓存翻译,利用缓存减少关联查询,简化sql同时大幅提升效率 极致分页优化 旋转数据并进行环比计算

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

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

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

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

用户登录
用户注册