02 2023 档案

摘要:1 前言 我们上节把我们 mapper 里的 sql节点以及我们的增删改查都解析了,那么最后回来就剩下两块没看了,一块是我们的 mapper 跟我们的接口绑定,一块就是我们在解析的过程中报错的会放进未完全的集合中,这里来做最后的努力。那我们来看下这两块的东西。 2 源码分析 2.1 接口绑定 Map 阅读全文
posted @ 2023-02-28 21:22 酷酷- 阅读(60) 评论(0) 推荐(0) 编辑
摘要:1 前言 上一节我们分析了 resultMap 的解析,这节就该是我们的 sql 以及我们常写的 select、update、delete、insert。 贴一下我在调试中的XML哈,方便你们跟着调试: <sql id="mySql"> select * from ${tableName} </sq 阅读全文
posted @ 2023-02-28 20:52 酷酷- 阅读(203) 评论(0) 推荐(0) 编辑
摘要:1 前言 上节我们的 mapper 解析了关于二级缓存 cache、cache-ref的解析,这节我们解析 resultMap,建议你们边看的时候边调试,resultMap 的东西很多,首先你要知道 resultMap 标签节点中都能写什么,知道有什么,再去看每一步具体是要解析什么。 关于这节的文档 阅读全文
posted @ 2023-02-26 23:06 酷酷- 阅读(177) 评论(0) 推荐(0) 编辑
摘要:1 前言 这节我们分析一个大头,也是我们平时写的最多的,就是我们写的增删改查了,我们来看下它的解析。 既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要来定义 SQL 映射语句了。 但首先,我们需要告诉 MyBatis 到哪里去找到这些语句。 在自动查找资源方面,Java 并没有提供一 阅读全文
posted @ 2023-02-26 18:07 酷酷- 阅读(205) 评论(0) 推荐(0) 编辑
摘要:1 前言 这节我们继续我们的配置文件分析,本节我们看看typeHandler和objectWrapperFactory的解析。 2 源码分析 2.1 解析typeHandlers MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理 阅读全文
posted @ 2023-02-26 16:02 酷酷- 阅读(250) 评论(0) 推荐(0) 编辑
摘要:1 前言 上一节我们在解析别名的时候,会有个package的标签,会获取包名下的所有类的信息,就是用到了ResolverUtil这个工具去获取的,那么我们本节看下这个工具的真实面目。 2 源码分析 那么我们先来整体看下类的结构信息: 2.1 内部接口及其实现 可以看到内部一个Test接口,和两个具体 阅读全文
posted @ 2023-02-26 12:28 酷酷- 阅读(63) 评论(0) 推荐(0) 编辑
摘要:1 前言 这节我们介绍Mybatis又一个出现的基础设施VFS,他是干啥的呢,就是加载指定目录下的文件的。 前置知识:java.net.URL这个类知道么,不要看名字把它觉得就是我们浏览器里的URL,它不是奥。它叫统一资源定位符有:http、https、file和jar。 2 源码分析 看源码前我们 阅读全文
posted @ 2023-02-26 12:16 酷酷- 阅读(111) 评论(0) 推荐(0) 编辑
摘要:1 前言 在上一节我们分析了properties和settings,这节我们分析下别名、环境变量、插件以及ObjectFactory的解析。 2 源码分析 2.1 解析typeAliases typeAliases 标签下可以有多个package和多个typeAlias <!ELEMENT type 阅读全文
posted @ 2023-02-25 23:35 酷酷- 阅读(51) 评论(0) 推荐(0) 编辑
摘要:1 前言 上一节我们分析了一个基础设置的PropertyTokenizer,这节我们分析下Reflector,它是Mybatis对于一个类的信息收集者,也就是解析类的相关信息放到自己的集合里,对于它的管理有一个ReflectorFactory,会对他进行缓存和管理,ReflectorFactory是 阅读全文
posted @ 2023-02-25 22:25 酷酷- 阅读(99) 评论(0) 推荐(0) 编辑
摘要:1 前言 上一节我们在解析settings的时候,说到了分词器PropertyTokenizer,这种东西我理解为框架背后默默付出的辛勤工作者。Mybatis本身可以看作一个舞台,我们可能会看到舞台的表演者比如Mapper、比如SqlSessionFactory等,那么PropertyTokeniz 阅读全文
posted @ 2023-02-25 19:59 酷酷- 阅读(122) 评论(0) 推荐(0) 编辑
摘要:1 前言 好了,这章开始我们进入Mybatis的知识的源码分析,首当其冲的就是配置文件的解析,我们知道在实用Mybatis的时候,我们的自定义sql都是在XML文件中进行编写的,甚至以前我们的一些数据源信息也是在里边的,那么我们就看看Mybatis是如何解析的吧。 首先我们来看下XML可以配置哪些东 阅读全文
posted @ 2023-02-25 19:32 酷酷- 阅读(159) 评论(0) 推荐(0) 编辑
摘要:1 前言 实用小技巧哈,调试接口的时候怎么快速把浏览器中的请求快速复制到Postman或者Apifox中呢。 前提:会浏览器右键检查的吧....这个你不知道的话过分了奥 2 操作展示 2.1 浏览器复制curl 2.2 导入到Postman 2.3 导入到Apifox 2.4 导入到Jmeter 教 阅读全文
posted @ 2023-02-24 22:30 酷酷- 阅读(724) 评论(0) 推荐(0) 编辑
摘要:1 前言 我们开始看数据库层面的一个框架,一个系统的根基就是数据了,那么跟数据库打交道的我们使用最多的就是Mybatis了,Mybatis-Plus又是基于Mybatis做的封装,就像SpringBoot基于Spring做的强大能力封装一样。 那么对于Mybatis的源码你又看过多少呢,在看之前我们 阅读全文
posted @ 2023-02-23 08:11 酷酷- 阅读(95) 评论(0) 推荐(0) 编辑
摘要:1 前言 不知道你在调试的时候,有没有发现我们的通知器链上首个元素会给我放进来一个ExposeInvocationInterceptor类型的通知器,看下图是不是,我们在之前其实也说过一次只是一句话带过了,那我们本节看下它的进场时机和具体是做什么的,可以怎么做。 2 源码分析 2.1 进场时机 pu 阅读全文
posted @ 2023-02-23 07:08 酷酷- 阅读(428) 评论(0) 推荐(0) 编辑
摘要:1 前言 上一节我们说了通知器链的而顺序问题,那么这节我们该看看它的执行了。我们拿JDK代理的执行过程来看哈。 2 源码分析 2.1 方法通读 对于JDK动态代理的,那我们再回来看下当获取到要执行的通知器链后,要做什么呢,看源码: // 创建方法调用器 并要执行的拦截器传进去 MethodInvoc 阅读全文
posted @ 2023-02-22 23:28 酷酷- 阅读(128) 评论(0) 推荐(0) 编辑
摘要:1 前言 上节我们看过了代理对象执行方法的大致过程,我们留着通知器链的具体执行没说,这节我们先讲解一下通知器的执行顺序。 通知器或者叫拦截器,叫法不一样,这里我们还是都统一叫通知器吧。 这是我的AOP类,方便调试。 1 @Component 2 @Aspect 3 public class MyAs 阅读全文
posted @ 2023-02-22 22:16 酷酷- 阅读(287) 评论(0) 推荐(0) 编辑
摘要:1 前言 不知道你现在清晰了没,我们一路从AOP的基础概念,到AOP配置的解析,到AOP在Bean的生命周期的切入时机以及创建代理的过程一步步走下来,脑瓜还清晰不,那我们是不是就该到了真正去调用某个对象方法的时候,就是调用了代理对象的某个方法,是不是就是执行代理类的增强逻辑代码啦。我们还是拿JDK为 阅读全文
posted @ 2023-02-21 20:31 酷酷- 阅读(129) 评论(0) 推荐(0) 编辑
摘要:1 前言 我们看过Spring对AOP配置的解析以及通知器的筛选,也看过了动态代理的实现,这节那我们就看下Spring创建代理的过程,为下节看代理具体的执行过程做铺垫哈。 那我们从哪看起呢?还记得创建代理的那个切入时机么?也就是这里 那么让我们开始看createProxy。 2 源码分析 2.1 方 阅读全文
posted @ 2023-02-21 08:28 酷酷- 阅读(329) 评论(0) 推荐(0) 编辑
摘要:1 前言 本节我们讲一下动态代理的实现过程,并且从源码分析下产生过程。看之前先简单看几个基础知识: 函数接口BiFunction<T, U, R> : R apply(T t, U u); 就是参数是T、U返回一个结果R 比如: (s1, s2) -> s1.toString() + s2.toSt 阅读全文
posted @ 2023-02-20 19:06 酷酷- 阅读(84) 评论(0) 推荐(0) 编辑
摘要:1 什么是代理 代理是指给某一个对象提供一个代理对象,代理对象持有原对象的引用。一句话通过代理对象增强原对象的功能,比如在原对象调用一个方法的前后进行日志、事务操作等。Spring AOP就使用了代理模式。 2 代理的分类 代理又分为静态代理和动态代理,所谓静动站在我们自己来说就是静态需要我们自己去 阅读全文
posted @ 2023-02-20 16:51 酷酷- 阅读(224) 评论(0) 推荐(0) 编辑
摘要:1 前言 我们了解过AOP配置解析以及AOP的切入时机,那么这篇我们看看,AOP是如何给某个Bean筛选合适的通知器。 2 源码分析 2.1 方法通读 我们从AOP切入时机中,为当前bean筛选通知器开始继续看起: protected Object[] getAdvicesAndAdvisorsFo 阅读全文
posted @ 2023-02-20 07:55 酷酷- 阅读(89) 评论(0) 推荐(0) 编辑
摘要:1 前言 我们分析了AOP不管是XML配置还是注解方式的解析过程,这篇我们简单来说下AOP在Spring中对bean对象生命周期的一个入场时机,其实我们在讲解IOC的时候,已经点了一下这篇我们再来简单说一下。 2 源码分析 切入时机准确的说有两个地方: createBean里的resolveBefo 阅读全文
posted @ 2023-02-20 07:51 酷酷- 阅读(394) 评论(0) 推荐(0) 编辑
摘要:1 前言 上一篇我们讲解了XML方式解析AOP的配置,这篇我们来解析下注解方式的解析过程。 2 代码准备 @Component @Aspect public class MyAspect { @Pointcut("execution( * com.virtuous.demo.spring.cycle 阅读全文
posted @ 2023-02-20 07:36 酷酷- 阅读(163) 评论(0) 推荐(0) 编辑
摘要:1 前言 IOC的一些东西我们说过了,这篇我们开始看看AOP,面向切面编程,他也是Spring的一个核心功能,他的作用就是给我们的Bean创建代理对象,进行功能增强,比如我们的事务、日志等,我们主要讲讲他AOP的切入时机,也就是什么时候进场的,以及是怎么解析我们的注解或者在XML里配置的AOP功能, 阅读全文
posted @ 2023-02-19 22:58 酷酷- 阅读(74) 评论(0) 推荐(0) 编辑
摘要:1 前言 这篇我们看一下,我们的AOP代码是怎么被Spring加载的进去的,那么分两种一种是XML配置的,一种就是我们常用的注解,我们从源码先看下XML方式的都是怎么被加载解析的。 2 代码准备 <context:component-scan base-package="com.virtuous.d 阅读全文
posted @ 2023-02-19 21:29 酷酷- 阅读(115) 评论(0) 推荐(0) 编辑
摘要:1 前言 @PostConstruct、@PreDestory这两个注解大家应该有用过吧,我们这篇分析一下主要是PostConstruct这个注解的解析时机和执行时机。 2 源码分析 2.1 解析时机-doCreateBean的applyMergedBeanDefinitionPostProcess 阅读全文
posted @ 2023-02-18 23:37 酷酷- 阅读(169) 评论(0) 推荐(0) 编辑
摘要:1 前言 我们的bean经过的应该就剩下initializeBean这个方法,这个方法对上一步的populateBean属性填充完,做最后的剩余工作,这个里边的东西相比之前几个那可真是让人看着开心加愉快了,我们来看。 2 源码分析 2.1 方法通读 看一下 initializeBean 方法的源码: 阅读全文
posted @ 2023-02-18 22:38 酷酷- 阅读(62) 评论(0) 推荐(0) 编辑
摘要:1 前言 好了,我们这篇文章讲解下populateBean,也就是bean的属性填充,并不仅仅是设置值,还有很多事情要做的。比如你的属性值类型转换、表达式解析等,关于属性填充的一些知识,本章先介绍这里。接下来,我们深入到源码中,从源码中了解属性填充的整个过程。 2 源码分析 2.1 populate 阅读全文
posted @ 2023-02-18 19:03 酷酷- 阅读(359) 评论(0) 推荐(0) 编辑
摘要:1 前言 获取Bean我们大概都了解过了,这篇我们着重讲一下在获取bean的时候,出现的一个循环依赖的问题,这面试可以说是一道必问的题了,看的时候多想多看,别钻死牛角尖,我看的时候我陷入了一个牛角尖,我就在纠结为什么要用三个缓存来解决循环依赖呢,其实一个缓存也可以解决丫,干嘛要用三个呢。我总是陷入这 阅读全文
posted @ 2023-02-16 23:38 酷酷- 阅读(55) 评论(0) 推荐(1) 编辑
摘要:1 前言 上一文,我们讲解了getBean里的一些过程,这节我们详细来讲一讲创建bean,也就是createBean。createBean默认的实现类是AbstractAutowireCapableBeanFactory,createBean会调用doCreateBean和createBeanIns 阅读全文
posted @ 2023-02-16 08:18 酷酷- 阅读(88) 评论(0) 推荐(1) 编辑
摘要:1 前言 在本篇文章中,我们将会详细分析BeanFactory的getBean(String)方法实现细节及所调用的方法。 2 源码分析 首先我们先通读一下doGetBean方法,了解里边重点的几个步骤,然后我们再分析每个步骤里边具体都做了什么。 2.1 方法通读 方法的注释都写在里边了,涉及的东西 阅读全文
posted @ 2023-02-15 15:16 酷酷- 阅读(112) 评论(0) 推荐(1) 编辑
摘要:1 前言 IDEA拉Spring源码,源码是Gradle管理依赖的,但是报错Unable to find method 'org.gradle.api.artifacts.result.ComponentSelectionReas 我的IDEA有2019、2021的 2 解决办法 用IDEA2021 阅读全文
posted @ 2023-02-15 08:14 酷酷- 阅读(705) 评论(0) 推荐(0) 编辑
摘要:1 前言 了解了JVM的结构、运行时数据区的组成部分,继而了解一下JVM的一些常用配置参数。 2 参数分类以及常用命令 在Java虚拟机的参数中,有3种表示方法: 标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容; 非标准参数(-X),默认jvm实现这些参数的功能,但是并不保证 阅读全文
posted @ 2023-02-13 21:50 酷酷- 阅读(233) 评论(0) 推荐(0) 编辑
摘要:1 前言及准备工作 Spring老生常谈,JavaWeb程序员的必备,程序员不看源码不懂源码,路走不长,所以耐心看,边看操作。 本文是 Spring IOC源码分析系列文章的导读文章,将会着重介绍 Spring 的一些使用方法和特性,为后续的源码分析文章做铺垫。 另外需要特别说明一下,本系列的源码分 阅读全文
posted @ 2023-02-13 16:15 酷酷- 阅读(143) 评论(0) 推荐(0) 编辑
摘要:1 前言 JVM的内存模型,想必大概都清楚了,可以看之前的文章,有讲解。那么JVM每个内存模型里都存哪些内容呢,本文来追一下。 2 内存模块存储内容 运行时数据区大概分5部分,方法区、堆、程序计数器、本地方法栈、虚拟机栈。 虚拟机栈也叫线程栈,是运行时的单位,解决程序运行时的逻辑控制;堆是存储的单位 阅读全文
posted @ 2023-02-13 13:54 酷酷- 阅读(747) 评论(0) 推荐(0) 编辑
摘要:1 前言 讲多了Class文件、类加载过程,我们的Class文件就要进到JVM内存里了,那就先来了解下JVM内存模型都进行了哪些演变。 主要演变的就是:1.7、1.8 都是对方法区中的改变 概念的统一:我看一些文章说方法区、有永久代、有元空间这三者的关系是什么呢 (1)方法区可以看作是JVM逻辑上管 阅读全文
posted @ 2023-02-13 07:26 酷酷- 阅读(105) 评论(0) 推荐(0) 编辑
摘要:1 前言 Class文件了解过了,那么接下来就要看JVM表演了。 JVM,在Java语言可以说是重中之重的存在,没有它Java程序是跑不起来的,Java的一次编译多次运行,也更离不开JVM的存在。 2 JVM整体结构 对于JVM存在很多的版本比如:HotSpot、早期的Sun ClassicVM、J 阅读全文
posted @ 2023-02-12 14:57 酷酷- 阅读(95) 评论(0) 推荐(0) 编辑
摘要:1 前言 JVM的入口数据就是每一个Class文件,我们上一篇,仔细分析了Class文件中的每个字节所代表的含义,那么它是如何加载进JVM的,这一篇我们来讲解。 Class文件的解释运行时数据本质是C++对象,也叫做KClass对象,这些运行时数据在JDK7及之前放在永久代(PermGen),JDK 阅读全文
posted @ 2023-02-11 19:15 酷酷- 阅读(249) 评论(0) 推荐(0) 编辑
摘要:1 简介 Class文件是一组以字节为基础单位的二进制流。 JVM的数据入口就是我们平时代码编译后的Class文件,那么要搞懂JVM的原理之前,就要了解Class文件里边都是什么,才能更好的理解JVM原理。 内容比较多,希望看到的小伙伴也能自己动手,边看边解析一个自己的Class文件,光看不操作其实 阅读全文
posted @ 2023-02-10 07:51 酷酷- 阅读(193) 评论(0) 推荐(0) 编辑
摘要:1 问题描述 类似这种,现有数组1、2、3、4、5、6、7、8,编程实现对该数组随机排序的算法题,因为Collections类有一个随机排列集合的方法,所以我们直接看一下人家是怎么写的。 2 源码分析 // 主要的思想就是:从第n个元素开始跟它前边的1到n-1的随机其中一个元素进行交换 // 1、如 阅读全文
posted @ 2023-02-10 07:18 酷酷- 阅读(52) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示