08 2015 档案
摘要:内核态与用户态是操作系统的两种运行级别,一个运行在内核模式的进程可以执行指令集中的任何指令,并且可以访问系统中任何存储器位置。用户模式中的进程不允许执行特权指令,比如停止处理器、改变模式位,或者发起一个I/O操作。也不允许用户模式中的进程直接引用地址空间中内核区内的代码和数据。 换句话说,当一...
阅读全文
摘要:Given a binary tree, return all root-to-leaf paths.For example, given the following binary tree: 1 / \2 3 \ 5All root-to-leaf paths are:["1->...
阅读全文
摘要:Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example,[1,1,2] have the following unique pe...
阅读全文
摘要:Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1...
阅读全文
摘要:回溯是遍历搜索空间所有可能组态的方法。这些组态也许代表对象的所有排列或这是构建对象集合的所有可能的方法(子集)。其他情况包括列举一个图的所有生成树,两个节点的所有路径或是把节点分类成不同颜色的所有不同的方式。 这些问题有一个共同的难点就是我们必须每次产生一个可能的组态。避免重复或遗漏组态的方法...
阅读全文
摘要:图的深度优先搜索类似于树的深度优先搜索。不同的是,图中可能包括循环,即我们有可能重复访问节点。为了避免访问已经访问过的节点,我们要使用一个布尔变量的数组。 例如,在下图中,我们从节点2开始访问。当访问到节点0,我们寻找它的所有紧接节点。节点2也属于节点0的邻接节点。如果我们没有标记访问的节点,...
阅读全文
摘要:图的广度优先搜索(BFS)与树的广度优先搜索类似。与树不同的是,图中可能存在循环。所我们可能会再次访问到同一个节点。为了表面多次处理同一个节点,我们要布尔变量数据记录节点有没有被访问过。为了简化,我们假设所有的节点都是从根节点可达的。 比如在下图中,我们从节点2出发。当我们访问到节点0时,我们...
阅读全文
摘要:在TCP连接中假设发送方一开始便向网络发送多个报文段,直到达到接收方通告的窗口大小为止。当发送方和接收方处于同一个区域网段时,这种方式是可以的。但是如果发送方和接收方之间存在多个路由器和速率较慢的链路时,就有可能出现问题。 一些中间路由器必须缓存分组,并有可能耗尽存储器空间。 现在,TCP需...
阅读全文
摘要:希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序;随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止。 希尔排序使用一个序列h1h2,...,ht,叫作增量序列(increment sequence)。只要h1=1,任何增量序列都是...
阅读全文
摘要:在linux设计并发网络程序,主要有如下几种模型:Apache模型(Process Per Connection, PPC)、TPC(Thread Per Connection)模型,select机制、poll机制以及epoll。1. PPC/TPC模型 这两种模型思想类似,每一个新的链接就用...
阅读全文
摘要:本文转自http://blog.csdn.net/whuslei/article/details/6442755。代码部分有变动。排序算法经过了很长时间的演变,产生了很多种不同的方法。对于初学者来说,对它们进行整理便于理解记忆显得很重要。每种算法都有它特定的使用场合,很难通用。因此,我们很有必要对所...
阅读全文
摘要:lsmod命令用来显示已被内核加载的模块的状态描述: lsmod命令可以美观地显示/prco/module中的内容,这些内容是被已被内核加载模块的信息。 使用lsmod之后,系统会显示出目前已经存在于内核当中的模块,显示的内容包括: 1. 模块名称 2. 模块的大小(Size) 3. ...
阅读全文
摘要:ethtool是用于查询及设置网卡参数的命令. 如果command not found可以用apt-get/yum添加。主要参数: ethtool ethX//查看ethX设备属性 ethtool -h //显示帮助信息 ethtool -p|--identity ethX //识别...
阅读全文
摘要:来自《Effective C++》条款07:为多态声明virtual析构函数 当derived class对象经由一个base class指针被删除,而该base class带着一个non-virtual析构函数,其结果未有定义——实际执行时通常发生的是对象的derived成分没被销毁,而其基...
阅读全文
摘要:引用: 引用(reference)是为对象起了另外一个名字,引用类型应用(refers to)另外一种类型。通过将声明符写成&d的形式来定义引用类型,其中d是声明的变量名。 一般初始化变量时,初始值会被拷贝到新建的对象中。然而定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用...
阅读全文
摘要:1 虚函数对应一个vtable,这大家都知道,可是这个vtable其实是存储在对象的内存空间的。问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,无法找到vtable,所以构造函数不能是虚函数。2. 构造函数不需要是虚函数,也不允许是虚函数...
阅读全文
摘要:这个问题来自于《Effective C++》条款9:永远不要在构造函数或析构函数中调用虚函数 。 假设有如下代码: class Transaction {// 所有交易的基类 public: Transaction(); virtual void log...
阅读全文
摘要:数据库是长期存储在计算机内有组织的大量的共享数据的集合。它可以提供各种用户共享,具有最小冗余度和较高的数据独立性。 数据库系统的核心和基础是数据模型。 数据模型是对现实世界数据特征的抽象,是用来描述数据、组织数据和对数据进行操作的。根据模型应用目的的不同,数据模型分为两类,第一类是概念模...
阅读全文
摘要:多个进程可以共享系统中的各种资源,但其中许多资源一次只能为一个进程使用,我们把一次仅允许一个进程使用的资源称为临界资源,许多物理设备都属于临界资源,如打印机等。 Linux下进程间通信有如下几种方式: 1)管道(Pipe)及有名管道(named pipe):管道可用于具有亲缘关系进程间的通信...
阅读全文
摘要:这题是《剑指offer》面试题20。不过个人感觉下面这篇文章的讲解更好:http://www.cnblogs.com/python27/ 题目:给定一个矩阵,从外向内顺时针打印矩阵中的每一个数字。例如:给定矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 ...
阅读全文
摘要:当多个线程共享相同的内存时,需要确保每个线程看到一致的数据视图。如果每个线程使用的变量都是其他线程不会读取和修改的,那么就不存在一致性问题。同样,如果变量是只读的也不会有一致性问题。但是,当一个线程可以修改变量,其他线程也可以读取或者修改的时候,我们就需要对这些线程进行同步,确保它们在访问变量的...
阅读全文
摘要:所谓死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外作用,这些进程都将无法向前推进。1. 死锁产生的原因 1)进程推进的顺序不当 2)系统资源的不足 3)系统资源分配不当2. 死锁产生的必要条件 产生死锁必须同时满足一下四个条件,只要其中任一条件不成立,死锁就不会发生。 ...
阅读全文
摘要:$? #上一个命令执行后所回传的值,当我们执行某些命令时,这些命令都会回传一个执行后的代码。一般来说,如果成功执行该命令则会回传一个0值。如果执行过程发生错误,就会回传“错误代码”$$ #代表目前这个Shell的线程代号,即所谓的PID(Process ID)$@ #代表所有的参数$0 #执...
阅读全文
摘要:哈希表的基本概念 哈希表,也叫散列表,它是基于快速存取的角度设计的,是一种典型的“空间换时间”的做法。哈希表是普通数组的一种推广,因为数组可以直接寻址,故可在O(1)时间内访问数组的任意元素,其中它的插入和删除的时间复杂度也是O(1)。 哈希表是根据关键字(Key Value)而直接进行访问的数据结
阅读全文
摘要:TCP为何采用三次握手来建立连接,若采用两次握手可以吗,请说明理由? 不可以。采用三次握手是为了防止失效的连接请求报文段突然又传送到服务器,从而发生错误。当客户端发出的连接请求报文段由于某些原因没有及时到达服务器,而客户端在等待一段时间后,又重新向服务器发送连接请求,且建立成功,顺序完成数据传输,...
阅读全文
摘要:如果我们把二叉树视为一个图,父子节点之间的连线视为双向的,我们姑且定义为“举例”为两节点之间边的个数。写一个程序求一颗二叉树中相距最远的两个节点之间的距离(《编程之美》3.8)思路:如果两个节点相距最远,一定是两个叶子节点,或者是一个叶子节点到它的根节点。 根据相距最远的两个节点一定是叶子节...
阅读全文
摘要:C/C++提供了众多的字符串处理函数。它们声明在中。如下所示:strlen(s)返回s的长度,不包括字符串结束符nullstrcmp(s1,s2)比较两个字符串s1和s2是否相同,若s1与s2相等,返回0;若s1大于s2,返回正数;若s1小于s2,则返回负数strcat(s1,s2) 将字符串...
阅读全文
摘要:Given a binary tree, determine if it is height-balanced.For this problem, a height-balanced binary tree is defined as a binary tree in which the depth...
阅读全文
摘要:Follow up for N-Queens problem.Now, instead outputting board configurations, return the total number of distinct solutions.思路:与http://www.cnblogs.com/...
阅读全文
摘要:The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all d...
阅读全文
摘要:移动: Ctrl + A: 移动到当前编辑的命令行首, Ctrl + E: 移动到当前编辑的命令行尾, Ctrl + F 或 ->:按字符右移(往命令行尾部方向,前移) Ctrl + B 或 <-:按字符左移(往命令行尾部方向,后移) Alt + F: 按单词右移 (往命令行尾部方向,前移) Alt
阅读全文
摘要:Ping是Windows、Unix和Linux系统下的一个命令。ping也属于一个通信协议,是TCP/IP协议的一部分。利用“ping”命令可以检查网络是否连通。如果ping不通则可以通过以下方式寻找故障原因: 1. ping 127.0.0.1 127.0.0.1是本地循环地址,如果本...
阅读全文
摘要:求链表的中间节点,如果链表中节点总数为奇数,返回中间节点;如果节点为偶数,返回返回中间两个节点的任意一个。 思路:我们可以定义两个指针,同时从链表的头节点出发,一个指针一次走一步,另一个指针一次走两步。当走的快的指针走到链表末尾时,走的 struct ListNode { int va...
阅读全文
浙公网安备 33010602011771号