package com.insight.demo.serialize;
import com.google.protobuf.ByteString;
import com.insight.demo.serialize.model.Tot.TotMessage;
import com.insight.demo.serialize.model.TotList.TotListMessage;
import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.RandomUtils;
import org.joda.time.DateTime;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.xerial.snappy.Snappy;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
public class ProtobufDataAnalysis {
final Logger logger = LoggerFactory.getLogger(ProtobufDataAnalysis.class);
@Test
public void testTotCache() {
long sTime = DateTime.now().getMillis();
TotMessage.Builder builder = TotMessage.newBuilder();
TotListMessage.Builder builderList = TotListMessage.newBuilder();
for (int i = 0; i < 30000; i++) {
// simple fields
builder.setPortfolioId(RandomUtils.nextDouble(12, 2000))
.setTradableEntityId(RandomUtils.nextDouble(12, 2000))
.setQuantity(RandomUtils.nextDouble(0, 2000000))
.setTestPrice((RandomUtils.nextDouble(0, 2000000)))
.setTotalMarketValueUSDAmount(builder.getQuantity() * builder.getTestPrice())
.setRuleApplicationTimeCode("BOD")
.setTradeSide("BUY")
.setPositionCode("LONG")
.setHoldingTransactionId(RandomUtils.nextDouble(12, 2000))
.setLastExecutionUSDPrice(RandomUtils.nextDouble(0, 2000000))
.setPortfolioTreatmentCode("TEST-DATA")
.setPortfolioRelationId(RandomUtils.nextDouble(12, 2000))
.setEffectiveTmstmp(LocalDateTime.now().toString())
.setTestType("UPDATE")
.setHoldingsId(RandomUtils.nextLong(10000, 1000000))
.setRequestId(UUID.randomUUID().toString())
.setTradeEventCode("AMEND")
.setTradePrice(RandomUtils.nextDouble(0, 2000000))
.setOriginTradeId(UUID.randomUUID().toString())
.setCurrencyCode("USD")
.setHoldingSourceCode(RandomStringUtils.randomAlphanumeric(6))
.setHoldingViewCode(RandomStringUtils.randomAlphanumeric(12))
.setOriginalContinuousHoldingId(RandomUtils.nextLong(10000, 1000000))
.setPortfolioFactorVersionNumber(RandomUtils.nextLong(10000, 1000000))
.setPortfolioFactorMethodCode(RandomStringUtils.randomAlphanumeric(12))
.setTotalAmortizedBookCostUSDAmount(RandomUtils.nextDouble(0, 2000000))
.setHoldingEffectiveTmstmp(LocalDateTime.now().toString())
.setLatestPrice(false);
// Build Message
TotMessage totMessage = builder.build();
// repeated field
builderList.addTotList(totMessage.toByteString());
}
TotListMessage lotListMessage = builderList.build();
// System.out.println(builderList.toString());
// write the protocol buffers binary to a file
try {
byte[] compressed = Snappy.compress(lotListMessage.toByteArray());
FileUtils.writeByteArrayToFile(new File("C:\\Users\\yhu\\Documents\\TestData\\tot-msg\\lotListMessage.bin"), lotListMessage.toByteArray());
FileUtils.writeByteArrayToFile(new File("C:\\Users\\yhu\\Documents\\TestData\\tot-msg\\lotListMessage.bin.snappy"), compressed);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
long eTime = DateTime.now().getMillis();
System.out.println(">>S>>"+ sTime);
System.out.println(">>E>>"+ eTime);
System.out.println(">>DIFF >>"+ (eTime - sTime ));
// send as byte array
// byte[] bytes = message.toByteArray();
try {
// System.out.println("Reading from file... ");
FileInputStream fileInputStream = new FileInputStream("C:\\Users\\yhu\\Documents\\TestData\\tot-msg\\lotListMessage.bin");
TotListMessage messageFromFile = TotListMessage.parseFrom(fileInputStream);
List<ByteString> messageList = new ArrayList<ByteString>();
messageList = messageFromFile.getTotListList();
// System.out.println("Message Count >>" + messageList.size());
for (ByteString byteString : messageList) {
TotMessage totMessageFromFile = TotMessage.parseFrom(byteString);
// System.out.println("setPortfolioId >>" + totMessageFromFile.getPortfolioId());
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
// }
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Serialize and Deserialize Java 示例程序
共9个文件
java:3个
gradle:2个
proto:1个
1 下载量 23 浏览量
2023-10-08
11:36:48
上传
评论
收藏 13KB ZIP 举报
温馨提示
Serialize and Deserialize Java 示例程序。简单来讲,它的数据格式与json类似,但是在存储时对数字、多字节字符、数组等都做了很多优化,减少了无用的字符,二进制格式,也保证不用字符化带来额外的存储空间的增加。MessagePack 是一个计算机的数据交换格式。MessagePack 是一个二进制的格式用来表达简单的数据结构,例如数组和关联数组。MessagePack 的目标尽量的简单和紧凑。官方的实现已经实现了多种语言,例如 C, C++, C#, D, Erlang, Go, Haskell, Java, JavaScript, Lua, OCaml, Perl, PHP, Python, Ruby, Scala, Smalltalk, 和 Swift。MessagePack 的了解就是传输的数据格式都是二进制,可以节省用户的流量。
资源推荐
资源详情
资源评论
收起资源包目录
serialize-deserialize-demo-java-master.zip (9个子文件)
serialize-deserialize-demo-java-master
src
test
java
com
insight
demo
serialize
ProtobufDataAnalysis.java 5KB
MessagePackDataAnalysis.java 4KB
main
java
com
insight
demo
serialize
model
msgpack
DataCacheMessage.java 285B
proto
simple.proto 185B
gradlew.bat 3KB
build.gradle 2KB
settings.gradle 49B
gradlew 6KB
.gitignore 4KB
共 9 条
- 1
资源评论
Java程序员-张凯
- 粉丝: 1w+
- 资源: 7365
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 2024年手机号段归属地-517152.rar
- 社区物资交易互助平台 基于Spring Boot框架实现的社区物资交易互助平台 (程序+数据库+报告)
- 使用 RRT* 和最小抖动轨迹生成进行四轴飞行器路径规划+C++项目源码+文档说明+代码注释
- 小马哥教程片段之汇编语言核心概念图解与常用指令详解
- 在线无人机规划框架-用于在先前未知的环境中生成安全、动态可行的轨迹(自主四旋翼飞行器的贝塞尔轨迹生成)+项目源码+文档说明+注释
- 基于AT89C51单片机的智能化水塔水位控制系统设计与实现(毕业论文设计)
- 主动磁轴承市场报告2024
- 【Unity 天气系统插件】Enviro 3 - Sky and Weather 高度可定制的云、雾和光照系统
- 智能电机市场报告2024-2030
- B.10-本科毕业生对学校的满意度分析.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功