多模块化改造若干问题与解决方案(持续更新)
1. 循环依赖问题Maven中如果出现:A 依赖 BB 依赖 A就会导致Maven Compile AssertionError:[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ xxx ---[INFO] Chan
1. 循环依赖问题Maven中如果出现:A 依赖 BB 依赖 A就会导致Maven Compile AssertionError:[INFO] --- maven-compiler-plugin:3.8.1:compile (default-compile) @ xxx ---[INFO] Chan
Spring应用上下文生命周期1. 前言本文基于Spring-framework.5.2.2.RELEASE版本进行论述,参考了小马哥在极客时间的课程(文章末尾有对应二维码)。2. Spring应用上下文刷新阶段刷新阶段主要是围绕 AbstractApplicationContext#refresh
Spring Bean的生命周期1. 前言Spring是一个IOC(Inversion of Control,控制反转)容器框架,拥有DI(Dependency Injection,依赖注入),DL(Dependency Lookup,依赖查找 等功能。认为一个IOC框架最基本要有以下功能:配置解析
1. 第一本福克纳接触到福克纳其实是豆瓣有一期纪念福克纳的活动,我点进去后发现有本叫做《喧哗与骚动》的书,我很喜欢这个书名,又因为这是49年诺奖作品,有了读这本书的计划。《喧哗与骚动》是我的第一本福克纳,工作之余大概花了一个月时间才看完,倒不是篇幅很长,而是福克纳的“意识流”的写作法让我一开始表现出
Java线程与协程1. 线程的实现方式1.1. 内核线程实现使用内核线程实现的方式也被称为1:1实现。内核线程(Kernel-Level Thread,KLT)就是直接由操作系统内核(Kernel,下称内核)支持的线程,这种线程由内核来完成线程切换,内核通过操纵调度器(Scheduler)对线程进行
1. 编译器分类前端编译器:.java文件转变为.class文件的过程(比如Javac)后端编译器:即时编译器(JIT编译器,Just In Time Compiler):运行期把字节码转变成本地机器码的过程(比如HotSpot的C1、C2编译器,Graal编译器)提前编译器:把程序编译成与目标机器
1. 运行时栈帧结构Java虚拟机以方法作为最基本的执行单元,“栈帧”(Stack Frame)则是用于支持虚拟机进行方法调用和方法执行背后的数据结构,它也是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧包括了局部变量表、操作数栈、动态连接、方法返回地址和
1. 类加载的时机一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading