摘要: 尽量缩小共享对象的加锁范围,减少锁本身出现竞态条件的概率(导致内核态和用户态切换的时间开销)。尽量避免把本无逻辑依赖关系的共享对象关联起来(例如把对象纳入某些种类的容器中),这是因为统一操作关联后对象产生竞态条件的概率会增加(很可能是指数级的上涨),同步的时间开销不言而喻。在保持程序逻辑的前提下,缩小共享对象的效应(即程序的执行依赖于这个对象的状态)边界以减少同步的时间开销,这里所谓的边界是指执行... 阅读全文
posted @ 2010-06-25 02:11 tnt_vampire 阅读(295) 评论(0) 推荐(0) 编辑
摘要: QGraphicsItem构造后默认的坐标系与其parent的坐标系等同。QGraphicsItem绝大部分操作中的涉及坐标值的变量,在本操作的定义过程中都应该被当做自身坐标系下的值来处理;QGraphicsItem::pos()的返回值、QGraphicsItem::setPos()的参数是少数例外之二,用于代表parent坐标系下的坐标值。当QGraphicsItem的位置在其parent坐标... 阅读全文
posted @ 2010-06-14 23:30 tnt_vampire 阅读(5973) 评论(0) 推荐(0) 编辑
摘要: 程序中,有些对象的生命周期是静态的可预测的,这时只要把构造销毁的时机硬编码进程序即可;然而有些对象的生命周期却和运行时环境相关(例如在线程间共享对象,无“引用”时销毁),对于这种类型的对象必须借助额外的信息和设施来控制,基于引用计数的封装boost::shared_ptr及其相关设施就是其中一种(我所了解的还有基于标记-清除的GC),下面就易错的地方小结下:一般而言,不要同... 阅读全文
posted @ 2010-06-14 23:24 tnt_vampire 阅读(3850) 评论(1) 推荐(1) 编辑
摘要: 把关于虚函数不清楚的地方小测试了下,记录下来,备忘测试编译器:mingw32-gcc-3.4.5[代码]output:A::f3A::f1B::f1B::f2A::f1A::f2size of A is 4size of B is 4virtual pointer's value of type A is 4508528virtual pointer's value of type B is 45... 阅读全文
posted @ 2010-05-15 14:51 tnt_vampire 阅读(277) 评论(0) 推荐(1) 编辑
摘要: 看了这篇文章后,小思考了下c++的引用其实我觉得如果调用者在调用接口上已经涉及了指针的话,接下来把它转为引用只不过是减少心理上的负担而已;如果操作或调用者不能精确的确定该指针调用操作后所处的状态,却试图假定其处于某一状态加以使用,那么即使接下来把它转为引用也于事无补,本身该出现的问题一样会出现的。当然,在接口上直接使用引用声明,使用者是能够放下心理负担,不用作状态检查了(前提是被调用者必须保证调用... 阅读全文
posted @ 2010-04-24 15:29 tnt_vampire 阅读(218) 评论(0) 推荐(0) 编辑
摘要: [代码] 阅读全文
posted @ 2010-04-12 01:57 tnt_vampire 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 矩阵A和B等价:存在可逆方阵P和Q,使PAQ=B。方阵A和B合同:存在可逆方阵C,使CTAC=B方阵A和B相似:存在可逆方阵C,使C-1AC=B矩阵的合同或相似关系能够得到等价关系,合同不一定相似,相似不一定合同;如上,当C是正交矩阵(CCT=E)时,A和B合同并相似;另外,当矩阵A和B为实对称矩阵时必存在有正交性质的矩阵C,使A和B合同并相似 阅读全文
posted @ 2010-04-12 01:23 tnt_vampire 阅读(4681) 评论(0) 推荐(0) 编辑
摘要: kosaraju算法是用于求有向图的强连通分量的算法之一步骤概要:1. DFS有向图G,并以后根序记录节点2. 把存在于记录集中且最后访问节点作为起点,DFS反图GT,并以先根序把节点从记录中剔除;3. 若此次不能DFS反图GT所有节点,则重复步骤2,直到所有节点都被剔除出记录;每次剔除掉的节点集即为原有向图G的一个强连通分量简要证明:1. 第一次DFS有向图G时,最后记录下的节点必为最后一棵生成... 阅读全文
posted @ 2010-04-12 00:51 tnt_vampire 阅读(1529) 评论(0) 推荐(0) 编辑