protobuf 之诡异的文件流与压缩

只接上干货,内容较干。文章大概需要花费5分钟简单了解下。

1、Gzip

代码
直接看源码头文件如上图。压缩对象 GzipOutputStream ,通过函数操作可以看到整个文件流是比较完整并清晰。
因为它显示清晰包含了 从初始化 到 flush 到 close 的显示调用

2、Ostream

源码头文件

直接看源码头文件如上。流对象 OstreamOutputStream ,通过函数操作可以看到整个文件流很奇怪。奇怪在于它只有流函数,没有Flush

为啥没有Flush呢?

听网友们的意思是:几年前流行面向对象 和 RAII,很多对象只能在析构函数中进行资源回收,Ostream 干了这个事…所以说需要加大括号使用局部变量来自动析构Flush,这样才能提前释放Ostream触发Flush成功写入

所以你的代码有bug吗?

	std::ofstream output;func(){/*****/{// 析构中自动flushgoogle::protobuf::io::OstreamOutputStream raw_output(&output);google::protobuf::io::CodedOutputStream coded_output(&raw_output);auto user_data = response->userdata();int fid = (int)user_data;coded_output.WriteVarint32(fid);coded_output.WriteVarint32(response->ByteSizeLong());response->SerializeToCodedStream(&coded_output);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/422648.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二分查找(折半查找)

二分查找/折半查找 概述查找步骤代码示例输出结果 概述 二分查找(Binary Search)的前提是待查找的数据已经排好序。通过将待查找区间划分为两部分,并将目标值与中间值进行比较,可以确定目标值在左侧区间或右侧区间。然后将查找区…

P4学习(六)实验三:a Control Plane using P4Runtime

目录 一. 实验目的二.阅读MyController.py文件1.导入P4Runtime的库2.main部分1. P4InfoHelper 实例化2. 创建交换机连接3. 设置主控制器4. 安装 P4 程序5. 写入隧道规则6. 读取表项和计数器(注释掉的部分)7. 定时打印隧道计数器8. 异常处理9. 关闭交换机…

如何查看苹果手机的CPU型号?

摘要 本文将介绍如何在苹果手机上查看CPU型号。通过简单的设置操作,您可以轻松地获取您的iPhone的CPU型号信息。此外,我们还将介绍一些克魔助手可以提供的其他功能,如内存监控、GPU性能监控和网络抓包等,以帮助您优化和提升iOS应…

文件操作与IO(3)

文件内容的读写--数据流 这里我们将要讲到文件操作中的重要概念--流. 之前也在C语言讲解中提到了文件流的概念---读写文件内容 分为这几步:(1)打开文件;(2)读/写文件;(3)关闭文件. 数据流主要分为字节流和字符流. 字节流:以字节为单位进行读写(代表:InputStream,OutputStrea…

2.机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解

2️⃣机器学习-K最近邻(k-Nearest Neighbor,KNN)分类算法原理讲解 个人简介一算法概述二算法思想2.1 KNN的优缺点 三实例演示3.1电影分类3.2使用KNN算法预测 鸢(yuan)尾花 的种类3.3 预测年收入是否大于50K美元 个人简介 🏘️&…

InnoDB的Buffer Pool

前置概念:一个数据页16KB,一个数据页可能有多个记录,即使我们只需要访问一条记录,需要把整个数据页加载到内存中,加载到内存后不是直接释放,而是缓存到内存当中(当然对于buffer pool的缓存是在存…

自己构建webpack+vue3+ts

先看看我的目录结构(我全局使用TS): 一、安装配置webpack打包 安装esno npm install esnoesno 是基于 esbuild 的 TS/ESNext node 运行时,有了它,就可以直接通过esno *.ts的方式启动脚本,package.json中添加 type:…

Quartus II使用小技巧

工程结构: 在建立完某项设计的文件后,依次在其里面新建四个文件夹,分别为:rtl、qprj、msim、doc。 rtl文件夹用于存放设计的源文件。 doc文件夹用于存放设计的一些文档性的资料。 qprj文件夹用于存放quaruts 工程以及quartus生…

SAP CDS VIEW实现行列转换

需求: 销售订单上的业务伙伴数据都在VBPA存储,根据PARVW来区分是售达方或者是送达方等等,有时候一些报表取数时有一些条件,比如售达方等于xxxxx并且送达方等于xxxxx,这时候就不是简单的一条sql就能搞定的事了&#xf…

C++学习笔记——指针

1,指针的基本概念 指针的作用:可以通过指针间接访问内存 内存的编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址 上图中的p就是a变量的指针,也可以记作*a 2,指针变量的定义和使用 指针变量定…

漫漫数学之旅009

文章目录 经典格言数学习题古今评注拓展学习(一)大数定理(二)伯努利级数 经典格言 真正的问题,不在于机器是否思考,而在于人们是否思考。——BF斯金纳(B. F. Skinner) BF斯金纳&…

力扣hot100 相交链表 超全注释 满级表达

Problem: 160. 相交链表 文章目录 思路复杂度💖 Ac Code 思路 👨‍🏫 参考题解 👩‍🏫 参考图解 复杂度 时间复杂度: O ( n m ) O(nm) O(nm) 空间复杂度: 添加空间复杂度, 示例: O ( 1 ) O(1) O(…