摘要: 连接FTP服务器主机: ftpFTP.RFC-EDITOR.ORG 21(21是FTP中控制连接的端口号)输入用户名:anonymous输入密码:name@host.domainRFC文档是放在in-notes/rfcxxxx.txt中的(xxxx是RFC文档的编号),转到in-notes目录下:cd in-notes获取rfc文档,比如我要获取[RFC2616](HTTP规约),使用:get rfc2616.txt也可以查看该目录下所有的rfc文档,使用:dir 阅读全文
posted @ 2012-03-21 12:28 刘军newhand_liu 阅读(393) 评论(0) 推荐(0) 编辑
摘要: ●书籍是永远的良师益友过去十年中,有一件事最是奇特有趣:我於 1993 开始《无责任书评》专栏,介绍我所能够掌握的技术范围内的一些世界名着。这样的题材与文体,吸引了很多目光,也开创了某种先河。《无责任书评》夹杂对台湾电脑出版业的观点与评论,由於当时台湾电脑书的良窳程度极端不均(现在也是),初阶 滥而高阶贫血(现在也是),我以程序员的角度所给的评论显得尖锐不群。1998 年网际网路兴盛,我把所有电脑散文都移到网路上发表,范围扩及学习方向与学习态度(但不涉及细节技术)。过去的书评文章也重新整理了起来。各位可从侯捷网站上看到所有这些文章。书评之所以受人欢迎,一方面在它的知识性,一方面在它的辛辣味。通 阅读全文
posted @ 2012-03-06 17:04 刘军newhand_liu 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 每年的 09/28 於我都是一个特殊的日子 -- 不只是因为教师节。今年很特殊地没有普天同庆,那麽我就写篇文章自己庆祝一下好了。我於今年七月发表了一本着作《多型与虚拟》和一本译作 <深度探索 C++ 物件模型> ,获得很大的回响。这些作品都不是针对 C++ 的完全初学者所写,但从初阶到高阶为数众多的 C++ guy,热情地表达了他们对这些主题的喜悦。在许多来信中,我看到一些有趣的现象,也感受到一些值得整理下来的想法。所以,根据我个人的学习过往、我的教学经验、以及周遭朋友的心得交流,写下这篇文章,或可为後学者戒。《多型与虚拟》序言节录首先让我节录《多型与虚拟》一书序言:《多型与虚拟》 阅读全文
posted @ 2012-03-06 16:59 刘军newhand_liu 阅读(277) 评论(0) 推荐(0) 编辑
摘要: ios_base:顶层基类basic_ios<>:派生自ios_base的template class 。具体定义:template<class charT, class traits = char_traits<charT> > class basic_ios :public class ios_base {};basic_istream<> / basic_ostream<>:两者虚拟派生自basic_ios<>的模版类。具体定义:template<class charT, class traits = char 阅读全文
posted @ 2012-03-05 19:03 刘军newhand_liu 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 在main()函数中加上如下代码:void main() { //用来追踪是否有内存泄漏 int tmpDbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); //得到当前的CrtDbgFlag状态 tmpDbgFlag |= _CRTDBG_LEAK_CHECK_DF; //打开内存泄漏自动检查开关 _CrtSetDbgFlag(tmpDbgFlag); //设置CRT调试堆的新状态 int * p = new int[4]; return; }在debu... 阅读全文
posted @ 2012-03-05 14:53 刘军newhand_liu 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 关键词:头指针、头结点、循环链表、双向链表头指针:头指针指向链表中的第一个结点带头结点的链表:无论链表是否为空,头结点始终存在,头结点中的值域与链表元素无关。头指针始终指向头结点带头结点的链表的好处:不带头结点的链表,头指针是指向头结点的,在对链表进行删除、插入操作时,需要检测头结点是否发生了变化。而采用带头结点的链表,头指针指向一个始终存在且不改变的头结点,不需要进行多余的检测循环链表:它的特点是最后一个结点的指针域指向头结点,整个链表形成一个环。由此,从链表中任意结点开始,均可找到链表中的其它结点。ps:如果需要对两个链表进行合并操作,可以采用设置尾指针的循环链表。在合并时,只需将一个链表 阅读全文
posted @ 2012-02-29 13:38 刘军newhand_liu 阅读(237) 评论(0) 推荐(1) 编辑
摘要: 计算X^N的常见算法是使用N-1次乘法自乘,时间复杂度为O(n)。使用下面的递归算法更好,时间复杂度为O(logn):template<class T> T Pow(T x, unsigned int N) { if (0==N) { return 1; } else if (1==N) { return x; } else if (0==N%2) { return Pow(x*x, N/2); } else { return Pow(x*x, N/2)*x; } } 阅读全文
posted @ 2012-02-28 15:21 刘军newhand_liu 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 求两个数的最大公因数,如gcd(50, 15)=5时间复杂度:O(logn)unsigned int Gcd(unsigned int M, unsigned int N) { unsigned int temp; //令M>=N if (M<N) { temp = M; M = N; N = temp; } while(N>0) { temp = M % N; M = N; N = temp; } return M; } 阅读全文
posted @ 2012-02-28 14:49 刘军newhand_liu 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 问题说明:给定整数(可能有负数),求的最大值(为方便起见,如果所有整数均为负数,则最大子序列和为 0 )。三种实现方法:方法一:O(n^2)template<class T> T MaxSubSequenceSum_1(const T A[], int length) { T thisSum = 0; T maxSum = 0; for(int i=0; i<length; ++i) { thisSum = 0; for(int j=i; j<length; ++j) { thisSum += A[j]; if (thisSum>maxSum) { ... 阅读全文
posted @ 2012-02-28 14:29 刘军newhand_liu 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 定义:一个函数用它自己来定义时就称为递归递归的四条基本法则:1.基准情形(base case):必须总要有某些基准的情形,它们不用递归就能进行求解2.不断推进(making progress):对于那些需要递归求解的情形,递归调用必须总能够朝着产生基准情形的方向推进3.设计法则(design rule):假设所有的递归调用都能运行4.合成效益法则(compound interest rule):在求解一个问题的同一个实例时,切勿在不同的递归调用中做重复性的工作例如,用递归计算斐波那契数就违反了第四条法则:Fib(int n) { if(n<=1) return 1; ... 阅读全文
posted @ 2012-02-28 12:37 刘军newhand_liu 阅读(189) 评论(0) 推荐(0) 编辑