自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 spring-boot 整合 redisson 实现延时队列(文末有彩蛋)

当客户端监听到 redisson_delay_queue_channel:delayQueue 这个 channel 的消息时,会再次提交一个客户端延迟任务,延迟时间就是消息(最早到期时间任务的到期时间戳)当前时间戳。一旦时间来到最早到期时间任务的到期时间戳,redisson_delay_queue_timeout:delayQueue 中最早到期时间的任务已经到期,客户端的延迟任务也同时到期,Redisson 方案理论上没有延迟,但当消息数量剧增,消费者消费缓慢这种情况下,可能会导致延迟任务消费的延迟。

2024-07-19 13:31:13 3886 2

原创 14.集群解决方案

这里不得不提下 Ignite,功能非常强大,并发能力、时效性、消息持久化,应该是上述几种方案中最强的。所有节点都根据主题订阅消息,每个节点拿到相同消息,解析后,根据终端ID判断是否与当前节点建立连接,是则下发消息,否则忽略此条消息。一般中小型项目使用 Redis 订阅、发布方式即可,并发能力、实时性能够有效保证,缺点是无法保证消息不丢失,需要自行代码保证。假设单节点接入上限是10W,为了良好稳定的服务,会设一个阈值,比如:当接入量达到8W就需要扩节点,而不是真的等到接入10W。到此,已经解决节点通信问题。

2024-07-19 13:24:13 124

原创 13.项目拓展

智能网联系统接入平台(简称TSP)专为解决车联网的复杂挑战而设计。无论是在海量的终端和车机系统接入,复杂网络环境下的消息实时性和可靠性,还是在项目时间紧、任务重的背景下如何快速实现业务对接,该平台都能提供出色的解决方案。它支持大并发、高可用的消息通信,并能帮助业务系统快速实现对接。

2024-06-26 11:13:08 123

原创 12.可视化实现

时间过的很快,不知不觉已到第十二章。经过前面教程的讲解和实践,数据接入服务的功能已初步完成。此章节将通过可视化的实现,对设备接入进行监控,实时监听设备的接入情况及设备的在线时长。并且可以通过订阅按钮、取消订阅按钮、查看数据按钮,对上报数据进行实时的跟踪和查阅。

2024-05-27 14:35:32 277

原创 11.客户端-文件上传、文件下载的实现

本章主要模拟终端设备通过事先制定的协议向服务端请求文件上传、文件下载的操作。

2024-05-27 14:32:01 130

原创 10.客户端-上行数据、下行命令的实现

本章主要模拟终端设备通过事先制定的协议进行数据上报及执行服务端下发的控制命令,并返回控制命令的执行结果。

2024-05-20 14:50:00 237

原创 9.客户端-终端登入、登出的实现

本章主要模拟终端设备,实现建立客户端与服务端之间的TCP连接,通过事先制定的协议进行业务上的数据交换。为方便演示,客户端不独立为新项目,只在新建测试目录下完成,并且提供控制台(按控制台提示)便于操作。

2024-05-20 14:45:33 82

原创 8.服务端-文件上传、文件下载的实现

本章主要实现服务端接收客户端上报文件以及客户端向服务端请求下载文件既然已经实现上报数据、远程控制的功能,为何还要上传文件、下载文件呢?一般情况下确实很少用到,这也是多年项目积累后新加入的功能,场景特殊。例如,终端OTA升级或者其他操作,终端会持久化一部分配置。终端存储能力有限,又不想丢弃掉这部分配置,此时就需要用到文件上传,将配置文件上传到服务器作为备份如果升级失败,或者操作失败,可以进行回滚,原始配置不会丢失,不需要花费人力、精力进行配配置,只需要向服务端请求下载原始配置文件即可。

2024-05-13 11:37:43 139

原创 7.服务端-上行数据、下行命令的实现

本章主要实现服务端接收客户端上报数据以及服务端对客户端下发远控命令。

2024-05-13 11:36:58 247

原创 6.服务端-终端登入、登出逻辑实现

本章主要实现服务端入栈、出栈处理的逻辑,包括心跳、登入、登出。

2024-05-06 22:20:29 174

