扫码关注公众号

java语言考点之动态代理相关
08-29
173观看
01

JDK 和 JRE 有什么区别?(面试题)

JDK:JavaDevelopmentKit的简称,java开发工具包,提供了java的开发环境和运行环境。JRE:JavaRuntimeEnvironment的简称,java运行环境,为java的运行提供了所需环境。具体来说JDK其实包含了JRE,同时还包含了编译java源码的编译器javac,还包含了很多java程序调试和分析的工具。简单来说:如果你需要运行java程序,只需安装JRE就可以了,如果你需要编写java程序,需要安装JDK。

来自:序列化、NIO等高级特性-JDK与CGlib
02

动态代理是什么?有哪些应用?(面试题)

动态代理:当想要给实现了某个接口的类中的方法,加一些额外的处理。比如说加日志,加事务等。可以给这个类创建一个代理,故名思议就是创建一个新的类,这个类不仅包含原来类方法的功能,而且还在原来的基础上添加了额外处理的新类。这个代理类并不是定义好的,是动态生成的。具有解耦意义,灵活,扩展性强。动态代理的应用:Spring的AOP加事务加权限加日志

来自:序列化、NIO等高级特性-JDK与CGlib
03

怎么实现动态代理?(面试题)

首先必须定义一个接口,还要有一个InvocationHandler(将实现接口的类的对象传递给它)处理类。再有一个工具类Proxy(习惯性将其称为代理类,因为调用他的newInstance()可以产生代理对象,其实他只是一个产生代理对象的工具类)。利用到InvocationHandler,拼接代理类源码,将其编译生成代理类的二进制码,利用加载器加载,并将其实例化产生代理对象,最后返回。

来自:序列化、NIO等高级特性-JDK与CGlib
04

请列举出在 JDK 中几个常用的设计模式?

1、单例模式作用:保证类只有一个实例。JDK中体现:Runtime类。2、静态工厂模式作用:代替构造函数创建对象,方法名比构造函数清晰。JDK中体现:Integer.valueOf、Class.forName3、抽象工厂作用:创建某一种类的对象。JDK中体现:Java.sql包。4、原型模式clone();原型模式的本质是拷贝原型来创建新的对象,拷贝是比new更快的创建对象的方法,当需要大批量创建新对象而且都是同一个类的对象的时候考虑使用原型模式。一般的克隆只是浅拷贝(对象的hash值不一样,但是对象里面的成员变量的hash值是一样的)。有些场景需要深拷贝,这时我们就要重写clone方法,以ArrayList为例:5、适配器模式作用:使不兼容的接口相容。JDK中体现:InputStream、OutputStream。6、装饰器模式作用:为类添加新的功能,防止类继承带来的类爆炸。JDK中体现:io类、Collections、List。7、外观模式作用:封装一组交互类,一直对外提供接口。JDK中体现:logging包。8、享元模式作用:共享对象、节省内存。JDK中体现:Integer.valueOf、String常量池。9、代理模式作用:(1)透明调用被代理对象,无须知道复杂实现细节;(2)增加被代理类的功能;JDK中体现:动态代理。10、迭代器模式作用:将集合的迭代和集合本身分离。JDK中体现:Iterator11、命令模式作用:封装操作,使接口一致。JDK中体现:Runable、Callable、ThreadPoolExecutor。

来自:序列化、NIO等高级特性-JDK与CGlib
课程
专栏
jdk和jre有什么区别?
csdn
cglib动态代理和jdk动态代理的区别与应用
csdn
Java动态代理的两种实现方法
csdn
java语言-序列化、NIO等高级特性-JDK与CGlib
3专栏
1课程
4 试题