刷到多条微博时,是怎么实现让自己点赞过的微博被标记出来的?

2022-07-23 13:56:59 +08:00
 shenhualv7
困惑这种问题很久了,应该不是让每条微博都去自己的点赞列表里遍历吧,这样点赞记录过多的时候是不是太卡了。
还有同样的像刷到网易云一个歌单时,是怎么快速显示出歌单里有哪条是之前就被自己点过红心的。
1173 次点击
所在节点    问与答
7 条回复
learningman
2022-07-23 14:04:41 +08:00
很明显 b 站的程序员就不知道怎么搞,所以 b 站的点赞只会显示最近的 1000 个,你给一条评论点个赞,去别的地方点 1000 个赞回来,还能再点一个
starrys
2022-07-23 14:22:52 +08:00
先查询用户自己点过赞的全部微博,然后显示微博的时候,看看微博 ID 在不在先前查询的列表中。
这。。。这。。。很难吗?
Building
2022-07-23 14:29:17 +08:00
这个在 query data results process 时候就处理好了啊,数据模型有 isFavorite 的 Bool 值,肯定不是滚到的时候才查询
Jooooooooo
2022-07-23 14:32:13 +08:00
点赞应该有上限的, 比如油管的好像是 5000.
snw
2022-07-23 14:53:40 +08:00
我的想法是,用户的点赞列表中,把时间较近的(比如一个月,或者上千条)缓存起来,这样对于近期的微博,只需要从缓存中查一个小表就行了。如果旧微博 id 不在缓存范围里,那么再从用户点赞列表里读取一段进缓存。
微博的好处是明显按时间有冷热,所以容易缓存。B 站那种要难一些,冷热并不一定按时间。

另外,一般查表的时间复杂度是 O(1)啊,为什么需要遍历?
fetich
2022-07-23 20:32:29 +08:00
@learningman 哈哈哈,b 站程序员可能基于某个原因做了取舍。毕竟如果要用一个帐号对一个稿件多次点赞,多点一次就要点赞其余 1k 稿件。又因为「对所有稿件都点一次赞,就等于没有点赞」,从而阻止了刷赞的可能。这是胡编「没有发钱」理论的伟大实践和胜利!
learningman
2022-07-23 20:59:30 +08:00
@fetich 我知道你想表达什么,但是你糟糕的表达能力,让你显得很尴尬

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/868188

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX