C++
文章平均质量分 62
fox1987
这个作者很懒,什么都没留下…
展开
-
thrift oneway的问题
今天同事试验oneway的时候,发现client发送的消息数目和server接收的不一致。自己也做了下试验。发现也是不一致。数据结构定义如下:book.thriftnamespace cpp codelabstruct Book { 1: i32 book_id 2: string name}server 端 hello.thrift 定义如下:include "book.原创 2013-08-08 08:29:12 · 2446 阅读 · 0 评论 -
C++ 虚函数和多重继承的内存布局初探
C++ 对象的内存布局一切以事实说话:代码: 1: #include 2: 3: class A { 4: public: 5: int a; 6: int b; 7: int c; 8: }; 9: 10: int main(int argc, ch原创 2013-09-23 16:33:22 · 633 阅读 · 0 评论 -
编译期检查class是否有继承关系
转载至:http://pthread.blog.163.com/blog/static/1693081782010715104330491/最近看sigc++的代码,看到其中有编译期检测class是否有继承关系的代码,觉得比较精妙,于是拿出来剖析一下代码中的注释和很多不必要的#ifdef已经被我去掉,该段代码的用法如下,假设有struct foo{};struct bar{转载 2013-10-12 16:34:14 · 799 阅读 · 0 评论 -
thrift 安装
thrift 安装需要libevent boost libevent 安装wget http://cloud.github.com/downloads/libevent/libevent/libevent-1.4.14b-stable.tar.gztar zxvf libevent-1.4.14b-stable.tar.gzcd libevent-1.4.14b原创 2013-10-21 10:18:54 · 1101 阅读 · 0 评论 -
makefile 的相关知识
还是要写makefile了,虽然一直很不喜欢写这个东东。所以整理下自己找到的相关资料入门还是看陈浩的这个跟我一起写makefile一些高级用法和资料整理如下:makefile会按照文件名寻找并执行:查找的文件名顺序为:“GNUmakefile”、“makefile”、“Makefile”。字符串处理函数subst 函数名称:字原创 2014-02-12 11:05:14 · 770 阅读 · 0 评论 -
C++ throw()引发的core
总结最近遇到了一个问题,简单说就是一个禁止抛出异常的函数内抛出了异常所致(无论函数内部直接抛出异常还是间接调用函数抛出异常)官方文档说明如下: 即一个throw()的函数意味着对任何异常调用std::unexpected而std::unexpected函数的官方文档说明如下:即该函数默认为调用terminate函数 而terminate函数的说明如下:原创 2014-03-03 20:23:52 · 2195 阅读 · 0 评论 -
linux 的nohup & 和daemon 总结
今天和同事聊起了这个问题,就查阅了一下相关资料,总计如下 nohupnohup 用途:不挂断的运行命令语法 : nohup command [arg] &描述: 运行命令,忽略所有SIGHUP信号。 输出到当前目录的nohup.out文件中,如果当前目录不可写,就重定向到$HOME/nohup.out中 一般是要和&配合使用。&用户: 将一个程原创 2014-03-05 10:19:31 · 17005 阅读 · 2 评论 -
linux的waitpid 和wait 以及fg 和bg命令
接上篇:linux 的nohup & 和daemon 总结, 这里总结下waitpid和bg 和fg命令waitpid函数说明:#includesys/types.h>#include定义函数 pid_twaitpid(pid_t pid,int * status,int options);其他数值意义如下:pid等待进程组识别码为 pid 绝对值的任何子进程。原创 2014-03-08 11:43:40 · 1887 阅读 · 0 评论 -
C 调试工具小记
记录下C的调试g原创 2014-07-20 18:14:26 · 790 阅读 · 0 评论 -
C++ 宏 为什么建议 do while (0) 的写法
在C++中,在使用宏的时候,建议使用do { xxxx;} while(0)的写法hao原创 2014-08-16 23:09:53 · 1567 阅读 · 0 评论 -
STL sort源码剖析
转载自:http://www.cnblogs.com/imAkaka/articles/2407877.htmlSTL的sort()算法,数据量大时采用Quick Sort,分段递归排序,一旦分段后的数据量小于某个门槛,为避免Quick Sort的递归调用带来过大的额外负荷,就改用Insertion Sort。如果递归层次过深,还会改用Heap Sort。本文先分别介绍这个三个Sort,再整合转载 2013-09-16 16:03:13 · 841 阅读 · 0 评论 -
C++ 空类,默认产生哪些成员函数
C++ 空类,默认产生哪些成员函数。 默认构造函数、默认拷贝构造函数、默认析构函数、默认赋值运算符 这四个是我们通常大都知道的。但是除了这四个,还有两个,那就是取址运算符和 取址运算符 const即总共有六个函数。 一个示例如下: 1: class Empty 2: 3: { 4: 5: public:原创 2013-08-30 15:46:32 · 1474 阅读 · 0 评论 -
C++的五种内存存储区
http://www.51weixue.com/thread-311-1-1.html 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一转载 2013-08-08 08:30:43 · 966 阅读 · 1 评论 -
thrift 的一些相关知识
thrift是一个很好用的跨语言的rpc框架。 但是其也有一些需要注意的问题: 第一: 发现其对于类型检查没有那么严格: 最近工作中发现是可以把一个int类型直接付给string,而没有任何warning 第二: 其提供了一个DebugProtocolToDebugSring 可以用来作为debug的结构输出。还挺方便您的原创 2013-08-08 08:32:44 · 755 阅读 · 0 评论 -
c++ stl set
虽然经常使用c++的stl,set也是经常使用的一个容器,但是发现对于set的理解还是比较浅显。今天使用时无意就撞入了一个坑里。 stl中set和map都是用红黑树实现的。set是key和value相同的结构。 代码如下: 1: #include 2: #include 3: #include原创 2013-08-08 08:33:00 · 857 阅读 · 0 评论 -
thrift 的required、optional探究
原因经常使用thrift来编写rpc通信,但是对下面两个问题还是有些疑惑thrift 的required、optional和不写有什么区别optional不设置isset的话被传输后值?实验今天就自己编写代码测试了一下。如下:定义book.thrift 如下: 1: namespace cpp codelab原创 2013-08-22 14:26:57 · 9498 阅读 · 0 评论 -
深度探索C++对象模型读书笔记-第六章执行期语意学
在函数中,编译器会帮助将析构函数(Destructor) 安插在相应的位置。对于函数中的局部对象,会将析构函数安插在对象的每一个离开点。例如: 1: void Function(int a) { 2: Object obj; 3: swithch(a) { 4: case 0 :....;return; 5: case原创 2013-08-11 17:32:23 · 854 阅读 · 0 评论 -
深度探索C++对象模型读书笔记-第七章站在对象模型的尖端
Template模板是在编译时期而非执行时期被计算的。因此其不会带来效率的降低。 1: const Pointfloat> &ref = 0;该语句会实例化一个Point的float实例。该语句会被扩展为: 1: Pointfloat> temp(float(0)); 2: const Pointfloat> &ref = temp;原创 2013-08-12 22:11:01 · 897 阅读 · 0 评论 -
[转载]C++编译器与链接器工作原理
[转自:http://blog.csdn.net/success041000/article/details/6714195] 1. 几个概念 1)编译:把源文件中的源代码翻译成机器语言,保存到目标文件中。如果编译通过,就会把CPP转换成OBJ文件。 2)编译单元:根据C++标准,每一个CPP文件就是一个编译单元。每个编译单元之间是相互独立并且互相不可转载 2013-08-08 08:29:10 · 867 阅读 · 0 评论 -
C++异常机制的实现方式和开销分析
转载自:http://baiy.cn 以作收藏在我几年前开始写《C++编码规范与指导》一文时,就已经规划着要加入这样一篇讨论 C++ 异常机制的文章了。没想到时隔几年以后才有机会把这个尾巴补完 :-)。还是那句开场白:“在恰当的场合使用恰当的特性” 对每个称职的 C++ 程序员来说都是一个基本标准。想要做到这点,就必须要了解语言中每个特性的实现方式及其时空开销。异常处理由于涉及大量底层转载 2013-08-12 22:16:35 · 1082 阅读 · 0 评论 -
strcmp函数的使用的一个坑
根据百度百科的:http://baike.baidu.com/view/1026924.htm函数简介原型:extern int strcmp(const char *s1,const char * s2);所在头文件:string.h功能:比较字符串s1和s2。一般形式:strcmp(字符串1,字符串2)说明:当s1当s1==s2时,返回值= 0当s1>s2时原创 2013-08-17 07:32:54 · 6210 阅读 · 1 评论 -
STL之vector
vector是一种序列式容器,所谓序列式容器,即其中的元素可以排序,但是并未排序。可以把vector可作为加强版的array,它和array一样,存储空间是一段连续的内存,因此支持随机访问,但是,和array相比,vector支持动态增加数据。 vector支持动态增加数据,同时又需要保持空间的连续性从而支持随机访问,因此,在对vector动态增加元素时,如果旧有空间装满,需要申请更大的内存,并且原创 2014-09-28 17:28:59 · 788 阅读 · 0 评论