![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
源码解析
文章平均质量分 92
源码解析
爪哇缪斯
这个作者很懒,什么都没留下…
展开
-
知道CountDownLatch是做什么的,那你知道它的底层是如何实现的吗?
当子线程执行完某个任务之后,调用。原创 2023-08-29 10:19:18 · 51 阅读 · 0 评论 -
(一)Dubbo源码解析:增强SPI
在Dubbo的架构设计中,如何可以通过“类插拔”的方式,对其功能进行灵活的扩展或者削弱,那么,SPI起到了极其关键的作用。本篇文章作为分析Dubbo源码的第一篇文章,我们先暂时放下“服务注册发布流程”、“服务启动流程”、“请求处理流程”……,只有搞懂了这个问题,我们后续再看其他功能代码的时候,才会更加游刃有余、畅快无阻~原创 2023-08-21 14:42:08 · 57 阅读 · 0 评论 -
(八)Spring源码解析:Spring MVC
的。原创 2023-07-28 13:25:20 · 146 阅读 · 0 评论 -
(七)Spring源码解析:Spring事务
当我们希望在Spring中开启事务的时候,我们需要在配置中增加,如下所示:file我们在Spring项目中搜索“”,可以发现与事务相关的处理类为,在该类中,注册了解析器,代码如下所示:file在类中我们需要关注的就是parse(...)方法,它负责执行BeanDefiniton的解析操作。这里会通过mode属性来确定是采用aspectj的方式进行解析还是采用AOP代理的方式进行解析,具体逻辑如下所示:file由于常用的就是采用AOP代理的方式进行解析操作,所以此处我们只需要关心类的。原创 2023-07-17 23:50:39 · 396 阅读 · 0 评论 -
(六)Spring源码解析:Spring AOP源码解析
根据上面我们使用AOP的示例,我们可以看到是通过配置来开启动态代理的,因此我们可以将它为AOP源码分析的切入点。请见下图所示,我们在全项目中搜索了,然后发现注入了新的实现类——那么下面,我们来看一下类的具体实现,由于AspectJAutoProxyBeanDefinitionParser实现了,所以,我们来看一下类是如何实现parse方法的。下面,我们先看一下类的方法的具体实现逻辑。原创 2023-07-02 12:25:59 · 362 阅读 · 0 评论 -
图解LeetCode——189. 轮转数组
但是由于nums的数组长度是有限的,所以被移动越界的数组就会被移动到原数组的头部位置。,然后按位映射进行元素的复制操作。写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的。看做是一个无限长的数组的话,其实这种轮转操作,就相当于。向右轮转 1 步: [7,1,2,3,4,5,6]向右轮转 2 步: [6,7,1,2,3,4,5]向右轮转 3 步: [5,6,7,1,2,3,4]通过上面解法,我们发现必须要创建一个同等长的数组。的值去轮转数组,如果我们将数组。,将数组中的元素向右轮转。原创 2023-05-10 13:39:55 · 46 阅读 · 0 评论 -
(三)Spring源码解析:自定义标签解析
步骤1:创建实体步骤2:定义一个文件描述组件内容步骤3:创建接口的实现类,用来解析XSD文件中的定义和组件定义。步骤4:创建实现类,目的是将组件注册到Spring容器中。步骤5:编写和文件,默认位置是目录下步骤6:在配置文件中引入对应的命名空间以及XSD之后,就可以配置了步骤7:进行测试在第2讲中,我们已经介绍了关于默认标签的解析过程。那么我们还是需要将视角在回到方法上来,从下图源码截图中我们可以看出来,我们首先是来判断和是否是默认表空间,即:通过来进行判断:下面我们来看一下方法的具体实现,具体来说有如下3原创 2023-03-27 17:26:38 · 80 阅读 · 0 评论 -
(二)Spring源码解析:默认标签解析
根据上面的演示,我们可以知道。原创 2023-03-13 15:18:50 · 135 阅读 · 0 评论 -
(一)Spring源码解析:容器的基本实现
是整个bean加载的核心部分,是Spring注册及加载bean的默认实现。集成自DefaultListableBeanFactory,不同的地方是在XmlBeanFactory中使用了自定义的XML读取器,实现了个性化的BeanDefinitionReader读取。原创 2023-02-02 15:40:41 · 399 阅读 · 1 评论 -
不了解SynchronousQueue?那ArrayBlockingQueue和LinkedBlockingQueue不会也不知道吧?
方法,在这个方法中,是将head指针指向的元素指向出队操作。的位置上,然后再将putIndex加1,来指向下一次插入的下标位置。此处需要注意的是,如果加1后的putIndex等于了数组的长度,那么说明。(因为putIndex是从0开始的),那么此时将putIndex置为0,即待插入的指针指向了数组的头部——通过它的特性,我们可以从阻塞队列中逐一的获取需要的元素。方法,在这个方法中,将新添加的元素放入到链表的队尾,就完成了入队的操作。的操作,所以更在意的是队列是否为空,那么此时我们采用的就是。........原创 2022-07-31 15:29:36 · 236 阅读 · 0 评论 -
多图详解阻塞队列——SynchronousQueue
在线程池(ThreadPoolExecutor)的构造函数中,有一个代表阻塞队列的入参——BlockingQueue,它是一个接口,只要实现了这个接口的所有实现类,都可以作为阻塞队列而应用在线程池中。如下是线程池ThreadPoolExecutor的构造方法:BlockingQueue作为阻塞队列接口,提供了4种插入/移除元素的方法。根据插入/移除元素失败后的不同处理方式,分为:在我们日常的编码中,可以根据不同的使用场景,选择不同的插入/移除元素的方法。如下截取自BlockingQueue类的源码注释:基于原创 2022-07-12 03:29:02 · 1317 阅读 · 0 评论 -
ThreadLocal源码解析
ThreadLocal源码解析原创 2022-05-26 22:05:11 · 2935 阅读 · 10 评论 -
万字图文——HashMap源码解析(包含红黑树)
万字图文之HashMap源码解析,多图解释,针对每行代码都有讲解。非常详细。原创 2021-12-12 17:14:40 · 491 阅读 · 0 评论