自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(19)
  • 收藏
  • 关注

原创 do...while(0)的妙用

    在C++中,有三种类型的循环语句:for, while, 和do...while, 但是在一般应用中作循环时, 我们可能用for和while要多一些,do...while相对不受重视。    但是,最近在读我们项目的代码时,却发现了do...while的一些十分聪明的用法,不是用来做循环,而是用作其他来提高代码的健壮性。1. do...while(0)消除goto语句。通常,如果在一个

2007-02-08 22:20:00 1451

原创 Windows消息机制要点

1. 窗口过程每个窗口会有一个称为窗口过程的回调函数(WndProc),它带有四个参数,分别为:窗口句柄(Window Handle),消息ID(Message ID),和两个消息参数(wParam, lParam), 当窗口收到消息时系统就会调用此窗口过程来处理消息。(所以叫回调函数)2 消息类型1) 系统定义消息(System-Defined Messages)在SDK中事先定义好的消息,

2007-01-29 23:05:00 708

原创 矩阵快速乘法

矩阵相乘在3D变换中是被频繁用到的一种计算,但在矩阵相乘过程中用到了大量的乘法运算,而cpu中运算单元对于乘法的效率是比较低的,远低于加法运算, 所以,如果能找到一种用加法来替代乘法的方法实现矩阵相乘,将能大大提高我们程序的效率。我们的确有这种方法,这就是网上甚为流行的斯特拉森矩阵乘法,它是由v.斯特拉森在1969年提出的一个方法。下面对其进行详细介绍.一,推导对于二阶矩阵 A =  

2007-01-12 00:13:00 5142

原创 OpenGL中的转换矩阵

矩阵真的是一个很神奇的数学工具, 虽然单纯从数学上看, 它并没有什么特别的意义, 但一旦用到空间中的坐标变换,它就“一遇风云便成龙”, 大显神威了。简单的工具实现了复杂的功能,便预示着要理解它我们还是要花上点功夫的。下面就简单介绍一下OpenGL中的转换矩阵。1 转换矩阵的原理OpenGL中的转换矩阵是这样定义的:              [Xx, Yx, Zx, Tx]          

2007-01-07 11:42:00 4836 2

原创 全排列递归实现的讨论

给出1, 2, 3, 4四个数, 请编程输出其全排列, 如:1 2 3 41 2 4 31 3 2 41 3 4 2...这样的题, 我们在学校的时候一般都遇到过,而我们最先能想到的, 应该就是递归实现了,因为这和我们我理解的数学中的排列组合比较一致:先取第一个数,有4种可能,再在剩下的3个数种取出第二个数,这又有3种可能,这样下去直到取到最后一个数。 这样,4个数的全排列就有4*3*2 = 24

2007-01-06 15:00:00 2188 1

原创 经典排序算法的C++ template封装

这几天在网上看到有人总结了4种比较常见简单的排序的算法,并用C#实现了出来。看了之后不由的想起了大学时候学>的情景, 忍不住用C++实现了一遍,除了冒泡排序, 选择排序, 插入排序,希尔排序之外, 还包括了算法复杂度较好的快速排序与堆排序。 然后用C++强大的模板功能实现了一个基于policy的Sort函数, 很明显,这个Sort函数是以排序算法为policy的。 这里利用了不同的模板技术实作出多

2007-01-04 22:51:00 1466 1

原创 面试题:一个判断连续数存在性的算法

从0~13中任取出7个数,然后判断这7个数中是否存在连续的5个数, 规则如下:1) 7个数可以是重复的数.2) 0可以表示任意数例子如下:0, 1, 4, 3, 8, 0, 13--->true: 1-2-3-4-50, 1, 1, 1, 9, 10, 0--->false0, 1, 3, 9, 10, 11, 12->true: 9-10-11-12-13 0, 0, 0, 0, 0, 0, 0

2007-01-02 17:53:00 1140 1

原创 讲课的快乐

虽然, 在大学里也人模人样的给学弟学妹们讲过C语言; 虽然, 刚进项目一个月后就给新进项目的员工培训项目相关技术,知识;虽然, 我DEMO过很多项目。虽然的虽然, 这些事情的效果反映都还不错, 但是, 在做这些事情的时候, 我所感觉到的始终是压力与紧张,甚至会有一丝应付过去的想法。  然而, 最近几次给新员工培训C++的时候,我发现我的感觉不一样了,感到的不再是紧张, 而是快乐,不仅是在讲课时,哪

2006-12-21 20:17:00 605

原创 用位运算实现求绝对值-有效避开if-else判断

一般情况下,如果要我们写一个求绝对值的函数,我们的实现很有可能会是这样:templateT abs_Normal(T tNum){    if(tNum > 0.0)        return tNum;    else        return -tNum;}也就是说我们会用到一个if-else判断来决定是否反转符号位。在3D游戏软件,或一些对性能要求比较

2006-12-21 20:12:00 1307

原创 当在C++子类中重定义基类数据成员时

