springboot simple (10) springboot protobuf

news2024/11/29 6:37:23

教程列表
springboot simple(0) springboot简介

springboot simple(1) springboot Helloworld

springboot simple(2) springboot Starter

springboot simple(3 )springboot Web开发

springboot simple(4)springboot 数据持久化

springboot simple (5) springboot Nosql

springboot simple (6) springboot mqtt

springboot simple (7) springboot thrift

springboot simple (8) springboot kafka

springboot simple (9) springboot jpa(Hibernate)

springboot simple (10) springboot protobuf


1 protobuf简介

protocolbuffer(以下简称protobuf)是google 的一种数据交换的格式,它独立于语言,独立于平台。

google 提供了多种语言的实现:java、c#、c++、go 和python,每一种实现都包含了相应语言的编译器以及库文件。
它是一种二进制的格式,可以把它用于分布式应用之间的数据通信。

2 protobuf下载和安装

下载地址:https://github.com/protocolbuffers/protobuf/releases
我这里下载的是win 64位。
在这里插入图片描述
直接解压即可。

3 springboot protobuf集成开发

第1步:编写heroic.proto文件。

syntax = "proto3";
// 表示生成的序列化器的Java包
option java_package = "org.feidao.chapter81.model";
// 表示生成的Java序列化器的类名
option java_outer_classname = "HeroicFactory";

message Heroic {
	 int64 id = 1;
	 string name = 2;
	 string remarks = 3;
}

第2步:根据heroic.proto文件生成java文件。
Cmd进入bin目录,输入命令:protoc --java_out=. ./heroic.proto
在这里插入图片描述
执行后会生成对应的java文件。
注意:proto文件和生成的Java文件名称不能一致!

第3步:新建springboot工程,将生成的java文件拷贝到项目中,pom文件引入:

		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java</artifactId>
			<version>3.21.11</version>
		</dependency>
		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java-util</artifactId>
			<version>3.21.11</version>
		</dependency>
		<dependency>
			<groupId>com.googlecode.protobuf-java-format</groupId>
			<artifactId>protobuf-java-format</artifactId>
			<version>1.4</version>
		</dependency>

第4步:调用实现序列化:

 HeroicFactory.Heroic.Builder builder = HeroicFactory.Heroic.newBuilder();
        long lId = 0l;
        try {
            lId = Long.parseLong(id);
        }catch (Exception e){
            e.printStackTrace();
        }
        builder.setId(lId);
        builder.setName(name);
        builder.setRemarks(remarks);
        HeroicFactory.Heroic  heroic= builder.build();
        //转换成字节数组
        byte[] bytes = heroic.toByteArray();
        log.info("序列化:" + Arrays.toString(bytes));

反序列化:

        try {
            HeroicFactory.Heroic deserializeHeroic = HeroicFactory.Heroic.parseFrom(bytes);
            log.info("反序列化:");
            log.info("id:" + deserializeHeroic.getId());
            log.info("name:" + deserializeHeroic.getName());
            log.info("remarks:" + deserializeHeroic.getRemarks());
        }catch (Exception e){
            e.printStackTrace();
        }

4 测试验证

postman发送请求:
在这里插入图片描述
序列化log:
在这里插入图片描述
反序列化log:
在这里插入图片描述
代码详见:
https://gitee.com/linghufeixia/springboot-simple
chapter8-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Flutter Web CORS问题

Flutter Web CORSCORS 相关概念协议请求跨域问题App2WebCodingAppCORS 相关概念 关于 CORS 概念&#xff0c;可参考 mozilla 的相关文档资料&#xff1a; Cross-Origin Resource Sharing (CORS)Reason: CORS header ‘Access-Control-Allow-Origin’ missing An example of …

震撼发布,快鲸企微工单任务管理系统上线了

快鲸推出的企微SCRM系统被大家所熟知&#xff0c;这是一款帮助企业通过企微维护客户的管理系统。在客户管理服务过程中&#xff0c;很多企业需要通过工单来进行事项处理和文件内容流转&#xff0c;为了满足这方面客户的需求&#xff0c;快鲸工单系统也应运而生。 品牌都将客户的…

关于json的集合接收和多表关联查询

文章目录一、json的接收与发送1.postman工具发送格式2.controller接收处理二、查询集合数据1.利用mybatis-plus进行分页处理三.读取数据配置mapper.xml输出结果提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、json的接收与发送 1.postman工具发送格…

selenium之鼠标操作详解

前言 人类频繁的用手操作鼠标和键盘&#xff0c;为了解决这个问题&#xff0c;selenium工具为我们提供了一个类来处理这些事件— Actionchains &#xff0c;该类可以完成鼠标移动&#xff0c;鼠标点击事件、键盘输入、内容菜单交互等交互行为。 1、常见的鼠标操作有&#xff1…

DSPE-Thiol; DSPE-SH; 二硬脂酰磷脂酰乙醇胺改性巯基

名称&#xff1a;DSPE-Thiol DSPE-SH 全称&#xff1a;18:0 PE Thiol 中文名称&#xff1a;二硬脂酰磷脂酰乙醇胺改性巯基 结构式: 外观&#xff1a;白色粉末 溶剂&#xff1a;HCCl3及其他有机溶剂 反应基团&#xff1a;马来酰亚胺&#xff0c;可以跟任何带有马来酰亚胺活…

【计算机毕业设计】html学生管理系统 OA管理系统设计与实现 HTML网页设计结课作业

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

