跳至正文

proto文件怎么写(proto文件用什么打开)

java 怎么讲java类写成proto文件

java 怎么讲java类写成proto文件

步骤一, 书写 .proto 文件,这里直接上google官方实例,并存储为addressbook.proto

package tutorial;

option java_package = “com.example.tutorial”;

option java_outer_classname = “AddressBookProtos”;

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 phone = 4;

}

message AddressBook {

repeated Person person = 1;

}

怎么样编写Protobuf的.proto文件

怎么样编写Protobuf的.proto文件

ProtoBuf java 包编译ProtoBuf的官方下载包并不包含jar文件,需要用户自己configure/make….来自行编译。由于Windows上没有编译环境,就用了一个笨一点方法处理了。

分别下载:

protobuf-2.4.1.zip ProtoBuf的源文件(包含了C++/Java/Python)的源文件

protoc-2.4.1-win32.zip 已经编译过的用于Windows平台的protoc命令(该命令用于将.proto文件转化为Java或C++源文件)。

分别解析这两个文件,你可以在protoc-2.4.1-win32.zip解压后的文件中找到一个protoc.exe文件,将其copy到protobuf-2.4.1/src目录下,然后进入protobuf-2.4.1/java,执行:

mvn install

.proto 是什么文件

.proto 是什么文件

proto译为原的意思,那么proto 文件就是源文件了

protobuf import路径怎么写

Protobuf语言指南

l 定义一个消息(message)类型

l 标量值类型

l Optional 的字段及默认值

l 枚举

l 使用其他消息类型

l 嵌套类型

l 更新一个消息类型

l 扩展

l 包(package)

l 定义服务(service)

l 选项(option)

l 生成访问类

本指南描述了怎样使用protocolbuffer语言来构造你的protocol buffer数据,包括.proto文件语法以及怎样生成.proto文件的数据访问类。

本文是一个参考指南——如果要查看如何使用本文中描述的多个特性的循序渐进的例子,请在

l 定义一个消息类型

先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了:

如何编写训练测试的prototxt配置文件

要预测图像需要32*32; 网络配置文件prototxt,及每图像路径及其序号 训练caffemodel及均值二进制文件貌似定值需要通数据训练计算

protocol buffers 什么东西??

概述:

protocol buffers是一个语言中立,平台中立,可扩展的序列化结构数据的方式

可用于通讯协议,数据存储等方面。

文档的目标定位于使用protocol buffers开发的Java,C++或者Python开发人员。这个概述介绍了protocol Buffers并告诉你如何开始使用。

然后你就可以跟着教程继续深入研究prorocol buffer的编码。API参考文档也提供三种语言的。还给出了如何写.proto文件的文档。

proto文件估计是与语言无关的文件,类似CORBA的idl文件

什么是protocol buffers?

Protocol buffers是一个灵活的,高效的,有自动机制(可能指编解码)工具用于序列化结构数据。

类似XML,但是更小、更快、更简单。你定义你的结构化数据,然后就可以使用工具生成的特殊代码方便的使用各种语言(前面支持的三种)

从各种数据流中读写你的结构化数据。你甚至可在不打断已经部署的程序的情况下重新更新你的数据结构(热部署)。

如何工作?

你可以通过.proto文件定义你需要序列化的信息。每个buffer消息是一个逻辑记录,包括一系列名值对。下面是一个关于一个人的信息的.proto文件的例子

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 phone = 4;

}

象你看到的一样,消息格式很简单:每个消息类型有一个或者多个数据项,每个数据项有一个名字和一个数据类型。数据类型可以是数值(整形或者浮点型),

布尔型,字符串,字节流或者自定义的buffer类型,允许你子架构造数据体系。

你可以指定可选的数据项,必选数据项和重复数据项。关于如何写.proto文件,可以从protocol buffer language指南中得到更多信息。

定义了消息后,就可以protocol buffer编译器编译,从.proto文件生成数据访问类。(与corba idl类似)

这些类提供了简单的访问数据项的方法,类似query(),set_query()

你可以在你的应用中使用这些类来构造、序列化和取回Person这个protocol buffer消息。你可以写如下代码:

Person person;

person.set_name(“John Doe”);

person.set_id(1234);

person.set_email(“jdoe@example.com”);

fstream output(“myfile”, ios::out | ios::binary);

person.SerializeToOstream(&output);

然后,从文件中读回信息

fstream input(“myfile”, ios::in | ios::binary);

Person person;

person.ParseFromIstream(&input);

cout << "Name: " << person.name() << endl;

cout << "E-mail: " << person.email() << endl;

你可以增加数据项,不用考虑前向兼容;旧的代码仅仅是简单的忽略新增的项。

如果你使用protocol buffer作为你的通讯协议,你能够扩展你的协议,不用担心影响已经存在的代码。

你可在API文档中找到完整的参考资料,并能够了解协议是如何编解码的。

为什么不使用XML?

protocol buffer有很多XML不具备的优点:

1.简单;

2.小巧:3-10倍

3.效率高:20-100倍

4.无二义性

5.有自动工具生成访问类;(其实ASN.1, CORBA都有类似工具)

例如,Person模型使用xml表示

John Doe

jdoe@example.com

当消息编码成二进制格式(上面的说明只是为了编译阅读的表示方式),protocol buffer将差不多28个子节长,用100-200ns时间解析。

而XML文件有69字节长,还要去掉空白符,使用5000-10000ns来解析

维护以很容易:

cout << "Name: " << person.name() << endl;

cout << "E-mail: " << person.email() << endl;

而XML要做如下的事情:

cout << "Name: "

<< person.getElementsByTagName("name")->item(0)->innerText()

<< endl;

cout << "E-mail: "

<< person.getElementsByTagName("email")->item(0)->innerText()

<< endl;

可是,protocol buffers并不是一直都比XML好-例如,protocol buffers不适合描述符号文本,如HTML,因为你不能很好的组织文本。

另外,XML更易于阅读和编辑。protocols buffers也不是自描述的(不知什么意思?)

并且,protocol buffers在google内部已经广泛使用。

比较

XML | JSON | PB | Lua

数据结构支持 | 复杂结构 | 简单结构 | 较复杂结构 | 复杂结构

数据保存方式 | 文本 | 文本 | 二进制 | 文本

数据保存大小 | 大 | 一般 | 小 | 一般

解析效率 | 慢 | 一般 | 快 | 稍快

语言支持程度 | 非常多 | 多 | C++/Java/Python | 多

开发难度?繁琐? | 繁琐 | 简单 | 简单 | 相对繁琐

学习成本 | 低 | 低 | 低 | 高

适用范围 | 数据交换 | 数据交换 | 数据交换 | 数据保存及脚本处理

怎么将protobuf string类型

展开全部

2.下载一个protobuf-java-2.4.1.jar文件(注意,要与你刚才下的proto.exe版本相同)

然后就开始开发了。

步骤:

1.用记事本编写一个.proto文件:

}如:编写的是test.proto

package protobuf;

option java_package = “com.sq.protobuf”;

option java_outer_classname = “FirstProtobuf”;

message testBuf {

required int32 ID = 1;

required string Url = 2;

}

将其放在与刚解压的protoc.exe同级目录中。

2.在cmd中,到protoc-2.4.1-win32文件夹下,

执行

E:\protoc-2.4.1-win32> protoc.exe –java_out=./ test.proto

则可以找到的一个生成的FirstProtobuf.java文件。

3.在MyEclipse中新建一个java project,建立包com.sq.protobuf,然后将刚才生成的FirstProtobuf.java文件放在其下面。

此时会报错,因为没有引入jar包,在package视图下,将protobuf-java-2.4.1.jar引入,即可解决问题。

java中.proto文件怎么用

用cd命令打开文件所在目录,例如文件在E:\tools\Computer\protoc-2.5.0-win32下 cmd命令:e:E:\>cd tools

android studio怎么编译proto

方案是:1、在build.gradle中增加 dependencies { compile fileTree(dir: ‘libs’, include: [‘*.jar’]) compile group:’com.google.protobuf’,name:’protobuf-java’,version:’2.5.0′ //这个是关键的一句话,对于这个version是从你的本地maven存放的目录, 进入到 \.m2\repository\com\google\protobuf\protobuf-java目录下,看到的那个数字文件夹的名字,就是你的version,

cmd里面的proto是什么意思

proto 原型机,样机 What’s Generated From Your. proto? 从你的.proto文件生成了什么?