FlatBuffers初体验

2024-06-18 04:08
文章标签 初体验 flatbuffers

本文主要是介绍FlatBuffers初体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. 从github上将其签下: https://github.com/google/flatbuffers/archive/master.zip


2. 编译, 用的是cmake.


好像不能识别环境变量, 得手动改一下CMAKE_CXX_COMPILER/CMAKE_C_COMPILER, 默认是c++和c.  感觉还真不如make方便. 



3. 编写fbs, 非常简单.

namespace cn;
table Monster {
  pos:string;
  name:string;
  ret:int;
}
root_type Monster;
另存为moster.fbs


4. 生成java源文件, 运行下面的命令, 就会生成一个cn文件夹, 其中有一个Monster.java.

[root@xzw bin]# flatc -j monster.fbs


5. 消息构造, 在编程方式上非常奇怪, 完全没有protobuf方便.

public static void main(String[] args){FlatBufferBuilder fbb = new FlatBufferBuilder(1);int ofst0 = fbb.createString("jack");int ofst1 = fbb.createString("10.10");{Monster.startMonster(fbb);Monster.addName(fbb, ofst0);Monster.addPos(fbb, ofst1);Monster.addRet(fbb, 0x11223344);Monster.finishMonsterBuffer(fbb, Monster.endMonster(fbb));}Monster m = Monster.getRootAsMonster(fbb.dataBuffer());Misc.printf(fbb.dataBuffer().array());Misc.printf("name: %s, pos: %s, ret: %08X\n", m.name(), m.pos(), m.ret());}

6. 运行结果, 很明显, 序列化的二进制体积上要比protobuf大得多, 当然这个消息的内容本身比较小, 所以与内容无关的东西占的比重更大.



7. 其它, 生成的代码量非常小, c++代码只有一个头文件. 编译起来相信要比protobuf快得多, 感觉flatbuffer还比较骨感, 不知道咋转成json, xml等.

也没有eclipse插件,  相信编写起来不会太舒服. 




这篇关于FlatBuffers初体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071263

相关文章

Node.js初体验 Kali安装Node.js

背景:偶然看到node.js开发微信公众号的视频,有些好奇,想要接触下。然后花了两个小时在实验楼网站上在线学习了JavaScript的基础知识,以及Node.js的基础 接着本着从实践出发的原则 先去本地kali下安装个Node.js玩玩 下载地址:https://nodejs.org/en/download/ 网页最下面有提示:Note: Python 2.6 or 2.7 is requ

html初体验标准标签

<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Document</title></head><body><input type="text"></body></html> 内容展示

【 OpenHarmony 4.1 Launcher 源码解析 】-- 初体验

前言 最近因为业务需要,需要做一款 UI 定制的鸿蒙 Launcher,于是就开始了「找到代码」、「研究代码」、「魔改代码」的套路流程,仅以此文章作为知识备份和技术探讨所用,也希望能给其他小伙伴提供一些源码的解析思路,方法大家各自魔改! 一、官方简介 Gitee codes:应用子系统/Launcher Launcher 作为系统人机交互的首要入口,提供应用图标的显示、点击启动、卸载应

通义千问AI PPT初体验:一句话、万字文档、长文本一键生成PPT!

大家好,我是木易,一个持续关注AI领域的互联网技术产品经理,国内Top2本科,美国Top10 CS研究生,MBA。我坚信AI是普通人变强的“外挂”,专注于分享AI全维度知识,包括但不限于AI科普,AI工具测评,AI效率提升,AI行业洞察。关注我,AI之路不迷路,2024我们一起变强。 你有多久没有听到国内AI大模型的最新消息了? 不是国内AI领域不卷了,而是“卷”的方向变了。2023年卷

华为云 Flexus X 实例使用测评:上手初体验,比想象的更丝滑

华为云 Flexus 云服务是华为云推出的一款主打柔性算力,高效性能,高安全,高性价比的旗舰级云服务产品。主要面向金融、游戏、零售、直播等高负载业务场景,比较适合当前绝大数企业的一些云上需求。你可以根据你应用需要的性能,配置不同的规格。 上手初体验 现在,我们以一款实例配置为例,介绍华为云 Flexus X 的上手体验。 进入到华为云 Flexus 云服务的首页,点击购买按钮,进入配置页

GPT-SoVITS-WebUI 初体验

一、安装   conda create -n GPTSoVits python=3.9 #

Pyhton3+openCV3初体验

其中python3采用的anaconda进行Python的安装与库的管理。 安装好anaconda后,就可以通过anaconda来安装opencv了。打开Anaconda Prompt命令行程序,输入conda list,可以查看已安装的库。 输入conda install --channel https://conda.anaconda.org/menpo opencv3 可以对opencv

2019idea 创建springboot项目初体验

一.创建一个springboot工程 1.创建工程 2、选择Spring Initrializr 点击Next 3.设置包名,项目名,以及最后需要打包的类型,这里设置成war,点击Next 4.选择web,web,点击Next5.添加项目本地路径配置信息 6.项目已经创建完成.创建Test类,添加@RestCOntroller注解,方法上添加@GetMapping或者PostMapping等

jpa初体验

近期在做项目的时候,项目框架已定,底层都是手写的mapper,哪怕是最最简单的单表增删改,而且在接手这个项目的时候发现,前人在写这个项目的时候没有注意项目的封装性,真是想到哪里写到哪里,没有抽出公共的。于是乎这块但凡加个新的功能,就需要重新写sql,比较的麻烦,维护的时候感觉也很糟糕。     于是想到了之前在前一家公司的时候采取的做法,都是直接用的公共的,有直接使用generator直

软件工程之初体验

刚刚进入了软工视频的学习。迟迟没有写下总结。。。感觉对于软件工程还不是那么理解。现在把自己的感受写一下。 (一)软件。 视频的一开始先介绍了软件的一下基本内容。软件在我们的身边无处不在,我们对他并不陌生。 (二)软件工程过程。 定义:软件工程过程是把输入转化为输出的一组彼此相关的资源和活动。 Plan——软件规格说明。规定软件的功能及运行限制。 Do——软件开发。