http://s.sousb.com/2011/04/19/%E7%BB%B4%E6%8A%A4100%E4%BA%BF%E4%B8%AAurl/

题目:url地址 比如http://www.baidu.com/s?wd=baidu 的属性,包括定长属性(比如其被系统发现的时间)和不定长属性(比如其描述)实现一个系统a.储存和维护100亿个url及其属性。b.实现url及其属性的增删改。c.查一个url是否在系统中并给出信息。d.快速选出一个站点下所有url

提示:因为数据量大,可能存储在多台计算机中。

分析:这是一道百度的笔试题,这道题比较难,笔者只能给出几个认识到的点。

  • 首先,这些url要经过partition分到X台机器中:考虑使用一个hash函数hash(hostname(url))将url分配到X台机器中,这样做的目的:一是数据的分布式存储,二是同一个站点的所有url保存到同一台机器中。
  • 其次,每台机器应该如何组织这些数据?一种思路是用数据库的思路去解决,这里提供另外一种思路。考虑将url直接放在内存,接将url组织成树状结构,对于字符串来说,最长使用的是Trie tree,由于所占空间由最长url决定,在这里绝对不适用,再加上很多url拥有相同的属性(如路径等)这样,使用trie tree 的一个变种radix tree,相比会非常节省空间,并且不会影响效率。
  • 最后,给出了存储模型,上面的abcd四问该怎么回答,这里就不一一解答了。

维护100亿个URL相关推荐

  1. 找到100亿个URL中重复的URL及搜索词汇的TopK问题

    题目:有一个包含100亿个url的大文件,假设每个url占用64B,请找出其中所有重复的url 补充问题:某搜索公司一天的用户搜索词汇是海量的,请设计一种求出每天热门的top 100 词汇的可行方法 ...

  2. 找到100亿个URL中重复的URL

    分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.net 把大文件通过哈希函数分配到机器,或者通过哈希函数把大 ...

  3. 5 判断数据是否存在_Trie树实现:100亿URL中判断某个URL是否存在

    之前在头条看到一篇<如何在100亿URL中判断某一个URL是否存在>,里面介绍的是使用布隆算法bloomfilter,我们也知道bloomfilter只能保证URL不存在. 在这里介绍一个 ...

  4. 算法面试,如何在100 亿URL中判断某个URL是否存在

    转载自  算法面试,如何在100 亿URL中判断某个URL是否存在 如果面试官问你,一个网站有 100 亿 url 存在一个黑名单中,每条 url 平均 64 字节.问这个黑名单要怎么存?若此时随便输 ...

  5. 思考题:存储了100亿个非法网页的url地址。每个URL地址的大小占用64B。要求实现一个网页过滤系统,内存使用不能超过30GB,此外,允许有一定的误判率,但是不能超过万分之一

    https://cloud.tencent.com/developer/article/1480540 解题思路:布隆过滤器 基础介绍 布隆过滤器(Bloom Filter)是1970年由布隆提出的. ...

  6. 字节一面:如何从 100 亿 URL 中找出相同的 URL?

    点击关注公众号,Java干货及时送达 题目描述 给定 a.b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G.请找出 a.b 两个文件共同的 URL. 解答思路 每 ...

  7. 如何从 100 亿 URL 中找出相同的 URL?

    来源 | https://doocs.github.io/advanced-java/ 题目描述 给定 a.b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G.请找 ...

  8. 面试:如何从 100 亿 URL 中找出相同的 URL?

    题目描述 给定 a.b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G.请找出 a.b 两个文件共同的 URL. " 推荐一个艿艿写的 6000+ Sta ...

  9. 扛住 100 亿次请求?我们来试一试

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 来源:github.com/xiaojiaqi/10billion ...

最新文章

  1. Elasticlunr.js 简单介绍
  2. exadata磁盘组无法mount恢复---惜分飞
  3. 恢复mysql中root用户的所有权限_如何还原MySQL root用户的全部权限
  4. python中产生随机数模块_Python中random模块生成随机数详解
  5. 探测器反向偏压_近红外和可见光双模有机光电探测器
  6. Android 系统(275)---Mtk Webview基本问题
  7. 怎么看曲线有没有斜渐近线_?成考结束后,怎么看你有没有被录取?
  8. 利用VMware Infrastructure SDK编程控制虚拟机集群(2)
  9. HALCON 20.11:深度学习笔记(7)---术语表
  10. Android 选项菜单
  11. 中小企业IT建设的小看法2
  12. Latex语法学习///待更新
  13. 【渗透测试笔记】之【免杀工具——ScareCrow】
  14. CSS基础常识问答(三)
  15. 某音最近很火的挤地铁游戏直播技术:挤地铁直播+源码+软件下载+视频教程下载-亲测可用
  16. 草图实时生成动漫角色!太秀了
  17. 华清远见22071作业端口指令实现灯点亮
  18. SpringCloud Day12---SpringCloud Alibaba Sentinel 服务熔断与限流
  19. 高中日语老师教师资格证考试成功通过前辈备考经验分享
  20. 基于百度翻译和有道翻译api的一款翻译Demo

热门文章

  1. activiti根据当前节点获取下一个UseTask节点
  2. ArrayList和HashSet
  3. 微信小程序实现文件下载 以及微信小程序保存Excel
  4. GPT v.s. 中国象棋:写过文章解过题,要不再来下盘棋?
  5. 浅谈 Knowledge-Injected BERTs
  6. 入门必备!生物医学命名实体识别(BioNER)最全论文清单,附SOTA结果汇总
  7. “Paper + Code”才是研读论文的正确姿势 | PaperDaily #02
  8. 接下来学习计划2020.11.9
  9. Java中Map集合类的用法(HashMap)
  10. php粉丝关注功能,Redis实现用户关注功能