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

做网站的大创结项网站建设栏目说明

做网站的大创结项,网站建设栏目说明,wordpress 4.7 漏洞,昆明企业网站开发公司介绍Google Protocol Buffer(简称Protobuf)是一种轻便、高效的结构化数据存储格式#xff0c;平台无关、语言无关、可扩展、可用于通讯协议和数据存储等领域。Protocol Buffers 是一种灵活#xff0c;高效#xff0c;自动化机制的结构数据序列化方法#xff0d;可类比 XML平台无关、语言无关、可扩展、可用于通讯协议和数据存储等领域。Protocol Buffers 是一种灵活高效自动化机制的结构数据序列化方法可类比 XML但是比 XML 更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。json\xml都是基于文本格式protobuf是二进制格式。优势序列化后体积比json和xml更小适合网络传输支持跨平台多语言消息格式升级和兼容还不错序列化和反序列化很快快于json的处理速度不足功能简单无法用来表示复杂概念。通用性上不足。不适合用来描述数据结构。它以二进制方式存储除非有.proto定义否则没法直接读出protobuf的任何数据。比较项说明json一般的web项目中最流行的主要还是json。因为浏览器对于json数据支持非常友好有很多内建的函数支持。xml在webservice中应用最为广泛但是相比于json它的数据更加冗余因为需要成对的闭合标签。protobuf后起之秀是google开源的一种数据格式适合高性能、对响应速度有要求的数据传输场景。因为protobuf是二进制数据格式需要编码和解码。数据本身不具有可读性。因此只能反序列化之后得到真正可读的数据。安装MacOSCentOSUbuntu12 brew install protobuf protoc --version12345678910111213141516171819 yum -y install autoconf automake libtool make g cd /usr/local/src/ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.0/protobuf-all-3.12.0.tar.gz tar zxvf protobuf-all-3.12.0.tar.gz cd protobuf-3.12.0/ ./autogen.sh ./configure --prefix/usr/local/protobuf make make check make install ldconfig vim /etc/profile##### 增加如下内容 #####export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/usr/local/protobuf/libexport LIBRARY_PATH$LIBRARY_PATH:/usr/local/protobuf/libexport PATH$PATH:/usr/local/protobuf/bin##### 内容结束 ##### source /etc/profile protoc --version12345678910111213141516171819 sudo apt-get install autoconf automake libtool curl make g libffi-dev -y cd /usr/local/src/ wget https://github.com/protocolbuffers/protobuf/releases/download/v3.12.0/protobuf-all-3.12.0.tar.gz tar zxvf protobuf-all-3.12.0.tar.gz cd protobuf-3.12.0/ ./autogen.sh ./configure --prefix/usr/local/protobuf make make check make install ldconfig vim /etc/profile##### 增加如下内容 #####export LD_LIBRARY_PATH$LD_LIBRARY_PATH:/usr/local/protobuf/libexport LIBRARY_PATH$LIBRARY_PATH:/usr/local/protobuf/libexport PATH$PATH:/usr/local/protobuf/bin##### 内容结束 ##### source /etc/profile protoc --version使用语法syntax proto3;message 消息名 {消息体}示例response.proto// 指定protobuf的版本proto3是最新的语法版本syntax proto3;// 定义数据结构message 你可以想象成java的classc语言中的structmessage Response {string data 1; // 定义一个string类型的字段字段名字为data, 序号为1int32 status 2; // 定义一个int32类型的字段字段名字为status, 序号为2}proto文件中字段后面的序号不能重复定义了就不能修改可以理解成字段的唯一ID。分配标识号在消息定义中每个字段后面都有一个唯一的数字这个就是标识号。这些标识号是用来在消息的二进制格式中识别各个字段的一旦开始使用就不能够再改变每个消息内唯一即可不同的消息定义可以拥有相同的标识号。[1,15]之内的标识号在编码的时候会占用一个字节。[16,2047]之内的标识号则占用2个字节。所以应该为那些频繁出现的消息元素保留 [1,15]之内的标识号。切记要为将来有可能添加的、频繁出现的字段预留一些标识号。保留标识号message Foo {reserved 2, 15, 9 to 11; // 保留2159到11这些标识号}注释往.proto文件添加注释支持C/C/java风格的双斜杠(//) 语法格式。为消息定义包package foo.bar;message Open { ... }选项java_package 单独为java定义包名字。java_outer_classname 单独为java定义protobuf编译器生成的类名。将消息编译成各种语言版本的类库1234##### 命令格式 protoc [OPTION] PROTO_FILES##### 例子 protoc --java_out. demo.proto常用的OPTION选项--cpp_outOUT_DIR 指定代码生成目录生成 C 代码--csharp_outOUT_DIR 指定代码生成目录生成 C# 代码--java_outOUT_DIR 指定代码生成目录生成 java 代码--js_outOUT_DIR 指定代码生成目录生成 javascript 代码--objc_outOUT_DIR 指定代码生成目录生成 Objective C 代码--php_outOUT_DIR 指定代码生成目录生成 php 代码--python_outOUT_DIR 指定代码生成目录生成 python 代码--ruby_outOUT_DIR 指定代码生成目录生成 ruby 代码在代码中使用ProtoBuf对数据进行序列化和反序列化maven:12345com.google.protobufprotobuf-java3.9.11234567891011121314151617ResponseOuterClass.Response.Builder builder ResponseOuterClass.Response.newBuilder();// 设置字段值builder.setData(hello www.wanglibing.com);builder.setStatus(200);ResponseOuterClass.Response response builder.build();// 将数据根据protobuf格式转化为字节数组 byte[] byteArray response.toByteArray();// 反序列化,二进制数据try {ResponseOuterClass.Response newResponse ResponseOuterClass.Response.parseFrom(byteArray);System.out.println(newResponse.getData());System.out.println(newResponse.getStatus());} catch (Exception e) {}Golang使用protobuf12345678910##### 1. 安装protobuf编译器(步骤略)##### 2. 安装protobuf包 go get -v -u github.com/golang/protobuf/proto##### 3. 安装protoc-gen-go插件 go get -v -u github.com/golang/protobuf/protoc-gen-go##### 4. 定义proto消息(步骤略)##### 5. 不带插件编译 protoc --go_out./ *.proto##### 5. 带插件编译 protoc --go_outpluginsgrpc:./ *.proto基本数据类型doublefloatint32 使用变长编码对于负值的效率很低如果你的域有可能有负值请使用sint64替代uint32 使用变长编码。uint64 使用变长编码。sint32 使用变长编码这些编码在负值时比int32高效的多。sint64 使用变长编码有符号的整型值。编码时比通常的int64高效。fixed32 总是4个字节如果数值总是比总是比228大的话这个类型会比uint32高效。fixed64总是8个字节如果数值总是比总是比256大的话这个类型会比uint64高效。sfixed32 总是4个字节。sfixed64 总是8个字节。boolstring 一个字符串必须是UTF-8编码或者7-bit ASCII编码的文本。bytes 可能包含任意顺序的字节数据。枚举类型syntax proto3;//指定版本信息不指定会报错enum PhoneType //枚举消息类型使用enum关键词定义,一个电话类型的枚举类型{MOBILE 0; //proto3版本中首成员必须为0成员不应有相同的值HOME 1;WORK 2;}// 定义一个电话消息message PhoneNumber{string number 1; // 电话号码字段PhoneType type 2; // 电话类型字段电话类型使用PhoneType枚举类型}数组类型整数数组message Msg {// 只要使用repeated标记类型定义就表示数组类型。repeated int32 arrays 1;}字符串数组message Msg {repeated string names 1;}消息嵌套引用其它消息类型// 定义Result消息message Result {string url 1;string title 2;repeated string snippets 3; // 字符串数组类型}// 定义SearchResponse消息message SearchResponse {// 引用上面定义的Result消息类型作为results字段的类型repeated Result results 1; // repeated关键词标记说明results字段是一个数组}消息嵌套message SearchResponse {// 嵌套消息定义message Result {string url 1;string title 2;repeated string snippets 3;}// 引用嵌套的消息定义repeated Result results 1;}import导入其它proto文件定义的消息result.protosyntax proto3;// Result消息定义message Result {string url 1;string title 2;repeated string snippets 3; // 字符串数组类型}search_response.protosyntax proto3;// 导入Result消息定义import result.proto;// 定义SearchResponse消息message SearchResponse {// 使用导入的Result消息repeated Result results 1;}map类型map语法map map_field N;key_type可以是任何整数或字符串类型(除浮点类型和字节之外的任何标量类型)。请注意枚举不是有效的key_type。value_type 可以是除另一个映射之外的任何类型。map示例syntax proto3;message Product{string name 1; // 商品名// 定义一个k/v类型key是string类型value也是string类型map attrs 2; // 商品属性键值对}Map 字段不能使用repeated关键字修饰。
http://wiki.neutronadmin.com/news/248425/

