proto序列化

proto序列化和反序列化类 序列化是将我们的Protobuf类对象转换成字节数组的方法,网络底层我们从服务器获取到的是字节数组,反序列化是将字节转成proto类对象的方法

 1 public class Serialize_Deserialize {
 2     //序列化(将前端的业务转成字节)
 3     public static byte[] Serialize(IExtensible message)
 4     {
 5         byte[] result;
 6         //using语句作用:
 7         //在语句里面定义的对象,在语句快结束的时候会自动释放对象
 8         using (var stream = new MemoryStream())
 9         {
10             Serializer.Serialize(stream, message);
11             result = stream.ToArray();
12         }
13         return result;
14     }
15
16     //反序列化(将接收到的数据字节转成客户端的C#类对象)
17     public static T Deserialize<T>(byte[] message)
18     {
19         T result;
20         using (var stream = new MemoryStream(message))
21         {
22             result = Serializer.Deserialize<T>(stream);
23         }
24         return result;
25     }
26 }
时间: 2024-07-28 13:28:53

proto序列化的相关文章

C 语言资源大全中文版

C 语言资源大全中文版 我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理.awesome-c 是 koz.ross 发起维护的 C 语言资源列表,内容包括了:构建系统.编译器.数据库.加密.初中高的教程/指南.书籍.库等等. Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大.这也是我们发起这个开源项目的初衷. 我们要做什么? 基于 awesome-c 列表,我们将对其中的各个资源项进行

Google ProtocolBuffer(PB) 简介和实例2-Wire的使用

Wire简介 轻量级的protocol buffers,针对移动设备的java库 (和protoc产生的代码相比较)由Wire生成的代码方法数量将大大减少,这将有助于android应用避免方法数65k的限制 使用方法 下载最近的wire jar包,目前最新的版本是wire-compiler-1.7.0-jar-with-dependencies.jar, github上有下载链接 编写 .proto 文件,这里直接采用上一篇介绍pb时用到的例子 编译 .proto 文件,用wrie生成java类

Caffe源码理解1:Blob存储结构与设计

博客:blog.shinelee.me | 博客园 | CSDN Blob作用 据Caffe官方描述: A Blob is a wrapper over the actual data being processed and passed along by Caffe, and also under the hood provides synchronization capability between the CPU and the GPU. Mathematically, a blob is

Protostuff 序列化

protostuff 是简化protobuf开发的java的操作工具jar . 先看看 protobuf 的使用流程: 1.先编写proto文件格式,例如 message Person {     required int32 id = 1;     required string name = 2;     optional string email = 3;   } 2.运行编译程序,生成实体类Person.javaprotoc  --java_out=./src   ./person.pr

序列化之protobuf与avro对比(Java)

最近在做socket通信中用到了关于序列化工具选型的问题,在调研过程中开始趋向于用protobuf,可以省去了编解码的过程.能够实现快速开发,且只需要维护一份协议文件即可. 但是调研过程中发现了protobuf的一些弊端,比如需要生成相应的文件类,和业务绑定太紧密,所以在看了AVRO之后发现它完美解决了这个问题. 下面记录下对这两种序列化工具的入门与测评. 一.protobuf基本操作 protobuf简介: Protocol Buffers (a.k.a., protobuf) are Goo

最简单的TCP网络封包解包(补充)-序列化

如若描述或者代码当中有谬误之处,还望指正. 将数据能够在TCP中进行传输的两种方法1.直接拷贝struct就可以了:2.序列化. 拷贝Struct存在的问题1.不能应付可变长类型的数据,比如STL中的那些容器,他们的长度都是不确定的.当然,STL的容器归根到底就是一个class:2. 内存对齐的问题,Windows默认的对齐是4字节,如果不去刻意关闭掉对齐的话,那么可能会多出不少没必要的字节数,有时候,这个损耗是客观的.但是如 果关闭了,内存拷贝又会慢一些,内存IO相对于网络IO来说,速度是快的

Hadoop序列化与Java序列化

序列化就是把内存中的对象的状态信息转换成字节序列,以便于存储(持久化)和网络传输 反序列化就是就将收到的字节序列或者是硬盘的持久化数据,转换成内存中的对象. 1.JDK的序列化 只要实现了serializable接口就能实现序列化与反序列化,一定要加上序列化版本ID serialVersionUID,这个是用来识别序列化的之前的类到底是哪一个.比如希望类的不同版本对序列化兼容,需要确保类的不同版本具有相同的serialVersionUID: Java序列化算法需要考虑: 将对象实例相关的类元数据

基于protobuf2.6序列化 反序列化

代码:  protobuf26_serialize_deserialize 序列化.反序列化工具类: package org.cgl.util.protobuf26; import com.google.protobuf.GeneratedMessage; import com.google.protobuf.TextFormat; import org.cgl.util.protobuf26.message.Message; import java.io.ByteArrayOutputStre

protostuff序列化/反序列化

Protostuff是基于Google protobuff技术的Java版本,直接使用原生的protobuff是需要数据结构的预编译过程,需要编写.proto格式的配置文件,再通过protobuff提供的工具翻译成目标语言代码,而Protostuff动态支持了protobuff的预编译的过程,可以直接使用普通java POJO进行序列化,简化编码. 经过实测序列化性能相对原生protpbuff没有影响. 由于Protostuff只支持Java实现,不过并未对序列化格式有做任何修改,所以Proto