自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 资源 (3)
  • 收藏
  • 关注

原创 springboot源码学习-画流程图学源码

最近加班比较多,spring源码已经将主线撸了一遍,将学到的通过画图再梳理一遍,非常有效。因此springboot也通过画流程图来学习:一、Spring基于java-SPI扩展的SPI&spring boot启动和配置加载流程&条件装配&自定义属性类&自己写个中间件https://www.processon.com/view/link/5f66bb8bf346fb40fb9b4b87二、@springbootApplication(如何加载自动配置类、加载源码涉及的

2020-10-23 22:18:45 472

原创 spring源码学习-画流程图学源码

学习方式工作一直很忙,只能一点点学源码,但是这样很容易看一半就忘记前面的。因此我根据自己的需要,通过ProcessOn记录源码,通过画图完成源码的学习。花费了近一个月,画了一些流程和自己的见解。持续更新中。。。推荐大家使用,下面截出一部分图供了解:因为图片都比较大,无法截出来发出,因此在下面列出了对应的链接:ioc-主流程https://www.processon.com/view/link/5ed7c1ca0791297145ce2949ioc全流程https://www.process

2020-06-21 00:35:10 1114

原创 Autowired注入mapper类,如何去除警告

Autowired注入mapper类,去除警告

2023-02-16 15:56:02 393

原创 分区数据迁移生产问题解决:ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION

分区数据迁移生产问题解决:今天又学到了,哈哈背景:生产数据堆积过大,超10亿数据,需要将原数据表历史数据迁移到备份归档表中。生产执行脚本时出现异常:ORA-14097: column type or size mismatch in ALTER TABLE EXCHANGE PARTITION解决办法:根据字面意思是字段不一致导致的异常,因此问DBA要了生产源表的字段,和我要建立的备份表字段进行比对,发现字段内容一样。但是建备份表的建表语句,字段顺序与源表的字段顺序不一致。导致的这个错误。比如

2021-07-30 01:22:58 1098

原创 MAP-HashMap-ConcurrentHashMap 图解分析源码快速掌握底层

介绍最近有点时间,对map和ConcurrentHashMap的基本源码进行了学习,想搞清楚的看我这两张图解就够了MAP-HashMapMap-HashMap源码解析:put源码解析–>如何放入红黑树->hash表和红黑树分别如何扩容https://www.processon.com/view/link/60e9787c079129265422962eConcurrentHashMapConcurrentHashMap的图解分析、特有节点、put方法解析、总结与hashMap的核

2021-07-10 18:39:33 152

原创 JDK-synchronized的锁及锁升级源码解析,AQS两张图搞定源码

jdk源码图解学习线程创建(JVM源码分析)&&synchronized原理&&Monitor机制&锁的获取锁升级流程https://www.processon.com/view/link/60337d40e401fd0290e6a827AQS:并发多线程抢锁源码分析(debug跟踪)-条件队列栅栏 以CyclicBarrier为例&&源码分析CountDownLatch闭锁流程https://www.processon.com/view

2021-03-15 23:28:39 467 3

原创 IDEA控制台乱码解决方案大集合

目录一、idea安装目录下配置二、服务启动参数设置三、控制台字体四、设置idea编码格式五、配置项目的tomcat编码格式六、Idea的Help下设置全局编码格式一、idea安装目录下配置IntelliJ-IDEA\bin:idea.exe.vmoptionsidea64.exe.vmoptions全部加上-Dfile.encoding=utf-8二、服务启动参数设置-Dfile.encoding=utf-8三、控制台字体可能是控制台字体不对导致的乱码四、设置idea编码格式设

2021-02-04 16:07:31 163

原创 idea启动项目让控制台输出汇编代码

学习volatile时,想看底层源码,只能查看汇编代码。因此在启动参数加上:-XX:+UnlockDiagnosticVMOptions -XX:+PrintAssembly -Xcomp如图:但是启动就会报错:报错信息:Connected to the target VM, address: '127.0.0.1:58499', transport: 'socket'Could not load hsdis-amd64.dll; library not loadable; PrintAs

2020-12-16 19:34:45 830

原创 java基础回顾-jvm

