第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

騰訊T4之路:Java對(duì)象序列化

在微服务架构中,网络带宽成为决定并发的主要因素之一。对象的传递在不同服务直接很常见,对象的传递要经过序列化和反序列化。

序列化:将对象转换成二进制流的过程,称为序列化

反序列化:将二进制流转换成对象的过程,称为反序列化

那么,选择一种高效的序列化和反序列化方法,就可以提升整个架构的性能。

使用java原生方式实现序列化和反序列化:

public void javaObjByte(Person person) throws IOException, ClassNotFoundException {
    long startTime = System.nanoTime();

    // 序列化
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    ObjectOutputStream out = new ObjectOutputStream(os);
    out.writeObject(person);
    byte[] personByte = os.toByteArray();
    System.out.println("java length: " + personByte.length);

    // 反序列化
    ByteArrayInputStream is = new ByteArrayInputStream(personByte);
    ObjectInputStream in = new ObjectInputStream(is);
    Person zhangsan = (Person)in.readObject();

    long endTime = System.nanoTime();
    System.out.println("java: " + (endTime - startTime));
}

使用Hessian进行序列化和反序列化:

public void hessianObjByte(Person person) throws IOException {
    long startTime = System.nanoTime();

    // 序列化
    ByteArrayOutputStream os = new ByteArrayOutputStream();
    HessianOutput ho = new HessianOutput(os);
    ho.writeObject(person);
    byte[] personByte = os.toByteArray();
    System.out.println("hess length: " + personByte.length);

    // 反序列化
    ByteArrayInputStream is = new ByteArrayInputStream(personByte);
    HessianInput hi = new HessianInput(is);
    Person zhangsan = (Person)hi.readObject();

    long endTime = System.nanoTime();
    System.out.println("hess: " + (endTime - startTime));
}

Person类:

public class Person implements java.io.Serializable {

    private static final long serialVersionUID = 1L;

    String name;
    Integer age;
    Boolean sex;
    Integer height;

    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + ", sex=" + sex + ", height=" + height + "]";
    }

    public Person() {
        super();
    }

    public Person(String name, Integer age, Boolean sex, Integer height) {
        super();
        this.name = name;
        this.age = age;
        this.sex = sex;
        this.height = height;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Boolean getSex() {
        return sex;
    }
    public void setSex(Boolean sex) {
        this.sex = sex;
    }
    public Integer getHeight() {
        return height;
    }
    public void setHeight(Integer height) {
        this.height = height;
    }

}

运行十次结果(Java虚拟机运行的纳秒数):

java length: 267
java: 64303484
hess length: 62
hess: 63746841
++++++++++++++++
java length: 267
java: 402568
hess length: 62
hess: 249284
++++++++++++++++
java length: 267
java: 464198
hess length: 62
hess: 213729
++++++++++++++++
java length: 267
java: 393087
hess length: 62
hess: 227951
++++++++++++++++
java length: 267
java: 495013
hess length: 62
hess: 165531
++++++++++++++++
java length: 267
java: 358717
hess length: 62
hess: 218074
++++++++++++++++
java length: 267
java: 496198
hess length: 62
hess: 175803
++++++++++++++++
java length: 267
java: 427457
hess length: 62
hess: 137086
++++++++++++++++
java length: 267
java: 501729
hess length: 62
hess: 180939
++++++++++++++++
java length: 267
java: 527803
hess length: 62
hess: 179358
++++++++++++++++

可以看到上面的运行结果,除了第一次受到Java虚拟机启动的影响,耗时几乎一样外,其余几次都是Hessian以绝对的优势领先Java内置的序列化方法,并且序列化后对象的体积也只有Java序列化的三分之一。这就意味着,采用hessian序列化的架构,在并发上可以增加两倍以上的流量。

hessian的jar版本为4.0.51

作者:秋名山车神

感言:希望能以此系列文章,记录自己探索T4的路。

T4工程师:腾讯内部的级别。T4专家组是腾讯最为核心的部门,每当项目遇到重大技术问题就会由T4专家组协助,如:QQ空间代码重构,微信摇一摇和春节抢红包亿级并发。代表了编程水平的最高境界,再往上的T5和T6已经不是单纯的技术积累能够做到的了。T4成为T6只有一条路,那就是用自己的技术创造出新的技术,改变人类,改变世界。

點(diǎn)擊查看更多內(nèi)容
26人點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消