- 博客(11)
- 收藏
- 关注
原创 多线程全局对象析构导致线程运行出错
这样的问题应该大多出现在大的程序里面,出现这样问题一般具备几个条件1、全局对象太多;2、多线程;3、线程很多,主进程没有等待线程结束4、主进程由于某种原因终止原因分析:首先全局对象太多,主进程结束时需要一定的时间析构各全局对象;此时,先析构的全局对象由于主进程忙着析构其他的全局对象,所以线程依然是可以访问这部分内存的,可是,由于已经析构了,所以可能导致线程程序出问题
2013-07-24 10:23:06 1299
原创 STL中的capacity和size
STL中的vector,list,queue等,甚至string都支持长度或size的动态增加,这在存储事先size不知道的,或者size动态变化的多对象组合(类似于数组)来说是很方便的。事实上,为了支持size的动态变化,STL中的vector,list以及string会申请比size大的空间,即capacity,用于之后添加新的元素。这样做就可以在添加新元素时,直接存放在之前已经预先申请的空间
2012-06-17 21:07:19 1161
原创 设计模式之factory method
在现实生活中,有很多东西都是作为附属物出现的,如手机套附属于手机,电脑膜附属于电脑,我们很多时候都会把精力集中在主要物中,而忽略这些附属物。面向对象编程能很好的反映现实中实际存在的物件以及关系,factory method设计模式是解决这样的主从关系明显的方法,能帮我们抓住主要重点。factory method设计模式在UML类图中如下表示Produce和Creator
2012-06-08 23:56:12 409
原创 Makefile文件
Makefile一般用来编译软件和安装软件,在大型的软件工程中经常用到。其实如果了解了Makefile的机制之后,也可以用来做其他的事情,网上就有用Makefile来遍历文件目录的例子。Makefile的原理非常地简单,其基本规则如下:Target ... : Prerequisites ...Command...意思就是,如果Prerequisites中有
2012-06-03 13:30:47 441
原创 Singleton模式创建唯一对象
Singleton模式用于创建一个唯一的对象,既然是唯一的,那么肯定就不支持拷贝构造和赋值操作符,同时,也不能创建其他的对象,所以不能将构造函数放到public中而让用户任意的构造对象。Singleton模式为这样的需求提供的解决方案。直接上一个例子吧!#include using namespace std;class Singleton {public: stati
2012-05-15 12:05:09 423
原创 [读书笔记]类继承时不同类型成员函数的表现
最近在看《effective C++》,这是一本非常不错,能够指导实际编程的书。在看到第34条款:区分接口继承和实现继承,对类在继承过程中不同类型成员函数表现出来的不同特性有了更深刻的体会。类中的成员函数从某一方面分为三种:pure virtual函数(纯虚函数),impure virtual函数(非纯虚函数,即简单的虚函数),non-virtual函数(非虚函数),这三种函数的声明分别如下:
2012-05-06 14:05:30 377
原创 百度一道面试题引发的思考
最近在人人网上看到有同学分享各公司笔试面试题汇总,看到百度有道题,觉得比较有意思。因为题目看很简单,我当时就想百度为什么出这样的问题,因为在编程过程中根本不会遇到样的问题,并且当时给出了一种“打趣”的解法,即下面说到的SumGet方法。【百度面试题】有101个数,为[1,100]之间的数,其中一个数是重复的,如何寻找这个重复的数,其时间复杂度和空间复杂度是多少?看着就觉得好笑,出题人怎么会
2012-04-12 16:07:22 1220
原创 FreeNAS服务器避免还原系统用户的解决方案
FreeNAS服务器有开机还原功能,也就是说用pw useradd命令创建的用户在开机重启后用户就没了(FreeNAS自带的web创建的用户可能不会被还原,没试过),由于自己接触系统较少,所以在解决如何在开机重启后用户还存在的问题上颇费脑筋,最后想到了一个比较拙劣的方法,总算解决了问题。我调查了,在unix/linux中,与系统用户有关的有几个文件,都在etc目录下,分别是:passwd、grou
2012-03-19 21:20:45 807
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人