![](https://img-blog.csdnimg.cn/cf4d8144e7ba4daf80fa732b64151096.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
源码
文章平均质量分 65
JDK 以及第三方框架源码解析
【非典型Coder】
混迹IT行业十来年,拧过螺丝做过架构,当过讲师,闲暇之余写写文章~
展开
-
J.U.C——CyclicBarrier 实现原理
1. 通过 generation 来实现循环使用,每一轮结束后,都会重置 generation;2. CyclicBarrier 底层和 CountDownLatch 一样是基于 AQS 实现的;3. CyclicBarrier 不需要代码手动移除(trip)屏障,线程数量达到(count==parties)自动触发。原创 2024-02-20 14:42:00 · 87 阅读 · 0 评论 -
J.U.C——CountDownLatch 的实现原理
1. 调用await 方法的线程处于 WATING 状态,虽然源码中说是 "block";2. 等待线程和任务线程通过核心方法 wait 和 countDown 来协调工作,完成特定场景需求。原创 2024-02-20 11:12:20 · 74 阅读 · 0 评论 -
HashMap 死循环
1. 死循环的问题根本原因是多个线程操作(准确地说是修改)同一条链表,导致链表循环,其他线程读取的时候就会发生死循环。2. 虽然 1.8 扩容时链表改成了尾插法,但是仍然无法保证多线程数据安全,毕竟 HashMap 本身就不是线程安全的。原创 2023-12-25 15:59:59 · 400 阅读 · 0 评论 -
String 之 substring 方法的前世今生
jdk 1.6 的 substring 内存泄露风险你知道吗?原创 2022-10-10 11:01:15 · 147 阅读 · 0 评论 -
Lombok 虽好,使用时需谨慎
Lomboklombok 相信大家都不陌生了,一句话带过去:就是一系列注解在编译的时候给大家生产一些常用的基础代码,比如 构造方法、get/set、以及 builder 方式提供的链式编程。今天讨论的就是使用 @Builder 时带来的意想不到的坑。@Builder 的坑@Builder@Datapublic class User{ private Long id; private String username;}通过该注解,你后续可以采用链式编程,比如:原创 2022-03-25 16:28:02 · 376 阅读 · 0 评论 -
Bean 的生命周期之初始化
之前的文章《Spring IOC 中循环依赖,两幅图搞定》中介绍了 bean 的创建过程:1. 创建 createBean2. populateBean3. initializeBean第一步,通过反射拿到构造方法创建 bean; 第二步,填充 bean 的属性,如果发现被依赖的属性不存在则会首先创建被依赖属性,然后填充,里面涉及的循环依赖的问题已经讲过;第三步初始化是我们今天来聊的话题。先看代码: protected Object initializeBean(final Str原创 2022-03-08 15:51:56 · 1124 阅读 · 0 评论 -
Netty 源码之 channel 注册和 eventLoopGoup
一、NioServerSocketChannel 注册到 bossGroup (evenLoop)二、bossEventLoop (使用selector)轮询一旦有客户端连接,执行 read 方法:继续跟进 unsafe.read 方法:再进去, read 方法并不是真正的系统调用 read, 而是accetp 连接!!!!获取连接后,pipeline (channelHandler链)开始工作:首先就是ServerBootstrapAc...原创 2022-03-04 16:45:33 · 358 阅读 · 0 评论 -
深度解析 intern 方法
String 类的 intern 方法你真的了解吗?原创 2022-02-23 18:51:15 · 1303 阅读 · 2 评论 -
Spring 事务与自定义AOP 是如何执行的?
我们知道 事务是基于 AOP 实现的,如果我们再项目中用到了事务,同时又需要做一些自定义的 AOP 操作,这个时候会不会冲突呢?先说结论:不会冲突,并且事务会把自定义的AOP 操作也包含在内。这事就得从 CglibAopProxy 聊起,spring 在 bean 初始化时会给使用了事务的对象创建代理。 public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) ..原创 2021-11-02 19:08:42 · 466 阅读 · 0 评论 -
Tomcat 如何加载Spring?
1. Tomcat 提供的接口SCIs 通过SPI 方式被注册和使用,所有MVC 框架必须包含 META-INF/services/javax.servlet.ServletContainerInitializer 文件,并且在里面指定自己的实现类。public interface ServletContainerInitializer { /** * Receives notification during startup of a web application of t原创 2021-08-17 18:12:50 · 237 阅读 · 2 评论 -
一看就懂,Spring IOC 三级缓存如何解决循环依赖
目录Bean 创建时机Spring 创建 bean 三步曲三级缓存Bean 创建时机AbstractApplicationContext.javapublic void refresh() { finishBeanFactoryInitialization(beanFactory);}protected finishBeanFactoryInitialization(beanFactory) { // Instan...原创 2021-08-13 19:21:30 · 536 阅读 · 1 评论 -
Sitemesh
更新中。。。。原创 2016-04-16 15:09:04 · 197 阅读 · 0 评论