通过画图的方式分析回顾一下JVM内存模型、简单分析一下常量的赋值过程、新生代老年代的GC过程、jvm类加载的过程详解、https://www.processon.com/view/link/5fce3c176376893e2c6d7406我很多学习的记录都在processon上完成的,欢迎大家克隆拿走...

2020-12-09 23:51:16 97

原创 java基础回顾-Stream流常用api、串行和并行流源码分析

一、default关键字1、简述概念default关键字:默认方法与冲突在Java中有一条亘久不变的定理:类只能单继承,接口可以多实现。Java8之前由于接口中的方法全部都是抽象方法,一个类如果同时实现两个拥有相同方法签名的接口并不会出现冲突,实现类只需要重写该方法即可。但是在Java8中出现了默认方法,这样一来就有可能会出现Java一直在避免的多继承问题——一个类从多个地方(类或接口)继承了有相同方法签名的方法。比如接口A有个方法和接口B的方法一样。一个实现类C实现了A和B,C的子类是D:

2020-12-03 01:14:51 221

原创 java基础回顾-Lambda表达式

一、简述Lambda表达式:注意表达式的方法体底层会将用到的局部变量默认加上final,如果在方法体中对方法外的变量进行修改时,是编译失败的本质上是一段匿名内部类,也可以是一段可以传递的代码。自动加了final的原因:涉及到闭包,即通过方法将局部变量包围住,对这个局部变量进行引用,这样会延长该变量的生命周期;会在编译时,自动给该变量加上final。即闭包的变量都是常量。因此后面也无法对这个变量进行操作。二、入门2.1配置idea不识别lambda表达式解决办法:第一步:File -->

2020-12-03 01:05:12 76

原创 oracle数据排重-两种分组方式

一、简述生产环境因为某些原因,上游系统防重出现漏洞,需要筛选出所有的重复数据,并对重复数据进行修改,修改重复数据的非第一次请求的数据状态。二、oracle的两种分组第一种就是很常用的group by但是这种分组无法查询非分组字段的数据。第二种:ROW_NUMBER () OVER (PARTITION BY 需要分组字段(比如 省码,活动编码)ORDER BY 排序字段(比如请求时间)) NUMnum:代表按指定字段进行分组后的每一条数据在相同省码,活动编码的数据的序号。排重就可以根据

2020-11-28 01:40:52 1337

原创 使用索引导致慢sql

