- 博客(12)
- 收藏
- 关注
转载 JVM:JVM的执行子系统
Class类文件结构 Java跨平台的基础 各种不同平台的虚拟机与所有平台都统一使用的程序存储格式——字节码(ByteCode)是构成平台无关性的基石,也是语言无关性的基础。Java虚拟机不和包括Java在内的任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其他辅助信息。 Class类的本质 任何一个Class文件都对...
2020-02-22 15:53:44 170
转载 JVM:java内存分配
虚拟机历史 了解即可,无需关注 运行时数据区域 程序计数器 当前线程执行的字节码的行号指示器,占用空间小,也无法干涉 虚拟机栈 每个线程私有的,线程在运行时,在执行每个方法的时候都会打包成一个栈帧,存储了局部变量表,操作数栈,动态链接,方法出口等信息,然后放入栈。每个时刻正在执行的当前方法就是虚拟机栈顶的栈桢。方法的执行就对应着栈帧在虚拟机栈中入栈和出栈的过程。 栈桢大小缺省为1M,可用参数 –X...
2020-02-15 23:16:39 142
转载 JVM:垃圾回收器和内存分配策略
垃圾收集器与内存分配策略 为什么要了解GC和内存分配策略 1、面试需要 2、GC对应用的性能是有影响的; 3、写代码有好处 判断对象的存活 引用计数法:快,方便,实现简单,缺点:对象相互引用时,很难判断对象是否改回收。 可达性分析 (面试时重要的知识点,牢记) 来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径...
2020-02-15 20:54:47 179
原创 Spring IOC:ConfigurationClassPostProcessor解析(2)postProcessBeanFactory使用CGLIB增强配置类
@Configuration
2020-01-18 18:06:52 276
原创 Spring IOC:ConfigurationClassPostProcessor解析
在spring初始化容器的时候,定义了一个reader和一个scanner,在定义reader的时候,向容器中加入了6个供spring使用的基本类,其中一个就是ConfigurationClassPostProcessor。 在上一章invokeBeanFactoryPostProcessors解析中有提到,这个方法是加载所有的后置处理器并依次执行,而ConfigurationClassPostP...
2020-01-04 15:45:43 153
原创 Spring IOC:invokeBeanFactoryPostProcessors执行已注册的beanFactoryProcess
BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor都是spring提供的后置处理器,都可以做到在bean实例化之前读取bean并修改bean属性 BeanDefinitionRegistryPostProce...
2019-12-17 20:45:11 129
原创 Spring IOC:容器创建前的准备工作
1.环境搭建 基于注解形式配置spring 因为我是从spring官网下载了源码允许的,所以jar包省略不写了。 1.1新建配置类 @Configuration @ComponentScan("com.st") public class Appconfig { } 1.2新建dao @Repository public class Indexdao implements ApplicationC...
2019-12-11 23:47:04 118
原创 Spring AOP:声明式事务@Transactional在AOP中的实现
声明式事务使用 1.在pom.xml中引入依赖 这里使用了spring-jdbc,c3p0连接池,mysql驱动 <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifac...
2019-10-27 16:04:55 2955
原创 SpringAOP:拦截器链的调用
目标方法执行 进入被拦截的目标方法,CglibAopProxy.intercept public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { Object oldProxy = null; boolean setProxy...
2019-10-23 22:59:25 267
原创 Spring AOP:创建拦截器链
上一节讲到了创建AnnotationAwareAspectJAutoProxyCreator,这一节将介绍切面类的创建,和拦截器链的调用。 AnnotationAwareAspectJAutoProxyCreator相当于后置处理器会在registerBeanPostProcessors(beanFactory)中创建并实例化。 而切面类其实也是一个普通的bean,将会在finishBeanFac...
2019-10-17 22:43:11 277
原创 Spring AOP:创建AOP代理,注册AnnotationAwareAspectJAutoProxyCreator
上文实现了对Calculator.div()方法的增强,那么Spring到底是如何实现AOP的呢?我们还要从配置类的@EnableAspectJAutoProxy开启AOP注解说起。 @EnableAspectJAutoProxy @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(As...
2019-10-15 23:01:56 207
原创 Spring AOP:AOP使用示例
面向切面编程AOP 当我们需要为多个对象引入公共方法时,例如日志,安全检测等。若是在每个对象中都手动调用该公共方法,将造成大量的代码重复,所以产生了AOP,面向切面编程的思想。在不影响源结构的同时动态为多个对象调用目标方法。 动态AOP使用示例 准备工作:引入Maven Spring +Junit +spring-aspects 1.定义业务逻辑方法 public class Calculato...
2019-10-11 22:29:54 171
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人