摘要: 你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了www.taobao.com。这时你的浏览器首先查询DNS服务器,将www.taobao.com转换成ip地址。不过首先你会发现,你在不同的地区或者不同的网络(电信、联通、移动)的情况下,转换后的ip地址很可能是不一样的,这首先涉及到负载均衡的第一步,通过DNS解析域名时将你的访问分配到不同的入口,同时尽可能保证你所访问的入口是所有入口中可能较快的一个(这和后文的CDN不一样)。 你通过这个入口成功的访问了www.taobao.com的实际的入口ip地址。这时你产生了一个PV,即Page View,页面访问。每日每个网站的总PV量是... 阅读全文
posted @ 2013-01-28 15:50 NeilHappy 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 问题描述:分割集合成多个子集合,这几个子集合间没有交集且他们的并集是原集合。 思路:将包含n个元素的集合set的分割表示为n个数字。比如set[]={1,2,3,4},那么{1,2},{3,4}就可以表示为1122,这4个数分别表示set[0]在第一个分割集合,set[1]在第一个分割集合,set[2]在第二个分割集合,set[3]在第二个分割集合。将这个过程称为编码。 然后抓住两个要点: 1.第i个元素的编码一定小于或者等于i。约定一下,set原集合已经从小到大排列好,分割的集合也是这样排好。然后,很容易理解,第1个元素的编码肯定为1。接着,第2个元素如果在第一个分割集合中... 阅读全文
posted @ 2013-01-28 13:03 NeilHappy 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: 在准备阅读一个开源项目的代码前,可以大约看看整个项目共有多少代码,估计项目的规模。我就写了一个简单的程序来达到此目的,其中的一些代码参考了apue中的代码。 代码如下:View Code 1 //程序功能:统计一个文件夹(一个项目)中所有文件的有效代码行数(除去空白行)。 2 3 #include <apue.h> 4 #include <dirent.h> 5 #include <limits.h> 6 #include <string.h> 7 #include <fcntl.h> 8 #include <unistd.h& 阅读全文
posted @ 2013-01-26 17:32 NeilHappy 阅读(433) 评论(0) 推荐(0) 编辑
摘要: 写在这里备忘:sudo add-apt-repository ppa:git-core/ppasudo apt-get updatesudo apt-get install git 只是更新得很慢啊! 阅读全文
posted @ 2013-01-26 12:10 NeilHappy 阅读(793) 评论(0) 推荐(0) 编辑
摘要: 问题描述:列出一个集合的元素个数为k的所有子集。 思路:在字典顺序列出所有子集的基础上判断元素个数就可以了,比较简单。代码如下: 1 #include <stdio.h> 2 #define MAX 1000 3 4 int main() 5 { 6 int n=5; 7 int set[MAX]={1}; 8 int index=0; 9 int count=2;10 int k=3;11 while(set[0]!=n)12 {13 if(set[index]<n) 14 { 15 ... 阅读全文
posted @ 2013-01-26 09:21 NeilHappy 阅读(427) 评论(0) 推荐(1) 编辑
摘要: 问题描述:以字典顺序产生所有排列。假定集合set是连续的并且按从小到大顺序排列好了的,并且有n个元素。 思路:算法的思路分成两个部分:A是递归产生以某个数字开头的排列,B是调用A来依次生成 1为第一位的所有排列,2为第一位的所有排列,....n为第一位的所有排列。 下面是A部分的详细思路: 1.以1234为例子。从右到左来寻找<(j=i+1,i>0)。 2.接着再从右到左查找第一个比大的元素,然后将二者交换位置,再将到集合末尾逆序。这样就找到了1234的按字典顺序的下一个元素。 3.递归进行。要注意递归的一个关键就是递归的结束条件。这里,以1开头的排列的最后一个... 阅读全文
posted @ 2013-01-23 20:06 NeilHappy 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 我觉得这是一个很巧秒的算法。思路非常直接,从代码里可以很容易看出来,再单步调试查看set数组的值就可以很清楚地明白算法的过程。 代码如下: 1 #include <stdio.h> 2 #define MAX 1000 3 4 int n=3; //the number of set element 5 int set[MAX]={1,2,3}; 6 7 //move the set[0] to set[position] 8 int rotate(int position) 9 {10 int temp=set[0]; 11 int index;12 ... 阅读全文
posted @ 2013-01-22 16:01 NeilHappy 阅读(348) 评论(0) 推荐(1) 编辑
摘要: 今天的算法(数据结构)每天一题,没有把代码实现,但是基本思路已经很清晰了。记录一下。 阅读全文
posted @ 2013-01-21 12:07 NeilHappy 阅读(164) 评论(2) 推荐(0) 编辑
摘要: 一. 总述 简单的说,ARP协议就是将IP地址转换为MAC物理地址;而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址。看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什么关系。ARP协议是为了在链接层中传输的datagram只能识别MAC地址,所以只能将IP地址转换为MAC物理地址再进行传输和定向;RARP协议是为了获取无磁盘操作系统的IP地址而设计的。具有本地磁盘的系统通常是从磁盘中的配置文件中读取IP地址的,但是无盘系统无法这样操作,所以就需要将MAC地址转换成IP地址了。 再介绍一下无盘系统。比如有些网吧的机器本身没有硬盘,而是通过局域网连接到服务... 阅读全文
posted @ 2013-01-21 10:56 NeilHappy 阅读(1419) 评论(0) 推荐(0) 编辑
摘要: 一. 总述 IP(internet protocol)是TCP/IP协议簇的基础,在链接层中封装的IP datagram是网络间数据传输的一个基本单元,包括传输层的TCP,UDP等协议都是基于IP协议的。IP协议有个特点:IP协议是无连接的。我们知道,TCP是面向连接的,是可靠的传输协议;而UDP是无连接的,相应的也就不可靠,无法保证数据确实传输到了目的地。TCP面向连接,需要经过3次握手才能建立起可靠的数据传输的全双工的通道,这就导致了需要保存连接的状态等信息,增加实现的复杂程度。UDP无连接,自然也就更容易实现,维护起来也就更简单些。在现在的应用中,UDP与TCP都应用地很广泛,所以... 阅读全文
posted @ 2013-01-17 18:13 NeilHappy 阅读(1719) 评论(0) 推荐(2) 编辑