自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 Spring源码之循环依赖

文章目录前言一、什么是循环依赖1. 循环依赖有几种情况二、循环依赖的解决1.getSingleton(beanName)2 为什么不能解决构造函数注入方式的循环依赖2.疑问前言上篇我们讲了bean的初始化流程,要搞懂循环依赖,必须要先清除流程,不清楚的请移步上一篇文章。这篇我们就来讲讲Spring是如何解决循环依赖的一、什么是循环依赖循环依赖,其实就是循环引用,就是两个或者两个以上的 bean 互相引用对方,最终形成一个闭环,如 A 依赖 B,B 依赖 C,C 依赖 A。如下图所示:循环

2021-02-25 15:29:27 182

原创 Spring源码分析之getBean流程分析(循环依赖)

文章目录前言一、getBean(String beanName)1.1 getSingleton(beanName)1.1.1 三级缓存1.2 单例Bean的创建1.2.1 singletonFactory.getObject()1.2.2 createBeanInstance(beanName, mbd, args)二、循环依赖前言当Spring的资源解析器把解析好的bean加载到IOC容器后,我们要向获取某个bean实例,只需getBean(beanName)即可,这篇文章就是分析这个方法的流程,

2021-02-25 14:21:11 317

原创 HashMap源码,这一篇给你从盘古开天讲起

文章目录前言十万个为什么一、HashMap的起源1.1 为什么要有HashMap?1.1.1 总结1.2 怎么存储Node呢?1.2.1 怎么实现快速查找呢?1.2.2 问题的解决1.2.2 Hash算法二、扩容机制1.引入库2.读入数据三、十万个为什么总结前言十万个为什么数组长度为什么要是2^njdk8后为什么要调整转为红黑树,不转为二叉搜索树?什么时候转为红黑树为什么是大于8为什么是数组长度大于64的时候链表插入的时候是选择头插还是尾插呢?HashMap的扩容时机是什么时候在学

2021-01-25 10:34:30 185

原创 Java并发编程 -- Volatile解析

文章目录前言一、Java内存结构和Java内存模型1.1 Java内存结构1.2 Java内存模型1.2.1 硬件内存架构1.2.2 Java内存模型1.2.3 JMM和Java运行时数据区的关系1.2.4 JMM和硬件内存结构的关系二、使用步骤1.引入库2.读入数据总结前言Volatile是轻量级的Synchronized。那么Volatile轻在哪,它的实现原理是什么样的?要想了解这些就要搞清楚java内存模型(JMM)等内容一、Java内存结构和Java内存模型1.1 Java内存结构

2020-12-21 15:13:03 152

原创 并发编程 -- Synchronized浅析

文章目录前言一、Synchronized是什么?1.1 临界区1.2 竞态条件1.3 互斥和同步1.4 原子性 一致性 有序性1.4.1 原子性1.4.2 一致性1.4.3 有序性二、在哪里加锁?三、工作原理1. 对象头1.1 面试题1.2 总结2 锁升级2.1 偏向锁2.1.1 加锁流程2.1.2 锁的撤销2.1.3 批量重偏向2.1.4 批量撤销2.1.5 总结2.2 轻量级锁2.2.1 加锁2.2.2 解锁2.3 重量级锁2.3.1 加锁总结前言在并发编程中,有一个关键字搞java的人应.

2020-12-15 20:25:06 132

原创 JAVA并发编程之AQS源码解析二

手撕AQS源码(1) – 独占锁的释放文章目录手撕AQS源码(1) – 独占锁的释放前言一、锁的正确使用姿势思考二、ReentrantLock的锁释放1. lock.unlock();2. release(int arg)2.1 tryRelease(arg)思考2.2 回到release(int arg)2.3 unparkSuccessor(Node node)思考问题疑问一疑问二1. LockSupport.unpark(s.thread)1.1 shouldParkAfterFailedAcqu

2020-12-11 10:44:48 112

原创 java并发编程之AQS

手撕AQS源码(1) – 独占锁的获取文章目录手撕AQS源码(1) -- 独占锁的获取前言一、AQS是什么?二、Java并发工具类的三板斧1.状态2.队列3.CAS三 AQS核心实现状态Owner队列分析:sync queueCAS操作总结四 举例分析:FairSync in ReentrantLock加锁流程分析tryAcquire总结两个小疑问acquireQueued(addWaiter(Node.EXCLUSIVE), arg)addWaiter(Node.EXCLUSIVE)小总结思考enq

2020-12-09 17:49:50 181

原创 @RequestParam和@RequestBody用法区别

@RequestParam和@RequestBody用法区别注解理解:@RequestParam@RequestBody用法总结:从注解角度:@RequestBody:@RequestParam:请求方式为get时: 修饰的参数可以是map也可以是多个基本数据类型参数,但不可以是对象请求方式为post时: 因为post请求有请求体, 所以要分为请求体的数据格式来讨论1 如果请求数据格式为form-...

2019-11-26 13:59:48 601

原创 spring boot使用AOP技术统一处理日志

spring boot使用AOP技术统一处理日志spring boot学习笔记之使用AOP技术统一处理日志话休繁絮,直接进入正题.spring boot项目中使用aop技术处理日志本文代码的前提是:1 AOP技术的基础知识2 idea已安装了lombok插件(至于怎么安装的,请自行百度,很简单的)3 使用idea创建spring boot项目com.jsone.springbootlo...

2019-01-22 11:21:28 352 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除