摘要: 装箱:根据数据创建对应的包装对象。 Integer i = new Integer (5); Integer j = 5;//jdk1.5 之后可以通过这种方式自动装箱 拆箱:将包装类型转换为基本数据类型。 int jValue = j.intValue(); int iValue = i;//自动 阅读全文
posted @ 2021-09-05 22:10 codezhao 阅读(114) 评论(0) 推荐(0)
摘要: 远程方法调用RMI(Remote Method Invocation),指的是运行在一个Java虚拟机中的对象调用另一个虚拟机上对象的方法,可通过Java RMI实现,Java RMI是分布式应用系统的百分之百纯Java解决方案。 1 通过反射机制简单实现 在分析Java RMI之前,我们先自己做一 阅读全文
posted @ 2021-02-27 21:56 codezhao 阅读(423) 评论(0) 推荐(1)
摘要: 上一篇我们对Cglib动态代理进行了代码测试,这一篇文章我们看下Cglib实现动态代理的原理,其实分析动态代理弄懂两件事就行:代理类怎么生成的、代理类方法如何调用的被代理类方法。 1 代理类的生成 首先代理类对象是调用enhancer.create()生成的,其中会调用super.create()。 阅读全文
posted @ 2021-02-25 21:21 codezhao 阅读(187) 评论(0) 推荐(0)
摘要: 本篇我们介绍一下Cglib是如何实现动态代理的。 Cglib是什么? Cglib是一个强大的代码生成包,广泛地被许多AOP框架使用,用来提供方法的拦截,下图展示了Cglib和一些语言、框架的关系: 根据图总结一下: (1)最底层是字节码,Java中就是.class文件; (2)字节码上面是ASM,一 阅读全文
posted @ 2021-02-21 21:37 codezhao 阅读(414) 评论(0) 推荐(1)
摘要: 在之前的生成代理类的源码分析中,我们会看到调用ProxyGenerator.generateProxyClass()生成代理类的字节码文件,下面我们到ProxyGenerator中看看,代理类的字节码到底是怎么生成的。 /** *ProxyGenerator中的一些字段 */ //代理类全限定名 p 阅读全文
posted @ 2021-02-21 21:36 codezhao 阅读(201) 评论(1) 推荐(1)
摘要: 之前我们通过JDK中的Proxy实现了动态代理,Proxy用起来是比较简便的,但理解起来不是那么清晰,是因为我们并没有看见代理类是怎么生成的,代理类怎么调用的被代理类方法,所以下面我们进入源码看一下。 源码分析 首先进入创建代理对象的方法Proxy.newProxyInstance()中: @Cal 阅读全文
posted @ 2021-02-21 21:32 codezhao 阅读(606) 评论(1) 推荐(1)
摘要: 为什么引入动态代理? 通过之前分析静态代理可以看到,由于代理类与接口绑定了,所以每个接口要分别实现代理类,然后对每个被代理对象(接口的实现类的对象)生成代理对象。 所以静态代理有这样的缺点: 1.所有接口的代理类都需要手动去实现; 2.所有切点添加同一操作的话,如日志打印,需要为每个切点分别添加; 阅读全文
posted @ 2021-02-21 18:28 codezhao 阅读(140) 评论(0) 推荐(0)
摘要: 代理模式简介 代理模式是常用的一种设计模式,我们需要知道这几点: (1)代理类和被代理类之间有关联关系,一个代理对象与一个被代理对象关联; (2)代理对象本身并不真正实现服务,而是去调用被代理对象的服务; (3)使用者通过调用代理对象间接地使用被代理对象的服务; (4)代理类主要负责在调用被代理对象 阅读全文
posted @ 2021-02-20 10:28 codezhao 阅读(19) 评论(0) 推荐(0)
摘要: Java1.1中引入反射(Reflection),被视为动态语言的关键,反射机制允许程序在运行期通过ReflectionAPI获取任何类的内部信息,并能操作任何对象的属性及方法。 反射机制原理 反射的实现是借助于Class类,在Java中“万物皆对象”,类也不例外,类自身也是对象,每个类都是Clas 阅读全文
posted @ 2021-02-20 10:04 codezhao 阅读(357) 评论(0) 推荐(0)