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

如何部置网站到iis帝国cms灵动标签做网站地图

如何部置网站到iis,帝国cms灵动标签做网站地图,西安做网站比较好的公司,网站建设前端切图目录 1、前言 2、Protobuf简介 2.1、核心思想 2.2、Protobuf是如何工作的#xff1f; 2.3、如何使用 Protoc 生成代码#xff1f; 3、Springboot集成 3.1、引入依赖 3.2、定义Proto文件 3.3、Protobuf生成Java代码 3.4、配置Protobuf的序列化和反序列化 3.5、定义…目录 1、前言 2、Protobuf简介 2.1、核心思想 2.2、Protobuf是如何工作的 2.3、如何使用 Protoc 生成代码 3、Springboot集成 3.1、引入依赖 3.2、定义Proto文件 3.3、Protobuf生成Java代码 3.4、配置Protobuf的序列化和反序列化 3.5、定义controller接口 3.6、访问 4、小结 1、前言 在以往的项目中进行网络通信和数据交换的应用场景中最经常使用的技术便是json或xml。随着JSON的灵活优势越来越多的企业选择JSON作为数据交换的格式目前JSON已经成为了业界的主流。JSON已经足够好用且能满足相当大部分的场景。但是今天在介绍一个Google的力作protobuf作为数据交换格式。我们来看看。 2、Protobuf简介 Github地址GitHub - protocolbuffers/protobuf: Protocol Buffers - Googles data interchange format 官网地址Overview | Protocol Buffers Documentation ProtobufProtocol Buffers是由 Google 开发的一种轻量级、高效的数据交换格式它被用于结构化数据的序列化、反序列化和传输。相比于 XML 和 JSON 等文本格式Protobuf 具有更小的数据体积、更快的解析速度和更强的可扩展性。同时他是一种语言无关、平台无关、可扩展的序列化格式。它使开发人员能够在文件中定义结构化数据.proto然后使用该文件生成可以从不同数据流写入和读取数据的源代码。 2.1、核心思想 Protobuf 核心思想是使用协议来定义数据的结构和编码方式。协议是一个文本文件其中定义了消息的结构。消息由字段组成每个字段都有一个名称、类型和可选的默认值。然后使用Protobuf提供的解码器生成对应代码用于序列化和反序列化数据由于Protobuf是基于二进制编码因此可以跨语言使用。 Protobuf 支持以下数据类型 基本类型例如 int32、string、bool 等复合类型例如 message、enum 等 2.2、Protobuf是如何工作的 Protobuf 使用二进制数据格式与基于文本的格式相比它更紧凑且读写速度更快。它还提供了接口定义语言IDL可以轻松定义要序列化的数据的结构。 Protobuf 文件使用文件扩展名保存.proto。该.proto文件以 Protobuf 的 IDL 格式编写包含有关数据结构的所有信息。数据被建模为“消息”即名称/值对组。以下是文件中简单 Protobuf 消息的示例.proto // 指定 Protobuf 版本为版本 3最新版本 syntax proto3;// 指定protobuf包名防止类名重复 package com.shamee.protobuf;// 生成的文件存放在哪个包下 option java_package com.shamee.protos;// 生成的类名如果没有指定会根据文件名自动转驼峰来命名 option java_outer_classname PersonProtos;// 定义了一个Person类 message Person {// 后面的值1 2作为序列化后的二进制编码中的字段的唯一标签// 因此 1-15比 16 会少一个字节所以尽量使用 1-15 来指定常用字段。int32 id 1;string name 2;string email 3;string address 4; } 示例中客户消息包含四个字段id、name、email和address。每个字段都有其类型指示以及指示其是否为required、optional或 的标签repeated。 该.proto文件可以使用 Protoc即 Protobuf 编译器编译成多种编程语言。该编译器以开发人员指定的编程语言生成源代码。该源代码包括用于写入、读取和操作.proto文件中定义的消息类型的类和方法。 当有数据要存储或传输时可以创建生成的类的实例并用您的数据填充它们。然后将这些实例序列化为二进制格式。读取数据时二进制格式将反序列化回从.proto文件生成的类的实例。这使您可以轻松访问结构化数据。 Protobuf 生成的二进制数据格式是平台无关的可用于在不同系统、应用程序或服务之间交换数据即使它们是用不同的编程语言实现或在不同的平台上运行的。 2.3、如何使用 Protoc 生成代码 上面定义好的.proto可以使用Protobbuf编译器Protoc将文件编译成不同语言。 下载编译器Release Protocol Buffers v25.3 · protocolbuffers/protobuf · GitHub 编译命令如下面的代码将.proto文件编译成 JavaScript protoc --js_outimport_stylecommonjs,binary: .customers.proto 编译成java语言 protoc --java_out./my_dist .customers.proto 3、Springboot集成 上面介绍了protobuf的基本内容以及简单的语法编写和编译。接下来我们来使用他并集成到我们的springboot中。 3.1、引入依赖 dependencygroupIdcom.google.protobuf/groupIdartifactIdprotobuf-java/artifactIdversion3.6.1/version /dependency !-- 同时添加maven插件用于编译protobuf生成java文件 -- buildextensionsextensiongroupIdkr.motd.maven/groupIdartifactIdos-maven-plugin/artifactIdversion1.5.0.Final/version/extension/extensionspluginsplugingroupIdorg.xolstice.maven.plugins/groupIdartifactIdprotobuf-maven-plugin/artifactIdversion0.5.0/versionconfigurationprotocArtifactcom.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier}/protocArtifact!--默认值proto源文件路径--protoSourceRoot${project.basedir}/src/main/resources/proto/protoSourceRootpluginIdgrpc-java/pluginId!--是否清空上面配置目录outputDirectory--clearOutputDirectoryfalse/clearOutputDirectory/configurationexecutionsexecutiongoalsgoalcompile/goal/goals/execution/executions/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-jar-plugin/artifactIdversion3.3.0/versionconfigurationexcludesexclude**/*.proto/exclude/excludes/configuration/plugin/plugins /build 3.2、定义Proto文件 定义两个proto文件一个用于接收接口请求数据Person.proto一个用于响应Response.proto。 Person.proto syntax proto3; package proto.shamee;// 生成的文件存放在哪个包下 option java_package proto.shamee;// 生成的类名如果没有指定会根据文件名自动转驼峰来命名 option java_outer_classname PersonProto;// 定义了一个Person类 message Person {// 后面的值1 2作为序列化后的二进制编码中的字段的唯一标签// 因此 1-15比 16 会少一个字节所以尽量使用 1-15 来指定常用字段。int32 id 1;string name 2;string email 3;string address 4; } Response.proto syntax proto3; package proto.shamee; option java_package proto.shamee; option java_outer_classname ResponseProto;message Response {int32 code 1;string message 2;string data 3; } 3.3、Protobuf生成Java代码 定义完后可以直接mvn install可以生成响应的proto的java代码。 3.4、配置Protobuf的序列化和反序列化 Configuration public class ProtobufConfig {/*** protobuf 序列化*/BeanProtobufHttpMessageConverter protobufHttpMessageConverter() {return new ProtobufHttpMessageConverter();}/*** protobuf 反序列化*/BeanRestTemplate restTemplate(ProtobufHttpMessageConverter protobufHttpMessageConverter) {return new RestTemplate(Collections.singletonList(protobufHttpMessageConverter));}} 3.5、定义controller接口 由于protobuf是基于二进制流传输数据因此这里需要指定一下x-protobuf协议。 RestController RequestMapping(/test) public class TestController {PostMapping(value /index, produces application/x-protobuf)public ResponseProto.Response index(RequestBody PersonProto.Person person){return ResponseProto.Response.newBuilder().setCode(200).setMessage(OK).setData(hello: person.getName()).build();}} 接着就可以启动springboot项目啦。 3.6、访问 这里访问的时候需要定义header的content-type同时参数以二进制数据进行传输访问。我们的请求数据 访问头配置 返回 到此我们就简单的学会了protobuf了又可以安心的去吃夜宵了。 4、小结 protobuf在整个集成中还是有一些问题如ptotoc的版本号如果相差太多就会编译不通过。当然protobuf也存在一些不足之处 功能简单Protobuf 功能简单无法用来表示复杂的概念。例如它无法表示 XML 中的DTD 或 XSD 等复杂结构。通用性较差Protobuf 是 Google 内部使用的工具通用性较差。XML 和 JSON 已成为多种行业标准的编写工具而 Protobuf 在通用性上还差很多。自解释性差Protobuf 以二进制形式存储数据不便于阅读和编辑。XML 具有自解释性可以直接用文本编辑器打开和编辑。 Protobuf 是一种优秀的序列化格式但并非完美无缺。在选择序列化格式时需要根据实际需求进行综合考虑。如果需要一种高效、紧凑、可扩展的序列化格式Protobuf 是一个不错的选择。但如果需要表示复杂的概念、通用性或自解释性则需要考虑其他序列化格式。
http://www.pierceye.com/news/555714/

