自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

YoungLeoo的博客

生命不息 折腾不止

  • 博客(13)
  • 收藏
  • 关注

原创 【Linux系统】内存管理(二)

内核如何管理内存?Linux的进程在内核中是由task_struct来实现的。该结构中有一个mm域指向这个进程所使用的进程描述符——mm_struct。进程描述符描述了虚拟内存的当前状态,它包含了我们感兴趣的两个字段:pgd和mmap,其中pgd指向第一级页表的基址,而mmap指向一个vm_area_struct(区域结构)的链表,其中每个vm_area_struct都描述了当前地址空间的一个区域。

2015-08-26 16:37:24 776

原创 【面试题之算法部分】深入快速排序

本篇文章我将讲述快速排序的基本思想,实现,和时间复杂度的深入分析。基本思想:选取待排序列中的某个元素t,然后按照与该元素的大小关系重新整理序列中的元素,使得整理后的序列中排在t以前的元素均小于t,排在t以后的元素均大于等于t,我们将t称为划分元素。此时可以保证此时t的位置一定和最终有序序列t的位置相同,故我们可以选取t以前和以后的两个子序列作为新的序列去做同样的处理。不断递归去处理直至每个元素都调整

2015-08-24 18:22:40 2219

原创 【面试题之算法部分】LCA最近公共祖先

问题描述:给定一棵二叉树T和两个节点u和v,找出u和v离根节点最近的公共祖先。首先我们将这个问题分成三种情况:情况一: 二叉树是二叉查找树。这种情况比较简单,将当前节点初始化为根节点,从当前节点开始,不断将当前节点的值和u节点的值、v节点的值作比较,如果当前节点值同时小于二者,则将当前节点的右孩子作为当前节点,继续比较;如果当前节点值同时大于二者,则将当前节点的左孩子作为当前节点,继续比较;如果当前

2015-08-24 16:28:23 929

原创 【面试题之算法部分】二叉树的遍历

前序遍历中序遍历 后序遍历

2015-08-24 15:45:30 2744

原创 【Linux系统】内存管理(一)

内存管理每个进程都有自己的虚拟内存地址空间,32位操作系统下是4GB的内存空间,这些虚拟内存通过页表映射到实际的物理内存,它们被操作系统的内核维护并被处理器使用。每个进程都有自己的页表,一旦虚拟地址被使用,它们会被所有运行在机器上的软件所使用,包括内核自身。因此虚拟地址空间必须留一些给内核专用(Linux下3G~4G的空间),这并不意味之内核使用如此多的物理内存,而只是意味着内核使用该段地址来映射它

2015-08-22 16:53:13 1311

原创 【Linux系统】进程管理

一.进程的定义和相关的概念进程就是出于执行期的程序和相关资源。包含:代码段、数据段、打开的文件、挂起的信号、内核内部数据、处理器状态、一个或多个具有内存映射的内存地址空间及一个或多个执行线程。线程是进程中活动的对象。每个线程拥有独立的程序计数器、进程栈、一组进程寄存器。操作系统提供两种虚拟机制: 1.虚拟处理器:让进程觉得自己在独享处理器 2.虚拟内存:让进程在分配和管理内存时觉得自己拥有整

2015-08-21 22:51:42 764

原创 【面试题之算法部分】LIS最长递增子序列

动态规划法:假设数组A中元素为{a0, a1, a2,……, ai, ……., aj,….., an} 设L(j)为以aj结尾的子数组序列的最长递增子序列的长度。 要用动态规划来求解,则必须找到递推关系式,即要找到当前状态L(j)与过去状态L(j-1)、L(j-2)、…..L(0)之间的关系。假设我们已经求出了L(j-1)、L(j-2)、…..L(0),那么如何得到L(j)呢,我们这样来做,要保

2015-08-20 23:50:33 628

原创 【面试题之算法部分】最长回文子串

暴力法:枚举中心位置 int LongestPalindrome(const char *s, int n){ if(s == NULL || n < 1) return -1; int i, j, k, max = 0; for(int i = 0; i < n; i++) { //回文子串为奇数的情况 for(int j = 0;

2015-08-20 23:26:34 793

原创 【面试题之算法部分】字符串的全排列

首先可以确定的是字符串全排列算法的时间复杂度至少是O(n!),我们采用递归算法来解决该问题a.n个元素的全排列 = n-1个元素的全排列 + 另一个元素作为前缀b.如果只有一个元素的全排列,说明已经排完,输出数组c.不断将每个元素作为第一个元素,然后以这个元素作为前缀,并将其余元素继续全排列,等到一趟排完,还需要还原数组,继续下一趟#include #include

2015-08-16 14:30:08 830

原创 【面试题之算法部分】最大和连续子数组

问题描述:给定一个数组A[0,1…n-1],求A的连续子数组,使该数组和最大一. 暴力法 分析:首先初始化要求的最大值maxSum为A[0],然后定义三个索引i、j、k,然后三层循环:第一层i从0遍历到n-1,第二层j从i遍历到n-1,第三层k从i遍历到j,求出A[i]到A[j]之间的元素的和,然后和maxSum作比较并更新maxSum。复杂度:时间复杂度为O(n^3),空间复杂度O(

2015-08-16 08:29:57 7979

原创 【网络编程】线程池中各线程的同步

使用pthread_cond_singal需要注意的地方:1,pthread_cond_signal在多处理器上可能同时唤醒多个线程,当你只能让一个线程处理某个任务时,其它被唤醒的线程就需要继续 wait,while循环的意义就体现在这里了,而且规范要求pthread_cond_signal至少唤醒一个pthread_cond_wait上 的线程,其实有些实现为了简单在单处理器上也会唤醒多个线

2015-08-14 15:34:06 634

原创 【网络编程】简单线程池的原理和实现

一. 什么是线程池?: 诸如web服务器、数据库服务器、文件服务器和邮件服务器等许多服务器应用都面向处理来自某些远程来源的大量短小的任务。构建服务器应用程序的一个过于简单的模型是:每当一个请求到达就创建一个新的服务对象,然后在新的服务对象中为请求服务。但当有大量请求并发访问时,服务器不断的创建和销毁对象的开销很大。所以提高服务器效率的一个手段就是尽可能减少创建和销毁对象的次数,特别是一些很耗资

2015-08-12 22:32:14 1061

原创 【面试题之概率部分】蓄水池抽样

相关面试题:1.n个数中随机取m个 n值非常大2.连续的网络流中等概率的抽取一个数据包3.长度为N的链表中(不知道N具体值)一次遍历随机取K个元素解法:让我们先来考察第一个问题:n个数中随机选取m个数(此时n值有可能不大)方法1——等概率抽取法我们最先想到也是最容易想到的是等概率抽取法,每次都随机在(0,n-1)之间抽取一个数,并与之前的数相比较,若相同,则

2015-07-21 21:34:59 1863

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除