【WEB系列】 WebSocket消息发送示例

前面介绍的几篇是消息广播,所有在群组内的小伙伴都可以收到消息;那么如果后台只想给某个用户私发消息,可以怎么实现呢?

本文将主要介绍服务端如何给客户端发送消息

查看更多

分享到

【WEB系列】 Websocket消息拦截器实现聊天提醒

在上一篇文章中,我们成功地为WebSocket的聊天应用添加了身份验证功能。然而,当时遗留了一个关键问题:当一个新用户加入群聊时,我们希望向群聊内的其他成员发送一条欢迎消息,以告知他们有新朋友加入了。那么,如何实现这一需求呢?

接下来,我们将重点介绍如何使用ChannelInterceptor来实现加入/退出群聊的通知功能。

查看更多

分享到

【WEB系列】 WebSocket身份鉴权

上一篇博文介绍了如何利用STOMP和SpringBoot搭建一个能够实现相互通讯的聊天系统。通过该系统,我们了解了STOMP的基本使用方法以及一些基础概念。接下来,我们将在此基础上进行一些增强。由于聊天的本质是交流,因此我们需要知道是谁在与谁进行聊天,这就需要登录功能的支持。

接下来,我们将探讨如何为WebSocket通信添加身份验证功能。

查看更多

分享到

【WEB系列】 WebScoket整合stomp协议实例

在我们的日常工作中,我们可能会遇到需要实现双向通讯的场景。为了解决这个问题,常见的实现方案包括短轮询、长轮询、SSE和WebSocket等几种方式。本文将重点介绍如何通过整合WebSocket和STOMP协议来实现双向通讯的方案, 并给出一个应用实例,带你轻松掌握如何基于SpringBoot搭建一个在线聊天系统

查看更多

分享到

【WEB系列】 压缩返回结果实例演示

本文将介绍一个SpringBoot进阶技巧:压缩返回结果实例演示,旨在提升您的网站访问性能。

当返回的数据较大时,网络开销通常不可忽视。为了解决这个问题,我们可以考虑压缩返回的结果,以减少传输的数据量,从而降低网络开销并提高性能。对于依赖Spring生态的Java开发者来说,幸运的是SpringBoot提供了非常便捷的使用方式。

接下来,我们将介绍几种不同情况下的压缩返回的使用方式:

  • 直接返回文本:使用text/plain作为响应类型。
  • 返回JSON数据:使用application/json作为响应类型。
  • 返回静态资源文件:对于静态资源文件,可以使用压缩算法进行压缩后再返回。

查看更多

分享到

【基础系列】 从零开始:SpringBoot配置动态刷新的详细解析与实践!

关于SpringBoot的自定义配置源、配置刷新之前也介绍过几篇博文;最近正好在使用apollo时,排查配置未动态刷新的问题时,看了下它的具体实现发现挺有意思的;

接下来我们致敬经典,看一下如果让我们来实现配置的动态刷新,应该怎么搞?

查看更多

分享到

【WEB系列】 长整型精度丢失问题修复方案

javascript以64位双精度浮点数存储所有Number类型值,即计算机最多存储64位二进制数。 但是需要注意的是Number包含了我们常说的整形、浮点型,相比较于整形而言,会有一位存储小数点的偏移位,由于存储二进制时小数点的偏移量最大为52位,计算机存储的为二进制,而能存储的二进制为62位,超出就会有舍入操作,因此 JS 中能精准表示的最大整数是 Math.pow(2, 53),十进制即9007199254740992 大于9007199254740992的可能会丢失精度

因此对于java后端返回的一个大整数,如基于前面说到的雪花算法生成的id,前端js接收处理时,就可能出现精度问题

接下来我们以Thymeleaf模板渲染引擎,来介绍一下对于大整数的精度丢失问题的几种解决方案

查看更多

分享到

【DB系列】 自定义雪花算法生成分布式id

系统唯一ID是我们在设计一个系统的时候常常会遇见的问题,比如常见的基于数据库自增主键生成的id,随机生成的uuid,亦或者redis自增的计数器等都属于常见的解决方案;本文我们将会重点看一下业界内大名鼎鼎的雪花算法,是如何实现分布式id的

查看更多

分享到

【DB系列】 SQL执行日志打印的几种方式

sql日志打印,再我们日常排查问题时,某些时候帮助可以说是非常大的,那么一般的Spring项目中,可以怎么打印执行的sql日志呢?

本文将介绍三种sql日志打印的方式:

  1. Druid打印sql日志
  2. Mybatis自带的日志输出
  3. 基于拦截器实现sql日志输出

查看更多

分享到

【WEB系列】 基于JWT的用户鉴权实战

再传统的基于session的用户身份认证方式之中,用户相关信息存储与后端,通常基于cookie来携带用户的会话id,然后后端在基于会话id查到对应的用户身份信息;区别于session的身份认证方式,jwt作为一个基于RFC 7519的开发标准,提供了一种通过JSON形式的web令牌,用于在各系统之间的安全可信的数据传输、身份标识

本文将主要介绍jwt的相关知识点,以及如何基于jwt来实现一个简单的用户鉴权方案

查看更多

分享到

【基础系列】自定义属性配置绑定极简实现姿势介绍

使用过SpringBoot应用的小伙伴应该对它配套的配置文件application.yml不会陌生,通常我们将应用需要的配置信息,放在配置文件中,然后再应用中,就可以通过 @Value 或者 @ConfigurationProperties来引用

那么配置信息只能放在这些配置文件么? 能否从db/redis中获取配置信息呢? 又或者借助http/rpc从其他的应用中获取配置信息呢?

答案当然是可以,比如我们熟悉的配置中心(apollo, nacos, SpringCloudConfig)

接下来我们将介绍一个不借助配置中心,也可以实现自定义配置信息加载的方式,并且支持配置的动态刷新

查看更多

分享到

【基础系列】 编程式属性绑定Binder

SpringBoot中极大的简化了项目中对于属性配置的加载方式,可以简单的通过 @Value, @ConfigurationProperties 来实现属性配置与Java POJO对象、Bean的成员变量的绑定,那如果出现一个某些场景,需要我们手动的、通过编程式的方式,将属性配置与给定的pojo对象进行绑定,我们又应该怎么实现呢?

查看更多

分享到