protobuf

python语言编译protobuf

匿名 (未验证) 提交于 2019-12-02 22:54:36
在C盘下装好python27, 在cmd下直接运行 pip install Cheetah3==3.1.0 python -m pip install --upgrade pip 然后再cd到想编译的路径下 再执行编译的语句 例如在《谁是大魔王》项目中,编译代码【python do.py -output test/output -config test/config.py test/messages】 文章来源: python语言编译protobuf

HiProtobuf-Excel转Protobuf(支持C++/C#/Golang/Java/Python)

匿名 (未验证) 提交于 2019-12-02 22:51:30
源码连接: https://github.com/hiramtan/HiProtobuf HiProtobuf ExcelתProtobuf 功能说明 将Excel文件生成protobuf文件和protobuf数据 目前支持生成五种语言C++(生成.cpp),C#(生成.cs和.dll),Golang(生成.go),Java(生成.java),Python(生成.py) 如何使用 https://github.com/hiramtan/HiProtobuf/releases 选择导出文件的存放目录 选择Excel文件的存放目录 选择编译器csc.exe 点击导出 详细说明 https://dotnet.microsoft.com/download/dotnet-framework https://developers.google.cn/protocol-buffers/docs/gotutorial C#语言额外导出了一份.dll,可以使用.cs源码或者.dll文件 会递归遍历Excel目录下的所有文件 会在导出目录下自动生成三个目录: proto 存放.proto原始文件 language 存放各语言的生成文件(比如language/cpp/xx.cpp) dat 存放.dat protobuf序列化数据 支持的数据类型有: "double", "float", "int32"

Python 同级目录import报错

匿名 (未验证) 提交于 2019-12-02 22:51:08
在使用protobuf时,我们自己了各种Options的时候,在生成的python文件会在同级目录中引用,所以这个时候我们不能做到,加个__init__.py文件了事然后在文件里面写 import mudole.file 这样的代码,因为我们自己无法控制 解决方法如下,在__init__文件中加入以下代码: ``` Python import sys import os sys.path.append(os.path.dirname('mudole_name/'))

java/php + protobuf 使用总结

匿名 (未验证) 提交于 2019-12-02 22:11:45
在对接tron的项目时使用到了protobuf,在阅读官方文档的时候,发现有些地方文档写得并不清楚,于是记录如下的笔记作为补充备查。 关于 Pro tobuf 的使用[php] 查看 protobuf 官方文档 ,安装 php扩展grpc.so和protobuf.so 。前者在文档里有讲清楚,后者需要单独去搜索下载扩展安装包安装。 需要按文档编译安装 protoc和 grpc _php_plugin ,后续需要使用到; .proto文件在tron的github库的单独项目里 ,名为 protocal 。使用 protobuf php版的官方指引里的方法 ,生成对应的php文件。一共有两个目录,一个是 core ,一个是 api 。 core目录可以顺利生成 , api需要下载安装官方的东西 ,在 install-googleapis.sh 这个文件里有写,其中 go的部分暂时没用到 ,直接执行下面获取 jar包的部分就可以 ; 还有一个名为 install-protobuf.sh 的文件,这里是安装一些依赖的 proto文件 。因为有些 proto文件会引用一些标准的proto文件 。 Make install之后 ,需要把安装位置的 protobuf目录复制到protocol项目目录的google目录下 ,然后按下面的命令生成 php文件 。不能直接引用 前面make

进行API开发选gRPC还是HTTP APIs?

匿名 (未验证) 提交于 2019-12-02 22:06:11
上一篇文章我带着大家体验了一把《 ASP.NET Core 3.0 上的gRPC服务模板初体验(多图) 》,如果有兴趣的可以点击链接进行查看,相信跟着做的你,也是可以跑起来的。这篇文章我们将一起来探讨下gRPC服务如何与HTTP APIs进行比较。用于为应用程序提供API的技术是一个重要的选择,与HTTP API相比,gRPC提供了独特的优势。本文从gRPC的优缺点出发,并推荐了一些建议使用gRPC服务以及不建议使用gRPC服务的场景。 作者:依乐祝 原文链接: https://www.cnblogs.com/yilezhu/p/10645804.html 开始之前先看一下gRPC与带有j'son的HTTP APIs对比表格 gRPC消息使用一种有效的二进制消息格式protobuf进行序列化。Protobuf在服务器和客户机上的序列化非常快。Protobuf序列化后的消息体积很小,能够有效负载,在移动应用程序等有限带宽场景中显得很重要。 gRPC是为HTTP/2而设计的,它是HTTP的一个主要版本,与HTTP 1.x相比具有显著的性能优势:: 二进制框架和压缩。HTTP/2协议在发送和接收方面都很紧凑和高效。 通过单个TCP连接复用多个HTTP/2调用。多路复用消除了 线头阻塞 。 所有gRPC框架都为代码生成提供了一流的支持。gRPC开发的核心文件是 *.proto 文件

protobuf在c++的使用方法以及在linux安装

匿名 (未验证) 提交于 2019-12-02 21:53:52
https://www.cnblogs.com/zhouyang209117/p/7218719.html //SRC_DIR .proto文件存放目录 //--cpp_out 指示编译器生成C++代码,DST_DIR为生成文件存放目录 //XXXX.proto 待编译的协议文件 protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/XXXX.proto    syntax = "proto2"; package tutorial; message Person { required string name = 1; required int32 id = 2; optional string email = 3; enum PhoneType { MOBILE = 0; HOME = 1; WORK = 2; } message PhoneNumber { required string number = 1; optional PhoneType type = 2 [default = HOME]; } repeated PhoneNumber phones = 4; } message AddressBook { repeated Person people = 1; }  把proto文件转化成c++代码.执行下面命令. protoc

Protobuf协议的Java应用例子

匿名 (未验证) 提交于 2019-12-02 21:53:52
Protobuf协议 它跟JSON,XML一样,是一个规定好的数据传播格式。不过,它的序列化和反序列化的效率太变态了…… Protobuf的Java实例 一、 安装Protobuf 去Protobuf的GitHub下载 ,解压。 如果你是Windows环境,则还要下载多一个东西。 protobuf-2.5.0-windows.zip 。 解压protobuf-2.5.0-windows.zip,把protoc.exe放在Protobuf安装目录下的src里。(其实放哪都可以) 二、 配置环境变量 三、 Eclipse新建项目 我使用maven构建protobuf项目,方便引入 protobuf-java-2.5.0.jar 在项目根目录创建proto文件夹,存放 proto maven依赖pom.xml < dependency > < groupId > com.google.protobuf </ groupId > < artifactId > protobuf-java </ artifactId > < version > 3.1.0 </ version > </ dependency > 1 2 3 4 5 四、编写.proto文件 在proto文件夹下编写 person-entity.proto ,如下( proto协议的规则点这查看 ) option java

我的Protobuf消息设计原则(续)--实践

和自甴很熟 提交于 2019-12-02 21:32:41
1.首先为 聊天服务器(Chat)定义google protobuf的协议接口文件 接口主要遵循 Request、Response、Notification(Indication),Command(本文未出现)四大消息分类,并且使用Message顶层消息把Request、Response,Notification等包含起来;并定义一个MSG枚举值,用于表示具体的消息值(在google protobuf RPC过程中,其实 每个service方法就是一个Request和Response的应答对,只不过其消息值的编码是RPC自动分配的) package chat; //定义protobuf的包名称空间,对应C++,C#的nanmespace,Java的package enum MSG { Login_Request = 10001; Login_Response = 10002; Logout_Request = 10003; Logout_Response = 10004; Keepalive_Request = 10005; Keepalive_Response = 10006; Get_Friends_Request = 10007; Get_Friends_Response = 10008; Send_Message_Request = 10009; Send_Message

ProtoBuf学习之\"Hello World\"

ε祈祈猫儿з 提交于 2019-12-02 19:16:48
1、下载对应的包文件,比如我这里下载的是protoc-3.6.1-win32.zip,解压后将其bin路径加入到系统的PATH环境变量中; 在cmd窗口中执行protoc --version来检查protoc是否正确安装; 2、编写protoBuf文件: 1 syntax = "proto2"; 2 3 package protocol; 4 5 option java_package = "com.demo.prototest"; 6 option java_outer_classname = "BaseRequestProto"; 7 8 message RequestProtocol { 9 required int32 requestId = 2; 10 required string regMsg = 1; 11 } 1 syntax = "proto2"; 2 3 package protocol; 4 5 option java_package = "com.demo.prototest"; 6 option java_outer_classname = "BaseResponseProto"; 7 8 message ResponseProtocol { 9 required int32 responseId = 2; 10 required string

gRPC Golang/Python使用

我只是一个虾纸丫 提交于 2019-12-02 14:49:50
gRPC Golang/Python使用 以前开发网站都是用http协议,学过TCP/IP协议的人都知道,在传输层TCP的基础上,应用层HTTP就是填充了一定规则的文本. 1.gRPC使用和介绍 工作中使用到gRPC,其实http请求也是一种rpc变种,远程进程调用.gRPC底层是HTTP2协议 gRPC一开始由google开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统,面向移动和HTTP/2设计。目前提供C、Java和Go语言版本,分别是:grpc,grpc-java,grpc-go.其中C版本支持C,C++,Node.js,Python,Ruby,Objective-C,PHP和C#支持. gRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。 gRPC基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个gRPC服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法,即调用仿佛就在同一台机器。 可以使用不同语言平台进行开发 gRPC 默认使用protocol buffers来进行消息通讯,这是Google开源的一套成熟的结构数据序列化机制 参考: gRPC 官方文档中文版 | 概念