你刚才在淘宝上买了一件东西【技术普及贴】(转载)
摘要:你发现快要过年了,于是想给你的女朋友买一件毛衣,你打开了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
阅读(193)
推荐(0)
集合的所有分割方式---2013年1月28日
摘要:问题描述:分割集合成多个子集合,这几个子集合间没有交集且他们的并集是原集合。 思路:将包含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
阅读(1283)
推荐(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
阅读(446)
推荐(0)
在ubuntu下更新git
摘要:写在这里备忘:sudo add-apt-repository ppa:git-core/ppasudo apt-get updatesudo apt-get install git 只是更新得很慢啊!
阅读全文
posted @
2013-01-26 12:10
NeilHappy
阅读(805)
推荐(0)
列出所有K个元素的子集-----2013年1月26日
摘要:问题描述:列出一个集合的元素个数为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
阅读(437)
推荐(1)
产生所有排列---字典顺序-----2013年1月23日
摘要:问题描述:以字典顺序产生所有排列。假定集合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
阅读(605)
推荐(0)
产生所有排列---旋转法------2013年1月22日
摘要:我觉得这是一个很巧秒的算法。思路非常直接,从代码里可以很容易看出来,再单步调试查看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
阅读(356)
推荐(1)
算法(数据结构)每天一题 2013年1月21日
摘要:今天的算法(数据结构)每天一题,没有把代码实现,但是基本思路已经很清晰了。记录一下。
阅读全文
posted @
2013-01-21 12:07
NeilHappy
阅读(226)
推荐(0)
《TCP/IP详解卷1》学习小结(三)------ARP协议与RARP协议
摘要:一. 总述 简单的说,ARP协议就是将IP地址转换为MAC物理地址;而RARP,就是ARP的逆向,也就是将MAC物理地址转换为IP地址。看起来这两个协议是完全对称的,但发明这两个协议的初衷基本上没有什么关系。ARP协议是为了在链接层中传输的datagram只能识别MAC地址,所以只能将IP地址转换为MAC物理地址再进行传输和定向;RARP协议是为了获取无磁盘操作系统的IP地址而设计的。具有本地磁盘的系统通常是从磁盘中的配置文件中读取IP地址的,但是无盘系统无法这样操作,所以就需要将MAC地址转换成IP地址了。 再介绍一下无盘系统。比如有些网吧的机器本身没有硬盘,而是通过局域网连接到服务...
阅读全文
posted @
2013-01-21 10:56
NeilHappy
阅读(1437)
推荐(0)
《TCP/IP详解卷1》学习小结(二)------Internet Protocol
摘要:一. 总述 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
阅读(1734)
推荐(2)
《TCP/IP详解卷1》学习小结(一)------链接层
摘要:开始学习《TCP/IP详解卷1》这本著作,每一章都要写一篇学习小结。 一. 总述 链接层位于整个网络协议suite的最低一层,与硬件关系密切,比如以太网,token ring都是位于这一层。二. 我总结的3个重点 1.对于IP datagrams,有多种不同的封装方式,一般是每个frame占48个bit。对于细节我不想赘述,因为我也记不住完整的细节。SLIP,CSLIP,PPP等都是不同的封装方式,这些封装方式都各有优缺点,但总体说来都是为了便于传输。 2. (1)我觉得Link Layer这章最重要的就是MTU,即maximum transmisson unit,...
阅读全文
posted @
2013-01-17 15:02
NeilHappy
阅读(1744)
推荐(5)
列出所有子集-----字典顺序 2013年1月14日
摘要:问题描述:写一个程序,用字典顺序把一个集合的所有子集找出来。 此题的思路来自《C语言名题精选百则技巧篇》:字典顺序,也就是字符串比较时的顺序规则。可以采取这样的思路(以下是我根据书上的思路进行归纳再加上我自己的理解得来的步骤): 先定义n是集合的个数并且集合是已经从小到大排好顺序的{1,2,3....n}的集合。集合从{1}开始(此时下标index=0), 1.当state[i]<n时,就向右进行扩展,将state[2]=2;接着将state[3]=3; 2.当state[index]==n时,就不能向右边进行扩展了,此时就需要向左边处理了。此时的集合是{1,2...
阅读全文
posted @
2013-01-14 20:37
NeilHappy
阅读(1509)
推荐(0)
2013寒假计划
摘要:明天晚上期末考试就结束了,已经不想看书了,先来计划一下寒假的学习计划。已经是大三了,估计这就是我的倒数第二个寒假了。 花了近1000块买了一些英文原版书,大概算算,在大学里我买书已经花了6000左右了吧。我属于买书的时候花钱不眨眼类型的,看书也基本上是只看经典。以下是我的寒假计划: 1.继续看apue。由于要准备期末考试,apue看了一半就停下了。回家后继续看。 2.《tcp/ip详解》卷1是一定要看完的,卷2看情况了。我有一些网络协议的基础,会基本的socket编程,还有比较大量的代码量,看起来估计不会太难吧。 3.《深入理解计算机系统》。大二上学期的时候看过中文版的,...
阅读全文
posted @
2013-01-10 22:31
NeilHappy
阅读(426)
推荐(0)
List All Of The Subset In Another Method
摘要:Problem description:Please list all of the subsets of a known set including the empty set.Thinking: the subset's sum of a super set is(n is the number of the super set element) while an-bitbinary space could expressnumbers too.So our target is to generate all of the binary numbers in n bit space
阅读全文
posted @
2013-01-04 16:34
NeilHappy
阅读(218)
推荐(0)
列出所有子集(采用列出2进制数的方法)-------------2013年1月4日
摘要:问题描述:列出给定集合的所有子集合,包括空子集。 思路:一个集合的所有子集合的个数是个(n是集合中元素的个数),而一个位数为n的二进制也可以表示个数,所以,只要产生出了所有二进制数,就可以列出所有的子集了。在二进制的求解中,先来看这样一个例子。11111 01111+ 1--------------------11111 10000 当这个数加1时,如果当前位是1,那么当前位就变成0并且向前进1位;接着前一位如果是1,也会变成0并且继续进位;以此类推,直到遇到当前位是0的情况,就变成1,然后整个加法就完成了。依照此思路,很容易写出代码。 1 #in...
阅读全文
posted @
2013-01-04 16:10
NeilHappy
阅读(404)
推荐(0)
List All Of The Subsets
摘要:Problem description:Please list all of the subsets of a known set including the empty set.My idea: one thinking of the algorithm backtracking is to generate a tree of subset and the condition of an element in the super set for a subset is either on or off.Hence we can specialize the subset tree to a
阅读全文
posted @
2013-01-03 20:30
NeilHappy
阅读(206)
推荐(0)
列出所有子集----------2013年1月3日
摘要:问题描述:列出一个集合的所有子集,包括空子集合。 我的思路:回溯法的一种思路就是生成一颗子集树,而一个集合中的元素,要么存在于子集中,要么不存在,所以这又特殊化成一颗二叉树了。每当到达二叉树的底端时,就打印一次。很容易写出如下的代码: 1 #include <stdio.h> 2 #define MAX 1000 3 4 int n=3; //the number of the set elements 5 int set[MAX]={1,2,3}; 6 int count=0;//the number of the subset. 7 8 void DFS(int level..
阅读全文
posted @
2013-01-03 20:10
NeilHappy
阅读(224)
推荐(0)
在网页中显示数学公式的方法
摘要:先用这个数学公式生成器生成公式的图片,然后在将该img的style属性改成 style="padding:0px;border: none;margin:0px;vertical-align: bottom;" 插入到网页中就可以了。
阅读全文
posted @
2013-01-03 16:13
NeilHappy
阅读(2027)
推荐(1)
Linear Sieve Method for Prime Numbers
摘要:Problem description:When we calculate for prime numbers with a sieve method,we delete so many numbers which is not necessary repeatly.For instance,there is a number which consists of 3x7x17x23,and we delete it when we delete the multiples of 3 as we delete the same number when we delete the multiple
阅读全文
posted @
2013-01-03 15:57
NeilHappy
阅读(286)
推荐(0)
A Sieve Method for Prime Numbers
摘要:Problem description:Calculate the prime numbers with a sieve method.There is amagical sieve that can remove all the multiple of the number i.Please calculate the prime numbers at a range from 2 to N by this way.There is a requirement that you should not use multiplication and division.You can only u
阅读全文
posted @
2013-01-03 11:57
NeilHappy
阅读(330)
推荐(0)
线性筛法--------2013年1月2日
摘要:问题描述:在做筛法求质数的问题时,在删除非质数的数据时,有很多是重复删除的。例如,如果有一个数是3x7x17x23,那么在删除3的倍数时会删除它,删除7,17与23的倍数时也都会删除它。请写一个程序,在删除非质数时"绝对"不做重复的工作。 思路:有一个因式分解定理:任何一个合数都可以分解成若干个质数相乘的形式。那么,num一定可以分解成p的i次方乘以q的形式(p,q是质数且p<q)。所以,需要去除的数就变成了p的2次方,p的3次方,p的4次方......以及p的i次方乘以q,i=1,2,3.......p和q的取值是从小到大的没有被去除的数,所以很容易就可以写出如下的
阅读全文
posted @
2013-01-02 21:02
NeilHappy
阅读(283)
推荐(0)