相关文章:

  • 金华金东区建设局网站wordpress打开乱码
  • 创建一个网站的条件有哪些网站建设知名
  • 网站目录管理模版昆明大型网站建设费用
  • 莆田高端网站建设wordpress 表情没反应
  • 深圳做网站推广哪家好传奇网站模板怎么做的吗
  • 石景山区网站建设网线制作方法及步骤
  • 做网站端口内容无法替换做微信公众号网站
  • 电商网站首页怎么制作做网站用什么语言高效
  • 广州自助建设网站平台天津做网站美工
  • js 捕获网站异常插件网站商城怎么做
  • 北辰网站开发淮北哪有做淘宝网站
  • 建设银行e路通网站室内设计师证需要学哪些课程
  • 舟山市建设信息港网站打不开如何建设一个收费的影视图文网站
  • 内蒙建设信息网站网页制作作品阐述
  • 天津网站seo策划服装定制项目计划书
  • 常州网站建设大全买奢侈品代工厂做的产品的网站名
  • 建设网站如入什么费网站建设体会doc
  • 不备案怎么做淘宝客网站吗深圳华强北新闻最新消息今天
  • 梅兰商贸网站开发设计外国网站在中国做推广
  • 有无专门做网站会员人数迅速增加的方法北京单页营销型网站
  • 岳阳网站开发网站运营怎么做建设网站设计
  • 能打开各种网站的浏览器下载合集建设农产品网络营销网站
  • 陕西网站建设方案优化如何做网站挂qq
  • 无锡市网站WordPress分类id在哪
  • 网站建设金网站建设 需求模板
  • 提高网站转化率营销网站制作都选ls15227
  • 一级页面的网站怎么做爱疯卷网站怎么做
  • 网站企业快速备案大气的企业网站
  • 一个好的网站建设微网站手机制作
  • 广州市做民宿什么网站比较好图盛网站建设