protobuf

c++ protobuf 可能会遇到的坑

强颜欢笑 提交于 2019-11-28 17:30:28
1.发现存在内存泄露。 程序退出时记得调用: google::protobuf::ShutdownProtobufLibrary(); 2.内存有异常: 可能是:protobuf 中的 嵌套 消息的使用临时变量例: string sn="1111"; string Algo="3333"; request.set_sn(sn); request.set_algo(Algo); 如果在其它地方使用可能会有异常;需要去new,退去时记得 release_eventcode PointProtos::Event *event = mUploadLogInfoData->add_events(); string* ans = event->mutable_eventcode(); (*ans)=key; string* tvalue = event->mutable_eventcode();// (*tvalue)= value ; 如果是对象一样: for(int index = 0;index<info.answer_size();index++) { Detail * detail = rsp.add_detail(); Answer* ans = detail->mutable_answer(); Answer temp_ans = info.answer(index); ans-

caffe安装指南—吐血整理

点点圈 提交于 2019-11-28 13:08:54
前言: 在一台系统环境较好的linux机器上可以很容易的安装caffe,但是如果系统本身很旧,又没有GPU的话,安装就太麻烦了,所有都得从头做起,本文档旨在尽可能覆盖安装所要采的坑。 步骤: 一、caffe是主要是C/C++和 Python 编写的。首先,得需要将gcc,g++安装好,通过yum安装就可以。 二、cuda的安装,如果机器上配置了NVIDIA系列GPU,则需要安装该驱动,推荐安装该驱动至7.0版本,推荐同时安装cuDNN。安装可以参考http://blog.csdn.net/xuanyuansen/article/details/43152311,centos系统下类似。 三、caffe的layer开发以google的protobuf为格式,需要安装该依赖,推荐安装2.6.1版本(gcc版本推荐4.4.7),下载地址为https://github.com/google/protobuf/releases/download/v2.6.1/protobuf-2.6.1.tar.gz,按照README文件里的步骤安装即可。 四、python安装,caffe提供了python的接口,可以用python进行相关开发,而且可以在ipython-notebook里面画出网络结构,非常方便。为了使用这些功能,推荐在目标机器上编译安装python2.7.10

go micro v1.9.1 安装

女生的网名这么多〃 提交于 2019-11-28 03:57:49
1. 安装protoc-gen-micro 1) protoc 到 https://github.com/protocolbuffers/protobuf/releases 下载编译好的版本 protoc-3.9.1-win64.zip 。 2) protoc的go插件protoc-gen-go GIT_TAG="v1.2.0" # change as needed go get -d -u github.com/golang/protobuf/protoc-gen-go git -C "$(go env GOPATH)"/src/github.com/golang/protobuf checkout $GIT_TAG go install github.com/golang/protobuf/protoc-gen-go 也可以直接到 https://github.com/golang/protobuf/tree/v1.3.2 下载。 离线下载需要手动编译。 进入$GOPATH/src/github.com/golang/protobuf/protoc-gen-go go build -o protoc-gen-go main.go 3) go get github.com/micro/protoc-gen-micro 若开发环境无法上网,可以直接在 https://github

关一Socket得到的InputStream,read方法最后一直阻塞的问题

北战南征 提交于 2019-11-27 15:19:08
今天在尝试使用protobuf在服务端和android进行数据转递和解析时遇到一个小问题,这里记录一下。大概的场景是pc与android使用socket通信,pc为服务端,android向服务端发送请求后,服务端将protobuf对象返回给android端。android端得到InputStream后转换为byte[]再转换为protobuf对象。出现的问题就是InputStream在转换为byte[]部是发生阻塞,不能成功。 socket client端在接收到服务端的InputStream后,要将其转换为byte[],通常使用的方法大致如下: public static byte[] toByteArray(InputStream input) throws IOException { ByteArrayOutputStream swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[1024]; int rc = 0; while ((rc = input.read(buff, 0, 1024)) > 0) { swapStream.write(buff, 0, rc); } byte[] bytes = swapStream.toByteArray(); return bytes; } 但是

hadoop-2.6.0-cdh5.15.1源码编译--支持压缩

