只有10M内存,但是有10000000个人准备签到,id是1-10000000,给出解决方案
解决方案 »
- foreach当中判断变量是否为4的倍数的问题
- mysql急问题处理...大家请帮忙
- 给图片指定背景颜色的函数是哪个,突然忘了...
- 如何在html文件中调用php文件中的变量
- 请教一个utf-8页面的问题:在utf-8页面中使用header函数报错。请教。。
- 请帮忙看看这个由阿信的xtree改成的PHP+MYSQL的甚么地方出错了
- Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in D:\Program Files\Apache Group\Apache2\ht
- 有关PHP的邮件发送问题
- 请教PHP.INI配置里的SESSION!
- php程序员找工作时做过哪些奇葩的笔试题
- php telnet 问题,很慢才能取得返回值。
- php两个二维数组,两个数组中的某一个键的值相同,去掉相同的,将剩下的,拼接为新的二维数组
人数 = 10 000 000
一个字节要记录 一个 8位十进制的id,和一个bool值 不够ba
人数 = 10 000 000
一个字节要记录 一个 8位十进制的id,和一个bool值 不够ba你都没搜索一下bitmap算法就回答吗?
简单说,bitmap就是把每个bit作为一个人的标识,一个字节有8个bit,可以记录8个人的bool状态。
1千万个人只需要1.2M不到的内存就可以标识。如果你的1千万个人的id是顺序无断开的,那么都不需要保存映射关系,
直接序号存取就好了。如果1千万个人的id是不连续的,那么你要用一个算法来保证每个人的id落到唯一的固定bit上
内存是 10M ≈ 10000000 字节强
合每个 id 一个字节,按下标访问就可以了
10M 可以按位保存 80000000 个 id 信息,没有难度但楼主的设想并无实用价值,因为 http 是无状态的,php程序间并不能共享这 10M 内存