9.10扩展性与存储限制(一)——对于超大型的社交网站,展示两个人之间的“连接关系”或“社交路径”
来源:互联网 发布:周灏 金融大数据 编辑:程序博客网 时间:2024/05/17 22:11
/**
* 功能:
。
*/
* 功能:
/** * 思路: * 1)针对每个朋友ID,找出所在机器的位置:int machine_index=getMachineIDForUser(personID); * 2)转到编号为#machine_index的机器。 * 3)在那台机器上,执行:Person friend=getPersonWithID(person_id)。 * * 定义一个Server类,包含一份所有机器的列表,还有一个Machine类,代表一台单独的机器。通过散列表,有效地查找数据。 * */class Server{HashMap<Integer,Machine> machines=new HashMap<Integer, Machine>();HashMap<Integer,Integer> personToMachineMap=new HashMap<Integer, Integer>();public Machine getMachineWithId(int machineID){return machines.get(machineID);}public int getMachineIDForUser(int personID){return personToMachineMap.get(personID);}public Person getPersonWithId(int personID){Integer machineID=getMachineIDForUser(personID);if(machineID==null)return null;Machine machine=getMachineWithId(machineID);if(machine==null)return null;return machine.getPersonWithId(personID);}}class Machine{public int machineID;public HashMap<Integer,Person> persons=new HashMap<Integer, Person>();public Person getPersonWithId(int personID){return persons.get(personID);}}class Person{private int personID;private ArrayList<Integer> friendID;public Person(int id){this.personID=id;}public int getID(){return this.personID;}public void addFriend(int id){this.friendID.add(id);}}/** * 优化:减少机器间跳转次数 * 从一台机器跳转到另外一台机器的开销很昂贵,不要为了找到某个朋友就在机器之间任意跳转,而是试着批处理这些跳转动作。 * 优化:智能划分用户和机器 * 根据地域划分 * * 问题:广度优先搜索要求标记访问过的节点,如何处理 * 同一时间可能会执行很多搜索操作,因此直接编辑数据的做法并不妥当。可以利用散列表模仿节点的标记动作,以查询节点id,是否被访问过。 */
。
*/
0 0
- 9.10扩展性与存储限制(一)——对于超大型的社交网站,展示两个人之间的“连接关系”或“社交路径”
- 设计一种算法,展示两人之间的“连接关系”或“社交路径”
- 程序员面试金典: 9.10 扩展性与存储限制 10.2寻找社交网站中的朋友路径
- 【Java】如何设计facebook或linkedin的超大型社交网站?
- 我的个人社交网站
- FileRide——与众不同的社交网站
- 社交关系与大数据的结合
- 社交网站的数据挖掘与分析
- 国外社交网站个人首页的眼动研究情况
- 社交网站常见的用户与好友关系表设计(mysql)
- 圈圈——兴趣图谱与关系图谱结合的新社交网络
- 一些好的社交网站
- 关于社交网站的思考
- 社交网站SNS的运用
- 社交网站未来或将形成“超级个人中心”
- 对于支付宝进军社交的看法
- 9.10扩展性与存储限制(三)——若只有4KB内存可用,该如何打印数组中所有重复的元素
- 博客、微博、社交网站的对比与未来发展浅析
- win7中设置保护眼睛的绿豆沙色
- 5-求解线性方程组
- C#装箱拆箱 Nullable
- 6-使用MATLAB进行概率统计分析
- Android 开发中 如何将xml文件封装成对象,存放到数组中?
- 9.10扩展性与存储限制(一)——对于超大型的社交网站,展示两个人之间的“连接关系”或“社交路径”
- [bfs]AOJ 0558 Cheese
- 8-MATLAB绘图
- LoadRunner脚本创建、录制和添加事务
- What is the modified poplar formwork plywood
- mvn基础之常用的构建命令以及自动创建目录骨架
- 《编程之美》1.6 饮料供货——贪心解法证明
- 支付交易中遇到浮点数精度的问题
- CVI关于INI文件的操作