免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 大众推荐
打印 上一主题 下一主题

微信/陌陌 附近的人 是怎么样实现的? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2014-09-30 11:55 |只看该作者
大数据,big data

论坛徽章:
0
12 [报告]
发表于 2014-09-30 12:18 |只看该作者
楼上的亲们,
能不能具体点,用通俗易懂的方式,举例说明一下下具体是怎么样实现的。。。

huapei 发表于 2014-09-30 11:55
大数据,big data

论坛徽章:
0
13 [报告]
发表于 2014-10-05 08:18 |只看该作者
回复 1# 大众推荐


    myisam支持很多gis函数,应该会有更简单的办法

论坛徽章:
0
14 [报告]
发表于 2014-10-05 10:03 |只看该作者
基本不用GPS, 一般用三点定位。

论坛徽章:
0
15 [报告]
发表于 2014-10-05 10:33 |只看该作者
    谢谢,回头了解一下~~
回复 13# cyberstan


论坛徽章:
0
16 [报告]
发表于 2014-10-05 10:33 |只看该作者
这样啊。。但是如果不打开GPS,好像无法使用 附近的人 功能啊。。

回复 14# owenhappy


   

论坛徽章:
0
17 [报告]
发表于 2014-10-11 12:49 |只看该作者
直接用DB搜索根据经纬度不太可取。
1, 可以直接用MONGODB ,提供类似方法,优化了效率。
2, 如果请求量特别大就对地球进行分块 用01表示  比如南半球 0 北半球1 东半球0 西半球1 再对南半球 进行细分 也分东西南北, 最后用0101010111这种字符串表示一个经纬度。参见GOOGLE GEOHASH
     搜索的时候为TRIE树,时间复杂度固定,比较有效率。微信这种搜索量级可以采用,一般的直接用MONGODB或者类似的数据库搜索,不需要另外自己写程序。

论坛徽章:
0
18 [报告]
发表于 2014-10-11 16:01 |只看该作者
涨姿势了!!!!
谢谢指教!

论坛徽章:
0
19 [报告]
发表于 2014-10-16 11:28 |只看该作者
两个经纬度之间的距离是可以算出来的。 每次打开附近的人,都会上穿你自己的经纬度给后人搜索到你,然后到已经记录经纬度过的人的列表中计算距离。如果你不再打开附近的人,即使你移动了位置,在一定时间内你在系统中的位置是不变的,别人可以一直找到你。一定时间后你会被清除,就找不到了。所以微信里面有一个功能就是清除你的位置,这样别人就搜不到你了。

论坛徽章:
0
20 [报告]
发表于 2014-10-16 17:43 |只看该作者
哪需要这么复杂,又是大数据,又是三点定位的,又是地图位置计算的,
技术人员的思维永远钻入事后技术处理技术的细节.

如果让我来实现,只需要把获取的位置信息(无论是GPS什么的具体表示),只要简单的的HASH算法,把在一定范围内的位置数据单向散列为同一值,再存入数据库; 
查找时,只需要匹配hash值相同的用户列表,随机选取推送几个就OK了啊.

思路的不同点是先计算再保存再查找.
而不是先保存再查找再计算.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP