性能最好的序列化反序列化,Protobuf的用法(maven项目)
2016-08-15 13:09
726 查看
首先要在pom.xml里添加Protobuf的jar包
序列化的实体类User.java(不需要实现Serializable接口)
<dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-core</artifactId> <version>1.0.8</version> </dependency> <dependency> <groupId>com.dyuproject.protostuff</groupId> <artifactId>protostuff-runtime</artifactId> <version>1.0.8</version> </dependency>
序列化的实体类User.java(不需要实现Serializable接口)
package com.serialize.entity; public class User { private String id; private String username; private String password; public User() { } public User(String id, String username, String password) { this.id = id; this.username = username; this.password = password; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [id=" + id + ", username=" + username + ", password=" + password + "]"; } }序列化的工具类SerializeUtils.java(使用了泛型方法)
package com.serialize.utils; import com.dyuproject.protostuff.LinkedBuffer; import com.dyuproject.protostuff.ProtobufIOUtil; import com.dyuproject.protostuff.runtime.RuntimeSchema; public class SerializeUtils{ public static <T> byte[] serialize(T t,Class<T> clazz) { return ProtobufIOUtil.toByteArray(t, RuntimeSchema.createFrom(clazz), LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE)); } public static <T> T deSerialize(byte[] data,Class<T> clazz) { RuntimeSchema<T> runtimeSchema = RuntimeSchema.createFrom(clazz); T t = runtimeSchema.newMessage(); ProtobufIOUtil.mergeFrom(data, t, runtimeSchema); return t; } }测试主类App.java
package com.serialize; import com.serialize.entity.User; import com.serialize.utils.SerializeUtils; public class App { public static void main(String[] args) { User user=new User("1","xiaobao","123456"); System.out.println("序列化"); byte[] data = SerializeUtils.serialize(user,User.class); for (byte b : data) { System.out.print(b); } System.out.println(); System.out.println("反序列化"); User user2 = SerializeUtils.deSerialize(data,User.class); System.out.println(user2); } }
相关文章推荐
- OkHttpClient实例化解析
- 对链表的操作
- Java和eclipse常用操作
- 从C++转向Java的第一课
- PAT乙级.1027. 打印沙漏(20)
- Windows PE记录简介(PE概念简介)-2
- hdu 5834 Magic boy Bi Luo with his excited tree 树形dp
- hdu5833Zhu and 772002
- hdu5832-A water problem-续缘之路
- [置顶] thinkPHP a标签URL传值方式
- iOS开发-去model化开发
- java的内部类
- Iterator原理
- 深入理解javascript事件流
- 智能车学习(二十)——浅谈C车硬连接与软连接
- 认真学spring官网,很容易找到spring4的jar包下载位置
- oracle 自定义列转行函数
- javase重新开始系列之多线程基础
- jsp到javabean数据传递
- jsp到javabean数据传递