源码解析
杨小帆_
沉下心来做技术
展开
-
从实践 APT 到深入理解 Lombok
文章目录一、概述1.1 起因1.2 疑问二、前提2.1 Java 编译器的工作流程2.2 关于 Lombok2.3 关于 Javac 的源码三、求证3.1 Lombok 中的注解和 Spring 中的注解有什么区别?3.2 Lombok 到底是生成新的 Java 源文件还是修改已有的 Java 源文件?3.3 如果是修改已有的 Java 源文件那 Lombok 又是怎么实现的呢(源码解析)?3.3...原创 2019-12-13 19:05:05 · 1535 阅读 · 1 评论 -
源码解析 Java 的 compareAndSwapObject 到底比较的是什么?
一、引题 今天在写一个无锁队列的小项目时用到了 Java Unsafe 包中的 compareAndSwapObject 方法,也就是比较并交换 Java Object ,对于这个方法以前都仅是停留在使用阶段,对底层源码的探究比较少,所以今天就打开源码探究一下该方法的底层到底是怎样实现的,其方法中的这个比较对于 Java Object 来说到底比较的是什么?二、源码探究2.1 Java ...原创 2019-12-03 19:40:20 · 14277 阅读 · 7 评论 -
Zookeeper 源码解析——服务端与客户端网络通信
文章目录一、概述二、涉及的核心类2.1 核心类简介三、核心源码解析3.1 Standalone 模式下建立 Netty 网络连接3.2 配置 Netty3.3 接收并处理请求3.4 发送响应四、源码总结4.1 接收请求4.2 发送响应五、内容总结5.1 ByteBuffer.slice()5.2 Netty.CompositeByteBuf5.3 零拷贝队列六、思考5.1 为什么 Zookeepe...原创 2019-11-23 09:56:50 · 747 阅读 · 0 评论 -
Zookeeper 源码解析——客户端网络通信
文章目录一、概述二、 Zookeeper 中的 RPC 网络数据结构2.1 协议数据结构2.2 核心数据结构 Packet三、核心源码解析3.1 建立 Netty 网络连接3.2 SendThread 从 outgoingQueue 获取并发送 Packet3.3 同步版 RPC 调用流程(Create API)3.3.1 创建 Packet 并入队 outgoing (且 Packet.Wait...原创 2019-11-21 20:56:26 · 549 阅读 · 0 评论 -
Spring 源码解析——SpringMVC 源码解析(@Controller 和 @RequestMapping 的作用机制)(四)
目录一、概述二、功能简介2.1RequestMappingHandlerMapping2.2RequestMappingHandlerAdapter三、类继承树3.1RequestMappingHandlerMapping3.2RequestMappingHandlerAdapter四、源码解析4.1 扫描 Handler 并将其注册为映射关系(Requ...原创 2019-10-14 18:46:59 · 1178 阅读 · 0 评论 -
Spring 源码解析——SpringMVC 源码解析(初探 HandlerMapping、HandlerExecutionChain 和 HandlerAdapter)(三)
目录一、概述二、功能介绍和部分源码解析2.1 HandlerMapping2.2 HandlerExecutionChain2.3 HandlerAdapter三、内容总结写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述通过上一篇博文中对SpringMVC 处理请求流程的源码分析,已经对 SpringMVC 中...原创 2019-10-12 20:11:55 · 719 阅读 · 1 评论 -
Spring 源码解析——SpringMVC 源码解析(SpringMVC 处理请求流程)(二)
目录一、概述二、流程图(第一版)三、源码分析3.1 DispatcherServlet 接收请求3.2 DispatcherServlet 处理请求3.3 DispatcherServlet 分发请求(核心处理逻辑)3.4 HandlerAdapter 调用流程(RequestMappingHandlerAdapter)—— 调用处理器方法3.5HandlerA...原创 2019-10-11 21:05:25 · 508 阅读 · 0 评论 -
Spring 源码解析——SpringMVC 源码解析(Spring 整合 Spring MVC )(一)
目录一、概述二、涉及技术2.1 SPI 机制2.2 Servlet 中的ServletContainerInitializer 接口2.3Spring MVC 中的层级容器(Context Hierarchy)及其配置三、源码解析(基于注解配置)3.1Spring Web 容器初始化器(示例代码仅提供思路引导)3.2调用 Spring Web 容器初始化器...原创 2019-10-09 15:13:51 · 902 阅读 · 1 评论 -
Spring 源码解析——IOC 源码解析(BeanPostProcessor 系列之 InitDestroyAnnotationBeanPostProcessor)(七)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在前面的博文中我们已经陆陆续续的分析了一个比较核心的 BeanPostProcessor 实现类,并对 BeanPostProcessor 的整个体系进行了一个大概的梳理,在本篇博文中我们将继续探索另一个与我们经常使用的 @PostConstruct 和 @PreDestroy 注解密切相关的 ...原创 2019-10-05 15:04:14 · 2202 阅读 · 2 评论 -
Spring 源码解析——IOC 源码解析(BeanPostProcessor 系列之体系概述)(六)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在前面的 BeanPostProcessor 系列博文中我们已经对几个常用的 BeanPostProcessor 实现类的源码进行了解析,但是在分析的过程中我慢慢的发现因为缺少对 BeanPostProcessor 整个体系的认知和了解,导致对每一个 BeanPostProcessor 实现类的...原创 2019-10-04 18:43:52 · 690 阅读 · 0 评论 -
Spring 源码解析——AOP 源码解析(BeanPostProcessor 系列之 AbstractAutoProxyCreator)(一)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在前面的两篇关于BeanPostProcessor 的系列博文中我们分别分析了有关属性自动注入以及 *Aware 相关接口的代码实现原理,这两个部分从一定程度上来说更贴合于 Spring 当中的 IOC 功能,在这篇文章中我们会来分析一个新的 BeanPostProcessor,即Abstr...原创 2019-10-03 17:39:56 · 984 阅读 · 0 评论 -
Spring 源码解析——IOC 源码解析(BeanPostProcessor 系列之 AutowiredAnnotationBeanPostProcessor)(五)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在前面的一篇博文中我们已经分析了ApplicationContextAwareProcessor 这个 BeanPostProcessor实现类,在这篇博文中我们将继续前行来分析 Spring 当中另一个至关重要的AutowiredAnnotationBeanPostProcessor,这...原创 2019-09-30 19:50:56 · 1469 阅读 · 2 评论 -
Java J.U.C 中 AQS 子类 ReentrantLock 源码分析(一)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述对于 Java 中的 JUC 包大家应该都是非常熟悉的,JUC 的全称是 Java.util.concurrent ,翻译过来也就是 Java 并发编程工具类包,在这个包中有许多在我们并发编程过程中经常使用到的线程安全的容器类和同步锁等一些组件,而在这个包中很多的线程安全都是基于基础底层的 AQ...原创 2019-09-16 18:36:17 · 468 阅读 · 1 评论 -
Java J.U.C 中 AQS 子类 ReentrantLock 源码分析(三)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述这篇博文是整个ReentrantLock 源码分析的第三篇博文,在第一篇博文中我们主要分析了ReentrantLock 的 lock 加锁(独占式同步状态获取)代码流程,在第二篇博文中我们主要分析了ReentrantLock 的 unlock 解锁流程并分析了在解锁过程中遇到的一些细节问题...原创 2019-09-18 19:05:29 · 163 阅读 · 0 评论 -
Spring 源码解析——@Configuration 作用及其实现原理(一)
目录一、概述二、相关技术2.1 @Configuration 作用2.2 BeanDefinition 和BeanDefinitionMap2.3 CGLIB 简介三、源码解析3.1 概述3.2register(Bean 注册流程)3.3 refresh(BeanClass 的替换)四、内容总结写文章不易,转载请标明出处。同时,如果你喜欢我的文...原创 2019-09-21 20:29:49 · 3673 阅读 · 0 评论 -
Spring 源码解析——IOC 源码解析(Bean 的扫描、注册和实例化)(一)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在前面的博文中我们已经对 Spring 当中 @Configuration 注解的源码部分进行了大概的分析,但其实在分析 @Configuration 源码的过程中我们已经涉及到了 Spring 的 IOC 流程,大概分析了 Spring 容器对Bean 的注册流程,以及大概了解了 BeanD...原创 2019-09-23 17:52:24 · 568 阅读 · 0 评论 -
关于 Android 中 TabLayout 下划线适配文字长度解析(附清晰详细的源码解析)
温故而知新 坚持原创 请多多支持一、问题背景假期在做项目的时候,当时遇到了一个需求就是需要使用 TabLayout + ViewPager 来实现一个上部导航栏的动态效果,并且希望下划线的长度等于或者小于导航栏中文字的宽度,当时从网上查询资料的时候是发现目前大概是有这么三种思路来实现,第一种比较简单,就是直接通过自定义 CustomView 并在代码中动态设置给 Tab 即可,而另一种...原创 2019-04-08 20:46:04 · 4844 阅读 · 0 评论 -
Spring 源码解析——IOC 源码解析(聚焦 Bean 实例化和初始化流程)(二)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述本来是想在这篇博文中分析 Spring 解决 Bean 循环依赖的思路和源码, 但是在经过自己的梳理之后发现想讲清楚说明白这个解决的方式着实不容易,因为在它的解决代码是整个嵌入在 Bean 的实例化和初始化的代码之中的,加之上一篇博文中对于 Bean 的实例化和初始化分析比较笼统,所以打算通过这...原创 2019-09-25 21:20:02 · 346 阅读 · 0 评论 -
Spring 源码解析——IOC 源码解析(单例 Bean 的循环依赖解决方案)(三)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在上一篇博文中我们已经重点分析了 Bean 的实例化和初始化的主体流程,在这篇博文中我们会在其基础上进一步探究 Bean 的初始化过程,并通过源码来分析在 Spring 中是怎样解决Bean 循环依赖问题的。但是在这里我们需要明确的一点是我们在这里所分析的是 Bean 的作用范围为单例(S...原创 2019-09-27 19:03:44 · 450 阅读 · 0 评论 -
Spring 源码解析——IOC 源码解析(BeanPostProcessor 系列之 ApplicationContextAwareProcessor)(四)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述这是已经 Spring 源码解析的第四篇博文了,在前面的博文中我们已经通过源码大致分析过了 Spring 当中 Bean 实例化和初始化的流程,并且详细分析了 Spring 当中解决单例 Bean 循环依赖问题的方案,在前面的博文中我们跳过了很多 Spring 实例化和初始化过程中的细节代码,这...原创 2019-09-28 20:05:12 · 545 阅读 · 0 评论 -
Java J.U.C 中 AQS 子类 ReentrantLock 源码分析(二)
写文章不易,转载请标明出处。同时,如果你喜欢我的文章,请关注我,让我们一起进步。一、概述在上一篇博文中我大概分析了ReentrantLock 的 lock 的整个流程,但是因为涉及的源码比较多,整篇博文的内容比较复杂,因此特地补上几篇博文来继续介绍ReentrantLock 中之前遗漏的知识点和存在一些问题的知识点,希望能够帮助大家和更好的理解ReentrantLock 的源...原创 2019-09-17 21:34:20 · 207 阅读 · 0 评论