摘要:
单例模式也是一种比较常见的设计模式,它到底能带给我们什么好处呢?其实无非是三个方面的作用:第一、控制资源的使用,通过线程同步来控制资源的并发访问;第二、控制实例产生的数量,达到节约资源的目的。第三、作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。比如,数据库连接池的设计一般采用单例模式,数据库连接是一种数据库资源。软件系统中使用数据库连接池,主要是节省打开或者关闭数据库连接所引起的效率损耗,这种效率上的损耗还是非常昂贵的。当然,使用数据库连接池还有很多其它的好处,可以屏蔽不同数据数据库之间的差异,实现系统对数据库的低度耦合,也可以被 阅读全文
摘要:
1、 将 Invalidate()替换为 InvalidateRect() Invalidate()会导致整个窗口的图象重画,需要的时间比较长,而 InvalidateRect()仅仅重画 Rect 区域内的内容,所以所需时间会少一些。虫虫以前很懒,经常为一小块区域的重画就调用 Invalidate(),不愿意自己去计算需要重画的 Rect,但是事实是,如果你确实需要改善闪烁的情况,计算一个 Rect 所用的时间比起重画那些不需要重画的内容所需要的时间要少得多。2、 禁止系统擦除你的窗口 系统在需要重画窗口的时候会帮你用指定的背景色来擦除窗口。可是,也许需要重画的区域也许非常小。或者,在... 阅读全文
摘要:
掌握C++对象模型底层知识的人都知道,C++利用虚函数的机制来实现运行期的多态。例如一个类申明如下:classA{public:A(){}~A(){}virtualvoidf1(){printf("Founctionf1called\n");}virtualvoidf2(){printf("Founctionf2called\n");}virtualvoidf3(){printf("Founctionf3called\n");}private:intn;};复制代码那么A对象在内存中的结构图大概如下: (缺失)如上图:可以看到A对象的 阅读全文