spring的三级缓存如何解决循环依赖

什么是循环依赖? 官方解释 虽然官方提倡使用构造方法来依赖注入,但是构造方法解决不了循环依赖,可以使用setter方法来解决。 个人理解 a对象持有b对象的引用,b对象持有a对象的引用。这样说好像察觉不到问题,可以试想下当我们自己创建a对象时,是不是先要调用a对象的构造方法,然后再进行属性的填充,这才是一个完整的a对象,但是当调用对象a的构造方法后,发现需要先拿到完整的b对象,则需要先完成b对象的创建,然后调用b对象的构造方法,b对象进行属性填充时,发现需要a对象,然后无限的循环下去。。。 ...

August 17, 2023 · 3 min

动态代理

CGLIB动态代理使用介绍 一、前言 说到动态代理,开发者们第一时间想到的就是JDK动态代理和cglib动态代理。了解Spring的同学应该知道,Spring AOP功能的底层实现,就是使用的这两种动态代理。 两者区别 JDK的动态代理机制只能代理实现了接口的类,而没有实现接口的类就不能实现JDK的动态代理; cglib动态代理是针对类来实现代理的,它的原理是对指定的目标类生成一个子类,并覆盖其中方法实现增强。使用cglib实现动态代理,完全不受代理类必须实现接口的限制。 cglib底层采用ASM字节码生成框架,使用字节码技术生成代理类,比使用Java反射效率要高。 因为cglib动态代理采用的是继承,所以不能对final修饰的类进行代理。 ...

August 17, 2023 · 4 min

分布式事务概览

分布式事务概览 分布式理论 前置理论知识: CAP C 强一致性 主节点写入新的数据,必须能从从节点读到最新数据,否则错误 A 可用性 保证每个服务尽可能都能响应结果 P 分区容忍性 正常情况下,服务节点之间通信是正常的,可能因为网络原因,节点之间通信失败,将整个服务分成了多个区,仍然可以保证整个服务的运行 BASE basically Available 基本可用 系统出现故障,保证核心功能可用 Soft state 软状态 出现一个中间状态,表示动作进行中 eventually consistent 最终一致性 2pc 两阶段提交(协议) 主要角色 事务管理器(协调者 tm) ...

July 19, 2023 · 4 min

websocket网络协议

WebSocket是一种在单个TCP连接上进行全双工通信的网络协议。它提供了一种在客户端和服务器之间进行实时、双向通信的方式,允许服务器主动向客户端推送数据,而不需要客户端发起请求。 ...

May 22, 2023 · 3 min

Redis 6.0的新特性:多线程、客户端缓存与安全

你好,我是蒋德钧。 Redis 官方在今年 5 月份正式推出了 6.0 版本,这个版本中有很多的新特性。所以,6.0 刚刚推出,就受到了业界的广泛关注。 所以,在课程的最后,我特意安排了这节课,想来和你聊聊 Redis 6.0 中的几个关键新特性,分别是面向网络处理的多 IO 线程、客户端缓存、细粒度的权限控制,以及 RESP 3 协议的使用。 ...

May 18, 2023 · 11 min
总访问量 总访客数