美文网首页一些收藏
序列化和反序列化

序列化和反序列化

作者: 降龙_伏虎 | 来源:发表于2020-01-07 19:17 被阅读0次

序列化目的

对象序列化后可进行远程传输与存储,需要实现Serializable接口

  • serialVersionUID
    反序列化时通过serialVersionUID判断接收数据对象与序列化时是否发生变化
  • transient关键字
    修饰的属性不会被序列化与反序列化
    一般结合
    private void writeObject(java.io.ObjectOutputStream s)
    private void readObject(java.io.ObjectInputStream s)
    使用来自定义字段的序列化过程,通过反射调用这两个方法

序列化方式

  • java原生方式
       public byte[] serialize(Object obj){
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        try {
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
            objectOutputStream.writeObject(obj);
            return  byteArrayOutputStream.toByteArray();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return new byte[0];
    }

    public Object deserialize(byte[] data){
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data);
        try {
            ObjectInputStream objectOutputStream = new ObjectInputStream(byteArrayInputStream);
            return objectOutputStream.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
  • xml/json/hession/avro/kyro/protobuf/...

序列化考量要素

  • 序列化计算性能
  • 数据包的大小
  • 跨语言

相关文章

网友评论

    本文标题:序列化和反序列化

    本文链接:https://www.haomeiwen.com/subject/poflactx.html