![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 95
墨枢Mosul
天地辽阔,我要独占一方;世间千言,我亦自成一家。如此,也不负儿时轻狂!
展开
-
Spring循环依赖源码分析
说到Spring的循环依赖,我们常会提起过三级缓存,那三级缓存究竟是什么?又有什么作用?Spring是怎么实现循环依赖的?带着这些问题,我们一起来开启这篇文章。原创 2023-10-24 18:11:07 · 269 阅读 · 0 评论 -
Spring动态代理源码分析
说到Spring的核心功能,Spring AOP是始终绕不过去的一个点。而说到Spring AOP,开发中我们经常会用到这个功能,比如:日志记录、权限校验、事务管理等。我们也大概知道它基于动态代理实现的,那除了Spring AOP,Spring还有哪些地方使用到了动态代理?Spring中的动态代理又是如何实现的?让我们跟着这篇文章来一探究竟。原创 2023-10-20 19:13:23 · 404 阅读 · 0 评论 -
Spring核心扩展点BeanDefinitionRegistryPostProcessor源码分析
我们知道,只要在一个Java类上加上@Component、@Service、@Controller等注解,就可以被加载到Spring容器中,除了以上方式,加了@Bean和@Import好像也可以将对象添加到Spring容器中,究竟Spring是如何实现这些功能的呢?让我们一起来一探究竟。原创 2023-10-17 13:18:07 · 679 阅读 · 0 评论 -
synchronized锁膨胀过程
锁的状态总共有四种:无锁状态、偏向锁、轻量级锁和重量级锁。随着锁的竞争,锁可以从偏向锁升级到轻量级锁,再升级的重量级锁(但是锁的升级是单向的,也就是说只能从低到高升级,不会出现锁的降级)。JDK1.6中默认是开启偏向锁和轻量级锁的,我们也可以通过-XX:-UseBiasedLocking来禁用偏向锁。原创 2023-10-08 23:25:33 · 378 阅读 · 0 评论 -
记一次Spring源码分析(01.准备工作及java知识补充)
关于Spring我就不再多介绍了,本文主要介绍Spring源码阅读的准备工作。说到spring框架,我们都知道是其基于反射和动态代理实现的。那我们就来看看反射和动态代理……1.源码获取及编译 直接从GitHub获取,我就不再其他描述了。2.Spring流程图 Spring的本质是一个bean对象的容器,里面存放了bean对象。那容器最核心的是:存储、获取(查询)、生命周期等,例如我们java中Map,put()存储元素,get()获取元素。那.原创 2021-03-27 23:39:03 · 238 阅读 · 0 评论 -
JVM篇(05.垃圾回收)
关于JVM垃圾回收,我们知道有各种垃圾回收算法和各种垃圾回收器。本文将对这些知识进行介绍。1.垃圾回收什么是垃圾?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要回收的垃圾。如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占用的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至可能导致内存溢出。1.1 内存溢出1.2 内存泄漏2.垃圾回收算法3.垃圾回收器 我们先看下classFile的.原创 2021-03-25 01:44:17 · 440 阅读 · 1 评论 -
JVM篇(04.JVM内存结构[运行时数据区])
我们最熟悉的JVM内存结构就是堆(heap)和栈(stack),除了堆和栈,还有什么?这就是我们今天要讨论的内容。1.JVM内存结构图 我们先看下JVM结构图 JDK1.8中的内存结构 从上图可以发现:JVM运行时数据区(Runningtime Data Area)有如下几个组成部分:程序计数器(Program Counter Regist.原创 2021-01-13 00:53:21 · 508 阅读 · 0 评论 -
JDK1.8HashMap源码解析
本文HashMap源码解析是基于JDK1.81. 数据结构 JDK 1.8中,HashMap底层是由“数组+链表+红黑树”组成,如下图,而在 JDK 1.8 之前是由“数组+链表”组成。 JDK1.8中HashMap引入红黑树的主要原因是为了解决链表太长查找的性能变差的问题。2. 继承关系 3. HashMap 下面我们一起来分析HashMap类的源码。3.1 相关字段 /** * 默原创 2021-01-05 00:08:45 · 210 阅读 · 0 评论 -
JVM篇(03.阅读class字节码)
class文件是JVM的输入,是JVM实现平台无关、技术无关的基础。java虚拟机规范中定义了class文件的结构。class文件格式概述 我们先看下classFile的结构(查阅java 虚拟机规范)ClassFile{ u4 magic; u2 minor_version; u2 major_version; u2 constant_pool_count; cp_info co.原创 2020-11-10 09:38:00 · 170 阅读 · 0 评论