困惑这种问题很久了,应该不是让每条微博都去自己的点赞列表里遍历吧,这样点赞记录过多的时候是不是太卡了。
还有同样的像刷到网易云一个歌单时,是怎么快速显示出歌单里有哪条是之前就被自己点过红心的。
还有同样的像刷到网易云一个歌单时,是怎么快速显示出歌单里有哪条是之前就被自己点过红心的。
1
learningman Jul 23, 2022 via Android 很明显 b 站的程序员就不知道怎么搞,所以 b 站的点赞只会显示最近的 1000 个,你给一条评论点个赞,去别的地方点 1000 个赞回来,还能再点一个
|
2
starrys Jul 23, 2022
先查询用户自己点过赞的全部微博,然后显示微博的时候,看看微博 ID 在不在先前查询的列表中。
这。。。这。。。很难吗? |
3
Building Jul 23, 2022
这个在 query data results process 时候就处理好了啊,数据模型有 isFavorite 的 Bool 值,肯定不是滚到的时候才查询
|
4
Jooooooooo Jul 23, 2022 点赞应该有上限的, 比如油管的好像是 5000.
|
5
snw Jul 23, 2022 via Android 我的想法是,用户的点赞列表中,把时间较近的(比如一个月,或者上千条)缓存起来,这样对于近期的微博,只需要从缓存中查一个小表就行了。如果旧微博 id 不在缓存范围里,那么再从用户点赞列表里读取一段进缓存。
微博的好处是明显按时间有冷热,所以容易缓存。B 站那种要难一些,冷热并不一定按时间。 另外,一般查表的时间复杂度是 O(1)啊,为什么需要遍历? |
6
fetich Jul 23, 2022 @learningman 哈哈哈,b 站程序员可能基于某个原因做了取舍。毕竟如果要用一个帐号对一个稿件多次点赞,多点一次就要点赞其余 1k 稿件。又因为「对所有稿件都点一次赞,就等于没有点赞」,从而阻止了刷赞的可能。这是胡编「没有发钱」理论的伟大实践和胜利!
|
7
learningman Jul 23, 2022 via Android
@fetich 我知道你想表达什么,但是你糟糕的表达能力,让你显得很尴尬
|