相关文章:

  • 手机网站弹出导航菜单网站制作公司网
  • wordpress apicloud网站优化原理
  • 做外贸需要关注的网站有什么好处wordpress缩略图外链
  • 常用的网站语言wordpress在线视频插件
  • 装饰工程东莞网站建设石河子做网站公司
  • 昆明做大的网站开发公司万网封停慧聪网
  • 客户端网站建设文档室内设计师接单网
  • 合肥网站开发建设晋江市住房和城乡建设网站
  • 网站字体选择简洁中文网站模板
  • php搭建网站软件下载网店排行榜前十名
  • 营销型网站建设指导原则上海公司注册虚拟地址
  • 做中国旅游网站的目的与必要性网站版面在线设计
  • 有没有什么做海报字体的网站域名邮箱如何注册
  • 重庆建设管理信息网站wordpress novelist
  • 网站浏览速度狠狠做网站改成什么了
  • 做直播的网站有哪些快速排名精灵
  • 网站这么做301微博推广软件
  • 网站开发方向和移动开发方向那个好广州 互联网公司 网站首页
  • 墨西哥网站后缀上线一个网站需要多少钱
  • 微网官方网站网络投票怎么做
  • 网页美工设计网站上海十大设计公司有哪些
  • 网站建设战略合作方案网站建设sql语句留言板
  • 承装承修承试材料在哪个网站做设计模板设置为本地模板
  • 网站百度搜不到了东莞常平邮政编码是多少
  • 深圳网站优化方案google搜索排名优化
  • 中国网站名深圳创业做什么项目好
  • 做网站视频手机广东 网站备案
  • 十堰网站建设联系电话协会建设网站的必要性
  • 网站怎么认证外包项目平台
  • 免费的行情网站app入口优秀网站设计作品