自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 blog移植到http://zadecn.spaces.live.com

blog移植到http://zadecn.spaces.live.com

2010-02-08 17:16:00 2560

原创 boost::weak_ptr和enable_shared_from_this

 v/:* {behavior:url(#default#VML);}o/:* {behavior:url(#default#VML);}w/:* {behavior:url(#default#VML);}.shape {behavior:url(#default#VML);} 1280x1024 Normal 0

2008-07-16 14:34:00 8865

原创 covariant return type and boost::shared_ptr

covariant return type and boost::shared_ptr covariant return type翻译为协变返回值,意义就是在虚函数的返回值上,可以使用子类对象,而不必是基类对象.下面是一个例子:struct Object        {        public:                virtual ~Object()  

2008-03-06 14:53:00 3817

原创 Architecture & Framework

 Architecture不是软件,是关于软件如何设计的重要决策Architecture不关心所有的决策,而只是关心其中的重要决策:即关系各个部分(模块)的静态关系(功能划分)和动态关系(模块交互)Architecture所要求的原则和决策会体现在Framework当中 Framework不是一个运行系统,而是系统所依赖的一个编码约束(基类和子类)和算法实现(函数调用)的集合Frame

2008-02-22 14:41:00 2939

原创 C++ enum类型的一个更好的用法

C++ enum类型的一个更好的用法 enum 类型是c++的一个基本的类型,用于声明可以枚举的常量.相对于C#的enum, c++的enum有几个缺陷:1           不支持组合特性,也即FlagsAttribute属性;2           不支持toString方法,转换为字符串需要特别的函数实现;3           不支持命名空间的特性.前面的两个比较明显

2008-02-22 14:39:00 19414 6

转载 static_cast、dynamic_cast、reinterpret_cast、和const_cast

关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。static

2007-07-04 13:20:00 2905

原创 c++引用的弊端-引用不如指针

c++中引入引用的概念是为了操作符重载(见c++的设计与演化),scott meyers在其相关的Effective c++中也对引用和指针有过论述.在我刚刚接触引用的概念以后,我认为这是一个极好的东西,在函数参数和成员变量中大量的使用他,但是很快我就发现引用不如指针了.除了操作符重载引用是必须的以外,引用的一个其他的好处是对于函数参数传递来说,一般不用检查引用是否是空(确实能够把引用指向一个空对

2007-06-14 11:00:00 3542

原创 中国计算机水平低是因为工程水平差

        前几天在计算所听工程中心主任的报告,主任的一句话给我的印象非常的申:中国计算机水平差,在很大的程度上不是计算机的理论水平比较低,而是计算机的工程水平比较差。换个说法,就是说中国的计算机理论知识还不错,但是计算机的技术水平比较低。也就是说,中国很难生产高质量的计算机软硬件。             我自己也很有这方面的感觉。现在计算机本身的理论已经相对比较成熟了,但是在目前的水平

2006-09-07 21:40:00 3423

原创 翻译的艺术-bind

翻译的艺术-bind 裘宗燕老师对bind的论述(http://www.is.pku.edu.cn/%7Eqzy/books/cppl/words.htm):bind:目前的主要译法有“约束”和“绑定”(还有译为“联编”,这个译法太局限,在许多地方根本无法使用)。这两个译法大约都是从80年代初开始使用。前者由北京大学吴允曾、马希文等先生倡导,后者好像出自科学院计算所。前者取意义,后者希

2006-03-04 23:43:00 3239

原创 翻译的艺术-public/private

翻译的艺术-public/private 计算机技术词汇的翻译并不太难,但是要翻译的很好就不是很容易了。前人有过标准,“信、达、雅”。对于计算机技术词汇,我的理解是:“信”就是要准确,“达”就是要尽量把作者的原意表达全面,“雅”就是高雅,也就是说翻译的要有美感。简单的说,翻译的标准是要准确、有美感。前一个标准相对的客观,后一个标准比较的主观,不过对这个主观的标准仍然有迹可寻。我们看

2006-02-28 18:58:00 3282

原创 C++ Java C#的比较-成员归属权的表示

标题:成员归属权的表示   成员归属权的表示的简洁性 优劣比较

2006-02-27 23:21:00 3072

原创 C++ Java C#的比较-命名空间

标题:命名空间    支持多范型编程 引用的简洁性

2006-02-27 00:28:00 4445

原创 实施软件开流程控制的前提

软件开发的规模进入到一定的程度的时候, 需要软件开发流程来保证软件开发的可控性. CMM, RUP, ISO9001, 这些都是耳熟能详的流程控制方法, 但是能够成功应用这些方法的软件企业和单位并不是很多; 而且, 很多的软件企业和公司并没有采用这些流程方法, 但是仍然取得了很好开发的软件产品(例如微软, 他使用了别的方法). 我觉得这有两个方面的结论: 1 软件开发流程的采用是无需置疑的;

2006-02-19 15:51:00 3171

原创 Prefactor

Prefactor (http://www.artima.com/weblogs/viewpost.jsp?thread=147332)老美真是会制造概念(不过我想这仍然不同于国内有些人, 只有概念而没有概念背后的东西, 说的俗一点, 总是给你玩虚的), refactor就是一个创造的单词, 通过Martin Flower相信大家已经相当的熟悉了, 国内翻译为重构. 这次又在artima上面看

2006-02-17 16:57:00 4248

原创 类成员变量的命名

在类的成员函数当中,可能需要访问两种类型的变量, 局部变量和成员变量, 例如:class MyClass{ private int m_var; //成员变量命名方式1 private int _var1;  //成员变量命名方式2 private int var2_;  //成员变量命名方式3  void someFunc (int var){ int local = 10; if(local

2006-02-16 10:49:00 7362

原创 编程语言的终极梦想

        相对于C语言, C++语言更加灵活, 因为它是一种OOP的语言. C#更加灵活, 因为它还支持垃圾回收, 定制属性, 匿名方法. Ruby语言是一种动态语言, 它比C#更加的灵活.         每一种语言都有自己的特点, 这也是它们如今仍然继续存在的原因. 微软在.Net体系下面定义了IL中间语言, 从而把各种使用.Net兼容的语言编写的代码之间可以相互的调用. 对于程序员来说

2006-02-13 17:43:00 3253

原创 ADO.NET数据库访问的一个缺陷和补救思路

ADO.NET数据库访问的一个缺陷和补救思路在C#中,访问数据库的典型方法是:// connect to my local server, northwind db                  string connectionString = "server=(local)//NetSDK;" +         "Trusted_Connection=yes; database=no

2006-02-12 14:11:00 3021

原创 IEnumerator and IEnumerable

C# defines two interfaces to enumerate a collective object. Now let us see them:public interface IEnumerator{           object Current { get; }    bool MoveNext();    void Reset();}public interface IE

2006-01-14 13:32:00 3357

原创 C#的资源回收

C#的GC机制,使得在C#中内存自动管理,在一定的程度上,这省去了程序员的很多麻烦,这可以看成是一个很大的进步。在C++中,有一条很重要的原则,即资源的获取就是初始化(“resource acquisition is initialization”),也即是在构造函数中获取资源,在析构函数中释放资源。由于对象的构造函数和析构函数发生在特定的时刻,并且析构函数的调用是自动并且强加的,所以一般这可

2006-01-06 10:46:00 4940

原创 C#语言和类库

就象微软一贯的风格,C#语言非常的方便。当你想快速的构造一个应用程序的时候,C#语言的效率非常的高。很显然,微软的类库和默认的处理机制在发挥着作用。作为一个程序员,你可以不用关系这些;因为在大多数的情况下,微软的这些默认的处理机制正好是你所需要的。作为一个C++语言的爱好者和使用者,我更加关心的是,那些是语言本身的定义,那些是类库和默认的处理机制。当我第一次好奇的考察C#语言的委托机制的时候,下面

2006-01-04 15:46:00 3534

原创 C#中的语句块内的不变性

C#语言规范规定,对于表达式中一个简单命名的标识符,在同一个即刻闭合控制块内或者switch块内(the immediately enclosing block or switch-block)的语义是恒定不变的。这条规则确保了在一个表达式的上下文的环境中,同一个名字在一个控制块内拥有相同的含义。否则会引发编译错误,如下:class Test{double x;void F(bool b) { 

2005-12-31 15:56:00 1208

原创 浪漫和回车

 我记得在大学上英语课的时候,我们的老师是一位漂亮的女老师。在一篇英文课的教学中,我们遇到了英文单词“romantic”,这位漂亮的女老师对这个词被翻译为“浪漫”大发感慨,认为这个翻译惟妙惟肖,美轮美奂,简直是妙不可言。多年以来我对老师的这个感慨记忆犹新,深表赞同。我还猜想,说不定当时我们的这个漂亮的女老师正经历着romantic的爱情呢。回车是计算机编程经常遇到的一个词汇,编程的时候标示为‘/r

2005-12-30 16:21:00 1063 1

原创 正反馈算法

正反馈算法  我最近设计了一个这样的算法:有一个算法的总体框架,抽象了共同的部分;把各个差异的部分放在具体的类里面实现。具体的子类要实现好多的特殊情况,有的情况很罕见,有的情况很常见;但是为了正确,必须涵盖所有的情况。具体的代码类似下面:templateclass ConcreteClass>bool wholeAlgo(ConcreteClass& cc){  init();  while(cc

2005-12-26 22:32:00 2024

原创 迭代的概念

Christopher Diggins在他的blog文章introducing the Iterable Concept中提到了迭代的概念,且看他的定义的实例:In pseudo-C++ this translates to roughly: concept Iterable  {  public {    typedef value_type;    templatetypename Proce

2005-12-15 21:06:00 1496

原创 维护你的测试代码

维护你的测试代码Christopher Diggins在artima自己的blog中有两片文章:Post TDD和QA and TDD,都是关于TDD的,核心的意思是在满足要求的情况下,测试代码应该尽量的减少。一般我的经验是,release的库代码应该尽量的精简高效,测试代码应该尽可能的多而全。作者的意思是要减少测试代码的数量,似乎有点矛盾。测试代码一般是白盒测试,从路径覆盖角度说,只要覆盖了全部

2005-12-14 11:18:00 920

原创 TDD规则

Michael Feathers在Artima自己的Blog中2005-9-9发表了一篇A Set of Unit Testing Rules的文章,提出了如下的代码不是单元测试:1.        访问数据库It talks to the database2.        访问网络It communicates across the network3.        访问文件系统It touc

2005-12-14 11:00:00 1009

原创 Bjarne Stroustrup大师谈

artima网站对在Bjarne Stroustrup在2003进行了专访,摘录了一些有感触的内容。1.        有责任维护类的不变性的函数应该成为类的接口The functions that are taking any responsibility for maintaining the invariant should be in the class 2.        如果一个类的成

2005-12-14 10:40:00 1183

原创 对象的完整性

对象的完整性  对象是OOP的基本单元,由于维护一个对象需要很大的代价,所以设计一个对象也需要谨慎。按照中国教科书的习惯,一般要把这个问题分解为对象的合理性、正确性和完整性。在这里我不想把人搞糊涂也不想把我搞糊涂,我只是提对象的完整性。当然也借鉴了牛人布鲁克斯的术语,他在《人月神话》里对系统概念的完整性推崇倍至。对象的完整性,从正面的角度来说,就是指对象的函数接口是完备的;从反面的角度来说,就是不

2005-12-14 10:25:00 1241

转载 在 Microsoft Visual Studio Team System 和 Microsoft Visual SourceSafe 之间选择

在 Microsoft Visual Studio Team System 和 Microsoft Visual SourceSafe 之间选择发布日期: 11/18/2005 | 更新日期: 11/18/2005Microsoft Corporation适用于:Microsoft Visual Studio 2005 Team Foundation ServerMicrosoft Visual

2005-12-12 20:10:00 938

转载 Windows Data Alignment on IPF, x86, and x86-64

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dv_vstechart/html/vcconwindowsdataalignmentonipfx86x86-64.asp?frame=trueWindows Data Alignment on IPF, x86, and x86-64Kang Su GatlinMic

2005-12-11 15:00:00 1481

转载 编写更快的托管代码

编写更快的托管代码:了解开销情况Jan GrayMicrosoft CLR Performance Team2003 年 6 月适用于:   Microsoft® .NET Framework摘要:本文介绍托管代码执行时间的低级操作开销模型,该模型是通过测量操作时间得到的,开发人员可以据此做出更好的编码决策并编写更快的代码。 下载 CLR Profiler。(330KB)目录简介(和誓言)关于托管

2005-12-07 11:32:00 1717

原创 需求分析不畅更多的是程序员的责任

作为一个程序员,当你和用户沟通作需求分析的时候,由于沟通不畅你的不愉快心情有多大?平息你的心情,继续向下看可能给你带来好的心情。听一听下面一些人的感觉:他们来自于另一个世界(这是比较客气的说法);那些提需求的家伙根本不懂怎么说话(这个说法稍为激烈一些);那是一些不知道自己要什么的蠢货(你遇到过这样的用户吗?)。怎么样?作为程序员的你是否大呼过瘾,但是作为沟通的用户可能要骂娘了。       中国有

2005-12-07 10:48:00 1466

原创 模板特化,全特化,偏特化,全部特化,部分特化的含义

这几个名词真是把人搞混了(是因为有的著作,甚至名著以讹传讹),我最近整理了以下,看看大家的意见如何。模板特化:任何针对模板参数进一步进行条件限制设计的特化版本。《泛型思维》全特化就是全部特化,即针对所有的模板参数进行特化。《c++ primer》偏特化就是部分特化,即针对部分模板参数进行特化。《c++ primer》全特化和偏特化的定义不是很严格,所以有的时候不容易让人理解。举例如下:templa

2005-12-06 11:50:00 6493 6

原创 关于set元素的不可直接更改

set的元素类型和比较函数(或者函数对象)是可以配置的,但是一旦配置就不能更改。set的元素类型不可更改是很自然的,这本就是模板的天然含义。set的比较函数虽然可以得到,但是得到的是copy,不是引用或者指针,所以不能修改(修改比较函数对象的参数)。set里面的元素不能直接的更改,一般的做法是先删除旧元素,然后添加新元素,这当然是为了维护里面元素的有序性。单独的修改set的比较函数和元素数值,都有

2005-12-06 11:45:00 3727

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除