c++
文章平均质量分 89
「已注销」
这个作者很懒,什么都没留下…
展开
-
linux后台开发具备能力集锦
Linux后台开发应该具备技能(持续更新中)一、linux和os:1、linux下io,cpu,memory相关指令需要熟练使用(free ps netstat tcpdump iostat lsof) memory:top, free, sar, proc/meminfo, proc/pid/status, pmap c...原创 2015-04-28 15:55:00 · 8914 阅读 · 3 评论 -
查找c++进程cpu占满的原因
最近运行服务器程序,在特定触发条件下,发现某个进程CPU占用率超过100%,心里一惊,因为服务器用c++写的,就决定调试下。 先按网上说的使用pstack指令打印cpu占满的进程的堆栈信息. 其中 pstack是基于gdb封装的shell脚本,有兴趣的可以去看一下。pstack pid 发现正常的进程的堆栈显示比较正常,异常的进程的堆栈闲显示就全是??。 这个方法行不通,就换gdb...原创 2018-03-23 09:57:39 · 6690 阅读 · 0 评论 -
二级指针的作用详解
一、概念在如下的A指向B、B指向C的指向关系中:首先C是"一段内容",比如你用malloc或者new分配了一块内存,然后塞进去"一段内容",那就是C了。C的起始地址是0x00000008。B是一个指针变量,其中存放着C的地址,但是B也要占空间的啊,所以B也有地址,B的起始地址是0x00000004,但是B内存中存放的是C的地址,所以B里面的内容就是0x00000008。那么到此.....................原创 2015-06-25 00:37:47 · 109871 阅读 · 45 评论 -
C++ placement new操作符
在处理内存分配的时候,C++程序员会用new操作符(operator new)来分配内存,并用delete操作符(operator delete)来释放内存。虽然这种写法在大多数时候都工作得很好,但还是有些情况下使用new是很烦人的,比如当你想在预分配的内存上构造一个对象的时候。如果你想在预分配的内存上创建对象,用缺省的new操作符是行不通的。要解决这个问题,你可以用placeme原创 2016-06-02 21:57:12 · 1322 阅读 · 0 评论 -
boost.asio学习笔记一、linux下boost库的安装
学习开源库第一步就是编译安装好库,然后运行成功一个demo,然后才能进行之后的工作。下面就来讲讲boost库在linux下的安装。[mjf@localhost ~]$ tar -zxvf boost_1_55_0.tar.gz[mjf@localhost boost_1_55_0]$ ./bootstrap.sh --prefix=/home/mjf/lib[mjf@loc原创 2015-07-05 06:11:43 · 16682 阅读 · 1 评论 -
C++ for_each学习笔记
一、学习完iterator之后,遍历容器我们会写出这样的代码:#include #include using namespace std;int main() { int ia[] = {1, 2, 3}; vector ivec(ia, ia + sizeof(ia) / sizeof(int)); for(vector::const_iterator iter = ive原创 2015-11-23 21:42:54 · 1668 阅读 · 0 评论 -
boost::asio中文文档
Christopher KohlhoffCopyright © 2003-2012 Christopher M. Kohlhoff以Boost1.0的软件授权进行发布(见附带的LICENSE_1_0.txt文件或从http://www.boost.org/LICENSE_1_0.txt)Boost.Asio是用于网络和低层IO编程的跨平台C++库,为开发者提供了C++环境下翻译 2015-07-04 12:16:42 · 14377 阅读 · 0 评论 -
c++中static的用法详解
C 语言的 static 关键字有三种(具体来说是两种)用途:1. 静态局部变量:用于函数体内部修饰变量,这种变量的生存期长于该函数。int foo(){ static int i = 1; // note:1 //int i = 1; // note:2 i += 1; return i;}要明白这个用法,我们首先要了解c/c++的内存分布,以及static所在的......原创 2015-04-26 19:57:49 · 47989 阅读 · 29 评论 -
do{...}while(0)的用法
do{...}while(0) 的妙用1.导引:第一次见到 do{...}while(0)是在学习libevent的时候,看到里面有很多类似#define TT_URI(want) do { \ char *ret = evhttp_uri_join(uri, url_tmp, sizeof(url_tmp)); \ tt_want(ret != NULL);原创 2015-04-24 16:26:17 · 27720 阅读 · 11 评论 -
你必须了解的c++的特性(持续更新中)
1.explicit的作用以及为什么要用explicit?答:假设有一个类:class Demo{public: explicit Demo(int initialValue = 0) :value(initialValue){} int write(int x) { value = x; }private: int value;};Demo的构造函数是e原创 2012-02-25 14:50:34 · 836 阅读 · 0 评论 -
c++ string的实现
很多c++程序员定义一个字符串世喜欢用string而不是用char[],string调用方便,不需要考虑内存分配的情况,因为string是c++基于char[]建设出来的类,帮你把一些要自己用char[]完成的操作,变成了函数,直接调用函数就可以对字符串进行操作。string比char[]安全,具有自动调整大小的功能,不会发生下标越界,因此不必知道字符串大小。因此在不做底层对效率要求没有快捷性要求原创 2012-03-07 23:30:49 · 1484 阅读 · 1 评论 -
Linux后台开发应该具备技能(二)
上一篇由于篇幅太大,编辑不方便。现补充一篇。后续会统一整理。上一篇地址:https://blog.csdn.net/majianfei1023/article/details/45337085一、Linux系统1、slab算法底层实现原理理解:Linux的伙伴算法把所有的空闲页框分组为11个块链表,每个块链表分别包含大小为1,2,4,8,16,32,64,128,256,51...原创 2019-06-21 16:39:35 · 1001 阅读 · 2 评论