zoukankan      html  css  js  c++  java
  • 序列化分析

    public class testSerial implements Serializable {

    private static final long serialVersionUID = -7392224114251372902L;//或1L
    private int aaa;
    private String bbb;
    
    public int getAaa() {
        return aaa;
    }
    
    public void setAaa(int aaa) {
        this.aaa = aaa;
    }
    
    public String getBbb() {
        return bbb;
    }
    
    public void setBbb(String bbb) {
        this.bbb = bbb;
    }
    

    }
    public class testBSerial implements Serializable {

    private static final long serialVersionUID = -2383816885962918245L;//或1L
    private int aaa;
    private String bbb;
    
    public int getAaa() {
        return aaa;
    }
    
    public void setAaa(int aaa) {
        this.aaa = aaa;
    }
    
    public String getBbb() {
        return bbb;
    }
    
    public void setBbb(String bbb) {
        this.bbb = bbb;
    }
    

    }
    public static void main(String[] args) throws IOException{
    testBSerial a = new testBSerial();
    a.setAaa(1);
    a.setBbb("abc");

        testSerial aa = new testSerial();
        aa.setBbb("abc");
        aa.setAaa(1);
    
        testBSerial b = new testBSerial();
        b.setAaa(1);
        b.setBbb("abc");
    
        testSerial bb = new testSerial();
        bb.setBbb("abc");
        bb.setAaa(1);
    
        testBSerial c = new testBSerial();
        c.setAaa(1);
        c.setBbb("abc");
    
        testSerial cc = new testSerial();
        cc.setBbb("abc");
        cc.setAaa(1);
    
        testBSerial d = new testBSerial();
        d.setAaa(1);
        d.setBbb("abc");
    
        testSerial dd = new testSerial();
        dd.setBbb("abc");
        dd.setAaa(1);
    
        testBSerial e = new testBSerial();
        e.setAaa(1);
        e.setBbb("abc");
    
        testSerial ee = new testSerial();
        ee.setBbb("abc");
        ee.setAaa(1);
    
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("序列化十个不同serialVersionUID的对象.txt"));
        oos.writeObject(a);
        oos.writeObject(aa);
        oos.writeObject(b);
        oos.writeObject(bb);
        oos.writeObject(c);
        oos.writeObject(cc);
        oos.writeObject(d);
        oos.writeObject(dd);
        oos.writeObject(e);
        oos.writeObject(ee);
        oos.flush();
        oos.close();
    }
    

    }
    此处做了序列化中1L跟自动生成的serialVersionUID做了比较
    各创建了5个对象,最终发现打印出来的字节数均为268字节,所以默认1L跟自动生成的serialVersionUID在对象大小发面没有区别,仅在于生成的描述信息不同

    Java的基本数据类型
    float 4 字节 32位IEEE 754单精度
    double 8 字节 64位IEEE 754双精度
    byte 1字节 -128到127
    short 2 字节 -32,768到32,767
    int 4 字节 -2,147,483,648到2,147,483,647
    long 8 字节 -9,223,372,036,854,775,808到9,223,372,036, 854,775,807
    char 2 字节 整个Unicode字符集
    boolean 1 位 True或者false

    但是如果仅仅去序列化十个字符串(这里一个字母占一个字节)的对象
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("序列化十个字符串对象.txt"));
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.writeObject("1abc");
    oos.flush();
    oos.close();
    这样序列化之后的内容仅仅占用56字节
    也就是说总共10个字符串对象,40个字节,序列化的描述信息仅仅16个字节

    如果序列化一个 含有40个字节的字符对象的话,却只有47字节,描述性信息仅仅7字节
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("序列化一个字符串对象.txt"));
    oos.writeObject("1abc1abc1abc1abc1abc1abc1abc1abc1abc1abc");
    oos.flush();
    oos.close();

    可以得出结论:序列化过程对象类型信息越多,描述性信息越大,如果是同一对象,则描述性信息仅仅占一位(同一对象下),应该只是用作标记的

    这样也太片面,可以试一下int类型等,不过大致的思路应该一样!!

    最终结论:
    如果能使用简单数据类型 如,字符串,则尽量使用简单数据类型,对象越大,描述性信息越多,传输过程产生的信息越多,不利于高负载下的io吞吐!!!

  • 相关阅读:
    TCP/IP协议栈之QEMU
    FreeRTOS-Plus-CLI中添加一个自己的命令行
    FreeRTOS A57
    log日志库
    函数解读:ioremap / ioremap_nocache / ioremap_wc / ioremap_wt
    Makefile 使用小结
    41. 缺失的第一个正数(First Missing Positive)
    42. 接雨水(Trapping Rain Water)
    关于C++内联和静态成员函数的问题
    C++11 线程并发问题
  • 原文地址:https://www.cnblogs.com/kevinfuture/p/6131056.html
Copyright © 2011-2022 走看看