代码改变世界

阅读排行榜

STL源码剖析之序列式容器Heap及Priority Queue

2011-06-11 09:55 by Aga.J, 716 阅读, 收藏,
摘要: 50 heap Heap的背景是建立在优先队列的基础上,priority queue允许我们任意的插入一个元素,但是会自动将元素进行排序,使得取出时一定是从优先级最高的元素开始取。我们可以考虑使用list这种数据结构完成priority queue,也就是说,我们可以轻松的完成插入(因为list其实是线性链表),但是我们要取得list中的极值时,则需要对整个list进行遍历。或者我们可以这样考虑,将元素插到list的合适位置,这样一来,虽然很容易取得极值,但是我们的搜索插入也是需要线性搜索。 很自然的想到二分法来减少复杂度,也就是使用二叉搜索树,这样插入和求极值都值需要O(logN)的复杂度, 阅读全文

《深入理解Linux内核》学习笔记-第一章

2011-08-26 01:11 by Aga.J, 709 阅读, 收藏,
摘要: 第一章 绪论(1) 类Unix操作系统采用“进程/内核”的模式,每个进程都自以为它是系统中唯一的进程,可独占操作系统所提供的服务,只要进程发出系统调用,硬件就会把特权模式由用户态转变为内核态,然后进程开始执行一个内核过程,这个过程的执行被局限于一个非常小的内核范围内,一旦请求被满足,内核过程迫使返回用户态,进程执行下一条指令(2) Unix文件是以一列字节组成的信息载体,内核不解释文件内容(3) unix的每个进程都有一个当前的工作目录,它属于进程执行上下文,标志出进程所用的当前目录(4) Unix文件类型包括:普通文件,目录,符号链接,块设备文件,字符设备文件,管道,命名管道,套接字(5) 阅读全文

分治算法的学习笔记

2011-04-14 00:22 by Aga.J, 699 阅读, 收藏,
摘要: 分治算法一个简单的可以利用分治思想来解决的问题是在一个一维数组中找到最大值和最小值,最暴力的做法就是分两次完成,第一次从数组中找到最大值,第二次从数组中找到最小值。这种方法并不高效,比较次数多,而原因是 在选择最大值,最小值的时候是“孤立”的进行的,并不利用上次比较的信息【重点,利用上次比较的信息!】。使用分治法可以避免这个缺点。算法实现如下:Void getMaxAndMin(int list[],int &max, int &min, int low, int high) //low,high是分治的必须{If(low == high ) { max= list[low]; 阅读全文

C++中include头文件到底会发生什么事?

2011-04-24 20:50 by Aga.J, 689 阅读, 收藏,
摘要: 当xx.c文件在被编译的时候,第一步要做的就是预处理,而我们知道预处理会处理宏定义,条件编译,和头文件。但是到底是如何处理头文件的呢?预处理的最终结果可以看做是把头文件中的所有内容都放到xx.c文件中(当然这个是个递归过程)。这样一来,编译会花费更加长的时间,因为在编译器最终分析final.c的文件中的词法和语法时,它需要从头到尾一行一行的处理,所以xx.c文件中的真正需要执行的代码,可能需要经过很多行无效的处理后才到达。这样也提示我们不要随便将c文件需要的头文件include放在其对应的h文件中,这样会使得其他c文件include该h文件时带来不必要的开销。 更加详细的内容,请看这个博客h. 阅读全文

libevent 和 memcached 源码学习

2011-10-20 21:16 by Aga.J, 658 阅读, 收藏,
摘要: Libevent记录下学习日期和学习的东西Memcached发现一个日本人写的pdf,由浅到深,很好的入门资料。http://tech.idv2.com/2008/08/17/memcached-pdf/一个下午把memcached的源码的执行流程和memcached基本实现方法读懂了,memcached是个不错的东西,但是代码结构比较乱!接下来就是从源码中抽取出精华,充分理解而不是只知道memcached的思想,不可只知道大概怎么实现。2011-10-30 已经很熟悉memcached的代码,并且整理出线程那块的代码。 阅读全文
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 33 下一页