java - Hessian序列化和JDK源生序列化对比

 蓬从蓉Tahirah 发布于 2022-10-27 20:33
package json;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.math.BigInteger;

/* Java序列化允许将一个对象状态写入Byte流里 */
/* 并且可以从其他地方把该Byte流的数据读出来 */
public class InnerSer {

    public static void main(String[] args) {
        try {
            /* 序列化 */
            A a = new A("A", "100");
            ByteArrayOutputStream os = new ByteArrayOutputStream();
            ObjectOutputStream oos = new ObjectOutputStream(os);
            oos.writeObject(a);
            byte[] byteArray = os.toByteArray();
            System.out.println("序列化后的二进制:" + new BigInteger(1, byteArray).toString(2));

            /* 反序列化 */
            ByteArrayInputStream is = new ByteArrayInputStream(byteArray);
            ObjectInputStream ois = new ObjectInputStream(is);
            System.out.println("反序列化后的对象" + ois.readObject().getClass().getName());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class A implements Serializable {

    private String name;
    private String age;

    public A(String name, String age){
        super();
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

    public void setAge(String age) {
        this.age = age;
    }
}

问题:
Java源生的序列化技术使用方式和Hession的序列化使用方式都差不多的,都是像代码中一样,先用writeObject方法将对象写入字节数组中,再通过readObject()方法将字节数组反序列化为对象。有区别的地方只是,在java中使用了ByteArrayOutputStream ObjectOutputStream 和ByteArrayInputStream ObjectInputStream,而在Hession中使用的是ByteArrayOutputStream HessionOutput 和ByteArrayInputStream HessionInput。
1.为什么项目中宁愿用Hession都不用源生的JDK呢?
2.Hession比JDK序列化的高效率是如何实现的?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有