zoukankan      html  css  js  c++  java
  • 游戏排行榜系统设计 -- 有感

    需求:
    1、玩家在点击穿/脱装备需要重新计算战斗力
    2、玩家可以查看自己的战斗力及排名
    3、战斗力前100名的玩家名称以及战斗力大小随时可以查询,且准确性100%
    4、为了准确性,任意两个玩家同时查看自己的战斗力时,战斗力高的玩家排名必须高
    5、玩家数量庞大,可能达到百万级别

    需求解析:
    1、战斗力就是个优先级
    2、优先级经常会变化
    3、每个玩家的排名都要可查
    4、前100名的查询频率很高
    5、排名不能太离谱,会很容易穿帮
    6、数据量较大

    一个节点的信息应该至少包含:
    1、玩家名称
    2、玩家ID(唯一)
    2、战斗力

    数据结构初选:
    1、平衡二叉树
    2、跳跃表
    3、红黑树

    对于数据结构的选型,都是为了维护节点有序的,这样可以轻易计算出排名,也要能保证插/删节点的效率。

    如果再增加一点难度,总玩家数量达到百亿级别,其中的在线用户是百万级别。这时就需要区分冷热数据了,对于那些离线的玩家,是没有查询需求的,除了前100名。

    这样的话,前100名的玩家数据要放在内存中,在线玩家的数据也要放在内存中,离线玩家的数据要存盘。待我再好好思考思考。

  • 相关阅读:
    文件查找和比较命令 来自: http://man.linuxde.net/find
    Docker学习计划
    Mybatis各种模糊查询
    linux下vi命令大全
    mac下的环境变量
    slf4j输出变量
    使用lombok中的log
    idea中的java web项目(添加jar包介绍)和java maven web项目目录结构
    slf4j+logback&logback.xml
    日志框架
  • 原文地址:https://www.cnblogs.com/xcw0754/p/12343694.html
Copyright © 2011-2022 走看看