V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
shenhualv7
V2EX  ›  问与答

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

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

    另外,一般查表的时间复杂度是 O(1)啊,为什么需要遍历?
    fetich
        6
    fetich  
       2022-07-23 20:32:29 +08:00   ❤️ 1
    @learningman 哈哈哈,b 站程序员可能基于某个原因做了取舍。毕竟如果要用一个帐号对一个稿件多次点赞,多点一次就要点赞其余 1k 稿件。又因为「对所有稿件都点一次赞,就等于没有点赞」,从而阻止了刷赞的可能。这是胡编「没有发钱」理论的伟大实践和胜利!
    learningman
        7
    learningman  
       2022-07-23 20:59:30 +08:00 via Android
    @fetich 我知道你想表达什么,但是你糟糕的表达能力,让你显得很尴尬
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1130 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:47 · PVG 02:47 · LAX 11:47 · JFK 14:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.