当前位置: 首页 > news >正文

【ros bag 包的设计原理、制作、用法汇总】

ros bag 包的设计原理

序列化和反序列化

首先知道Bag包就是为了录制消息,而消息的保存和读取就涉及到一个广义上的问题序列化和反序列化,它基本上无处不在,只是大部分人没有注意到,举个简单的例子,程序运行的时候,是直接操作的内存,也就是一个结构体或者一个对象,但内存里面的数据会消失,当要保存内存的数据到磁盘的时候就需要序列化之后保存,常见的序列化方式有XML、Json等等,而Protobuf也就是其中的一种。而当需要读取磁盘中的数据使用的时候,又需要把磁盘中的数据转换为内存中的数据,这个过程叫反序列化。

当然持久化并不是唯一利用到序列化和反序列化的一种,比如两个进程之间通信,由于进程之间的内存映射并不相同,也需要序列化和反序列化,同理还有两台机器之间的通信,例如最常见的网页应用也需要序列化和反序列化,当然还有更厉害的技术,例如跨语言的调用,制作一种通用的对象消息格式,从而实现不同语言之间的数据交换。

回到这个问题本身,即持久化需要序列化消息,然后保存到硬盘,读取消息的时候,又需要反序列化消息为内存的对象。

反序列化

如果说写入消息很简单,但是读取消息的时候就麻烦了,因为不知道消息的类型,就无法解析消息,假设保存了三条消息,包括图片,位置和轨迹消息,读取了一条消息,怎么知道这条消息是什么类型呢?方法很简单,可以在消息头中标识这条消息是什么类型,然后再用这种消息类型去解析消息,这样就解决了。

通过消息类型名称&#

http://www.lryc.cn/news/6812.html

相关文章:

  • Linux网络:聚合链路技术
  • 2023年数据安全的下一步是什么?
  • 在浏览器输入URL后发生了什么?
  • Dubbo学习
  • CMMI-立项管理流程
  • 看《狂飙》读人生,致敬2023!
  • Web自动化测试——Junit5篇
  • Seata源码学习(二)-源码入口
  • 2023如何选购适合游戏设计的电脑硬件
  • springboot maven项目集成阿里p3c-pmd插件使用
  • PowerJob的server启动都经历了哪些?代码不多也很简单,咱们来逐一理解。
  • 分享好玩的h5小游戏制作步骤_怎么做h5微信小游戏
  • 代理模式--设计模式
  • 【RSTP的原理和配置】
  • Doom流量回放工具导致的测试环境服务接口无响应的排查过程
  • 2023年留学基金委(CSC)西部/地方合作项目选派办法及解读
  • ILSSI国际研讨会将为您呈现六西格玛技术的未来与前景
  • KDJ日周月金叉共振指标
  • 线程私有变量ThreadLocal详解
  • 如何保证数据库和缓存双写一致性
  • 一文搞懂:JS严格模式“use strict”
  • Linux的ACL(扩展权限)规划:setfacl、getfacl
  • HTML预格式化文本pre标签
  • 基于机器学习的心脏病预测方法(11)——梯度提升机(GBM)
  • Linux多版本python切换以及多版本pip对应 (cloud studio Ubuntu16.04)
  • 【并发编程】LockSupport源码详解
  • 元宇宙之声:新鸿基公司
  • Linux中定时监控Tomcat服务器进程并在进程结束时重启Tomcat服务器
  • 快速部署私有云笔记,免费享受多端同步
  • python生成 2048位随机质数 Miller-Rabin质数测试算法