麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

【Mrpc】 Demo1 對(duì)象與byte[]的相互轉(zhuǎn)換

2019-11-14 09:08:39
字體:
供稿:網(wǎng)友

實(shí)現(xiàn)rpc框架時(shí)服務(wù)端與客戶端之間的通訊發(fā)送的數(shù)據(jù)都是二進(jìn)制數(shù)據(jù),但實(shí)際上它們傳送的內(nèi)容都是一個(gè)個(gè)的對(duì)象。因此需要一個(gè)工具類來實(shí)現(xiàn)對(duì)象與byte[]的相互轉(zhuǎn)換

代碼資源已上傳到http://download.csdn.net/detail/mrbcy/9747217

所用技術(shù)

我使用了PRotostuff框架來輔助進(jìn)行轉(zhuǎn)換操作。工具類代碼如下:

ProtostuffUtil.java

package tech.mrbcy.mrpc.demo.demo1;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import com.dyuproject.protostuff.LinkedBuffer;import com.dyuproject.protostuff.ProtostuffIOUtil;import com.dyuproject.protostuff.Schema;import com.dyuproject.protostuff.runtime.RuntimeSchema;public class ProtostuffUtil { private static Map<Class<?>, Schema<?>> cachedSchema = new ConcurrentHashMap<Class<?>, Schema<?>>(); private static <T> Schema<T> getSchema(Class<T> clazz) { @SuppressWarnings("unchecked") Schema<T> schema = (Schema<T>) cachedSchema.get(clazz); if (schema == null) { schema = RuntimeSchema.getSchema(clazz); if (schema != null) { cachedSchema.put(clazz, schema); } } return schema; } /** * 序列化 * * @param obj * @return */ public static <T> byte[] serializer(T obj) { @SuppressWarnings("unchecked") Class<T> clazz = (Class<T>) obj.getClass(); LinkedBuffer buffer = LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE); try { Schema<T> schema = getSchema(clazz); return ProtostuffIOUtil.toByteArray(obj, schema, buffer); } catch (Exception e) { throw new IllegalStateException(e.getMessage(), e); } finally { buffer.clear(); } } /** * 反序列化 * * @param data * @param clazz * @return */ public static <T> T deserializer(byte[] data, Class<T> clazz) { try { T obj = clazz.newInstance(); Schema<T> schema = getSchema(clazz); ProtostuffIOUtil.mergeFrom(data, obj, schema); return obj; } catch (Exception e) { throw new IllegalStateException(e.getMessage(), e); } }}

User.java

package tech.mrbcy.mrpc.demo.demo1;import java.util.ArrayList;import java.util.List;public class User { private int userId; private String userName; private String pw; private List<String> addresses = new ArrayList<String>(); public int getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPw() { return pw; } public void setPw(String pw) { this.pw = pw; } public void addAddress(String address){ addresses.add(address); } @Override public String toString() { return "User [userId=" + userId + ", userName=" + userName + ", pw=" + pw + ", addresses=" + addresses + "]"; }}

Demo1.java

package tech.mrbcy.mrpc.demo.demo1;import org.junit.Test;public class Demo1Test { @Test public void testRpotostuffUtil(){ User user = new User(); user.setUserId(10000); user.setUserName("張三"); user.setPw("123456"); user.addAddress("北京市"); user.addAddress("上海市"); // 序列化 byte[] bytes = ProtostuffUtil.serializer(user); System.out.println("數(shù)組長度:" + bytes.length); // 反序列化 User newUser = ProtostuffUtil.deserializer(bytes, User.class); System.out.println(newUser); }}

輸出結(jié)果:

數(shù)組長度:41User [userId=10000, userName=張三, pw=123456, addresses=[北京市, 上海市]]

項(xiàng)目maven的pom.xml代碼如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>tech.mrbcy.mrpc</groupId> <artifactId>Mrpc</artifactId> <version>0.0.1</version> <dependencies> <!-- Protostuff --> <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> <!-- junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> <build/></project>
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一级电影免费 | 日本s级毛片免费观看 | 国产成人av一区 | 欧美成人激情 | 99视频网址 | 狠狠操天天射 | 99影视在线视频免费观看 | 午夜视频大全 | 成人免费在线观看视频 | 中文字幕一区在线观看视频 | 国产精品爱久久久久久久 | h色视频网站 | 毛片在线免费观看完整版 | 成人福利在线看 | 精品一区二区三区在线观看国产 | 久久精品男人 | 国产在线1区| 欧美一级爱爱 | 日韩电影一区二区三区 | 91精品国产乱码久久久久久久久 | 亚洲 91| 精品中文字幕在线播放 | 亚洲成人免费影视 | 欧美成人鲁丝片在线观看 | 天天草天天操 | 在线免费亚洲 | 91精品国产日韩91久久久久久360 | 国产免费乱淫av | 色诱亚洲精品久久久久久 | 91成人免费在线观看 | 国产精品久久99精品毛片三a | 精品乱码久久久久 | 久久精品中文字幕一区二区 | 成人午夜在线免费视频 | 91专区在线观看 | 吾色视频 | 午夜在线视频一区二区三区 | a一级黄色大片 | 毛片免费视频在线观看 | 国产精品视频一区二区三区四 | 免费黄色在线观看网站 |