一种用户排名获得方法、装置及服务器的制造方法_4

文档序号:9750995阅读:来源:国知局
用于根据所述获得的备份数据计算出当前用户的第一积分,所述当前用户的第一积分对应有一个排名基数。
[0132]读取消息队列中的当前用户的备份数据,根据所述备份数据中备份/还原操作次数等信息计算出当前用户的第一积分。实际应用中,按照预设的积分获得原则,备份/还原操作针对的类型不同,则获得积分也不相同。
[0133]所述遍历模块602,用于遍历已建立的积分二叉树,所述积分二叉树为当前用户所在区域的积分二叉树,所述积分二叉树的每个节点中保存了一个积分区间及积分处于该积分区间内的用户个数;
[0134]其中,所述积分二叉树的根节点保存的积分区间为:当前用户所在区域中的积分中的最小值与最大值组成的积分区间;所述积分二叉树的根节点保存的积分处于该积分区间内的用户个数为当前用户所在区域中的用户的总个数;每个节点包含的积分区间的长度为积分区间中的最大值与最小值的差,且叶子节点所包含的积分区间的长度为I。
[0135]所述查找模块603,用于查找保存了所述第一积分所在积分区间的每个目标子节占.V ,
[0136]所述计算模块604,用于根据所述排名基数、每个目标子节点在积分二叉树中的位置,及每个目标子节点中保存的用户的个数,计算出当前用户在所在区域的排名。
[0137]具体的,所述计算模块604中找到保存所述第一积分所在积分区间的每个目标子节点,判断找到的每个目标子节点在积分二叉树中的位置,根据判断结果及当前用户的第一积分对应的排名基数累加找到的每个目标子节点中保存的用户的个数,计算出当前用户在所在区域的排名。
[0138]所述计算模块604,可以包括:第一确定子模块、第一判断子模块、第二确定子模块、第二判断子模块、第三确定子模块和确定子模块,
[0139]所述第一确定子模块,用于在所述积分二叉树的根节点的子节点中找到目标子节点,将找到的目标子节点确定为当前节点;
[0140]所述第一判断子模块,用于判断当前节点是否为左子节点,如果是,则触发第一排名子模块,如果否,则触发第二排名子模块,其中,每个非叶子节点有两个子节点,分别为左子节点和右子节点,所述左子节点为低分子节点,所述右子节点为高分子节点;
[0141]所述第二确定子模块,用于在当前节点的子节点中查找下一个目标子节点,将该找到的目标子节点确定为当前节点;
[0142]所述第二判断子模块,用于判断当前节点是否为左子节点,如果是,则触发第三排名子模块,如果否,则触发第四排名子模块;
[0143]所述第三确定子模块,用于在当前节点的子节点中查找再下一个目标子节点,将该找到的再下一个目标子节点确定为当前节点,触发第二判断子模块;
[0144]所述确定子模块,用于在当前节点为叶子节点时,将当前用户的排名确定为用户在所在区域的排名;
[0145]所述第一排名子模块,用于将右子节点包含的用户个数累加到所述排名基数上,将累加后得到的排名作为当前用户的排名;
[0146]所述第二排名子模块,用于将所述排名基数作为当前用户的排名;
[0147]所述第三排名子模块,用于将右子节点包含的用户个数累加到所述当前用户的排名上,将累加后得到的排名作为当前用户的排名;
[0148]所述第四排名子模块,用于当前用户的排名不变。
[0149]在本发明其他实施例中,图6所示装置还可以包括:更新模块,
[0150]所述更新模块,用于定时统计服务器所在区域内积分处于各个积分区间内的用户个数,并根据统计结果更新服务器所在区域的积分二叉树。
[0151]当用户的积分发生变化时,每次所需要更新的节点数量是用户积分变化的log(n)级别,每次查询或更新的复杂度为积分最大值的0(log(n)),也就是说如果当前用户积分一次变化在百万级,那么更新的节点的数量在二十级别,与用户数量无关,因此,在海量用户下也可以快速完成查询并计算出当前用户的排名。
[0152]在本发明其他实施例中,图6所示装置还可以包括:发送模块、接收模块、累加模块和确定模块,
[0153]所述发送模块,用于将当前用户及第一积分发送给所有区域的各个服务器;
[0154]为了获得当前用户在所有区域中的总排名,需要将当前用户及第一积分发送给除当前用户所在区域之外的所有区域的各个服务器。各个服务器可以按照图6所示的装置,根据接收到的当前用户及第一积分,遍历本区域所建立的积分二叉树,计算出接收到的当前用户在本区域的排名,并将计算出的排名发送给当前用户所在区域的服务器。当然,各个服务器也可以按照现有技术的方法根据接收到的当前用户及第一积分,获得当前用户在该区域的排名。
[0155]所述接收模块,用于接收各个服务器根据所述第一积分计算出的所述当前用户在各个区域的排名;
[0156]所述累加模块,用于将接收到的各个区域的排名累加;
[0157]所述确定模块,用于将累加后的排名减一作为当前用户在所有区域中的总排名。
[0158]本发明实施例提供的一种用户排名获得装置,获得当前用户的第一积分,所述当前用户的第一积分对应一个排名基数,遍历已建立的积分二叉树,所述积分二叉树为当前用户所在区域的积分二叉树,所述积分二叉树的每个节点中保存了一个积分区间及积分处于该积分区间内的用户个数,查找保存了所述第一积分所在积分区间的每个目标子节点,根据所述排名基数、每个目标子节点在积分二叉树中的位置,及每个目标子节点中保存的用户的个数,计算出当前用户在所在区域的排名。本发明通过遍历累加积分二叉树中每个目标子节点中保存的用户个数获得各个用户的排名,由于累加次数较少且累加次数与用户量无关,达到减少数据计算量,减少系统资源占用的目的。
[0159]相应地,如图7所述,本发明实施例还提供了一种服务器,所述服务器包括:
[0160]壳体(图中未示出)、处理器701、存储器702、电路板703和电源电路704,其中,电路板703安置在壳体围成的空间内部,处理器701和存储器702设置在电路板703上;电源电路704,用于为电子设备的各个电路或器件供电;存储器702用于存储可执行程序代码;处理器701通过读取存储器702中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行以下步骤:
[0161]获得当前用户的第一积分,所述当前用户的第一积分对应一个排名基数;
[0162]遍历已建立的积分二叉树,所述积分二叉树为当前用户所在区域的积分二叉树,所述积分二叉树的每个节点中保存了一个积分区间及积分处于该积分区间内的用户个数;
[0163]查找保存了所述第一积分所在积分区间的每个目标子节点;
[0164]根据所述排名基数、每个目标子节点在积分二叉树中的位置,及每个目标子节点中保存的用户的个数,计算出当前用户在所在区域的排名。
[0165]相应地,本申请实施例还提供了一种存储介质,其中,该存储介质用于存储应用程序,所述应用程序用于在运行时执行本申请所述的一种用户排名获得方法。其中,本申请所述的一种用户排名获得方法,应用于每个区域的服务器,该方法可以包括:
[0166]获得当前用户的第一积分,所述当前用户的第一积分对应一个排名基数;
[0167]遍历已建立的积分二叉树,所述积分二叉树为当前用户所在区域的积分二叉树,所述积分二叉树的每个节点中保存了一个积分区间及积分处于该积分区间内的用户个数;
[0168]查找保存了所述第一积分所在积分区间的每个目标子节点;
[0169]根据所述排名基数、每个目标子节点在积分二叉树中的位置,及每个目标子节点中保存的用户的个数,计算出当前用户在所在区域的排名。
[0170]相应地,本申请实施例还提供了一种应用程序,其中,该应用程序用于在运行时执行本申请所述的一种用户排名获得方法。其中,本申请所述的一种用户排名获得方法,应用于每个区域的服务器,该方法可以包括:
[0171]获得当前用户的第一积分,所述当前用户的第一积分对应一个排名基数;
[0172]遍历已建立的积分二叉树,所述积分二叉树为当前用户所在区域的积分二叉树,所述积分二叉树的每个节点中保存了一个积分区间及积分处于该积分区间内的用户个数;
[0173]查找保存了所述第一积分所在积分区间的每个目标子节点;
[0174]根据所述排名基数、每个目标子节点在积分二叉树中的
当前第4页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1