`
gqf2008
  • 浏览: 77557 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

【探讨】给你1G内存,如何从3000万个手机号码中检索出你要的号码,要求每秒检索>1000次

    博客分类:
  • java
阅读更多
给你1G内存,如何从3000万个手机号码中检索出你要的号码,要求每秒检索>1000次

大家来探讨,发表您的意见!
分享到:
评论
25 楼 fly_hyp 2008-06-03  
终极解决方案:
将手机号用整数表示,一个手机号占4byte内存
将所有手机号排序放入3000万的整数数组中。
4 * 3000 * 10000 需要 120M内存

查询时使用二分法,足够满足你的速度要求
24 楼 gqf2008 2007-11-26  
3000个10000长度的数组就可以了
23 楼 Eastsun 2007-11-25  
唔,那怎么用一个10000长度的数组保存3000万个信息呢?
蛮神奇的.
22 楼 gqf2008 2007-11-25  
不用,主要是通过数组下标来定位,关键的问题是要把数组长度尽量缩小
21 楼 Eastsun 2007-11-23  
还是要进行二次检索,三次检索?
20 楼 Eastsun 2007-11-23  
抛出异常的爱 写道
13是表示手机
下几位是表示运营公司
再下几位是表示发行区域
最后几位才是人
所以只有最后几位是有必要放进数组中的
其它的可以压缩。。。。到4位以内


4位,也就是少于10^4 =10000= 1万个手机号码.

gqf2008 写道
给你1G内存,如何从3000万个手机号码中检索出你要的号码,要求每秒检索>1000次

大家来探讨,发表您的意见!


3000万 = 3*10^7

难道说这3000万手机号码里面有重复的?
19 楼 gqf2008 2007-11-23  
=================结贴=================
18 楼 gqf2008 2007-11-23  
抛出异常的爱 写道
13是表示手机
下几位是表示运营公司
再下几位是表示发行区域
最后几位才是人
所以只有最后几位是有必要放进数组中的
其它的可以压缩。。。。到4位以内
正解,怎么解决我想大家都明白了
17 楼 抛出异常的爱 2007-11-23  
13是表示手机
下几位是表示运营公司
再下几位是表示发行区域
最后几位才是人
所以只有最后几位是有必要放进数组中的
其它的可以压缩。。。。到4位以内
16 楼 gqf2008 2007-11-23  
抛出异常的爱 写道
gqf2008 写道
抛出异常的爱 写道
试试这个:
static long a = new long[20000000000]

插入: a[tel]=1;
删除: a[tel]=0;
查寻: if(a[tel]==0){return 不存在}
改:  查寻+删除+插入

每个手机号放入对应的位置


用数组下标作为手机号码想法不错,不过你的实现会把内存撑爆,不信你试试看!提示:手机号码是11位的,将来可能12位


10的11次方。。。。。。13XXXXX的13可以去掉了。
呵呵 15号段早就出来了,以后可能还有好多号段出来,不过你的想法已经离成功不远了,我想应该可以把号码按号段分开来实现比较合理,例如可以把前面7位和后面4为分开出来,这样应该就可以实现了
15 楼 抛出异常的爱 2007-11-23  
gqf2008 写道
抛出异常的爱 写道
试试这个:
static long a = new long[20000000000]

插入: a[tel]=1;
删除: a[tel]=0;
查寻: if(a[tel]==0){return 不存在}
改:  查寻+删除+插入

每个手机号放入对应的位置


用数组下标作为手机号码想法不错,不过你的实现会把内存撑爆,不信你试试看!提示:手机号码是11位的,将来可能12位


10的11次方。。。。。。13XXXXX的13可以去掉了。
14 楼 gqf2008 2007-11-22  
ddandyy 写道
不说了  删除
做人要厚道
13 楼 ddandyy 2007-11-22  
不说了  删除
12 楼 gqf2008 2007-11-22  
ddandyy 写道
不知道LZ在想的是什么

不过肯定没有你想的那么复杂

要求每秒1000次?  那肯定是并发了.....

既然是并发  那么单次的时间有多少又有什么关系呢  肯定会在1秒以内出来


过滤手机号码是一个很正常的事情,每秒1000次是最底要求,如果你知道了这个算法就不复杂了,可惜你我就是不知道,所以让大伙出出方案撒!
11 楼 gqf2008 2007-11-22  
抛出异常的爱 写道
试试这个:
static long a = new long[20000000000]

插入: a[tel]=1;
删除: a[tel]=0;
查寻: if(a[tel]==0){return 不存在}
改:  查寻+删除+插入

每个手机号放入对应的位置


用数组下标作为手机号码想法不错,不过你的实现会把内存撑爆,不信你试试看!提示:手机号码是11位的,将来可能12位
10 楼 Eastsun 2007-11-22  
二分法,时间复杂度 log N
9 楼 liangguanhui 2007-11-22  
是否可以做缓存?然后排序查找
8 楼 抛出异常的爱 2007-11-22  
ddandyy 写道
........
应该是手机号绑定其他的信息吧......

如果光是手机号 也不用检索什么的了......
我只是从需求的角度说的。。。。其它的不理
(要求的是速度,那只能这么作了)

多的信息,只能用分冶法了。
7 楼 ddandyy 2007-11-22  
........
应该是手机号绑定其他的信息吧......

如果光是手机号 也不用检索什么的了......
6 楼 抛出异常的爱 2007-11-22  
试试这个:
static long a = new long[20000000000]

插入: a[tel]=1;
删除: a[tel]=0;
查寻: if(a[tel]==0){return 不存在}
改:  查寻+删除+插入

每个手机号放入对应的位置

相关推荐

    《信息检索导论》课后习题答案1

    在本题中,我们探讨的是基于布尔检索的基本概念,包括词项-文档矩阵(Term-Document Matrix)和倒排索引(Inverted Index),以及如何执行布尔运算(AND和OR)来过滤和合并文档。 首先,词项-文档矩阵展示了文档中...

    检索 COM 类工厂中 CLSID 为 {96749377-3391-11D2-9EE3-00C04F797396} 的组件失败,没有注册类问题分析和解决办法

    标题中的“检索 COM 类工厂中 CLSID 为 {96749377-3391-11D2-9EE3-00C04F797396} 的组件失败,没有注册类问题分析和解决办法”是一个常见的错误提示,通常在尝试使用COM组件(Component Object Model)时遇到。这个...

    嵌入式Linux内存与性能详解

    嵌入式Linux系统在各种设备和应用中广泛使用,其内存管理和性能优化是开发者面临的重要问题。本资源《嵌入式Linux内存与性能详解》详细阐述了这些关键领域,为理解嵌入式系统的内在机制提供了深入见解。 1. **...

    基于哈希的图像检索(LSH,ITQ)matlab代码

    在图像检索领域,哈希技术是一种高效且广泛使用的解决方案,尤其在大数据量的场景下。本文将详细解析基于哈希的图像检索技术,主要聚焦于两种算法:Locality Sensitive Hashing (LSH) 和 Iterative Quantization ...

    RTX 共享内存示例源代码

    1. **定义共享内存**:在C代码中,我们可以定义一个全局变量,这个变量将作为共享内存区域。例如,可以定义一个结构体,其中包含需要交换的数据。 ```c typedef struct { int data; char message[50]; } Shared...

    KMeans+BOF实现图像检索(Matlab)

    在图像检索中,KMeans常用于对图像特征进行量化,将高维特征空间分割成若干个簇,每个簇的中心代表一个“视觉词”。 步骤如下: 1. 初始化:随机选取K个数据点作为初始质心。 2. 聚类:计算所有数据点到这K个质心的...

    c#获取系统和指定进程的CPU和内存占用率

    在C#编程中,了解如何获取系统和特定进程的CPU及内存占用率是十分重要的,尤其是在进行性能监控或资源管理的场景下。本篇将详细解释如何实现这一功能,并提供相应的代码示例。 首先,我们要关注的是操作系统级别的...

    内存卡低级格式化工具

    5. **安全弹出**:格式化完成后,正确地从设备中安全弹出内存卡,再插入到其他设备中检查是否恢复正常。 内存卡低级格式化虽然能够解决一些严重问题,但也有其风险,例如可能导致内存卡的使用寿命缩短。因此,平时...

    vs2010内存泄露检查工具

    在开发C++应用程序时,内存管理是至关重要的一个环节,因为不当的内存操作可能导致内存泄漏,这会消耗系统资源并最终导致程序崩溃或性能下降。Visual Studio 2010(VS2010)提供了一款强大的内存泄漏检查工具,帮助...

    内存稳定性测试工具

    可靠的内存检测工具,通过对您的电脑进行储存与读取操作来...它不但可以彻底的检测出内存的稳定度,还可同时测试记忆的储存<br>与检索资料的能力,让你可以确实掌控到目前你机器上正在使用的内存到底<br>可不可信赖.

    浏览器内存监测工具(Drip,sIEve,JSLeaksDetector)

    1. **内存快照**:在特定时间点捕获浏览器的内存状态,记录当前在内存中的对象。 2. **操作与比较**:执行特定操作(如页面导航、用户交互或API调用),然后再次获取内存快照。 3. **差异分析**:对比前后两次快照,...

    从2014 到2016,大规模内存数据库演进之路

    例如,某集群在双11当日的峰值TPS(每秒事务数)超过200万,且99%的延迟低于2毫秒。 8. 监控体系与数据安全 为了确保数据库的稳定运行,京东建立了完善的监控体系,涵盖数据管道、报警网关、接口切换等方面。同时...

    仿360手机助手秒装和智能安装功能源码

    【标题】"仿360手机助手秒装和智能安装功能源码"涉及的主要知识点是Android系统的静默安装(Silent Installation)以及智能安装技术。360手机助手是一款流行的安卓应用管理工具,其秒装和智能安装特性使得用户能够...

    c# 对sqlite基本操作,带批量插入(百万级秒插)

    在本文中,我们将深入探讨如何使用C#进行SQLite的基本操作,特别是关注批量插入功能,这在处理大量数据时尤其有用,如标题所述,可以实现百万级数据的秒级插入。SQLite是一个轻量级的数据库引擎,它允许在无需服务器...

    实时录音与播放的内存实现 Qt代码

    在Qt框架下实现实时录音与播放的内存实现是一项常见的任务,尤其对于开发多媒体应用或通讯软件的工程师来说。Qt提供了一套丰富的库,使得音频处理变得相对简单。本篇文章将详细探讨如何使用Qt来实现这一功能,以及...

    最好用的 win7系统32位内存扩展补丁

    这个补丁我用了好久,可以支持到128G。挺不的错 win7下32位6G 内存正常使用。 这个是32位系统使用的,64位本身支持大内存 win7sp1 32bit 正常使用 ~~~~~内有使用说明~~~~~~

    使用android手机陀螺仪传感器获得手机自身旋转的角度

    每个轴的角速度数据以弧度每秒(rad/s)为单位输出,表示设备在这条轴上每秒旋转的角度。通过连续监测这些值,我们可以计算出设备相对于某一参考点的累积旋转角度。 在Android中,要访问陀螺仪传感器,我们需要使用...

    三星手机IMEI修改器

    在本文中,我们将深入探讨三星手机IMEI修改的相关知识,包括IMEI的含义、作用,以及如何使用IMEI修改器进行更改。 IMEI是由15位数字组成的序列号,其主要功能包括: 1. 设备识别:IMEI让网络运营商能够识别并跟踪...

Global site tag (gtag.js) - Google Analytics