今天给新员工培训C++ OOP时, 讲了很多函数重定义的内容, 忽然下面提出一个关于数据成员重定义的问题,虽然不算很难,或者说比较基础,但我还真不清楚了。。。 class Base{public:    int m_i;};class Derived: public Base{public:   int m_i;}Derived oDerived;oDerived.m_i = 1;

2006-12-21 20:05:00 783

原创 程序员妙语

  很多人觉得,程序员就是一群呆头呆脑,只会和机器交流,像机器一样思考的人。可是工作两年来, 我一直觉得程序员是一群思维活跃,充满活力的非常可爱的人,至少在我呆过的项目组,我接触过的人都是这样的。而且,往往还很有sense of humore,是带程序员特色的幽默...  Cloud是我现在项目组的leader,有次我们的交谈是这样的:  Me: Do you know the url of

2006-12-17 22:41:00 675

原创 包的设计原则

包的设计原则粒度:包的内聚性原则1) 重用发布等价原则(The Release Reuse Equivalency Principle (REP))* 重用的粒度就是发布的粒度* 一个可重用的包必须为发布跟踪系统所管理,使我们在新版本发布后我们还可以继续使用老版本* 一个包中的所有类对于同一类用户来讲都应该是可重用的。2) 共同重用原则(The Common Reuse Principle (

2006-12-14 21:58:00 907

原创 面向对象的设计原则

面向对象的设计原则1 软件设计中存在的问题1)过于僵硬(Rigidity):很难加入新功能2)过于脆弱(Fragility):很难修改3)复用率低(Immobility):高层模块无法复用4)黏度过高(Viscosity): 破坏原始框架的设计2 好的设计的目标1)可扩展性(Extensibility):容易添加新的功能而不影响已有模块2)灵活性(Flexibility):代码修改

2006-12-14 21:56:00 522

翻译 C++中实现.NET风格的委托

 这几天在看C#的时候, 发现其委托这种机制非常的先进,因为自己工作中用的较多的是C++,于是便有了在C++中实现它的想法。先在网上搜了一下,便发现了这篇好文,个人觉得其实现是很“美”的,于是便翻译了过来。(欢迎批评指正)原文地址:.NET style delegates for VC++ 6 目录 引言 什么是委托? 正文

2006-12-14 21:51:00 574

原创 C++中的类型重定义

这几天工作时碰到一个C++的编译错误(我使用的是Visual C++ 7.0),说是有一个类重复定义,仔细想想我们的这个项目也是做了好几个Release了, 内部代码应该不会有这样的低级错误, 真把类型给重复定义了,检查结果正如我预料的一样。 就这样, 我左右没找到原因,被一个编译错误给卡在那里了。(在我的概念中, 程序错误的等级为:编译错误->链接错误->逻辑错误, 此错误属于最低级 )。这时我

2006-12-14 21:47:00 1007

原创 一个真正的Singleton

对于单件模式, 我想大家应该都不陌生,它可以说是GOF23个设计模式中最简单,最常用的一个模式了。但看似简单的东西却不一定好用,我就在使用时遇到了一个问题。 1       一个简单的Singleton类我们先来看一个简单的单件类的定义:#includeclass Singleton{public:static  Singleton& GetSingleton()

2006-12-14 21:42:00 597

原创 CADC一把手之我见

当前的项目是与CADC(AutoDesk中国研究中心)合作的, 由于两地办公, 在合作,交流上难免会存在一些问题, 今天,CADC的一把手过来, 主要是来了解一下存在的问题并寻求解决方案。 于是, 我们开了一个类似于座谈会的会。 对方是AutoDesk中国研究中心的老大, 仔细回忆了一下, 好像工作以来, 遇到的最历害的人要算他了, 复旦毕业, 留学美国, 加入Autodesk, 回中国创办C

2006-12-14 21:38:00 494

原创 auto_ptr解析

  auto_ptr是当前C++标准库中提供的一种智能指针,或许相对于boost库提供的一系列眼花缭乱的智能指针, 或许相对于Loki中那个无所不包的智能指针,这个不怎么智能的智能指针难免会黯然失色。诚然,auto_ptr有这样那样的不如人意,以至于程序员必须像使用”裸“指针那样非常小心的使用它才能保证不出错,以至于它甚至无法适用于同是标准库中的那么多的容器和一些算法,但即使如此,我们仍然不能否认

2006-12-14 21:16:00 773

原创 用EditPlus配置VC环境(VC8)

  对于C++开发, 我想在Windows下大家用的最多的应该是MS的VC++。但其强大的功能背后却有着“启动速度慢”,“占用资源多”的缺点,尤其是VS2005, 速度不是一般的慢。 当然,这也十分正常,鱼和熊掌向来是很难兼得。 用这个大家伙开发公司的大项目,用起来自然是得心应手;但对于一般的小程序,就有点“杀鸡用牛刀”的感觉了。 然而, 无论在工作还是平时自己学习中,写个小程序, 通常只要一个c

2006-10-29 23:42:00 2128

空空如也

空空如也

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

TA关注的人

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