自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

转载 学习c/c++的50个好网站

1、http://snippets.dzone.com/tag/c/ --数以千计的有用的C语言源代码片段 2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C++脚本和程序。所有程序都分为不同的类别。 3、http://www.planetsourcecode.com/

2015-10-29 15:35:02 503

转载 C++开发者都应该使用的10个C++11特性

C++开发者都应该使用的10个C++11特性 在C++11新标准中,语言本身和标准库都增加了很多新内容,本文只涉及了一些皮毛。不过我相信这些新特性当中有一些,应该成为所有C++开发者的常规装备。你也许看到过许多类似介绍各种C++11特性的文章。下面是我总结的,C++开发者都需要学习和使用的C++11新特性。 auto在C++11之前,auto关键字用来指定存

2015-10-29 13:57:59 240

转载 boost>shared_ptr

由于前辈们在开发事广泛使用了boost的shared_ptr因此我打算自己了解一些这个shared_ptr。 shared_ptr应该就是一种智能指针,这一概念在C++primer当中有提到过。或者称“引用计数指针” boost shared_ptr的教程内容网上有不少,其中比较详细的要算《boost库导论》了。  

2015-10-27 18:05:42 452

转载 C++11中的智能指针

在C++11中有四种只能指针,auto_ptr,shared-ptr,unique_ptr和weak-ptr。其中auto_ptr有和多不足之处,在C++11中已经建议废弃使用。shared_ptr类智能指针也是模板。所以创建智能指针时要提供其指向的指针类型:shared_ptrp1; //指向stringshared_ptr>p2 //指向int的list,在C+

2015-10-27 17:59:47 395

转载 auto_ptr、shared_ptr、weak_ptr、scoped_ptr用法小结

auto_ptr auto_ptr是现在标准库里面一个轻量级的智能指针的实现,存在于头文件 memory中,之所以说它是轻量级,是因为它只有一个成员变量(拥有对象的指针),相关的调用开销也非常小。 下面的代码来自于VC++ 8.0里面的源码:  里面有个auto_ptr_ref的数据结构,我们可以把它忽略,这个只是内部使用的代理结构,用于一些隐式的const变化

2015-10-27 17:58:22 403

转载 C++ STL中的vector的内存分配与释放

1.vector的内存增长vector其中一个特点:内存空间只会增长,不会减小,援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vector进行内存分配时,其实际分配的容量

2015-10-26 15:29:56 316

转载 正确释放Vector的内存

今天在看微博的时候, 有人提出了一个对于Vector内存泄露的疑问( Link)。博主采用 Vector存储一些数据,但是发现在执行 clear() 之后内存并没有释放,于是怀疑产生了内存泄露。随后有人回复:“vector 的 clear 不影响 capacity , 你应该 swap 一个空的 vector。”开始并不知道回复者在说什么,于是在谷歌上搜索 vector s

2015-10-26 15:27:58 294

转载 四种强制类型转换的总结

C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:    TYPE b = (TYPE)a  C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。  const_cast,字面上理解就是去const属性。  static_cast,命名上理解是静态类型转换。如int转换成char。  d

2015-10-26 15:07:46 320

转载 C++给函数传数组参数

