
开源项目
文章平均质量分 80
小栩栩
这个作者很懒,什么都没留下…
展开
-
值得学习的C/C++开源项目
转自http://ezlippi.com/blog/2014/12/c-open-project.html值得学习的C语言开源项目Libeventlibev是一个开源的事件驱动库,基于epoll,kqueue等OS提供的基础设施。其以高效出名,它可以将IO事件,定时器,和信号统一起来,统一放在事件处理这一套框架下处理。基于Reactor模式,效率较高,并且代码精简(4.转载 2016-07-23 11:44:31 · 14150 阅读 · 1 评论 -
STL剖析笔记(一)---概述
STL有很多版本,我剖析的是SGI版本,参考侯捷的《STL源码剖析》 首先是它的整体结构吧 STL有六大组件: 1)容器:各种数据结构(vector,list,map,set等) 2)迭代器:可以操纵数据的接口,有点像指针 3)空间配置器:负责内存空间的管理 4)配接器:一种修饰容器或者仿函数或者迭代器接口的东西 5)算法:各种常见的算法(sort,find等) 6)仿函数:行为类似函原创 2016-07-23 18:37:28 · 323 阅读 · 0 评论 -
STL源码剖析笔记(二)---容器
容器,其实也就是数据结构,我们学过的数据有array(数组),list(链表),stack(栈),set(集合),tree(树) ··· 这些数据结构分为序列式和关联式,所以容器就分为序列式和关联式。序列式容器 vector 它的数据结构是一个线性的连续空间,就像顺序表,其中有两个迭代器start和finish分别指向已使用空间的首部和尾部,迭代器end_of_storage指向分配的连续空间的原创 2016-07-24 09:27:10 · 285 阅读 · 0 评论 -
STL源码剖析(三)---迭代器
迭代器是STL中提供的对容器中对象的访问方法。它就像指针,可以用*运算符获取数据,可以使用++,--对迭代器进行操作。迭代器的范围可以由begin()和end()这两个函数获得,begin()返回指向容器中的第一个元素的迭代器,end()返回指向容器的最后一个元素的下一个位置的迭代器。迭代器是如何访问到容器中的数据呢?在list中,定义了一个名字是__list__iterator的结构原创 2016-07-26 21:02:43 · 542 阅读 · 0 评论 -
STL源码剖析(四)---空间配置器
系统已经提供了动态分配内存的接口,malloc(),new(),为什么需要空间配置器?空间配置器的存在是为了解决容器申请内存时产生的内存碎片问题。举一个例子:原创 2016-07-30 22:45:21 · 446 阅读 · 0 评论 -
Reactor模式详解
转自http://www.blogjava.net/DLevin/archive/2015/09/02/427045.html前记第一次听到Reactor模式是三年前的某个晚上,一个室友突然跑过来问我什么是Reactor模式?我上网查了一下,很多人都是给出NIO中的 Selector的例子,而且就是NIO里Selector多路复用模型,只是给它起了一个比较fancy的名字而已,虽然它引转载 2016-08-02 12:55:37 · 1096 阅读 · 0 评论 -
libevent之Reactor模式详解
前面讲到,整个libevent本身就是一个Reactor,因此本节将专门对Reactor模式进行必要的介绍,并列出libevnet中的几个重要组件和Reactor的对应关系,在后面的章节中可能还会提到本节介绍的基本概念。1 Reactor的事件处理机制首先来回想一下普通函数调用的机制:程序调用某函数?函数执行,程序等待?函数将结果和控制权返回给程序?程序继续处理。Reactor转载 2016-08-10 22:52:23 · 2230 阅读 · 0 评论