反射

57.什么是反射?

通俗的讲就是反射可以在运行时根据指定的类名获得类的信息

58.什么是 java 序列化?什么情况下需要序列化?

序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。

    当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。

 只能将支持 java.io.Serializable 接口的对象写入流中。每个 serializable 对象的类都被编码,编码内容包括类名和类签名、对象的字段值和数组值,以及从初始对象中引用的其他所有对象的闭包

1.概念

  序列化:把Java对象转换为字节序列的过程。
  反序列化:把字节序列恢复为Java对象的过程。

2.用途

  对象的序列化主要有两种用途:
  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;
  2) 在网络上传送对象的字节序列。

59.动态代理是什么?有哪些应用?

动态代理是一种在运行时动态地创建代理对象,动态地处理代理方法调用的机制。

实际上它是一种代理机制。代理可以看做是对调用目标的一个封装,直接通过代理来实现对目标代码的调用

应用一: Spring AOP的动态代理实现
Spring AOP的动态代理实现主要有两种方式,JDK动态代理和CGLIB字节码生成。

默认情况下,如果Spring AOP发现目标对象后实现了相应的interface,则采用JDK动态代理机制为其生成代理对象。如果没有发现接口,则采用CGLIB的方式为目标对象生成动态的代理对象实例

应用二: RPC框架中的应用
RPC即远程过程调用,它的实现中使用到了动态代理,关于RPC的具体原理参照 你应该知道的RPC原理 等文章

60.怎么实现动态代理?

Spring的两种动态代理:Jdk和Cglib 的区别和实现

原文地址:https://www.cnblogs.com/zousong/p/10513324.html