海量数据的处理
一般来说都是针对数据量特别大,内存有限制的。
第一类:topk问题
比如,在海量数据中找前50大的数据怎么办?
方法一:使用小顶堆,用小顶堆维护这50个元素,当有新元素到来时,直接与堆顶进行比较(小顶堆堆顶最小),如果比堆顶大,替换堆顶,调整堆结构。
堆中含k个元素,堆内部调整时间复杂度logk,一共n个数据,每来一个都要进行一次堆调整,总的时间复杂度O(nlogk),总的空间复杂度O(k)。
方法二:使用快排,快排的思想是找标准值,标准值左边都是比它小的,右边都是比它大的,返回中间标准值的位置,找前k大的,就在标准值的右边进行查找,步骤一样(先确定标准值,将小于标准值的放入左侧,大于标准值放入右侧)
开始数据量为n,进行一次二分数据量变为n/2,后续只需要在这n/2中进行查找,进行两次变为n/4以此类推...最终时间复杂度n+n/2+n/4+...+1=2n-1,总的时间复杂度O(n)。
方法二同样适用无序元素中找第k大的数,时间复杂度要求O(n)
第二类:海量数据的两个文件找相同
比如,两个文件中存放1000万电话号码,找这两个文件中相同的电话号码?
位图法,对于电话号一共11位,从10000000000~19999999999,大约10G空间,采用位图法该电话号存在对应为1,不存在对应0,将存储空间压缩到10G/8=1.25G。
第三类:海量数据排序
比如有10GB的订单数据。希望按照订单的金额(金额是整数)进行排序,但是内存只有几百MB,无法一次性加载到内存。
方法一:采用分桶排序。加入金额是0-10万,分成100个桶,每个桶的范围是1千。比如桶0是从0~1000,桶1是从1001~2000...数据按照区域进行划分。存在100个文件中,文件内部进行排序,可以使用快排,依次从桶0、桶1...中取元素,得到的就是有序的10GB数据。时间复杂度O(nlogn/100),计算方法为:100个文件,每个文件进行快排,每个文件数据n/100,100*(NlogN),其中N为n/100,最终结果为O(nlogn/100)。
存在的问题是如果数据在某个范围特别多,比如某个桶有1GB的数据,这种情况怎么办?
对这个桶中元素再进行分桶,各桶有序再合并。
方法二:将数据等分到100个文件中,每个文件相当于100MB的数据,每个文件内部快排。同时维护一个小顶堆。每次取堆顶,可以先放入缓存,最后放入文件中。

方法三:文件之间两两合并,相当于合并有序列表。

