首页 > 其他分享 >protocol buffer

protocol buffer

时间:2024-05-10 10:26:55浏览次数:14  
标签:protocol buffer writter c++ reader 该字段

Google protocol buffer 使用的意义: 在不使用的情况下,通常我们需要完成两个部分,一个是writter一个是reader。writter负责向磁盘写入消息,reader负责读出消息,如果是定长数据且writter和reader都采用c++编写则会比较方便,采用同样的结构体就行。对于不定长数据稍微麻烦一点,需要定义一个个数,然后再按照约定逐个读取。如果reader才用的是java,则需要先将数据存到一个buffer中,然后再根据约定逐个读取字段。每当我们定义一个消息,我们都要去实现一个reader,这非常繁琐。

关键字

  1. Message : 类似strut
  2. Required: 必须设置该字段
  3. optional:不设置该字段使用默认值,默认值可以自己设定也可以系统提供,数值类型为0,布尔类型为false,字符类型为空
  4. repeated:该字段可能会重复任意次(包括零次)
  5. = 1:标签数字,表示该字段在序列化之后的二进制数据中的布局位置,不可以重复,1-15在编码时可以得到优化使标签值和类型信息只占一个byte,16-2047将占两个。
  6. Enum :和c++一样,需要注意的是 枚举值之间的分隔符是分号
  7. Import :类似python,可以导入别的文件,然后使用里面定义的message
  8. package:包名对应生成c++文件的命名空间

还有一些option的设置,就是一些命令帮助生成更符合我们要求的目标语言代码,eg:option optimize_for = SPEED; 表示生成代码效率优先。具体用到了在看吧。

类型对照表

image

标签:protocol,buffer,writter,c++,reader,该字段
From: https://www.cnblogs.com/tggpx/p/18183708

相关文章

  • org.apache.catalina.LifecycleException: Protocol handler start failed
    出现问题org.apache.catalina.LifecycleException:Protocolhandlerstartfailed,是因为端口号被占用1、按键盘上windows+R,输入CMD(不区分大小写)2、输入netstat-ano回车,查看所有进程(注意”-“前面有空格)3、输入netstat-ano|findstr"端口号"(注意”-“前面有空格)4、输入ta......
  • 第七章:Snooping Coherence Protocols
    chapter7:snoopingcoherence协议简介窥探(Snooping)缓存一致性协议是最早被广泛使用的协议并被沿用至今。它有较短的一致性传输延时以及相对于目录(directory)协议更简单的设计。窥探协议通过要求对一个缓存行的所有要求按顺序到达,实现了所有分布式缓存控制器都能正确更新共同......
  • 第六章:Coherence Protocols
    chapter6:cachecoherence1、大局观coherence的目标,具体包括:单写多读(single-writer-multiple-reader,SWMR)不变性:对任何内存地址A,在任何时间点上只存在一个可以向A写入的内核,但可以存在多个从A读取的内核。数据-值(data-value)不变性:一个内存位置在一个时间片开始时的值与该内存......
  • [转]ptp(precision time protocol)时钟同步
    一、介绍1:什么是ptpPTP(PrecisionTimeProtocol)是一个通过网络同步时钟的一个协议。当硬件支持时,PTP精度能达到亚微秒,比NTP(NetworkTimeProtocol)精度更高。2:ptp应用场景1)数据中心数据中心需要NTP/PTP同步,以确保集群的时域运行。同步对于虚拟机计算是必不可少的。日志事件的......
  • BufferedImage内存泄漏和溢出问题
    java的ImageIO处理图片在使用Thumbnailator时出现了OOM问题,但是其使用方法只有一行代码,无法针对其内部使用的对象进行资源释放,所以使用原生的Java类库中ImageIO来处理图片。关键有三个类:ImageIO、BufferedImage、GraphicsImageIO类包含两个静态方法:read()和write(),通过这两......
  • sqlserver sp_who2和inputbuffer的使用,如何查询进程执行的脚本代码【转】
    一、sp_who2的使用1、存储过程的位置 sp_who官方解释地址:https://docs.microsoft.com/zh-cn/sql/relational-databases/system-stored-procedures/sp-who-transact-sql?redirectedfrom=MSDN&view=sql-server-2017 2、查出的列名的含义CPUTime: 进程占用的......
  • QT 程序使用 Framebuffer 显示 UI
    桌面版本的Linux都会带有类似xorg这样的图形服务,桌面程序和应用程序的UI都是通过图形服务渲染的。但是有些系统为了减少系统体积、提升性能,会把图像服务和没有用到的模块裁剪掉,如:嵌入式系统。没有图形服务程序就不能直接渲染显示UI,这时候我们可以使用Framebuffer进行渲......
  • cache和buffer
    buffer,缓冲区,buffers是给写入数据加速的Cache,缓存,Cached是给读取数据时加速的Cachecache是指,把读取磁盘而来的数据保存在内存中,再次读取不用读取硬盘,而直接从内存中读取,加速数据读取过程。Cache,缓存,Cached是给读取数据时加速的硬件读取速度排名磁盘<内存<CPU磁盘最......
  • 设备通讯(1)----缓冲区方式(DO_BUFFERED_IO)
    驱动的AddDevice中,若做了如下设置:fdo->Flags|=DO_BUFFERED_IO,则意味着指定该设备为缓冲区方式工作。以ReadFile和WriteFile为例,下面看看这种方式究竟是如何工作的,先看一个概要图,对着图来说明比较容易: 1:上层程序创建用户缓冲区,然后调用ReadFile/WriteFile对设备进行读写操......
  • Secure Copy Protocol or SCP - 安全拷贝协议
    SecureCopyProtocolorSCP-安全拷贝协议1.scp文件传输1.1.将远程文件拷贝到本地1.2.将本地文件拷贝到远程1.3.将远程目录拷贝到本地ReferencesSecureCopy(remotefilecopyprogram)TheSCPprogramisasoftwaretoolimplementingtheSCP......