原创 5.协议的编解码

本章内容其实没有多大难度,主要考察大家的细心程度.计算数据长度然后截取相应字节数组并按照协议进行解码,编码则反之。

2024-05-06 22:19:06 97

原创 4.数据协议转换为代码定义

基础消息类@Getter@Setter@Serial// 请求ID,1个字节// 响应ID,1个字节// 整体数据长度,4个字节// 数据单元,变长// 时间戳,8个字节@Override@Override登入消息类@Getter@Setter@ToString@Serial// 登入ID,2个字节// 登入信息,变长@Override@Override登出消息类@Getter@Setter@ToString@Serial。

2024-05-05 20:31:17 73

原创 3.项目准备

分段传输、重传机制:⼤数据分段传输,每段数据都有分段总数、分段索引和CRC校验码,确保数据的完整性。此协议规范旨在为嵌⼊式设备与服务端间的数据传输提供⼀个标准化、可靠和安全的框架,以⽀持多种应⽤场景下的数据交换需求。会话管理:⽀持传输结束信号,⽤于表示传输完成,以及异常处理机制,⽤于处理传输过程中可能出现的错误情况。它⽀持数据的分段传输、重传机制以及传输过程中的有效性验证,确保数据传输的完整性和安全性。扩展性:协议设计考虑到未来可能的扩展,如:增加新的命令或参数,以适应不同的传输需求。

2024-05-05 20:26:36 229 2

原创 2.项目背景

实际项目改造,突出技术重点,屏蔽敏感信息。项目主要为构建云平台,实现人、设备基于云平台进行数据的实时交互,并通过平台的数据采集、数据融合能力,为后续的算法训练、场景仿真提供可靠的基础环境。

2024-04-22 14:48:01 213

原创 1.行业背景

最简洁明了的定义:物联网(Internet of Things)是一个基于互联网、传统电信网等信息承载体,让所有能够被独立寻址的普通物理对象实现互联互通的网络。它具有普通对象设备化、自治终端互联化和普适服务智能化3个重要特征。其它定义:物联网指的是将无处不在(Ubiquitous)的末端设备(Devices)和设施(Facilities),包括具备“内在智能”的传感器、移动终端、工业系统、楼控系统、家庭智能设施、视频监控系统等、和“外在使能”(Enabled)的,

2024-04-22 14:40:23 156 1

原创 数据分片查询方案

什么是数据分片?请自行百度。本文主要讨论的是数据分片后的查询方案。什么?肯定有人纳闷了,查询还需要什么方案?要是这么想就肤浅了。

2024-04-02 13:19:14 245

原创 spring-boot 整合 shardingsphere-jdbc、mybatis-plus 数据分片(文末有彩蛋)

Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。Apache ShardingSphere 设计哲学为 Database Plus,旨在构建异构数据库上层的标准和生态。它关注如何充分合理地利用数据库的计算和存储能力,而并非实现一个全新的数据库。它站在数据库的上层视角,关注它们之间的协作多于数据库自身。

2024-04-02 10:45:20 2763 1

原创 spring-boot 整合 mybatis-plus 之数据范围(文末有彩蛋)

首先,大家应该都听说过垂直越权和水平越权?什么没有听过?通过上面描述相信大家已经了解什么是垂直权限和水平权限。两者各有不同,但又有共同点。就是越权访问原本没有权限访问的数据。本文主要讲解并提供数据范围权限的解决方案,希望能给大家带来一些帮助。

2024-03-25 09:43:16 605

原创 spring-boot 国际化 (续)(文末有彩蛋)

Hello 大家好,许久不见,之前的博客中有介绍国际化定义以及 spring-boot静态配置文件的国际化方式。这次会带入一些场景,引发一些新的讨论,并且给出对应的解决方案,或许能给大家带来一些帮助。

2024-03-25 09:36:44 365

原创 spring-boot 整合 netty 不一样的玩法(下)(文末有彩蛋)

固定长度粘包拆包基础类解码器基础类@Slf4j@Resource@Override@Override@Overridelog.warn(">>>>>> 链接:{} 已断开,异常信息:{} >>>>>>", ctx.channel().id().asShortText(), cause.getMessage());@Overridelog.warn(">>>>>> 空闲链接:{} 已断开 >>>>>>", ctx.channel().id().asShortText());

