cc在编程中是什么意思 (cc编程是做什么的)

本文目录导航:

cc在编程中是什么意思

CC在编程中是C语言的缩写,它是一种通用编程语言,经常被用于系统编程、嵌入式系统、网络编程和游戏开发等任务。

C语言的设计简洁、高效,被广泛认可为可移植性强、资源消耗低的编程语言。

它是Linux操作系统的基础,也被广泛应用于其他操作系统环境中。

cc在编程中是什么意思 (cc编程是做什么的)

除了C语言的缩写,CC在编程中常常被用作编译器的代称。

编译器是一种将源代码转换成可执行代码的工具。

它将源代码翻译成机器语言,使得计算机能够理解和执行程序。

CC编译器最初是由AT&T的Unix团队开发的,也被称为Unix C编译器。

现在,CC编译器已经成为标准的C编译器,广泛应用于不同的编程环境中。

除了C语言和编译器,CC在编程中还有其他的含义。

例如,它可以代表Creative Commons,这是一个致力于推动知识共享的组织。

Creative Commons为创作者提供了一些通用的版权许可条款,使得其他人可以在一定条件下使用和分享他们的作品。

在一些开源软件和网络资源中,我们可以看到CC授权的标识,这表明着相应的创作物的版权已经被共享出来了。

CS144 计算机网络实验 lab0 笔记

下学期即将踏入计算机网络的学习,为了提前预习,我在假期选择了CS144实验lab0进行实践。

使用WSL2与Clion做实验,相较于使用vscode,这种组合更加便捷。

实验“writing webget(入门)”,主要目的在于熟悉网络编程。

在进行此实验前,建议先仔细阅读官方推荐的文档,以便更好地理解实验目的与步骤。

另一个实验是实现一个可靠的比特流,目标是构建一个缓冲区,允许同时进行读写操作。

开始时,我尝试使用std::deque来实现,但后来发现链表方式在效率上更为出色。

为了实现可靠的比特流功能,我编写了两个文件,分别命名为“byte_”和“byte_”。

这两个文件共同构成了实现可靠比特流的关键代码。

使用protobuf实现序列化与反序列化

protobuf是用来干嘛的?protobuf是一种用于对结构数据进行序列化的工具,从而实现数据存储和交换。

(主要用于网络通信中收发两端进行消息交互。

所谓的“结构数据”是指类似于struct结构体的数据,可用于表示一个网络消息。

当结构体中存在函数指针类型时,直接对其存储或传输相当于是“浅拷贝”,而对其序列化后则是“深拷贝”。

)序列化:将结构数据或者对象转换成能够用于存储和传输的格式。

反序列化:在其他的计算环境中,将序列化后的数据还原为数据结构和对象。

从“序列化”字面上的理解,似乎使用C语言中的struct结构体就可以实现序列化的功能:将结构数据填充到定义好的结构体中的对应字段即可,接收方再对结构体进行解析。

在单机的不同进程间通信时,使用struct结构体这种方法实现“序列化”和“反序列化”的功能问题不大,但是,在网络编程中,即面向网络中不同主机间的通信时,则不能使用struct结构体,原因在于:(1)跨语言平台,例如发送方是用C语言编写的程序,接收方是用Java语言编写的程序,不同语言的struct结构体定义方式不同,不能直接解析;(2)struct结构体存在内存对齐和CPU不兼容的问题。

因此,在网络编程中,实现“序列化”和“反序列化”功能需要使用通用的组件,如 Json、XML、protobuf 等。

① 性能高效: 与XML相比,protobuf更小(3 ~ 10倍)、更快(20 ~ 100倍)、更为简单。

② 语言无关、平台无关: protobuf支持Java、C++、Python等多种语言,支持多个平台。

③ 扩展性、兼容性强: 只需要使用protobuf对结构数据进行一次描述,即可从各种数据流中读取结构数据,更新数据结构时不会破坏原有的程序。

