一个时间换空间的例子

本文讨论了一个在线论坛应用的设计,旨在高效记录用户对帖子的浏览情况。通过对比两种实现方法,提出了一种利用用户最后登录时间和帖子发布时间来简化存储需求的策略。这种方法不仅节省了存储空间,还通过时间换空间的方式减少了计算机运算负担。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

有这样一个应用:

一个向外推送帖子的网站,需要记录帖子都为哪些用户浏览过。怎么设计?

 

设计一(很粗糙的实现)

将帖子和用户做多对多关联,关联上了就是阅读过了。

那么问题来了,当用户数达到千万级别,帖子数达到万级,那将是很可怕的数量。

 

设计二(一位资深人士给的做法)

为每一个帖子开辟一个8M的存储空间,按照用户的id记录用户是否阅读过,以0表示false,1表示true。当然用户的id是从1开始自增长的。

 

我想说这两方法都太浪费存储资源了

关键是记录用户的最后访问时间,帖子的发布时间。

只要将用户的最后登陆时间和当前时间之间发布的帖子塞进用户的未读列表即可(可以在用户登陆的同时处理),用户每阅读一篇即可从未读列表中删除

 

如此,统计一篇帖子有哪些人未阅读过

最后登录时间早于帖子发布时间的 + 时间晚于帖子发布时间,且阅读列表中有这篇帖子的

 

统计一篇帖子有哪些人阅读过

时间晚于帖子发布时间,且阅读列表中没有这篇帖子的

 

这里的时间换空间就是消费计算机的运算时间换取存储的节约

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值