- 浏览: 427037 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (184)
- IDE (4)
- dotCMS (3)
- Liferay Portal (1)
- J2EE (7)
- My SQL (16)
- IBM DB2 (3)
- Oracle (2)
- JDBC (4)
- Hibernate (3)
- JSP (0)
- Framework (4)
- Java编程 (30)
- C++编程 (0)
- Struts 1.X (2)
- Struts 2.X (6)
- Linux (11)
- Spring (7)
- JavaScript (6)
- Ajax (2)
- XML (3)
- IBM Websphere Portal (1)
- IBM Lotus Quickr (1)
- CMS (2)
- ERP (0)
- CRM (0)
- 大型网站架构开发 (1)
- 面试武器 (2)
- HTML 5 (2)
- dTree && webFxloadTree (2)
- JVM (7)
- SQL Server (3)
- Tomcat && Apache && Jboss && Weblogic-中间件 (4)
- FreeMarker (2)
- MongoDB (7)
- OpenSource开源 (24)
- Cloud (0)
- FFmpeg (3)
- Thrift (1)
- SpringSide (1)
- Design Pattern (1)
- solr&&ES (2)
- git&svn (1)
- 大数据 (8)
- 人工智能 (0)
- Hadoop (3)
- Spark (0)
- Sqoop (1)
- Flume (1)
- Hive (3)
- HDFS (4)
- ES (0)
- Redis (1)
- Kafka (3)
- MR (0)
- 机器学习 (0)
- 深度学习 (0)
- Impala (2)
- HBase (2)
- Spring Boot (1)
- Spring Cloud (0)
- 大数据架构 (6)
- 架构思想理论 (6)
- 技术管理 (4)
- 数据结构与算法 (4)
最新评论
-
huijz:
...
Spring Data JPA研究-使用Spring Data JPA 简化JPA 开发(ZZ) -
用户名不存在:
[img][/img][*]引用[u][/u][i][/i][ ...
MongoDB 模糊查询的三种实现方式-morphia实现 -
junsheng100:
请给个完整的例子吧!包括jar文件等
java调用ffmpeg获取视频文件信息参数代码 -
mj:
谢谢!!
SQL Server里面如何导出包含(insert into)数据的SQL脚本 (转载ZZ)
MessagePack是一个基于二进制高效的对象序列化类库,可用于跨语言通信。它可以像JSON那样,在许多种语言之间交换结构对象;但是它比JSON更快速也更轻巧。支持Python、Ruby、Java、C/C++等众多语言。比GoogleProtocol Buffers还要快4倍。
代码实现1:
package com.newtest;
import java.io.IOException;
import org.msgpack.MessagePack;
import org.msgpack.annotation.Message;
@Message
public class Student {
public int sAge = 0;
public String sName;
public boolean sHasPhone;
public static void main(String[] args) throws IOException {
Student stu = new Student();
stu.sAge = 13;
stu.sName = "programer";
stu.sHasPhone = true;
MessagePack pack = new MessagePack();
// 序列化
byte[] bytes = pack.write(stu);
// 反序列化
Student s = pack.read(bytes, Student.class);
System.out.println("Name: " + s.sName + "\n" + "Age: " + s.sAge + "\n"
+ "HasPhone: " + s.sHasPhone);
}
}
代码实现2:
package com.newtest;
import java.io.IOException;
import org.msgpack.MessagePack;
import org.msgpack.annotation.Message;
import org.msgpack.annotation.Optional;
@Message
public class ServerStudent {
public int sAge = 0;
public String sName;
public boolean sHasPhone;
/**
* 在Server端相应的Entity里添加需要的属性, 但是为了兼容之前的数据,必须加上注解@Optional
* Optional的作用是是否有该字段都不会影响MessagePack的正常解压
*/
@Optional
public double sHeight;
/**
* 该类里并没有sHeight字段,可以把它看做已经发出去的产品
*/
@Message
static class ClientStudent {
public int sAge = 0;
public String sName;
public boolean sHasPhone;
}
/**
* 与目前Server端数据字段相一致的Entity
*/
@Message
static class NewClientStudent {
public int sAge = 0;
public String sName;
public boolean sHasPhone;
public double sHeight;
}
public static void main(String[] args) throws IOException {
ClientStudent stu = new ClientStudent();
stu.sAge = 13;
stu.sName = "programer";
stu.sHasPhone = true;
NewClientStudent ns = new NewClientStudent();
ns.sAge = 10;
ns.sName = "coder";
ns.sHasPhone = false;
ns.sHeight = 180;
MessagePack pack = new MessagePack();
// 序列化
byte[] bytes = pack.write(stu);
byte[] nBytes = pack.write(ns);
// 反序列化
ServerStudent s = pack.read(bytes, ServerStudent.class);
ServerStudent ss = pack.read(nBytes, ServerStudent.class);
System.out.println("之前发布出去的产品: \n" + "Name: " + s.sName + "\n"
+ "Age: " + s.sAge + "\n" + "HasPhone: " + s.sHasPhone+"\n\n");
System.out.println("目前的产品: \n" + "Name: " + ss.sName + "\n" + "Age: "
+ ss.sAge + "\n" + "HasPhone: " + ss.sHasPhone + "\n"
+ "Height: " + ss.sHeight);
}
}
需要进入的JARS:见附件
下载链接:
发表评论
-
Hive引擎对比-MR、Tez、Spark
2023-06-13 18:45 1042Hive引擎简介 Hive引 ... -
大数据调度平台对比-Azkaban、DolphinScheduler
2023-05-30 22:42 0大数据调度平台目前多样化,如何选择适合自己公司的调度平台, ... -
Kafka常用命令汇总
2021-11-09 16:14 451在 0.9.0.0 之后的 Kafka,出现了几个新变动,一 ... -
2PC+3PC+BASE理论+CAP原则+ACID
2021-10-26 15:46 3392PC 3PC Two-phase commit ... -
Nginx、HAProxy、LVS三者的对比
2019-08-09 10:27 427LVS的优点: 1、抗负载能力强、工作在第4层仅作分发 ... -
git 常用命令
2016-03-04 00:10 802git: git pull git branch g ... -
solr&&ES API
2016-02-29 11:50 866solr api: private org.apache ... -
Guava(石榴)使用研究-Google开源Collection类库
2013-01-29 18:33 13481)Guava 简介 Guava 中文是石榴的意思,该项 ... -
Joda-Time&Date4j使用研究-开源JAVA日期时间处理类库
2013-01-29 18:27 22471)Joda-Time简介 Joda-Time提供了一组 ... -
Maven常用配置及Tomcat插件配置
2013-01-25 12:54 17298Maven用了一段时间了,基本上被我摆平了。结合Eclip ... -
ftp4j的使用研究-开源FTP客户端Java类库
2013-01-16 18:04 2464ftp4j是一个FTP客户端Java类库,实现了FTP客户 ... -
Spring Data JPA研究-使用Spring Data JPA 简化JPA 开发(ZZ)
2013-01-14 17:38 1523从一个简单的 JPA 示例 ... -
开源Java Web开发框架-Firefly研究
2013-01-09 23:12 2210一、Firefly简介 Firefly是一个高性能的一站式J ... -
G4Studio开源快速开发平台研究
2012-09-04 14:34 1499G4Studio是一套基于JavaEE ... -
JAVA实现二维码、条形码生成与破译-开源Zxing使用研究
2012-08-02 17:39 6879二维码编码代码实现类: package zxing; ... -
JAVA实现PDF文件读取、处理研究-开源PDFBox实现
2012-07-26 16:53 6563实现代码如下: import java.io.*; ... -
JAVA实现图片处理缩略图-三种开源实现方式
2012-07-24 16:04 4016代码实现如下: 第一个开源: Thumbnailator ... -
Pinyin4j的使用研究-开源JAVA中文字符和拼音之间的转换
2012-07-06 19:49 1778Pinyin4j是一个流行的Java库,支持中文字符和拼音之间 ... -
edtFTPj的使用研究-开源JAVA FTP客户端类库
2012-07-06 15:12 2310edtFTPj是一个FTP客户端库,可让任何Java应用程序能 ... -
JAVA对象转成JSON的三种开源实现方式
2012-06-04 00:12 13237第一种方式:Google的Gson Gson 是 Goo ...
相关推荐
通过深入研究这些示例,你将能掌握MessagePack在Java环境中的应用,从而提升你的数据处理能力。同时,这也是一次学习数据结构和序列化技术的好机会,特别是对于那些涉及网络通信和分布式系统开发的项目。
通过深入研究《Netty权威指南》第二版的源码,结合Maven项目的构建方式,开发者不仅可以掌握Netty的基本用法,还能深入理解其底层机制,并学习到如何结合MessagePack进行数据交换,这对于提升个人在分布式系统和网络...
在具体使用cpp-cmp时,首先需要包含头文件,然后定义要序列化的对象,接着使用提供的函数如`to_msgpack`和`from_msgpack`将对象转换成MessagePack格式的字节序列或从字节序列还原对象。例如: ```cpp #include ...
2. **MessagePack支持**:MessagePack是一种高效的二进制序列化格式,比JSON更小,更适合在网络传输和存储中使用。upickle库也支持将Scala数据结构转换为MessagePack格式。 3. **无依赖**:upickle库本身不依赖其他...
MsgPack(MessagePack)是一种高效的二进制序列化格式,与JSON类似但更紧凑,适合在网络通信和存储中使用。RABL的MsgPack支持让你能够快速地将Ruby对象转换为MsgPack格式的数据。 **RABL的使用** 在实际项目中,...
通过研究这个项目,你可以学习如何使用SNAP进行structarray的序列化和反序列化,以及如何根据需要选择不同的数据格式。 总的来说,SNAP为GameMaker Studio 2.3.0的开发提供了强大的数据管理工具,使开发者能够轻松...
Java提供了Serialization接口,但考虑到性能,开发者可能更倾向于使用protobuf、MessagePack或JSON等轻量级序列化库。 3. **数据库操作**:为了存储玩家信息、游戏状态等大量数据,服务端需要与数据库交互。Java的...
2. **并发与多线程**:讲解如何在多核CPU环境下使用多线程和多进程进行并发编程,以提高网络服务的处理能力。 3. **异步I/O模型**:详细讨论了各种异步I/O模型,如Select、Poll、Epoll和事件驱动编程(如libevent、...
开发者可以使用它创建自定义的通信协议,实现更复杂的功能。同时,C#的异步编程模型(如`async/await`关键字)使得网络操作可以在不阻塞主线程的情况下进行,提高应用程序的响应性和效率。 HTTP协议是互联网上的...
- **netty**:暗示 Protostuff 可能与 Netty 这个高性能的异步事件驱动网络应用框架有结合,可以在 Netty 中使用 Protostuff 进行数据传输。 - **序列化** 和 **反序列化**:这两个是关键操作,序列化是将对象转换...
在IT领域,C++是一种广泛使用的编程语言,其丰富的库支持了各种各样的应用开发,包括机器人学、科学计算、脚本以及序列化等。以下是一些从标题、描述和标签中提取的重要C++开源库及其详细介绍: 1. **Robotics** -...