- 博客(6)
- 收藏
- 关注
原创 spring bean的循环依赖的解决
DService实例属性注入D1Service实例,D1Service实例属性注入DService实例,通过调试看spring是如何解决DService实例与D1Service实例的相互依赖的情况的。
2023-10-29 18:44:48
36
原创 spring懒加载解决构建器注入循环依赖的原理
2、获取引用对象时,判断是否加了@Lazy注解,是的话,生成aop代理对象返回。如果没有@Lazy注解,则返回null。构造了一个demo,在Bservice中使用懒加载的方式注入Aservice,通过调试了解其处理过程。另外,如果还有一个A1类也通过@Lazy注解注入了B的实例,那么A1和A注入的代理对像是不一样的。注意,不能在构建方法中打印注入对象,否则会引起提前获取真正的引用,导致循环依赖的出现。1、在构造器注入的时候,获取构造器注入的引用对象。
2023-10-27 12:22:43
120
原创 ConcurrentHashMap之segment[j]的地址偏移计算
在ConcurrentHashMap中,通过Unsafe类的cas操作来设置或获取segment[j]的值。代码如下:而SBASE取值为:UNSAFE.arrayBaseOffset用来获取数组第一个元素的偏移地址。通过该偏移地址可以获取或设置数组的第一个元素。SSHIFT取值为:UNSAFE.arrayIndexScale用来计算一个数组元素的引用占的字节数,32位为...
2019-01-14 18:10:27
340
原创 HashMap之环形链表
在多线程操作HashMap的情况中,可能会导致环形链表的产生。而环形链表产生后,会在后续遍历时出现死循环,导致CPU过高的情况。以下简单描述下导致环形链表发生的情形。假设之前链表中的数据为e1->e2->null,扩容后也在同一链表中(比如key为null与key为””的数据就在同一链表中,index为0)。transfer代码如下:线程一:执行593行的next=...
2019-01-14 10:36:40
1251
1
原创 Spring Cloud之zipkin日志文件化
方案背景Zipkin 作为一个链路跟踪工具,用来在微服务中记录每个链路调用的用时情况,链接调用情况包括:(1)服务作为客户端从发起请求(cs)到收到响应(cr)的时间。该情况一般在zuul网关或者存在一个服务调用另一个的时间存在。(2)服务作为服务端从接收到请求(sr)到把将结果发送给客户端的时间(ss,即outputStream flush前的时间)。一般来说,如果涉及一个服...
2019-01-07 13:36:29
1634
原创 SpringCloud之个性化日志追踪
方案背景日志跟踪技术使得查找一次调用所产生的日志信息变得方便。当需要排查一些问题时,可以根据报错的上下文进行分析,给问题诊断带来方便。在spring cloud微服务中,单体应用的日志跟踪技术已经不能满足需求,因而一般采用Spring Cloud Sleuth组件提供的功能来完成分布式日志跟踪。Spring Cloud Sleuth组件会在zuul网关中,对于每个请求生成一个日志id,之后...
2019-01-04 12:59:37
4390
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人