- 博客(14)
- 资源 (3)
- 收藏
- 关注
转载 google_protobuf数据类型
原文链接:[google_protobuf数据类型(https://blog.youkuaiyun.com/superbfly/article/details/17920383)要通信,必须有协议,否则双方无法理解对方的码流。在protobuf中,协议是由一系列的消息组成的。因此最重要的就是定义通信时使用到的消息格式。Protobuf消息定义消息由至少一个字段组合而成,类似于C语言中的结构。每个字段...
2019-01-21 11:47:26
308
转载 STL — Set/Multiset容器
1.1、Set容器基本概念Set的特性是,所有元素都会根据元素的键值自动被排序。Set的元素不像map那样可以同时拥有实值和键值,set的元素即是键值又是实值。set不允许两个元素有相同的键值。我们可以通过set的迭代器改变set元素的值吗?不行,因为set元素值就是其键值,关系到set元素的排序规则。如果任意改变set元素值,会严重破坏set组织,换句话说,set的iterator是一种co...
2019-01-07 00:08:44
106
转载 STL — List容器
1、List容器基本概念链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点组成,结点可以在运行时动态生成。每个结点包括两部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相较于vector的连续性空间,list就显得复杂许多,它的好处是每次插入或者删除一个元素,就是配置或者释放一个元素的空间。因此,list...
2019-01-06 23:21:28
143
转载 STL — Stack/Queue容器
1.1、stack容器基本概念stack是一种先进后出(First In Last Out,FIFO)的数据结构,它只有一个出口,形式如图所示。stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有其他任何方法可以存取stack的其他元素。stack不允许遍历行为。有元素入栈的操作称为push,将元素推出stack的操作称为pop。1.2、stack没有迭代器stac...
2019-01-03 00:14:02
89
转载 STL — Deque容器
1、deque容器基本概念vector容器是单向开口的连续内存空间,deque则是一种双向开口的连续线性空间。所谓的双向开口,意思是可以在头尾两端分别做元素的插入和删除,当然,vector容器也可以在头尾两端插入元素,但是在其头部操作效率奇差(单向开口,需要移动数据),无法北接受。Deque容器和vector容器最大的差异,一在于deque允许使用常数项时间对头端进行元素的插入和删除。二在于...
2019-01-02 23:45:01
138
转载 STL — Vector容器
1、Vector容器基本概念vector的数据安排以及操作方式,与array非常相似,两者的唯一差别在于空间的运用的灵活性。Array是静态空间,一旦配置了就不能改变,要换大一点或者小一点的空间,可以,一切琐碎得由自己来,首先申请一块新的空间,然后将旧的空间里的数据搬移到新空间,在释放原来的空间。Vector是动态空间,随着元素的加入,它的内部机制会自动扩充空间以容纳新元素,不需要用户去管理内存...
2019-01-02 22:58:52
128
转载 STL — 简介
STL — 简介1、STL概论长久以来,软件界一直希望建立一种可重复利用的东西,以及一种得以制造出“可重复运用的东西”的方法,让程序猿的心血不止于随时间的迁移,人事变动而烟消云散,从函数、类、函数库、类库、各种组件,从模块化设计到面向对象,为的就是复用性的提升。复用性必须建立在某种标准之上,但是在许多环境下,就连软件开发最基本的数据结构和算法都未能有一套标准。大量程序猿被迫从事大量重复的工作...
2019-01-01 23:49:46
199
转载 Linux文件空洞与稀疏文件
Linux文件空洞与稀疏文件<font color=Blue>**文件空洞:**<font>文件操作,当lseek操作文件偏移量大于文件当前长度,在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞,这一点时允许的。位于文件中但没有写过的字节都被读为0。该段为0的长度是否占用磁盘存储空间,取决于文件系统的实现。<font color=Blue>**稀疏文件:**<font>稀疏文件
2017-10-29 22:53:56
601
原创 概念——静态库/动态库
库通俗的说就是把一些常用函数的目标文件打包在一起,提供相应函数的接口,便于程序员使用。库是别人写好的现有的,成熟的,可以复用的代码,我们只需要知道其接口如何定义,便可以自如使用。现实中每个程序都要依赖很多基础的底层库,不可能每个人的代码都从零开始,因此库的存在意义非同寻常。比如我们常用的printf函数,就是c标准库提供的函数。我们在使用只需要包含相应的头文件就可以使用(非静态编译还要有相应的库文
2017-10-11 20:57:33
189
原创 概念——内存空间分段
**BSS段:**bss segment,通常是指用来存放程序中未初始化的全局变量的一块内存区域。**数据段:**data segment,通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。**代码段:**code segment,通常是指用来存放程序执行代码的一块内存区域。1).这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可
2017-10-11 20:54:36
847
原创 程序调试
1、查看时候是最新代码编译生成的可执行文件/库,查看是否有自己新加的代码strings a.out | grep “my add code” 2、查看库/可执行文件依赖了哪些库ldd libxxx.a3、查看编译后的可执行文件中的符号信息,如函数名编译后变成了什么nm a.out——binutil工具4、gdb常用命令记录
2017-10-11 20:44:51
245
原创 vim配色指南
vim配色 1、查看本机的配色文件,所有配色均是以.vim结束的。ls /usr/share/vim/vim73/colors2、进入用户主目录cd ~3、创建配置文件.vimrc,将文件中内容设置成下面形式set nucolorscheme eveningsyntax on注:其中evening是第一步中查出来的
2017-10-11 20:37:34
232
原创 Python语法学习笔记
Python浅拷贝和深拷贝: python中对象的赋值实际上是对象的引用。 浅拷贝,拷贝了对象,但对于对象中的元素,依然使用引用。 如果希望拷贝一个容器对象及其所有元素(包含元素的子元素),使用copy.deepcopy。 注意: 1.对于非容器类型(如数字、字符串、和其他原子类型的对象)没有被拷贝一说 2.如果元组变量只
2016-01-06 22:30:41
169
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人