2024-03-15 10:10:01 602

原创 spring-boot 整合 netty 不一样的玩法(下)番外

Protobuf,全称为Protocol Buffers,是Google开发的一种轻量级的数据交换格式。它是一种语言无关、平台无关的序列化机制,适用于数据存储和通信协议的定义。Protobuf的主要目标是提供高效的数据序列化和反序列化机制,使得数据在网络传输和存储时更加高效和可靠。

2024-03-15 09:53:15 925

原创 spring-boot 整合 netty 不一样的玩法(中)

多累人啊,没啥意义,都是些没价值的重复性工作,真正的重点应该放在业务数据的处理上(ChannelHandler)通过 @NettyHandler 注解,指定 handler 名称(与上面配置项的 name 对应)、order是加载和执行的顺序,按照实际情况编排。到这里,相信大家对开始的几个问题已经有了答案。3.根据业务的不同,不同协议上报的数据,处理的 ChannelHandler 也不同,有的甚至有多个 ChannelHandler。没错,就是一个列表配置,其中要注意的是 name,下面步骤会用到。

2024-03-08 11:30:36 536

原创 spring-boot 整合 netty 不一样的玩法(上)

这里就不介绍 Netty 了,新手或没有接触过 Netty 的同学可以自行百度(网上新手教程一大堆)。接下来的内容有一些难度,需要有一定的基础才能更好的了解和掌握。

2024-03-08 09:40:38 538

原创 spring-boot 扩展 statemachine 状态机(文末有彩蛋)

状态机全称有限状态机,因为一般的状态机的状态都是离散而且可枚举的,这就是有限的原因。状态机表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。通俗的描述状态机就是定义了一套状态変更的流程:状态机包含一个状态集合,定义当状态机处于某一个状态的时候它所能接收的事件以及可执行的行为,执行完成后,状态机所处的状态变化可以被感知。状态事件 状态机的状态变更肯定是通过触发一个事件引起的行为 触发了之后执行的业务逻辑。比如说订单未支付状态到支付状态的变更需要走的业务,写流水、修改账户余额等。

2024-03-01 17:39:37 681

原创 spring-boot 整合 spring-boot-starter-validation 参数校验(文末有彩蛋)

Spring Validation 验证框架对参数的验证机制提供了 @Validated(Spring’s JSR-303 规范,是标准 JSR-303 的一个变种),javax 提供了 @Valid(标准 JSR-303 规范),配合 BindingResult 可以直接提供参数验证结果。其中对于字段的特定验证注解比如 @NotNull 等网上到处都有,这里不详述校验 Controller 的入参是否符合规范时,使用 @Validated 或者 @Valid 在基本验证功能上没有太多区别。

2024-03-01 17:35:20 1161

原创 spring-boot 国际化 (文末有彩蛋)

国际化(Internationalization 简称 I18n,其中“I”和“n”分别为首末字符,18 则为中间的字符数)是指软件开发时应该具备支持多种语言和地区的功能。在 Spring 项目中实现国际化,通常需要以下 3 步:1.创建国际化资源(配置)文件2.使用 ResourceBundleMessageSource 配置指定资源文件3.获取国际化内容。

2024-02-29 16:47:42 497

原创 spring-boot 整合 spring-boot-starter-batch 数据批处理(文末有彩蛋)

Spring Batch 作为 Spring 的子项目,是一款基于 Spring 的企业批处理框架。通过它可以构建出健壮的企业批处理应用。不仅提供了统一的读写接口、丰富的任务处理方式、灵活的事务管理及并发处理,同时还支持日志、监控、任务重启与跳过等特性,大大简化了批处理应用开发,将开发人员从复杂的任务配置管理过程中解放出来,使他们可以更多地去关注核心的业务处理过程。

2024-02-29 16:16:34 2146

原创 数据加密存储

