摘要: 红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。红黑树和AVL树一样都对插入时间、删除时间和查找时间提供了最好可能的最坏情况担保。红黑树是每个节点都带有颜色属性的二叉查找树,颜色为红色或黑色。在二叉查找树强制一般要求以外,对于任何有效的红黑树我们增加了如下的额外要求:性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。性质4. 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点)性质5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。以上的五个约束就为了一 阅读全文
posted @ 2014-03-31 11:02 拦云 阅读(1034) 评论(0) 推荐(0) 编辑
摘要: 概述:查找算法:就是在是数据元素集合中查看是否存在于指定的关键字相等的元素。查找分为两种:静态查找和动态查找。1) 静态查找:是指在数据元素集合中查找与给定的关键字相等的元素2) 动态查找:就是指在查找过程中,如果数据元素集合中不存在与给定的关键字相等的元素,则将该元素插入到数据元素集合中。静态查找主要包括顺序表、有序顺序表和索引顺序表的查找。1) 顺序表的查找,就是指从表的第一个元素与给定关键字比较,直到表的最后。2) 有序顺序表的查找,在查找的过程中如果给定的关键字大于表的元素,就可以停止查找,说明表中不存在该元素(假设表中的元素按照关键字从小到大排列,并且查找从第一个元素开始比较)3) 阅读全文
posted @ 2014-03-30 20:51 拦云 阅读(1863) 评论(0) 推荐(0) 编辑
摘要: 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。快速排序:是目前基于比较的... 阅读全文
posted @ 2014-03-30 13:08 拦云 阅读(1169) 评论(0) 推荐(0) 编辑
摘要: linux系统为Centos 64位第一步:从http://nginx.org/download/上下载相应的版本(或者wget http://nginx.org/download/nginx-1.5.9.tar.gz直接在Linux上用命令下载)第二步:解压tar -zxvf nginx-1.5.9.tar.gz第三步:设置一下配置信息./configure --prefix=/usr/local/nginx ,或者不执行此步,直接默认配置第四步:make编译 (make的过程是把各种语言写的源码文件,变成可执行文件和各种库文件)make install安装 (make install是把这 阅读全文
posted @ 2014-03-29 20:05 拦云 阅读(106196) 评论(8) 推荐(4) 编辑
摘要: 构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。有许多解决方 案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力。在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法。libev 和 libevent 都可以在高性能应用程序中使用,包括部署在 IBM Cloud 或 Amazon EC2 环境中的应用程序,这些应用程序需要支持大量并发客户端或操作。简介许多服务器部署(尤其是 web 服务器部署)面对的最大问题之一是必须能够处理大量连接。无论 阅读全文
posted @ 2014-03-29 11:21 拦云 阅读(3725) 评论(1) 推荐(1) 编辑
摘要: 用wget指令直接下载libevent:# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz然后,在配置时需要指定一个安装路径,即./configure –prefix=/usr;然后make;然后make install;详细的方法如下:# cd /tmp# wget http://www.monkey.org/~provos/libevent-1.2.tar.gz# tar zxvf libevent-1.2.tar.gz# cd libevent-1.2# ./configure –prefix=/usr# make# make 阅读全文
posted @ 2014-03-29 10:43 拦云 阅读(85828) 评论(1) 推荐(1) 编辑
摘要: 在程序设计领域,一个广泛认可的定义是“一种将不同的特殊行为和单个泛化记号相关联的能力”。和纯粹的面向对象程序设计语言不同,C++中的多态有着更广泛的含义。除了常见的通过类继承和虚函数机制生效于运行期的动态多态(dynamic polymorphism)外,带变量的宏,模板,函数重载,运算符重载,拷贝构造等也允许将不同的特殊行为和单个泛化记号相关联,由于这种关联处理于编译期而非运行期,因此被称为静态多态(static polymorphism)。静态多态性1、函数重载与缺省参数(1)函数重载的实现原理假设,我们现在想要写一个函数(如Exp01),它即可以计算整型数据又可以计算浮点数,那样我们就得 阅读全文
posted @ 2014-03-28 18:41 拦云 阅读(57399) 评论(4) 推荐(6) 编辑
摘要: 当我们越来越多的使用C++的特性,将越来越多的问题和事物抽象成对象时,我们不难发现:很多对象都具有共性。比如数值可以增加、减少;字符串也可以增加减少。它们的动作是相似的,只是对象的类型不同而已。C++提供了“模板”这一特性,可以将“类型”参数化,使得编写的代码更具有通用性。因此大家都称模板编程为“通用编程”或“泛型编程”。一般而言,模板分为函数模板和类模板,下面就让我们分别来了解一下它们。一、函数模板1、函数模板的定义和使用定义一个模板函数的格式并不复杂,如下:template返回类型函数名(函数参数列表){//code...}下面,让我们来举一个例子来说明模板函数的作用和用法(具体代码见Ex 阅读全文
posted @ 2014-03-28 09:44 拦云 阅读(5082) 评论(0) 推荐(0) 编辑
摘要: 一、什么是字节对齐,为什么要对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如有些架构的CPU在访问 一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐.其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对 数据存放进行对齐, 阅读全文
posted @ 2014-03-28 09:02 拦云 阅读(416) 评论(0) 推荐(1) 编辑
摘要: extern "C"的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern "C"后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编译函数的过程中会将函数的参数类型也加到编译后的代码中,而不仅仅是函数名;而C语言并不支持函数重载,因此编译C语言代码的函数时不会带上函数的参数类型,一般之包括函数名。 这个功能十分有用处,因为在C++出现以前,很多代码都是C语言写的,而且很底层的库也是C语言写的,为了更好的支持原来的C代码和已经写好的C语言库,需要在C++中尽可能的支持C,而extern 阅读全文
posted @ 2014-03-28 08:33 拦云 阅读(1708) 评论(0) 推荐(0) 编辑