Chord算法原理介绍可以先了解下,本文侧重Chord的实现,具体是构造Chord环的实现,即如何初始化和新增节点。其他对环的操作都可以类比,而且实现会更简单。
Chord的开源实现主要有两个,一个是单机版的jchord,另一个是集群形式的open chord项目。以下描述都是参考开源项目代码展开的。
下面简单总结我对Chord的理解。Chord这种DHT的实现,本质上是在一致性哈希的基础上,增加了Finger表这种快速路由信息,通过在节点上保存整个网络的部分信息,让节点的查找/路由以O(logN)的代价...
分类:
其他好文 时间:
2014-06-05 11:35:17
阅读次数:
511
新浪微薄第三方登录其实在api上本没有涉及,说到底其实根本没有真正的第三方登录。我们平常所看到的第三方登录其实本质上是通过授权机制,获取uid,存储到服务端作为唯一标识来做的。
这样看来第三方登录就比较简单了,前面我们已经讲了新浪微薄的授权机制,只需要将授权完成之后返回的uid存储到服务端即可。这里需要注意的一个问题是为什么存储uid而不存储accessToken?...
分类:
其他好文 时间:
2014-06-05 09:57:53
阅读次数:
204
线程池实现:
用于执行大量相对短暂的任务
当任务增加的时候能够动态的增加线程池中线程的数量直到达到一个阈值。
当任务执行完毕的时候,能够动态的销毁线程池中的线程
该线程池的实现本质上也是生产者与消费模型的应用。生产者线程向任务队列中添加任务,一旦队列有任务到来,如果有等待线程就唤醒来执行任务,如果没有等待线程并且线程数没有达到阈值,就创建新线程来执行任务。...
分类:
编程语言 时间:
2014-06-05 09:33:14
阅读次数:
262
图像增强处理-1
图像增强是图像处理中一个重要的内容,在图像生成,传输或变换的过程中,由于多种因素的影响,造成图像质量下降,图像模糊,特征淹没,给分析和识别带来困难。因此,按特定的需要将图像中感兴趣的特征友选择地突出,衰减不需要的特征,提高图像的可懂度是图像增强的主要内容。图像增强不考虑图像降质的原因,而且改善后的图像也不一定逼近原图像,这是它与图像复原本质的区别。图像增强的主要目的有两个:一是...
分类:
其他好文 时间:
2014-06-05 08:43:48
阅读次数:
250
MakeFile可以看做是一种简单的编程语言,其诞生的本质目的是实现自动化编译。
以Linux下gcc-c编译器为例,编译一个c语言程序需要经过以下几个步骤:
1.将c语言源程序预处理,生成.i文件;
2.预处理后的.i语言编译成汇编语言,生成.s文件;
3.汇编语言经过汇编,生成目标文件.o文件;
4.将各个模块的.o文件链接起来,生成一个可执行程序文件。
我们知道,在Visu...
分类:
系统相关 时间:
2014-06-05 03:07:04
阅读次数:
536
最大连续子序列(HDU1003,1231)
最大递增子序列和,sum[i]=max(sum[j])+a[i],j
最长公共子序列,LCS经典算法(HDU1159)。
题解:
实际上,我没看出hdu1003和1231的本质差别,形式上的差别就是记载的东西不一样,一个是记载下标,一个是记载元素。基本就是那么回事吧。很多算法书在讨论时效都会拿这个例子来说明,让大家看到算法的力量,从一个弱渣算法到...
分类:
其他好文 时间:
2014-06-03 04:19:10
阅读次数:
279
50年前的这个月诞生了BASIC这门计算机语言,回想起自己喜欢上图形界面这行,还得归功于当年在win98下用QBASIC照葫芦画瓢敲了一段绘制奥运五环的代码,当带色彩的奥运五环呈现在自己面前时我已知道自己这辈子要走的路了。在这个忘本逐新的年代不见多少媒体提及这影响了几代人的BASIC语言的50年庆了。
如今消费者对用户体验的高要求,以远不能以静态平面图形打动人心,动画已是衡量前端产品用户体验不可忽视的重要因素,最近Facebook开源的Pop动画框架已发了iOS业界极大的关注,其实Apple早在Cocoa...
分类:
Web程序 时间:
2014-06-03 02:36:02
阅读次数:
353
实现基于数据结构的语言
创建任何 DSL 都应该从定义需要解决的问题开始。这里,我们需要定义一个 DSL 库(有时也称为组合库,combinators library),用于二维图形,这是一个很明显的选择。这个示例演示如何用大量简单的基本图形构建出复杂的结构。在计算机屏幕上的图像本质上就是线条和多边形的集合,尽管显示出来的图形可能极其复杂。这个示例用四个模块表现:第一,清单 12-1,提供...
分类:
其他好文 时间:
2014-06-03 00:38:21
阅读次数:
420
美妙的Python之Python起步 简而言之: Python 是能你无限惊喜的语言,与众不同。...
分类:
编程语言 时间:
2014-06-03 00:36:33
阅读次数:
262
??
pl/sql编程语言是Oracle中操作数据库最快的语言,而存储过程本质就是pl/sql,所以通过存储过程来对数据库进行CRUD是最有效的。
不再使用JDBC来进行CRUD操作,因为使用JDBC来进行CRUD操作效率低。
所以,Java通过调用存储过程,来间接调用pl/sql,达到对数据库的CRUD操作。
我们可以把CRUD操作封装到存储过程中,在程序中,调用...
分类:
数据库 时间:
2014-06-01 11:22:25
阅读次数:
252