在C++中,如果要给一个函数传入一个数组,一般都是传入两个参数一个数组指针和一个数组大小例:void print_1 (int n, int *datas ){    for (int i = 0; i     {        std::cout     }    std::cout }对这个函数,我们可以这样使用它:const int N = 3

2015-10-26 14:57:44 409

转载 epoll 经验谈

1、首先需要一个内存池,目的在于:·减少频繁的分配和释放,提高性能的同时,还能避免内存碎片的问题;·能够存储变长的数据,不要很傻瓜地只能预分配一个最大长度;·基于SLAB算法实现内存池是一个好的思路:分配不同大小的多个块,请求时返回大于请求长度的最小块即可,对于容器而言,处理固定块的分配和回收,相当容易实现。当然,还要记得需要设计成线程安全的,自旋锁比较好,使用读写自旋锁就更好了。

2015-10-23 12:00:44 358

转载 epoll 经验谈

1、首先需要一个内存池,目的在于:·减少频繁的分配和释放,提高性能的同时,还能避免内存碎片的问题;·能够存储变长的数据,不要很傻瓜地只能预分配一个最大长度;·基于SLAB算法实现内存池是一个好的思路:分配不同大小的多个块,请求时返回大于请求长度的最小块即可,对于容器而言,处理固定块的分配和回收,相当容易实现。当然,还要记得需要设计成线程安全的,自旋锁比较好,使用读写自旋锁就更好了。

2015-10-23 11:59:29 299

转载 AC自动机算法

AC自动机简介: 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有字典树Trie和KMP模式匹配算法的基础知识。KMP算法是单模式串的字符匹配算法,AC自动机是多模式串的字符匹配算

2015-10-22 18:28:22 252

转载 关于汉字与Ascii码

GB2312和GBK每一个汉字由2个字节组成,这2个字节的ASCII码大小分别是:gb2312:high8 = 0xa1-->0xfe (161 - 254)low8 = 0xa1-->0xfe  (161 - 254)gbk:high8 = 0x80-->0xfe (128 - 254)low8 = 0x40-->0xfe (64 - 254) 

2015-10-22 18:17:23 726

转载 C++之编码问题(Unicode,ASCII,本地默认)

本篇文章试图回答的问题:1、char* pStr="我aa";这句代码执行后,pStr指向的内存区域中存储的字节到底是根据什么码表而来的呢?该字符串占几个字节?2、将一个VS2010的Windows程序设置了“使用Unicode字符集”到底意味着什么?3、现在有一个文件,其存储内容未知(可能是文本,可能是图像,可能是视频),要求是:在文件最前面插入一串Unicode文本,插

2015-10-22 18:15:09 407

转载 环形缓冲区

循环缓冲区在一些竞争问题上提供了一种免锁的机制,免锁的前提是,生产者和消费 都只有一个的情况下,否则也要加锁。下面就内核中提取出来,而经过修改后的fifo进 行简要的分析。  先看其只要数据结构: struct my_fifo { unsignedchar *buffer;/* the buffer holding the data*/ unsignedint si

2015-10-22 16:57:05 349

转载 圆形缓冲区

圆形缓冲区(circular buffer),也称作圆形队列(circular queue),循环缓冲区(cyclic buffer),环形缓冲区(ring buffer),是一种数据结构用于表示一个固定尺寸、头尾相连的缓冲区,适合缓存数据流。目录   [隐藏] 1 用法2 工作过程3 圆形缓冲区工作机制3.1 读指针与写指针3.2 区分缓冲区满或者空

2015-10-22 16:55:31 650

转载 生产者/消费者模式

[0]:概述今天打算来介绍一下“生产者/消费者模式”,这玩意儿在很多开发领域都能派上用场。由于该模式很重要,打算分几个帖子来介绍。今天这个帖子先来扫盲一把。如果你对这个模式已经比较了解,请跳过本扫盲帖,直接看下一个帖子(关于该模式的具体应用)。看到这里,可能有同学心中犯嘀咕了:在四人帮(GOF)的23种模式里面似乎没听说过这种嘛!其实GOF那经典的23种模式主要是基于OO的(从书名

2015-10-22 16:36:21 332

转载 WeakPtr 学习

[cpp] view plaincopy/* 一、说明     WeakPtr,可用来在不同线程间传递对象。 二、相关类     Flag : public RefCountedThreadSafe         -->标志类,自身是有"线程安全引用计数"的。             用来标志WeakPtr所指向的对象是否还可用IsVali

2015-10-19 18:33:58 464

转载 shared_ptr的一些尴尬

shared_ptr在boost库中已经有多年了,C++11又为其正名,把他引入了STL库,放到了std的下面,可见其颇有用武之地;但是shared_ptr是万能的吗?有没有什么样的问题呢?本文并不说明shared_ptr的设计原理,也不是为了说明如何使用,只说一下在使用过程中的几点注意事项。智能指针是万能良药?智能指针为解决资源泄漏,编写异常安全代码提供了

2015-10-19 18:32:35 256

转载 学习笔记:shared_ptr陷阱

条款1:不要把一个原生指针给多个shared_ptr管理int* ptr = new int;shared_ptr p1(ptr);shared_ptr p2(ptr); //logic errorptr对象被删除了2次这种问题比喻成“二龙治水”,在原生指针中也同样可能发生。条款2:不要把this指针给shared_ptrclas

2015-10-19 18:31:09 734

转载 C++中,将class转换成函数指针(运用运算符重载实现,即operator函数)

C++中,将class转换成函数指针(使用运算符重载实现,即operator函数)  这几天在看《Effective C++》,里面提到了std::tr1::function,说是可以将一个函数指针包转成一个function对象,很神奇,所以就想自己实现以下,然后想到了2中实现方式,可以将一个class转换成函数指针,通过运算符重载实现,即operator函数,第一种方式,使用typede

2015-10-13 22:33:21 1077

转载 为什么auto_ptr智能指针不能作为STL标准容器的元素

上个星期的博客shared_ptr源码剖析里其实遗漏了一个问题:为什么auto_ptr不可以作为STL标准容器的元素,而shared_ptr可以?  我在网上看了好多篇讲shared_ptr的文章里讲到了这个问题,不过大多文章只是简单两笔带过。我研究了一下这个问题,发现还是有挺多有价值的内容,所以把这个问题单独成一篇博客和大家分享。先从表象上看看这个问题,假如有这样的一段代码,是否能够

2015-10-13 21:54:45 538

转载 shared_ptr智能指针源码剖析

前几天有个人问了我一个问题: 如何将一个智能指针作为函数的返回值传递出来。当时这个问题一下子把我问倒了,后来经人提醒有一个叫shared_ptr的智能指针可以解决这个问题。将shared_ptr作为函数返回值的代码是这样的:?123456789101112

2015-10-13 21:53:58 671

转载 C++ 的swap手法

swap手法    swap手法不应当是C++独有的技术,很多语言都可以实现,并且从中得到好处。只是C++存在的一些缺陷迫使大牛们发掘,并开始重视这种有用的手法。这 个原本被用来解决C++的资源安全和异常保证问题的技术在使用中逐步体现出越来越多的应用,有助于我们编写更加简洁、优雅和高效的代码。    接下来,我们先来和swap打个招呼。然后看看在C#里如何玩出swap。最后展示swap手法

2015-10-13 17:39:50 929

转载 C++ swap手法

swap手法    swap手法不应当是C++独有的技术,很多语言都可以实现,并且从中得到好处。只是C++存在的一些缺陷迫使大牛们发掘,并开始重视这种有用的手法。这 个原本被用来解决C++的资源安全和异常保证问题的技术在使用中逐步体现出越来越多的应用,有助于我们编写更加简洁、优雅和高效的代码。    接下来,我们先来和swap打个招呼。然后看看在C#里如何玩出swap。最后展示swap手法

2015-10-13 17:38:48 1121

转载 c++ 中__declspec 的用法

c++ 中__declspec 的用法语法说明:__declspec ( extended-decl-modifier-seq )扩展修饰符:1:align(#)    用__declspec(align(#))精确控制用户自定数据的对齐方式 ,#是对齐值。e.g__declspec(align(32)) struct Str1{int

2015-10-10 17:18:25 298

转载 linux无锁化编程--__sync_fetch_and_add系列原子操作函数

linux支持的哪些操作是具有原子特性的?知道这些东西是理解和设计无锁化编程算法的基础。下面的东西整理自网络。先感谢大家的分享! __sync_fetch_and_add系列的命令,发现这个系列命令讲的最好的一篇文章,英文好的同学可以直接去看原文。Multithreaded simple data type access and atomic variables__

2015-10-10 14:57:23 346

转载 signal(SIGPIPE, SIG_IGN)

当服务器close一个连接时,若client端接着发数据。根据TCP 协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经断开了,不要再写了。   根据信号的默认处理规则SIGPIPE信号的默认执行动作是terminate(终止、退出),所以client会退出。若不想客户端退出可以把SIGPIPE设为SIG_IGN

2015-10-09 22:07:06 443

转载 socket的发送与接收缓冲区

应用程序可通过调用send(write, sendmsg等)利用tcp socket向网络发送应用数据,而tcp/ip协议栈再通过网络设备接口把已经组织成struct sk_buff的应用数据(tcp数据报)真正发送到网络上,由于应用程序调用send的速度跟网络介质发送数据的速度存在差异,所以,一部分应用数据被组织成tcp数据报之后,会缓存在tcp socket的发送缓存队列中,等待网络空闲时

2015-10-09 20:05:13 910

转载 接收和发送缓冲区

这两天一直对Linux平台的TCP服务器进行压力测试,发现Linux平台在使用epoll的情况下,发送和接收的速度确实比完成端口的Windows服务器快一点,但消耗内存也大一些;由于没有设置过缓冲区大小,所以怀疑两个平台对socket设置的默认接收和发送缓冲区不同造成的,随后查询了网络上的资料,但对此问题都没有详细描述,只好自己进行了测试。先对Windows平台进行了测试,具体的环境是WinX

2015-10-09 18:06:13 1230

VisualGDB-5.1破解版(稀有)

十分强大的visual studio 调试Linux C/C++的工具,也可以调试Android,完美破解版,十分稀有!

2016-04-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除