1.本技术涉及数据更新技术领域,具体涉及一种排行榜的数据更新方法、装置、电子设备和计算机可读存储介质。
背景技术:
2.在互联网的浪潮下,
游戏在人们的生活中越来越常见,游戏通常是以
赛季的形式来使
玩家参与,并且在游戏赛季中一般会通过排行榜来记录玩家在游戏中的战力、排名等信息。而有时为了提高玩家的参与,一般可基于玩家在至少两个游戏赛季中的表现,来给予玩家奖励。
3.现有技术中,一般在进行赛季结算时需对赛季对应的排行榜中所有数据进行复制,从而基于复制后的数据来给予玩家奖励,待数据复制结束之后才能切换至下一游戏赛季,但是由于排行榜数据很大,而导致在赛季结算时拷贝排行榜数据需花费大量时间,从而导致游戏赛季切换时的实时性较差。
技术实现要素:
4.本技术实施例提供一种排行榜的数据更新方法、装置、电子设备和计算机可读存储介质,可以提高游戏赛季切换时的实时性。
5.第一方面,本技术实施例提供一种排行榜的数据更新方法,上述方法包括:
6.获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家
节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;
7.若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;
8.将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点。
9.第二方面,本技术实施例还提供一种排行榜的数据更新装置,上述装置包括:
10.结构获取模块,用于获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;
11.节点确定模块,用于若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述
当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;
12.节点添加模块,用于将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点。
13.第三方面,本技术实施例还提供一种电子设备,包括存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行本技术实施例所提供的任一种排行榜的数据更新方法中的步骤。
14.第四方面,本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本技术实施例所提供的任一种排行榜的数据更新方法中的步骤。
15.本技术实施例中,通过获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;若当前游戏赛季中出现游戏分数发生变化的目标玩家,说明当前需进行排行榜数据的更新,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;并将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点,从而通过在赛季过程中实时对游戏分数发送变化的目标玩家进行更新,并且每次更新仅需涉及部分数据的更改,而无需修改赛季对应的排行榜中所有数据,从而随着赛季的进行,排行榜树结构中的数据也随之更新变化,实现了游戏赛季之间的无缝切换,从而提高了游戏赛季切换时的实时性。
附图说明
16.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1是本技术实施例提供的排行榜的数据更新系统示意图;
18.图2是本技术实施例提供的排行榜的数据更新方法的一种实施例流程示意图;
19.图3a是本技术实施例中提供的排行榜树结构的一种结构示意图;
20.图3b是本技术实施例中提供的目标游戏分数为50时的第二树结构示意图;
21.图3c是本技术实施例中提供的删除节点的第一种第二树结构示意图;
22.图4a是本技术实施例中提供的排行榜树结构的另一种结构示意图;
23.图4b是本技术实施例中提供的目标游戏分数为50时的第二树结构示意图;
24.图4c是本技术实施例中提供的目标游戏分数为23时的第二树结构示意图;
25.图4d是本技术实施例中提供的目标游戏分数为30、9时的第二树结构示意图;
assistant,pda)等终端设备,终端还可以包括客户端,该客户端可以是游戏应用客户端、携带有游戏程序的浏览器客户端或即时通信客户端等。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、cdn、以及大数据和人工智能平台等基础云计算服务的云服务器。
51.例如,如图1所示,该电子设备以终端为例进行说明,该终端可以获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点。
52.基于上述问题,本技术实施例提供一种排行榜的数据更新方法、装置、电子设备和计算机可读存储介质,可以提高赛季切换时的实时性。
53.以下结合附图分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于附图所示的顺序执行所示出或描述的步骤。
54.在本实施例中,以终端为例进行说明,本实施例提供了一种排行榜的数据更新方法,如图2所示,该排行榜的数据更新方法的具体流程可以如下:
55.201、获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低。
56.其中,上述目标游戏为可以进行赛季累积的游戏,即该游戏可以基于玩家在至少两个游戏赛季中的表现,来给予玩家奖励,而玩家在游戏赛季中的表现可以通过玩家在游戏赛季中的游戏分数来体现。
57.其中,排行榜树结构用于存储在目标游戏的至少一个游戏赛季中各玩家的游戏信息,即图3a中的key值,该游戏信息包括但不限于是玩家的身份信息、玩家的游戏分数等,例如,key=(s,x),在图3a中s代表玩家的身份信息,x代表玩家的玩家分数,图3a中显示了玩家a、b、c、d、e、f、g、h、i的玩家节点。
58.其中,一个树结构由多个节点组成,每一节点对应一个玩家,将该节点命名为玩家的玩家节点,上述玩家的游戏信息存储于玩家的玩家节点中。该玩家节点还包括左右子节点,该左右子节点也分别为一玩家的玩家节点,若某一玩家节点的子节点没有玩家节点,则该玩家的子节点为空,例如,图3a中的key=(2,
‘
d’)、key=(8,
‘
c’)和key=(66,
‘
g’)的玩家节点的左、右子节点均为空。
59.可以理解的是,一游戏赛季对应的树结构,存在多条节点路径,每一节点路径上存
在至少一个玩家节点,通过树结构特有的结构特点,在进行玩家节点的新增、修改或删除操作时,无需复制排行榜的所有数据,仅需将树结构中存在数据结构变更的节点路径上的玩家节点进行复制、修改或删除操作。由于,更新排行榜树结构时仅涉及到一条节点路径上的玩家节点的修改,所修改的数量级为o(logn)。从而由于不需要复制排行榜所有数据,以渐进式的方式进行排行榜数据的更新,极大地减少了赛季结算时拷贝排行榜数据所花费的时间。
60.可以理解的是,上述历史游戏赛季为当前游戏赛季之前的游戏赛季,上述历史排行榜树结构即为当前游戏赛季之前的各游戏赛季分别对应的树结构,为了对当前游戏赛季的玩家分数进行更新,需基于上一游戏赛季的树结构来确定当前需更新的玩家节点所影响的节点路径,所以上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,以便于基于上一游戏赛季对应的第一树结构,来实现对当前游戏赛季的玩家分数的更新。
61.可选地,上述排行榜树结构可以以排行榜快照的形式呈现,由于排行榜上可能存在大量的玩家,考虑到数据库的承载能力,同一时刻并不能实现向所有玩家同时发送奖励,所以在进行赛季结算时为了给玩家发放奖励,需有一个能够反映赛季结束时刻的排行榜快照,以便于基于该排行榜快照为玩家发放奖励,而以上述排行榜树结构形成的排行榜快照,可以渐进式的方式将排行榜进行更新,从而促使生成排行榜快照时无需停顿。
62.在一些实施例中,上述树结构可以是一种可持久化数据结构,即一种可以查询历史版本的数据结构,例如拉链树zip tree的数据结构,该树结构的本质是一个树堆,例如,终端可以以平衡二叉树对应的约束条件来生成对应的树结构,该生成的树结构为一个二叉搜索树,根据该约束条件可以设置出树结构中各个玩家节点所处的位置。此外,其它能够支持二分搜索的数据结构,并且在修改时也只涉及到部分玩家节点的调整,同样适用于本方案。
63.具体地,终端可以为每个玩家节点赋予随机数rank值,如图3a所示,该随机数可以通过随机树来生成。然后,根据各个玩家节点的随机数和分数确定各个玩家节点在树结构中的位置,即根据树结构的约束条件,对各个玩家节点的随机数和分数进行计算,从而确定树结构中各玩家节点所处的层级位置,其中,上述树结构的约束条件可以设置为玩家节点与玩家节点的左右子节点之间的约束条件。
64.其中,上述约束条件一可依据二叉搜索树的特点进行设置,即上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低,且左子节点对应的游戏分数比玩家节点的游戏分数高,右子节点对应的游戏分数比玩家节点的游戏分数低。
65.其中,上述约束条件二可依据堆的特点进行设置,即上述玩家节点的左、右子节点对应的随机数,要比玩家节点的随机数低。
66.202、若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点。
67.其中,上述游戏分数发生变化的目标玩家,可以是第一次出现在目标游戏中的新增玩家,该目标玩家对应的分数为新增分数;也可以是相对上一游戏赛季的目标玩家的玩
家分数来说,在当前游戏赛季中玩家分数再次发生变化的玩家;还可以是相对当前游戏赛季的目标玩家的分数来说,在当前游戏赛季中玩家分数再次发生变化的玩家;还可以是游戏账户出现预设问题时需删除游戏分数的玩家。
68.其中,上述目标游戏分数为目标玩家在当前游戏赛季中变化后的游戏分数。
69.在本实施例中,当目标玩家的分数发生变化时,如果第二树结构中存在该目标玩家对应的玩家节点,由于该玩家节点中的分数已发生变更,则需删除该玩家节点,并针对目标玩家的目标游戏分数,重新生成一个目标玩家对应的玩家节点,再基于树结构对应的约束条件,确定将上述目标玩家对应的玩家节点添加至第二树结构时所影响的各个玩家节点。
70.可以理解的是,由于在本实施例中排行榜数据是以一种渐进式的方式进行更新,所以在将目标玩家的玩家节点添加至第二树结构中时,需基于树结构的约束条件,对目标玩家的玩家节点的分数、上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数进行计算,确定出受到影响的节点,即将会影响排行榜中某些玩家的位置的节点,该受到影响的节点包括第一树结构中的待新增节点,还包括将第一树结构中的待新增节点或目标玩家的玩家节点添加至第二树结构时被影响的第二树结构中已经存在的节点。
71.可以理解的是,在确定出待新增节点时,即可确定出该待新增节点的节点设置方式,即该待新增节点新增于第二树结构中的层级位置、该待新增节点的节点信息的修改方式,以及将待新增节点和目标玩家的玩家节点添加至第二树结构中时,待新增节点或第二树结构中已经存在的节点的修改方式。在一些实施例中,若当前游戏赛季中出现游戏分数发生变化的目标玩家,且当前游戏赛季为初始游戏赛季,即当前游戏赛季之前并未存在其他游戏赛季,则基于上述目标玩家变化后的目标游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,确定第二树结构中的待修改节点,以及上述待修改节点的修改方式,并将上述目标玩家对应的玩家节点添加至上述第二树结构,同时根据该修改方式在上述第二树结构中修改上述待修改节点。
72.示例性地,设定上述图3a为当前游戏赛季对应地第二树结构,且并没有历史游戏赛季,并进一步设定目标玩家j为第一次出现在目标游戏中的新增玩家,该目标玩家对应的分数为50分,则需根据约束条件,对上述目标玩家变化后的目标游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数进行计算,确定目标玩家j所处的层级位置,以及第二树结构中需修改的待修改节点,即图3b中的key=(13,
‘
f’)、key=(23,
‘
h’)、key=(66,
‘
g’)和key=(30,
‘
i’)的玩家节点,在将目标玩家j的玩家节点添加至第二树结构的同时,对key=(13,
‘
f’)、key=(23,
‘
h’)、key=(66,
‘
g’)和key=(30,
‘
i’)的玩家节点进行修改。
73.示例性地,设定上述图3b为当前游戏赛季对应地第二树结构,且并没有历史游戏赛季,并进一步设定目标玩家c的分数发生变化或目标玩家c的游戏账户出现预设问题,需删除目标玩家c,则需根据约束条件,对上述目标玩家变化后的目标游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数进行计算,确定第二树结构中需修改的待修改节点,即图3c中的key=(13,
‘
f’)、key=(6,
‘
e’)和key=(7,
‘
b’)的玩家节点,在将目标玩家c的玩家节点在第二树结构中删除的同时,对key=(13,
‘
f’)、key=(6,
‘
e’)和key
=(7,
‘
b’)的玩家节点进行修改。
74.在一些实施例中,为了在进行排行榜数据更新时准确区分当前需要修改的玩家节点是否需进行新增操作,可进一步对每一玩家节点赋予排行榜版本参数,即上述玩家节点中还包括排行榜版本参数,可记为create_version,上述排行榜版本参数用于指示玩家节点所属游戏赛季,即该玩家节点被创建时所处的游戏赛季。
75.可以理解的是,上述排行榜版本参数根据游戏赛季的不同,而不同,例如游戏赛季1对应的排行榜版本参数为版本1,游戏赛季2对应的排行榜版本参数为版本2。
76.具体地,上述基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,包括:基于上述目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述第二树结构中各玩家节点的游戏分数,确定出将上述目标玩家的玩家节点添加至第二树结构时存在数据结构变更的待更新节点,并确定出该待更新节点中的排行榜版本参数;其中,该待更新节点即为上述受到影响的节点,包括第一树结构中的待新增节点,还包括将第一树结构中的待新增节点或目标玩家的玩家节点添加至第二树结构时被影响的第二树结构中已经存在的节点。
77.终端可通过待更新节点中的排行榜版本参数,来确定待更新节点是否为第一树结构中的待新增节点,即若上述待更新节点中的排行榜版本参数为上一游戏赛季对应的版本,则确定上述待更新节点为待新增节点。
78.具体地,终端可确定设定最新版本号,即该最新版本号为会随着时间变化的版本号,可记为latest_version,例如,当前游戏赛季为最新赛季,则该最新版本号为当前游戏赛季对应的版本号,即若待更新节点中的一节点的排行榜版本参数小于上述最新版本号,说明该节点的排行榜版本参数为上一游戏赛季对应的版本,该节点是一个历史版本的节点,即该节点位于第一树结构中,为避免破坏历史数据,不能直接修改,需新增至第二树结构中再修改,则确定该节点为待新增节点。若待更新节点中的一节点的排行榜版本参数等于上述最新版本号,则说明该节点的排行榜版本参数为当前游戏赛季对应的版本,该节点位于最新版本的树结构中,即第二树结构,直接对该节点进行修改即可,所以确定该节点为待修改节点。
79.203、将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点。
80.在本实施例中,终端根据目标玩家对应的玩家节点的层级位置将目标玩家对应的玩家节点添加至第二树结构,并同时根据待新增节点的节点设置方式在上述第二树结构中添加上述待新增节点对应的玩家节点。此外,终端还可根据待新增节点的节点信息的修改方式对添加到第二树结构中的待新增节点对应的玩家节点进行修改。终端还可根据第二树结构中已经存在的节点的修改方式对第二树结构中已经存在的节点进行修改。
81.在一些实施例中,在上述第二树结构中添加上述待新增节点对应的玩家节点之后,还包括:若上述待新增节点在第一树结构中存在子节点,且上述待新增节点的子节点不存在数据结构变更,则将上述第二树结构中的上述待新增节点对应的玩家节点,与上述第一树结构中上述待新增节点的子节点连接,例如,可以通过箭头指向的方式实现连接,以使上述待新增节点的子节点,作为上述第二树结构中的上述待新增节点对应的玩家节点的子
节点。
82.在一些实施例中,在上述第二树结构中添加上述待新增节点对应的玩家节点之后,还包括:将上述第二树结构中上述待新增节点对应的玩家节点中的排行榜版本参数修改为当前游戏赛季对应的版本。
83.在一些实施例中,由于历史版本的数据并不会永远保存,为避免数据过多,而导致空间不足,终端可为玩家节点赋予访问版本参数,可记为access_version,该访问版本参数用于指示玩家节点被作为待新增节点的游戏赛季,即玩家节点被某一版本的游戏赛季访问,并由该版本的游戏赛季将该玩家节点设置为待新增节点时,该游戏赛季对应的版本为上述访问版本参数,从而通过对比访问版本参数,来实现对访问版本参数符合条件的玩家节点进行删除。
84.具体地,上述玩家节点中还包括访问版本参数,上述访问版本参数用于指示玩家节点被作为待新增节点的游戏赛季,还包括:在上述第二树结构中添加上述待新增节点对应的玩家节点的同时,将上述第一树结构中的待新增节点的访问版本参数修改为当前游戏赛季对应的版本,以及将上述第二树结构中新添加的玩家节点的访问版本参数设置为当前游戏赛季对应的版本。
85.示例性地,设置游戏赛季1对应地版本1的树结构中存在玩家分数分别为1,2,6,7,8,13地玩家节点,如图4a所示,其中,为便于解释说明,在图4a中,key值仅显示玩家对应地分数,将节点中的create_version缩写为cv,将节点中的access_version缩写为av,用left和right标记玩家节点的左右子节点。
86.基于图4a,设定当前游戏赛季由游戏赛季1变更为游戏赛季2,若游戏赛季2中出现新增的目标玩家1,该目标玩家1对应的分数为66分,则需根据约束条件,对上述目标玩家1的目标游戏分数66和上述游戏赛季1对应的树结构中各玩家节点的游戏分数进行计算,确定目标玩家1所处的层级位置,即位于key=13的玩家节点的右子节点位置处,以及确定游戏赛季1对应的树结构中需新增的待新增节点,即key=13的玩家节点,所以在游戏赛季2中添加该待新增节点key=13对应的玩家节点,以及将目标玩家1对应的玩家节点添加至该待新增节点key=13对应的玩家节点的右子节点位置处,并将游戏赛季2对应的树结构中的各个玩家节点的cv和av均修改为2,将游戏赛季1对应的树结构中的被设定为待新增节点的av修改为2,如图4b所示。
87.基于图4b,若游戏赛季2中继续出现新增的目标玩家2,该目标玩家2对应的分数为23分,则需根据约束条件,对上述目标玩家2的目标游戏分数23和上述游戏赛季1对应的树结构中各玩家节点的游戏分数进行计算,确定目标玩家2所处的层级位置,即位于游戏赛季2对应的树结构中key=13的玩家节点的右子节点位置处,以及确定出将key=66的玩家节点设置为key=23的玩家节点的右子节点位置处,并确定出游戏赛季1对应的树结构中需新增的待新增节点为空,所以在游戏赛季2对应的树结构中将目标玩家2对应的玩家节点添加至该待新增节点key=13对应的玩家节点的右子节点位置处,并将key=66的玩家节点设置为key=23的玩家节点的右子节点位置处,最后将游戏赛季2对应的树结构中的各个玩家节点的cv和av均修改为2,如图4c所示。
88.基于图4c,若游戏赛季2中继续出现新增的目标玩家3、4,该目标玩家3、4对应的分数分别为30分、9分,则需根据约束条件,对上述目标玩家3、4的目标游戏分数30分、9分和上
述游戏赛季1对应的树结构中各玩家节点的游戏分数进行计算,确定目标玩家3、4所处的层级位置,以及确定游戏赛季1对应的树结构中需新增的待新增节点,所以在游戏赛季2中添加该待新增节点,以及将目标玩家3、4对应的玩家节点添加至游戏赛季2对应的树结构中,并将游戏赛季2对应的树结构中的各个玩家节点的cv和av均修改为2,将游戏赛季1对应的树结构中的被设定为待新增节点的av修改为2,如图4d所示。
89.基于图4d,若设定游戏赛季2中分数为7的目标玩家5的分数发生变化或目标玩家5的游戏账户出现预设问题,需删除目标玩家5,则根据cv值确定该目标玩家5的玩家节点为当前游戏赛季2对应的树结构中的节点,则直接在当前游戏赛季2对应的树结构中删除该目标玩家5对应的玩家节点,如图4e所示,图4e中左上角的节点为删除的节点。
90.基于图4e,设定当前游戏赛季由游戏赛季2变更为游戏赛季3,若设定游戏赛季3中分数为13的目标玩家6的分数发生变化或目标玩家6的游戏账户出现预设问题,需删除目标玩家6,则根据cv值确定该目标玩家6的玩家节点为游戏赛季2对应的树结构中的节点,则需根据约束条件,确定删除目标玩家6之后,游戏赛季2对应的树结构中需新增的待新增节点,所以在游戏赛季3中添加该待新增节点对应的玩家节点,并将游戏赛季3对应的树结构中的各个玩家节点的cv和av均修改为3,将游戏赛季2对应的树结构中的被设定为待新增节点的av修改为3,如图4f所示。
91.基于图4f,设定当前游戏赛季由游戏赛季3变更为游戏赛季4,若设定游戏赛季4中继续出现新增的目标玩家7,该目标玩家7对应的分数为0分,则需根据约束条件,对上述目标玩家7的目标游戏分数0分和上述游戏赛季3对应的树结构中各玩家节点的游戏分数进行计算,确定目标玩家7所处的层级位置,以及确定游戏赛季3对应的树结构中需新增的待新增节点,所以在游戏赛季4中添加该待新增节点,以及将目标玩家7对应的玩家节点添加至游戏赛季4对应的树结构中,并将游戏赛季4对应的树结构中的各个玩家节点的cv和av均修改为4,将游戏赛季3对应的树结构中的被设定为待新增节点的av修改为4,如图4g所示。
92.基于图4g,若设定游戏赛季4中分数为2的目标玩家8的分数发生变化或目标玩家8的游戏账户出现预设问题,需删除目标玩家8,但由于分数为2的目标玩家8的cv和av均为1,则说明该玩家节点仍被其他历史版本所引用,则仅改变当前游戏赛季4对应的树结构,如图4h所示。
93.综上,可以看出每个赛季版本中,只会包含来自历史版本的玩家节点,例如图5中的版本3对应的树结构。
94.在一些实施例中,还可基于排行榜树结构,对玩家排名进行查询,上述玩家节点中还包括玩家身份信息,以及节点数量,上述节点数量用于指示玩家节点的下层玩家节点的数量,还包括:获取包含待查询玩家的身份信息和查询赛季的查询指令,响应上述查询指令,在预设的哈希表集合中,查询在上述查询赛季下上述待查询玩家的身份信息对应的玩家分数;确定出上述查询赛季对应版本的查询树结构,并根据上述查询树结构的玩家节点之间的分数排布特点,确定上述查询树结构中上述待查询玩家的玩家分数对应的查询节点路径;在上述查询节点路径上查询上述待查询玩家对应的查询玩家节点,并根据上述查询玩家节点中的节点数量和上述下层玩家节点的位置确定上述待查询玩家的排名。
95.其中,上述哈希表集合中包括至少一个哈希表,每个哈希表对应一个游戏赛季,该哈希表中包括一游戏赛季中各玩家身份信息,以及玩家身份信息对应的分数。如图6所示,
图6为图3a树结构对应的哈希表。
96.可以理解的是,由于树结构的玩家节点之间的分数排布特点为玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低,所以基于该分数排布特点,即可快速确定出玩家分数对应的查询节点路径,从而快速从该查询节点路径上查询到待查询玩家对应的查询玩家节点。所以在本实施例中,通过哈希表可以快速到玩家的分数,再基于玩家分数可以快速招待该玩家的玩家节点在树结构中的位置,以快速从树结构中确定出玩家节点,并从玩家节点中确定出节点数量。
97.可以理解的是,上述节点数量用于指示当前节点的下层节点的数量,为当前节点的下层节点的数量和1的总和,1为当前节点本身对应的数值,从而通过该节点数量、子节点的位置,即可直接得到大于或小于该玩家节点的去其他玩家节点的数量。
98.示例性地,当想要查询上述待查询玩家x的排名时,根据x从对应的哈希表中确定出待查询玩家x的玩家分数为s,再基于玩家分数s从树结构中查询大于该玩家分数s的玩家的数量,从而得到该待查询玩家x的排名。
99.例如,如图3a和图6所示,当要查询待查询玩家h的排名时,通过哈希表得到待查询玩家h的分数为23,因此,待查询玩家对应的key为(23,h),接下来将其和根节点(13,f)比较,可以看到23》13,因此,查询节点路径为根节点的右子节点所处的路径,然后就递归到右子节点h,发现这个就是要查询待查询玩家h对应的玩家节点,并且,其下层节点均处于右子节点所处路径,所以根据其节点数量,可以得到该玩家h的排名为3。
100.可以理解的是,上述排行榜快照中显示排行榜树结构的同时,还可显示哈希表集合中的各个哈希表,以便于玩家排名的查询。
101.在一些实施例中,上述哈希表集合中包括当前游戏赛季对应的哈希表,上述当前游戏赛季对应的哈希表中还包括玩家的玩家分数对应的分数版本参数,上述分数版本参数用于指示上述玩家的玩家分数所属游戏赛季,在当前游戏赛季中出现游戏分数发生变化的目标玩家时,还包括:从上述当前游戏赛季的哈希表中确定上述目标玩家的目标分数版本参数,以根据该目标分数版本参数确定哈希表中的数值修改方式;
102.若上述目标分数版本参数是当前游戏赛季对应的版本,则在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数;
103.若上述目标分数版本参数不是当前游戏赛季对应的版本,则将上述目标分数版本参数对应的玩家分数添加至上一游戏赛季对应的哈希表中,并在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数。
104.可以理解的是,在更新哈希表时仅涉及到进行版本对比,并将历史分数写入到一个历史版本的哈希表中,其哈希表更新的复杂度为o(1)。
105.具体地,上述目标分数版本参数可记为update_version,将当前游戏赛季对应的版本记为latest_version,当玩家的分数被更新时,如果update_version等于latest_version,则直接在哈希表中进行更新,否则我们需将对应的历史分数放去lastest_version-1的历史版本哈希表,即上一游戏赛季对应的哈希表中。
106.示例性地,设置游戏赛季1对应的版本1的哈希表中存在玩家a,b,c,d,e,f的分数和分数对应的目标分数版本参数,该版本1的哈希表的latest_version=1,如图7a所示,此时目标分数版本参数update_version=1。
107.基于图7a,设定当前游戏赛季由游戏赛季1变更为游戏赛季2,即排行榜由版本1切换为版本2,即latest_version=2,若设定玩家a的分数要更新为15分,发现哈希表中玩家a的update_version等于1,并不等于2,因此需要将玩家a的历史版本的分数进行保留,保留在latest_version-1的历史哈希表中,即latest_version=1的哈希表中,如图7b所示。
108.基于图7b,若设定玩家d的分数要更新为20分,发现哈希表中玩家d的update_version等于1,并不等于2,因此需要将玩家d的历史版本的分数进行保留,保留在latest_version-1的历史哈希表中,即latest_version=1的哈希表中,如图7c所示。
109.基于图7c,若设定新增加了玩家g的分数为50,由于g是新增的,因此无需保存历史版本的分数,如图7d所示。
110.基于图7d,设定当前游戏赛季由游戏赛季2变更为游戏赛季3,此时的哈希表显示方式,如图7e所示,即latest_version=3,若设定玩家c的分数要更新为80分,发现哈希表中玩家c的update_version等于1,并不等于3,因此需要将玩家c的历史版本的分数进行保留,保留在latest_version-1的历史哈希表中,即latest_version=2的哈希表中,如图7f所示。
111.基于图7f,若设定玩家a的分数要更新为150分,则需要将玩家a的历史版本的分数进行保留,保留在latest_version-1的历史哈希表中,即latest_version=2的哈希表中,如图7g所示。
112.基于图7g,若设定玩家a的分数要更新为250分,由于,此时哈希表中玩家a的update_version等于3,因此需要将玩家a的分数直接进行修改即可,如图7h所示。
113.在一些实施例中,由于上述哈希表集合中的数据存储方式,所以在基于待查询玩家的身份信息查询对应的玩家分数,需在哈希表集合中依次进行查询。
114.具体地,上述在预设的哈希表集合中,查询在上述查询赛季下上述待查询玩家的身份信息对应的玩家分数,包括:基于上述哈希表集合,从上述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询上述哈希表集合中的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
115.具体地,上述基于上述哈希表集合,从上述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询上述哈希表集合中的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数,包括:根据上述查询赛季对应版本的哈希表中各个玩家的身份信息对上述待查询玩家进行查询;若上述查询赛季对应版本的哈希表中不存在上述待查询玩家,则继续查询下一赛季对应版本的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
116.示例性地,如图8所示,当查询玩家a的不同版本的数据时,就会按照对应版本的哈希表链逐个查询,比如查询历史版本=1的数据时,就会沿着a=1=》a=150=》a=250。而有些玩家对应的版本的分数没有发生变化,比如玩家f查询历史版本的数据时就会发现对应的1、2历史版本的数据都不存在,因此会在最新的哈希表映射中查询到自己的分数为13。
117.在一些实施例中,终端在对旧版本的历史数据进行垃圾回收时,可设置淘汰版本号,以便于终端基于包含淘汰版本号的数据淘汰指令,对排行榜树结构中的玩家节点,和/或所述哈希表集合中的哈希表进行删除。其中,可设定上述淘汰版本号为min_version,删除历史数据后,保留该淘汰版本号与最新版本号latest_version之间的数据。
118.在一些实施例中,终端在对历史版本的数据进行回收时,还包括:终端接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述历史排行榜树结构中将符合第一预设淘汰条件的玩家节点删除,上述第一预设淘汰条件为上述排行榜版本参数小于上述访问版本参数,且上述访问版本参数小于或等于上述淘汰版本号。
119.其中,上述排行榜版本参数小于上述访问版本参数,表明了该节点被更高版本的节点访问过,说明该节点是可以被回收的;上述访问版本参数小于或等于上述淘汰版本号,用于保证该节点没有被淘汰版本号至最新版本号中的至少一个树结构所使用,所以可回收该节点。
120.示例性地,基于图4h,当min_version设定为2时,可以将满足上述第一预设淘汰条件的玩家节点删除,如图9a所示,其中,为便于理解,图中被删除的玩家节点用圆角虚线框进行显示,被删除的节点中的av和cv值均满足上述条件,其中(key=1,cv=1)的玩家节点和(key=2,cv=1)的玩家节点不满足上述访问版本参数小于或等于上述淘汰版本号,所以不能删除。当min_version设定为3时,可以将满足上述第一预设淘汰条件的玩家节点删除,如图9b所示。当min_version设定为4时,可以将满足上述第一预设淘汰条件的玩家节点删除,如图9c所示。
121.在一些实施例中,终端在对历史版本的数据进行回收时,还包括:接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述哈希表集合中,将游戏赛季对应的版本小于上述淘汰版本号的哈希表删除。
122.示例性地,当min_version设定为2时,可以将满足上述第二预设淘汰条件的哈希表删除,如图9d所示。
123.由以上内容可以看出,通过获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;若当前游戏赛季中出现游戏分数发生变化的目标玩家,说明当前需进行排行榜数据的更新,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;并将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点,从而通过在赛季过程中实时对游戏分数发送变化的目标玩家进行更新,并且每次更新仅需涉及部分数据的更改,而无需修改赛季对应的排行榜中所有数据,从而随着赛季的进行,排行榜树结构中的数据也随之更新变化,实现了游戏赛季之间的无缝切换,从而提高了游戏赛季切换时的实时性。
124.为了更好地实施以上方法,本技术实施例还提供一种排行榜的数据更新装置,该排行榜的数据更新装置具体可以集成在电子设备中,比如,计算机设备,该计算机设备可以为终端、服务器等设备。
125.其中,终端可以为手机、平板电脑、智能蓝牙设备、笔记本电脑、个人电脑等设备;服务器可以是单一服务器,也可以是由多个服务器组成的服务器集。
126.比如,在本实施例中,将以排行榜的数据更新装置具体集成在终端为例,对本技术
实施例的方法进行详细说明,本实施例提供了一种排行榜的数据更新装置,如图10所示,该排行榜的数据更新装置可以包括:
127.结构获取模块1001,用于获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;
128.节点确定模块1002,用于若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;
129.节点添加模块1003,用于将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点。
130.在一些实施例中,上述玩家节点中还包括排行榜版本参数,上述排行榜的数据更新装置还包括版本修改模块,上述节点确定模块1002具体用于:
131.基于上述目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述第二树结构中各玩家节点的游戏分数,确定出将上述目标玩家的玩家节点添加至第二树结构时存在数据结构变更的待更新节点;
132.若上述待更新节点中的排行榜版本参数为上一游戏赛季对应的版本,则确定上述待更新节点为待新增节点;
133.上述版本修改模块,用于将上述待新增节点中的排行榜版本参数修改为当前游戏赛季对应的版本。
134.在一些实施例中,上述玩家节点中还包括访问版本参数,上述访问版本参数用于指示玩家节点被作为待新增节点的游戏赛季,上述排行榜的数据更新装置还包括参数设置模块,上述参数设置模块具体用于:
135.在上述第二树结构中添加上述待新增节点对应的玩家节点的同时,将上述第一树结构中的待新增节点的访问版本参数修改为当前游戏赛季对应的版本,以及将上述第二树结构中新添加的玩家节点的访问版本参数设置为当前游戏赛季对应的版本。
136.在一些实施例中,上述排行榜的数据更新装置还包括节点删除模块,上述节点删除模块具体用于:
137.接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述历史排行榜树结构中将符合第一预设淘汰条件的玩家节点删除,上述第一预设淘汰条件为上述排行榜版本参数小于上述访问版本参数,且上述访问版本参数小于或等于上述淘汰版本号。
138.在一些实施例中,上述排行榜的数据更新装置还包括节点连接模块,上述节点连接模块具体用于:
139.若上述待新增节点在第一树结构中存在子节点,且上述待新增节点的子节点不存在数据结构变更,则将上述第二树结构中的上述待新增节点对应的玩家节点,与上述第一树结构中上述待新增节点的子节点连接,以使上述待新增节点的子节点,作为上述第二树结构中的上述待新增节点对应的玩家节点的子节点。
140.在一些实施例中,上述玩家节点中还包括玩家身份信息,以及节点数量,上述节点数量用于指示上述玩家节点的下层玩家节点的数量,上述排行榜的数据更新装置还包括排名查询模块,上述排名查询模块具体用于:
141.获取包含待查询玩家的身份信息和查询赛季的查询指令,响应上述查询指令,在预设的哈希表集合中,查询在上述查询赛季下上述待查询玩家的身份信息对应的玩家分数;
142.确定出上述查询赛季对应版本的查询树结构,并根据上述查询树结构的玩家节点之间的分数排布特点,确定上述查询树结构中上述待查询玩家的玩家分数对应的查询节点路径;
143.在上述查询节点路径上查询上述待查询玩家对应的查询玩家节点,并根据上述查询玩家节点中的节点数量和上述下层玩家节点的位置确定上述待查询玩家的排名。
144.在一些实施例中,上述哈希表集合中包括当前游戏赛季对应的哈希表,上述当前游戏赛季对应的哈希表中还包括玩家的玩家分数对应的分数版本参数,上述分数版本参数用于指示上述玩家的玩家分数所属游戏赛季,在当前游戏赛季中出现游戏分数发生变化的目标玩家时,上述排行榜的数据更新装置还包括分数更改模块,上述分数更改模块具体用于:
145.从上述当前游戏赛季的哈希表中确定上述目标玩家的目标分数版本参数;
146.若上述目标分数版本参数是当前游戏赛季对应的版本,则在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数;
147.若上述目标分数版本参数不是当前游戏赛季对应的版本,则将上述目标分数版本参数对应的玩家分数添加至上一游戏赛季对应的哈希表中,并在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数。
148.在一些实施例中,上述排名查询模块具体用于:
149.基于上述哈希表集合,从上述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询上述哈希表集合中的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
150.在一些实施例中,上述排名查询模块还具体用于:
151.根据上述查询赛季对应版本的哈希表中各个玩家的身份信息对上述待查询玩家进行查询;
152.若上述查询赛季对应版本的哈希表中不存在上述待查询玩家,则继续查询下一赛季对应版本的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
153.在一些实施例中,上述排行榜的数据更新装置还包括哈希表删除模块,上述哈希表删除模块具体用于:
154.接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述哈希表集合中,将游戏赛季对应的版本小于上述淘汰版本号的哈希表删除。
155.由上可知,本实施例的排行榜的数据更新装置通过结构获取模块1001,用于获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游
戏分数高和低;节点确定模块1002,用于若当前游戏赛季中出现游戏分数发生变化的目标玩家,说明当前需进行排行榜数据的更新,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;节点添加模块1003,用于将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点,从而通过在赛季过程中实时对游戏分数发送变化的目标玩家进行更新,并且每次更新仅需涉及部分数据的更改,而无需修改赛季对应的排行榜中所有数据,从而随着赛季的进行,排行榜树结构中的数据也随之更新变化,实现了游戏赛季之间的无缝切换,从而提高了游戏赛季切换时的实时性。
156.相应的,本技术实施例还提供一种电子设备,该电子设备可以为终端,该终端可以为智能手机、平板电脑、笔记本电脑、触控屏幕、游戏机、个人计算机(pc,personal computer)、个人数字助理(personal digital assistant,pda)等终端设备。如图11所示,图11为本技术实施例提供的电子设备的结构示意图。该电子设备1100包括有一个或者一个以上处理核心的处理器1101、有一个或一个以上计算机可读存储介质的存储器1102及存储在存储器1102上并可在处理器上运行的计算机程序。其中,处理器1101与存储器1102电性连接。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
157.处理器1101是电子设备1100的控制中心,利用各种接口和线路连接整个电子设备1100的各个部分,通过运行或加载存储在存储器1102内的软件程序和/或模块,以及调用存储在存储器1102内的数据,执行电子设备1100的各种功能和处理数据,从而对电子设备1100进行整体监控。
158.在本技术实施例中,电子设备1100中的处理器1101会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器1102中,并由处理器1101来运行存储在存储器1102中的应用程序,从而实现各种功能:
159.获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;
160.若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;
161.将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点。
162.在一些实施例中,上述玩家节点中还包括排行榜版本参数,上述排行榜版本参数用于指示玩家节点所属游戏赛季,上述基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点
的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,包括:
163.基于上述目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述第二树结构中各玩家节点的游戏分数,确定出将上述目标玩家的玩家节点添加至第二树结构时存在数据结构变更的待更新节点;
164.若上述待更新节点中的排行榜版本参数为上一游戏赛季对应的版本,则确定上述待更新节点为待新增节点;
165.在上述第二树结构中添加上述待新增节点对应的玩家节点之后,还包括:
166.将上述第二树结构中上述待新增节点对应的玩家节点中的排行榜版本参数修改为当前游戏赛季对应的版本。
167.在一些实施例中,上述玩家节点中还包括访问版本参数,上述访问版本参数用于指示玩家节点被作为待新增节点的游戏赛季,还包括:
168.在上述第二树结构中添加上述待新增节点对应的玩家节点的同时,将上述第一树结构中的待新增节点的访问版本参数修改为当前游戏赛季对应的版本,以及将上述第二树结构中新添加的玩家节点的访问版本参数设置为当前游戏赛季对应的版本。
169.在一些实施例中,还包括:
170.接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述历史排行榜树结构中将符合第一预设淘汰条件的玩家节点删除,上述第一预设淘汰条件为上述排行榜版本参数小于上述访问版本参数,且上述访问版本参数小于或等于上述淘汰版本号。
171.在一些实施例中,在上述第二树结构中添加上述待新增节点对应的玩家节点之后,还包括:
172.若上述待新增节点在第一树结构中存在子节点,且上述待新增节点的子节点不存在数据结构变更,则将上述第二树结构中的上述待新增节点对应的玩家节点,与上述第一树结构中上述待新增节点的子节点连接,以使上述待新增节点的子节点,作为上述第二树结构中的上述待新增节点对应的玩家节点的子节点。
173.在一些实施例中,上述玩家节点中还包括玩家身份信息,以及节点数量,上述节点数量用于指示上述玩家节点的下层玩家节点的数量,还包括:
174.获取包含待查询玩家的身份信息和查询赛季的查询指令,响应上述查询指令,在预设的哈希表集合中,查询在上述查询赛季下上述待查询玩家的身份信息对应的玩家分数;
175.确定出上述查询赛季对应版本的查询树结构,并根据上述查询树结构的玩家节点之间的分数排布特点,确定上述查询树结构中上述待查询玩家的玩家分数对应的查询节点路径;
176.在上述查询节点路径上查询上述待查询玩家对应的查询玩家节点,并根据上述查询玩家节点中的节点数量和上述下层玩家节点的位置确定上述待查询玩家的排名。
177.在一些实施例中,上述哈希表集合中包括当前游戏赛季对应的哈希表,上述当前游戏赛季对应的哈希表中还包括玩家的玩家分数对应的分数版本参数,上述分数版本参数用于指示上述玩家的玩家分数所属游戏赛季,在当前游戏赛季中出现游戏分数发生变化的目标玩家时,还包括:
178.从上述当前游戏赛季的哈希表中确定上述目标玩家的目标分数版本参数;
179.若上述目标分数版本参数是当前游戏赛季对应的版本,则在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数;
180.若上述目标分数版本参数不是当前游戏赛季对应的版本,则将上述目标分数版本参数对应的玩家分数添加至上一游戏赛季对应的哈希表中,并在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数。
181.在一些实施例中,上述在预设的哈希表集合中,查询在上述查询赛季下上述待查询玩家的身份信息对应的玩家分数,包括:
182.基于上述哈希表集合,从上述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询上述哈希表集合中的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
183.在一些实施例中,上述基于上述哈希表集合,从上述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询上述哈希表集合中的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数,包括:
184.根据上述查询赛季对应版本的哈希表中各个玩家的身份信息对上述待查询玩家进行查询;
185.若上述查询赛季对应版本的哈希表中不存在上述待查询玩家,则继续查询下一赛季对应版本的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
186.在一些实施例中,还包括:
187.接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述哈希表集合中,将游戏赛季对应的版本小于上述淘汰版本号的哈希表删除。
188.由此,本实施例提供的电子设备1100可以带来如下技术效果:提高赛季切换时的实时性。
189.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
190.可选的,如图11所示,电子设备1100还包括:触控显示屏1103、射频电路1104、音频电路1105、输入单元1106以及电源1107。其中,处理器1101分别与触控显示屏1103、射频电路1104、音频电路1105、输入单元1106以及电源1107电性连接。本领域技术人员可以理解,图11中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
191.触控显示屏1103可用于显示图形用户界面以及接收用户作用于图形用户界面产生的操作指令。触控显示屏1103可以包括显示面板和触控面板。其中,显示面板可用于显示由用户输入的信息或提供给用户的信息以及电子设备的各种图形用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。可选的,可以采用液晶显示器(lcd,liquid crystal display)、有机发光二极管(oled,organic light-emitting diode)等形式来配置显示面板。触控面板可用于收集用户在其上或附近的触摸操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板上或在触控面板附近的操作),并生成相应的操作指令,且操作指令执行对应程序。可选的,触控面板可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成触点坐标,再送给处理器1101,并能接收处理器1101发来的命令并加以执行。触控面板可覆
盖显示面板,当触控面板检测到在其上或附近的触摸操作后,传送给处理器1101以确定触摸事件的类型,随后处理器1101根据触摸事件的类型在显示面板上提供相应的视觉输出。在本技术实施例中,可以将触控面板与显示面板集成到触控显示屏1103而实现输入和输出功能。但是在某些实施例中,触控面板与触控面板可以作为两个独立的部件来实现输入和输出功能。即触控显示屏1103也可以作为输入单元1106的一部分实现输入功能。
192.射频电路1104可用于收发射频信号,以通过无线通信与网络设备或其他电子设备建立无线通讯,与网络设备或其他电子设备之间收发信号。
193.音频电路1105可以用于通过扬声器、传声器提供用户与电子设备之间的音频接口。音频电路1105可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,传声器将收集的声音信号转换为电信号,由音频电路1105接收后转换为音频数据,再将音频数据输出处理器1101处理后,经射频电路1104以发送给比如另一电子设备,或者将音频数据输出至存储器1102以便进一步处理。音频电路1105还可能包括耳塞插孔,以提供外设耳机与电子设备的通信。
194.输入单元1106可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
195.电源1107用于给电子设备1100的各个部件供电。可选的,电源1107可以通过电源管理系统与处理器1101逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源1107还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
196.尽管图11中未示出,电子设备1100还可以包括摄像头、传感器、无线保真模块、蓝牙模块等,在此不再赘述。
197.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
198.本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
199.为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种排行榜的数据更新方法中的步骤。例如,该计算机程序可以执行如下步骤:
200.获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,上述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,上述玩家节点中包括玩家的游戏分数,上述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;
201.若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,上述待新增节点为将上述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;
202.将上述目标玩家对应的玩家节点添加至上述第二树结构,同时在上述第二树结构中添加上述待新增节点对应的玩家节点。
203.在一些实施例中,上述玩家节点中还包括排行榜版本参数,上述排行榜版本参数用于指示玩家节点所属游戏赛季,上述基于上述目标玩家变化后的目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至上述第二树结构的待新增节点,包括:
204.基于上述目标游戏分数、上述第一树结构中各玩家节点的游戏分数和上述第二树结构中各玩家节点的游戏分数,确定出将上述目标玩家的玩家节点添加至第二树结构时存在数据结构变更的待更新节点;
205.若上述待更新节点中的排行榜版本参数为上一游戏赛季对应的版本,则确定上述待更新节点为待新增节点;
206.在上述第二树结构中添加上述待新增节点对应的玩家节点之后,还包括:
207.将上述第二树结构中上述待新增节点对应的玩家节点中的排行榜版本参数修改为当前游戏赛季对应的版本。
208.在一些实施例中,上述玩家节点中还包括访问版本参数,上述访问版本参数用于指示玩家节点被作为待新增节点的游戏赛季,还包括:
209.在上述第二树结构中添加上述待新增节点对应的玩家节点的同时,将上述第一树结构中的待新增节点的访问版本参数修改为当前游戏赛季对应的版本,以及将上述第二树结构中新添加的玩家节点的访问版本参数设置为当前游戏赛季对应的版本。
210.在一些实施例中,还包括:
211.接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述历史排行榜树结构中将符合第一预设淘汰条件的玩家节点删除,上述第一预设淘汰条件为上述排行榜版本参数小于上述访问版本参数,且上述访问版本参数小于或等于上述淘汰版本号。
212.在一些实施例中,在上述第二树结构中添加上述待新增节点对应的玩家节点之后,还包括:
213.若上述待新增节点在第一树结构中存在子节点,且上述待新增节点的子节点不存在数据结构变更,则将上述第二树结构中的上述待新增节点对应的玩家节点,与上述第一树结构中上述待新增节点的子节点连接,以使上述待新增节点的子节点,作为上述第二树结构中的上述待新增节点对应的玩家节点的子节点。
214.在一些实施例中,上述玩家节点中还包括玩家身份信息,以及节点数量,上述节点数量用于指示上述玩家节点的下层玩家节点的数量,还包括:
215.获取包含待查询玩家的身份信息和查询赛季的查询指令,响应上述查询指令,在预设的哈希表集合中,查询在上述查询赛季下上述待查询玩家的身份信息对应的玩家分数;
216.确定出上述查询赛季对应版本的查询树结构,并根据上述查询树结构的玩家节点之间的分数排布特点,确定上述查询树结构中上述待查询玩家的玩家分数对应的查询节点路径;
217.在上述查询节点路径上查询上述待查询玩家对应的查询玩家节点,并根据上述查询玩家节点中的节点数量和上述下层玩家节点的位置确定上述待查询玩家的排名。
218.在一些实施例中,上述哈希表集合中包括当前游戏赛季对应的哈希表,上述当前游戏赛季对应的哈希表中还包括玩家的玩家分数对应的分数版本参数,上述分数版本参数用于指示上述玩家的玩家分数所属游戏赛季,在当前游戏赛季中出现游戏分数发生变化的目标玩家时,还包括:
219.从上述当前游戏赛季的哈希表中确定上述目标玩家的目标分数版本参数;
220.若上述目标分数版本参数是当前游戏赛季对应的版本,则在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数;
221.若上述目标分数版本参数不是当前游戏赛季对应的版本,则将上述目标分数版本参数对应的玩家分数添加至上一游戏赛季对应的哈希表中,并在上述当前游戏赛季的哈希表中将上述目标玩家的分数更改为上述目标游戏分数。
222.在一些实施例中,上述在预设的哈希表集合中,查询在上述查询赛季下上述待查询玩家的身份信息对应的玩家分数,包括:
223.基于上述哈希表集合,从上述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询上述哈希表集合中的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
224.在一些实施例中,上述基于上述哈希表集合,从上述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询上述哈希表集合中的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数,包括:
225.根据上述查询赛季对应版本的哈希表中各个玩家的身份信息对上述待查询玩家进行查询;
226.若上述查询赛季对应版本的哈希表中不存在上述待查询玩家,则继续查询下一赛季对应版本的哈希表,直至查询到上述待查询玩家的身份信息对应的玩家分数。
227.在一些实施例中,还包括:
228.接收到包含淘汰版本号的数据淘汰指令,响应上述数据淘汰指令从上述哈希表集合中,将游戏赛季对应的版本小于上述淘汰版本号的哈希表删除。
229.可见,计算机程序能够被处理器进行加载,以执行本技术实施例所提供的任一种排行榜的数据更新方法中的步骤,从而带来如下技术效果:提高赛季切换时的实时性。
230.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
231.其中,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
232.由于该计算机可读存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种排行榜的数据更新方法中的步骤,因此,可以实现本技术实施例所提供的任一种排行榜的数据更新方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
233.以上对本技术实施例所提供的一种排行榜的数据更新方法、装置、电子设备和计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
技术特征:
1.一种排行榜的数据更新方法,其特征在于,所述方法包括:获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,所述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,所述玩家节点中包括玩家的游戏分数,所述玩家节点的左、右子节点对应的游戏分数,分别比玩家节点的游戏分数高和低;若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于所述目标玩家变化后的目标游戏分数、所述第一树结构中各玩家节点的游戏分数和所述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至所述第二树结构的待新增节点,所述待新增节点为将所述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;将所述目标玩家对应的玩家节点添加至所述第二树结构,同时在所述第二树结构中添加所述待新增节点对应的玩家节点。2.如权利要求1所述的排行榜的数据更新方法,其特征在于,所述玩家节点中还包括排行榜版本参数,所述排行榜版本参数用于指示玩家节点所属游戏赛季,所述基于所述目标玩家变化后的目标游戏分数、所述第一树结构中各玩家节点的游戏分数和所述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至所述第二树结构的待新增节点,包括:基于所述目标游戏分数、所述第一树结构中各玩家节点的游戏分数和所述第二树结构中各玩家节点的游戏分数,确定出将所述目标玩家的玩家节点添加至第二树结构时存在数据结构变更的待更新节点;若所述待更新节点中的排行榜版本参数为上一游戏赛季对应的版本,则确定所述待更新节点为待新增节点;在所述第二树结构中添加所述待新增节点对应的玩家节点之后,还包括:将所述第二树结构中所述待新增节点对应的玩家节点中的排行榜版本参数修改为当前游戏赛季对应的版本。3.如权利要求2所述的排行榜的数据更新方法,其特征在于,所述玩家节点中还包括访问版本参数,所述访问版本参数用于指示玩家节点被作为待新增节点的游戏赛季,还包括:在所述第二树结构中添加所述待新增节点对应的玩家节点的同时,将所述第一树结构中的待新增节点的访问版本参数修改为当前游戏赛季对应的版本,以及将所述第二树结构中新添加的玩家节点的访问版本参数设置为当前游戏赛季对应的版本。4.如权利要求3所述的排行榜的数据更新方法,其特征在于,还包括:接收到包含淘汰版本号的数据淘汰指令,响应所述数据淘汰指令从所述历史排行榜树结构中将符合第一预设淘汰条件的玩家节点删除,所述第一预设淘汰条件为所述排行榜版本参数小于所述访问版本参数,且所述访问版本参数小于或等于所述淘汰版本号。5.如权利要求1所述的排行榜的数据更新方法,其特征在于,在所述第二树结构中添加所述待新增节点对应的玩家节点之后,还包括:若所述待新增节点在第一树结构中存在子节点,且所述待新增节点的子节点不存在数据结构变更,则将所述第二树结构中的所述待新增节点对应的玩家节点,与所述第一树结构中所述待新增节点的子节点连接,以使所述待新增节点的子节点,作为所述第二树结构
中的所述待新增节点对应的玩家节点的子节点。6.如权利要求1至5任一项所述的排行榜的数据更新方法,其特征在于,所述玩家节点中还包括玩家身份信息,以及节点数量,所述节点数量用于指示所述玩家节点的下层玩家节点的数量,还包括:获取包含待查询玩家的身份信息和查询赛季的查询指令,响应所述查询指令,在预设的哈希表集合中,查询在所述查询赛季下所述待查询玩家的身份信息对应的玩家分数;确定出所述查询赛季对应版本的查询树结构,并根据所述查询树结构的玩家节点之间的分数排布特点,确定所述查询树结构中所述待查询玩家的玩家分数对应的查询节点路径;在所述查询节点路径上查询所述待查询玩家对应的查询玩家节点,并根据所述查询玩家节点中的节点数量和所述下层玩家节点的位置确定所述待查询玩家的排名。7.如权利要求6所述的排行榜的数据更新方法,其特征在于,所述哈希表集合中包括当前游戏赛季对应的哈希表,所述当前游戏赛季对应的哈希表中还包括玩家的玩家分数对应的分数版本参数,所述分数版本参数用于指示所述玩家的玩家分数所属游戏赛季,在当前游戏赛季中出现游戏分数发生变化的目标玩家时,还包括:从所述当前游戏赛季的哈希表中确定所述目标玩家的目标分数版本参数;若所述目标分数版本参数是当前游戏赛季对应的版本,则在所述当前游戏赛季的哈希表中将所述目标玩家的分数更改为所述目标游戏分数;若所述目标分数版本参数不是当前游戏赛季对应的版本,则将所述目标分数版本参数对应的玩家分数添加至上一游戏赛季对应的哈希表中,并在所述当前游戏赛季的哈希表中将所述目标玩家的分数更改为所述目标游戏分数。8.如权利要求7所述的排行榜的数据更新方法,其特征在于,所述在预设的哈希表集合中,查询在所述查询赛季下所述待查询玩家的身份信息对应的玩家分数,包括:基于所述哈希表集合,从所述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询所述哈希表集合中的哈希表,直至查询到所述待查询玩家的身份信息对应的玩家分数。9.如权利要求8所述的排行榜的数据更新方法,其特征在于,所述基于所述哈希表集合,从所述查询赛季对应版本的哈希表开始,按照赛季顺序依次查询所述哈希表集合中的哈希表,直至查询到所述待查询玩家的身份信息对应的玩家分数,包括:根据所述查询赛季对应版本的哈希表中各个玩家的身份信息对所述待查询玩家进行查询;若所述查询赛季对应版本的哈希表中不存在所述待查询玩家,则继续查询下一赛季对应版本的哈希表,直至查询到所述待查询玩家的身份信息对应的玩家分数。10.如权利要求8所述的排行榜的数据更新方法,其特征在于,还包括:接收到包含淘汰版本号的数据淘汰指令,响应所述数据淘汰指令从所述哈希表集合中,将游戏赛季对应的版本小于所述淘汰版本号的哈希表删除。11.一种排行榜的数据更新装置,其特征在于,所述装置包括:结构获取模块,用于获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,所述历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点,所述玩家节点中包括玩家的游戏分数,所述玩家节点的左、右子节点对应的游
戏分数,分别比玩家节点的游戏分数高和低;节点确定模块,用于若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于所述目标玩家变化后的目标游戏分数、所述第一树结构中各玩家节点的游戏分数和所述当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至所述第二树结构的待新增节点,所述待新增节点为将所述目标玩家对应的玩家节点添加至第二树结构时影响排行榜位置的节点;节点添加模块,用于将所述目标玩家对应的玩家节点添加至所述第二树结构,同时在所述第二树结构中添加所述待新增节点对应的玩家节点。12.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有多条指令;所述处理器从所述存储器中加载指令,以执行如权利要求1至10任一项所述的排行榜的数据更新方法中的步骤。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至10任一项所述的排行榜的数据更新方法中的步骤。
技术总结
本申请公开了一种排行榜的数据更新方法、装置、电子设备和计算机可读存储介质,本申请实施例通过获取目标游戏的玩家在历史游戏赛季的历史排行榜树结构,历史排行榜树结构至少包括上一游戏赛季对应的第一树结构,一个树结构中包括多个玩家的玩家节点;若当前游戏赛季中出现游戏分数发生变化的目标玩家,则基于目标玩家变化后的目标游戏分数、第一树结构中各玩家节点的游戏分数和当前游戏赛季对应的第二树结构中各玩家节点的游戏分数,从第一树结构中确定出需新增至第二树结构的待新增节点;将目标玩家对应的玩家节点添加至第二树结构,同时在第二树结构中添加待新增节点对应的玩家节点,从而可以提高游戏赛季切换时的实时性。性。性。
技术研发人员:
方嘉铭
受保护的技术使用者:
网易(杭州)网络有限公司
技术研发日:
2022.12.16
技术公布日:
2023/3/28