Algorithm 为Google之类的东西设计一个日志系统,以获取URL在指定时间段内被点击的频率
嗨,这是一个来自中国的采访中的问题 问题陈述:你将如何为谷歌这样的东西设计一个日志系统,你应该能够查询URL在两个时间范围内被打开的次数 i/p:开始时间、结束时间、URL1 o/p:在开始和结束时间之间打开URL1的次数 一些规范:数据库不是最佳解决方案URL可能已经为给定的时间戳打开了多次。URL可能在两个时间戳内被多次打开。开始时间和结束时间可以相隔一个月。时间可以精确到一秒钟Algorithm 为Google之类的东西设计一个日志系统,以获取URL在指定时间段内被点击的频率,algorithm,Algorithm,嗨,这是一个来自中国的采访中的问题 问题陈述:你将如何为谷歌这样的东西设计一个日志系统,你应该能够查询URL在两个时间范围内被打开的次数 i/p:开始时间、结束时间、URL1 o/p:在开始和结束时间之间打开URL1的次数 一些规范:数据库不是最佳解决方案URL可能已经为给定的时间戳打开了多次。URL可能在两个时间戳内被多次打开。开始时间和结束时间可以相隔一个月。时间可以精确到一秒钟 我的做法: 日志记录系统:构建一个哈希表,其中键作为url,值作为url被单击时的时间数组列表。 查询时间:给
我的做法: 日志记录系统:构建一个哈希表,其中键作为url,值作为url被单击时的时间数组列表。 查询时间:给定时间段后,应用修改后的二进制搜索,获取该时间段之间的位置,然后计算在该时间段之间打开url的次数 请有人对我的方法发表评论或提出更好的方法。谢谢
另外,我已经看过这个()了,但是我觉得没有什么帮助,所以再次询问。我会按照下面的方法处理这个问题- 存储 我会使用HashMap 键-->URL 值-->日期的数组列表 每次单击URL时,我都会在上面的hashmap中添加/更新条目 检索
对于给定的时间段t1和t2以及URL,我将获得对应于URL的arraylist,并找到t1和t2的位置。只有一个计数器才能递增,直到达到t2 Google有一个Website\URL statistics API,与之集成并按时间框架进行查询给定低时间T1和高时间T2对ArrayList进行二进制搜索以查找(第一项>=T1)=ArrayList[T1]和(最后一项@munna我在我的问题中提到了同样的方法。但我很好奇这是否是一个好方法。看看网络的大小,使用hashmap对我来说听起来不是一个好主意。