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

序列化和反序列化

作者: 降龙_伏虎 | 来源:发表于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