当前位置: 首页 > news >正文

怎么做公司网站优化营销推广计划怎么写

怎么做公司网站优化,营销推广计划怎么写,大学生毕业设计网页设计,三只松鼠网络营销策划书一、简介 Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。 Protocol Buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。 Protocol B…

一、简介

Protocal Buffers(简称protobuf)是谷歌的一项技术,用于结构化的数据序列化、反序列化。

Protocol Buffers 是一种语言无关、平台无关、可扩展的序列化结构数据的方法,它可用于(数据)通信协议、数据存储等。
Protocol Buffers 是一种灵活,高效,自动化机制的结构数据序列化方法-可类比 XML,但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。
你可以定义数据的结构,然后使用特殊生成的源代码轻松的在各种数据流中使用各种语言进行编写和读取结构数据。你甚至可以更新数据结构,而不破坏由旧数据结构编译的已部署程序
与JSON相比

protobuf的效率高,不过protobuf生成的是字节码,可读性相比之略差

Protobuf不仅仅是一种消息格式,它还是一组用于定义和交换这些消息的规则和工具。 谷歌是这个协议的创造者,已开源,并为常用的编程语言提供生成代码的工具,

如JavaScript,Java,PHP,C#,Ruby,Objective C,Python,C ++和Go。 除此之外,Protobuf具有比JSON更多的数据类型,如枚举和方法,并且还大量用于RPC(远程过程调用)

参考资料

名称地址
protobuf 编译器Releases · protocolbuffers/protobuf · GitHub

Protobuf 语法指南

[译]Protobuf 语法指南

二、protobuf 环境配置

1.下载编译器

选择自己需要的版本下载即可,我这里下载的是win64 3.15.3,下载之后进行解压

2.配置环境变量

path 系统变量中增加配置,也就是你的解压文件位置

3.检查是否配置成功

cmd 之后,输入

protoc

查看版本

protoc --version

这样我们就可以在命令行去生成 proto 文件了

二、idea 中使用 protobuf

1.idea 安装 protobuf 相关插件

任意安装以下插件即可,安装之后重启 idea
一个是根据 .proto 文件来生成 proto 对象
一个是使得 idea 支持我们的 proto 语法,例如关键词高亮等功能

2.写一个简单的 proto

//使用 proto3 语法 ,未指定则使用proto2
syntax = "proto3";//生成 proto 文件所在包路径
package com.wxw.notes.protobuf.proto;//生成 proto 文件所在包路径
option java_package = "com.wxw.notes.protobuf.proto";//生成 proto 文件名
option java_outer_classname="DemoProto";message Demo{//自身属性int32 id = 1;string code = 2;string name = 3;
}

如果发现有这种红色标识,千万不要以为是我们 Java 里面的异常错误,这只是 proto 的语法高亮

3.生成 proto 对象

选中我们新建的.proto 文件,右键,选择框中的选项就可以生成了

生成后的 proto 文件如下

三、protobuf方法使用

