惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Hacker News - Newest:
Hacker News - Newest: "LLM"
Cloudbric
Cloudbric
V
Visual Studio Blog
L
LangChain Blog
A
About on SuperTechFans
B
Blog
T
Tenable Blog
罗磊的独立博客
Hacker News: Ask HN
Hacker News: Ask HN
Blog — PlanetScale
Blog — PlanetScale
博客园 - 三生石上(FineUI控件)
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Palo Alto Networks Blog
U
Unit 42
WordPress大学
WordPress大学
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News and Events Feed by Topic
T
Threat Research - Cisco Blogs
C
Check Point Blog
Security Latest
Security Latest
M
MIT News - Artificial intelligence
Application and Cybersecurity Blog
Application and Cybersecurity Blog
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
NISL@THU
NISL@THU
Forbes - Security
Forbes - Security
S
Securelist
Security Archives - TechRepublic
Security Archives - TechRepublic
Hugging Face - Blog
Hugging Face - Blog
aimingoo的专栏
aimingoo的专栏
Latest news
Latest news
GbyAI
GbyAI
T
Troy Hunt's Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 热门话题
V2EX - 技术
V2EX - 技术
小众软件
小众软件
Google DeepMind News
Google DeepMind News
K
Kaspersky official blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
O
OpenAI News
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
N
Netflix TechBlog - Medium
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed

博客园 - 李小加

rapidocr_api 在windows下安装 MYSQL 创建用户 配置logging.properties解决浏览器访问tomcat日志文件出现中文乱码问题 linux 安装字体解决JAVA图形中文乱码问题 linux 系统上图形生成错误 java.lang.NoClassDefFoundError: Could not initialize class sun.awt.X11GraphicsEnvironment MySQL 按时间段统计SQL maven 本地库添加jar包 数据接口开发管理平台(starAPI) oracle 11g https://localhost:1158/em 无法访问 & 设置自增id 第三方开源小工具 静态代码检查 mysql 数据库集群连接配置 tomcat server.xml 配置优化 使用PowerDesigner16.5 逆向数据库生产表结构或导出word文档 SpringBoot、thymeleaf 国际化配置 解决 SpringBoot 跨域请求问题 在 centos7 系统中用 docker 创建 tomcat 服务镜像 mysql 删除多个字段重复的数据, 只保留最新的一条 Git linux服务端安装、windows 用户端使用
JAVA 调用 com.google.protobuf
李小加 · 2021-09-13 · via 博客园 - 李小加

1、pom.xml引入依赖

      <dependency>
          <groupId>com.google.protobuf</groupId>
          <artifactId>protobuf-java</artifactId>
          <version>3.17.3</version>
    </dependency>
        
    <dependency>
          <groupId>com.google.protobuf</groupId>
          <artifactId>protobuf-java-util</artifactId>
          <version>3.17.3</version>
    </dependency>

2、到 https://github.com/protocolbuffers/protobuf/releases/tag/v3.17.3 下载相应版本的"protoc.exe" ,在 protoc-3.17.3-win64.zip 压缩包里;

3、创建 .proto 文件StockInfoReply.proto,内容示例:

syntax = "proto3";
option java_package = "com.xrh.pb";
option java_outer_classname = "StockInfoReplyModel";

message StockInfoReply {

  string Symbol = 1;
  string Symbol_Name = 2;
  string PinYin_Name = 3;
  string Full_Name = 4;
  string Eng_Name = 5;
  string Exchange= 6;
  string CurrencyType = 7;
  string Industry = 8;
  string Regional = 9;
  string SymbolType = 10;
  string Concept = 11;
  string Market = 12;
  string ListStatus = 13;
    
}

4、DOS文件定位到 protoc.exe 所在目录,执行生成JAVA文件命令:

protoc.exe --java_out=D:\project\xrh_springboot\src\main\java StockInfoReply.proto

5、文件目录结构如下:

6、测试MyTest.java代码:

package com.xrh.pb;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;

public class MyTest {

    public static void main(String[] args) {
        
        // 按照定义的数据结构,创建一个Person
        StockInfoReplyModel.StockInfoReply.Builder personBuilder = StockInfoReplyModel.StockInfoReply.newBuilder();
        personBuilder.setSymbol("00001");
        personBuilder.setSymbolName("上证指数");
        StockInfoReplyModel.StockInfoReply xxg = personBuilder.build();
        
        // 将数据写到输出流,如网络输出流,这里就用ByteArrayOutputStream来代替
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        try {
            xxg.writeTo(output);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        // -------------- 分割线:上面是发送方,将数据序列化后发送 ---------------
        
        byte[] byteArray = output.toByteArray();
        
        // -------------- 分割线:下面是接收方,将数据接收后反序列化 ---------------
        
        // 接收到流并读取,如网络输入流,这里用ByteArrayInputStream来代替
        ByteArrayInputStream input = new ByteArrayInputStream(byteArray);
        
        // 反序列化
        StockInfoReplyModel.StockInfoReply xxg2;
        try {
            xxg2 = StockInfoReplyModel.StockInfoReply.parseFrom(input);
            System.out.println("Symbol:" + xxg2.getSymbol());
            System.out.println("SymbolName:" + xxg2.getSymbolName());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}