- 博客(36)
- 资源 (1)
- 收藏
- 关注
原创 求最长回文子串,O(n)复杂度
最长回文子串问题—Manacher算法最长回文串问题是一个经典的算法题。0. 问题定义最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例:12321 a aba abba aaaa tattarrattat(牛津英语词典中最长的回文单词)
2016-04-04 13:25:09
4529
1
转载 一致性哈希算法及其在分布式系统中的应用
摘要本文将会从实际应用场景出发,介绍一致性哈希算法(Consistent Hashing)及其在分布式系统中的应用。首先本文会描述一个在日常开发中经常会遇到的问题场景,借此介绍一致性哈希算法以及这个算法如何解决此问题;接下来会对这个算法进行相对详细的描述,并讨论一些如虚拟节点等与此算法应用相关的话题。分布式缓存问题假设我们有一个网站,最近发现随着流量增加,服务器压力越来越大
2015-08-17 20:47:49
683
转载 分布式 Nosql
系统的可扩展性是推动NoSQL运动发展的的主要理由,包含了分布式系统协调,故障转移,资源管理和许多其他特性。这么讲使得NoSQL听起来像是一个大筐,什么都能塞进去。尽管NoSQL运动并没有给分布式数据处理带来根本性的技术变革,但是依然引发了铺天盖地的关于各种协议和算法的研究以及实践。正是通过这些尝试逐渐总结出了一些行之有效的数据库构建方法。在这篇文章里,我将针对NoSQL数据库的分布式特点进行一些
2015-08-17 20:43:21
637
转载 简单说明日志文件系统的作用
文件系统是用来管理和组织保存在磁盘驱动器上的数据的系统软件,其实现了数据完整性的保证,也就是保证写入磁盘的数据和随后读出的内容的一致性。除 了保存以文件方式存储的数据以外,一个文件系统同样存储和管理关于文件和文件系统自身的一些重要信息(例如:日期时间、属主、访问权限、文件大小和存储位 置等等)。这些信息通常被称为元数据(metadata)。由于为了避免磁盘访问瓶颈效应,一般文件系统大都以异
2015-05-13 15:45:28
1149
转载 数据库引擎简介
数据库引擎介绍MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎: ISAM:ISAM是一个定义明确且
2015-05-04 14:44:07
460
原创 信号量与互斥锁
信号量与普通整型变量的区别:①信号量(semaphore)是非负整型变量,除了初始化之外,它只能通过两个标准原子操作:wait(semap) , signal(semap) ; 来进行访问;②操作也被成为PV原语(P来源于Dutch proberen"测试",V来源于Dutch verhogen"增加"),而普通整型变量则可以在任何语句块中被访问; 信号量与互斥锁之间的
2015-04-29 16:26:04
579
原创 自己动手做文件系统
FUSE(The Filesystem in Userspace)在Kernel中是一个奇特的部分,它允许通常的用户不用修改Kernel或取得Root权限,就能制作或使用他们自己的文件系统。在FUSE中使用的文件系统是虚文件系统(Virtual Filesystems),但并非所有的虚文件系统使用的都是FUSE。FUSE的代码Kernel中,但文件系统位于User Space。不过,典型的文件系统
2015-04-22 14:21:31
1994
转载 FUSE 简介
FUSE的工作原理如图所示。假设基于FUSE的用户态文件系统hello挂载在/tmp/fuse目录下。当应用层程序要访问/tmp/fuse下的文件时,通过glibc中的函数进行系统调用,处理这些系统调用的VFS中的函数会调用FUSE在内核中的文件系统;内核中的FUSE文件系统将用户的请求,发送给用户态文件系统hello;用户态文件系统收到请求后,进行处理,将结果返回给内核中的FUSE文件系统;最后
2015-04-21 22:10:11
1943
原创 用匈牙利算法求二分图的最大匹配
1, 用匈牙利算法求二分图的最大匹配算法轮廓:(1)置M为空(2)找出一条增广路径P,通过取反操作获得更大的匹配M’代替M(3)重复(2)操作直到找不出增广路径为止程序文件夹:22222#include #include using namespace std; const int MAXN = 100 ;
2015-04-20 15:34:16
738
原创 深搜用栈的实现
#includeusing namespace std;int Map[100][100],n,Target;bool Vis[100];struct stack{int node[100];int top;}f;bool DFS(int x){f.top=1;f.node[f.top]=x;while(f.top){in
2015-04-20 15:31:54
1624
原创 求图的切割点
#includeusing namespace std;int Num[100],Low[100],Father[100];bool Mark[100],Map[100][100],Cutpoint[100];int time,n;void DFS(int x){Mark[x]=true;time++;Low[x]=Num[x]=time;f
2015-04-20 15:31:21
406
原创 关键路径
#include#includeusing namespace std;int Map[100][100],Value[100];bool Mark[100];int n,s,t;//if Max was defined here things will be much different now!int CP(int x){//if(Ma
2015-04-20 15:31:20
418
原创 基于BFS的最大流算法(Edmonds)
#includeusing namespace std;#define MAXN 10003 bool Vis[100];int Map[100][100],F[100][100],n,Target,Min;struct queen{int top;int end;int node[100];}f;struct vertex{
2015-04-20 15:30:40
846
原创 Prim算法求最小生成树
#includeusing namespace std;#define MAXN 10002int Map[100][100],Vis[100],Low[100],Tree[100];int n;void Prim(){int i,j,p;int minc;memset(Vis,0,sizeof(Vis));Vis[0]=1;for( i=1
2015-04-20 15:30:39
833
原创 Dijkstra算法
#include#includeusing namespace std;#define MAXN 10002int Map[100][100],D[100],n,Target;bool Vis[100];void Dijkstra(int x){Vis[x]=true;int min=MAXN,count;while(!Vis[Targe
2015-04-20 15:28:43
409
原创 Ford&Fulkerson 最大流问题
#includeusing namespace std;#define MAXN 10000003int n,sink;bool Vis[100];__int64 C[100][100],F[100][100];struct list{int value;bool dir;};struct stack{int top;list
2015-04-20 15:28:00
669
原创 DFS的时间戳应用
#includeusing namespace std;bool Map[100][100],Vis[100];int d[100],f[100],n,time;void DFS(int x){Vis[x]=1;d[x]=time;for(int i=0;i{if(Map[x][i]&&!Vis[i]){Map[x][i]=0;
2015-04-20 15:26:36
1510
原创 欧拉图算法
首先考虑是欧拉图。若从一个顶点出发,利用DFS,将新搜索到的顶点保存到栈顶,并且将走过的边给删除,那么一定能访问到这个初始顶点。因为除起始顶点外其他的顶点若被访问到那么一定能去访问别的顶点。但是起始顶点不同,它是被直接访问的,即没有通过别的顶点去访问它,因此我们一定能找到这样的回路,使得起始顶点和终点是同一顶点,设为v,并且v的所有边都在这条回路上。我们用栈来保存这些顶点(按访问的顺序),如果此时
2015-04-20 15:25:19
2209
原创 深度搜索
#include using namespace std;const int maxn = 100;int n, m;int map[maxn][maxn], sign[maxn][maxn];int startx, starty, endx, endy;int dir[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};boo
2015-04-01 14:46:38
693
原创 DFS
#include using namespace std;const int maxn = 100;int n, m;int map[maxn][maxn], vis[maxn][maxn];int startx, starty, endx, endy;int dir[4][2] = {-1, 0, 0, 1, 1, 0, 0, -1};
2015-04-01 14:45:03
557
原创 深度搜索(用结构体)
#includeusing namespace std;const int maxn = 100 ;int n,m;int map[maxn][maxn],sign[maxn][maxn];int startx,starty,endx,endy;int dir[4][2] = {-1,0,0,1,1,0,0,-1};struct POSITION
2015-04-01 14:44:58
550
原创 DFS (栈改BFS)
#include #include using namespace std;struct POSITION { int x, y; bool operator == (const POSITION &oth) const { return x == oth.x && y == oth.y; } bool op
2015-04-01 14:43:45
656
原创 BFS
#include #include using namespace std;struct POSITION { int x, y; bool operator == (const POSITION &oth) const { return x == oth.x && y == oth.y; } bool op
2015-04-01 14:42:59
497
原创 BFS(迷宫)
#include #include using namespace std;struct POSITION { int x, y; bool operator == (const POSITION &oth) const { return x == oth.x && y == oth.y; } bool op
2015-04-01 14:42:44
652
原创 BFS 数组模拟队(有向图)
#includeusing namespace std;const int Limit = 400,maxinum = 10000;int data[Limit][Limit],visited[Limit];int N,S,T;int queue[Limit];bool BFS(int S,int m){ int i,open = 1,cl
2015-04-01 14:41:16
775
原创 BFS 队 (有向图)
#include#includeusing namespace std;const int Limit = 400,maxinum = 10000;int data[Limit][Limit],visited[Limit]; //data[][]为图的邻接矩阵 visited[i]用于记录起源点到点i的最短路径长度; int N,S,T;
2015-04-01 14:40:26
553
转载 Linux服务器性能评估与优化
一、影响Linux服务器性能的因素 1. 操作系统级 Ø CPUØ 内存Ø 磁盘I/O带宽Ø 网络I/O带宽 2. 程序应用级 二、系统性能评估标准影响性能因素评判标准好坏
2015-03-26 14:16:58
532
转载 TFS Erasure code实现方案
TFS Erasure code实现方案TFS发展至今,集群部署总容量已超过50PB,机器数量约2700台。TFS在阿里内部主流部署方式是主集群内数据块2个副本,每个主集群配置两个备集群,分别在同城和异地机房,实际上每份数据6个副本,存储成本非常高,为了降低TFS存储成本,我们将Erasre code引入到TFS系统,本文将详细介绍TFS应用Erasure code的技术方
2015-03-26 10:34:59
534
转载 一致性hash
转载请说明出处:http://blog.youkuaiyun.com/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正
2015-03-25 21:39:43
625
原创 看到的面试题,请容我一道一道的解析(假以时日),希望大家留言一起探讨~
很经典的面试题,有Google,Microsoft等知名IT公司的面试题。让我们一起研究一起进步吧~
2015-03-19 15:19:56
2804
原创 把二元查找树转变成排序的双向链表
把二元查找树转变成排序的双向链表:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14 / \ / \4 8 12 16 转换成双向链表4=6=8=10=12=14=16。 给出一个节点数据结构struct node{char data;node *
2015-03-19 14:41:24
437
原创 试着用物理学第一原理思考问题
Elon Musk’s Secret Weapon: A Beginner’s Guide to First PrinciplesAdvice November 14, 2013Elon Musk is the CEO of Tesla Motors, an American electric car manufacturing company. The company h
2015-03-18 12:30:04
2333
转载 面试题
Problem 1 :Is it a loop ? (判断链表是否有环?)Problem 2:设计一个复杂度为n的算法找到链表倒数第m个元素。最后一个元素假定是倒数第0个Problem 3:用最简单的方法判断一个LONG整形的数A是2^n(2的n次方)Problem 4:两个烧杯,一个放糖一个放盐,用勺子舀一勺糖到盐,搅拌均匀,然后舀一勺混合物会放糖的烧杯,问你两个
2015-03-17 14:26:31
975
原创 数组调整
大小为2n的数组,前n个元素分别为a1,a2,...,an. 后n个元素分别是b1,b2,bn. 现在希望将数组重新排列,重排后希望得到的数组为a1,b1,a2,b2,...,an,bn.请设计空间复杂度为O(1),时间复杂度为O(n)的算法。
2015-03-16 21:09:20
464
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人