二进制序列化框架easypack发布啦!
简介
easypack是基于boost.serialization的二进制序列化框架,使用极其方便。
Examples
基本类型
int age = 20;
std::string name = "Jack";
easypack::Pack p;
p.pack(age, name); int age2;
std::string name2;
easypack::UnPack up(p.getString());
up.unpack(age2, name2);
/* up.unpackTop(age2); */
/* up.unpackTop(name2); */
可以看到,pack/unpack支持变参,并且还支持出栈式反序列化,使用非常方便。
std::tuple
std::tuple<int, std::string> tp = std::make_tuple(10, "Tom");
easypack::Pack p;
p.pack(tp); std::tuple<int, std::string> tp2;
easypack::UnPack up(p.getString());
up.unpack(tp2);
boost序列化默认不支持std::tuple类型,easypack序列化std::tuple提供了和序列化基本类型一样的接口。
STL类型
std::vector<int> vec { 1, 2 };
std::unordered_map<int, std::string> m;
std::stack<int> s;
s.push(100);
s.push(200);
m.emplace(1, "Hello");
m.emplace(2, "world");
easypack::Pack p;
p.pack(vec, m, s); std::vector<int> vec2;
std::unordered_map<int, std::string> m2;
std::stack<int> s2;
easypack::UnPack up(p.getString());
up.unpack(vec2, m2, s2);
类类型
struct PersonInfo
{
std::string name;
int age; template<class Archive>
void serialize(Archive& ar, const unsigned int)
{
ar & name;
ar & age;
}
}; PersonInfo info { "Jack", 20 };
easypack::Pack p;
p.pack(info); PersonInfo person;
easypack::UnPack up(p.getString());
up.unpack(person);
依赖性
- boost.serialization
- c++11
兼容性
Linux x86_64gcc 4.8, gcc4.9, gcc 5.Windows x86_64Visual Studio 2015
License
This software is licensed under the MIT license. © 2016 chxuan
二进制序列化框架easypack发布啦!的更多相关文章
- Java序列化框架性能比較
博客: http://colobu.com jvm-serializers提供了一个非常好的比較各种Java序列化的的測试套件. 它罗列了各种序列化框架. 能够自己主动生成測试报告. 我在AWS c3 ...
- 线程安全使用(四) [.NET] 简单接入微信公众号开发:实现自动回复 [C#]C#中字符串的操作 自行实现比dotcore/dotnet更方便更高性能的对象二进制序列化 自已动手做高性能消息队列 自行实现高性能MVC WebAPI 面试题随笔 字符串反转
线程安全使用(四) 这是时隔多年第四篇,主要是因为身在东软受内网限制,好多文章就只好发到东软内部网站,懒的发到外面,现在一点点把在东软写的文章给转移出来. 这里主要讲解下CancellationT ...
- 常见的序列化框架及Protobuf序列化原理
原文链接:https://www.jianshu.com/p/657fbf347934 https://www.cnblogs.com/javazhiyin/p/11375553.html https ...
- Mapreduce之序列化框架(转自http://blog.csdn.net/lastsweetop/article/details/9376495)
框架简介 MapReduce仅仅可以支持Writable做key,value吗?答案是否定的.事实上,一切类型都是支持的,只需满足一个小小的条件:每个类型是以二进制流的形式传输.为此Hadoop提供了 ...
- C#中的二进制序列化和Json序列化
序列化就是把一个对象变成流的形式,方便传输和还原.小弟不才,总结下对二进制序列化和Json序列化的使用: 1.首先,二进制序列化(BinaryFormatter)要求要序列化的类必须是可序列化的(即在 ...
- 序列化战争:主流序列化框架Benchmark
序列化战争:主流序列化框架Benchmark GitHub上有这样一个关于序列化的Benchmark,被好多文章引用.但这个项目考虑到完整性,代码有些复杂.为了个人学习,自己实现了个简单的Benchm ...
- hadoop深入研究:(十三)——序列化框架
hadoop深入研究:(十三)--序列化框架 Mapreduce之序列化框架(转自http://blog.csdn.net/lastsweetop/article/details/9376495) 框 ...
- java序列化框架(protobuf、thrift、kryo、fst、fastjson、Jackson、gson、hessian)性能对比
我们为什么要序列化 举个栗子:下雨天我们要打伞,但是之后我们要把伞折叠起来,方便我们存放.那么运用到我们java中道理是一样的,我们要将数据分解成字节流,以便存储在文件中或在网络上传输,这叫序列 ...
- 5.3.4 Hadoop序列化框架
序列化框架 除了writable实现序列化之外,只要实现让类型和二进制流相互转换,都可以作为hadoop的序列化类型,为此Hadoop提供了一个序列化框架接口,他们在org.apache.hadoop ...
随机推荐
- html5 canvas 旋转扩大
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 远控软件VNC攻击案例研究
欢迎大家给我投票: http://2010blog.51cto.com/350944 本文出自 "李晨光原创技术博客" 博客,谢绝转载!
- miracast 协议wifi display
看wifi direct display标准的地方: http://www.wi-fi.org/discover-wi-fi/specifications Miracast依赖的Wi-Fi技术项[②] ...
- 异步编程之Promise(2):探究原理
异步编程系列教程: (翻译)异步编程之Promise(1)--初见魅力 异步编程之Promise(2):探究原理 异步编程之Promise(3):拓展进阶 异步编程之Generator(1)--领略魅 ...
- 关于网上流传的四个原版Windows XP_SP2全面了解
如何查看你的XP SP2是否原版?打开Windows/System32/找到EULA这个文本文档(即eula.txt):打开在最后一行:有一个EULAID:XPSP2_RM.0_PRO_RTL_CN ...
- Qt实现应用程序单实例运行--LocalServer方式
使Qt应用程序能够单实例运行的典型实现方法是使用共享内存实现.该方法实现简单,代码简洁. 但有一个致命缺陷:共享内存(QSharedMemory)实现的单程序运行,当运行环境是UNIX时,并且程序不幸 ...
- Client Dependency学习
Client Dependency Framework ---CDF CDF is a framework for managing CSS & JavaScript dependencies ...
- JQuery与GridView控件结合示例
JQuery是一种非常强大的客户端JS编程技术,这里不想过多阐述它的相关背景知识,只想简单演示一下如何与asp.net的控件结合开发. 比如,我们要做一个下面如图所示的功能,效果是状态.编号.数字1. ...
- My集合框架第五弹 最小堆
二叉堆(以最小堆为例),其具有结构性质和堆序性质结构性质: 堆是一棵完全的二叉树,一颗高为h的完全二叉树有2^h到2^h-1个节点,高度为log N 而且该结构可以很容易的使用数 ...
- CSS line-height 和 vertical-align 精解(上篇)
声明本文转自:http://hi.baidu.com/wolongxzg/item/a39ef8299c984283af48f5b0 line-height属性的具体定义列表如下: 语法: line- ...