文档章节

对于超大型的社交网站,展示两个人之间的“连接关系”或“社交路径”

一贱书生
 一贱书生
发布于 2016/11/23 09:06
字数 393
阅读 34
收藏 0

钉钉、微博极速扩容黑科技,点击观看阿里云弹性计算年度发布会!>>>

/**
 * 功能:

[java] view plain copy

 

  1. /** 
  2.  * 思路: 
  3.  * 1)针对每个朋友ID,找出所在机器的位置:int machine_index=getMachineIDForUser(personID); 
  4.  * 2)转到编号为#machine_index的机器。 
  5.  * 3)在那台机器上,执行:Person friend=getPersonWithID(person_id)。 
  6.  *  
  7.  * 定义一个Server类,包含一份所有机器的列表,还有一个Machine类,代表一台单独的机器。通过散列表,有效地查找数据。 
  8.  * 
  9.  */  
  10.   
  11. class Server{  
  12.     HashMap<Integer,Machine> machines=new HashMap<Integer, Machine>();  
  13.     HashMap<Integer,Integer> personToMachineMap=new HashMap<Integer, Integer>();  
  14.       
  15.     public Machine getMachineWithId(int machineID){  
  16.         return machines.get(machineID);  
  17.     }  
  18.       
  19.     public int getMachineIDForUser(int personID){  
  20.         return personToMachineMap.get(personID);  
  21.     }  
  22.       
  23.     public Person getPersonWithId(int personID){  
  24.         Integer machineID=getMachineIDForUser(personID);  
  25.         if(machineID==null)  
  26.             return null;  
  27.         Machine machine=getMachineWithId(machineID);  
  28.         if(machine==null)  
  29.             return null;  
  30.         return machine.getPersonWithId(personID);  
  31.     }  
  32.       
  33. }  
  34.   
  35. class Machine{  
  36.     public int machineID;  
  37.     public HashMap<Integer,Person> persons=new HashMap<Integer, Person>();  
  38.       
  39.     public Person getPersonWithId(int personID){  
  40.         return persons.get(personID);  
  41.     }  
  42.       
  43. }  
  44.   
  45. class Person{  
  46.     private int personID;  
  47.     private ArrayList<Integer> friendID;  
  48.       
  49.     public Person(int id){  
  50.         this.personID=id;  
  51.     }  
  52.       
  53.     public int getID(){  
  54.         return this.personID;  
  55.     }  
  56.       
  57.     public void addFriend(int id){  
  58.         this.friendID.add(id);  
  59.     }     
  60.       
  61. }  
  62.   
  63. /** 
  64.  * 优化:减少机器间跳转次数 
  65.  *      从一台机器跳转到另外一台机器的开销很昂贵,不要为了找到某个朋友就在机器之间任意跳转,而是试着批处理这些跳转动作。 
  66.  * 优化:智能划分用户和机器 
  67.  *      根据地域划分 
  68.  *  
  69.  * 问题:广度优先搜索要求标记访问过的节点,如何处理 
  70.  *      同一时间可能会执行很多搜索操作,因此直接编辑数据的做法并不妥当。可以利用散列表模仿节点的标记动作,以查询节点id,是否被访问过。 
  71.  */ 
一贱书生
粉丝 20
博文 723
码字总数 600123
作品 0
私信 提问
加载中
请先登录后再评论。
软工实践2019第四次作业-结对第一次作业

0.结对信息和作业内容 我的学号:031702532 队友-小🐏人:031702523 使用工具:墨刀 原型链接 博客PDF文档:百度网盘 附:同门师生们长久以来的困扰: 老师的困扰:都说铁打的营盘流水的兵。...

osc_dmzfpa0c
2019/10/01
1
0
推荐系统学习 -- 利用社交网络数据

基于社交网络的推荐可以很好地模拟现实社会。在现实社会中,很多时候我们都是通过朋友获得推荐。 美国著名的第三方调查机构尼尔森调查了影响用户相信某个推荐的因素。调查结果该调查可以看到...

osc_havqwnro
2019/08/01
4
0
从人人网出售看社交平台发展

日前,人人网重新进入了人们的视野,却是因为官方宣布将所从事的业务中的社交平台业务出售给一家叫多牛传媒的公司,作价2000万美金+价值4000万美金多牛的股份。而鼎盛时期,人人网的市值近百...

ThinkSNS账号
2018/11/16
10
0
排版式社交网站:Flipboard

很多人对Flipboard的第一印象是酷似杂志的布局和翻页方式,但除了外观吸引人外,实用性和效率也非常重要 还记得乔布斯是怎样像人们展示iPad的吗?他坐在沙发上,手捧iPad,逐个点开应用玩给台...

慎道
2011/07/21
286
0
At The Pool:寻觅同趣网友,将网络同步到现实中来

At The Pool:寻觅同趣网友,将网络同步到现实中来 兴趣图谱(Interest graph)是一种把人们的共同兴趣作为线索的网络图谱,使得人与人之间可以分享共同的爱好。基于兴趣图谱的社交网站可以充...

李文超
2012/07/16
24
0

没有更多内容

加载失败,请刷新页面

加载更多

还在用Swagger(丝袜哥)生成接口文档?我推荐你试试它.....

JApiDocs是一个无需额外注解、开箱即用的SpringBoot接口文档生成工具。 编写和维护API文档这个事情,对于后端程序员来说,是一件恼人但又不得不做的事情,我们都不喜欢写文档,但除非项目前后...

路人甲Java
07/09
7
0
智能仓储的独角兽逻辑

智能仓储的主要应用市场在哪里?客户的付费意愿和付费能力如何? 1、仓储设备具备标准化和通用化特点 由于电商和新零售的快速发展,轻工业品零售仓库的需求量大幅增加。而中国又是全球轻工业...

logiter
2019/08/23
14
0
可是小腿哪能扭过大腿

父亲是一个特别勤苦的人,他从不睡懒觉,每天天麻麻亮,或是下地干活,或是在家搞副业,或是拿着铁锨、粪筐,到路边,到村子周围,到牲畜常出入的地方,去拾粪蛋子,为庄稼积攒肥料,父亲不仅...

瑾123
41分钟前
16
0
一个volatile跟面试官扯了半个小时

《安琪拉与面试官二三事》系列文章,本文是此系列第三篇 一个HashMap能跟面试官扯上半个小时 一个synchronized跟面试官扯了半个小时 欢迎关注Wx公众号:【安琪拉的博客】—揭秘Java后端技术,...

osc_6ls9vwji
42分钟前
0
0
内网渗透靶机-VulnStack 2

WEB服务器:windows2008系统 外网网卡IP:192.168.1.152 内网网卡IP:10.10.10.80 域成员:windows server 2003系统 网卡IP:10.10.10.200 域控服务器:windows server 2008系统 网卡IP:192...

dnsil
07/10
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部