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 下载量 143 浏览量
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+
- 资源: 7361
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 适用于 Raspberry Pi 的 Adafruit 库代码.zip
- 章节2:编程基本概念之python程序的构成
- 适用于 Python 的 LINE 消息 API SDK.zip
- 宝塔面板安装及关键网络安全设置指南
- 适用于 Python 的 AWS 开发工具包.zip
- 适用于 Python 3 的 Django LDAP 用户身份验证后端 .zip
- 基于PBL-CDIO的材料成型及控制工程课程设计实践与改革
- JQuerymobilea4中文手册CHM版最新版本
- 适用于 Python 2 和 3 以及 PyPy (ws4py 0.5.1) 的 WebSocket 客户端和服务器库.zip
- 适用于 AWS 的 Python 无服务器微框架.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功