既然找10亿元素中的中位数,就是找第5亿个、第5亿+1个,每个桶有相应的存储元素个数,大致确定5亿、5亿+1元素具体位于哪个桶,再对该桶进行分桶,桶的间距为1,再进行查找即可。
相关文章:
海量数据的处理
一般来说都是针对数据量特别大,内存有限制的。 第一类:topk问题 比如,在海量数据中找前50大的数据怎么办? 方法一:使用小顶堆,用小顶堆维护这50个元素,当有新元素到来时,直接与堆…...
区块链的数学基础:核心原理与应用解析
引言 区块链技术作为分布式账本系统,成功地解决了传统中心化系统中的信任问题。其背后隐藏着复杂而精妙的数学原理,包括密码学、哈希函数、数字签名、椭圆曲线、零知识证明等。这些数学工具不仅为区块链提供了安全保障,也为智能合约和去中心…...
1.5 GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新
GPT 模型家族全解析:从 GPT-1 到 GPT-4 的演进与创新 随着人工智能技术的飞速发展,GPT(Generative Pre-trained Transformer)模型家族已经成为了现代自然语言处理(NLP)领域的标杆。从初代的 GPT-1 到最新的 GPT-4,每一代模型的发布都标志着人工智能技术的一个飞跃,并推…...
自动驾驶之DriveMM: All-in-One Large Multimodal Model for Autonomous Driving
1. 写在前面 工作之后,主要从事于偏工程比较多的内容, 很少有机会读论文了,但2025年,由于之前有些算法的背景, 后面可能会接触一些多模态大模型相关的工作,所以又调头有点往算法的方向偏移, 而算法呢,很重要的一点就是阅读论文。2025年,再拾起论文这块的工作。 今天…...
Spring Boot 配置(官网文档解读)
目录 摘要 Spring Boot 配置加载顺序 配置文件加载顺序 Spring Boot 配置加载方式 Value Value 注解简单示例 ConfigurationProperties 启动 ConfigurationProperties ConfigurationProperties 验证 ConfigurationProperties 与 Value 对比 Autowired Autowired 自…...
SparkSQL数据源与数据存储
文章目录 1. 大数据分析流程2. Spark SQL数据源2.1 SparkSQL常见数据源2.2 SparkSQL支持的文本格式2.3 加载外部数据源步骤 3. 本地文件系统加载数据3.1 本地文件系统加载JSON格式数据3.1.1 概述3.1.2 案例演示 3.2 本地文件系统加载CSV格式数据3.2.1 概述3.2.2 案例演示 3.3 本…...
【BQ3568HM开发板】开箱测试
引言 很荣幸入选了“电子发烧友”的贝启科技BQ3568HM开源鸿蒙开发板评测活动,上周在出差,今天才有机会开箱一下开发板,简单测试一下。 开机测试 插上电源开机后,系统显示的是润和的DAYU的logo,看来厂商提供的软件包…...
3D 模型格式转换之 STP 转 STL 深度解析
在 3D 模型的多元世界中,格式如同语言,不同格式适用于不同场景。STP 和 STL 是两种常见格式,本文将深入剖析 STP 转 STL 的相关内容。 一、STP 与 STL 格式基础 (一)STP 格式剖析 STP,即标准交换格式&am…...
MySQL数据库的数据文件保存在哪?MySQL数据存在哪里
在安装好MySQL数据库使用一段时间后,会产生许多的数据库和数据。那这些数据库的数据文件存放在本地文件夹的什么位置呢 一、默认位置 一般来说MySQL数据库的数据文件都是存放在data文件夹之中,但是根据使用的存储引擎不同,产生的一些文件也…...
低代码系统-UI设计器核心介绍
为什么会有UI设计器 最开始的UI设计器其实是为了满足企业门户的需求而产生的,后面因为表单设计器的功能有限,所以干脆就用了一套设计器。 UI设计器从功能使用上来说,跟表单设计器没有多大区别,只是多了组件和加强了事件和组件的能…...
ubuntu20.04有亮度调节条但是调节时亮度不变
尝试了修改grub文件,没有作用,下载了brightness-controllor,问题解决了。 sudo add-apt-repository ppa:apandada1/brightness-controller sudo apt update sudo apt install brightness-controller 之后在应用软件中找到brightness-contro…...
USART_串口通讯轮询案例(HAL库实现)
引言 前面讲述的串口通讯案例是使用寄存器方式实现的,有利于深入理解串口通讯底层原理,但其开发效率较低;对此,我们这里再讲基于HAL库实现的串口通讯轮询案例,实现高效开发。当然,本次案例需求仍然和前面寄…...
【前端】CSS学习笔记(2)
目录 CSS3新特性圆角阴影动画keyframes 创建动画animation 执行动画timing-function 时间函数direction 播放方向过渡动画(transition) 媒体查询设置meta标签媒体查询语法 雪碧图字体图标 CSS3新特性 圆角 使用CSS3border-radius属性,你可以…...
【esp32小程序】小程序篇02——连接git
一、创建仓库 进入gitee官网,登录(如果没有gitee账号的就自行注册一下)。 点击号-->新建仓库 填写好必填信息,然后点击“创建” 二、微信开发者工具配置 在微信开发者工具打开我们的项目。按下面的步骤依次点击 三、验证 点…...
echarts柱状图象形图,支持横向滑动
展示效果 代码 let xData [2020,2021,2022,2023, 2024, 2025, 2026]; let yData [267,2667,2467,2667, 3234, 4436,666]; option {grid: {left: 5%,right: 5%,top: 15%,bottom: 5%,containLabel: true},// 滚动条dataZoom: [{show: true,type: inside,zoomLock: true,throt…...
YOLO系列代码
Test-Time Augmentation TTA (Test Time Augmentation)是指在test过程中进行数据增强。其思想非常简单,就是在评测阶段,给每个输入进行多种数据增广变换,将一个输入变成多个输入,然后再merge起来一起输出,形成一种ensemble的效果,可以用来提点。参考:…...
HTML根元素<html>的语言属性lang:<html lang=“en“>
诸神缄默不语-个人CSDN博文目录 在编写HTML页面时,通常会看到<html lang"en">这行代码,特别是在网页的开头部分,就在<!DOCTYPE html>后面。许多开发者可能对这个属性的含义不太了解,它到底有什么作用&…...
opencv在图片上添加中文汉字(c++以及python)
opencv在图片上添加中文汉字(c以及python)_c opencv绘制中文 知乎-CSDN博客 环境: ubuntu18.04 desktopopencv 3.4.15 opencv是不支持中文的。 这里C代码是采用替换原图的像素点来实现的,实现之前我们先了解一下汉字点阵字库。…...
Perplexity AI 周六向 TikTok 母公司字节跳动递交了一项提案
每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…...
Java连接TDengine和MySQL双数据源
git文件地址:项目首页 - SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源 - GitCode 1、yml配置 spring:datasource:druid:mysql:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/testusername: roo…...
硬盘出售 / 淘汰必看:3 种安全擦除方法,数据彻底无法恢复
很多人处理旧硬盘时,只做简单格式化就转手,殊不知格式化仅删除文件索引,数据可轻易被恢复,极易造成隐私泄露。本文整理 3 种实用的硬盘安全擦除方案,覆盖免费工具、简易操作,帮你彻底销毁数据,杜…...
编写程序让智能文具收纳盒检测物品缺失,常用笔不在时提示“寻找放回”。
项目名称:PenPal Guardian (智能文具收纳盒)一、 实际应用场景描述场景设定为一个带有重量感应和RFID识别功能的智能文具收纳盒。在这个场景中,收纳盒被放置在办公桌的固定位置。盒子里预先放置了“必备三件套”:一支签字笔、一支铅笔、一把尺…...
FLUX.1-schnell终极指南:如何在4步内生成专业级AI图像
FLUX.1-schnell终极指南:如何在4步内生成专业级AI图像 【免费下载链接】FLUX.1-schnell 项目地址: https://ai.gitcode.com/hf_mirrors/black-forest-labs/FLUX.1-schnell 想象一下,你只需要输入简单的文字描述,就能在短短几秒钟内获…...
3分钟免费搞定专业条码!Libre Barcode字体终极指南
3分钟免费搞定专业条码!Libre Barcode字体终极指南 【免费下载链接】librebarcode Libre Barcode: barcode fonts for various barcode standards. 项目地址: https://gitcode.com/gh_mirrors/li/librebarcode 还在为复杂的条码生成工具而烦恼吗?…...
保姆级教程:在YOLOv8.yaml里手动添加P2层,让你的模型看清8x8像素的小目标
在YOLOv8中集成P2层的实战指南:从配置文件修改到性能优化 当面对监控摄像头中快速移动的蚂蚁群或是卫星图像里的小型车辆时,传统目标检测模型往往会力不从心。这些8x8像素级别的微小目标,恰恰是许多实际应用场景中的关键检测对象。本文将彻底…...
告别枯燥界面!GEMMA-3: PIXEL STATION像素风AI工作站,让图像分析像玩游戏
告别枯燥界面!GEMMA-3: PIXEL STATION像素风AI工作站,让图像分析像玩游戏 1. 引言:当AI遇上复古游戏美学 在传统AI工具普遍采用单调技术界面的今天,GEMMA-3: PIXEL STATION带来了一场视觉革命。这款创新工作站将Google最先进的多…...
百川2-13B中文优势:OpenClaw在古籍数字化中的实践案例
百川2-13B中文优势:OpenClaw在古籍数字化中的实践案例 1. 项目背景与需求 去年参与一个民间古籍保护项目时,遇到了一个棘手问题:团队收集了大量民国时期的线装书扫描件,但数字化过程异常艰难。这些古籍多为繁体竖排、无标点断句…...
流程图:符号背后的逻辑与高效设计技巧
1. 流程图符号的底层逻辑解析 第一次接触流程图时,很多人会被那些看似简单的图形符号搞得晕头转向。我刚开始画流程图时,经常把菱形和矩形搞混,结果画出来的流程图逻辑完全错乱。直到后来系统学习了符号背后的设计哲学,才发现每个…...
WechatBakTool聊天记录管理工具全攻略
WechatBakTool聊天记录管理工具全攻略 【免费下载链接】WechatBakTool 基于C#的微信PC版聊天记录备份工具,提供图形界面,解密微信数据库并导出聊天记录。 项目地址: https://gitcode.com/gh_mirrors/we/WechatBakTool 一、问题诊断:聊…...
解锁知识自由:kill-doc工具让30+平台文档获取效率提升300%
解锁知识自由:kill-doc工具让30平台文档获取效率提升300% 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为…...
