上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 58 下一页
  2015年1月12日
摘要: 对于信号量,可以认为是一个仓库,有两个概念,容量和当前的货物个数。P操作从仓库拿货,如果仓库中没有货,线程一直等待,直到V操作,往仓库里添加了货物,为了避免P操作一直等待下去,会有一个超时时间。V操作往仓库送货,如果仓库满了,线程等待,直到有P操作,从仓库中拿走货物,有空的位置。创建信号量,设置容量... 阅读全文
posted @ 2015-01-12 22:03 Andy Niu 阅读(45774) 评论(4) 推荐(3)
  2015年1月10日
摘要: 测试场景,Test,lib1,lib2,dll1,dll2,分为下面四种情况:1、Test->lib1->lib2lib1编译自己的代码,对lib2的部分,只需要lib2的头文件,对lib2的代码实现,使用占位符关联。生成Test连接的时候,把lib1的代码实现包含进来,再递归,把lib1中关联li... 阅读全文
posted @ 2015-01-10 18:33 Andy Niu 阅读(4902) 评论(0) 推荐(0)
  2014年10月21日
摘要: 原文:http://blog.csdn.net/xiaoxian8023/article/details/26285361 如果你看到了这篇博文,绝对保证不虚此行。仅仅5行脚本代码,即可破解99%的过期软件。 这件事的背景:最近在找了一些学习资料,其中有Rational Rose画的图,好久... 阅读全文
posted @ 2014-10-21 21:42 Andy Niu 阅读(1910) 评论(0) 推荐(0)
  2014年6月20日
摘要: 1、一个资源,很多人用,如果大家都不delete,必定造成资源泄露2、如果多个人进行delete,必定导致未定义行为。3、因此,只能有一个delete,而且必须是最后一个使用者进行delete。4、那么问题来了,我怎么知道谁是最后一个使用者?在多线程的环境中更加不可能判断出来。那怎么办呢?5、不要想... 阅读全文
posted @ 2014-06-20 17:22 Andy Niu 阅读(654) 评论(0) 推荐(0)
  2014年5月9日
摘要: 原文:http://www.cnblogs.com/qyaizs/articles/2039101.html分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; ... 阅读全文
posted @ 2014-05-09 18:53 Andy Niu 阅读(189) 评论(0) 推荐(0)
  2014年4月10日
摘要: 1、尽量使用vector和string替换数组,但是老的代码还是使用数组。如果老的接口期望是数组,怎么办? 需要把vector和string,暴露出数组接口,也就是第一个元素的地址。2、考虑方法DoSomething(const int* pInt,size_t size),对于vector vec,调用如下: DoSomething(&vec[0], v.size()); 这里有个问题,vec的大小可能为0,更安全的做法是: if(!vec.empty()) { DoSomething(&vec[0], v.size()); }3、考虑,能不能使用begin... 阅读全文
posted @ 2014-04-10 19:22 Andy Niu 阅读(741) 评论(0) 推荐(0)
  2014年4月9日
摘要: 1、最近一些年C++语言增加的特性有: a、RTTI,namespace,bool,关键字mutable和explicit,enums,以及const static int可以直接初始化。 b、扩充了template的弹性,允许成员方法模版。 c、强化了异常处理机制。 d、修改了内存分配例程。2、标准程序库分为以下几项: a、支持C标准程序库。 b、支持String c、支持国别,地域化,本地化,localization。 d、支持I/O e、支持数值应用。 f、支持广泛用途的容器和算法,STL。 阅读全文
posted @ 2014-04-09 16:20 Andy Niu 阅读(244) 评论(0) 推荐(0)
摘要: 1、考虑下面的问题,游戏软件中有角色A,B,角色又可以细化为A1,A2,A3;B1,B2,B3,两类角色之间相互攻击。即A1可以攻击B1,B2,B3,B1可以攻击A1,A2,A3。C++的多态,只根据方法拥有者的真实类型,决定调用哪个方法,而不关心形参的真实类型,只关心形参的表面类型。考虑方法A.Attack(B),如何根据A,B的真实类型虚化?2、使用虚方法+RTTI(运行时期类型识别),在对于A的Attack方法声明为virtual,在重写的方法中,使用typeid判断B的真实类型,决定调用哪个方法。3、只使用虚方法,在A的Attack(B)方法,调用B的AcceptAttack(A)方法 阅读全文
posted @ 2014-04-09 16:03 Andy Niu 阅读(342) 评论(0) 推荐(0)
摘要: 1、引用计数这项技术,是为了让等值对象对象共享同一实体。此技术的发展有两个动机:a、记录堆上分配的对象,是垃圾回收机制的简单原理;b、节省内存,多个对象具有相同的值,存储多次很笨。速度更快,等值对象避免了对象复制,也就减少了构造和析构。2、考虑,基于引用计数的String,String类中有个StringValue指针,stringValue包含char指针data和引用计数refCount。注意,refCount属于StringValue,不应该属于String,否则要有多个引用计数副本,还要保持同步。3、考虑下面的问题,多个String共享同一个StringValue,如果只是读取操作,没 阅读全文
posted @ 2014-04-09 16:02 Andy Niu 阅读(359) 评论(0) 推荐(0)
  2014年4月8日
摘要: 1、在栈上分配的数组,大小必须在编译时确定,也就是编译时常量。在堆上分配,大小可以是变量。思考,为什么? 在栈上分配数组,可以认为直接在栈顶挪出一块内存,必须直到大小。2、数组名是一个指针常量,不能修改指向。3、在大部分情况下,可以把数组名认为是一个指针(不能修改指向),但是有两种情况需要注意,数组名不是指针:a、sizeof(数组名)计算数组的长度;b、对数组名取地址&,返回的是数组首地址,也就是说&a和a相等。考虑指针的情况,对于sizeof(指针),大小是4个字节。对于指针,存在三个值:a、指针本身的地址,也就是指针存放在哪里;b、指针值,指针指向的地址;c、指针解引用, 阅读全文
posted @ 2014-04-08 18:23 Andy Niu 阅读(516) 评论(0) 推荐(0)
上一页 1 ··· 16 17 18 19 20 21 22 23 24 ··· 58 下一页