
分布式计算与海量数据处理
文章平均质量分 72
August_1989
JAVA核心技术,中间件,高性能,高并发,性能调优,机器学习算法
展开
-
教你如何迅速秒杀掉:99%的海量数据处理面试题
作者:July出处:结构之法算法之道blog个人觉得很不错,对以后的互联网公司,比如百度,阿里的面试很有帮助前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一转载 2013-07-15 09:15:00 · 1051 阅读 · 0 评论 -
介绍Amazon分布式存储引擎Dynamo
Dynamo 是 Amazon 公司的一个分布式存储引擎。 那么这个什么引擎又是什么?首先,假设一个场景,你的网站要存储用户登陆的IP。这个问题怎么解决呢?传统的方法是用数据库。数据库提供了方便的操作接口,复杂的查询能力以及事物的保证。好,现在假设大家都很喜欢你的网站,访问的人越来越多。一个数据库已经处理不过来了。于是你安装了3台数据库主机,把用户分成了三类(男人,女人,IT人;总是有某种方法把用转载 2014-10-26 21:44:37 · 3050 阅读 · 0 评论 -
跨库事务一致性问题的解决方案(例)
我们看一个跨库事务一致性的问题,这是一个简单的场景:有新老两个系统,对应新老两套数据库,新数据库采用分库分表的设计,考虑到项目发布之后可能存在风险,采取了新老系统的并行方案。这个系统的业务比较简单:接收来自外部的数据,然后对数据进行核对处理。为了保证新老系统能够并行,在接收数据的时候必须实现双写方案,从而导致了跨库事务的一致性问题。 下面一幅图展示这一简单的场景 这里面会存在一个小问题原创 2014-10-09 17:52:56 · 9324 阅读 · 1 评论 -
MySQL中采用类型varchar(20)和varchar(255)对性能上的影响
1.MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为20*3(utf-8)(+2+1),255*3(utf-8)(+2+1),其中"+2"用来存储长度信息,“+1”用来标记是否为空,加载索引信息时用varchar(255)类型会占用更多的内存; (备注:当字段定义为非空的时候,是否为空的标记将原创 2014-12-17 16:27:49 · 12053 阅读 · 0 评论 -
乐观锁与悲观锁及应用举例
最近因为在工作中需要,学习了乐观锁与悲观锁的相关知识,这里我通过这篇文章,把我自己对这两个“锁家”兄弟理解记录下来; - 悲观锁:正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)的修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即原创 2015-01-25 21:15:40 · 7847 阅读 · 0 评论 -
提高数据库查询速度的几个思路
提高数据库查询速度的几个思路 :1、缓存,在持久层或持久层之上做缓存;2、数据库表的大字段剥离,保证单条记录的数据量很小; 3、恰当地使用索引;4、必要时建立多级索引; 5、分析Oracle的执行计划,通过表数据统计等方式协助数据库走正确的查询方式,该走索引就走索引,该走全表扫描就走全表扫描; 6、表分区和拆分,无论是业务逻辑上的拆分(如一个月一张报表、分库)还是无业务含义的分区(如根据ID取模分原创 2015-07-08 23:05:01 · 3099 阅读 · 0 评论 -
Map/Reduce 算法面试问题列表
1. Map/Reduce方式实现矩阵相乘http://www.norstad.org/matrix-multiply/index.html 2. Map/Reduce方式实现PageRank算法http://blog.ring.idv.tw/comment.ser?i=369http://code.google.com/p/map-reduce-assig转载 2013-08-27 11:05:28 · 2203 阅读 · 0 评论 -
运用bitmap解决一道海量数据处理面试题:在2.5亿个整数中找出不重复的整数,注,内存不足以容纳这2.5亿个整数。
采用2-Bitmap(每个数分配2bit,00表示不存在,01表示出现一次,10表示多次,11无意义)进行,共需内存2^32 * 2 bit=1 GB内存,还可以接受。然后扫描这2.5亿个整数,查看Bitmap中相对应位,如果是00变01,01变10,10保持不变。所描完事后,查看bitmap,把对应位是01的整数输出即可。原创 2013-07-15 13:01:49 · 6088 阅读 · 6 评论 -
从Trie树(字典树)谈到后缀树
从Trie树(字典树)谈到后缀树转自:作者:July、yansha。出处:http://blog.youkuaiyun.com/v_JULY_v 。 引言 常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来讲另外两种树:Tire树与后缀树。不过,在此之前,先来看两个问题。 第一个问题: 一个文本文件,大约有一万转载 2013-07-19 10:43:51 · 1215 阅读 · 0 评论 -
海量数据处理算法总结
1. Bloom Filter【Bloom Filter】Bloom Filter(BF)是一种空间效率很高的随机数据结构,它利用位数组很简洁地表示一个集合,并能判断一个元素是否属于这个集合。它是一个判断元素是否存在集合的快速的概率算法。Bloom Filter有可能会出现错误判断,但不会漏掉判断。也就是Bloom Filter判断元素不再集合,那肯定不在。如果判断元素存在集合中,原创 2013-07-29 21:13:32 · 2025 阅读 · 0 评论 -
Bit Map解析
1. Bit Map算法简介 来自于《编程珠玑》。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。2、 Bit Map的基本思想 我们先来看一个具体的例子,假设我们要对0-7内的5个元素(4,7,2,5,3)排序(这原创 2013-08-02 18:53:17 · 1690 阅读 · 0 评论 -
海量数据处理
海量数据处理是基于海量数据上的存储、处理、操作。 所谓海量,就是数据量很大,可能是TB级别甚至是PB级别,导致无法一次性载入内存或者无法在较短时间内处理完成。面对海量数据,我们想到的最简单方法即是分治法,即分开处理,大而化小,小而治之。我们也可以想到集群分布式处理。1 海量数据的存储:为大数据分析做准备传统关系型数据库原创 2013-08-02 18:56:54 · 1594 阅读 · 0 评论 -
建索引的原则-以innodb为例
一、写在前面 随着开发、测试任务进入尾声,大家都在整理一些项目发布前的一些准备工作,其中一个重要的工作就是为之前写的一些sql语句建立索引,这高并发、高访问量的环境下是非常有必要的,建立一个好的索引能够极大地提高sql语句的查询效率,那么问题来了,到底什么是索引,怎样才能建立一个好的索引呢?本文以mysql Innodb存储引擎为例,结合实际的项目来看一下,如何建立一个好的而索引。 二原创 2015-08-16 12:01:31 · 2378 阅读 · 0 评论