Protobuf与XML、Json的性能对比:测试10万次序列化:测试10万次反序列化:protobuf 2 中有三种数据类型限定修饰符:required表示字段必选,optional表示字段可选,repeated表示一个数组类型。

其中, required 和 optional 已在 proto3 弃用了。

protobuf中常用的数据类型:下载protobuf压缩包后,解压、配置、编译、安装,即可使用protoc命令查看Linux中是否安装成功:使用protobuf时,需要先根据应用需求编写 文件定义消息体格式,例如:其中,syntax关键字表示使用的protobuf的版本,如不指定则默认使用 proto2;package关键字表示“包”,生成目标语言文件后对应C++中的namespace命名空间,用于防止不同的消息类型间的命名冲突。

然后使用 protobuf编译器(protoc命令)将编写好的 文件生成目标语言文件(例如目标语言是C++,则会生成 和 .h 文件),例如:其中:$SRC_DIR表示 文件所在的源目录; $DST_DIR表示生成目标语言代码的目标目录; 表示要对哪个文件进行解析; --cpp_out表示生成C++代码。

编译完成后,将会在目标目录中生成.h和文件,将其引入到我们的C++工程中即可实现使用protobuf进行序列化:在C++源文件中包含.h头文件,在g++编译时链接源文件即可:在protobuf源码中的/examples 目录下有官方提供的protobuf使用示例参考官方示例实现C++使用protobuf进行序列化和反序列化 :生成的.h 文件内容摘要:add_ :输出结果:三种序列化的方法没有本质上的区别,只是序列化后输出的格式不同,可以供不同的应用场景使用。

序列化的API函数均为const成员函数,因为序列化不会改变类对象的内容,而是将序列化的结果保存到函数入参指定的地址中。

文件中的option选项用于配置protobuf编译后生成目标语言文件中的代码量,可设置为SPEED, CODE_SIZE, LITE_RUNTIME 三种。

默认option选项为 SPEED,常用的选项为 LITE_RUNTIME。

三者的区别在于:① SPEED(默认值): 表示生成的代码运行效率高,但是由此生成的代码编译后会占用更多的空间。

② CODE_SIZE: 与SPEED恰恰相反,代码运行效率较低,但是由此生成的代码编译后会占用更少的空间,通常用于资源有限的平台,如Mobile。

③ LITE_RUNTIME: 生成的代码执行效率高,同时生成代码编译后的所占用的空间也非常少。

这是以牺牲Protobuf提供的反射功能为代价的。

因此我们在C++中链接Protobuf库时仅需链接libprotobuf-lite,而非protobuf。

SPEED 和 LITE_RUNTIME相比,在于调试级别上,例如 (&str;); 在 SPEED 模式下会利用反射机制打印出详细字段和字段值,但是 LITE_RUNTIME 则仅仅打印字段值组成的字符串。

因此:可以在调试阶段使用 SPEED 模式,而上线以后提升性能使用 LITE_RUNTIME 模式优化。

最直观的区别是使用三种不同的 option 选项时,编译后产生的 .h 中自定义的类所继承的 protobuf类不同:① protobuf 将消息里的每个字段进行编码后,再利用TLV或者TV的方式进行数据存储; ② protobuf 对于不同类型的数据会使用不同的编码和存储方式; ③ protobuf 的编码和存储方式是其性能优越、数据体积小的原因。

你可能想看:
« 上一篇
下一篇 »

相关推荐

FreeBasic:强大免费开源的64位basic编译器及应用优势

2025年05月10日

82阅读

脊柱侧弯矫正方法大盘点:运动康复、支具矫正等多种方式

2025年05月09日

85阅读

如何在winForm标题栏去掉标题文字且任务栏图标正常显示

2025年05月09日

84阅读

十一黄金周促销广告词大全,国庆购物狂欢等你来

2025年05月09日

77阅读

关闭快速编辑模式及插入模式,设置控制台指定文字颜色举例

2025年05月09日

63阅读

黄金搭档低糖高钙饮品包装及成分功效全解析,适合人群要知晓

2025年05月09日

91阅读