signal与sigaction函数详解 Posted on 2018-01-04 | In 学习笔记 | Visitors: 概述信号是事件发生时对进程的通知机制。也可称为软件中断,信号与硬件中断的相似之处在于,都打断了程序执行的正常流程。大多数情况下无法预测信号到达的时间。进程可以向另一进程发送信号,也可以向自身发送信号,多数信号都是源于内核,引发内核向目的进程发送信号的各类事件如下: Read more »
归并排序 Posted on 2018-01-02 | In 数据结构与算法 | Visitors: 概述堆排序充分利用了完全二叉树的深度为floor(logn)+1的特性,效率非常高,但是堆的结构设计非常复杂,归并排序就是直接利用完全二叉树进行排序的简单的方法。归并排序的原理是假设初始序列有n个记录,则可以看作是n个有序子序列,每个子序列的长度为1,然后两两归并,……,如此重复,直到得到一个长度为n的有序序列,这种排序方法称为2路归并排序 Read more »
浅谈内存分配 Posted on 2017-12-31 | In 学习笔记 | Visitors: 许多系统程序需要为动态数据结构分配额外内存,此类数据结构的大小在程序运行时才能确定。本文介绍下在堆或者堆栈上分配内存的函数 Read more »
浅谈树和二叉树(二) Posted on 2017-12-31 | In 数据结构与算法 | Visitors: 线索二叉树概述遍历二叉树是以一定的规则将二叉树中的结点排列成一个线性序列,得到二叉树中结点的先序序列,中序序列和后序序列。这实质上是对一个非线性序列进行线性化操作,使得每个结点(除第一个和最后一个)都有唯一的前驱和后继。 Read more »
浅谈树和二叉树(一) Posted on 2017-12-29 | In 数据结构与算法 | Visitors: 树基本术语 结点拥有的子树称为结点的度 度为0的结点称为叶子结点或终端结点 树的度是树内各结点的度的最大值 结点的层次从根开始定义,根为第一层,根的孩子为第二层,若某结点的层次为m,则其子树的根就在第m+1层。 树中结点的最大层次称为树的深度或高度 一棵深度为k且有2^k-1个结点的二叉树称为满二叉树,其每一层上的结点数都是最大结点数 从根节点开始,从上到下,从左到右依次填充的二叉树称为完全二叉树,其叶子节点只可能出现在层次最大的两层上面 Read more »
进程与虚拟内存 Posted on 2017-12-27 | In 操作系统 | Visitors: 进程内存布局从内核角度看,进程由用户内存空间和一系列的内核数据结构组成,其中用户内存空间包含了程序代码以及代码所使用的变量,而内核数据结构则用于维护进程状态信息。每个进程所分配的内存由很多部分组成,通常称之为“段”,其内容如下: Read more »
数据对齐 Posted on 2017-12-22 | In 语言 | Visitors: 概述许多计算机系统对基本数据类型的合法地址做出了一些限制,要求某种类型对象的地址必须是某个值K(通常是2,4,8)的倍数。这种对齐简化了形成处理器和内存系统之间接口的硬件设计。比如一个处理器每次从内存中读取八个字节,如果保证每个double类型数据的地址对齐成8的倍数,那么就可以用一个内存操作完成读写值,否则要进行两次读写操作,因为对象可能放在两个8字节内存块中 Read more »