SSL加密是一种基于公钥加密和对称加密相结合的加密方式。SSL加密通过使用公钥加密对称密钥,然后使用对称密钥加密数据,从而保证了数据的安全性。TDE加密是一种在存储层面对数据库进行加密的方式。TDE加密可以保证数据在磁盘上的安全性,即使磁盘被盗或者数据被窃取,也无法读取数据。对称加密是最常见的加密方式之一,也是最简单的加密方式之一。对称加密的特点 是加密和解密使用相同的密钥。数据库加密技术可以加密整个数据库或仅加密敏感数据的列。归根结底就是对存储的数据加密,针对加密对象、加密方式有所不同。

2023-11-03 13:07:17 457

原创 图像的转换处理

图像转换图像转换图像转换 18年的项目,关于图像的处理,当时非常痛苦, 没有一个完美的兼容工具类,且第三方库资源匮乏, 国内所有能找的资源都找遍了也没有什么好方法。 最后翻墙找到几个第三方库,自己研究了下,整了工具类。 在此记录下,方便以后解决同类问题,也方便他人使用。 废话不多说,直接上地址。 链接: https://pan.baidu.com/s/1Yc3Up6w31n1byif1LoBu-Q 提取码: fe3o ...

2021-09-13 17:13:15 146

原创 大文件快速压缩打包

大文件快速压缩打包使用 commons-compress 实现可控多线程快速压缩使用 commons-compress 实现可控多线程快速压缩项目中解决的问题,在此记录下来。Java自带压缩和市面上搜到的其他方法均不能满足需求,简单的说就是慢,每次都是大批量至少2G的文件压缩打包,一般方法优化到极致2G也要30秒的样子,找了一圈最后找到 Apache 开源的 commons-compress。commons-compress 实现的 ZipArchiveEntry 效率足够高,但会使用当前服务

2021-09-10 17:18:24 722

原创 Spring Boot+Spring Security+Mybatis-plus+jwt+redis 通用后台管理

touch-spring-template简介打造一个简洁、易扩展的开发脚手架。代码结构清晰,遵循低耦合高内聚设计思想。各模块之间灵活搭配,即插即用。丰富的代码注释、便于阅读及二次开发。功能系统管理:用户管理、角色管理、菜单管理、部门管理、字典管理、资源管理、租户管理系统监控:系统日志、访问日志、在线用户、定时任务、DB监控系统工具:接口文档、代码生成、表单设计流程管理:流程模型、流程定义、用户分组、流程用户技术选型核心框架:Spring Boot 2.2.0

2020-10-26 21:48:57 801 2

原创 Mysql 的性能优化总结

**Mysql 的性能优化**1.   目标了解什么是优化掌握优化查询的方法掌握优化数据库结构的方法掌握优化MySQL服务器的方法2.   什么是优化?合理安排资源、调整系统参数使MySQL运行更快、更节省资源。优化是多方面的,包括查询、更新、服务器等。原则:减少系统瓶颈,减少资源占用,增加系统的反应速度。3.   数据库性能参数使用SHOW STATUS语句查看MySQL数据库的性能参数SHOW STATU

2020-10-14 16:38:26 138

原创 jvm性能调优总结

性能监控与调优JVM内存结构堆区:{Young[(s0+s1)+Eden] + Old}非堆区:{Metaspace[CCS + CodeCache]}垃圾回收算法 枚举根节点,做可达性分析 根节点:类加载器、Thread、虚拟机栈的本地变量表、static成员、常量引用、本地方法栈的变量等等 回收算法:1.标记清除:分为“标记”和“清除”两个阶段,首先标记出所有需要回收等对象,在完成标记后统一回收。 缺点:效率不高。会产生碎片...

2020-10-07 10:50:24 400

原创 高并发、多线程

高并发、多线程开发总结一、线程池1.线程池介绍我这里理解为计划调度,复用总量相对固定的资源,合理分配完成任务.2.创建、停止线程池线程池构造函数的参数参数名类型含义corePoolSizeint核心线程数maxPoolSizeint最大线程数keepAliveTimelong保持存活时间workQueueBlockingQueue任务存储队列threadFactoryThreadFactory线程池需要新线程时,由threadFa

2020-10-05 12:39:18 219

敏捷型项目管理学习资料

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

2018-09-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除