自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 滑动窗口限流算法实现流量控制

在大型互联网项目中,瞬时的请求量是成千上万的,但系统的处理能力往往存在临界阈值。当流量洪峰来临时,如何避免系统被击穿?。这里我将梳理分布式系统中的实现,并基于Redisson的RRateLimiter给出可落地的解决方案。

2025-04-11 00:42:38 295

原创 国密算法工具SmUtil实现sm2加密

最近公司在做敏感字段的商密,需要去使用加密工具来实现加密,这里简单来梳理一下sm2加密解密过程。

2025-03-28 14:58:56 357

原创 如何基于RMI实现远程调用

在这篇博客中,我们将深入探讨如何使用Java RMI(远程方法调用)构建一个简单用户信息查询功能。我将逐步分析代码实现,并解释每个模块的功能。

2025-03-12 23:03:23 913

原创 如何在websocket连接握手的同时完成对用户token的解析?

设想这样一个场景,用户在非首次连接的时候,已经携带了我们发放的token,我们应该如何在用户连接的同时完成对用户的身份检验。在以往的场景中,我们登录的流程如下,先建立websocket连接,然后携带token向服务端进行身份认证。我们能不能做到如下图所示的流程,建立websocket连接的时候就带上token,从而完成对用户的身份认证?

2025-01-25 21:01:01 1109

原创 微信扫码登录功能实现

在开始之前我们需要去微信公众平台申请开发者资质,这样才可以获取自己的appid和secret。申请完之后我们需要配置回调的地址和token,后面会再application.yml中带着大家配置。在修改URL的时候我们需要保证我们的程序正在运行。

2025-01-24 17:56:59 1744 1

原创 CompletableFuture入门

CompletableFuture是由Java 8引入的,在Java8之前我们一般通过Future实现异步。CompletableFuture实现了CompletionStage接口和Future接口,对上述两个接口进行了拓展,可以对多个Future进行组合处理。

2025-01-11 20:00:16 426

原创 使用 netty 实现 websocket 通信

这里推荐使用**netty框架**来实现websocket,首先netty是**nio**基于事件驱动的**多路复用框架**,使用单线程或少量线程处理大量的并发连接;其次,netty提供了**丰富的功能和组件**,可以灵活的构建自定义的网络应用。它具有强大的编解码器和处理器,可以轻松处理复杂的协议和数据模式。同时,Netty的扩展性也很好,可以根据需要**添加自定义组件**,例如我们可以用netty的pipeline方便的进行前后置的处理,可以用netty的心跳处理器来检查连接的状态等。

2024-12-28 18:37:24 1438

原创 @Valid注解只能校验规定好的参数类型,需要在运用在抽象方法中应该如何校验?

参数校验在抽象方法中需要适配多中参数怎么实现?可以使用Validator来用于验证任何Java对象。

2024-12-22 17:58:45 426

原创 前后端异步缓存策略

最近在开发一个IM项目时,发现最大最明显的瓶颈是带宽,后端需要传递给前端的数据有太多需要频繁请求且重复的数据,于是想设计一个前后端的缓存框架。首先,我发现在传递的消息中,比较耗费资源的字段多半是:头像,昵称……这一类的冗长字段,于是决定将这些直接存在前端,在前后端交互是传递的只有:uid和其他必要标识的关键信息,头像、昵称这类的数据直接通过uid去缓存中获取。

2024-11-28 21:59:16 353

原创 同类调用时,为什么调用带有切面逻辑注解的方法会失效?

时,spring将不会为我们生成一个代理对象来调用方法,调用的是原对象,所以spring无法切入到这次调用,也就无法保证相关的逻辑正确执行。中调用业务方法,这个时候spring会为我们生成一个代理对象,从而让代理对象来调用方法。在了解这个问题之前,我们需要先了解spring管理bean的原理,首先Spring采用的时。的方式实现对bean进行管理,他为我们每一个class生成一个代理对象。运行后发现,确实捕获到了我们的异常,但是事务没有回滚,最后还是修改了名字。在一般的业务调用中,我们都是在。

2024-11-22 00:53:49 274

原创 每次手写分布式锁逻辑太繁琐!自己写注解一劳永逸

在开发的过程中,每次需要手写分布式锁的执行逻辑感觉十分的繁琐,而且很浪费时间,想着自己开发一个和自己项目规范契合的注解,下面是注解的源码以及开发的过程。最后是我的一个工具类,用来通过el表达式来获取方法的传参,这里在学习过程中发现了spring中有一个。加在方法上即可直接实现分布式锁的逻辑,如果需要指定分布式锁名字的前缀,可以在注解中加上。来获取默认的前缀名,然后el表达式来获取我们要的参数拼接成分布式锁的完整名称。现在我们不需要再去写繁琐的分布式锁逻辑,只需要在需要使用分布式锁的方法上加上。

2024-11-17 22:30:39 249

原创 服务器端口占用问题

​。

2024-11-06 14:19:50 568 1

原创 RabbitMQ进阶--保证消息的可靠性

在我们使用消息队列时,是否考虑过一个问题,如果在发送消息的时候存在网络波动,会引发哪些问题?举个例子,我们在购物的时候,已经支付完成,但是消息没有正确的被消费,前端发送请求查询支付状态时,肯定是查询交易服务状态,会发现业务订单未支付,而用户自己知道已经支付成功,这就导致用户体验不一致。因此,这里我们必须尽可能确保MQ消息的可靠性,即:消息应该至少被消费者处理1次(这里为什么是至少一次在后面业务的幂等性判断会讲解)

2024-09-20 17:21:08 2309 2

原创 RabbitMQ超详细入门篇!

exchange:交换机,负责消息路由。生产者发送的消息由交换机决定投递到哪个队列。

2024-09-19 21:06:08 1235 1

原创 一文帮你搞定RabbitMQ的消息转换器!!

方法来实现消息的发送,当我们发送基本数据类型的消息时,MQ可以正确的读取我们的消息并且以消息原本的形式展现给我们。而在数据传输时,它会把你发送的消息序列化为字节发送给MQ,接收消息的时候,还会把字节反序列化为Java对象。我们可以使用JSON方式来做序列化和反序列化,先引入jackson相关的依赖。这里可以消费者可以正常的接收到发送的消息,我们使用高级数据结构Map试一试。再次执行发送消息的代码,发现可以正确的显示出来发送的消息。方法的源码,这里可以看到,方法接收消息是用的是。

2024-08-13 14:48:04 334

原创 docker安装mysql并实现数据卷挂载

还不会使用docker部署mysql?还不知道什么是数据卷挂载?三分钟帮你搞定!

2024-07-27 20:12:01 3797 1

空空如也

空空如也

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

TA关注的人

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