简述问题首先生产上的一张十几亿量级的表,根据REQUEST_TIME 查询,时间较长,因此当时造了几千万数据,加一个时间字符串字段(带索引),sql执行的效率大大提高了。问题:生产上使用该sql,查询一个小时一直没有查询成功。使用不带索引的虽然慢,二十分钟就查询出来了。结合执行计划定位具体原因:原SQL查询:explain plan for SELECT COUNT(*) FROM 大表 WHERE REQUEST_TIME >= to_date('2000-07-01','yyyy

2020-10-23 22:54:08 364

原创 切面日志注解导致方法catch部分失效

问题描述由于项目日志查询由运维组管理,索取日志不方便。为了方便问题定位,需要写一个错误日志收集功能。实现思路编写一个工具类,在每个异常的部分和不符合条件打回的部分,通过工具类将异常信息或条件不符合的具体原因封装到实体类,发送到mq,由一个专门的接口监听将相关信息存储,便于后期问题的定位。工具类代码:/** * 异常日志收集工具类 * @author Administrator */@Componentpublic class CollectUtil { private final

2020-08-27 19:22:49 421

原创 记录开发小坑-实体类转Map&实体类复制

前述:日常开发中对bean操作,有很多小技巧:复制一个实体类的属性:使用spring的bean工具类://org.springframework.beans.BeanUtils包下:BeanUtils.copyProperties(空实体类对象,目标实体类对象);apache的公用工具类:也有复制目标实体类的属性到另一个实体类的方法://org.apache.commons.beanutils包下BeanUtilsBean.copyProperties(空实体类对象,目标实体类对象);

2020-08-22 16:51:46 1445

原创 项目优化-写个切面统一项目日志

文章目录思路整体思路:日志id传递问题:流程图具体demo:简单的自定义注解类:切面切点函数:环绕通知:思路整体思路:通过切面完成日志规整,提供针对类和方法的注解,通过需要打日志的主要方法加上注解,Controller和mq消费处这样的入口加上类注解,环绕通知来完成入参,执行时间的计算。后置通知和后置异常通知来完成threadLocal变量的释放,执行时间的打印和出参打印(threadLocal变量的释放只针对入口处,执行时间的打印和出参打印是针对所有加注解的地方)。日志id传递问题:为了将日志I

2020-08-22 14:49:44 230

原创 参数校验代码的一些思考_学源码

起因今天工作的时候,突然想到源码中的参数校验为何没有那么繁琐,而项目代码的校验就比较麻烦。记录一下思考的过程,后面再与同事讨论:过程比如service层对于方法入参校验处理:if(businessType == null){ return responseUtil.responseData("1", "业务类型不能为空", data);}if(businessType == null){ return responseUtil.responseData("1", "业务类型不能为空

2020-08-08 00:19:23 203

原创 源码-配置文件-如何跟踪学习

学习spring和mybatis源码中,发现一个小规律:NamespaceHandler类为核心关键,解析xml。不同的标签将由对应的nameSpaceHandler实现类,来解析处理。有助于学习和定位,因配置导致的问题,找到解析的源码,特记录一下。一、源码截图spring源码:mybatis-spring中间件二、具体例子:比如:spring配置aop<aop:aspectj-autoproxy proxy-target-class="true"/>对应的解析源码:

2020-08-07 21:35:33 123

转载 oracle索引(转载)

索引跳跃式扫描(INDEX SKIP SCAN)记录一下:https://book.51cto.com/art/201312/422441.htm

2020-07-23 10:41:04 67

原创 不能在加强for循环中remove,那具体原因是什么?

测试代码:List<String> list=new ArrayList<String>(); list.add("1"); list.add("2"); /* 方式1: for (int i = 0; i < list.size(); i++) { if (list.get(i).equals("2")){ list.remove(list.g

2020-07-16 23:33:59 762

原创 Oracle小于条件导致索引失效

ORACLE建索引的小发现基础索引建立创建一般索引创建唯一索引对订单表的ACCT_DATE进行查询:小于条件的执行计划: (小于等于执行计划与小于一样)SQL:执行计划:大于条件的执行计划: (大于等于执行计划与大于一样)SQL:执行计划:结论基础索引建立创建一般索引CREATE INDEX IDX_ORDER_TASK ON IC_GRANT_ORDER (ACCT_DATE ASC);推荐这种,如果需要唯一,可以单加一个唯一约束,这样以后改成非唯一只需要去除约束即可。创建唯一索引CREAT

2020-07-13 11:34:37 5295

原创 spring是会把@autowired注解注入的类的所有父类也注入进来。父类不用任何注解就可以被spring容器管理-源码底层告诉你

缘由学习spring-IOC后置处理器的第三次调用发现一个有意思的点,所以写出来记录一下。源码在研究ioc的bean的创建过程,org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#doCreateBean:在第三次后置处理器调用时的部分源码:// Allow post-processors to modify the merged bean definition. //允许后置处理器修改合并

2020-07-12 23:14:29 1340 1

原创 在git上弄一个自己的项目-方便家里和公司两台电脑更新项目

文章目录缘由上传项目:一、在自己的git建立一个空项目:二、项目上传git远程仓库缘由最近学习源码,出现一点问题:1、每天背着电脑公司家里来回跑,很麻烦。2、学习源码都会在源码上写上自己学习的笔记和注释(比如对源码的某个方法是干什么的,需要注意什么等等)。3、分别在两台电脑上学习,就会导致每个电脑上源码各有一部分注释。因此,我准备将项目上传到git,两台电脑都通过git来对项目进行更新。下面记录一下,如何做的,如何解决第二台机器clone下来遇到的问题。上传项目:一、在自己的git建立一个

2020-05-30 01:39:51 1488 2

原创 源码敲门砖-mybatis源码-执行器&plugins

执行器执行器分类public enum ExecutorType { SIMPLE, REUSE, BATCH}三种执行器区别:SIMPLE:默认执行器REUSE:复用执行器BATCH:批量执行器SIMPLE:默认执行器默认执行器:configuration类中有设置protected ExecutorType defaultExecutorType = ExecutorType.SIMPLE;为每个语句的每次执行创建一个新的预处理语句。REUSE:复用执行器复用预处理语句

2020-05-24 02:05:26 162

原创 java8对map新增强的方法

java8对map新增强的方法:getOrDefault(key,value); default V getOrDefault(Object key, V defaultValue) { V v; //只要满足一个条件就返回v:key对应的值不为null;或者map中有这个key return (((v = get(key)) != null) || containsKey(key)) ? v : defaul

2020-05-21 13:34:21 595

原创 源码敲门砖-mybatis源码-底层如何执行sql

主干代码和源码接着上篇,本篇研究mybatis如何获取执行器并执行解析后的sql主干代码SqlSession sqlSession = sqlSessionFactory.openSession();主干源码DefaultSqlSessionFactory类:public SqlSession openSession() { return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, fa

2020-05-19 18:12:34 393

原创 源码敲门砖-mybatis源码-mapper详解和底层如何解析sql

文章目录(一)配置mapper的方式:(二)如何解析:2.1 解析主配置文件的主要方法:2.2 解析mappers2.2.1、源码:2.2.2 mappers中子标签的优先级和配置规则Package子标签:Mapper子标签:2.2.3 跟踪源码探查根源:解析mapper时,会将mapper接口放到configuration。addMapper源码:跟踪parse(下面2.2.4会对parse方法的每一步进行分析:)2.2.4 parse中的核心方法:① 首先执行的是loadXmlResource② co

2020-05-17 19:40:17 229

原创 源码敲门砖-mybatis源码-入门1

文章目录简述:背景:Mybatis与 JDBC 编程的比较 :ORM:什么是MyBatis?入门:下载源码:导入项目:主流程代码:1、读取mybatis的主配置文件源码路线:2、使用构建者模式,得到SqlSessionFactory对象SqlSessionFactoryBuilderXMLConfigBuilder:第一步很简单就是创建一下XMLConfigBuilder:第二步:使用XMLConfigBuilder进行解析:xml示例:里面的解析方法evalNode:解析节点将解析得到的信息封装到Conf

2020-05-11 19:39:31 175

原创 Spring5源码学习之路:准备工作

Spring5源码学习之路软件版本:IntelliJ IDEA 2019.3.1 x64spring-framework-v5.2.0.RELEASE其他都是根据源码配置文件指定的版本,我来下载的,后面会提到。(一) 整体步骤:按照: 原文链接 : https://blog.csdn.net/Dcwjh/article/details/104471560进行准备,下载源码,下载gra...

2020-05-03 23:24:35 2990 3

原创 25张截图教你怎么安装使用TortoiseGit

25张截图教你怎么安装使用TortoiseGitTortoiseGit拯救我的畸形git安装好git,无法更新和提交。因为URL是git@。。。。,就把用户名给我默认成git。怎么改也没好,各种办法试了一遍,最终TortoiseGit拯救了我的畸形git。一、安装TortoiseGit流程:设定好安装的上级目录即可,会自动生成TortoiseGit目录。二、run first s...

2020-04-28 12:03:23 1277

原创 git入门工作的记录

git入门工作的记录缘由之前没有用过git,新公司使用的是git:各种操作搞不好。各种网上搜,结合自己的使用记录一下,方便后面工作使用:一、 安装git按照步骤一步步来就行,基本都是一直点下一步。https://blog.csdn.net/sanxd/article/details/82624127二、配置好全局用户名,密码和邮箱配置用户名git config --global u...

2020-04-28 12:03:11 182 1

lijie_study-mybatis-3-master.zip

mybatis-3-master.zip,mybatis-3项目源码资源,git官网下载的,帮助大家避免下载慢问题,免费资源,一起学习源码

2020-05-11

lijie_study-parent-master.zip

mybatis-parent-master.zip,所有mybatis项目必须依赖的父工程,免费资源,一起学习源码

2020-05-11

lijie_study-spring-framework-v5.2.0.RELEASE.zip

spring-framework-v5.2.0.RELEASE.zip源码包,免费资源,大家一起学习

2020-05-11

空空如也

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

TA关注的人

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