- 博客(282)
- 资源 (1)
- 收藏
- 关注
原创 【Redis】Redis实现分布式锁
Redisson的分布式锁自带自动续期机制,提供专门用来监控和续期的Watch Dog看门狗,如果操作的共享资源的线程还未执行完的话,Watch Dog会不断延长锁的过期时间,进而保证锁不会因为超时而释放。基于Lua脚本保证解锁的原子性。Redis在执行Lua脚本时,可以以原子性的方式执行,确保原子性。默认每过10秒,看门狗会将锁的超时时间设置为30秒。给key设置过期时间。
2025-04-08 09:55:05
230
原创 【ES】深度分页
ES的结构可以简化为协调节点(Coordination g Node),与数据节点(Data Node)。协调节点将请求转发给数据节点,数据节点返回满足条件的TopN文档信息(至少包含id,score)。协调节点从k*TopN的文档信息中选出最终的TopN的结果的id发送给数据节点。数据节点根据id查询数据,返回给协调节点。ES分页的三种方式。
2025-03-21 16:42:13
607
原创 【SpringAOP】JoinPoint和ProceedingJoinPoint详解
在Spring AOP中,ProceedingJoinPoint是JoinPoint的子接口,它专门用于环绕通知(Around advice)。ProceedingJoinPoint包含了被通知方法的执行信息,同时可以访问被通知方法的信息和参数。可以通过使用ProceedingJoinPoint接口来实现更加灵活和精细的环绕通知逻辑。使用方式与JoinPoint一致。} } }try {
2024-12-19 10:36:25
395
原创 【SpringSecurity】SpringSecurity+JWT实现登录
Spring Security 是一个功能强大且高度可定制的身份验证和访问控制框架。它是为Java应用程序设计的,特别是那些基于Spring的应用程序。Spring Security是一个社区驱动的开源项目,它提供了全面的安全性解决方案,包括防止常见的安全漏洞如CSRF、点击劫持、会话固定等。:Spring Security可以处理用户的身份验证过程,即确认用户是否是他们声称的人。它可以使用多种机制来进行身份验证,例如表单登录、HTTP基本认证、OAuth2、JWT等。
2024-12-16 16:07:04
1277
原创 【Sa-Token】Sa-Token 中的 Session会话
解决这个问题的关键在于,虽然两个设备登录的是同一账号,但是两个它们得到的token是不一样的, Sa-Token针对会话登录,不仅为账号id分配了Account-Session,同时还为每个token分配了不同的Token-Session。在登录时产生的Session,是分配给账号id的,而不是分配给指定客户端的,也就是说在PC、APP上登录的同一账号所得到的Session也是同一个,所以两端可以非常轻松的同步数据。那么这种请求访问记录应该存储在哪里呢?放在 Account-Session 里吗?
2024-12-16 15:18:11
443
原创 Caused by: com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
在数据库连接 URL 中添加一个参数来允许公钥检索。这是解决这个问题的最直接方式。
2024-12-09 22:07:45
188
原创 【RabbitMQ】05-MQ可靠性
一旦出现消息堆积问题,RabbitMQ的内存占用就会越来越高,直到触发内存预警上限。此时RabbitMQ会将内存消息刷到磁盘上,这个行为成为PageOut. PageOut会耗费一段时间,并且会阻塞队列进程。因此在这个过程中RabbitMQ不会再处理新的消息,生产者的所有请求都会被阻塞。为了解决这个问题,从RabbitMQ的3.6.0版本开始,就增加了Lazy Queues的模式,也就是惰性队列。
2024-11-07 20:15:42
210
原创 【RabbitMQ】04-发送者可靠性
每个RabbitTemplate只能配置一个ReturnCallback,因此我们可以在配置类中统一设置。@Slf4j@Overridelog.error("触发return callback,");});由于每个消息发送时的处理逻辑不一定相同,因此ConfirmCallback需要在每次发消息时定义。@Test// 1.创建CorrelationData// 2.给Future添加ConfirmCallback@Override。
2024-11-07 19:30:38
559
原创 【SpringCloud】04-Gateway网关登录校验
微服务之间的相互调用不会经过网关,因此不会保存用户信息。使用OpenFeign的拦截器。将用户信息写入请求头中。将微服务连接器写在common模块。
2024-10-21 14:19:27
617
原创 【SpringCloud】02-Nacos注册中心
在cart-service的启动类上添加声明,扫描到ItemClient。在需要调用的包下面引入依赖。
2024-10-15 15:48:04
283
原创 【LeetCode周赛】第 418 场
给你一个长度为 3 的整数数组 nums。现以某种顺序 连接 数组 nums 中所有元素的 二进制表示 ,请你返回可以由这种方法形成的 最大 数值。注意 任何数字的二进制表示 不含 前导零思路:暴力枚举。
2024-10-07 17:18:33
780
原创 【JUC】21-JUC总结
如果共享资源被占用,需要一定的阻塞等待唤醒机制保证锁分配。这个机制基于CLH队列的变体实现,将暂时获取不到锁的线程加入队列中,这个队列就是AQS同步队列的抽象表现。它将要请求共享资源的线程及自身的等待状态封装成队列的结点对象,通过CAS、自旋以及LockSupport.park() 的方式,维护state变量的状态,使并发达到同步效果。
2024-09-24 14:18:21
769
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人