-
深度优先 搜索 DFS 深搜 及广度优先搜索 BFS 广搜
所属栏目:[语言] 日期:2022-11-01 热度:9844
深度优先搜索的过程类似于树的先序遍历,首先从例子中体会深度优先搜索。例如图 1 是一个无向图,采用深度优先算法遍历这个图的过程为:
首先任意找一个未被遍历过的顶点,例如从 V1 开始,由于 V1 率先访问[详细] -
图的邻 接多层表存储结构
所属栏目:[语言] 日期:2022-11-01 热度:5601
前面讲过,无向图的存储可以使用邻接表,但在实际使用时,如果想对图中某顶点进行实操(修改或删除),由于邻接表中存储该顶点的节点有两个,因此需要操作两个节点。
为了提高在无向图中操作顶点的效率,[详细] -
伙伴系统管控动态内存
所属栏目:[语言] 日期:2022-10-31 热度:1628
前面介绍了系统在分配与回收存储空间时采取的边界标识法。本节再介绍一种管理存储空间的方法——伙伴系统。
伙伴系统本身是一种动态管理内存的方法,和边界标识法的区别是:使用伙伴系统管理的[详细] -
无用单元采集 垃圾回收机制
所属栏目:[语言] 日期:2022-10-31 热度:9740
通过前几节对可利用空间表进行动态存储管理的介绍,运行机制可以概括为:当用户发出申请空间的请求后,系统向用户分配内存;用户运行结束释放存储空间后,系统回收内存。这两部操作都是在用户给出明确的指令后,[详细]
-
内存紧缩 内存碎片化处置
所属栏目:[语言] 日期:2022-10-31 热度:692
前边介绍的有关动态内存管理的方法,无论是边界标识法还是伙伴系统,但是以将空闲的存储空间链接成一个链表,即可利用空间表,对存储空间进行分配和回收。
本节介绍另外一种动态内存管理的方法,使用这种[详细] -
何为查找表
所属栏目:[语言] 日期:2022-10-31 热度:8658
在日常生活中,几乎每天都要进行一些查找的工作,在电话簿中查阅某个人的电话号码;在电脑的文件夹中查找某个具体的文件等等。本节主要介绍用于查找操作的数据结构——查找表。
查找表是由同一[详细] -
顺序查找算法解说 包含C语言实现代码
所属栏目:[语言] 日期:2022-10-31 热度:8498
通过前面对静态查找表的介绍,静态查找表即为只做查找操作的查找表。
静态查找表既可以使用顺序表表示,也可以使用链表结构表示。虽然一个是数组、一个链表,但两者在做查找操作时,基本上大同小异。
[详细] -
socket缓冲区以及阻塞模式说明
所属栏目:[语言] 日期:2022-10-27 热度:3660
在《socket数据的接收和发送》一节中讲到,可以使用 write()/send() 函数发送数据,使用 read()/recv() 函数接收数据,本节就来看看数据是如何传递的。
socket缓冲区
每个 socket 被创建后,都会分配两[详细] -
send recv 和write read 发送数据与接收数据
所属栏目:[语言] 日期:2022-10-27 热度:6036
在 Linux 和 Windows 平台下,使用不同的函数发送和接收 socket 数据,下面我们分别讲解。
Linux下数据的接收和发送
Linux 不区分套接字文件和普通文件,使用 write() 可以向套接字中写入数据,使用 r[详细] -
listen和accept函数 使套接字进入监听状态并响应客户端请求
所属栏目:[语言] 日期:2022-10-27 热度:2815
对于服务器端程序,使用 bind() 绑定套接字后,还需要使用 listen() 函数让套接字进入被动监听状态,再调用 accept() 函数,就可以随时响应客户端的请求了。
listen() 函数
通过 listen() 函数可以让套[详细] -
bind 和connect 函数 绑定套接字并创立连接
所属栏目:[语言] 日期:2022-10-27 热度:7633
socket() 函数用来创建套接字,确定套接字的各种属性,然后服务器端要用 bind() 函数将套接字与特定的 IP 地址和端口绑定起来,只有这样,流经该 IP 地址和端口的数据才能交给套接字处理。类似地,客户端也要用[详细]
-
介于UDP的服务器端和客户端
所属栏目:[语言] 日期:2022-10-27 热度:923
前面的文章中我们给出了几个 TCP 的例子,对于 UDP 而言,只要能理解前面的内容,实现并非难事。
UDP中的服务器端和客户端没有连接
UDP 不像 TCP,无需在连接状态下交换数据,因此基于 UDP 的服务器端[详细] -
Makefile文件中包括哪些规则
所属栏目:[语言] 日期:2022-10-26 热度:5366
想要书写一个完整的 Makefile文件,需要了解 Makefile 的相关的书写规则。我们已经知道了 Makefile 描述的是文件编译的相关规则,它的规则主要是两个部分组成,分别是依赖的关系和执行的命令,其结构如下所示:[详细]
-
Makefile的工作进程
所属栏目:[语言] 日期:2022-10-26 热度:1238
简单了解一下 Makefile 书写规则之后,再来深入研究一下 Makefile 的是怎样工作的?当我们在执行 make 条命令的时候,make 就会去当前文件下找要执行的编译规则,也就是 Makefile 文件。我们编写 Makefile 的时可[详细]
-
Makefile通配符的利用
所属栏目:[语言] 日期:2022-10-26 热度:1047
Makefile 是可以使用 shell 命令的,所以 shell 支持的通配符在 Makefile 中也是同样适用的。 shell 中使用的通配符有:"*","?","[...]"。具体看一下这些通配符的表示含义和具体的使用方法。
通配符 使[详细] -
Makefile变量的定义和运用
所属栏目:[语言] 日期:2022-10-26 热度:4438
变量对于我们来说是不陌生的,在学习各种编程语言时会经常用到。就拿C语言来说,变量的使用是十分常见的,变量可以用来保存一个值或者是使用变量进行运算操作。Makefile 中的变量也是这样,我们可以利用它来表示[详细]
-
Makefile自主化变量
所属栏目:[语言] 日期:2022-10-26 热度:1851
关于自动化变量可以理解为由 Makefile 自动产生的变量。在模式规则中,规则的目标和依赖的文件名代表了一类的文件。规则的命令是对所有这一类文件的描述。我们在 Makefile 中描述规则时,依赖文件和目标文件是变[详细]
-
GDB watch命令 监控变量值的更变
所属栏目:[语言] 日期:2022-10-25 热度:1786
《GDB break命令》一节,给大家介绍了使用 break 命令在程序某一行的位置打断点。但还有一些场景,我们需要监控某个变量或者表达式的值,通过值的变化情况判断程序的执行过程是否存在异常或者 Bug。这种情况下,[详细]
-
GDB break b 设定断点
所属栏目:[语言] 日期:2022-10-25 热度:9443
默认情况下,程序不会进入调试模式,代码会瞬间从开头执行到末尾。要想观察程序运行的内部细节(例如某变量值的变化情况),可以借助 GDB 调试器在程序中的某个地方设置断点,这样当程序执行到这个地方时就会停[详细]
-
gdb run r 命令 开启程序
所属栏目:[语言] 日期:2022-10-25 热度:9344
使用 GDB 调试器调试程序的过程,其实就是借助 GDB 调试器来监控程序的执行流程,进而发现程序中导致异常或者 Bug 的代码。通过前面章节的学习,读者已经学会了如何启动 GDB 调试器,在此基础上,本节继续为大[详细]
-
GDB下载和安装教学
所属栏目:[语言] 日期:2022-10-25 热度:7685
基于 Linux 系统的免费、开源,衍生出了多个不同的 Linux 版本,比如 Redhat、CentOS、Ubuntu、Debian 等。这些 Linux 发行版中,有些默认安装有 GDB 调试器,但有些默认不安装。
判断当前 Linux 发行版[详细] -
GCC -S项目 编译非汇编文件
所属栏目:[语言] 日期:2022-10-25 热度:8574
我们知道,从 C、C++源代码生成可执行文件需要经历 4 个过程,分别为预处理、编译、汇编和链接。其中,《GCC -E选项:对源程序做预处理操作》一节以 demo.c 源程序文件为例,演示了如何使用 GCC 执行预处理操作,[详细]
-
C++ STL版本有什么
所属栏目:[语言] 日期:2022-10-24 热度:4938
自 1998 年 ANSI/ISO C++ 标准正式定案,C++ STL 规范版本正式通过以后,由于其实开源的,各个 C++ 编译器厂商在此标准的基础上,实现了满足自己需求的 C++ STL 泛型库,主要包括 HP STL、SGI STL、STLport、PJ [详细]
-
C++ STL基础组成 6大组件+13个头文件
所属栏目:[语言] 日期:2022-10-24 热度:6700
通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。
另外,在惠普实验室最初发行的版本中,STL 被组[详细] -
GNU开源精神及其发展进程
所属栏目:[语言] 日期:2022-10-24 热度:4808
通过前面对 STL 各种“民间”版本的介绍我们知道,全世界所有的 STL 实现版本都源于 Stepanov 和 Meng Lee 完成的原始版本(也就是 HP STL),该版本的每一个头文件中都有一份声明,即允许任何人任意运[详细]
