当前位置:首页 > 经验 >

系统跟踪缓冲区大小设置多少(系统跟踪缓冲区大小)

来源:原点资讯(m.360kss.com)时间:2022-11-08 23:03:02作者:YD166手机阅读>>

在这篇文章中,我们将了解一位软件工程师在一个项目中的经验,该项目需要在内存受限的嵌入式系统上使用协议缓冲区。

每天,我处理 定制软件开发 并参与各个行业的项目。我专注于 在嵌入式系统中使用 Modern C 以及使用 Qt 构建应用程序。在这里,我将与您分享我在 内存受限的嵌入式系统上需要协议缓冲区的项目中的经验。让我们来看看!

想象这样一种情况,几个人见面,每个人都说不同的语言。为了相互理解,他们开始使用团队中每个人都能理解的语言。然后,每个人想要说些什么都必须将他们的想法(通常是他们的母语)翻译成小组的语言。

然后我们可以说他们每个人都在群体的语言和特定的母语之间执行某种形式的编码和解码信息。

如果我们将单个语言更改为编程语言,将组语言更改为 Protocol Buffers 消息语言,我们将获得 Protocol Buffers 的优势之一;也就是说,能够以整个组都知道的特定编程语言创建消息,并将其翻译成只有特定组成员知道的语言的形式。

除了独立于语言和平台以及编码和解码数据的能力之外,Protocol Buffers 还可以快速有效地完成它。

根据 Wikipedia的说法,“Google 广泛使用协议缓冲区来存储和交换各种结构化信息。该方法作为自定义远程过程调用(RPC 或远程过程调用)系统的基础,该系统用于几乎所有的交互谷歌的机器通信。”

系统跟踪缓冲区大小设置多少,系统跟踪缓冲区大小(1)

协议缓冲区徽标

协议缓冲区消息语言

正如 Google 所说, “协议缓冲区使您能够定义一次数据的结构化方式(以 .proto 文件的形式),然后您可以使用特殊生成的源代码轻松编写和读取结构化数据往返于各种数据流并使用各种语言。”

系统跟踪缓冲区大小设置多少,系统跟踪缓冲区大小(2)

协议缓冲区背后的想法

Protocol Buffers 语言指南继续说:“首先,让我们看一个非常简单的示例。假设您要定义一种Person消息格式,其中每个人都有姓名、年龄和电子邮件。这是.proto用于定义此消息类型的文件:

原始缓冲区

// person.proto syntax = "proto3"; message Person { string name = 1; int32 age = 2; string email = 3; }

该文件的第一行指定您正在使用proto3语法。”

Person消息定义指定了三个字段(名称/值对),每个字段用于您希望包含在此类消息中的每条数据。该字段具有 a name、 atype,和 a field number。

拥有.proto文件后,您可以生成特定语言的源代码:例如,C ,使用称为protocol compiler.aka的特殊编译器protoc。

系统跟踪缓冲区大小设置多少,系统跟踪缓冲区大小(3)

协议编译器使用可视化

生成的文件包含语言原生结构来操作消息 Let's call it API。

API为您提供所有必要的类和方法set以及retrieve数据以及serialization to字节parsing from流的方法。序列化和解析是在后台处理的。

对于 C ,生成的文件包含Person类和所有必要的方法来处理底层数据。例如:

C

void clear_name(); const ::std::string &name() const; void set_name(const ::std::string &value); void set_name(const char *value);

此外,Person类继承方法从google::protobuf::Message流中序列化或反序列化(解析):

C

// Serialization: bool SerializeToOstream(std::ostream* output) const; bool SerializePartialToOstream(std::ostream* output) const; // Deserialization: bool ParseFromIstream(std::istream* input); bool ParsePartialFromIstream(std::istream* input);在 Protobuf-C 中使用自定义分配器进行静态分配

如果您正在编写一个完全静态分配的系统,那么您可能使用的是 C 而不是 C 。在这里,您将了解如何编写使用静态分配的缓冲区而不是动态分配的内存的自定义分配器。

背后的想法

默认情况下Protobuf-C,解包时通过调用动态分配内存malloc()。有时它是no-go某些嵌入式系统或资源受限系统中的一个选项。

Protobuf-C使您能够提供custom allocator- 替代 malloc() 和 free() 函数 - 在本例中,serial_alloc().

系统跟踪缓冲区大小设置多少,系统跟踪缓冲区大小(4)

首页 123下一页

栏目热文

osi模型哪一层好(osi七层模型在哪里)

osi模型哪一层好(osi七层模型在哪里)

(LCTT 校注:作者原文已经大篇幅进行了修订更新,本文据之前的版本翻译。)今天我在推特上发布了一些关于 OSI 模型如...

2022-11-08 22:57:23查看全文 >>

i-size认证等级(欧盟r129 i-size认证是什么)

i-size认证等级(欧盟r129 i-size认证是什么)

一、前言各位好,我是abrams2415。一位从业多年的汽车动力总成工程师。一款新车型从概念设计阶段就要以汽车安全性、乘...

2022-11-08 22:48:31查看全文 >>

i-size优缺点(i-size认证标签)

i-size优缺点(i-size认证标签)

Ciao Bella,我是老房。安全座椅的重要性老房在不同场合聊过好几次。十年前大家还在讨论:“是否要买安全座椅”、“买...

2022-11-08 22:58:58查看全文 >>

osi参考模型哪一层最好(osi参考模型有哪七层特点)

osi参考模型哪一层最好(osi参考模型有哪七层特点)

OSI 七层模型通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯,因此其最主要的功能就是帮助不同类型的主...

2022-11-08 23:18:29查看全文 >>

系统跟踪缓冲区大小设置多少最好(系统跟踪缓冲区大小是什么意思)

系统跟踪缓冲区大小设置多少最好(系统跟踪缓冲区大小是什么意思)

6. 远程记录和监控日志记录是记录设备活动和跟踪网络安全事件的重要机制。它使管理员能够查看日志中的可疑活动并调查事件。设...

2022-11-08 23:20:04查看全文 >>

osi参考模型哪层最好(osi参考模型从哪一层开始)

osi参考模型哪层最好(osi参考模型从哪一层开始)

3.协议的正主3.10si 这层该咋分TCP/IP模型是由美国国防部创建的,是至今发展最为成功的通信模型,也是Inter...

2022-11-08 23:20:58查看全文 >>

osi参考模型口诀(osi模型理解)

osi参考模型口诀(osi模型理解)

前言:职场就像围城,我们每一个职场人总是以“墙外”的视角羡慕着“墙内”的世界,而也许你的生活也出现在别人的梦中。希望“互...

2022-11-08 23:06:33查看全文 >>

i-size的优缺点(i-size认证查询系统)

i-size的优缺点(i-size认证查询系统)

【不满格评测·原创】我家里只有一个女儿,不过我已经用过5款儿童安全座椅了。这种近乎“变态”的行为确实很难让人理解,但是为...

2022-11-08 23:24:11查看全文 >>

i-t曲线异常怎么解决(i-e曲线不能闭合)

i-t曲线异常怎么解决(i-e曲线不能闭合)

;*仅供医学专业人士阅读参考心电图是心内科医生判断疾病的重要工具,但是很多医生并没有吃透心电图。究其原因,是我们在日常诊...

2022-11-08 23:02:02查看全文 >>

osi模型在哪一层(osi七层模型在哪里)

osi模型在哪一层(osi七层模型在哪里)

一、OSI参考模型 今天我们先学习一下以太网最基本也是重要的知识——OSI参考模型。 1、OSI的来源 OSI(Open...

2022-11-08 22:49:23查看全文 >>

文档排行