随笔分类 -  Java

摘要:AbstractQueuedSynchronizer是JUC包下的一个重要的类,JUC下的关于锁相关的类(如:ReentrantLock)等大部分是以此为基础实现的。那么我们就来分析一下AQS的原理。 1:通过以前的了解,我们先明白几个有用信息。 1:实现基于FIFO(一个先进先出的队列) 2:通过 阅读全文
posted @ 2019-11-07 16:45 李斯特王 阅读(238) 评论(0) 推荐(0) 编辑
摘要:接着我们上次说的SpringBoot自动加载原理。我们大概明白了在maven中引入mybatis后,这个模块是如下加载的。 可能会有人问了,一般我们的dao层都是通过Mapper接口+Mapper.xml的方式来操作数据库的,但是@Mapper注解并不是SpringBoot自带的注解,为什么加上@M 阅读全文
posted @ 2019-10-24 14:56 李斯特王 阅读(1697) 评论(0) 推荐(0) 编辑
摘要:昨天在新建Springboot启动后,发现执行相关的SQL报错 org.apache.ibatis.binding.BindingException: Invalid bound statement,具体报错信息如下: 1 org.apache.ibatis.binding.BindingExcep 阅读全文
posted @ 2019-10-23 11:50 李斯特王 阅读(2996) 评论(2) 推荐(2) 编辑
摘要:我们经常会被问到这么一个问题:SpringBoot相对于spring有哪些优势呢?其中有一条答案就是SpringBoot自动注入。那么自动注入的原理是什么呢?我们进行如下分析。 1:首先我们分析项目的启动类时,发现都会加上@SpringBootApplication这个注解,我们分析这个继续进入这个 阅读全文
posted @ 2019-10-17 18:43 李斯特王 阅读(2119) 评论(0) 推荐(0) 编辑
摘要:前些天,运维告诉我刚上线的java服务占用CPU过高。 以下是发现解决问题的具体流程。 1:通过#top命令查看,我的java服务确实把CPU几乎占满了,如图 可看到18400这个进程CPU占用达到了1200%,这确实不太正常,那么我们接下来分析到底哪些线程占用了CPU 2:通过#top -Hp 1 阅读全文
posted @ 2019-10-16 18:17 李斯特王 阅读(689) 评论(3) 推荐(4) 编辑
摘要:1:为什么会出现Atomic类 在多线程或者并发环境中,我们常常会遇到这种情况 int i=0; i++ 稍有经验的同学都知道这种写法是线程不安全的。为了达到线程安全的目的,我们通常会用synchronized来修饰对应的代码块。现在我们有了新的方法,就是使用J.U.C包下的atomic类。 2:A 阅读全文
posted @ 2019-06-17 18:04 李斯特王 阅读(6957) 评论(0) 推荐(3) 编辑
摘要:我们来分析SpringApplication启动流程中的run()方法,代码如下 看起来方法比较长,不过我们主要看启动流程,哪些监控,失败分析的我们以后再说,所以这个方法中关键的几步如下 没错,看到关键的方法就是这4个,我们首先分析 createApplicationContext()方法,代码如下 阅读全文
posted @ 2019-05-23 18:06 李斯特王 阅读(214) 评论(0) 推荐(0) 编辑
摘要:通过分析我们可以找到 org.springframework.boot.SpringApplication 中如下, 可以看出,SpringBoot的启动分两步 1:实例化一个SpringApplication对象 2:run 初始化的方法如下: 通过上面的代码我们可以看出,getSpringFac 阅读全文
posted @ 2019-03-26 14:58 李斯特王 阅读(250) 评论(0) 推荐(0) 编辑