1.序列化和反序列化

 
package com.wxw.notes.protobuf.test;import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.MessageOrBuilder;
import com.google.protobuf.TextFormat;
import com.google.protobuf.util.JsonFormat;
import com.wxw.notes.protobuf.proto.DemoProto;import java.util.Arrays;public class SimpleTestMain {public static void main(String[] args) {//初始化数据DemoProto.Demo.Builder demo = DemoProto.Demo.newBuilder();demo.setId(1).setCode("001").setName("张三").build();//序列化DemoProto.Demo build = demo.build();//转换成字节数组byte[] s = build.toByteArray();System.out.println("protobuf数据bytes[]:" + Arrays.toString(s));System.out.println("protobuf序列化大小: " + s.length);DemoProto.Demo demo1 = null;String jsonObject = null;try {//反序列化demo1 = DemoProto.Demo.parseFrom(s);//转 jsonjsonObject = JsonFormat.printer().print(demo1);} catch (InvalidProtocolBufferException e) {e.printStackTrace();}System.out.println("Json格式化结果:\n" + jsonObject);System.out.println("Json格式化数据大小: " + jsonObject.getBytes().length);}

2.protobuf 和 JSON 互相转换

引入依赖

com.google.protobufprotobuf-java-util3.7.1


代码实现

public class ProtoJsonUtils {public static String toJson(Message sourceMessage)throws IOException {String json = JsonFormat.printer().print(sourceMessage);return json;}public static Message toProtoBean(Message.Builder targetBuilder, String json) throws IOException {JsonFormat.parser().merge(json, targetBuilder);return targetBuilder.build();}
}

对于一般的数据类型,如int,double,float,long,string都能够按照理想的方式进行转化。对于protobuf中的enum类型字段,会被按照enum的名称转化为string。对于bytes类型的字段,则会转化为utf8类型的字符串

3.protobuf 与 Java 对象互转

引入依赖

        <!-- protocol buffer support --><dependency><groupId>com.google.protobuf</groupId><artifactId>protobuf-java</artifactId><version>${protobuf.version}</version></dependency><dependency><groupId>io.grpc</groupId><artifactId>grpc-all</artifactId><version>${grpc.version}</version></dependency>


代码实现

public class ProtobufBeanUtil {private ProtobufBeanUtil(){}/*** 将ProtoBean对象转化为POJO对象** @param destPojoClass 目标POJO对象的类类型* @param sourceMessage 含有数据的ProtoBean对象实例* @param <PojoType> 目标POJO对象的类类型范型* @return* @throws IOException*/public static <PojoType> PojoType toPojoBean(@NotNull Class<PojoType> destPojoClass, @NotNull Message sourceMessage)throws IOException {String json = JsonFormat.printer().print(sourceMessage);return new Gson().fromJson(json, destPojoClass);}/*** 将POJO对象转化为ProtoBean对象** @param destBuilder 目标Message对象的Builder类* @param sourcePojoBean 含有数据的POJO对象* @return* @throws IOException*/public static void toProtoBean(@NotNull Message.Builder destBuilder, @NotNull Object sourcePojoBean) throws IOException {String json = new Gson().toJson(sourcePojoBean);JsonFormat.parser().merge(json, destBuilder);}

http://www.wangmingla.cn/news/37908.html

相关文章:

  • ps网站背景图片怎么做郑州网站建设推广优化
  • 合肥网站关键词优化郑州网站推广方案
  • 阿里云建站流程网站设计制作
  • 爱藏网一家专业做收藏品网站搭建网站平台
  • 徐州商城网站建设推广赚钱app
  • 赣县网站建设岳阳seo公司
  • 山东网站备案注意事项网络营销的特点是什么?
  • 网站建设中代码微信管理工具
  • 做网站公司报价aso优化技术
  • 内蒙古建设厅公示网站搜索引擎有哪些?
  • 嘉兴市做外贸网站的销售渠道都有哪些
  • 网站建设林晓东seo体系百科
  • 建站技术知识关键词排名怎么做好
  • 做金融的看哪些网站自己制作网页的网站
  • 惠州 家具 网站上线必应搜索引擎网址
  • 做企业网站域名厦门seo培训学校
  • 动态网站建设与维护大数据精准客户
  • 建站宝盒可以做视频聊天交友网站吗自助优化排名工具
  • 界面十分好看的网站商业软文案例
  • 嘉定网站建设seo是什么岗位的缩写
  • 河南建设工程质量监督局网站本地服务推广平台哪个好
  • 什么程序做网站安全抖音关键词搜索排名
  • 怎么做外网网站监控黄页引流推广网站入口
  • 一个动态网站的制作流程企业网站建设论文
  • 怎么免费建公司网站跨境电商网站
  • 东西湖区网站建设公司网站推广的策略
  • perl网站建设google app
  • 常州网约车驾驶员资格证网上报名最好的seo外包
  • 深圳网站建设服务哪些便宜网络营销的推广
  • wordpress页面模板谷歌seo优化排名