flatBuffer安装及使用教程

1、什么是flatBuffer:

FlatBuffers为Google发布的一个跨平台,提供多种语言接口,注重性能和资源使用的序列化类库。目前该类库提供C++, C#, C, Go, Java, JavaScript, PHP, and Python语言接口。该序列化类库多用于移动端手游数据传输以及特定的对性能有较高要求的应用。
接下来我们将学习FlatBuffers环境搭建并且使用PHP语言完成一次简单的序列化例子。

  • 编译flatc工具
  • 编写一个FlatBuffers的scheme文件
  • 使用flatc工具编译scheme文件,生成对应语言的数据对象头文件/类
  • 使用FlatBufferBuilder序列化对象
  • 反序列化数据对象

    2、安装:

    编译工具flatc工具,首先要先装Cmake(推荐apt-get install cmake)
    (1)下载FlatBuffers源码,从gitHub上下载项目源代码:

    git clone https://github.com/google/flatbuffers.git

    (2)进入flatbuffers项目根目录,输入如下命令

    cmake -G "Unix Makefiles" //生成MakeFile
    make //生成flatc
    make install //安装flatc

    (3)查看flatc,如下图

    flatc --version

flatBuffer安装及使用教程

3、编写FlatBuffers的scheme文件:

     // Example IDL file for our monster's schema.
        namespace com.zeyuan.learning;
        enum Color:byte { Red = 0, Green, Blue = 2 }
        union Equipment { Weapon } // Optionally add more tables.
        struct Vec3 {
            x:float;
            y:float;
            z:float;
        }
        table Monster {![](https://s1.51cto.com/images/blog/201805/30/176b5bec853b087070ba6afba8905488.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)
            pos:Vec3; // Struct.
            mana:short = 150;
            hp:short = 100;
            name:string;
            friendly:bool = false (deprecated);
            inventory:[ubyte];  // Vector of scalars.
            color:Color = Blue; // Enum.
            weapons:[Weapon];   // Vector of tables.
            equipped:Equipment; // Union.
        }
        table Weapon {
            name:string;
            damage:short;
        }
        root_type Monster;

4、编译Schema文件:

  • 将上节编写的scheme文件保存为test.fbs文件,到该文件所在文件夹下,执行

    flatc [ GENERATOR OPTIONS ] [ -o PATH ] [ -I PATH ] [ -S ] FILES… [ – FILES…]

定义文件按照顺序被读取和编译,还可以包含其他定义文件和数据(详情 见下面).
任意个定义文件可能生成一个或者多个定义文件,这取决于附加的命令选项

  • --cpp,-c :按照定义生成C++头文件
  • --java,-j :按照定义生成Java代码
  • --csharp,-n :按照定义生成C#代码
  • --go,-g :按照定义生成Go代码
  • --python,-p :按照定义生成python打底吗
  • --javascript,-s :按照定义生成JavaScript
  • --php :按照定义生成php
    数据序列化格式选项
  • --binary,-b :序列化成.bin 后缀的二进制格式,
  • --json,-t :序列化成.json 后缀的json格式,
    其他选项
  • -o PATH :输出搜有生成的文件到Path(绝对路径,或者相对于当前目录)路径,如果省略,Path就是当前目录.路径末尾因该是你的系统分隔符\或者/.
  • -I PATH :当遇见include声明,试图读取文件的时候将从此路径按照顺序查找,如果失败,就按照相对路径查找
  • -M :打印Make规则到生成文件
  • --strict-json :要求生成严格的json文件(名字等字段包含在引号中,table和Vector末尾没有逗号),默认 在required/generated时没有引号,末尾逗号是允许的
  • ---defaults-json :当输出json文件本的时候输出字段等于默认值
  • ---no-prefix :当生成C++头文件时 枚举值不包含枚举类型的前缀
  • ---scoped-enums :使用C++11风格作用域和强类型枚举生成C++,也就意味着 --no-prefix
  • ---no-includes :不生成包含include模式的代码,(依赖C++)
  • ---gen-mutable :为可变的FlatBuffers生成额外的non-const访问器
  • ---gen-onefile :生成一个定义文件(用于C#)

执行以下代码:

flatc --php test.fbs

将会生成php语言的类文件定义,如果你想为别的语言生成相应的类文件可查看以上选项,如图。

flatBuffer安装及使用教程
参考:
1.如何写Scheme:https://google.github.io/flatbuffers/flatbuffers_guide_writing_schema.html
2.flatc编译说明:https://blog.csdn.net/u010893023/article/details/50470835
3.flat安装教程:https://www.jianshu.com/p/8df23cd182ec

转载于:https://blog.51cto.com/onebig/2122019

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mnn flatbuffer是指使用Flatbuffers库来处理MNN(Mobile Neural Network)模型的二进制缓存文件。在MNN中,它使用Flatbuffers来序列化和反序列化模型数据,以实现高效的加载和传输。通过使用Flatbuffers,MNN可以快速地将模型数据序列化为二进制buffer,并在需要时快速反序列化,从而提高了加载模型的速度。此外,Flatbuffers还具有占用空间小、使用简单、代码自动化生成等优点,使其在移动端应用中更加适用。因此,mnn flatbuffer是指使用Flatbuffers来处理MNN模型缓存的方式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MNN Interpreter and Session](https://blog.csdn.net/yiran103/article/details/108552734)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [序列化与反序列化之Flatbuffers(一):初步使用](https://blog.csdn.net/hsqyc/article/details/115719054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值