信息网络安全中 gob是啥

信息网络安全中 gob是啥,第1张

Gob 是 Go 自己的以二进制形式序列化和反序列化程序数据的格式;可以在 encoding 包中找到。这种格式的数据简称为 Gob (即 Go binary 的缩写)。类似于 Python 的 “pickle” 和 Java 的 “Serialization”。

Gob 通常用于远程方法调用(RPCs,参见 15.9 的 rpc 包)参数和结果的传输,以桥扰及应用程序和机器之间的数据传输。 它和 JSON 或 XML 有什么不同呢?Gob 特定地用于纯 Go 的环境中,例拿毁如,两个用 Go 写的服务之间的通信。这样的话服务可以被实现得更加高效和优化。 Gob 不是可外部定义,语言无关的编码方式。因此它的首选格式是二进制,而不是像 JSON 和 XML 那样的文本格式。 Gob 并不是一种不同于 Go 的语言,而是在编码和解码过程中用到了 Go 的反射。

Gob 文件或流是完全自描述的:里面包含的所有类型都有一个对应的描述,并且总是可以用 Go 解码,而不需要了解文件的内容。

只有可导出的字段会被编码,零值会被忽略。在解码结构体的时候,只有同时匹配名称和可兼容类型的字段才会被解码敏敏旦。当源数据类型增加新字段后,Gob 解码客户端仍然可以以这种方式正常工作:解码客户端会继续识别以前存在的字段。并且还提供了很大的灵活性,比如在发送者看来,整数被编码成没有固定长度的可变长度,而忽略具体的 Go 类型。

好世轿吧,慢慢来分析。

EXTERN int libGobmem_Init _ANSI_ARGS_((Gobmem_Interp * interp))

1、EXTERN

在芦仿代码的某处应有类似的定义:

#define EXTERN extern

extern 是修饰词,表示函数/变量只是声明,不是定义。

2、返回值,函数名和形参

int libGobmem_Init _ANSI_ARGS_((Gobmem_Interp * interp))

int 是返回值

libGobmem 是库的前缀

Gobmem_Interp * interp 是形参

3、_ANSI_ARGS_

在你的代码的某处,应该有类似的宏定义:

#ifdef __STDC__

#define _ANSI_ARGS_(x) x

#else

#define _ANSI_ARGS_(x) ()

#endif

这个宏主要是给编译器用的,有些很老的编译器不的个数和类型(例如void f(int x, int y))。支持prototypes 的编译器会自动 #define 一个__STDC__,这个宏是为了编译器兼容。当然,这是很搜哗肆老很老的故事了。

在你看代码的时候,这个函数其实可以简化成这样:

int init(Gobmem_Interp * interp)

就是一个库 gobmem 的初始化函数,接受一个Gobmem_Interp * 类型的指针,初始化成功会返回 0;失败会返回一个非 0 的错误码。

希望对你有用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12225959.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存