榜单排行数值的生成方法及装置
技术领域
本申请涉及榜单排行数值生成领域,具体而言,涉及一种榜单排行数值的生成方法及装置。
背景技术
榜单排行用于考试成绩排序、展示。
通常是使用定时任务的方式,使用统计脚本生成榜单数据,使用这种方式则会大大降低榜单数据的时效性。
针对相关技术中使用统计脚本生成榜单数据造成的榜单数据的时效性差的问题,目前尚未提出有效的解决方案。
发明内容
本申请的主要目的在于提供一种榜单排行数值的生成方法及装置,以解决使用统计脚本生成榜单数据造成的榜单数据的时效性差的问题。
为了实现上述目的,根据本申请的一个方面,提供了一种榜单排行数值的生成方法。
根据本申请的榜单排行数值的生成方法包括:确定与成绩相关的模型参数;依照所述模型参数建立分值模型;从数据库中解析出成绩数据;将所述成绩数据输入所述分值模型,生成榜单排行数值。
进一步的,确定与成绩相关的模型参数包括:
确定答题分数、答题时长和提交时间为与成绩相关的模型参数。
进一步的,依照所述模型参数建立分值模型包括:令模型参数中的答题分数为M、答题时长L、提交时间N;设置M、L、N的数值范围和数字长度;建立分值模型为S=M+(9999-L)+(99999999-N);其中,M越大S越大,L越小 S越大,N越小S越大。
进一步的,从数据库中解析出成绩数据之前还包括:依照预设存储规则存储所述成绩数据。
进一步的,将所述成绩数据输入所述分值模型,生成榜单排行数值之后还包括:将所述榜单排行数值存储在redis的有序集合中。
为了实现上述目的,根据本申请的另一方面,提供了一种榜单排行数值的生成装置。
根据本申请的榜单排行数值的生成装置包括:确定模块,用于确定与成绩相关的模型参数;建立模块,用于依照所述模型参数建立分值模型;解析模块,用于从数据库中解析出成绩数据;生成模块,用于将所述成绩数据输入所述分值模型,生成榜单排行数值。
进一步的,所述确定模块包括:确定答题分数、答题时长和提交时间为与成绩相关的模型参数。
进一步的,所述建立模块包括:令模型参数中的答题分数为M、答题时长 L、提交时间N;设置M、L、N的数值范围和数字长度;建立分值模型为 S=M+(9999-L)+(99999999-N);其中,M越大S越大,L越小S越大,N越小S 越大。
进一步的,从数据库中解析出成绩数据之前还包括:数据存储模块,用于依照预设存储规则存储所述成绩数据。
进一步的,将所述成绩数据输入所述分值模型,生成榜单排行数值之后还包括:榜单存储模块,用于将所述榜单排行数值存储在redis的有序集合中。
在本申请实施例中,采用生成榜单排行数值的方式,通过确定与成绩相关的模型参数;依照所述模型参数建立分值模型;从数据库中解析出成绩数据;将所述成绩数据输入所述分值模型,生成榜单排行数值;达到了榜单排行数值替代统计脚本的目的,从而实现了提高时效性的技术效果,进而解决了由于使用统计脚本生成榜单数据造成的榜单数据的时效性差的技术问题。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的榜单排行数值的生成方法示意图;
图2是根据本申请一优选实施例的榜单排行数值的生成方法示意图;
图3是根据本申请再一优选实施例的榜单排行数值的生成方法示意图;
图4是根据本申请实施例的榜单排行数值的生成装置示意图;
图5是根据本申请一优选实施例的榜单排行数值的生成装置示意图;
图6是根据本申请再一优选实施例的榜单排行数值的生成装置示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本申请中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本发明及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本发明中的具体含义。
此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
根据本发明实施例,提供了一种榜单排行数值的生成方法,如图1所示,该方法包括如下的步骤S100至步骤S106:
步骤S100、确定与成绩相关的模型参数;
与成绩相关的模型参数可以是答题分数、答题时长、提交时间等多个维度能够反应成绩的参数。
开发人员可以将以上多个维度的模型参数预先设置到服务器中,设置的方式可以是开发人员直接设置,也可以是通过终端配合软件将以上的至少一个模型参数设置到服务器;优选为通过终端配合软件设置,能够提高配置的效率,减轻开发人员工作负担,而且其他非专业人员也可以完成简单设置。
具体的,确定与成绩相关的模型参数包括:
确定答题分数、答题时长和提交时间为与成绩相关的模型参数。
作为本实施例中优选的方案,将答题分数、答题时长和提交时间为与成绩相关的模型参数,将答题分数、答题时长和提交时间三个参数作为数值计算的影响因素,保证计算到的排行数值更为公正。
步骤S102、依照所述模型参数建立分值模型;
具体的,依照所述模型参数建立分值模型包括:
令模型参数中的答题分数为M、答题时长L、提交时间N;
设置M、L、N的数值范围和数字长度;
建立分值模型为S=M+(9999-L)+(99999999-N);
其中,M越大S越大,L越小S越大,N越小S越大。
举个例子:设置M的分数范围为1-100,用2个数字长度表示,可以记为 M(2);设置L的时长范围为2小时以内,以秒为单位,用4个数值长度来表示,可以记为L(4);设置N的时间戳为基数为2019年1月1日,计算出提交时间与基础时间戳的差值作为提交成绩的时间戳,假设这个排行榜要用3年(约92275200秒),使用8位数字即可表示,可以记为N(8)。
可以得到分值模型:S=M(2)+(9999-L(4))+(99999999-N(8)),用一共14 位大整型数来表示。其中,M越大S越大,L越小S越大,N越小S越大。
通过该模型,只要输入相应的模型参数值,就可以计算得到榜单排行数值,为榜单数据的生成提供保障,替代使用统计脚本生成榜单数据。
步骤S104、从数据库中解析出成绩数据;
在数据库中预存成绩数据,成绩数据中包括但不限于,用户的答题实际分数、实际答题时长和实际提交时间;从数据库中解析出以上的成绩数据,为分值模型计算分值提供实际参数。
根据本发明实施例,优选的,如图2所示,从数据库中解析出成绩数据之前还包括:
步骤S200、依照预设存储规则存储所述成绩数据。
服务端接收到用户答题得到的成绩数据以后,直接把请求得到的数据以流水日志的方式存储在服务本地磁盘中。同时,使用服务端的日志处理程序,以多线程或多进程的方式将日志里面的数据投递到异步队列服务中去。一旦发现投递过程出错,马上可以通过与原始的日志数据进行比对,并重新执行投递队列逻辑,直至数据投递成功。队列处理程序从队列中读取日志数据,然后执行数据分析逻辑,完成后续的数据存储工作。
使用异步的方式投递并存储成绩数据,有效利用服务器采集数据的并发能力,不需要等一个连接处理完成绩数据的统计工作之后,才可以处理下一个的请求,进而不会遇到处理不过来,或者数据丢失的情况,最终不会影响榜单数据的准确性。
步骤S106、将所述成绩数据输入所述分值模型,生成榜单排行数值。
成绩数据中的用户的答题实际分数(分值)、实际答题时长(时间值)和实际提交时间(时间节点值)输入到分值模型:
S=M(2)+(9999-L(4))+(99999999-N(8))中;
通过运算可以得到一个分值,即为某用户答题对应的榜单排行数值;
每个用户对应的成绩数据,均通过以上的方式进行运算,为后续的榜单数据中的排名提供保障。
根据本发明实施例,优选的,如图3所示,将所述成绩数据输入所述分值模型,生成榜单排行数值之后还包括:
步骤S300、将所述榜单排行数值存储在redis的有序集合中。
将排行榜的某个维度作为有序集合的键值,比如,每日榜单可以用每日的日期作为键值,周榜可以用当前时间所属的周数作为键值,月榜可以用当前月份数作为键值,地区榜可以用当前用户的地区编号作为键值;使用用户的id 作为有序集合的成员,用上述S的值作为有序集合成员对应的分值。使用这种存储方案,可以快速生成多种维度的排行榜。
从以上的描述中,可以看出,本发明实现了如下技术效果:
在本申请实施例中,采用生成榜单排行数值的方式,通过确定与成绩相关的模型参数;依照所述模型参数建立分值模型;从数据库中解析出成绩数据;将所述成绩数据输入所述分值模型,生成榜单排行数值;达到了榜单排行数值替代统计脚本的目的,从而实现了提高时效性的技术效果,进而解决了由于使用统计脚本生成榜单数据造成的榜单数据的时效性差的技术问题。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
根据本发明实施例,还提供了一种用于实施上述榜单排行数值的生成方法的装置,如图4所示,该装置包括:
确定模块10,用于确定与成绩相关的模型参数;
与成绩相关的模型参数可以是答题分数、答题时长、提交时间等多个维度能够反应成绩的参数。
开发人员可以将以上多个维度的模型参数预先设置到服务器中,设置的方式可以是开发人员直接设置,也可以是通过终端配合软件将以上的至少一个模型参数设置到服务器;优选为通过终端配合软件设置,能够提高配置的效率,减轻开发人员工作负担,而且其他非专业人员也可以完成简单设置。
具体的,确定与成绩相关的模型参数包括:
确定答题分数、答题时长和提交时间为与成绩相关的模型参数。
作为本实施例中优选的方案,将答题分数、答题时长和提交时间为与成绩相关的模型参数,将答题分数、答题时长和提交时间三个参数作为数值计算的影响因素,保证计算到的排行数值更为公正。
建立模块20,用于依照所述模型参数建立分值模型;
具体的,依照所述模型参数建立分值模型包括:
令模型参数中的答题分数为M、答题时长L、提交时间N;
设置M、L、N的数值范围和数字长度;
建立分值模型为S=M+(9999-L)+(99999999-N);
其中,M越大S越大,L越小S越大,N越小S越大。
举个例子:设置M的分数范围为1-100,用2个数字长度表示,可以记为 M(2);设置L的时长范围为2小时以内,以秒为单位,用4个数值长度来表示,可以记为L(4);设置N的时间戳为基数为2019年1月1日,计算出提交时间与基础时间戳的差值作为提交成绩的时间戳,假设这个排行榜要用3年(约 92275200秒),使用8位数字即可表示,可以记为N(8)。
可以得到分值模型:S=M(2)+(9999-L(4))+(99999999-N(8)),用一共14 位大整型数来表示。其中,M越大S越大,L越小S越大,N越小S越大。
通过该模型,只要输入相应的模型参数值,就可以计算得到榜单排行数值,为榜单数据的生成提供保障,替代使用统计脚本生成榜单数据。
解析模块30,用于从数据库中解析出成绩数据;
在数据库中预存成绩数据,成绩数据中包括但不限于,用户的答题实际分数、实际答题时长和实际提交时间;从数据库中解析出以上的成绩数据,为分值模型计算分值提供实际参数。
根据本发明实施例,优选的,如图5所示,还包括:
数据存储模块50,用于依照预设存储规则存储所述成绩数据。
服务端接收到用户答题得到的成绩数据以后,直接把请求得到的数据以流水日志的方式存储在服务本地磁盘中。同时,使用服务端的日志处理程序,以多线程或多进程的方式将日志里面的数据投递到异步队列服务中去。一旦发现投递过程出错,马上可以通过与原始的日志数据进行比对,并重新执行投递队列逻辑,直至数据投递成功。队列处理程序从队列中读取日志数据,然后执行数据分析逻辑,完成后续的数据存储工作。
使用异步的方式投递并存储成绩数据,有效利用服务器采集数据的并发能力,不需要等一个连接处理完成绩数据的统计工作之后,才可以处理下一个的请求,进而不会遇到处理不过来,或者数据丢失的情况,最终不会影响榜单数据的准确性。
生成模块40,用于将所述成绩数据输入所述分值模型,生成榜单排行数值。
成绩数据中的用户的答题实际分数(分值)、实际答题时长(时间值)和实际提交时间(时间节点值)输入到分值模型:
S=M(2)+(9999-L(4))+(99999999-N(8))中;
通过运算可以得到一个分值,即为某用户答题对应的榜单排行数值;
每个用户对应的成绩数据,均通过以上的方式进行运算,为后续的榜单数据中的排名提供保障。
根据本发明实施例,优选的,如图6所示,还包括:
榜单存储模块60,用于将所述榜单排行数值存储在redis的有序集合中。
将排行榜的某个维度作为有序集合的键值,比如,每日榜单可以用每日的日期作为键值,周榜可以用当前时间所属的周数作为键值,月榜可以用当前月份数作为键值,地区榜可以用当前用户的地区编号作为键值;使用用户的id 作为有序集合的成员,用上述S的值作为有序集合成员对应的分值。使用这种存储方案,可以快速生成多种维度的排行榜。
从以上的描述中,可以看出,本发明实现了如下技术效果:
在本申请实施例中,采用生成榜单排行数值的方式,通过确定与成绩相关的模型参数;依照所述模型参数建立分值模型;从数据库中解析出成绩数据;将所述成绩数据输入所述分值模型,生成榜单排行数值;达到了榜单排行数值替代统计脚本的目的,从而实现了提高时效性的技术效果,进而解决了由于使用统计脚本生成榜单数据造成的榜单数据的时效性差的技术问题。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。