Java:mac环境下使用protobuf
来源:互联网 发布:360人工智能研究院招聘 编辑:程序博客网 时间:2024/06/05 16:54
首先需要了解下什么是protobuf。它是谷歌开源的消息传输协议,比JSON、XML等更快、更轻、更小。并且支持跨平台跨平台。
我们完全可以考虑使用protobuf代替JSON或者XML。不过其配置比JSON或者XML繁琐一下。
我们先从github上下载protobuf
https://github.com/google/protobuf.git
下载的只是protobuf的源代码,我们需要用gcc进行编译。
我们进入protobuf文件夹下。
./configuremakemake checkmake install
执行完上述命令后,就编译完整个protobuf了。而protobuf的命令行工具文件在/src文件夹下面。
我们将该文件夹加入到环境变量中以方便使用。
sudo vim /etc/paths
将文件在Finder打开,然后拖入到终端,保存后退出。
接着我们编写protobuf文件,命名为com.model.Person.proto
syntax = "proto2";option java_package = "com.model";option java_outer_classname = "Person";message person{ required int32 id = 1; required string username = 2; required string password = 3;}
这里使用了proto2的语法。
java_package 定义了生成的Java文件会在哪个包下面
java_outer_classname 定义了这个Java文件最外面的类名字为Person
message person 定义了这个Java文件中会有一个外部类为Person的内部类person。然后定义了它的属性id、username、password
我们执行命令,就会生成com.model.Person.java文件了。
protoc --java_out=./java ./com.model.Person.proto
–java_out 定义了protobuf的输出为Java文件,并且输出的目录为当前的java文件夹下。之前定义了java_package = “com.model”。会自动的判断java文件夹下是否有com/model文件夹,如果没有,则会自动创建。
这样我们就生成了Person类了。
我们来开始使用这个类。
Person.person.Builder builder = Person.person.newBuilder(); builder.setId(1); builder.setUsername("Aiden"); builder.setPassword("123456"); person one = builder.build(); byte[] bytes = one.toByteArray(); System.out.println(Arrays.toString(bytes)); Person.person two = Person.person.parseFrom(bytes); System.out.println(two.toString());
可能会有人觉得很奇怪。为什么是Person.person?
这是因为刚刚protobuf文件写的使用定义了java_outer_classname = “Person”,这个Person只是作为外部类而已,这个外部类能够包含很多数据类型,其中就包含了person。而person这个内部类只能通过构造器模式生成,不能直接new,就有了上面的代码了。
我们输出了person的字节,可以看出,只用了17个字节就存储了person对象,这可比JSON(JSON需要41个字节)可小的多了!
- Java:mac环境下使用protobuf
- mac protobuf java安装使用
- mac 下配置protobuf 3.0 golang环境
- Mac 环境下编译Protobuf 生成多种语言文件
- mac golang使用protobuf
- protobuf linux mac 使用
- Mac上使用protobuf
- mac下编译protobuf 3.0
- mac下编译protobuf c++
- mac环境下svn使用
- MAC下的java环境
- mac 下安装java环境
- Mac 下安装 java环境
- 在C语言环境下使用google protobuf
- 在C语言环境下使用google protobuf
- 笔记:Linux环境下lua脚本层使用protobuf
- [protobuf] 如何在Windows环境下的VS中安装使用Google Protobuf完成SOCKET通信
- Mac安装Protobuf编译Java
- 正则表达式
- Java的Scanner类的使用
- 使用IntelliJ IDEA提示找不到struts-default文件
- codeforces C. An impassioned circulation of affection
- AES加密算法 ECB模式 ISO10126填充
- Java:mac环境下使用protobuf
- CRC校验
- 判断质数(isPrime)的方法——Java代码实现
- python修炼计划 从基本学起1
- maven
- WebRTC Experiments & Demos
- hive表信息查询:查看表结构、表操作等(转)
- Spark Streaming 入门教程
- emlog修改后台模板