- 博客(97)
- 收藏
- 关注
原创 读书摘要-The practice of programming
The practice of programming simplicity, clarity and generality form the bedrock of good software.Chp 1 Style The purpose of style is to make the code easy to read for yourself and others,1.1 N
2008-03-30 07:19:00 4403
原创 读书摘要-The Art of Software Testing ,2rd Edition
Chp 2 The Psychology and Economics of Program TestingThe Psychology of Testing Testing is the process of executing a program with the intent of finding errors. The most important considerations
2008-06-11 05:54:00 4156
原创 读书摘要-大话设计模式
第二章 策略模式 策略模式与简单工厂(Factory Method)的结合: 在基本的策略模式中,选择所使用的具体策略实现的职责由客户端用户承担,这并没有解除客户端需要选择判断的压力;将策略模式与简单工厂模式结合后(在 Context类中加入Factory Method的特性),选择具体实现的职责也由Context来承担,这样最大化的减轻了客户端的负担。第四章 开放封闭原则
2008-06-10 01:49:00 3088
原创 读书摘要-Why program fail(系统化调试指南)
Chp1 How Failure Comes to BeIn general, a failure comes about in the four stages discussed in the following. 1.The programmer creates a defect 2.The defect causes an infection. 3.The infectio
2008-06-07 09:34:00 3395 1
原创 读书摘要─Generic Programming and STL
注:这本书的精华在于第一部分的前五章对于STL中各种抽象概念的阐述,后面的内容过于具体了,基本可以当做实现STL的specs了,不是很适合普通用户一、STL巡礼 STL提供了一种新的程序设计思维,其中算法和抽象条件居于中心地位。二、算法和区间 Concept & Model 要实现任何线性查找,必须要解决如下问题: 如何表示要执行查找的目标序列?
2008-04-21 00:19:00 3074
原创 读书摘要:大规模C++程序设计
引言 与主流观点相反,从根本上说,最普通形式的面向对象程序要比对应的面向过程的程序更难测试和校验。通过虚函数改变内部行为的能力可能导致类不变式无效;而对于程序的正确性来说,类不变式是必要的。第一部分 基础知识 对符号名称的使用,而不是声明本身,导致一个未定义符号被引入到.o目标文件中。 typedef声明是的性质属于"internal linkage",尽管这个说法不
2008-04-13 04:18:00 5961
原创 读书摘要-Efficient C++ performance programming techniques
Chp 1 The Tracing war story 当你的代码规模超过几千行后,tracing就变得很必要了。 当在一个很小却被频繁调用的函数中加入tracing 机制时,如果不注意的话,tracing可能会成数量级的降低系统的性能。 在C++程序中,不必要的对象构造和销毁,会带来非常大的开销。 那些适合inline调用的函数,往往不适合当作traci
2008-04-06 11:23:00 3342
原创 读书摘要--Inside The C++ Object Model
Chp 1 关于对象 1.1 C++对象模式 每个类对应的type_info对象,通常由Vtable的第一个slot指向。 1.2 关键字所带来的差异 如果不是为了努力维持与C的兼容性,C++远可以比现在更简单些。 C++标准保证,同一个access section中的数据成员,其内存布局同其声明次序保持一致。 组合,而非继承,才是将C和C+
2008-04-05 12:14:00 2761
原创 读书摘要-程序开发心理学
Chp 2 What makes a good program There are indications from other situations that it is not the meanlength of estimated time that annoys people but, rather, the standarddeviation in the actu
2008-04-02 07:39:00 2819
原创 读书摘要:C++ Standard Library, The: A Tutorial and Reference
C++ Standard Library, The: A Tutorial and ReferenceChap 2 Introduction to C++ and the Standard Library2.1 history string classes are designed as a safe and convenient component. Thus,they p
2008-03-17 21:15:00 4593
原创 C++拾遗
因为C++实在是过于复杂了,时不时都会碰见一些晦涩的细节,因此特意发个帖子,留好位置,随时添加Item 1 前置声明 当不需要class A的完整定义而只需要其名称时,可以通过前置声明函数来避免包含class A对应的头文件,这样可以减少编译依赖关系 然而,需要注意的是,string和iostream不是类型名,而是typedef;由于标准不允许向std空间增加声明或定义,所以这
2008-03-11 10:09:00 3188 1
翻译 C++:The One-Definition Rule
(注:本文翻译自《C++ template:the complete guide》的Appendix A)Appendix A. The One-Definition Rule 被亲切的称为ODR的One-Define-Rule是构建良好的C++程序的基础。ODR常见的表现形式很容易理解和使用:对non-inlinefunction在所有文件中保证只存在一处定义;对于类和内联函数,在
2008-03-08 21:58:00 7886 4
原创 读书摘要:C++ Template:The Complete Guide
Chapter 1 About This Book1.4 对于模板编程中const的使用,推荐使用 int const 而不是 const int 的风格Chapter 2. Function Templates2.1.2 Using the Template 函数模板要经过两遍编译: 第一遍(without instantiation):检查syntax error,例如‘;
2008-03-06 06:46:00 4443 1
原创 容易被误解的inline
C++中的inline是个容易被误解的关键字,即使是专家也常会犯错。不信?请打开《Thinking in C++ 2rd Edition Volumn 1》,找到Chapter 9 "Inline Function"的Exercise 6:“Prove that inline functions default to internal linkage."为什么我说这里作者犯错了呢?因为C++
2008-03-02 14:50:00 4772 5
原创 几条C Puzzle Problem中的为什么
发现了一个收集C puzzle的页面,挺有意思的,都看了一遍。除去那些常见的Marco、类型转换、printf格式符、指针和内存之类的常见puzzle外,我发现以下一个puzzle很是值得想一想。问题1The following program doesnt "seem" to print "hello-out". (Try executing it) #include stdio.
2008-03-01 11:26:00 3004
转载 How Non-Member Functions Improve Encapsulation ZZ
How Non-Member Functions Improve EncapsulationScott MeyersWhen it comes to encapsulation, sometimes less is more. Ill start with the punchline: If youre writing a function tha
2008-02-22 12:34:00 3129
转载 fopen:文本和二进制方式打开 ZZ
在学习C语言文件操作后,我们都会知道打开文件的函数是fopen,也知道它的第二个参数是 标志字符串。其中,如果字符串中出现b,则表明是以打开二进制(binary)文件,否则是打开文本文件。 那么什么是文本文件,什么是二进制文件呢? 可能大多数人都没有仔细考虑过。 在Windows和DOS系统中,狭义的文本文件是指扩展名为txt的文件。实际上,那些没有规定格式的,由可理解的
2008-02-22 01:39:00 5517
原创 内核代码中和用户栈相关的几个片段
今天突然脑子里面几处知识点大串联,貌似是迸发出了些许思维的火花,以前一直感觉模模糊糊的有关用户栈的大小限制、栈是怎么自动扩展等问题,通过对照以前看过的内核代码的一些关键片段,似乎清晰了起来。机不可失,趁还没迷糊之前拿笔记下来。问题1 Linux下用户程序的默认栈大小是多少?如何查看,又如何更改默认值(上层指令和底层实现)? 在bash中输入“ulimit -s ",就可以查看用
2008-02-21 07:07:00 3051
原创 C语言混乱大赛1987年获奖作品
今天翻前两天刚送到的《C专家编程》,章节8.10的那个IOCCC 1987年的获奖作品让我觉得很好玩main(){ printf(&unix["/021%six/012/0"], (unix)["have"] + "fun" - 0x60);} 作者这里利用的第一个技巧并不算太晦涩: "a[i] = i[a]= *(a+i)“ 即下标运算符的可交换性。但是这个老天爷的unix和
2008-02-20 21:57:00 4829 2
原创 由一个问题引发的思考
记不请是那个大哥的blog了,名字好像叫做“用了10年,才知道C++才懂了一点“。俺觉得这话说的太实在了,正如TAOUP中4.2节所言:”C++ is anti-compact—the languages designer has admitted that he doesnt expect any one programmer to ever understand it all.“
2008-02-18 21:49:00 2693
翻译 关于递归
注: 最近再读SCIP,看到第一章时被Recurion Process、Recursive Procedure、Tail-Recursive、Tree-Recursive等概念搞的有些头晕,google了以下,发现一篇文章解释的很是简练清楚。 http://triton.towson.edu/~akayabas/COSC455_Spring2000/Recursion_Iteration.htm
2008-02-18 14:07:00 1769 1
转载 Why Functional Programming Matters ZZ
发信人: bitapf (北京理工编程爱好者协会), 信区: FuncProgram标 题: Why Functional Programming Matters发信站: BBS 水木清华站 (Sun Nov 23 15:11:17 2003)后面的没翻译完,原文的名字就是这个,大家自己搜一下吧,ps格式的不好给。想要继续我的翻译的我给你投递原文,或者觉得我翻译得太烂(的确很烂,汗),也给你投递
2008-01-29 08:01:00 2522
转载 Lisp之根源 zz
保罗格雷厄姆约翰麦卡锡于1960年发表了一篇非凡的论文,他在这篇论文中对编程的贡献有如欧几里德对几何的贡献.1 他向我们展示了,在只给定几个简单的操作符和一个表示函数的记号的基础上, 如何构造出一个完整的编程语言. 麦卡锡称这种语言为Lisp, 意为List Processing, 因为他的主要思想之一是用一种简单的数据结构表(list)来代表代码和数据. 值 得注意的是,麦卡锡所作的
2008-01-29 07:56:00 1038
转载 函数式编程另类指南 ZZ
函数式编程另类指南原文:Functional Programming For The Rest of Us 原文作者:Vyacheslav Akhmechet 翻译:lihaitao (电邮: lihaitao在gmail.com) 翻译原帖:函数式编程另类指南校对:刘凯清程序员拖沓成性,每天到了办公室后,泡咖啡,检查邮箱,阅读 RSS feed,到技术站点查阅最新的文章,在编程论
2008-01-29 04:40:00 1781
转载 Lisp的本质 zz
Lisp的本质(The Nature of Lisp) 作者 Slava Akhmechet译者 Alec Jang 出处: http://www.defmacro.org/ramblings/lisp.html 简介 最初在web的某些角落偶然看到有人赞美Lisp时
2008-01-29 04:31:00 1678
转载 百年语言 ZZ
原文 http://www.paulgraham.com/hundred.html译文 http://www.yeeyan.com/articles/view/5288/1703/#beginComment百年语言Paul Graham 2003年4月(本文出自2003年Python大会上的一篇主题讲话) 很难预测人们的生活在一百年后会是什么样子,我们只能给很少的事物一个
2008-01-29 04:27:00 1827 1
原创 《Pragmatic.Programmer》精华摘录
Chapter 1. A Pragmatic Philosophy Section 1 The Cat Ate My Source Code Tip 3 Provide Options, Dont Make Lame Excuses(不要为失误找借口) Section 2 Software Entropy(熵) Tip 4 Dont Li
2008-01-11 16:42:00 2088
原创 关于Stack unwinding
转点资料,用于备忘 @_@Stack unwinding (C++ only)When an exception is thrown and control passes from a try block to a handler, the C++ run time calls destructors for all automatic objects constructed sinc
2007-12-16 16:17:00 3510 3
原创 自动挂载.ISO镜像的简单脚本
#!/bin/bash############################################################################## AutoMountISO:自动挂载/卸载ISO镜像# Author:whodare#hotmail.com# ## 功能 1.对于.ISO文件自动挂载,并自动开启文件浏览器浏览其内容#
2007-11-24 03:49:00 2903
转载 读读书
培根 著王佐良 译 读书足以怡情,足以博彩,足以长才。其怡情也,最见于独处幽居之时;其傅彩也,最见于高谈阔论之中;其长才也,最见于处世判事之际。练达之士虽能分别处理 细事或一一判别枝节,然纵观统筹、全局策划,则舍好学深思者莫属。读书费时过多易惰,文采藻饰太盛则矫,全凭条文断事乃学究故态。读书补天然之不足,经验 又补读书之不足,盖天生才干犹如自然花草,读书然后知如何修剪移
2007-11-20 20:09:00 1333
原创 C99中的restrict关键字
今天读APUE,看到某个函数原型的声明: int stat ( const char * restrict pathname,struct stat * restrict buf);这里的restrict让我觉得有些疑惑,一查原来是C99中增加的关键字那么restrict的意义是什么呢?One of the new features in the recently app
2007-11-19 01:10:00 14279
原创 读"一个细节引发的思考“引发的思考
今天偶然看到了这篇" 一个细节引发的思考”,不仅解除了我平时的困惑之一,也引发了我的一点思考。知其然还要知其所以然,我觉得作为CS的学生,这是应该具备的基本态度。首先看一下GNU网站上对该问题给出的解释():”The C language standard says A source file that is not empty shall end in a new-line character,
2007-11-09 16:53:00 1848
原创 浅谈C中的wprintf和宽字符显示
今天在CSDN的Blog首页看到一篇文章“也谈计算机字符编码 ”,由于前一阵业余翻译了“UTF-8 and Unicode FAQ for Unix/Linux”一文,自己对字符集、编码和Unicode等内容一直保着者很强的兴趣,自然不会放过这样的文章。作者的文章写得很明白易懂,虽然有一些概念上的细节问题我觉得有商榷之处;作者还给出一个简单的在windows下使用wprintf正确输出字符串“中
2007-11-06 00:51:00 56507 9
原创 浅析QStringr的Unicode存储特性(二)
在上篇文章中,通过简单的实验弄清楚了QString究竟是如何以Unicode存储字符串的;接下来考虑另一个问题, 假设"中文"的编码格式不同于locale,例如使用GBK编码,在上文的示例中,还会正常输出“中文"么? 答案是否定的。考虑一下"中文"GBK编码时的整个转换过程首先,"中文"对应的GBK编码为“ 0xd6,0xd0,0xce,0xc4,0x00“,由于QString默认情况下认为给定的
2007-11-04 10:04:00 3121
原创 浅析QStringr的Unicode存储特性(一)
在看Qt相关的文档时,不断看到Qt对于i18n和Unicode的支持如何,一直没有个直观和底层的认识,最近写了些简单的例子,感觉结合实例能更好理解Qt内部对于字符串存储的转换机制。下面的例子都以"中文"这个简单的字符串作为示例。编译和调试工具:GCC &GDB本地locale:zh_CN.UTF-8字符 中,Unicode码值U+4E2D, 对应的UTF-8编码形式为 E4 B8 AD (
2007-11-04 04:11:00 2847
原创 Ubuntu 7.10 安装手记
昨天苦等了多半天,终于Gusty还是没跳票,哈哈~今天一早就把下载的ISO刻好盘,开工装系统。开始一切顺利,分区、硬件啥的都没出别扭,我心想看来这次装7.10应该比前两次装6.10和7.04要轻松吧,好歹我也用了快一年的“有奔头”了,再说7.04在我看来是很成功的一个版本,7.10不会差到哪去吧。然而,后面的配置过程却是让我颇有些失望,粗略一数,至少碰到了以下4个不算轻微的bug第一个,安装ado
2007-10-20 03:33:00 2077
原创 一道面试题
问:已有一个函数f(),它等概率的生成1-5的整数,问如何利用该函数,等概率的生成1-7的整数?解: 先抛开这个问题,换另一个问题进行思考:假若我们现在有一个等概率生成1~35整数的函数g(),如何构建等概率生成1~5整数的f()和等概率生成1~7整数的h()? 这第二个问题似乎很简单,g()/7,g()/5 就可以得到 f()和h()。 所以,原问题的关键在于,如何由f()构建出一个
2007-09-18 13:17:00 863 1
原创 一个有意思的博弈问题
翻书看到一道挺有意思的博弈问题,据说是冯.诺伊曼提出来的。 "三个人持枪决斗。A的枪法最差,成功率为1/3;B的成功率稍好,为2/3;C的枪法最准,每击必中。决斗规则如下:三个人轮流开枪,枪法最差的A有最高的开枪优先级,B次之,C最低。 假设你是A,采取什么样的策略,才能使自己活命的概率最大?" 这题不仔细考虑的话,凭直觉定会选择向C开枪,因为C的威胁最大!如果给C开枪的
2007-09-18 11:53:00 1437
原创 一道简单的笔试题
要求:将C++源代码中的注释去掉即,对于下列源代码#include iostream> // comment1using namespace std;/* comment 2// #include */ int main( int argc,char *argv[] /*comment 3*/ ){ return 1;}/**//**/...处理后应输出#inclu
2007-09-18 10:35:00 1078
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人