什么是序列化与反序列化
序列化
把对象转化为字节序列的过程称为对象的序列化。
反序列化
把字节对象恢复为过程称为对象的反序列化。
什么需要反序列化
- 把内存中的状态保存到一个文件中或者数据库中时候
- 用套接字在网络上传送对象的时候
实现序列化的方式
- Java对象序列化
- JSON序列化
- XML
- Protostuff
- Hession(它基于HTTP协议传输,使用Hession二进制序列化,对于数据包比较大的情况比较友好
- Dubbo Serialization(阿里Dubbo序列化)
- FST(高性能、序列化速度大概是JDK的4-10倍,大小是JDK的1/3左右
- 自定义协议进行序列化
如何实现序列化
import java.io.*;
public class SerializableTest {
public static void main(String[] args) throws Exception {
new SerializableTest.Person();
// SerializableTest test = new SerializableTest();
// test.new Person2();
Person person = new SerializableTest.Person();
//序列化
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(
new FileOutputStream("E:\\Java13\\io-study\\res/person"));
oos.writeObject(person);
//反序列化
ObjectInputStream ois = new ObjectInputStream(
new FileInputStream("E:\\Java13\\io-study\\res/person"));
Person person1 = (Person)ois.readObject();
System.out.println(person1);
}
private static class Person implements Serializable{
private String name;
private int age;
}
}