了解:
1、Arrays.mergeSort排序算法
2、BigInteger的实现原理
3、红黑树的添加和删除操作实现
4、Collections各方法的相关实现
5、ORACLE怎么查找db_cache pool中的block,比如全表扫描怎么查找到所有的block。
6、学习apache,memcached、webservice、MYSQL
大数据量处理算法:
1. Bloom Filter
2. Hash
3. Bit-Map
4. 堆
5. 双层桶划分
6. 数据库索引
7. 倒排索引(Inverted Index)
8. 外排序
9. Trie树
10. MapReduce
1、bloom filter
转载:http://www.hellodba.net/2009/04/bloom_filter.html
设想以下的一个问题:有一个keyword的集合,我们需要快速判定某个keyword是否包含在其中。最简单的方法是遍历,但是效率很差。我们马上想到了hash的方法,因为在Oracle内部,hash无处不在。比如在cache buffer中找到某个block,在shared pool中找到某个SQL等等。我们可以把keyword的集合build成一个hash table,然后根据keyword计算hash值,通过是否落在相应的hash bucket中,这样就可以实现快速查找的目的。这个方法不错,但是当keyword过多时,hash table会占用大量内存,效率也会随之下降。
今天公司的架构师介绍了一个新的方法给我:Bloom Filter。它是一种基于随机数(或Hash)的数据结构,它支持对成员使用较少空间来存储,却能得到较高效率的查询。换句话说:在Bloom Filter 可以用于检索一个元素是否在一个集合中。其原理如下:
建立一个容量为500万的Bit Array结构(Bit Array的大小和keyword的数量决定了误判的几率),将集合中的每个keyword通过32个hash函数分别计算出32个数字,然后对这32个数字分别用500万取模,然后将Bit Array中对应的位置为1,我们将其称为特征值。简单的说就是将每个keyword对应到Bit Array中的32个位置上,见下图:
当需要快速查找某个keyword时,只要将其通过同样的32个hash函数运算,然后映射到Bit Array中的对应位,如果Bit Array中的对应位全部是1,那么说明该keyword匹配成功。
Bloom filter 是一个集合的有损编码,所以它不是一种“保险”的方案,存在一定的误判率。
另参考:http://blog.csdn.net/jiaomeng/archive/2007/01/27/1495500.aspx
========================================================================
1、在一条街上,有5座房子,喷了5种颜色。
2、每个房里住着不同国籍的人
3、每个人喝不同的饮料,抽不同品牌的香烟,养不同的宠物
问题是:谁养鱼?
提示:
1、英国人住红色房子
2、瑞典人养狗
3、丹麦人喝茶
4、绿色房子在白色房子左面
5、绿色房子主人喝咖啡
6、抽Pall Mall 香烟的人养鸟
7、黄色房子主人抽Dunhill 香烟
8、住在中间房子的人喝牛奶
9、 挪威人住第一间房
10、抽Blends香烟的人住在养猫的人隔壁
11、养马的人住抽Dunhill 香烟的人隔壁
12、抽Blue Master的人喝啤酒
13、德国人抽Prince香烟
14、挪威人住蓝色房子隔壁
15、抽Blends香烟的人有一个喝水的邻居
以上是爱因斯坦在20世纪初出的这个谜语。他说世界上有98%的人答不出来。
你能做出来吗?
- 大小: 31.7 KB
分享到:
相关推荐
【待办任务源代码】是一种实现个人或团队任务管理的应用程序,它的核心功能包括添加新的待办事项、删除已完成的任务以及设置提醒功能。这个软件允许用户根据任务的重要性和紧迫性来定制任务的紧急程度,确保优先处理...
标题中的“todoliste”显然指的是一个用于管理个人任务的系统,它允许用户创建和跟踪他们的待办事项。这样的系统通常包含一系列功能,比如添加、删除、编辑任务,以及标记任务为已完成。描述中提到的任务被打勾,这...
1. **产品积压工作列表(Product Backlog)**:这是所有待完成任务的集合,通常按优先级排序。团队成员可以在JavaScript App中添加、修改和删除任务,保持积压工作的清晰和更新。 2. **冲刺积压工作列表(Sprint ...
在本项目中,MySQL被用于存储待办事项的相关信息,如任务标题、描述、创建时间、完成状态等。开发者需要创建相应的数据表结构,编写SQL语句来操作数据,同时使用ADO.NET或者Entity Framework等库进行数据库连接和...
待完成任务:显示今日往后的未完成任务,并对任务操作,如新建、取消、完成、接受 未完成任务:显示今日以前的未完成任务 已完成任务:显示完成的任务 我的发起任务:显示所有我发起的任务,其中包括我仅发起而...
待完成任务:显示今日往后的未完成任务,并对任务操作,如新建、取消、完成、接受 未完成任务:显示今日以前的未完成任务 已完成任务:显示完成的任务 我的发起任务:显示所有我发起的任务,其中包括我仅发起而...
待完成任务:显示今日往后的未完成任务,并对任务操作,如新建、取消、完成、接受 未完成任务:显示今日以前的未完成任务 已完成任务:显示完成的任务 我的发起任务:显示所有我发起的任务,其中包括我仅发起而...
待完成任务:显示今日往后的未完成任务,并对任务操作,如新建、取消、完成、接受 未完成任务:显示今日以前的未完成任务 已完成任务:显示完成的任务 我的发起任务:显示所有我发起的任务,其中包括我仅发起而...
待完成任务:显示今日往后的未完成任务,并对任务操作,如新建、取消、完成、接受 未完成任务:显示今日以前的未完成任务 已完成任务:显示完成的任务 我的发起任务:显示所有我发起的任务,其中包括我仅发起而不...
待完成任务:显示今日往后的未完成任务,并对任务操作,如新建、取消、完成、接受 未完成任务:显示今日以前的未完成任务 已完成任务:显示完成的任务 我的发起任务:显示所有我发起的任务,其中包括我仅发起而...
用户任务是需要人工参与的节点,流程到达用户任务时会暂停,待完成任务后再继续执行。用户任务可通过设置执行人或候选执行人。 1.2.4 多实例 多实例允许流程重复执行特定步骤,类似于编程中的循环。通过添加`...
使用场景及目标:目的是建立一种直观易用的任务管理辅助工具,使用户能方便地记录日常计划,并提供三种筛选视图供不同情况下的浏览需求。同时也作为Vue.js项目实践的实战案例来加深理解。 其他说明:虽然本文介绍的...
- **待完成任务**: - 开发团队正在加快产品研发进度,预计三个月内完成初步原型。 - 市场部门正在制定详细的推广计划。 - **问题分析**: - **遇到的问题**: - 资金不足导致某些关键环节进展缓慢。 - 由于市场...
音乐的播放,不仅为枯燥的工作添加了一丝趣味,更是对完成任务的自我奖励。科学研究表明,适当的压力和奖励可以有效激发人们的积极性和创造性,而这款应用的这一特点恰好符合了这一心理机制。 在技术实现方面,这款...
<br>10、修改了我的任务,其功能包括:待完成任务、未完成任务、已完成任务、预警任务、警告任务、我的发起、任务下达、任务统计; <br>11、为邮件发送、公文发送、工作流及审批、通知公告等增加了手机短信...
- **Backlog**:包含所有待完成任务的列表,分为产品Backlog(全部任务)和Sprint Backlog(当前迭代任务)。 - **Sprint**:固定长度的开发周期,团队在此期间完成指定的Backlog任务,并交付可工作的软件增量。 ...
•按特定顺序从列表中完成任务 •依赖关系:MLO 可以处理顺序和并行项目,保留在其他任务完成之前无法启动的任务。 •日历视图:分析您的日常工作量 •附近视图:获取当前 GPS 位置的操作列表,并在您到达该位置时...
每个任务都是流程中的一环,待办任务列表显示了当前用户需要处理的所有未完成的工作。这些任务可能是由其他用户分配过来的,或者是流程自动分配的。通过查看待办任务,用户可以清晰地了解自己的工作职责,按照优先级...
产品Backlog是项目中所有待完成任务的列表,包括功能性需求和非功能性需求。Sprint是一次迭代开发的时间周期,通常设定为30天。Sprint Backlog是在一个Sprint内要完成的任务列表。Burndown Chart用来可视化团队的...