摘要: 1.close()函数:立即返回到进程intclose(intsockfd);//返回成功为0,出错为-1.close 一个套接字的默认行为是把套接字标记为已关闭,然后立即返回到调用进程,该套接字描述符不能再由调用进程使用,也就是说它不能再作为read或write的第一个参数,然而TCP将尝试发送已... 阅读全文
posted @ 2015-05-28 11:08 kkshaq 阅读(3292) 评论(0) 推荐(0) 编辑
摘要: 1、最长公共子串Longest-Common-Substring:有两个字符串,求这两个字符串的最长公共子串,要求子串是连续的/ 最长公共子串 DPint dp[100][100];void LCS_dp(char * X, char * Y) { int xlen = strlen(X); ... 阅读全文
posted @ 2015-05-27 11:35 kkshaq 阅读(342) 评论(0) 推荐(0) 编辑
摘要: heap堆分配在用户层面:malloc函数用于heap内存分配void* malloc(size_t size); 进程的虚拟内存地址布局:对用户来说,主要关注的空间是User Space。将User Space放大后,可以看到里面主要分为如下几段:Code:这是整个用户空间的... 阅读全文
posted @ 2015-05-25 16:36 kkshaq 阅读(6729) 评论(0) 推荐(0) 编辑
摘要: 一般在内核术语中的“碎片”都是基于物理内存而言的,我没有太看懂你得出碎片是针对地址空间这个结论的逻辑。但我认为,既然你知道了malloc是用户空间调用的,那么你所谓的碎片也是从用户空间的视角而言的,但对于用户空间,看到的只有地址空间,其访问的所有地址都是要经过页表的转换后才访问的物理页面,而且mal... 阅读全文
posted @ 2015-05-25 11:33 kkshaq 阅读(3149) 评论(0) 推荐(1) 编辑
摘要: 1.为什么需要连续的物理内存:Linux内核管理物理内存是通过分页机制实现的,它将整个内存划分成无数个4k(在i386体系结构中)大小的页,从而分配和回收内存的基本单位便是内存页了。利用分页管理有助于灵活分配内存地址,因为分配时不必要求必须有大块的连续内存[3],系统可以东一页、西一页的凑出所需要的... 阅读全文
posted @ 2015-05-24 22:25 kkshaq 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 内核态与用户态是操作系统的两种运行级别,intel cpu提供Ring0-Ring3三种级别的运行模式。Ring0级别最高,Ring3最低内核态可以拥有比用户态更大的权限处于内核态的进程,可以访问用户进程空间(是虚拟地址空间),就是通过进程的页表(进程本身就是一个4G虚拟地址空间。其中用户空间的3G... 阅读全文
posted @ 2015-05-24 22:14 kkshaq 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 快速排序2(算法交换链表节点,平均时间复杂度O(nlogn),不考虑递归栈空间的话空间复杂度是O(1))这里的partition,我们选取第一个节点作为枢纽元,然后把小于枢纽的节点放到一个链中,把不小于枢纽的及节点放到另一个链中,最后把两条链以及枢纽连接成一条链。这里我们需要注意的是,1.在对一条子... 阅读全文
posted @ 2015-05-20 22:41 kkshaq 阅读(1071) 评论(0) 推荐(0) 编辑
摘要: 快排不适合同于链表,但是可以实现,时间复杂度为o(nlgn)平均时间复杂度O(nlogn),不考虑递归栈空间的话空间复杂度是O(1))分析:由于单链表是没有prev指针的,所以跟数组一样的low,high指针就不适合单链表方法一:不移动元素节点本身,只移动元素的值 /... 阅读全文
posted @ 2015-05-20 21:00 kkshaq 阅读(3016) 评论(0) 推荐(0) 编辑
摘要: 注意:快排是不稳定算法无论是low,还是high,都是a[low]=pivot,等于号是包含的,也就是出现元素与pivot相等的时候,是不移动这个相等的元素的#includeusing namespace std;int Partition(int*arr,int low,int high);vo... 阅读全文
posted @ 2015-05-20 19:36 kkshaq 阅读(190) 评论(0) 推荐(0) 编辑
摘要: 思想:把待排序的链表分为已经排序的链表,和剩余未排序的链表例如:3->4->1->5->2->NULL已经排序完毕的的链表:(从第一个数开始) 3->NULL 未排序完毕的链表:4->1->5->2 用p表示还未排序的剩余链表的首节点例如:3->4->NUL... 阅读全文
posted @ 2015-05-20 18:40 kkshaq 阅读(451) 评论(0) 推荐(0) 编辑