2012年4月12日

摘要: 问题描述:给定一个文本文件作为输入,查找其中的最长子字符串。例如, ”Ask not what your country can do for you, but what you can do for your country"中的“ can do for you"就是最长子字符串。解题过程:这个问题最直接的解法就是变位词程序(《编程珠玑》2.4节)。如果将输入字符串存储在c[0..n-1]中,那么我们可能会使用类似下面的伪代码比较每个子串;maxlen = -1;for i = [0, n] for j = (i, n) if (thislen = comlen(& 阅读全文
posted @ 2012-04-12 21:35 aho 阅读(1529) 评论(0) 推荐(1) 编辑
摘要: qsort函数是对快排的实现,可以对各种数据结构的数组形式进行排序,不过需要自己来给出该数据结构的比较函数;下面仅以int和cstring为例来描述其用法int型: #include <stdio.h> #include <stdlib.h> int intcmp(const void* it1, const void* it2) { return *(int*)it1 - *(int*)it2; } int main() { int a[3] = {3, 1, 2}; qsort(a, 3, sizeof(int), intcmp); p... 阅读全文
posted @ 2012-04-12 21:04 aho 阅读(2283) 评论(0) 推荐(0) 编辑
摘要: ab命令原理ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,因此是某些DDOS攻击之必备良药,老少皆宜。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。ab实战对于Linux系统,一般安装好Apache后可以直接执行:ab -n 10000 -c 100 http 阅读全文
posted @ 2012-04-12 09:54 aho 阅读(2792) 评论(0) 推荐(0) 编辑

2012年4月11日

摘要: 今天在写程序时遇到的一个问题 #include <stdio.h> #include <string> using std::string; int main() { char str[STEL]; while (scanf("%s", str) && strcmp(str, "end")) { printf("%s = %u\n", str, hash(str)); } return 0; }写完用g++编译,出现error: ‘strcmp’ was not declared in this 阅读全文
posted @ 2012-04-11 16:25 aho 阅读(21634) 评论(0) 推荐(0) 编辑
摘要: #define NHASH 29989 //根据自己的实际需要来设置 #define MULT 31 unsigned int hash(char* p) { unsigned int h = 0; for ( ; *p; p++) { h = MULT * h + *p; } return h % NHASH; }本来我以为其中的31是为了将一个字符串,比如abc当做一个31进制的数字来看,但是考虑到26个英文字母再加上大写的情况,就是52个,跟31不沾边啊。留待思考! 阅读全文
posted @ 2012-04-11 11:21 aho 阅读(267) 评论(0) 推荐(0) 编辑

2012年4月10日

摘要: set类型 map类型是键值对的集合,相反地,set容器只是单纯的键的结合。当只想知道一个值是否存在时,使用set容器就是最合适的。 set容器支持大部分的map操作:关系运算,类似于string类型的关系运算如果两个容器具有相同的长度而且所有元素都相等,那么这两个容器就相等;否则,不相等;如果两个容器的长度不相等,但较短的容器中所有的元素都等于较长容器中对应的元素,则称较短的容器小于另一个;如果连个容器都不是对方的初始子序列,则它们的比较结果取决于所比较的第一个不相等的元素begin、end、rbegin、rend操作类型别名(typedef)swap和赋值操作。clear和erase操.. 阅读全文
posted @ 2012-04-10 10:58 aho 阅读(2718) 评论(0) 推荐(0) 编辑

2012年3月29日

摘要: memcached默认情况下是采用Slab Allocator的机制分配、管理内存,此原理相当简单,将分配的内存分割成各种尺寸的块(chunk),并把尺寸相同的块分成组(chunk的集合),如下图(借鉴于《memcached全面剖析》):关于此块的初始化逻辑划分的源码在memcached.c文件中:void slabs_init(const size_t limit, const double factor, const bool prealloc) {……//此处省略很多行 while (++i < POWER_LARGEST && size <= setting 阅读全文
posted @ 2012-03-29 09:23 aho 阅读(332) 评论(0) 推荐(0) 编辑

2012年3月28日

摘要: Hadoop是一个能够对大量数据进行分布式处理的软件框架,实现了Google的MapReduce编程模型和框架,能够把应用程序分割成许多的小的工作单元,并把这些单元放到任何集群节点上执行。在MapReduce中,一个准备提交执行的应用程序称为“作业(job)”,而从一个作业划分出得、运行于各个计算节点的工作单元称为“任务(task)”。此外,Hadoop提供的分布式文件系统(HDFS)主要负责各个节点的数据存储,并实现了高吞吐率的数据读写。 在分布式存储和分布式计算方面,Hadoop都是用从/从(Master/Slave)架构。在一个配置完整的集群上,想让Hadoop这头大象奔跑起来,需... 阅读全文
posted @ 2012-03-28 15:33 aho 阅读(992) 评论(0) 推荐(0) 编辑

2012年3月26日

摘要: 来自学习小组活动,整理下三锅的ppt,作为自己的学习笔记。红黑树定义: 红黑树是一种二叉查找树,但是在每个节点上增加了一个存储位表示节点的颜色(红或黑)。 红黑树的一个概念:黑高度(bh)红黑树性质:1)每个结点要么是红的,要么是黑的。2)根结点是黑的。3)每个叶结点,即空结点(NIL)是黑的。4)如果一个结点是红的,那么它的俩个儿子都是黑的。5)对每个结点,从该结点到其子孙结点的所有路径上包含相同数目的黑结点。红黑树的插入:•红黑树是二叉查找树,所以插入的基本步骤和二叉查找树的基本步骤一致。•因为红黑树中每个节点有颜色限制,所以插入节点的颜色选择以及插入可能会影响红黑树的性质。•红或黑?.. 阅读全文
posted @ 2012-03-26 15:48 aho 阅读(708) 评论(2) 推荐(0) 编辑

