上一页 1 2 3 4 5 6 ··· 10 下一页
摘要: 二叉树的递归遍历算法非常漂亮和易读,但是非递归算法就没那么容易懂了,尤其是后序遍历的非递归算法。一. 前序遍历 1 void PreOrderTraverse(Node *root) 2 { 3 stack<Node *> ns; 4 Node *n=root; 5 while(n!=NULL || !ns.empty()) 6 { 7 if(n!=NULL) 8 { 9 print(n); 10 ns.push(n);11 n=n->pLeft;... 阅读全文
posted @ 2013-03-20 17:08 NeilHappy 阅读(320) 评论(0) 推荐(1) 编辑
摘要: 僵尸进程就是父进程fork之后并没有wait子进程。在子进程退出的时候,内核释放该进程所有的资源,比如文件描述符,内存,等等,但是依然为该进程保留一定的信息,只有该进程的父进程wait之后才会释放掉这些保留的信息。如果父进程没有wait,那么子进程就变成了僵尸进程。在高并发的服务器中,僵尸进程会有很大的危害。如果僵尸进程过多,那么就会有大量的进程号被僵尸进程占用,但是系统所能使用的进程是有限的。如果僵尸进程多到连新进程的进程号都没法提供,那么服务器就会一直处于拒绝状态了。 但是高并发服务器的父进程肯定会fork许多子进程,而且有可能父进程不需要知道任何子进程的结束信息,如果还wait每个... 阅读全文
posted @ 2013-03-12 19:02 NeilHappy 阅读(376) 评论(0) 推荐(0) 编辑
摘要: 正准备把unpV1再看一遍,但是居然把unp的编译方法给忘记了。查了查资料,才弄好。这就是以前没有养成做笔记的习惯所带来的后果了,浪费了20分钟时间。现在把unpV1源码的使用方法记录下来: 1. 编译静态库并复制到/usr/lib和/usr/lib64.cd libmakecd ..sudo cp libunp.a /usr/libsudo cp libunp.a /usr/lib64 2.修改unp.h#include "../config.h" 的../去掉,即#include "config.h"加上#define MAX_LINE 2048注 阅读全文
posted @ 2013-03-12 14:55 NeilHappy 阅读(991) 评论(1) 推荐(0) 编辑
摘要: 原文地址:http://blog.sina.com.cn/s/blog_93b45b0f01014qyb.html前多时间梳理了一些Linux上的编程,其实就是认识的大量的系统调用(POSIX)。这里有一个我们经常提出的问题就是fread,read的区别。(当然这两个分别代表了操作文件系统的两套不同的函数,包括open,read, write, seek等)。我们都知道,他们的区别就是一个(read)是UNIX 中的系统调用,是类UNIX系统,提供给程序员操作文件的接口(要不然你如何操作文件?);而另外一个则是C语言提供的读取文件的函数库,自然这个函数库(ANSI)的实现是以对应的系统调用为基 阅读全文
posted @ 2013-03-12 13:31 NeilHappy 阅读(4988) 评论(0) 推荐(0) 编辑
摘要: 今天终于下定决心学习git,用git来管理项目。这里我仅仅使用了git最简单和基本的功能,步骤如下: 1.在github上创建一个repository. 2.克隆代码库。用git clone + 该仓库的地址。 3.添加一个文件,将其提交并且推送到服务器上。vim test.py git add test.py git commit -m "add test.py"git push -u origin master 4.git add . 添加当前目录下所有文件(包括目录)。 阅读全文
posted @ 2013-03-02 20:44 NeilHappy 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 记在这里,备忘。 将virtualbox的网络连接方式从NAT改成桥接就可以了。 阅读全文
posted @ 2013-03-01 14:01 NeilHappy 阅读(1085) 评论(0) 推荐(0) 编辑
摘要: 用man python,可以找到Like the version of Python, the python command can select between 32 and 64-bit execution (when both are available). Use: % defaults write com.apple.versioner.python Prefer-32-Bit -bool yes 将这条语句加到~/.bash_profile,再source ~/.bash_profile就可以了。 阅读全文
posted @ 2013-02-28 19:21 NeilHappy 阅读(1632) 评论(0) 推荐(0) 编辑
摘要: 问题描述:已知一个数组x[],元素个数有多少并不很清楚,但是数组元素已经依顺序从小到大排好,而且在数组最后添加了足够多的MAX记号;MAX表示最大的值,比数组中每一个元素都大,而且个数足够多。编写一个程序,在这个数组中找出某个给定的值。 思路:二分查找法是一个非常高效的算法,但要想使用二分查找法,必须满足2个条件:1.元素是有序的,可以从小到大排列,也可以从大到小排列。2.知道元素集合的上界和下界。本题中元素已经从小到大排列,但是不知道数组的上界。所以,解法如下: 1.最开始,二分查找x[0]和x[1],即查找区域为[0,1)这个左闭右开区间,区间的大小是。此时start=0,e... 阅读全文
posted @ 2013-02-28 11:05 NeilHappy 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 原文地址:http://lynnkong.iteye.com/blog/1811254exec和source都属于bash内部命令,在讲这两个命令之前,前谈一下fork的概念:fork是linux的系统调用,用来创建子进程(child process)。子进程是父进程(parent process)的一个副本,从父进程那里获得一定的资源分配以及继承父进程的环境。子进程与父进程唯一不同的地方在于pid(process id)。环境变量只能单向从父进程传给子进程,不管子进程的环境变量如何变化,都不会影响父进程的环境变量。脚本的执行:1.新产生一个shell然后再执行scripts,也就是通常的sh 阅读全文
posted @ 2013-02-28 10:38 NeilHappy 阅读(623) 评论(0) 推荐(0) 编辑
摘要: 问题描述:有两个数组x[]与y[],各有m与n个元素,而且各个元素没有依顺序排列;d是一个已知的值。请写一个程序,看看在x[]与y[]中有没有满足x[i]+y[j]=d的元素。例如,若x[]为3,7,2,4,y[]为1,5,2,3,d为9;那么x[1]+y[2]与x[3]+y[1]都合乎条件,也即都是9。 思路:x[i]+y[j]=d。那么x[i]=d-y[j]了。将x[]数组按从小到大的顺序排序好,再用二分查找法在x[]中查找d-y[j]。这是比较简单的方法。但是这种方法比较不容易想到,因为这个问题给出的隐性思路是在x[]与y[]这两个数组中查找,而这种二分查找法是将2个查找转化成了一... 阅读全文
posted @ 2013-02-26 10:31 NeilHappy 阅读(248) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 10 下一页