自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 springboot源码解析(3)启动过程的11个监听器

这里写目录标题一、前言二、 springboot自带的10个监听器三、`org.springframework.boot.ClearCachesApplicationListener`四、`org.springframework.boot.builder.ParentContextCloserApplicationListener`五、`org.springframework.boot.cloud.CloudFoundryVcapEnvironmentPostProcessor`六、`org.springf

2021-07-26 15:54:14 883

原创 springboot源码解析(2)启动过程的生命周期和观察者模式

1111111111111

2021-07-20 17:55:03 204

原创 springboot源码解析系列目录

如今的java生态圈,spring大行其道。而在spring的生态圈中,springboot则是及其重要的一部分。可以说,作为一个java相关的开发人员,你必须掌握spring,也必须掌握springboot。本系列是本人对springboot的学习历程和总结,供大家参考及学习。springboot官网地址:https://spring.io/projects/spring-boot注:在每篇文章都有一个疑问点的章节,这是我在学习期间遇到的问题,各位读者也可以提出自己的问题。本人后续会统一完善答案。

2021-07-14 13:52:24 250

原创 springboot源码解析(1)一个springboot程序的启动及简单分析

1.简单启动如果我们想要启动一个springboot程序,一般只需要一下几行简单的代码就行了,那么这几行简单的代码到底做了什么。这就是我们整个这个系列要分析的事。接下来,让我们一起进入springboot的世界。@SpringBootApplicationpublic class App { public static void main(String[] args) { SpringApplication application = new SpringApplication

2021-07-14 12:03:07 223

原创 spring aop(三):spring声明式事务源码详解

转载:spring事务详解

2021-03-09 17:28:36 142

原创 spring aop(二):<aop>标签的解析和代理对象的创建

添加链接描述

2021-03-09 15:44:56 325

原创 spring aop(一):JDK动态代理和CGLIB动态代理

目录1 动态代理和静态代理1.1 代理模式1.2 静态代理1.3 动态代理2 JDK动态代理2.1 动态代理demo2.2 jdk动态代理实现技术及源码3.CGLIB动态代理1 动态代理和静态代理1.1 代理模式代理模式是面向对象编程中比较常见的设计模式,uml图如下:需要注意的有下面几点:用户只关心接口功能,而不在乎谁提供了功能。上图中接口是 Subject。接口真正实现者是上图的 RealSubject,但是它不与用户直接接触,而是通过代理。代理就是上图中的 Proxy,由于它实现了

2021-03-06 17:24:09 121

原创 jvm学习笔记9:java内存模型

目录1.存储设备与CPU执行效率的冲突以及解决方案2.Java内存模型3. 内存间的交互操作3.1 8个基本指令3.2 8个基本指令的基本规则3.3 volatile关键字4. 原子性、可见性、有序性4.1 原子性4.2 可见性4.3 有序性5.Java中的各种1.存储设备与CPU执行效率的冲突以及解决方案CPU进行计算时,需要与存储设备(内存)进行交互,存储和读取数据。由于计算机的存储设备的读取和写入速度和cpu运算速度有几个数量级的差距。这个时候,I/O速度成了执行效率的瓶颈。为了解决上面的问题

2020-12-27 18:12:50 90

原创 jvm学习笔记7:虚拟机字节码执行引擎

目录1.概述2.运行时栈帧结构2.1 局部变量表3.方法调用4.基于栈的字节码解释执行引擎5.即时编译执行引擎1.概述见上图,执行引擎是Java虚拟机最核心的组成部分之一。执行引擎分为java解释器和JIT编译器两种。JAVA解释器每次将一条指令解释为字节码,交给CPU执行。JIT编译器每次将多条执行编译为字节码,一次性交给CPU执行。2.运行时栈帧结构栈帧(Stack Frame)是用于虚拟机进行方法调动和方法执行的数据结构,是虚拟机运行时数据区中的虚拟机栈。栈帧中存储了方法的局部变量

2020-12-02 22:52:54 129

原创 jvm学习笔记6:类加载器

目录1. 类与类加载器2. 双亲委派机制二级目录三级目录1. 类与类加载器对于任意一个类,都需要有加载它的类加载器和这个类本身一同确认其在java虚拟机中的唯一性,每一个类加载器,都拥有一个独立的类名称空间。子类可以访问到父类加载器加载的类,父类2. 双亲委派机制二级目录三级目录...

2020-11-17 21:34:46 229 2

原创 jvm学习笔记5:虚拟机类加载机制

目录1. 概述2. 类的加载过程2.1 加载2.2 链接-验证2.3 链接-准备2.4 链接-解析2.5 初始化3. 类的加载时机4. 总结下各种变量的赋值阶段。1. 概述虚拟机把class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是类的加载机制。2. 类的加载过程类的生命周期如下:如上图:加载、验证、准备、初始化、卸载这5个阶段的顺序是确定,类的加载过程必须按照这种顺序按部就班的开始(注意:开始,而不是完成。因为可以存在两个步骤同时执行

2020-11-14 19:47:46 100

原创 jvm学习笔记4:jvm字节码

目录1.简介2.加载和存储指令3.运算指令4.类型转换指令5.对象创建和访问指令6.操作数栈管理指令7.控制转移指令8.方法调用和返回指令9.异常处理指令10.同步指令11.其他1.简介java虚拟机字节码是由一个字节长度、代表某种特定操作含义的数字(简称操作码)以及跟随在其后的零至多个代表此操作所需的参数(简称操作数)而构成。2.加载和存储指令3.运算指令4.类型转换指令5.对象创建和访问指令6.操作数栈管理指令7.控制转移指令8.方法调用和返回指令9.异常处理指令10.同步指令1

2020-11-14 14:48:08 168

原创 jvm学习笔记3:class类文件结构

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2020-11-01 14:00:16 153 2

原创 jvm学习笔记2:垃圾收集器

写在前面本文只要GC的几个关键性能指标开始,详细介绍目前主流的几个垃圾收集器的原理。1.两个GC关键指标1.1 吞吐量吞吐量=程序运行时间/(程序运行时间+垃圾回收时间),越高越好。1.2 暂停时间一个时间段内应用程序线程让与GC线程执行而完全暂停,越小越好。1.3 两者关系”高吞吐量”和”低暂停时间”是一对相互竞争的目标。应用线程在GC期间必须停止(或者仅在GC的特定阶段,这取决于所使用的算法),然而这会增加额外的线程调度开销(直接开销是上下文切换,间接开销是因为缓存的影响)。 加上JVM

2020-10-24 12:17:20 273 1

原创 jvm学习笔记1:垃圾收集算法

写在前面本文主要介绍以下几个内容:怎么确定那些内存是垃圾: 引用计数法、可达性分析什么时候回收垃圾:怎么回收垃圾: 复制算法、标记-标记清除算法、标记整理算法、分代收集算法、分区收集算法…常用的垃圾收集器1.怎么确定垃圾1.1 垃圾标记的两种算法算法定义优点缺点引用计数算法给对象添加一个计数器,每当有地方引用这个对象,计数器加1;引用失效时,计数器减1;计数器为0的对象就是不可用的。判定简单,效率较高无法解决对象之间的相互循环引用问题可达性分析算法通

2020-10-18 15:22:38 163 3

空空如也

空空如也

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

TA关注的人

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