在网络传输过程中,数据或对象在发送端进行序列化serialize,转成二进制;然后接受端需要对数据或对象进行反序列化unserialize,变成可用的类型。
首先来看看一般我们是怎么对一个对象进行序列化的。
java序列化
定义一个简单的pojo User
import java.io.Serializable;
/**
* Created by 蚂蚁的宝藏 on 2018/1/27.
*/
public class User implements Serializable {
private int id;
private int age;
private String userName;
private String address;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", age=" + age +
", userName='" + userName + '\'' +
", address='" + address + '\'' +
'}';
}
}
用ObjectInputStream 和ObjectOutputStream进行简单的序列化和反序列化
package protobuf.base.serial;
import protobuf.pojo.User;
import java.io.*;
import java.util.Arrays;
/**
* Created by 蚂蚁的宝藏 on 2018/2/1.
*/
public