Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java编解码

Java编解码

作者头像
黑洞代码
发布于 2021-01-14 07:38:25
发布于 2021-01-14 07:38:25
1.1K0
举报

编解码

Java序列化的目的主要有两个:

1.对象序列化

2.网络传输

当进行远程跨进程服务调用时,需要把被传输的对象转化为字节数组或者ByteBuffer对象。当远程服务读取到字节数组或者ByteBuffer对象时,需要将其解码为Java对象。这就是所谓的Java对象编解码技术。

Java序列化

Serializable

JDK1.1已经提供序列化功能,不需要额外的类库。一般远程调用(RPC)很少使用Java自带的序列化进行消息的编解码和传输。

Java序列化缺点:

无法跨语言

序列化后的码流太大

序列化性能低

主流编码框架

Google的Protobuf

特点:

结构化数据存储格式

编码性能高

语言无关,平台无关,扩展性好

支持Java,C++和Python

FaceBook的Thrift

Thrift支持三种典型的编解码方式

通用二进制编解码

压缩二进制编解码

优化的可选字段压缩编解码

Marshallling

可插拔的类解析器

可插拔的对象替换技术

可插拔的预定义缓存表

无需实现Serializable

缓存技术提高对象序列化性能

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-09-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 落叶飞翔的蜗牛 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
netty编解码器_netty编程实战
java序列化方案:首先把对象信息写到ObjectOutputStream 中,然后再写到ByteArrayOutputStream 中,最后写到字节数组中;
全栈程序员站长
2022/11/10
2540
netty编解码器_netty编程实战
Netty编解码框架
对于java来说就是序列化与反序列化机制,java序列化主要有两种用途,就是网络传输和对象持久化,所以Java提供了ObjectOutPutStream和ObjectInputStream。 既然Java已经提供了编解码机制,为何Netty还要提供另外的编解码框架呢?
Liusy
2020/08/31
8110
奈学:一起了解几种序列化协议
序列化(编码)是将对象序列化为二进制形式(字节数组),主要用于网络传输、数据持久化等;而反序列化(解码)则是将从网络、磁盘等读取的字节数组还原成原始对象,主要用于网络传输对象的解码,以便完成远程调用。
江帅帅
2020/08/05
2.9K0
Netty 之编解码技术
系列文章:http://www.jianshu.com/p/594441fb9c9e
Yano_nankai
2018/10/08
5910
java 输入/输出(学习笔记)
java的IO通过java.io包下的类和接口来支持,在java.io包下主要包括输入、输出两种IO流,每种输入、输出流又可分为字节流和字符流两大类。其中字节流以字节为单位来处理输入、输出操作,而字符流则以字符来处理输入、输出操作。除此之外,java的IO流使用了一种装饰器设计模式,它将IO流分成底层节点流和上层处理流,其中节点流用于和底层的物理存储节点直接关联——不同的物理节点获取节点流的方式可能存在一定的差异,但程序可以把不同的物理节点流包装成统一的处理流,从而允许程序使用统一的输入、输出代码来读取不同的物理存储节点的资源。
dejavu1zz
2020/10/23
1.2K0
Netty高性能之道
1. 背景 1.1. 惊人的性能数据 最近一个圈内朋友通过私信告诉我,通过使用Netty4 + Thrift压缩二进制编解码技术,他们实现了10W TPS(1K的复杂POJO对象)的跨节点远程服务调用。相比于传统基于Java序列化+BIO(同步阻塞IO)的通信框架,性能提升了8倍多。 事实上,我对这个数据并不感到惊讶,根据我5年多的NIO编程经验,通过选择合适的NIO框架,加上高性能的压缩二进制编解码技术,精心的设计Reactor线程模型,达到上述性能指标是完全有可能的。 下面我们就一起来看下Netty是如
用户1263954
2018/01/30
1.4K0
Netty高性能之道
【面试题精讲】ProtoStuff
ProtoStuff 是一个 Java 序列化框架,它基于 Google 的 Protocol Buffers(简称 protobuf)协议。它提供了一种高效、灵活和易用的方式来将 Java 对象转换为字节流,并且可以在不同的系统之间进行传输和存储。
程序员朱永胜
2023/10/14
5190
『互联网架构』软件架构-netty高性能序列化协议protobuf(56)
1.码流的大小,也就是解析后的二进制的大小,很明显原生的jdk序列化,字符长度很长,下面的滚动条都很长。数据越多,传输的带宽越大。在项目开发中内网通信的带宽都是固定的,你占的多了,就影响其他人使用带宽。 2.编解码性能,编解码速度越快,肯定就越好。
IT架构圈
2019/05/31
6860
Java面试题-基础篇五
1、a.hashCode() 有什么用?与 a.equals(b) 有什么关系?
用户5224393
2019/08/20
4320
Java中的IO流基础知识
3.如何将一 个java对象序列化到文件里 在java中能够被序列化的类必须先实现Serializable接口,该接口没有任何抽象方法只是起到一个标记作用。
海拥
2021/08/23
5260
关于IO流的笔试面试题[通俗易懂]
1.java中有几种类型的流?jdk为每种类型的流提供了一些抽象类以供继承,请说出它们分别是什么?
全栈程序员站长
2022/08/10
7840
javaIO流
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。
leobhao
2022/06/28
3580
Netty4自带编解码器详解
前言 本篇文章是Netty专题的第五篇,前面四篇文章如下: 高性能NIO框架Netty入门篇 高性能NIO框架Netty-对象传输 高性能NIO框架Netty-整合kryo高性能数据传输 高性能NIO框架Netty-整合Protobuf高性能数据传输 作为一个高性能的异步、NIO通信框架,编解码框架是Netty的重要组成部分。 从网络中读取消息,需要经过解码,将二进制的数据报转换成应用层协议消息,才能够被应用逻辑识别。同样的道理,客户端发送给服务器的消息,也需要经过编码转换成二进制字节数组(Netty就是B
猿天地
2018/04/03
1.5K0
关于Java序列化你应该知道的一切
什么是序列化 我们的对象并不只是存在内存中,还需要传输网络,或者保存起来下次再加载出来用,所以需要Java序列化技术。 Java序列化技术正是将对象转变成一串由二进制字节组成的数组,可以通过将二进制数据保存到磁盘或者传输网络,磁盘或者网络接收者可以在对象的属类的模板上来反序列化类的对象,达到对象持久化的目的。 怎么序列化一个对象? 要序列化一个对象,这个对象所在类就必须实现Java序列化的接口:java.io.Serializable。 1、类添加序列化接口 import java.io.Seriali
Java技术栈
2018/03/30
5210
关于Java序列化你应该知道的一切
高性能序列化工具ChronicleWire
之前使用chronicle进行过日志回放框架的设计,效果很不错。后面在更加深入了解过程中,发现chronicle性能优势中一个非常重要的方面,就是序列化和反序列化。chronicle提供了多个功能类,实现不同格式数据的序列化和反序列化功能。
FunTester
2024/01/25
3860
高性能序列化工具ChronicleWire
Java I/O流输入输出,序列化,NIO,NIO.2
Java IO流 File类: File类是java.io包下代表和平台无关的文件和目录,File不能访问文件内容本身。 File类基本操作: System.out.println("判断文件是否存在:"+file.exists());//判断文件是否存在,返回Boolean值 System.out.println("创建文件夹:"+file.mkdir());//创建文件夹,只能创建一层,返回Boolean值 System.out.println("文件目录
二十三年蝉
2018/07/05
1.6K0
序列化和反序列化:从理论到实践的全方位指南
上一篇文章,我们了解了网络模型 OSI 和 TCP/IP的联系和区别,今天结合TCP/IP 聊一下 序列化的应用过程
shengjk1
2025/05/16
3510
你真的了解Java中的序列化吗
在Java编程中,对象的序列化是一种重要的功能。它允许将对象转换为字节序列,以便在网络传输、持久化存储或与其他系统进行交互时使用。本文将介绍为什么使用Java序列化,常用的Java序列化框架,以及具体的使用方式。
Kokomo
2023/11/22
2830
你真的了解Java中的序列化吗
一招MAX降低10倍,现在它是我的了| 京东零售技术团队
到家门店系统,作为到家核心基础服务之一,门店C端接口有着调用量高,性能要求高的特点。
用户6256742
2024/06/30
2250
一招MAX降低10倍,现在它是我的了| 京东零售技术团队
Java序列化 3 连问
Java序列化是指把Java对象转换为字节序列的过程,而Java反序列化是指把字节序列恢复为Java对象的过程:
xcbeyond
2020/03/25
4760
Java序列化 3 连问
相关推荐
netty编解码器_netty编程实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档