我的未来我决定 提交于 2019-11-27 12:38:07
参考博文 https://blog.csdn.net/SUDDEV/article/details/98223999 https://blog.csdn.net/yz972641975/article/details/98405720 环境要求 CentOs 7.x 下载地址 JDK 7 下载地址 protobuf 2.5.0 下载地址 maven 3.x 下载地址 hadoop-2.6.0-cdh5.15.1 下载地址 依赖 [root@hadoop001 ~]# yum install gcc gcc-c++ make cmake [root@hadoop001 ~]# yum install openssl openssl-devel svn ncurses-devel zlib-devel libtool bzip2 bzip2-devel [root@hadoop001 ~]# yum install snappy snappy-devel lzo lzo-devel lzop lrzsz autoconf automake 安装JDK、maven、protobuf 解压 [hadoop@hadoop001 ~]# tar -zxvf ~/soft/jdk-7u80-linux-x64.tar.gz -C ~/app [hadoop@hadoop001 ~]# tar

Protobuf

荒凉一梦 提交于 2019-11-27 07:58:13
主要分2种 P1:Google.Protobuf:分v2和v3; 类型对照表v3, 地址见这里 Scalar Value Types A scalar message field can have one of the following types – the table shows the type specified in the .proto file, and the corresponding type in the automatically generated class: .proto Type Notes C++ Type Java Type Python Type [2] Go Type Ruby Type C# Type PHP Type Dart Type double double double float float64 Float double float double float float float float float32 Float float float double int32 Uses variable-length encoding. Inefficient for encoding negative numbers – if your field is likely to have negative values, use

Go语言中的数据格式(json、xml 、msgpack、protobuf)

て烟熏妆下的殇ゞ 提交于 2019-11-27 03:36:16
在分布式的系统中,因为涉及到数据的传输,所以一定会进行数据的交换,此时就要定义数据交换的格式,例如二进制、Json、Xml等等。本篇文章就是总结一下常用的几种数据格式。 一、Json格式 如果想使用Json数据格式,可以借助于encoding/json这个包。 利用json包里的 json.Marshal(xxx) 和 json.Unmarshal(data, &xxx) 进行序列化和反序列化。 下面举个例子: package main import ( "encoding/json" "fmt" "io/ioutil" "math/rand" ) type Student struct { Name string Age int Sex string } //写入json数据 func writeJson(filename string) (err error) { var students []*Student //随机生成10个学生数据 for i := 0; i < 10; i++ { p := &Student{ Name: fmt.Sprintf("name%d", i), Age: rand.Intn(100), Sex: "Man", } students = append(students, p) } //执行序列化操作 data, err := json

UBUNTU16.04卸载安装protobuf

血红的双手。 提交于 2019-11-26 22:47:10
1.卸载   sudo apt-get remove libprotobuf-dev   which protoc 然后删除路径即可 2.安装 sudo apt-get install autoconf automake libtool curl make g++ unzip git clone -b v3.6.1 https://github.com/protocolbuffers/protobuf.git cd protobuf git submodule update --init --recursive ./autogen.sh ./configure make make check sudo make install sudo ldconfig protoc --version 输出版本号成功 来源: https://www.cnblogs.com/penuel/p/11334421.html

Protobuf多协议

不打扰是莪最后的温柔 提交于 2019-11-26 20:45:49
上一篇只有Person的message,如果多了一个message,如Dog,这样就会有问题。 解决方法: 定义多协议 一、定义proto文件 syntax = "proto2"; package com.example.protobuf; option optimize_for = SPEED; option java_package = "com.example.sixthexample"; option java_outer_classname = "MyDataInfo"; message MyMessage{ enum DataType{ PersonType = 1; DogType = 2; CatType = 3; } required DataType data_type = 1; oneof dataBody{ Person person = 2; Dog dog = 3; Cat cat = 4; } } message Person{ optional string name = 1; optional int32 age = 2; optional string address = 3; } message Dog{ optional string name = 1; optional int32 age = 2; } message Cat{

protobuf使用

假如想象 提交于 2019-11-26 20:27:52
一、protobuf环境搭建 Github 地址: https://github.com/protocolbuffers/protobuf 然后进入下载页 https://github.com/protocolbuffers/protobuf/releases 下载系统对应版本编译器 我这里使用的是window 64位 下好之后解压,然后把bin里面的protoc.exe加入到环境变量, 并且把protoc.exe拷贝到C:\Windows\System32 二、创建Student.proto 文件 syntax = "proto2"; package com.example.protobuf; option optimize_for = SPEED; option java_package = "com.example.protobuf"; option java_outer_classname = "DataInfo"; message Student{ required string name = 1; optional int32 age = 2; optional string address = 3; }    在工程中增加依赖 <dependency> <groupId>com.google.protobuf</groupId> <artifactId