Netty编解码技术

本文探讨了Java序列化的用途,包括网络传输和对象持久化,但指出了其跨语言支持不足和码流过大的问题。接着,分析了评判编解码框架的几个关键因素,并指出Java默认序列化性能低下。最后,提到了业界主流的编解码框架,如Google的protobuf、Facebook的thrift和jboss的marshalling。

编码技术

基于Java提供的对象输入输出流,可以直接把Java对象作为可存储的字节数组写入文件,也可以传输到网络上去。

基于jdk默认的序列化机制可以避免操作底层的字节数组,从而提升开发效率。

Java序列化的两个目的

【1】网络传输

    当进行远程跨进程服务调用时,需要把被传输的Java对象编码为字节数组或者bytebuffer对象。二当远程服务读取到bytebuffer对象或者字节数组时,需要将其解码为发送时的Java对象,这种技术被称为Java对象编解码技术。

【2】对象持久化

Java序列化的缺点

【1】无法跨语言

Java序列化最为致命的问题。

Java序列化技术是Java语言内部的私有协议,其他语言并不支持,对于用户来说完全是黑盒。对于Java序列化后的字节数组,别的语言无法进行反序列化。严重阻碍了它的应用。

【2】序列化以后的码流太大

package com.nio.seria;

import java.io.Serializable;
import java.nio.ByteBuffer;

public class UserInfo implements Serializable {

    private String userName;
    private Integer userId;

    public UserInfo buildUserName(String userName){
        this.userName = userName;
        return this;
    }

    public UserInfo buildUserId(int userId){
        this.userId = userId;
        return this;
    }

    public String g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞流2023

小主,破费了,回头请你喝咖啡!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值