- 博客(136)
- 收藏
- 关注
原创 Spring 源码学习 15:finishBeanFactoryInitialization(重点)
Spring 源码学习 15:finishBeanFactoryInitialization(重点)
2024-12-27 17:42:49
945
原创 Spring 源码学习 14:initApplicationEventMulticaster
Spring 源码学习 14:initApplicationEventMulticaster
2024-12-27 17:27:59
652
原创 Spring 源码学习 12:registerBeanPostProcessors
Spring 源码学习 12:registerBeanPostProcessors
2024-12-27 17:10:28
754
原创 Spring 源码学习 11:invokeBeanFactoryPostProcessors
invokeBeanFactoryPostProcessors
2024-12-27 17:00:07
987
原创 Spring 源码学习 10:prepareBeanFactory 和 postProcessBeanFactory
prepareBeanFactory 和 postProcessBeanFactory
2024-12-27 16:25:41
338
原创 Spring 源码学习 07:ClassPathBeanDefinitionScanner
ClassPathBeanDefinitionScanner
2024-12-27 15:42:29
341
原创 Spring 源码学习 06:AnnotatedBeanDefinitionReader
Spring 源码学习 06:AnnotatedBeanDefinitionReader
2024-12-27 15:24:59
628
原创 Spring 源码学习 17:循环依赖
singletonObjects:缓存某个beanName对应的经过了完整⽣命周期的beanearlySingletonObjects:缓存提前拿原始对象进⾏了AOP之后得到的代理对象,原始对象还没有进⾏属性注⼊和后续的BeanPostProcessor等⽣命周期singletonFactories:缓存的是⼀个ObjectFactory,主要⽤来去⽣成原始对象进⾏了AOP之后得到的代理对象,在每个Bean的⽣成过程中,都会提前暴露⼀个⼯⼚,这个⼯⼚可能⽤到,也可能⽤不到,
2024-12-27 14:46:03
952
原创 Spring 源码学习 04:初始化容器与 DefaultListableBeanFactory
初始化容器与 DefaultListableBeanFactory
2024-12-20 18:35:59
249
原创 spring 源码分析
这边通过缓存中的 ObjectFactory 拿到的 bean 实例虽然拿到的是 “不完整” 的bean 实例,但是由于是单例,所以后续初始化完成后,该 bean 实例的引用地址并不会变,所以最终我们看到的还是完整 bean 实例。(2)二级缓存earlySingletonObjects:判断bean是否存在AOP,不存在AOP保存半成品的bean(属性暂未填充),存在AOP保存代理bean的beanProxy(目标bean还是半成品的)refresh() 方法是 Spring 上下文启动的核心方法。
2024-12-09 17:25:09
1501
原创 Error occured while trying to proxy to: localhost:3006/nccloud
Error occured while trying to proxy to: localhost:3006/nccloud
2024-11-20 00:03:14
385
转载 基于idea的YonBuilder Premium开发者工具(原NCC开发插件)使用说明
基于idea的YonBuilder Premium开发者工具(原NCC开发插件)使用说明
2024-11-19 23:02:14
212
原创 spring boot 项目实现,Easy Excel 实现导入导出功能(一)
前言Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI
2024-07-29 16:28:24
347
原创 Java常用10种排序算法
快速排序是一种分治思想的排序算法,它的基本思想是通过一趟排序将待排记录分隔成独立的两部分,其中一部分记录的关键字均比另一部分记录的关键字小,然后再分别对这两部分记录继续进行排序,以达到整个序列有序的目的。选择排序是一种简单的排序算法,它的基本思想是每次从待排序的元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的元素排完。基数排序的时间复杂度为O(d(n+k)),其中d为最大元素的位数,n为待排序元素的个数,k为桶的个数。桶排序的时间复杂度为O(n),其中n为待排序元素的个数。
2024-07-29 16:28:05
920
原创 redis场景应用
字符串(String):字符串是 Redis 最基础的数据类型,它存储的是二进制安全的数据,可以是数字、字符串或二进制数据。由于 Redis 的字符串是二进制安全的,因此可以用来存储图片、视频等二进制数据。有序集合(Sorted Set):有序集合是一种特殊的集合,其中的每个元素都会关联一个分数,通过分数可以对集合进行排序。列表(List):列表是一种基于字符串的线性表数据结构,可以存储多个有序的字符串元素。集合(Set):集合是一种无序的字符串集合,其中的每个元素都是唯一的,且没有重复的元素。
2024-07-29 16:26:09
217
原创 Redis缓存与数据库一致性问题
先更新缓存,再更新数据库。先更新数据库,再更新缓存。正常情况,二者没有差别,都能保证缓存数据与数据库数据的一致性。数据一致性问题主要发生在第一步执行成功,第二步执行失败的场景。先更新缓存,再更新数据库在更新缓存成功、更新数据库失败的场景中,读取到的数据为更新后的最新值,但数据库中存储的是更新前的旧值,造成数据一致性问题。一旦缓存失效,就会从数据库中加载得到更新前的旧值,对业务造成影响。先更新数据库,再更新缓存。
2024-07-26 15:10:45
1001
原创 ConcurrentHashMap原理
在JDK 1.8中,ConcurrentHashMap已经抛弃了Segment分段锁机制,但是保留了Segment属性,用于序列化。存储结构采用数组+链表或者红黑树的组合方式,利用CAS+Synchronized来保证并发更新的安全。并发粒度进一步细化到每一个Bucket。引入红黑树结构,节点数超过指定值时,自动将链表转换成红黑树。原因是:链表查询的时间复杂度为O(n),红黑树查询的时间复杂度为O(log(n)),节点较多时,可大大提升性能。反之,节点变少时(默认小于6时),还会由红黑树,转换为链表。
2024-07-22 11:44:28
917
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人