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

我們一起聊聊如何精確查找重復(fù)數(shù)據(jù)?

開發(fā) 前端
所有的判重題目一定要有一個大前提,數(shù)據(jù)是什么類型的?如果是字符串,快速高效判重的方式都是模糊判重。想要精確判重需要記住分而治之的方式。如果是數(shù)字,使用Roaring Bitmap可以實現(xiàn)精確判重。

先說一下大前提

所有的判重題目一定要有一個大前提,數(shù)據(jù)是什么類型的?

如果是字符串,快速高效判重的方式都是模糊判重。想要精確判重需要記住分而治之的方式。

如果是數(shù)字,使用Roaring Bitmap可以實現(xiàn)精確判重。

一般的Roaring Bitmap是基于32位數(shù)字實現(xiàn)的,還有64位的升級版,邏輯相似。

如果對Roaring Bitmap算法不了解的,可以看下什么是Roaring Bitmap?。

直接上代碼

我們先引入依賴:

<dependency>
    <groupId>org.roaringbitmap</groupId>
    <artifactId>RoaringBitmap</artifactId>
    <version>1.3.0</version>
</dependency>

我們這里就先使用數(shù)字實現(xiàn)了:

final RoaringBitmap a = new RoaringBitmap();
final RoaringBitmap b = new RoaringBitmap();
final Random random = new Random(Integer.MAX_VALUE);

final int nums = 1_000_000_000;
for (int i = 0; i < nums; i++) {
    a.add(random.nextInt());
    b.add(random.nextInt());
}

final RoaringBitmap intersection = RoaringBitmap.and(a, b);
System.out.println("重復(fù)數(shù)量:" + intersection.getLongCardinality());

我們使用sdk中的RoaringBitmap類創(chuàng)建Roaring Bitmap對象,然后循環(huán)向其中加入int類型數(shù)字。

然后借助RoaringBitmap.and計算交集,交集就是重復(fù)數(shù)據(jù)。

代碼是不是很簡單。

有時候,我們站在前人的肩膀上,就可以快速實現(xiàn)一些高效的邏輯。

如果數(shù)據(jù)是字符串呢?

前面提到,如果基礎(chǔ)數(shù)據(jù)是字符串,比如url鏈接判重,上面的邏輯就只能是模糊判重了。

但是如何實現(xiàn)呢?

其實邏輯和布隆過濾器類似,借助離散hash算法,將字符串轉(zhuǎn)換為數(shù)字,然后再將數(shù)字放入到Roaring Bitmap中。

因為這種方式一定會有hash碰撞,所以結(jié)果是模糊判重。

但是在實際場景中,我們其實是可以避免出現(xiàn)字符串判重情況的。

比如,我們想要判斷兩個人看的視頻或者文章的重復(fù)內(nèi)容時,我們可以記錄視頻或文章的ID。一般來說,為了更好的DB查找,ID我們會設(shè)置成數(shù)字。

這個時候,字符串的場景直接轉(zhuǎn)變?yōu)閿?shù)字場景了。

所以說,有的時候,路就在那,有石頭堵住了前路,就迂回過去。

“曲成萬物而不遺。”這世間萬物,向來都是迂回曲折、無往不復(fù)的。水能直至大海,就是因為它巧妙地避開了各種障礙,不斷拐彎前行;人能走向成功,就是因為能夠靈活變通,及時拐彎調(diào)頭。

曲成萬物而不遺

文末總結(jié)

本文借助Roaring Bitmap實現(xiàn)10億數(shù)據(jù)的精確判重。

假設(shè)我們需要對10億URL精確判重如何實現(xiàn)呢?我們下回接著聊。

責(zé)任編輯:武曉燕 來源: 看山的小屋
相關(guān)推薦

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-09-10 21:42:31

2022-05-24 08:21:16

數(shù)據(jù)安全API

2024-11-27 16:07:45

2024-09-30 09:33:31

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2024-09-09 00:00:00

編寫技術(shù)文檔

2023-04-03 00:09:13

2024-12-10 00:00:25

2021-12-10 07:45:48

字節(jié)音頻視頻

2025-01-23 00:00:00

JMMJava

2023-11-06 07:21:02

DBaaSApachealpha版本

2022-08-30 13:48:16

LinuxMySQL內(nèi)存

2024-11-27 08:47:12

2021-11-04 06:58:31

CSS性能設(shè)備

2023-03-26 23:47:32

Go內(nèi)存模型

2022-02-23 08:41:58

NATIPv4IPv6
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 亚洲福利免费 | 免费在线一区二区 | 免费能直接在线观看黄的视频 | 成人午夜电影网 | 国产黄色在线观看 | 久久久九九九九 | 日韩一区二区免费视频 | 日韩成人在线视频 | 欧美综合久久久 | 99免费在线观看 | 国产精品不卡 | 天天插天天搞 | 一级黄色在线 | 在线免费观看成人 | 日韩欧美视频免费在线观看 | 精品视频99 | 羞羞视频在线观看 | 欧美淫片| 天天插天天射天天干 | 国产成人一区二区 | 日韩淫片免费看 | 国产一级一级 | 国产精品高潮呻吟久久av野狼 | 免费在线观看成人 | 一区二区久久精品 | 欧美啪啪网站 | 国产精品久久国产精品 | 91视频在线观看免费 | 91久久国产综合久久91精品网站 | 日韩小视频| www.狠狠干 | 亚洲国产精品一区二区三区 | 日韩高清一区 | 国产一区2区 | www.日韩系列 | 国产视频精品视频 | 久久精品亚洲国产奇米99 | 欧美 日韩 视频 | 免费在线观看黄色av | 久久精品99久久 | 日韩毛片中文字幕 |