- 博客(15)
- 收藏
- 关注
转载 Google benchmark:一个简单易用的C++ benchmark库
在写C++程序的时候,经常需要对某些函数或者某些类的方法进行benchmark。一般来说,我们可以写一些简单的程序来进行测试, 然后跑一定的次数(比如10w次),看看跑了多久。比如我写了下面这个从int到string的转换程序:123456string uint2str(unsigned int num){ ostringstream oss; oss n
2017-09-14 10:50:35
5315
2
原创 linux 下用户栈最大值
用户栈最大值大默认8M ,可通过ulimit 查看和修改查看:ulimit -a linux中,栈的最大值没有存储在可执行程序中。为了证明Linux中进程的栈最大值是否存储在可执行程序中还是在运行时从系统中读取,进行测试。测试代码: #include
2017-08-03 17:32:23
3132
原创 线程安全的单例模式
pthread版本使用模板templateclass Singleton : boost::noncopyable{ public: static T& instance() { pthread_once(&ponce_, &Singleton::init); return *value_; } private: Singleton(); ~S
2017-07-26 19:20:16
372
原创 什么是spurious wakeups(虚假唤醒)
查阅了很多资料,发现网上说的很多关于Spurious wakeups 的描述都是错误的。第一次遇到Spurious wakeups是在使用条件变量时,wait端需要使用while来等待条件变量二不能使用if语句。如:// wait端pthread_mutex_lock(mtx);while(pass == 0) pthread_cond_wai
2017-07-26 18:17:32
8932
2
转载 打洞原理及应用
什么是打洞?在传统的集中式网络中,都是一台服务器(集群)对外提供服务,所有客户端都依赖中央服务器进行与服务端的通信或者其他客户端的通信。如图 这样的通信方式,一个数据包从一个客户端发送到另一个客户端都要在服务端中进行中转,服务端承受的压力非常大,很容易因为线程问题而当机。 于是提出另一种通信方式:P2P通信(peer to peer) 对等通信。 即:在p2p的网络中,所有网
2017-07-25 18:32:47
15202
1
原创 C++对象模型
单一继承 virtual_ptr.cpp[cpp] view plain copy print?class A { public: virtual int foo() { return val ; } virtual int funA() {} private:
2017-03-21 13:37:17
415
转载 malloc原理和内存碎片
本文转自http://www.cnblogs.com/zhaoyl/p/3820852.html其中图片部分进程虚拟地址空间有些错误 在.data端的高地址方向还有bss端当一个进程发生缺页中断的时候,进程会陷入内核态,执行以下操作: 1、检查要访问的虚拟地址是否合法 2、查找/分配一个物理页 3、填充物理页内容(读取磁盘,或者直接置0,或者啥也不干)
2017-03-20 17:18:29
353
转载 Linux中fork,vfork和clone详解(区别与联系)
fork,vfork,cloneUnix标准的复制进程的系统调用时fork(即分叉),但是Linux,BSD等操作系统并不止实现这一个,确切的说linux实现了三个,fork,vfork,clone(确切说vfork创造出来的是轻量级进程,也叫线程,是共享资源的进程)系统调用描述forkfork创造的子进程是父进程的完整副本,
2017-03-13 20:16:16
464
转载 shared_ptr内部结构
原文:http://blog.csdn.net/csfreebird/article/details/8551369shared_ptr shared_ptr源自于著名的boost库,智能指针自从Scott Meyers在其作品>首次提出并给出一个示范版本后得到了很大的发展。Loki和Boost是影响广泛的两个,Boost的智能指针较易使用,而Loki以功能强大思想深邃著称于世。
2016-12-01 14:53:06
987
转载 c ++的operator的两种用法
operator,它有两种用法,一种是operator overloading(操作符重载),一种是operator casting(操作隐式转换)。1.operator overloadingC++可通过operator 重载操作符,格式如下:类型T operator 操作符 (),如比重载+,如下所示[cpp] view plain co
2016-11-17 14:50:33
1733
转载 Struct结构在C和C++中的区别
C语言中:Struct是用户自定义数据类型(UDT)。C++语言中:Struct是抽象数据类型(ADT),支持成员函数的定义。在C++中,struct的成员的默认访问说明符为public,class为private。==========================================================
2016-11-17 14:09:53
313
转载 栈区和堆区内存分配的区别
一直以来总是对这个问题的认识比较朦胧,我相信很多朋友也是这样的,总是听到内存一会在栈上分配,一会又在堆上分配,那么它们之间到底是怎么的区别呢?为了说明这个问题,我们先来看一下内存内部的组织情况.从上图可知,程序占用的内存被分了以下几部分.1、栈区(stack)由编译器自动分配释放 ,存放函数的参数值,局部变量的值等,内存的分配是连续的,类似于平时我们所说的栈,如果还
2016-07-24 15:42:36
550
转载 全局变量、局部变量、全局静态变量、局部静态变量的区别
全局变量、局部变量、全局静态变量、局部静态变量的区别。要从分配内存的位置和作用域入手来解释。全局变量,分配的内存在静态存储区内存上面,其作用域是全局作用域,也就是整个程序的生命周期内都可以使用,同时,有些程序并不是由一个源文件构成的,可能有许多个源文件构成,全局变量只要在一个文件中定义,就可以在其他所有的文件中使用,当然,必须在其他文件使用extern关键字声明该变量。局部变量,分
2016-07-24 15:09:43
1035
原创 C++拷贝构造函数
你只需要记住,在C++语言里, String s2(s1); String s3 = s1; 只是语法形式的不同,意义是一样的,都是定义加初始化,都调用拷贝构造函数。
2016-07-22 15:58:56
310
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人