网速开始没有以前快了,以前下载网速快打开网页慢一下就打开了,现在还要等解析主机或者显示我无网络连接。是什么情况

go的protobuf这个问题是不是一个bug_百度知道
go的protobuf这个问题是不是一个bug
我有更好的答案
使用过程遇到些问题需要绕、增加proto都要生成新的文件,通信协议是protobuf客户端lua,比如、每次更改、由于lua本身,所以当proto规模太大时: 1,以前用网易的proto-gen-lua,代码规模剧增 2,每个文件最大文件内全局local变量不能超过200个
为您推荐:
其他类似问题
等待您来回答protobuf不同语言间交换的问题
碰到一个非常奇怪的情况,一个protobuf的序列化过的字符串,放在std::string中,然后获取它的MD5,并且把它反序列化,成功,没问题~
然后我把这个string输出到标准输出,并用管道传递给一个python脚本,脚本先计算字符串的MD5,和之前C++程序中的MD5匹配,但是我用这个string在Python中反序列化的时候就出错,提示
DecodeError: Truncated message.
C++和python中使用的文件都是用同一个protoc在同一次生成的文件(.h, .cc, .py)。。。
难以理解。。求大牛相助折腾很久了
一般自动生成的不会出问题,还是要检查一下你的传输数据的方式。如果你觉得实在有问题。可以在C++中把byte数据(数字数组)打印出来,手动在python的定义,让程序去解如果没有问题,出明问题出在数据传输上,比如编码、控制符等
--- 共有 6 条评论 ---
: 如果是一个proto文件产生的 编码肯定没问题。不知道你是通过什么传输二进制的呢?
: 您好,我python给c++(utf-8)传送二进制时也存在解码不成功的问题,是我python(ASCii)这边的编码问题吗???
: 算是解决了吧。。。有两个问题 一个是存储系统会弄错数据,这个是别人问题。还有一个是我自己问题,我在socket传输的时候发送的东西是按\0截断了 而我发的一部分又是序列化之后的裸二进制数据,所以才不能正确的反序列化。。脑残了
: 你好,你这个问题解决了吗???
而且 诡异的是 对于同一个C++程序传输过来的二进制数据 有的可以直接反序列化,有的需要去除最后一个字节,有的不管去除不去除都是反序列化错误。。。传输方式试过subprocess, 管道和socket...编译gRPC Go版本使用的 ProtoBuffer 文件 - 蝈蝈俊 - 博客园
posts - 484, comments - 158, trackbacks - 0, articles - 0
本篇文章主要解决mac下安装ProtoBuffer,编译go版本gRPC用的.proto文件
安装 protoc
注意,gRPC 需要用到 proto3, 而目前 Release 的版本是 2.6.1, 所以我们需要去下载源码并编译。
protobuf 的源码在:
Mac的特有前置安装需求
对Mac 用户来说, Unix tools 默认是不可用的, 需要首先安装 Xcode , 然后在 terminal 运行下面命令:
$ sudo xcode-select &install
Mac下面除了用dmg、pkg来安装软件外,比较方便的还有用MacPorts\brew , 它们能帮助你安装其他应用程序,
port 的下载地址: &
port 安装 autoconf automake libtool& 的命令为:
$ sudo /opt/local/bin/port install autoconf automake libtool
brew 的命令为: brew install autoconf automake libtool
否则我们就需要象下面这样,一个个的编译安装。
下面是我 brew 安装的截屏:
Unix 下 Protocol Buffers 的编译
由于我们的代码是 github 下载的, 所以我们需要先产生 配置脚本
$ ./autogen.sh
这个命令将下载gtest 源码到当前目录, 并运行 automake, autoconf 等产生配置脚本和各种模板的 makefile。
如果你使用的是 release 包, 可以跳过这一步。& 下载这里,如果你无法通过命令行下载,可以手工下载后,copy到对应目录, 不过要在这个sh文件中注释掉下载那一行。
依次执行下面命令,完成编译、安装。
$ ./configure
$ make check
$ make install
安装完成后,需要确认安装的版本是 3。:
整个编译安装过程请参考:
安装 proto的 Go插件
go get -/golang/protobuf/protoc-gen-go
-a 参数标示下载好后直接做 go install
编译 .proto 文件
我们这里准备编译的 proto 文件如下,这个文件名 lm.helloworld.proto , 比较好的习惯就是这样命名: packageName.MessageName.proto:
syntax = "proto3";message helloworld{&&& int32& id& = 1; // ID&&& string str = 2; // str&&& int32& opt = 3; }
在 protobuf 的术语中,结构化数据被称为 Message。proto 文件非常类似 java 或者 C 语言的数据定义。
在这个例子中,package 名字叫做 lm,定义了一个消息 helloworld,该消息有三个成员,类型为 int32 的 id 和 opt,另一个为类型为 string 的成员 str。
注意,我们这里标示了 syntax = "proto3";
前面的 proto 相关工具准备好后, 我们执行下面命令即可产生这个idl文件对应的 go实现类。
假设你是在下面选中的目录下执行命令,期望生产的go版本的proto文件在 lm 目录下。&
则执行下面命令。
protoc -I ../protos ../protos/lm.helloworld.proto& --go_out=plugins=grpc:lm
跟 proto文件产生在同一个目录,则命令是:
protoc -I ../protos ../protos/lm.helloworld.proto& --go_out=plugins=grpc:.
生产的Go代码文件:
proto 3 的语言向导请参看:}

我要回帖

更多关于 网速很快打开网页很慢 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信