Java基础面试总结(五、反射、JVM)

版权声明: https://blog.csdn.net/bird73/article/details/79830742

Java反射的概念:
把JVM通过符号的引用,动态加载Java类字节码的能力并映射成各种Java类对象。

名词:Class
不管一个类生成多少个对象,与这个类对应的Class对象只有一个; 是JVM在加载时动态生成的,用来封装类在方法区中的数据结构;
Class对象是整个反射的入口.通过动态生成的Class对象去调用目标类的字段、方法、构造函数.

这种技术就是反射.



java 反射和new的区别?

反射与new创建对象的效果差不多,但是反射更加灵活,而且可以调用私有的东西;但new不行;

new:属于静态编译;

反射:属于动态编译,意思就说只有到运行时才会去获得该对象的实例,Spring就是使用的反射;

静态编译就是在编译的时候把你所有的模块都编译进exe里去。
动态编译就不一样了,编译的时候那些模块都没有编译进去,一般情况下可以把那些模块都编译成dll,这样启动程序(初始化)的时候这些模块不会被加载,而是在运行的时候,用到哪个模块就调用哪个模块; 如果通过反射创建对象,则能够更灵活的操作其私有的东西;


代理模式是什么?
代理模式即委托模式,可以将真实的实例对象传递给代理类,由代理类完成代码的调用与执行;

代理模式的优点?
职责清晰
代理类完成业务逻辑的处理
高扩展性
传入不同实例,则代理不同的对象执行某些功能
智能化
spring aop 是典型的动态代理

类加载器
所谓类加载器: 就是加载类的工具.类加载器也是java类,类加载器的委托机制: java中的所有类加载器采用具有父子关系的树形结构进行组织,在实例化每个类加载器对象时,需要为其指定一个父级类加载器对象或者默认采用系统类加载器做为其父级类加载器.每个类加载器加载时,又先委托给其上级类加载器,叫做类加载器的委托机制.
 
代理模式
为已存在的多个具有相同接口的目标类的各个方法增加一些系统功能。

要为系统中各种接口的类增加扩展功能,那将需要太多的代理类。但我们发现如果能将这类扩展功能独立出来,生成代理类的过程其实是重复且简单的,而Java正好提供了可以在 JVM 运行期动态生成出类的字节码这种技术,可以把生成代理类这个重复的过程独立出来,这就是动态代理技术。






牛逼参考:
Spring:源码解读Spring IOC原理
https://www.cnblogs.com/ITtangtang/p/3978349.html

javaweb面试题目整理
https://blog.csdn.net/riverflowrand/article/details/54974521
设计模式
http://www.cnblogs.com/cbf4life/tag/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/
代理模式
http://www.cnblogs.com/cbf4life/archive/2010/01/27/1657438.html
http://www.importnew.com/17770.html
https://www.cnblogs.com/eastday/p/8124580.html 
https://zhuanlan.zhihu.com/p/25713880
http://www.jdon.com/37625
http://www.cnblogs.com/ITtangtang/p/3978102.html


猜你喜欢

转载自blog.csdn.net/bird73/article/details/79830742