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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 词向量总结「建议收藏」

    词向量总结「建议收藏」词向量词向量是自然语言理解的重要工具,它的核心思想是把词映射到一个向量空间,并且这个向量空间很大程度上保留了原本的语义。词向量既可以作为对语料进行数据挖掘的基础,也可以作为更复杂的模型的输入,是现在nlp的主流工具。下面就总结一下nlp中经典的词向量方法。主要有:onehot、glove、cbow、skip-gram

    2022年5月6日
    37
  • Ant安装及环境配置「建议收藏」

    Ant安装及环境配置「建议收藏」1什么是AntApacheAnt是一个基于Java的生成工具。生成工具在软件开发中用来将源代码和其他输入文件转换为可执行文件的形式(也有可能转换为可安装的产品映像形式)。随着应用程序的生成过程变得更加复杂,确保在每次生成期间都使用精确相同的生成步骤,同时实现尽可能多的自动化,以便及时产生一致的生成版本2、下载、安装、环境变量配置ant下载地址https://download…

    2022年7月24日
    5
  • LFU算法

    LFU算法LFU 算法 淘汰访问频次最低的元素 如果访问频次最低的数据有多条 则需要淘汰最旧的数据 classLFUCach 存放 key 到 val 的映射 HashMap Integer Integer keyToVal newHashMap lt gt 存放 key 到使用频次 freq 的映射 HashMap Integer Integer keyToFreq newHashMap Integer Integer Integer Integer

    2025年9月15日
    3
  • asp.net中回发或回调参数无效。在配置中使用 <pages enableEventValidation=”… 问题解决[通俗易懂]

    asp.net中回发或回调参数无效。在配置中使用 <pages enableEventValidation=”… 问题解决[通俗易懂]回发或回调参数无效。在配置中使用

    2022年7月24日
    17
  • java 中stopwatch_StopWatch使用介绍「建议收藏」

    java 中stopwatch_StopWatch使用介绍「建议收藏」StopWatch是Spring核心包中的一个工具类,它是一个简单的秒表工具,可以计时指定代码段的运行时间以及汇总这个运行时间,使用它可以隐藏使用System.currentTimeMillis(),提高应用程序代码的可读性并减少计算错误的可能性。注意事项StopWatch对象不是设计为线程安全的,并且不使用同步。使用场景一般是在开发过程中验证性能,而不是作为生产应用程序的一部分方法介绍//构…

    2022年6月23日
    189
  • 超好玩的vbs代码 (恶作剧代码)

    超好玩的vbs代码 (恶作剧代码)VBScript是VisualBasicScript的简称微软公司可视化BASIC脚本版),即VisualBasic脚本语言,有时也被缩写为VBS。它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。同时它又是asp动态网页默认的编程语言,配合asp内建对象和ADO对象,用户很快就能掌握访问数据库的as…

    2022年6月14日
    50

发表回复

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

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