protobuf 之诡异的文件流与压缩

news2024/9/27 7:16:29

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

1、Gzip

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

2、Ostream

源码头文件

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

为啥没有Flush呢?

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

所以你的代码有bug吗?

	std::ofstream output;
	func()
	{
		/*
		***
		*/
		{// 析构中自动flush
			google::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.coloradmin.cn/o/1403385.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

同样是IT行业,测试和开发薪资真就差这么大吗?

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

ESP32-TCP服务端(Arduino)

将ESP32设置为TCP服务器 介绍 TCP(Transmission Control Protocol)传输控制协议,是一种面向连接的(一个客户端对应一个服务端)、可靠的传输层协议。在TCP的工作原理中,它会将消息或文件分解为更小的片段&a…

c++:string相关的oj题(把字符串转换成整数、344.反转字符串、387. 字符串中的第一个唯一字符、917. 仅仅反转字母)

文章目录 1.把字符串转换成整数题目详情代码思路 2. 344.反转字符串题目详情代码1思路1代码2思路 3. 387. 字符串中的第一个唯一字符题目详情代码思路 4. 917. 仅仅反转字母题目详情代码思路 1.把字符串转换成整数 传送门 题目详情 代码 class Solution { public:int StrToI…

DDOD(Disentangle Your Dense Object Detector)解析

paper:Disentangle Your Dense Object Detector official implementation:https://github.com/zehuichen123/DDOD third-party implementation:https://github.com/open-mmlab/mmdetection/tree/main/configs/ddod 存在的问题 现有的目标…

Docker命令---搜索镜像

介绍 使用docker命令搜索镜像。 命令 docker search 镜像命令:版本号示例 以搜索ElasticSearch镜像为例 docker search ElasticSearch

华而有实,维乐Prevail Glide带你领略风景线,成为风景线~

大家都知道呢!骑行,不仅是一种运动,更是一种生活态度。在骑行装备的世界里,一个好的坐垫对于骑行的舒适度和安全性至关重要。那今天,我要为大家推荐一款备受赞誉的坐垫——维乐坐垫美学系列-Prevail Glide。    为…

学习笔记——克里金插值

有一篇大神的文章写得非常的具体, https://xg1990.com/blog/archives/222 下面写下一些学习笔记: 1、关于克里金插值的基本原理 克里金插值来源于地理学,它的前提是地理学第一定律:所有事物都与其他事务相关,但是近…

Linux性能监控命令-top

简介 top 命令用于实时监视系统的性能和进程信息。它提供了一个动态的、交互式的界面,列出了当前运行的进程,并显示了它们的 CPU 和内存使用情况。通过该命令可以对硬件性能瓶颈做出基本判断。 1. 语法 top top [参数] top 有 2 种指定参数方式&#xff…

Python 生成 图片网页列表 显示路径和建立时间 笔记

Python 一键 生成 图片网页列表 显示路径和建立时间 (方便查看复制路径、重复一键生成) 支持格式:jpg \png\ svg\ webp 图片网页列表 图示: 参考代码: # -*- coding: utf-8 -*- import os import datetime# 指定图片…

自己构建webpack+vue3+ts

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

【动态规划】【C++算法】801. 使序列递增的最小交换次数

作者推荐 【动态规划】【广度优先搜索】【状态压缩】847 访问所有节点的最短路径 本文涉及知识点 动态规划汇总 数组 LeetCode801使序列递增的最小交换次数 我们有两个长度相等且不为空的整型数组 nums1 和 nums2 。在一次操作中,我们可以交换 nums1[i] 和 num…

【Java程序员面试专栏 专业技能篇】MySQL核心面试指引(二):核心机制策略

关于MySQL部分的核心知识进行一网打尽,包括三部分:基础知识考察、核心机制策略、性能优化策略,通过一篇文章串联面试重点,并且帮助加强日常基础知识的理解,全局思维导图如下所示 本篇Blog为第二部分:核心机制策略,子节点表示追问或同级提问 日志机制 关于MySQL的几…

【Web前端开发基础】CSS的结构伪类选择器、伪元素、浮动

CSS的浮动 目录 CSS的浮动一、学习目标二、文章内容2.1 结构伪类选择器2.2 伪元素2.3 标准流2.4 浮动2.5 清除浮动2.6 拓展(BFC) 三、综合案例3.1 小米模块案例3.2 网页导航案例 一、学习目标 能够使用结构伪类选择器在HTML中选元素能够说出标准流元素的…

Kafka 问题排查

订单宽表数据不同步 事情的起因是专员在 ze app 上查不到订单了,而订单数据是从 mysql 的 order_search_info 查询的,order_search_info 表的数据是从 oracel 的 BZ_ORDER_INFO 表同步过来的,查不到说明同步有问题 首先重启,同步…

《WebKit 技术内幕》学习之五(2): HTML解释器和DOM 模型

2.HTML 解释器 2.1 解释过程 HTML 解释器的工作就是将网络或者本地磁盘获取的 HTML 网页和资源从字节流解释成 DOM 树结构。 这一过程中,WebKit 内部对网页内容在各个阶段的结构表示。 WebKit 中这一过程如下:首先是字节流,经过解码之…

终端(命令提示符或Windows PowerShell或Azure Cloud Shell)概述

终端(命令提示符或Windows PowerShell或Azure Cloud Shell)是一种很 不 好用的东西 就是要背,很 不 爽 介绍 Windows 终端是一个新式主机应用程序,它面向你喜爱的命令行 shell,如命令提示符、PowerShell 和 bash&…

力扣刷MySQL-第五弹(详细讲解)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

Python 算法交易实验67 第一次迭代总结

说明 在这里对第一次迭代(2023.7~ 2024.1)进行一些回顾和总结: 回顾: 1 实现了0~1的变化2 在信息隔绝的条件下,无控制的操作,导致被套 总结: 思路可行,在春暖花开的时候&#x…

设备对象(DEVICE_OBJECT)

设备对象(DEVICE_OBJECT) 每个驱动程序会创建一个或多个设备对象,用DEVICE_OBJECT数据结构表示。每个设备对象都会有一个指针指向下一个设备对象,因此就形成一个设备链。设备对象链的第一个设备是由DRIVER_OBJECT结构体中指明的。设备对象保存设…

C++ 之LeetCode刷题记录(十五)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅。 依旧是追求耗时0s的一天。 94. 二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: …