摘要: Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为了避免形成“环”,就需要知道蜘蛛已经访问过那些URL。给一个URL,怎样知道蜘蛛是否已经访问过呢?稍微想想,就会有如下几种方案: 1. 将访问过的URL保存到数据库。 2. 用HashSet将访问过的URL保存起来。那只需接近O(... 阅读全文
posted @ 2012-09-26 10:37 星语心愿~ 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 对象的方法中一旦加入synchronized修饰,则任何时刻只能有一个线程访问synchronized修饰的方法。假设有个数据对象拥有写方法与读方法,多线程环境中要想保证数据的安全,需对该对象的读写方法都要加入synchronized同步块。这样任何线程在写入时,其它线程无法读取与改变数据;如果有线程在读取时,其他线程也无法读取或写入。这种方式在写入操作远大于读操作时,问题不大,而当读取远远大于写入时,会造成性能瓶颈,因为此种情况下读取操作是可以同时进行的,而加锁操作限制了数据的并发读取。 ReadWriteLock解决了这个问题,当写操作时,其他线程无法读取或写入数据,而当读操作时,其它线程 阅读全文
posted @ 2012-09-23 15:39 星语心愿~ 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 前记:jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue);中篇中主要聊聊与keepAliveTime这个参数相关的话题;下片中介绍一下一些比较少用的该类的API,及他的近亲:ScheduledThreadPoolExecutor。如果理解错误,请直接指出。上篇文章 传送门ht 阅读全文
posted @ 2012-09-20 20:18 星语心愿~ 阅读(828) 评论(0) 推荐(0) 编辑
摘要: ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。前记:jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue);中篇中主要聊聊与kee 阅读全文
posted @ 2012-09-20 20:10 星语心愿~ 阅读(329) 评论(0) 推荐(0) 编辑
摘要: enum Color{ RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0); //构造枚举值,比如RED(255,0,0) private Color(int rv,int gv,int bv){ this.redValue=rv; this.greenValue=gv; this.blueValue=bv; ... 阅读全文
posted @ 2012-09-19 15:51 星语心愿~ 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 经过几番调研,我觉定将我的毕业设计架构在ubuntu11.04+ hypertable +( hadoop)上。 当然,开始就是安装就是hypertable,本以为很容易就装上了,结果印证了一句话:程序员的世界只有实践才能证明结果啊!悲剧的我安装了一周,时至今日才勉强搞定,遂把自己的血泪教训记录一番,大牛牛们也许觉得很白菜的误区根本不足讨论,但是,若是遇到像我一样的菜鸟,希望能为他避开一些误区,不要和我犯同样的错误啊~1 在网上搜寻了前辈安装hypertable的记录,几番筛选,选择了台湾一个前辈的安装笔记,因为很详细很具体,每步骤都有截图。现在回想一下,从此刻就埋下了我之后一周的悲剧的种子啊 阅读全文
posted @ 2012-09-12 17:01 星语心愿~ 阅读(178) 评论(0) 推荐(0) 编辑
摘要: 随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域, 非关系数据库产品的发展非常迅速。而传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不 从心,暴露了很多难以克服的问题,例如: 1、High performance - 对数据库高并发读写的需求 web2.0网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到 每秒上万次读写请求。关系数据库应付上万次SQL查询还勉强顶得住,但是应付上万次SQL写数据请求,硬盘IO就已经无法承受 阅读全文
posted @ 2012-09-12 15:43 星语心愿~ 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2012-09-11 01:00 星语心愿~ 阅读(126) 评论(0) 推荐(0) 编辑
摘要: public class PathUtil {public static void main(String[] args)throws Exception { PathUtil p = new PathUtil(); System.out.println(p.getWebClassesPath()); System.out.println(p.getWebInfPath()); System.out.println(p.getWebRoot());}public String getWebClassesPath() { String path = getClass().ge... 阅读全文
posted @ 2012-09-07 00:25 星语心愿~ 阅读(327) 评论(0) 推荐(0) 编辑
摘要: GraphChi由卡内基梅隆大学的Aapo Kyrola 博士生开发,是GraphLab项目的一个分支。该框架能够在单机上完成大数据的图计算。GraphChi借鉴 GraphLab 和 Pregel 两个项目,采用基于以顶点为中心的计算模型。GraphChi 的核心是名为Parallel Sliding Windows (并行式滑动窗口,简称PSW)的模型,能够异步处理存储在硬盘上的可变图数据。1. PSW模型1PSW模型算法分为三个阶段:从硬盘载入数据、更新顶点和边、将更新写入到磁盘。作者对在介绍PSW时,以边权重可变的图作为示例,给定有向图G=(V, E)载入数据阶段:顶点集V被分为P个不 阅读全文
posted @ 2012-09-05 10:29 星语心愿~ 阅读(471) 评论(0) 推荐(0) 编辑