From b267f6d5ee2c3ee5b789b7c164c907b8ae3f8673 Mon Sep 17 00:00:00 2001 From: lucifer Date: Sat, 13 Jun 2020 19:49:00 +0800 Subject: [PATCH] Update bloom-filter.md --- thinkings/bloom-filter.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/thinkings/bloom-filter.md b/thinkings/bloom-filter.md index 280586d9e..3b2bde2c3 100644 --- a/thinkings/bloom-filter.md +++ b/thinkings/bloom-filter.md @@ -2,8 +2,8 @@ 假设你现在要处理这样一个问题,你有一个网站并且拥有`很多`访客,每当有用户访问时,你想知道这个ip是不是第一次访问你的网站。 ### hashtable 可以么 -一个显而易见的答案是将所有的ip用hashtable存起来,每次访问都去hashtable中取,然后判断即可。但是题目说了网站有`很多`访客, -假如有10亿个用户访问过,假设 IP 是 IPV4, 那么每个 IP 的长度是 4 byte,那么你一共需要4 * 1000000000 = 4000000000Bytes = 4G , 如果是判断URL黑名单,由于每个URL会更长,那么需要的空间可能会远远大于你的期望。 +一个显而易见的答案是将所有的 IP 用hashtable存起来,每次访问都去 hashtable 中取,然后判断即可。但是题目说了网站有`很多`访客, +假如有10亿个用户访问过,假设 IP 是 IPV4, 那么每个 IP 的长度是 4 byte,那么你一共需要4 * 1000000000 = 4000000000Bytes = 4G , 如果是判断URL黑名单,由于每个 UR L会更长,那么需要的空间可能会远远大于你的期望。 ### bit 另一个稍微难想到的解法是bit, 我们知道bit有0和1两种状态,那么用来表示存在,不存在再合适不过了。