2012年3月22日

摘要: 摘自《编程珠玑》,作为自己的读书笔记。 程序员在节省空间方面无计可施时,将自己从代码中解脱出来,退回到起点并集中精力研究数据,常常会有奇效。(数据的)表示形式是程序设计的根本。使用数组重新编写重复代码。冗长的相似代码常常可以使用最简单的数据结构——数组来更好的表述;封装复杂结构。当需要非常复杂的数据结构时,使用抽象的术语进行定义,并将操作表示为类;尽可能使用高级工具。超文本、名字—值对、电子表格、数据库、编程语言等都是特定的问题领域中的强大工具;从数据得出程序的结构。通过使用恰当的数据结构来替代复杂的代码,从数据可以得出程序的结构。万变不离其宗:在动手编写代码之前,优秀的程序员会彻底理解... 阅读全文
posted @ 2012-03-22 11:05 aho 阅读(169) 评论(0) 推荐(0) 编辑

2012年3月20日

摘要: 摘自《编程珠玑》,作为自己的读书笔记问题描述:输入:一个最多包含n个正整数的文件,每个数都小于n,其中n = 10^7。这n个数没有重复。输出:按升序排列的输入整数列表约束:最多有1MB的内存空间可以使用,有充足的磁盘存储空间可用。运行时间最多几分钟。问题解答:此问题可以使用磁盘的归并算法和快速排序,但是都会经历多次的磁盘读写操作。此处直接讲使用位图算法的过程。使用位图表示集合。例如,可以用以下8位字符串来表示集合{1, 2, 3, 5, 7} 0 1 1 1 0 1 0 1 0 代表集合中有数值的位置1, 没有的置0 2. 给定一个10^7位的字符串来做位图的数据结构,此问题可以分三个阶.. 阅读全文
posted @ 2012-03-20 11:25 aho 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 问题描述:引用的问题原文:Elevenscientistsareworkingonasecretproject.Theywishtolockupthedocumentsinacabinetsothatthecabinetcanbeopenedifandonlyifsixormoreofthescientistsarepresent.Whatisthesmallestnumberoflocksneeded?Whatisthesmallestnumberofkeystothelockseachscientistmustcarry?现在有一份文件需要锁起来(锁的个数待定),有3人来保管此文件;要求必 阅读全文
posted @ 2012-03-20 10:23 aho 阅读(1624) 评论(0) 推荐(1) 编辑

2012年3月19日

摘要: 贪心算法:•贪心算法是一种改进的分级处理方法•它是根据题意,选取一种量度标准;然后按这个量度标准对这n个输入进行排序•按序每次输入一个量,如果这个量和当前已构成的最优解S合并可以产生一个可行解,则将这个输入值加入S,否则就抛弃抽象表示:procedure GREEDY(A, n) //A(0:n-1) n个已按某种标准排序 S <- Ø; //S为最优解,初始化为空 for i <- 0 to n-1 do x <- A[i]; if FEASIBLE(S, x) then S <- UNION(S, x) endif repeat retu... 阅读全文
posted @ 2012-03-19 09:35 aho 阅读(3151) 评论(0) 推荐(0) 编辑

2012年3月18日

摘要: 证明过程应用自:http://kelvinsjtu.blog.163.com/blog/static/110030019200993104333703/问题描述: 给定带权有向图G=(V,E)(如下图所示),其中每条边的权是非负实数。另外,还给定V中的一个顶点,称为源。现在要计算从源到所有其它各顶点的最短路长度。这里路的长度是指路上各边权之和。解法: 使用dijkstra算法来解决这个问题dijkstra算法的思路: Dijkstra算法思想为:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最... 阅读全文
posted @ 2012-03-18 22:52 aho 阅读(1863) 评论(0) 推荐(0) 编辑

2012年3月14日

摘要: 建立大小为k的最小堆O(nlogk)当元素t<=堆顶, 抛弃之当元素t>堆顶, 插入堆利用计数或基数排序O(n + k), 常数项不可控快速排序O(nlogn)中位数之中位数, 与划分结合 阅读全文
posted @ 2012-03-14 10:03 aho 阅读(184) 评论(0) 推荐(0) 编辑

导航