摘要: 编译 #gcc -g -o test test.c 内存检查#valgrind --tool=memcheck --leak-check=yes --show-reachable=yes ./test Memcheck 能够检测出内存问题,关键在于其建立了两个全局表。 对于进程的整个地址空间中的每一 阅读全文
posted @ 2017-03-01 23:50 blcblc 阅读(3006) 评论(0) 推荐(1)
摘要: 首先来看看Reactor模式,Reactor模式应用于同步I/O的场景。我们以读操作为例来看看Reactor中的具体步骤:读取操作:1. 应用程序注册读就需事件和相关联的事件处理器2. 事件分离器等待事件的发生3. 当发生读就需事件的时候,事件分离器调用第一步注册的事件处理器4. 事件处理器首先执行 阅读全文
posted @ 2017-03-01 23:04 blcblc 阅读(199) 评论(0) 推荐(0)
摘要: http://www.cnblogs.com/zhuyf87/archive/2013/03/23/2976714.html 第一种是正常的new,它是语言内建的,不能重载。 new operator完成以下三件工作: 1. allocate memory for this object. 2. c 阅读全文
posted @ 2017-03-01 20:49 blcblc 阅读(207) 评论(0) 推荐(0)
摘要: 这篇文章的内容还是不错的: http://www.cnblogs.com/zhuyf87/archive/2012/12/08/2808290.html 这个循环本身没有明显错误,存在的只是一些风格上的问题。 (1)尽量做到const正确性。如果迭代器没有用来修改vector中的元素,应该改用con 阅读全文
posted @ 2017-03-01 18:19 blcblc 阅读(203) 评论(0) 推荐(0)
摘要: vector的元素类别T,必须具备assignable和copyable两个性质。 vector的容量很重要: 1. 一旦内存重新配置,和vector元素相关的所有references、pointers、iterators都会失效。 2. 内存重新分配很耗时间。 所以,如果程序管理了和vector元 阅读全文
posted @ 2017-03-01 18:11 blcblc 阅读(336) 评论(0) 推荐(0)
摘要: 最重要的区别,是内部实现上。deque是分段存储的。 都是支持随机存取。 http://www.cnblogs.com/zhuyf87/archive/2012/12/09/2809896.html deque与vector的主要不同之处在于: 1. 两端都能快速安插和删除元素,这些操作可以在分期摊 阅读全文
posted @ 2017-03-01 17:54 blcblc 阅读(1049) 评论(0) 推荐(0)
摘要: 之前有一篇文章: http://www.cnblogs.com/charlesblc/p/6341605.html 今天又看到其他的一篇: http://www.cnblogs.com/fengyv/p/3775953.html 补充一下: 运行流程如下:1、sendfile系统调用,文件数据被co 阅读全文
posted @ 2017-03-01 17:08 blcblc 阅读(165) 评论(0) 推荐(0)
摘要: http://blog.csdn.net/conowen/article/details/7256260 这里有几种计算平台的Flynn分类法 GPU是SIMD 多核CPU是MIMD 硬件结果多核处理器是 SMP Symmetric Multi-Processor 阅读全文
posted @ 2017-03-01 16:58 blcblc 阅读(758) 评论(0) 推荐(0)
摘要: mount -t tmpfs tmpfs ~/build -o size=1G -t 对应的是类型 -o 对应的是选项 tmpfs是Linux/Unix系统上的一种基于内存的文件系统。tmpfs可以使用您的内存或swap分区来存储文件。 tmpfs是基于Linux的虚拟内存管理子系统,面向普通用户的 阅读全文
posted @ 2017-03-01 16:30 blcblc 阅读(1333) 评论(0) 推荐(0)
摘要: new操作符的static(因为new的时候,还没有空间和实例,还需要分配地址,所以肯定是static的) register,以前的关键词了。建议放置在寄存器里面,而且获取其地址是非法的。现在统一忽略。 阅读全文
posted @ 2017-03-01 12:48 blcblc 阅读(241) 评论(0) 推荐(0)
摘要: 父类加了virtual,子类不需要加virtual,多余。加了也不会报错。 父类中不是virtual,子类是virtual,那么父类中的不是虚函数,子类及子子类的派生类中该函数才是虚函数 阅读全文
posted @ 2017-03-01 12:45 blcblc 阅读(910) 评论(0) 推荐(0)
摘要: 除了在头文件里面 #ifndef xxx 可以在实际 include这个头文件的前后,加上 #ifndef,这样就不会打开和扫描这个头文件了。 另外,下面这篇文章里面也总结了 http://www.cnblogs.com/jacktu/archive/2010/07/15/1777974.html 阅读全文
posted @ 2017-03-01 12:42 blcblc 阅读(836) 评论(0) 推荐(0)
摘要: 这个技巧,不仅能够侦测预定义的转换,也能够侦测用户自定义的转换。 阅读全文
posted @ 2017-03-01 12:28 blcblc 阅读(220) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-03-01 12:27 blcblc 阅读(140) 评论(0) 推荐(0)
摘要: 体会这一个例子,检查是否是一个类:P187 阅读全文
posted @ 2017-03-01 12:23 blcblc 阅读(212) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-03-01 12:14 blcblc 阅读(332) 评论(0) 推荐(0)
摘要: 首先,类模板必须被显式特化。当然了,可以通过一个辅助函数,通过参数类型,返回特化的类模板,来间接处理。 这个技术被广泛应用在ptr_fun, make_pair, mem_fun, back_inserter等辅助函数里面,来完成那些易于出错的类模板特化任务。 跟函数实参推导(根据实参所在的名字空间 阅读全文
posted @ 2017-03-01 12:04 blcblc 阅读(357) 评论(0) 推荐(0)
摘要: 一个是元素类型,一个是配置器类型。 当实例化一个 vector<int>这样的标准容器的时候,得到的其实是 vector<int, std::allocator<int>>。 但是后一个参数可以有缺省值,如下: template <typename T, class Cont=Deque<T> > 阅读全文
posted @ 2017-03-01 11:54 blcblc 阅读(246) 评论(0) 推荐(0)
摘要: traits基本利用了上一篇文章的思想,通过局部特化,来返回针对特定类型的信息。 可以自己实现traits,约定俗成了,返回特性信息。 也可以利用iterator的traits信息。 iterator就是一个从不同容器内获取各自不同类型迭代器的经典例子。获得特定类型迭代器之后,就可以利用迭代器的tr 阅读全文
posted @ 2017-03-01 11:34 blcblc 阅读(465) 评论(0) 推荐(0)
摘要: 上一次面试也问到的。的确是利用了模板元编程。traits也是利用了这一点。 可以方便的获知一个类是不是int. 更重要的是,编译器获知一个变量,是不是指针;是不是数组,甚至是数组的长度;获知是不是指向数据成员的指针。 关于数组和数组长度: 阅读全文
posted @ 2017-03-01 11:19 blcblc 阅读(273) 评论(0) 推荐(0)
摘要: 其实一个重要思想就是利用局部特化。注意特化不仅仅可以用类型,还可以用数值。如下: 阅读全文
posted @ 2017-03-01 11:07 blcblc 阅读(175) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2017-03-01 10:51 blcblc 阅读(282) 评论(0) 推荐(0)
摘要: 模板成员指的是模板里面的成员,有的成员(函数)可以特化。 template<> void ClassA<int> func(); 成员模板,指的是自身是模板的成员。 template <typename T> SList(T begin, T end); 成员模块,还可以用来写拷贝构造函数和赋值操作 阅读全文
posted @ 2017-03-01 10:45 blcblc 阅读(385) 评论(0) 推荐(0)
摘要: 都跟里氏替换原则有关。 协变:你可以用一个子类对象去替换相应的一个父类对象,这是完全符合里氏替换原则的,和协(谐)的变。如:用Swan替换Bird。 逆变:你可以用一个父类对象去替换相应的一个子类对象,这貌似不符合里氏替原则的,不和协(谐)的逆变。如:用Bird替换Swan。 阅读全文
posted @ 2017-03-01 00:47 blcblc 阅读(176) 评论(0) 推荐(0)
摘要: 局部特化所用的类型,可以由多个类型组成,比如: 也可以只针对成员函数进行特化。 阅读全文
posted @ 2017-03-01 00:37 blcblc 阅读(352) 评论(0) 推荐(0)