Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
Home
  • 计算机网络
  • 操作系统
  • 数据结构与算法
  • 设计模式
  • JavaSE
  • JVM
  • JUC
  • Netty
  • CPP
  • QT
  • UE
  • Go
  • Gin
  • Gorm
  • HTML
  • CSS
  • JavaScript
  • vue2
  • TypeScript
  • vue3
  • react
  • Spring
  • SpringMVC
  • Mybatis
  • SpringBoot
  • SpringSecurity
  • SpringCloud
  • Mysql
  • Redis
  • 消息中间件
  • RPC
  • 分布式锁
  • 分布式事务
  • 个人博客
  • 弹幕视频平台
  • API网关
  • 售票系统
  • 消息推送平台
  • SaaS短链接系统
  • Linux
  • Docker
  • Git
GitHub (opens new window)
  • Java语法

  • Java容器

  • Java新特性

  • IDEA常用快捷键
  • 正则表达式
  • API
  • 场景题

    • 1g内存如何对10亿数据去重?
      • 1g内存对10亿数据去重?
        • 布隆过滤器
        • 哈希表+外部存储
        • 外部排序
  • JavaSE
  • 场景题
Nreal
2024-04-08
目录

1g内存如何对10亿数据去重?

# 1g内存对10亿数据去重?

# 布隆过滤器

使用布隆过滤器过滤掉已经出现过的元素;

# 哈希表+外部存储

哈希表存储已经出现过的元素,将哈希表保存到磁盘上,当检查新元素是否存在,只需要查找哈希表即可;

# 外部排序

将数据分成适合内存大小的块来处理,然后在磁盘上执行排序和合并操作;

  1. 将大型数据集分成多个小块,每个块大小适合内存限制(1GB);
  2. 对每个小块内的数据进行排序,以便重复项相邻;
  3. 一次加载一个块到内存中,并与前一个块进行比较,识别和消除重复项;
  4. 将处理过的数据写入新文件或输出流;
  5. 重复步骤3和4,直到所有块都被处理,得到一个去重后的数据集;
API

← API

Theme by Vdoing | Copyright © 2021-2024
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式