07 2012 档案
摘要:Nginx(发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,最初供俄国大型的入口网站及搜寻引擎Rambler(俄文:Рамблер)使用。 其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好.目前中国大陆使用nginx网站用户有:新浪、网易、腾讯,另外知名的微网志Plurk也使用nginx。 ----摘自“开源中国社区”下面是从安装,到配置的整个过程,并对其中的一些参数进行粗浅的解释1、下载安装 先.
阅读全文
摘要:二项堆(图摘自:http://blog.csdn.net/acceptedxukai/article/details/6951922)一、介绍一颗二项堆是由一组二项树组成。二项树是一种递归的定义:二项树B[0]仅仅包含一个节点B[k]是由两棵B[k-1]二项树组成的,其中一颗树是另一颗树的子树,下面是B0-B4二项树:图:二项树二项树的性质:对于二项树B[k]有2^k个节点在深度为i的层中,有才C(k,i)个节点,其中i为0,1,2...k根节点的度数为k,大于树中任何其它节点的度数一颗包含n个节点的二项树,任意节点的最大度数为lgn二项堆H是由一组满足下面条件的二项树组成的:H中的每个二项树
阅读全文
摘要:R树在数据库等领域做出的功绩是非常显著的。它很好的解决了在高维空间搜索等问题。举个R树在现实领域中能够解决的例子吧:查找20英里以内所有的餐厅。如果没有R树你会怎么解决?一般情况下我们会把餐厅的坐标(x,y)分为两个字段存放在数据库中,一个字段记录经度,另一个字段记录纬度。这样的话我们就需要遍历所有的餐厅获取其位置信息,然后计算是否满足要求。如果一个地区有100家餐厅的话,我们就要进行100次位置计算操作了,如果应用到谷歌地图这种超大数据库中,我想这种方法肯定不可行吧。R树就很好的解决了这种高维空间搜索问题。它把B树的思想很好的扩展到了多维空间,采用了B树分割空间的思想,并在添加、删除操作时采
阅读全文
摘要:B树及其衍生树一、B树1. 介绍B树与其它几种查找树(二叉查找树、AVL树和红黑树)不同,它每个节点最多有N个子节点而不是两个子节点,所以,它的高度是,而不是其它几种树的。B树是用来为磁盘而设计的数据结构,它区别于针对随机存取的贮存而设计的数据结构。因为磁盘的IO操作比较耗时,大概比主存存取大5个数量级,也就是说,一次磁盘存取大概的时间可以使主存完成大概100000次的存取。图:B树-每个内节点有1000关键字上图可以看出,一个B树,每个结点有1000个关键字,高度为2,就能包含10亿个关键字,只有根节点存在主存中,查找一个关键字只需要最多读取两次磁盘就能完成查找。图:B树的结构图B树是由有序
阅读全文
摘要:#include <iostream.h>#include <stdlib.h>#include <stdio.h>using namespace std;//冒泡排序 O(n^2)---稳定冒泡排序将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为ki的气泡。根据轻气泡不能在重气泡之下的原则,从下往上扫描数组R;凡扫描到违反本原则的轻气泡,就使其向上"漂浮"。如此反复进行,直到最后任何两个气泡都是轻者在上,重者在下为止。void BubbleSort(int *arr, int len){ bool changed
阅读全文
摘要:一、 最长公共子序列1. 问题通过比较公共子序列的长度来判断两个序列是否相似,如ABCBCDA和ACBCCAD的最长公共子序列为ABCCD。现在有两个序列和,找出X和Y的最长公共子序列(LCS)。2. 子问题拆分这个问题就是求所有公共序列,然后找出最长的那个,而如何计算序列的长度,就是一个递归的过程了,公式如下: 这个问题是几个动态规划问题中最好理解的一个,是一个二维遍历标记的过程,最后再遍历一遍标记就能获得结果,不再赘述,直接看伪代码。3. 伪代码LCS-LENGTH(X, Y) m <- length[X] n <- length[Y] for i <- 1 to m .
阅读全文
摘要:信号(signal) 信号是在软件层次上对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上,进程也不知道信号到底什么时候到达。 信号是进程间通信机制中唯一的异步通信机制,可以看作是异步通知,通知接收信号的进程有哪些事情发生了。信号机制经过POSIX实时扩展后,功能更加强大,除了基本通知功能外,还可以传递附加信息。 信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送信号的系统函数是kill, raise, alarm和setitimer以及si...
阅读全文
摘要:一、 XSI IPC1. 介绍XSI IPC包括消息队列、信号量和共享内存,它们都用一个非负的标示符(identifier)加以引用。标识符是IPC对象的内部名,为了使进程间能够在同一个IPC上相连,就要有一个外部名。键(key)就是这个外部名,每个IPC对象都与一个键相关联。 几种使客户进程与服务进程关联的方法(1) 服务进程可以指定键IPC_PRIVATE创建一个新IPC结构,将返回的标识符存在某处(如:一个文件)以便客户进程读取。注意:使用IPC_PRIVATE只能是创建一个新IPC,且只有服务进程将标识符写到文件中后,客户进程才能获取到。(2) 在公用都文件中定义一个客户进程和服务进.
阅读全文
摘要:一、 Linux进程间通信概述主要分为以下几种:管道(无名管道pipe和命名管道FIFO)、信号(signal)、消息队列、共享内存、信号量、套接字(socket)等。主要分为以下4个领域(1)消息传递(管道,FIFO,消息队列)(2)同步(互斥锁,条件变量,读写锁,信号量)(3)共享内存区(匿名共享内存区,有名共享内存区)(4)过程调用(Solaris门,Sun RPC)二、 无名管道PIPE普通Linux都允许重定向,而重定向就是使用的管道。管道是单向的,先进先出,固定大小,一个进程向管道里进行输入,另一个进程从管道里获取输出。一旦数据被读出,则从管道里面删除,其它进程无法再读到该数据。管
阅读全文
摘要:一、动态规划之我见动态规划是算法中很常见的一种,这两天系统的又把其细看了下,有点心得,写下来做个备忘。动态规划主要有几种类型:装配线调度(单次并行正向规划—一维,反向输出)矩阵链乘法(多次正向规划--一维,不同步长,正向输出)最长公共子序列(多次串行正向规划-二维,反向输出)最优二叉查找树(多次正向规划-一维,不同步长,正向输出)二、装配线调度简单的说,装配线调度是指在多条并行的流水线上(每个流水线能够进行转换)找到最快的输出结果的路径,是一个顺序的过程,所以只需要一次规划(循环)就能达到。1.问题:一个车间,有N条流水线,每条流水线都有M个节点,每条流水线上的对应第m个节点的功能是相同的,且
阅读全文
摘要:直接上代码#include <iostream>#ifdef WIN32#include "Python.h"#else#include "/usr/local/include/python2.7/Python.h"#endif//如果是在windows-mingw-python2.7环境下,需要在工程->设置->Include和lib设置python2.7的路径,//并在“链接 ”的参数中添加-Lc:\Python27\libs -lpython27//如果是在linux环境下,则用下面命令进行编译链接 //g++ Python
阅读全文