protostuff java_protostuff 及其注意事项

protostuff java_protostuff 及其注意事项google开发的开源的序列化方案protocolbuffer(简称protobuf),它的好处很多,独立于语言,独立于平台,最最重要的是它的效率相当高,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一。protostuff是一个基于protobuf实现的序列化方法,它较于protobuf最明显的好处是,在几乎不损耗性能的情况下做到了不用…

大家好,又见面了,我是你们的朋友全栈君。

google开发的开源的序列化方案protocol buffer(简称protobuf),它的好处很多,独立于语言,独立于平台,最最重要的是它的效率相当高,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一。

protostuff是一个基于protobuf实现的序列化方法,它较于protobuf最明显的好处是,在几乎不损耗性能的情况下做到了不用我们写.proto文件来实现序列化

io.protostuff

protostuff-runtime

1.3.8

io.protostuff

protostuff-core

1.3.8

public class ProtolStuffSerializeDemo {

public static void main(String[] args) {

Divide divide = new Divide();

System.err.println(divide);

Schema divideSchema = RuntimeSchema.getSchema(Divide.class);

LinkedBuffer buffer = LinkedBuffer.allocate(512);

ByteArrayOutputStream byteArrayOutputStream;

byte[] bytes = null;

try {

byteArrayOutputStream = new ByteArrayOutputStream();

ProtostuffIOUtil.writeTo(byteArrayOutputStream, divide, divideSchema, buffer);

bytes = byteArrayOutputStream.toByteArray();

System.err.println(String.format(“length : %d value %s” ,bytes.length , new String(bytes)));

for(byte b: bytes) {

System.err.print(“[” + (char)b + “]”);

System.err.print(b + ” “);

}

System.err.println();

} catch (IOException e) {

e.printStackTrace();

}

Lily lily = new Lily();

ProtostuffIOUtil.mergeFrom(bytes, lily, divideSchema);

System.err.println(lily);

}

}

@Data

class Divide {

String name = “divide”;

String age = “a”;

String age1 = “b”;

String age2 = “c”;

String age3 = “d”;

String age4 = “e”;

}

@Data

class Lily {

int age;

String name;

}

「招俊坚:「张兴业:cellar 序列化使用了 protostuff,总结了一下需要注意的事项:

// 不允许以下行为出现:

// 不允许用泛型 java.lang.Object

// 不允许继承接口、继承类 interfaces

// 不允许使用数组 arrays

// 不允许使用枚举 enum

// 不允许使用泛型的集合。比如:允许 List 但是不允许 List

// 不允许使用两层以上容器这种复杂结构。比如:不允许 List

// ==========

// (1)字段使用 @Tag 注解。表示第几个字段。值不能重复。

// (2)不能删除字段。使用 @Deprecated 注解代替。

// (3)不序列化某个字段。使用 transient java 关键字声明。」

——————————

Cellar的protostuff的@Tag是无效的」

——————————

嗯,我们也是自己用新版的 protostuff 序列化的。直接用 cellar 的 byte[] 接口

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/133927.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 贪心算法例题整理

    贪心算法例题整理

    2021年9月27日
    47
  • 单点登录SSO:概述与示例

    单点登录SSO:概述与示例本系列将由浅入深的带大家深入最新的单点登录 SSO 方案选型与架构开发实战 附动图示例 从业十多年 为政府 电信 跨国公司顾问和实施的单点登录解决方案无数 深谙其痛点与关键 大部分单点登录方案 从产品方案选型起就存在根本性问题 往往导致 1 受困于诸多被集成系统的改造 2 依赖特定终端 甚至特定浏览器 3 被 忽悠 只想剪个头发 结果买了美容保养年卡 而且头发还剪得不好 4 一个月能实施完的折腾了三四个月

    2025年9月24日
    6
  • 使用Babel将es6转换es5

    使用Babel将es6转换es5目录Babel是什么?命令行转换babel-cli安装使用配置文件babel-polyfill安装在js中使用将Babel集成到webpack中Babel配置webpack配置1)安装webpack2)添加配置文件webpack.config.js3)修改package.json4)打包 拓展npm中save与save-d…

    2025年11月23日
    5
  • cad快速选择命令快捷键_CAD快捷键,命令大全

    cad快速选择命令快捷键_CAD快捷键,命令大全一 常用 CTRL ALT 快捷键 ALT TK 如快速选择 ALT NL 线性标注 ALT VV4 快速创建四个窗口 ALT MUP 提取轮廓 Ctrl B 栅格捕捉模式控制 F9 Ctrl C 将选择的对象复制到剪切板上 Ctrl F 控制是否实现对象自动捕捉 F3 Ctrl G 栅格显示模式控制 F7 Ctrl J 重复执行上一步命令 Ctrl K 超级链接 Ctrl N 新建图形文件 C

    2025年9月6日
    12
  • JAVA英文文献_java毕业论文参考文献

    JAVA英文文献_java毕业论文参考文献JAVA编程思想英文参考文献和翻译时间:2016-11-1514:44来源:毕业论文虽然java是基于C++基础上的,但是它更是纯粹的面向对象语“Ifwespokeadifferentlanguage,wewouldperceiveasomewhatdifferentworld.”3670LudwigWittgenstein(1889-1951)Althoughit…

    2022年9月30日
    4
  • 小米手机解BL锁 刷开发版系统获取root权限「建议收藏」

    小米手机解BL锁 刷开发版系统获取root权限「建议收藏」小米手机想要获得root权限的话就要刷开发版的系统,这个是不叫简单省事的,获得root权限第一步,打开小米的这个网站http://www.miui.com/unlock/download.html按照上面的操作,解除BL锁。第二步从官网下载的解锁工具后打开如下图所示,手机进入兔子界面后,要先安装驱动,然后运行解锁程序第三步链接好手机和登录账号后直接点击解锁,解锁成功后如下图所示第四步前往http://www.miui.com/download.html小米官

    2022年5月15日
    83

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号