一道面试题 宠物根据技能得分 实时宠物排行榜 设计

本文介绍了一种基于技能分数的宠物排名系统设计方案。该方案利用HASH表进行快速查找,并通过分块管理和多级映射实现高效的排名更新和检索,确保了在大规模数据下系统的稳定性和性能。

****本人能力有限,  大家有什么好的想法,及建议 麻烦告诉我一声; 实现代码 有机会 粘上;

1> 一个人物可以带N 宠物

2>技能得分计算 int   FUN(level,skill,....),需要考虑 不同技能 但同分;

3> 最基本的功能 <1>查看某宠物实时排名 <2>查看宠物实时排行榜;

基本服务器结构   场景服务器(N) <----------------> 控制中心(1)

以下 只代表个人: 不会在这上面画图,所以只能文字表达;

 那么 宠物的排行应该在 控制中心;

1    查找宠物基本信息   最好的当然是HASH  ,根据PET ID 做hash; 记为 HASH_INFO_LIST;

2   先分块  根据技能分数 范围 分块

以1快分8个 2块为,2块分64  个 3块  ( 根据实际情况 分块)
1级块    |N0                                                               |.......  .................... |Nk                 |....................     ****块深 与块 数量 可能需要 根据不同的 量 去测试 再确定;
2级块    |n0                                 n1    n2       ..... n7|.......  ...................  |n8k....n8k+7|....................
3级块    |e0,e1,e2,e3,e4...e63|.........................................................................

块内使用map (自己实现个类式multimap ), hash 

     排行用 mymultimap<分数,petid ,greater<分数>>    这样 得到排行榜 ,增加,删除 都很方便 ;

  问题出来了,给你petid 怎么得到这个 petid 排名呢 ?

    这里再根据 petid 做个hash,记录块内排名 ; 

查找 petid总 排名  = 块排名+块内排名  

删除,增加,更新 操作,   mymultimap 重新调整时,同时更新  hash 的pet排名值;

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值