[附源码]Nodejs计算机毕业设计基于JAVA语言的宠物寄养管理Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Java基于springboot+vue+elementUI城乡精准扶贫信息管理系统

系统设计的主要意义在于&#xff0c;一方面&#xff0c;对于网站来讲&#xff0c;系统上线后可以带来很大的便利性&#xff0c;精准扶贫网站管理属于非常细致的管理模式&#xff0c;要求数据量大&#xff0c;计算机管理可以提高精确性&#xff0c;更为便利的就是信息的查询&…

短信引导用户关注公众号短信唤起小程序h5跳转公众号引导用户关注

背景 想要短信唤起微信并引导用户关注公众号&#xff0c;经过调研这样是做不了的&#xff0c;但是我们发现可以通过短信唤起小程序&#xff0c;那么我们只需要在小程序中内嵌一个h5&#xff0c;用 h5 来引导跳转公众号就好了。 那么我们拆解一下要做的事情&#xff1a; 短信唤…

数字孪生园区创新实验室落地解决方案

园区实验室管理实质上是对园区、人员、实验试剂耗材、仪器等的整体管理。借助数字孪生技术&#xff0c;实现数字化管理&#xff0c;可以大大提高实验室管理者以及科研人员的工作效率。 数字孪生园区创新实验室落地解决方案 北京智汇云舟科技有限公司成立于2012年&#xff0c;专…

概论_第4章__期望的定义和性质

一. 定义 1. 离散型随机变量的期望 2. 连续型随机变量的期望 定义2&#xff1a;设连续型随机变量 X的概率密度为f(x), 若积分 绝对收敛&#xff0c; 称其为X的数学期望。记为&#xff1a; 注意&#xff1a; 被积函数是&#xff1a; xf(x) 看例题: 几种重要分布的数学期…

Oracle-图形化界面-数据库安装

0、Oracle网址 1、oracle官网 2、Oracle下载地址 3、官网安装教程 1、Oracle数据库简介 Oracle Database&#xff0c;又名Oracle RDBMS&#xff0c;或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是…

还在手写接口文档?看Swagger如何助你解放双手去吃鸡

近期又有小伙伴私信辉哥&#xff0c;问辉哥现在的接口文档都是怎么编写的&#xff1f;今天辉哥就给大家聊聊&#xff0c;项目中怎么接入Swagger&#xff0c;实现在线接口文档。来&#xff0c;咱们这就开怼&#xff01; 一. 前言 现在的项目开发很多都会采用前后端分离的模式&…

Linux程序包管理工具

Linux程序包管理工具 1. 程序包 我已经使用 Linux 已经有很长一段时间了&#xff0c;日常中经常会安装或者卸载一些应用&#xff0c;久而久之很多的命令已经让我的记忆能力不容乐观了&#xff0c;所以今天在这里写一点管理程序包管理的博客。一方面&#xff0c;之后可以帮助我…

我在阿里做测试,入职5个月的回顾与总结

初来阿里实习的时候&#xff0c;我对测试人员的职责知之甚少&#xff0c;在校时更是从未接触过测试工作。一头雾水之际&#xff0c;主管说&#xff1a;“做项目吧&#xff0c;在实战中快速成长”。从学生到校招生&#xff0c;我在思维和心态完成了一次真正意义上的转变&#xf…

众享比特董事长严挺出席2022中国计算机大会“元宇宙、Web3.0、NFT:机遇还是泡沫?”技术论坛

12月10日晚&#xff0c;为期三天的2022中国计算机大会&#xff08;2022CNCC&#xff09;成功落下帷幕。众享比特董事长严挺出席“元宇宙、Web3.0、NFT&#xff1a;机遇还是泡沫&#xff1f;”技术论坛并参与专题研讨。 第三行左一为众享比特董事长严挺 中国计算机大会&#xf…

一文教你集成通知系统的多种HMS Core服务,实现数据安全和真实用户验证

1、介绍 Overview 云数据库是AppGallery Connect提供的服务之一&#xff0c;实现云端数据的同步&#xff0c;提供统一的数据模型和丰富的数据管理接口。在保证数据的可用性、可靠性、一致性&#xff0c;以及安全等特性基础上&#xff0c;能够实现数据在客户端和云端之间的无缝…

SpringBoot扩展SpringMVC配置

SpringBoot扩展SpringMVC配置1.继承WebMvcConfigurer接口2.实现一个自己的视图解析器3.其他自定义配置视图跳转Spring Boot通过WebMvcAutoConfiguration来提供一些默认配置&#xff1b;大多数时候使用默认的配置即可满足要求。但有时可能需要做一些个性化定制&#xff0c;此时就…

Nginx 可视化!配置监控一条龙!

nginx-gui这个东西真的要吹一波&#xff0c;太好用了&#xff0c;而且源码公开。对于我这样一个作为Linux菜鸟的Java开发来说&#xff0c;这个可视化配置工具简直是福音&#xff01; 需求 nginx 可视化管理&#xff0c;例如 配置管理 性能监控 日志监控 其他配置 目前已实现…

CIDR格式网络策略值设置方式

CIDR的格式是IP网段/网络ID&#xff0c;斜杠左面的是网络IP段&#xff0c;斜杠右面是网络ID。如果网络用的是IPV4&#xff0c;它最大有效值是32&#xff0c;它的作用本质上是用来表示网络策略所用的子网掩码二进制里的1有多少个&#xff0c;也就是网络ID的位数。 传统的IPV4-t…