Buffer Pool 、40亿QQ号、整数拆分

43 阅读1分钟

普通索引和唯一索引如何选择?

涉及到Buffer pool的利用,buffer pool 的好处是减少随机读的IO次数。没有 buffer pool 时,读请求每次都会去读磁盘,而存在 buffer pool ,对于同一页的读请求,只有第一次需要读磁盘,然后会缓存起来,后续只需要读 buffer pool。 但是对于唯一索引,因为每次都需要验证数据的唯一性,所以每次都需要读磁盘,那么 buffer pool 就会失效。结论就是,对于写多读少的前提下,我们尽量在业务层面保证数据的唯一,然后数据库层面选择普通索引,从而提高对 buffer pool 的利用率。

40亿QQ号,使用1G内存,如何进行去重?

考虑到QQ号在某种程度上来说是有序的,可以使用位图进行存储,一位代表一串QQ号,40亿位也就是大概500MB。如果超过40亿的话,考虑使用分治法,也就是多个位图桶,进行分片存储。使用位图的缺点是无法直接获取去重后的QQ号。但是在代码层面可以进行简洁获取,例如,进行手动记载,添加QQ号时,如果发现重复,则记录下来重复的QQ号到数据库中。

整数拆分

写了好几次的题目,隔了很久再写,只隐约记得一些思路,但是写不出来代码。思路是:dp[i] 的含义是整数为i时的最大乘积,dp[i] = max(dp[i],max(dp[i-j]*j,(i-j)*j))。现阶段对于我来说,难就难在这里,无法一眼看出递推公式。