编程之美1.5 快速找出故障机器
来源:互联网 发布:苹果电脑软件删除图标 编辑:程序博客网 时间:2024/04/29 06:55
关心数据挖掘和搜索引擎的程序员都知道,我们需要很多的计算机来存储和处理海量数据。然而,计算机难免会有硬件故障而导致网络联系失败或死机。为了保证搜索引擎的服务质量,我们需要保证每份数据都有多个备份。
为了简单起见,我们假设一个机器仅储存一个标号为 ID 的纪录(假设 ID 是小于 10 亿的整数)假设每份数据保存两个备份,这样就有两个机器储存了同样的数据。
1. 在某个时间,如果得到一个数据文件 ID 的列表,是否能够快速地找出这个表中仅出现一次的 ID?
2. 如果已经知道只有一台机器死机(也就是说只有一个备份丢失)呢?如果有两台机器死机呢(假设同一个数据的两个备份不会同时丢失)?
分析:
这个问题简化一下就是,给定个ID列表,有一个ID仅出现一次,其余的都出现了2次,如何快速找到这个只出现一次的ID。第二问就是,如果有两个ID出现一次,如何快速找到这两个ID。最简单的办法是遍历一遍记录每个ID的次数,但是这类问题都需要考虑假如数据量非常大怎么办的问题,数据量非常大时,可能一个长度为ID数量的数组都会存不下。
这个题目的优化方法比较多。假如只有一台受损,那么可以使用异或运算进行操作,遍历每个ID并计算已遍历过的数据的亦或值,遍历完成之后得到的就是那个仅有一个的ID。但是这个方法不适合有两台机器死机的情况。两台机器死机的情况下,可以这样改进这个算法,先进行一次遍历异或运算,得到的值为这两台机器的异或值,由于这两个机器不同,那么至少有一位为1,可以根据这位的值把数分成两组,分别异或,得到的就是这两台机器的ID。
2 0
- 《编程之美》-- 快速找出故障机器
- 读书笔记之编程之美 - 1.5 快速找出故障机器
- 读书笔记-编程之美-1.5快速找出故障机器
- 【编程之美】1.5 快速找出故障机器
- 编程之美1.5 快速找出故障机器
- 编程之美:第一章 1.5快速找出机器故障
- 编程之美 1.5 快速找出故障机器
- 编程之美1.5——快速找出故障机器
- 《编程之美》读书笔记-1.5快速找出机器故障
- 《编程之美》阅读心得之快速找出机器故障
- 编程之美学习之快速找出故障机器
- 编程之美_1.5_快速找出机器故障
- 编程之美——快速找出故障机器
- 编程之美1:快速找出故障机器
- 编程之美(5) 快速找出故障机器
- 编程之美_1.5_快速找出机器故障
- 编程之美_1.5_快速找出机器故障
- 编程之美——快速找出机器故障问题
- 程序员表白程序,开放源码,不断更新
- 成功求职者的自述:如何向应聘企业展示自身价值?
- constraints.insets = new Insets(10, 10, 10, 10);作用是四方的间距
- Java I/O总结(二)
- 回路常考
- 编程之美1.5 快速找出故障机器
- 纯水属于酸性水数据标准
- RSA算法原理(二)
- C++学习笔记&总结
- 背包九讲笔记-01背包问题
- 黑马程序员_Java基础_网络编程(上)_23
- avoid jstl in loop
- vs2008中向项目(以C#为例)添加要求管理员权限的属性(为了兼容vista的UAC)
- php filter函数验证、过滤用户输入数据