<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何從 100 億 URL 中找出相同的 URL?

          共 1097字,需瀏覽 3分鐘

           ·

          2021-08-05 03:43

          來源 | https://doocs.github.io/advanced-java/

          題目描述

          給定 a、b 兩個(gè)文件,各存放 50 億個(gè) URL,每個(gè) URL 各占 64B,內(nèi)存限制是 4G。請(qǐng)找出 a、b 兩個(gè)文件共同的 URL。

          解答思路

          每個(gè) URL 占 64B,那么 50 億個(gè) URL占用的空間大小約為 320GB。

          5, 000, 000, 000 * 64B ≈ 5GB * 64 = 320GB

          由于內(nèi)存大小只有 4G,因此,我們不可能一次性把所有 URL 加載到內(nèi)存中處理。對(duì)于這種類型的題目,一般采用分治策略 ,即:把一個(gè)文件中的 URL 按照某個(gè)特征劃分為多個(gè)小文件,使得每個(gè)小文件大小不超過 4G,這樣就可以把這個(gè)小文件讀到內(nèi)存中進(jìn)行處理了。

          思路如下 :

          首先遍歷文件 a,對(duì)遍歷到的 URL 求 hash(URL) % 1000 ,根據(jù)計(jì)算結(jié)果把遍歷到的 URL 存儲(chǔ)到 a0, a1, a2, ..., a999,這樣每個(gè)大小約為 300MB。使用同樣的方法遍歷文件 b,把文件 b 中的 URL 分別存儲(chǔ)到文件 b0, b1, b2, ..., b999 中。這樣處理過后,所有可能相同的 URL 都在對(duì)應(yīng)的小文件中,即 a0 對(duì)應(yīng) b0, ..., a999 對(duì)應(yīng) b999,不對(duì)應(yīng)的小文件不可能有相同的 URL。那么接下來,我們只需要求出這 1000 對(duì)小文件中相同的 URL 就好了。

          接著遍歷 ai( i∈[0,999] ),把 URL 存儲(chǔ)到一個(gè) HashSet 集合中。然后遍歷 bi 中每個(gè) URL,看在 HashSet 集合中是否存在,若存在,說明這就是共同的 URL,可以把這個(gè) URL 保存到一個(gè)單獨(dú)的文件中。

          方法總結(jié)

          • 分而治之,進(jìn)行哈希取余;
          • 對(duì)每個(gè)子文件進(jìn)行 HashSet 統(tǒng)計(jì)。


          往期推薦

          CEO不當(dāng)了,CTO也不做了!我要回去寫代碼,這才是我所熱愛的!

          用谷歌搜索技術(shù)問題一定比用百度好?也未必...

          好多大咖曾看他的書學(xué)習(xí)Java,如今這個(gè)男人的新作來了!

          Lombok!代碼簡潔神器還是代碼“亞健康”元兇?

          IntelliJ IDEA官方宣布中文漢化包正式發(fā)布



          喜歡本文歡迎轉(zhuǎn)發(fā),關(guān)注我訂閱更多精彩

          關(guān)注我回復(fù)「加群」,加入Spring技術(shù)交流群

          瀏覽 58
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄色小电影免费观看 | 一节A片在线视频免费 | 国产一级a毛一级a在线 | gogoav | 欧美一级直播 |