二进制序列化框架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 ...
随机推荐
- 在RHEL5.4下设置开机自动启动ORACLE 11G
以root身份登录,创建启动服务脚本 #cd /etc/rc.d/init.d #touch oracle11g #chmod a+x oracle11g 编辑启动脚本脚本文件(oracle11g), ...
- rapsbian下配置ngrok
访问https://ngrok.com,下载Linux/ARM版本的(因为PI为ARM的芯片,如果下载Linux版本的是无法正常使用的) 解压 $ unzip /path/to/ngrok.zip 注 ...
- LightOJ 1236 Pairs Forming LCM (LCM 唯一分解定理 + 素数筛选)
http://lightoj.com/volume_showproblem.php?problem=1236 Pairs Forming LCM Time Limit:2000MS Memor ...
- android开发中提示:requires permission android.permission write_settings解决方法
一.在Manifest.xml 中添加: <uses-permission android:name="android.permission.WRITE_CONTACTS" ...
- android 拨打电话小功能
1.其实就是对Intent 的ACTION进行参数设置. 在manifest中药设置打电话的权限: <uses-permission android:name="android.per ...
- Nutch搜索引擎系列
下面是Nutch搜索系列目录,希望对研究Nutch的同学有所帮助. 目录安排: 1)Nutch搜索引擎(第1期)_ Nutch简介及安装[下载] 2)Nutch搜索引擎(第2期)_ Solr简介及安装 ...
- Android实现静默安装与卸载
一般情况下,Android系统安装apk会出现一个安装界面,用户可以点击确定或者取消来进行apk的安装. 但在实际的项目需求中,有一种需求,就是希望apk在后台安装(不出现安装界面的提示),这种安装方 ...
- RFID FDX HDX Technology
Got a tough RF environment? Turn to TI’s proven LF technology TI’s low-frequency (LF) technology has ...
- Freescale OSBDM JM60仿真器
OSBDM-JM60 - 9S08JM60 Based OSBDM — It includes interfaces and firmware applied to all the targets s ...
- registerClassAlias()函数和getClassByAlias()函数
flash.net 包中包含包级函数,可用于打开新的浏览器窗口,向服务器发送 URL 请求以及处理类别名. registerClassAlias()函数 public function registe ...