成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們聊聊如何在兩組10億數據中查找重復數據?

開發 前端
回想十年前,面試能夠講清楚JMM,就已經算是頭部選手的。但是十年后的今天,如果不會JMM,估計連一面都過不了。所以很多時候,都已經跳過問這么簡單問題了。

你好,我是看山。

本文分析下一個經典面試題:如何在兩組10億數據中查找重復數據?

這個問題一般會有一個前提和一個約束:

  1. 前提是內存或存儲空間受限,不足以使用Map等數據結構,即無法完全加載數據后再做對比;
  2. 約束是重復數據的篩選粒度,是模糊篩選還是精確篩選,不同的約束需要使用不同的方式。

本文先講解下模糊篩選約束下如何實現。

分析考點

一般來說,面試題和我們之前的考試是相似的,每個問題都會有一個考察點。

那本題的考察點是什么呢?作為面試官,我希望從這個問題中考察同學的知識的寬度和對位圖的理解。

說實在的,隨著Java棧發展越來越完善,面試中的問題也越來越難。

回想十年前,面試能夠講清楚JMM,就已經算是頭部選手的。但是十年后的今天,如果不會JMM,估計連一面都過不了。所以很多時候,都已經跳過問這么簡單問題了。

整個行業都是如此,入門門檻越來越高,對應屆生要求越來越高,要求大家更加專業。大勢如此,我們只能順勢而為。

第二個要考察的點是能夠想到資源有限,并能夠回答位圖的優勢是占用資源少。

如果能夠答出這兩個點,這個題就是90分,如果再有更深的理解,我甚至可以忽略面試者不懂JMM。

紙上與躬行

紙上得來終覺淺,覺知此事需躬行。

我們直接編寫一下代碼,結束Guava的布隆過濾器。

public class FuzzyFilter {
    static final int nums = 1_000_000_000;

    // 創建布隆過濾器
    static final BloomFilter<String> bloomFilter = BloomFilter.create(Funnels.stringFunnel(UTF_8), nums, 0.0001);

    public void add(String key) {
        bloomFilter.put(key);
    }

    public boolean contains(String key) {
        return bloomFilter.mightContain(key);
    }

    public static void main(String[] args) {
        final FuzzyFilter fuzzyFilter = new FuzzyFilter();
        final Random random = new Random(Integer.MIN_VALUE);
        for (int i = 0; i < nums; i++) {
            final String key = random.nextInt() + "";
            fuzzyFilter.add(key);
        }

        int count = 0;
        for (int i = 0; i < nums; i++) {
            final String key = random.nextInt() + "";
            if (fuzzyFilter.contains(key)) {
                count++;
            }
        }
        System.out.println("重復key數量為:" + count);
    }
}

我們先借助Guava生成布隆過濾器BloomFilter,我們定義下期望數量是10億,誤差率是0.0001,此時布隆過濾器占用位數是 19,170,116,754 位,需要使用13個hash函數。

差不多2.2G的空間,就可以處理10億的數據,相當節省空間了。

到這里,是不是發現很簡單的一道題。很多時候,不是不會,而是沒見過。見過之后,發現,不過如此。

總結

本文介紹了如何在兩組10億數據中模糊查找重復數據,通過布隆過濾器的能力,實現2G空間實現10億個數據比對。

責任編輯:武曉燕 來源: 看山的小屋
相關推薦

2025-01-24 00:00:00

數據RoaringBitmap

2018-01-26 13:28:48

數據庫數據重復數據庫清理

2013-11-25 09:52:13

VDI數據刪除

2024-10-16 18:09:54

2022-08-31 15:35:34

數據高效

2021-11-30 10:00:01

SQL數據重復

2009-01-11 17:32:03

Oracle數據庫重復數據

2010-09-02 10:36:51

SQL刪除

2011-05-24 10:54:15

數據庫重復數據刪除

2011-04-13 13:13:09

重復數據刪除

2024-10-16 17:04:13

2011-04-13 13:05:14

重復數據刪除

2016-10-19 09:25:46

數據庫OracleMySQL

2021-04-08 10:55:53

MySQL數據庫代碼

2010-07-01 12:29:27

SQL Server重

2010-07-07 16:53:54

SQL Server重

2018-12-12 10:10:08

Windows10Windows密鑰

2011-07-25 09:45:51

樹狀結構數據庫存儲

2011-03-14 15:47:33

Oracle數據庫

2023-09-05 00:06:45

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品中文字幕 | 日韩精品一区在线 | 日韩中文在线 | 日韩精品色网 | 亚洲精品字幕 | 欧美福利影院 | 亚洲精选久久 | 日韩在线欧美 | 中文字幕亚洲精品 | 国产成人免费视频网站高清观看视频 | 国产精品 亚洲一区 | 91精品久久久久久久久 | 日本一区二区三区免费观看 | 欧美成人自拍视频 | 黄色av网站在线观看 | 精品国产一区二区三区观看不卡 | 欧美国产日韩在线 | 国精产品一区一区三区免费完 | 91精品国产自产在线老师啪 | 亚洲午夜网 | 三级在线观看 | 成人性视频免费网站 | 亚洲国产一区二区在线 | 国产精品99久久久久久宅男 | 国产精品久久久久久模特 | 欧美在线视频不卡 | 综合久久久久 | 91精品国产777在线观看 | 日韩中文一区二区三区 | 欧美国产精品一区二区三区 | 米奇7777狠狠狠狠视频 | 91久久国产综合久久91精品网站 | 欧美不卡一区 | 国产精品高潮呻吟久久av黑人 | 九色网址| yiren22综合网成人 | 青青久在线视频 | 国产精品夜夜夜一区二区三区尤 | 国产精品久久国产精品99 gif | 午夜影院网站 | 亚洲系列第一页 |