一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分数排名处理方法、装置、设备及计算机可读存储介质与流程

2022-08-02 23:39:07 来源:中国专利 TAG:


1.本技术涉及计算机技术领域,特别涉及一种分数排名处理方法、装置、设备及计算机可读存储介质。


背景技术:

2.在项目开发中,常常会遇到一些积分排行的问题,因为排行榜的实时性,所以需要在第一时间对排行进行查询并展示。
3.在排行榜中,比如在一些大型比赛的排行榜中,由于参赛人数较多,经常会出现得分相同的多个用户,然而,如何合理的对这些具有相同分数的用户进行排名是目前亟待解决的问题。


技术实现要素:

4.本技术提供了一种分数排名处理方法、装置、设备及计算机可读存储介质,能够对相同的多个用户分数进行合理排名。
5.第一方面,本技术提供了一种分数排名处理方法,包括:
6.在参与目标活动的各个用户的用户分数中,若存在至少两个用户具有相同的目标分数,则为所述至少两个用户分别生成一个时间戳分数,所述时间戳分数的大小反映了对应用户到达所述目标分数的时间;
7.按照所述至少两个用户各自的时间戳分数,对所述至少两个用户各自的目标分数进行排名。
8.可选的,为所述至少两个用户分别生成一个时间戳分数,包括:
9.对于所述至少两个用户中的每一用户,根据该用户的目标分数、该用户取得目标分数的时间信息,计算该用户的时间戳分数。
10.可选的,所述按照所述至少两个用户各自的时间戳分数,对所述至少两个用户各自的目标分数进行排名,包括:
11.按照所述至少两个用户各自的时间戳分数,确定所述至少两个用户到达所述目标分数的先后顺序;
12.根据所述先后顺序,对所述至少两个用户各自的目标分数进行排名。
13.可选的,所述方法还包括:
14.获取第一用户在所述目标活动中的当前得分;
15.若所述第一用户在分数排名列表中没有相关排名,则采用redis数据库的zadd函数,将所述第一用户的当前得分添加到分数排名列表中;
16.若所述第一用户在分数排名列表中有相关排名,则采用redis数据库的zincrby函数,更新所述第一用户在分数排名列表中的历史分数。
17.可选的,所述方法还包括:
18.若检测到针对第二用户在分数排名列表中的排名的查询请求,则采用redis数据
库的zrevrank函数,查询所述第二用户的排名。
19.可选的,所述方法还包括:
20.若检测到针对分数排名列表中的一个排名段的用户标识的查询请求,则采用redis数据库的zrevrange函数,查询该排行段内的各个用户标识。
21.第二方面,本技术提供了一种分数排名处理装置,包括:
22.时间戳生成单元,用于在参与目标活动的各个用户的用户分数中,若存在至少两个用户具有相同的目标分数,则为所述至少两个用户分别生成一个时间戳分数,所述时间戳分数的大小反映了对应用户到达所述目标分数的时间;
23.分数排名单元,用于按照所述至少两个用户各自的时间戳分数,对所述至少两个用户各自的目标分数进行排名。
24.可选的,所述时间戳生成单元在为所述至少两个用户分别生成一个时间戳分数时,具体用于:
25.对于所述至少两个用户中的每一用户,根据该用户的目标分数、该用户取得目标分数的时间信息,计算该用户的时间戳分数。
26.可选的,所述分数排名单元,具体用于:
27.按照所述至少两个用户各自的时间戳分数,确定所述至少两个用户到达所述目标分数的先后顺序;根据所述先后顺序,对所述至少两个用户各自的目标分数进行排名。
28.可选的,所述装置还包括:
29.分数获取单元,用于获取第一用户在所述目标活动中的当前得分;
30.添加排名单元,用于若所述第一用户在分数排名列表中没有相关排名,则采用redis数据库的zadd函数,将所述第一用户的当前得分添加到分数排名列表中;
31.分数更新单元,用于若所述第一用户在分数排名列表中有相关排名,则采用redis数据库的zincrby函数,更新所述第一用户在分数排名列表中的历史分数。
32.可选的,所述装置还包括:
33.第一查询单元,用于若检测到针对第二用户在分数排名列表中的排名的查询请求,则采用redis数据库的zrevrank函数,查询所述第二用户的排名。
34.可选的,所述装置还包括:
35.第二查询单元,用于若检测到针对分数排名列表中的一个排名段的用户标识的查询请求,则采用redis数据库的zrevrange函数,查询该排行段内的各个用户标识。
36.第三方面,本技术提供了一种电子设备,包括:处理器、存储器;
37.所述存储器,用于存储计算机程序;
38.所述处理器,用于通过调用所述计算机程序,执行上述分数排名处理方法。
39.第四方面,本技术提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述分数排名处理方法。
40.在以上本技术提供的技术方案中,在参与目标活动的各个用户的用户分数中,若存在至少两个用户具有相同的目标分数,则为至少两个用户分别生成一个时间戳分数,时间戳分数的大小反映了对应用户到达目标分数的时间;按照至少两个用户各自的时间戳分数,对至少两个用户各自的目标分数进行排名。可见,本技术在对具有相同目标分数的多个用户进行排名时,考虑了各个用户达到该目标分数的时间信息,通过引入时间因素生成各
个用户的时间戳分数,并基于时间戳分数的大小来对各个用户进行分数排名,可以保证分数排名的合理性。
附图说明
41.图1为本技术示出的活动场景示意图;
42.图2为本技术示出的一种分数排名处理方法的流程示意图;
43.图3为本技术示出的一种分数排名处理装置的组成示意图;
44.图4为本技术示出的一种电子设备的结构示意图。
具体实施方式
45.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
46.在本技术使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本技术。在本技术和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
47.应当理解,尽管在本技术可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本技术范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
48.在介绍本技术实施例之前,首先对本技术实施例的应用场景进行示例性介绍。参见图1所示的活动场景示意图,该活动场景可以是某个大型或小型的网络比赛场景、或者是其它需要进行分数排名的实战场景。在该活动场景中,参与该活动的用户选手可以提交某题目的答案;系统会验证是否已经针对该题目进行解答,如果未解答,则终止操作;如果已解答,则判断答案是否正确;若答案错误,则终止操作;若答案正确,则将该用户的答案进行存储;并且,系统不但可以基于该正确答案给出相关分数,从而更新分数排行榜榜单并进行榜单展示,还可以对该正确答案进行记录,以及对该活动的实时战况进行展示。
49.下面对本技术实施例提供的分数排名处理方法进行具体介绍。
50.参见图2,为本技术实施例提供的一种分数排名处理方法的流程示意图,该方法包括以下步骤s201-s202:
51.s201:在参与目标活动的各个用户的用户分数中,若存在至少两个用户具有相同的目标分数,则为该至少两个用户分别生成一个时间戳分数,其中,时间戳分数的大小反映了对应用户到达目标分数的时间。
52.需要说明的是,本技术实施例不对目标活动的活动类型进行限制,该目标活动可以是进行分数排名的任一类型的网络活动,比如,是具有一定数量的参赛人数的网络比赛。
53.关于参与目标活动的每一用户,该用户在参与目标活动的过程中会生成用户分
数,比如该用户分数是关于活动赛事的比赛得分,该用户分数在整个活动中会发生变化,即,该用户分数可能会变大、也可能会变小,系统可以记录该用户当前的最新分数、还可以记录之前的历史分数。
54.实际中,可能存在两个或两个以上用户的当前分数(即最新分数)是相同的,为便于区分,这里将该相同分数定义为目标分数,为解决这些用户之间的排名,本技术实施例引入了时间概念来辅助这些用户进行排名。例如,当多个用户的分数相同、且该相同分数是目标分数时,使先到达这个目标分数的用户排名靠前,具体实现时,可以为分数相同的每一用户各自生成一个时间戳分数,利用该时间戳分数的大小来反映对应用户到达目标分数的时间,这样,虽然这些用户具有相同的目标分数,但因其到达目标分数的时间不同,则各自具有的时间戳分数则不同。
55.在本技术实施例的一种实现方式中,s201中的“为该至少两个用户分别生成一个时间戳分数”,可以包括:对于至少两个用户中的每一用户,根据该用户的目标分数、该用户取得该目标分数的时间信息,计算该用户的时间戳分数。
56.在本实现方式中,对于具有相同的目标分数的每一用户,可以按照下述公式计算该用户的时间戳分数:
57.f=f*100000000 (99999999-(t1-t2))
58.其中,f为该用户的时间戳分数;f为目标分数;t1为该用户取得目标分数的具体时刻;t2为对分数相同的各个用户进行分数排名的开始时间。
59.例如,假设用户1和用户2的目标分数均是8分,则假设:
60.用户1取得目标分数的具体时刻为t1=10110816,其中,10110816表示10日11点08分16秒;用户2取得目标分数的时间为t1=10110830,其中,10110830表示10日11点08分30秒;对用户1和用户2进行分数排名的开始时刻t2=10120000,其中,10120000表示10日12点0分0秒。
61.将t2和用户1的t1带入上述公式,将t2和用户2的t1带入上述公式,可以计算得到用户1的时间戳分数f大于用户2的时间戳分数f,这表明用户1在先取得目标分数f、用户2在后取得目标分数f。
62.s202:按照该至少两个用户各自的时间戳分数,对该至少两个用户各自的目标分数进行排名。
63.在本技术实施例中,对于具有相同目标分数的各个用户,需要基于这些用户的时间戳分数,确定这些用户的目标分数在分数排行榜中的具体排名。可以理解的是,分数排行榜中还有其它用户的分数及其排名,其它用户按照分数大小进行排名即可。
64.在本技术实施例的一种实现方式中,s202中的“按照该至少两个用户各自的时间戳分数,对该至少两个用户各自的目标分数进行排名”,可以包括:按照该至少两个用户各自的时间戳分数,确定该至少两个用户到达目标分数的先后顺序;根据先后顺序,对该至少两个用户各自的目标分数进行排名。
65.在本实现方式中,由于到达目标分数的时间不同,该至少两个用户各自具有的时间戳分数则不同。可以使时间戳分数与时间信息成正比,即,时间戳分数越大,表明时间戳分数对应的用户先达到目标分数,因此,可以将这些用户的时间戳分数由大到小排序,排序在前的时间戳分数所对应用户的目标分数排名靠前、排序在后的时间戳分数所对应用户的
目标分数排名靠后,比如上述s201中的示例,用户1的分数排名在前、用户2的分数排名在后。反之,也可以使时间戳分数与时间信息成反比,经排序后,使在先取得目标分数的用户排名靠前、使在后取得目标分数的用户排名靠后。
66.需要说明的是,若存在时间戳分数相同的至少两个用户,则可以采用其它规则进行排序,比如,历史分数稳步升高的用户排序在前、历史分数起伏太大的用户排序在后。
67.还需要说明是,本技术可以仅基于时间戳分数,为具有相同分数的用户进行排序;也可以在生成排行榜时,为参与目标活动的所有用户分别生成时间戳分数,并按照时间戳分数的大小为所有用户的分数进行排序。
68.此外,在项目开发中,常常会遇到一些积分排行的问题,因为排行榜的实时性,所以需要在第一时间对排行进行查询并展示。在排行榜中,由于一个用户的名次上升x位,将会引起x 1位用户的名次发生变化(包括该用户),如果采用现有的传统数据库(比如mysql)来实现排行榜,当用户人数较多时,将会导致对数据库的频繁修改,从而降低数据库的性能。实际上,采用传统数据库(比如mysql)来存储榜单数据,适用于参赛人数少的小型比赛,对于大型比赛,频繁的操作数据库,会降低数据库性能,导致数据丢失、数据无法显示等问题。
69.而且,采用现有技术进行排名查询时,是将产生的用户数据存入数据库,如果需要查询当前用户排名,则需要先查询当前用户的得分,然后查询得分大于当前用户的用户数量,来计算当前用户的排名。这种查询方式导致对项目排名列表的查询速度较慢,用户体验极差,而且大型比赛会出现一个列表查询几分钟的情况。而本技术实施例通过对积分排名算法的优化,减少了数据库的压力,提高了排名计算的速度,提高了排名的展示速度。
70.具体实现时,本技术实施例可以利用redis来实现排名,redis是一个高性能的key-value数据库,以此来实现“添加排名”、“更新分数”、“查询排名”的功能,能够支撑大型赛事的数据处理,具有稳定性高、响应速度快等优点。即,减少了与数据库的交互,减少了查询次数,从而提高了查询速度,实现了快速响应;因减少了与数据库的交互,从而减少了数据库的压力,进而提高了数据库的稳定性。
71.下面对“添加排名”和“更新分数”进行介绍:
72.本技术实施例提供的方法还包括:获取第一用户在所述目标活动中的当前得分;若第一用户在分数排名列表中没有相关排名,则采用redis数据库的zadd函数,将第一用户的当前得分添加到分数排名列表中;若第一用户在分数排名列表中有相关排名,则采用redis数据库的zincrby函数,更新第一用户在分数排名列表中的历史分数。
73.具体来讲,对于参与目标活动的每一用户,这里定义该用户为第一用户。在第一用户获取得分(即当前最新分数)的时候,通过zadd函数把第一用户的得分添加到分数排名列表中,在这之前,可以采用zadd函数校验第一用户在分数排名列表中是否有相关排名,若没有相关排名,则直接将第一用户的当前得分添加到分数排名列表中,从而实现了“添加排名”的功能。
74.反之,若第一用户在分数排名列表中有相关排名,由于第一用户的分数会发生变更,会涉及到分数的加减,可以采用zincrby函数,基于排行榜(分数排名列表)名称、分数增量(分数增量可正可负)、第一用户的标识,对第一用户在分数排名列表中的历史分数进行更新,从而实现了“更新分数”的功能。
75.下面对“查询排名”进行介绍:
76.本技术实施例提供的方法还包括:若检测到针对第二用户在分数排名列表中的排名的查询请求,则采用redis数据库的zrevrank函数,查询第二用户的排名。若检测到针对分数排名列表中的一个排名段的用户标识的查询请求,则采用redis数据库的zrevrange函数,查询该排行段内的各个用户标识。
77.具体来讲,为了查询某一个人(即第二用户)的排名,可以采用zrevrank函数,基于排行榜(分数排名列表)名称、第二用户的标识,查询第二用户的分数具体排在第几名。为了查询一个排名段中有哪些用户,可以采用zrevrange函数,基于排行榜(分数排名列表)名称、该排名段的起始位置、该排名段的结束位置,获取该排名段内的各个用户的用户标识,其中,该排名段可是排名在前的n(比如10)个人,也可以是排名在后的m(比如10)个人,还可以是某个其它排名段的q个人(比如排名在第5到第10的5个人);比如,若查询排名在前的10个人,则该排名段的起始位置为1、该排名段的结束位置为10。
78.需要说明的是,实际应用中,上述第一用户与第二用户可能是同一用户、也可能是不同用户。
79.在以上本技术实施例提供的分数排名处理方法中,在参与目标活动的各个用户的用户分数中,若存在至少两个用户具有相同的目标分数,则为至少两个用户分别生成一个时间戳分数,时间戳分数的大小反映了对应用户到达目标分数的时间;按照至少两个用户各自的时间戳分数,对至少两个用户各自的目标分数进行排名。可见,本技术实施例在对具有相同目标分数的多个用户进行排名时,考虑了各个用户达到该目标分数的时间信息,通过引入时间因素生成各个用户的时间戳分数,并基于时间戳分数的大小来对各个用户进行分数排名,可以保证分数排名的合理性。
80.参见图3,为本技术实施例提供的一种分数排名处理装置的组成示意图,该装置包括:
81.时间戳生成单元310,用于在参与目标活动的各个用户的用户分数中,若存在至少两个用户具有相同的目标分数,则为所述至少两个用户分别生成一个时间戳分数,所述时间戳分数的大小反映了对应用户到达所述目标分数的时间;
82.分数排名单元320,用于按照所述至少两个用户各自的时间戳分数,对所述至少两个用户各自的目标分数进行排名。
83.在本技术实施例的一种实现方式中,所述时间戳生成单元310在为所述至少两个用户分别生成一个时间戳分数时,具体用于:
84.对于所述至少两个用户中的每一用户,根据该用户的目标分数、该用户取得该目标分数的时间信息,计算该用户的时间戳分数。
85.在本技术实施例的一种实现方式中,所述分数排名单元320,具体用于:
86.按照所述至少两个用户各自的时间戳分数,确定所述至少两个用户到达所述目标分数的先后顺序;根据所述先后顺序,对所述至少两个用户各自的目标分数进行排名。
87.在本技术实施例的一种实现方式中,所述装置还包括:
88.分数获取单元,用于获取第一用户在所述目标活动中的当前得分;
89.添加排名单元,用于若所述第一用户在分数排名列表中没有相关排名,则采用redis数据库的zadd函数,将所述第一用户的当前得分添加到分数排名列表中;
90.分数更新单元,用于若所述第一用户在分数排名列表中有相关排名,则采用redis数据库的zincrby函数,更新所述第一用户在分数排名列表中的历史分数。
91.在本技术实施例的一种实现方式中,所述装置还包括:
92.第一查询单元,用于若检测到针对第二用户在分数排名列表中的排名的查询请求,则采用redis数据库的zrevrank函数,查询所述第二用户的排名。
93.在本技术实施例的一种实现方式中,所述装置还包括:
94.第二查询单元,用于若检测到针对分数排名列表中的一个排名段的用户标识的查询请求,则采用redis数据库的zrevrange函数,查询该排行段内的各个用户标识。
95.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
96.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本技术方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
97.本技术实施例还提供了一种电子设备,该电子设备的结构示意图如图4所示,该电子设备4000包括至少一个处理器4001、存储器4002和总线4003,至少一个处理器4001均与存储器4002电连接;存储器4002被配置用于存储有至少一个计算机可执行指令,处理器4001被配置用于执行该至少一个计算机可执行指令,从而执行如本技术中任意一个实施例或任意一种可选实施方式提供的任意一种分数排名处理方法的步骤。
98.进一步,处理器4001可以是fpga(field-programmable gate array,现场可编程门阵列)或者其它具有逻辑处理能力的器件,如mcu(microcontroller unit,微控制单元)、cpu(central process unit,中央处理器)。
99.应用本技术实施例,在对具有相同目标分数的多个用户进行排名时,考虑了各个用户达到该目标分数的时间信息,通过引入时间因素生成各个用户的时间戳分数,并基于时间戳分数的大小来对各个用户进行分数排名,可以保证分数排名的合理性。
100.本技术实施例还提供了另一种计算机可读存储介质,存储有计算机程序,该计算机程序用于被处理器执行时实现本技术中任意一个实施例或任意一种可选实施方式提供的任意一种分数排名处理方法的步骤。
101.本技术实施例提供的计算机可读存储介质包括但不限于任何类型的盘(包括软盘、硬盘、光盘、cd-rom、和磁光盘)、rom(read-only memory,只读存储器)、ram(random access memory,随即存储器)、eprom(erasable programmable read-only memory,可擦写可编程只读存储器)、eeprom(electrically erasable programmable read-only memory,电可擦可编程只读存储器)、闪存、磁性卡片或光线卡片。也就是,可读存储介质包括由设备(例如,计算机)以能够读的形式存储或传输信息的任何介质。
102.应用本技术实施例,在对具有相同目标分数的多个用户进行排名时,考虑了各个用户达到该目标分数的时间信息,通过引入时间因素生成各个用户的时间戳分数,并基于时间戳分数的大小来对各个用户进行分数排名,可以保证分数排名的合理性。
103.以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献