`
南京老油条
  • 浏览: 55680 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

一个时间换空间的例子

阅读更多

有这样一个应用:

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

 

设计一(很粗糙的实现)

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

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

 

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

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

 

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

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

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

 

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

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

 

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

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

 

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

1
1
分享到:
评论
2 楼 南京老油条 2015-08-30  
@
bassda 写道
我想不明白你是怎么省空间的
假设一天总共发500贴,我不可能全都看一遍,看个十几二十贴很正常吧,为什么你要去记录400多没看过的而不去记录那看过的几十贴?


这个看情况定,这个是针对阅读覆盖率高的设计的,即登录后80%以上的帖子会被浏览。
东西是死的,人是活的。
1 楼 bassda 2015-08-29  
我想不明白你是怎么省空间的
假设一天总共发500贴,我不可能全都看一遍,看个十几二十贴很正常吧,为什么你要去记录400多没看过的而不去记录那看过的几十贴?

相关推荐

    从A空间直接下载文件到B空间—RGD 1.5

     RGD 可以下载别的网站提供的东西直接到你的空间中,不用下载到本地然后再上传到自己的空间中,也就是是从A空间到B空间(可以是不同服务器上的,也可以使同一台服务器上的), 举个例子: shou.com提供下载一个软件 ...

    FusionCharts例子大全

    FusionCharts是一个能帮你创建其引人注目的动态图像效果的Macromedia Flash控件。充分利用Macromedia Flash所具有的流畅功能来创建简洁的、交互式的和引人注目的动态图像。 技术细节 设想所有的图形组成不需要任何...

    世界线的非可交换空间

    作为一个杰出的例子,明确构造了来自κ-庞加莱变形的世界线的泊松齐次空间,并显示出在世界线空间上定义了辛结构。 因此,κ-庞加莱世界线的量子空间只是三个海森堡-魏尔代数的直接积,其中参数κ-1与量子力学中的...

    ajax小例子-源码

    利用控件来时间动态刷新,控件调用ajax的函数。再将空间放到任何页面就可以时间动态刷新了,很方便。注意一点的是,要在页面的onload中增加调用控件中的javascript函数的内容,具体的看代码就知道了。

    【清晰带标签】非线性时间序列_范剑青_中文.pdf

    此外,书中还包含了一个对线性ARMA模型的简洁介绍,为了说明如何运用非参数技术来揭示高维数据的局部结构,《非线性时间序列》借助了很多源于实际问题的具体数据,并注重在这些例子的分析中体现部分的分析技巧和工具...

    论文研究 - 连续时间马尔可夫决策过程的方差优化

    本文考虑了连续时间马尔可夫决策过程中平均报酬的方差优化问题。 假设状态空间是可计数的,而动作空间是Borel可测量的空间。 本文的主要目的是在确定性平稳策略空间中找到... 最后,我们用一个例子来说明本文的结论。

    GPT-4陪你聊未来学校倡导一切学习场所都会成为成长空间

    未来学校认为,学习应该是一个终身学习的过程,人们可以在任何时间和任何地方学习。 学习应该是有意义的: 未来学校认为,学习应该是有意义的,与现实生活有关。学生应该能够将他们学到的知识和技能应用于实际生活中...

    10个C#经典算法与数据结构例子

    不同的数据结构适用于不同类型的问题和应用场景,一个合适的数据结构能够减少资源的消耗,提升系统的性能。同样,算法的设计和优化也对程序的功能性和性能起着关键作用,优秀的算法可以在更短的时间内解决问题,提高...

    在状态条上VC动态显示时间

    最简单的在状态条上VC动态显示时间例子 <br>

    金融时间序列分析(中文第3版)Ruey S. Tray 清晰带书签

    115 3.5.2 预测的评估 120 3.5.3 两步估计方法 121 3.6 求和GARCH模型 121 3.7 GARCH-M模型 122 3.8 指数GARCH模型 123 3.8.1 模型的另一种形式 125 3.8.2 实例说明 125 3.8.3 另一个例子 126 3.8.4 用EGARCH模型...

    操作系统课程设计生产者和消费者问题源代码

    ②从上边的测试数据文件例子可以看出,某一生产者生产一个产品后,可能不止一个消费者,或者一个消费者多次地请求消费该产品。此时,只有当所有的消费需求都被满足以后,该产品所在的共享缓冲区才可以被释放,并...

    10个C#常用的算法与数据结构例子

    选择合适的数据结构对于算法的性能至关重要,因为不同的数据结构提供了不同的操作时间和空间复杂度。 以下是一些C#中常用的算法和数据结构的示例: 排序算法:用于对数据进行排序的算法,如冒泡排序、选择排序、...

    操作系统答案2.doc

    答:当一个内核线程的页面发生错误时,另外的内核线程会用一种有效的方法被转换 成使用交错时间。另一方面,当页面发生错误时,一个单一线程进程将不能够发挥 有效性能。因此,在一个程序可能有频繁的页面错误或...

    10年经验总结四大编程技巧(C语言)

    在需要频繁更改一个字符串内容的时候,A具有更好的灵活性;如果采用方法B,则需要预存许多字符串,虽然占用了大量的内存,但是获得了程序执行的高效率。 如果系统的实时性要求很高,内存还有一些,那我推荐你使用该...

    JAVA 3D开发工具包(3个版本安装包 + 一个用例)

    //变形组结点指定一个单一的空间变形,通过一个Transform3D对象, //能对它的子结点定位,定向,定尺寸 TransformGroup objTrans = new TransformGroup(); //指定结点可以写入它的对象的变形信息。这样我们的...

    c语言高效编程,编写高效简洁的C 语言代码,

    编写高效简洁的C 语言代码,是许多软件工程师追求的目标。本文就工 作中的一些体会和经验做相关的阐述,不对的地方请各位指教。 第一招:以空间换时间 计算机程序中最大的矛盾是空间和时间的...在需要频繁更改一个字符

    断裂空间亚同构的有效场论

    在线性摄动水平上,该理论的可观测特征由五个参数表征,包括常用的宇宙学参数和一个用于破坏对称标量的附加耦合常数。 在de Sitter和Minkowski极限中,三个Goldstone玻色子具有超大质量,可以积分,剩下两个庞大的...

    零度对称子空间中均值场加扩展的T = 1核对哈密顿量的精确解

    提出了一个扩展对哈密顿量的描述,该对描述了同位旋T = 1和角动量J = 0之间的... 作为应用的一个例子,在本模型中估计了可以适当描述在f5pg9壳中的偶数偶数N〜Z核中的平均中子-质子相互作用,重点是np配对关系的作用。

    JavaScript王者归来part.1 总数2

     11.3.2.1 模拟对话框--创建一个窗口对话框及一个对话框阻塞进行的例子   11.3.2.2 showModalDialog和showModelessDialog--非W3C或ECMAScrip标准   11.3.3 状态栏   11.4 框架--上层的Window对象   11.4.1 ...

    修正高斯-邦尼引力的相空间

    我们考虑几个例子,讨论这些理论中从减速到加速的过渡。 我们还从动力学方程式上得出了作用形式的一些一般条件,这些条件保证了特定行为的存在,例如加速膨胀的出现。 正如在f(R)引力中一样,我们的分析表明,...

Global site tag (gtag.js) - Google Analytics