数据处理方法、装置、电子设备及存储介质
技术领域
本发明涉及互联网技术领域,尤其涉及数据处理方法、装置、电子设备及存储介质。
背景技术
随着互联网技术的迅猛发展,一些电子商务平台向用户提供的产品数量和产品种类也快速增长,导致用户需要花费大量时间才能找到感兴趣的产品。
因此,为解决这一问题,个性化推荐系统应运而生,以根据用户的信息需求和兴趣等进行信息筛选,从而将用户感兴趣的信息或产品推荐给用户。其中,在信息推荐系统中,例如,直播领域的信息推荐系统中,可以依据用户在直播平台的活跃天数、浏览记录、兴趣标签、地理位置以及生活方式等的记录,从众多视频产品中筛选出用户感兴趣的产品推送或推荐给用户。
但是,目前对用户活跃天数进行获取的方法一般涉及较多的处理流程,导致用户活跃天数的获取过程较为繁琐和获取效率低,影响需要应用到用户活跃天数进行后续处理的效率。
发明内容
基于此,本发明提供一种数据处理方法、装置、电子设备及存储介质。
根据本发明实施例的第一方面,本发明提供了一种数据处理方法,所述方法包括:
收到用于请求获取目标用户账号在第一查询日期之前的第二预设时段内的第一活跃天数的请求时,获取所述目标用户账号的活跃记录数据;其中,所述活跃记录数据包括用于表征所述目标用户账号最近一次活跃时间相对预设参考时间的偏移天数的第一偏移数值、以及用于表征所述目标用户账号在最近一次活跃时间之前的第一预设时段内每一天的活跃状态的状态数据;
确定所述第一查询日期相对所述参考时间的偏移天数,以获得第二偏移数值;
根据所述第一偏移数值和第二偏移数值确定所述第一查询日期相对所述最近一次活跃时间往前或往后偏移的天数,以获得目标偏移数值;
根据所述目标偏移数值确定所述状态数据中对应于所述第一预设时段和所述第二预设时段重合的时段的第一状态数据,并根据所述第一状态数据统计所述第一活跃天数。
根据本发明实施例的第二方面,本发明提供了一种数据处理装置,所述装置包括:
第一接收模块,用于在收到用于请求获取目标用户账号在第一查询日期之前的第二预设时段内的第一活跃天数的请求时,获取所述目标用户账号的活跃记录数据;其中,所述活跃记录数据包括用于表征所述目标用户账号最近一次活跃时间相对预设参考时间的偏移天数的第一偏移数值、以及用于表征所述目标用户账号在最近一次活跃时间之前的第一预设时段内每一天的活跃状态的状态数据;
第一确定模块,用于确定所述第一查询日期相对所述参考时间的偏移天数,以获得第二偏移数值;
第二确定模块,用于根据所述第一偏移数值和第二偏移数值确定所述第一查询日期相对所述最近一次活跃时间往前或往后偏移的天数,以获得目标偏移数值;
第一统计模块,用于根据所述目标偏移数值确定所述状态数据中对应于所述第一预设时段和所述第二预设时段重合的时段的第一状态数据,并根据所述第一状态数据统计所述第一活跃天数。
根据本发明实施例第三方面,本发明提供了一种电子设备,其包括:
处理器;
存储器,用于存储可由所述处理器执行的计算机程序;
其中,所述处理器执行所述程序时实现所述数据处理方法的步骤。
根据本发明实施例第四方面,本发明提供了一种机器可读存储介质,其上存储有程序;所述程序被处理器执行时实现所述数据处理方法的步骤。
相对于相关技术,本发明实施例至少产生了以下有益技术效果:
一方面,本发明实施例通过以最近一次活跃时间之前的第一预设时段内每一天的活跃状态的状态数据、以及表征用户账号最近一次活跃时间相对预设参考时间的偏移天数的第一偏移数值的形式记录用户在所述第一预设时段内的活跃状态,由此可以基于所述第一偏移数值和所述状态数据(相当于字符串)得知用户在所述第一预设时段内的活跃状态和具体的活跃日期,相对相关技术通过表格记录用户账号每一天的活跃状态及活跃日期的方式,有利于减少用户活跃记录数据所占用的存储空间。
另一方面,本发明实施例通过以参考时间为基准,基于第一查询日期相对参考时间的偏移天数的第二偏移数值和目标用户账号最近一次活跃时间相对参考时间的偏移天数的第一偏移数值,获取用于表征第一查询日期相对所述最近一次活跃时间往前或往后偏移的天数的目标偏移数值,即可根据所述目标偏移数值确定所述状态数据中对应于第一预设时段和所述第二预设时段重合的时段的第一状态数据,随后即可根据所述第一状态数据中各个数值所表示的活跃状态来确定所述第二预设时段内的第一活跃天数。由此可知,本发明实施例中,活跃天数的获取过程所涉及的运算都是简单的数值运算,相对于相关技术通过遍历表格所记录的活跃数据并进行解析及统计以获取活跃天数的方式,可以减轻系统的运算负担和提高活跃天数的获取效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是本发明根据一示例性实施例示出的一种数据处理方法的流程图;
图2是本发明根据一示例性实施例示出的一种状态数据中不存在第一状态数据时的示意图;
图3是本发明根据一示例性实施例示出的另一种状态数据中不存在第一状态数据时的示意图;
图4是本发明根据一示例性实施例示出的又一种状态数据中不存在第一状态数据时的示意图;
图5是本发明根据一示例性实施例示出的一种状态数据中存在第一状态数据时的示意图;
图6是本发明根据一示例性实施例示出的另一种状态数据中存在第一状态数据时的示意图;
图7是本发明根据一示例性实施例示出的状态数据、第二预设时段和第三预设时段之间的一种关系示意图;
图8是本发明根据一示例性实施例示出的状态数据、第二预设时段和第三预设时段之间的另一种关系示意图;
图9是本发明根据一示例性实施例示出的状态数据、第二预设时段和第三预设时段之间的又一种关系示意图;
图10是本发明根据一示例性实施例示出的状态数据、第二预设时段和第三预设时段之间的又一种关系示意图;
图11是本发明根据一示例性实施例示出的一种电子设备的硬件结构图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
相关技术中,一般将每个用户的活跃情况记录在表格中,例如,以用户为单位,在一个表格中记录所述用户在注册账号之后到当前时刻这段时间内的活跃情况和活跃日期;或者,以日期为单位,不同日期对应不同表格,在一个表格中记录某个日期内所有用户的用户账号及其对应的活跃情况。由此,在统计某个用户在某段时间内如最近一个月内的活跃天数时,需要遍历表格以获取所述用户在最近一个月内的活跃情况数据,并对所述活跃情况数据进一步处理,才能统计得到相应的活跃天数。因此,目前对用户活跃天数进行获取的方法涉及较多处理流程,用户活跃天数的获取过程较为繁琐和获取效率较低。
基于此,为至少解决相关技术中用户活跃天数的获取过程较为繁琐和获取效率较低的技术问题,本发明提供了一种数据处理方法,所述方法可以用于获取用户平台中用户账号在预设时段内的活跃天数,以简化活跃天数的获取过程,减轻系统的运算负担和提高获取效率,同时减少用户活跃记录数据所占用的存储空间。其中,所述用户平台可以是社交平台,如QQ、微博、直播平台、微信、短视频平台;也可以是购物平台,如淘宝、京东、亚马逊或其他购物类商城;也可以是学习平台、游戏平台、新闻平台或阅读平台等,本实施例不限于此。
在本发明实施例中,用户账号在预设时段内的活跃天数可以指:在所述预设时段内,所述用户账号发生活跃的一天的总数。其中,如果所述用户账号当天登录过相关用户平台或当前使用相关用户平台超过预设时长,则可以认为所述用户账号在这一天发生活跃。所述预设时长可以根据实际需求预设或由开发人员根据经验或实验预设,例如,可以为1小时或2小时,本实施例不限于此。
接下来,对本发明的数据处理方法进行说明。图1是本发明根据一示例性实施例示出的一种数据处理方法的流程图,如图1所示,本发明的数据处理方法可以应用于终端或服务端中,包括以下步骤:
在步骤S011中,收到用于请求获取目标用户账号在第一查询日期之前的第二预设时段内的第一活跃天数的请求时,获取所述目标用户账号的活跃记录数据;其中,所述活跃记录数据包括用于表征所述目标用户账号最近一次活跃时间相对预设参考时间的偏移天数的第一偏移数值、以及用于表征所述目标用户账号在最近一次活跃时间之前的第一预设时段内每一天的活跃状态的状态数据;
在步骤S012中,确定所述第一查询日期相对所述参考时间的偏移天数,以获得第二偏移数值;
在步骤S013中,根据所述第一偏移数值和第二偏移数值确定所述第一查询日期相对所述最近一次活跃时间往前或往后偏移的天数,以获得目标偏移数值;
在步骤S014中,根据所述目标偏移数值确定所述状态数据中对应于所述第一预设时段和所述第二预设时段重合的时段的第一状态数据,并根据所述第一状态数据统计所述第一活跃天数。
上述中,所述目标用户账号可以为查询者在相关的查询界面中输入的用户账号,也可以由系统默认输入的用户账号;所述目标用户账号可以包括一个或一个以上的用户账号。所述第一查询日期可以由查询者在相关的查询界面输入,也可以默认为触发所述请求时对应的时间戳。所述第二预设时段可以由查询者在所述查询界面中输入,也可以默认为开发人员在开发阶段预设的值。所述请求可以由查询者在相关的查询界面点击用于确认查询的控件之后触发,可以携带有所述目标用户账号和所述第一查询日期。
需要说明的是,本发明实施例中,所述第一预设时段包含所述最近一次活跃时间,所述第二预设时段包含所述第一查询日期。
对于每个用户账号而言,其对应的活跃记录数据可以以“bitmap:dayOffset”的形式进行存储,其中,bitmap指示所述状态数据,其是一个Long类型的数字,可以被转换为一个64位的二进制数;dayOffset指示所述第一偏移数值。
需要说明的是,由于所述状态数据可以被转换为一个64位的二进制数,且用户在一天中的活跃状态一般包括活跃和不活跃这两种,因此,对于一位二进制数而言,可以用值1作为活跃状态为活跃的标识、用值0作为活跃状态为不活跃的标识,当然,反之亦可,即可以用值0作为活跃状态为活跃的标识、用值1作为活跃状态为不活跃的标识。因此,一个64位的二进制数可以用于记录用户账号在连续64天内的活跃状态,基于此,所述状态数据最多可以记录用户账号在连续64天内的活跃状态。
以下,举个例子来说明一下所述活跃记录数据所表示的含义:
假设所述参考时间对应的时间戳为2019年1月1日0时0分0秒,所述活跃记录数据为“33554701:30”,bitmap中用值1作为活跃状态为活跃的标识、用值0作为活跃状态为不活跃的标识。由此可知,bitmap=33554701(十进制),dayOffset=30。因此,bitmap=33554701对应的二进制数值为:“0000000000000000000000000000000000000010000000000000000100001101”。从dayOffset=30可知,最近一次活跃时间相对所述参考时间的偏移天数为30,则最近一次活跃时间对应的日期为2019年1月31日。因此,对于以二进制形式表达的状态数据bitmap,其第0位用于表示目标用户账号在2019年1月31日的活跃状态,第1位用于表示目标用户账号在2019年1月30日的活跃状态,第2位用于表示目标用户账号在2019年1月29日的活跃状态,以此类推,可知,所述目标用户账号在2019年1月31日、2019年1月29日、2019年1月28日、2019年1月23日、以及2019年1月6日活跃过。由此,所述参考时间和所述第一偏移数值可以用于确定以二进制形式表达的状态数据中各个数值对应的日期,其中,为了方便活跃天数的统计,在本实施例中,所述参考时间对应的日期在本发明所提及的其他任一日期之前。
需要说明的是,如果在最近一次活跃时间之后,所述目标用户账号都未发生活跃,那么所述活跃记录数据不被更新;换言之,在所述目标用户账号发生活跃时,才对所述活跃记录数据进行更新。例如,继续沿用上述例子,基于上述例子可知所述目标用户账号最近一次活跃时间对应的日期为2019年1月31日,假设当前日期为2019年7月1日,如果所述目标用户账号在2019年2月1日至2019年7月1日这段期间都未发生活跃,那么所述活跃记录数据仍为“33554701:30”;如果所述目标用户账号在2019年2月1日发生活跃,则所述目标用户账号被更新为“67109403:31”。
另外,由于所述状态数据最多可以记录用户账号在连续64天内的活跃状态,因此,在所述状态数据已经记录有用户账号在连续64天内的活跃状态时,如果用户账号在最近一次活跃时间后的第5天又发生活跃,则将所述状态数据中所记录的原64天的活跃状态的标识更新为当前发生活跃的日期对应的标识以及在当前发生活跃的日期之前的63天的活跃状态的标识。
以下,说明一下通过本发明实施例的数据处理方法获取所述第一活跃天数的过程:
收到所述请求时,可以根据所述请求携带的信息获取当前所需查询的目标用户账号、所述第一查询日期和所述第二预设时段,并根据所述目标用户账号获取其活跃记录数据。
在获得所述目标用户账号的活跃记录数据之后,为简化第一活跃天数的获取过程,本实施例中先从所述活跃记录数据的状态数据对应的二进制数值中确定出对应于所述第二预设时段的第一状态数据,从而无需关注所述状态数据中除了第一状态数据以外的其他数据,可以减少数据处理量。其中,可以先根据所述第一查询日期和所述参考时间,计算出所述第一查询日期相对所述参考时间的偏移天数,从而获得第二偏移数值。在得到所述第二偏移数值之后,可以计算所述第二偏移数值与所述第一偏移数值的差值,所述差值即为所述目标偏移数值,用于指示所述第一查询日期相对所述最近一次活跃时间往前或往后偏移的天数。由所述第二偏移数值和所述第一偏移数值的由来可知,如果所述目标偏移数值大于零,则表示所述第一查询日期在最近一次活跃时间对应的日期之后;如果所述目标偏移数值为零,则表示所述第一查询日期与所述最近一次活跃时间为同一天;如果所述目标偏移数值小于零,则表示所述第一查询日期在最近一次活跃时间对应的日期之前。基于此,在一实施例中,可以根据所述目标偏移数值和所述第二预设时段内的天数值来确定所述第一状态数据,所述步骤S014中,所述第一状态数据的确定过程可以包括:
在步骤S0141中,当所述目标偏移数值大于或等于所述第二预设时段内的天数值、或所述目标偏移数值为负数且小于或等于所述第一预设时段内的天数值的负值时,表示所述第二预设时段与所述第一预设时段不存在重合的时段,所述第一状态数据不存在;
在步骤S0142中,当所述目标偏移数值大于或等于零且小于所述第二预设时段内的天数值时,确定所述第一状态数据为以二进制形式表达的状态数据的第0位至第k位,其中,k的值等于所述第二预设时段内的天数值和1的差值与所述目标偏移数值之差;
在步骤S0143中,当所述目标偏移数值为负数且大于所述第一预设时段内的天数值的负值时,确定所述第一状态数据为以二进制形式表达的状态数据的第i位至第j位,其中,i的值等于所述目标偏移数值的绝对值,j的值为以下两项中的最小值:所述第二预设时段内的天数值和1的差值与所述目标偏移数值的绝对值之和、所述第一预设时段内的天数值和1的差值。
以下,举个例子说明一下通过所述第一状态数据的确定过程:
假设在该例子中,采用的状态数据用于记录最近一次活跃时间之前的20天内(包括所述最近一次活跃时间)每一天的活跃状态,则可知所述第一预设时段内的天数值为20天,所述第二预设时段内的天数值为12天。
基于此,在第一种情形下,在一个例子中,假设所述目标偏移数值为12,则可知,当前目标偏移数值等于所述第二预设时段内的天数值,所述第一查询日期在所述最近一次活跃时间之后的第12天,如图2所示,图2是本发明根据一示例性实施例示出的一种状态数据中不存在第一状态数据时的示意图,此时,所述第二预设时段对应的时间窗口刚好与所述第一预设时段错开,两者不存在重合的时段,所需查询的第二预设时段的活跃状态未被记录,所以可以认为所述第一状态数据不存在。在另一个例子中,假设所述目标偏移数值为14,则可知,当前目标偏移数值大于所述第二预设时段内的天数值,所述第一查询日期在所述最近一次活跃时间之后的第14天,如图3所示,图3是本发明根据一示例性实施例示出的另一种状态数据中不存在第一状态数据时的示意图,此时,所述第二预设时段与所述第一预设时段不存在重合的时段,所需查询的第二预设时段的活跃状态未被记录,所以可以认为所述第一状态数据不存在。在又一个例子中,假设所述目标偏移数值为-20,则可知,当前目标偏移数值为负数且等于所述预设时段内的天数值的负值,所述第一查询日期在所述最近一次活跃时间之前的第20天,如图4所示,图4是本发明根据一示例性实施例示出的又一种状态数据中不存在第一状态数据时的示意图,此时,所述第二预设时段与所述第一预设时段不存在重合的时段,所需查询的第二预设时段的活跃状态未被记录,所以可以认为所述第一状态数据不存在。因此,当所述目标偏移数值大于或等于所述第二预设时段内的天数值、或所述目标偏移数值为负数且小于或等于所述第一预设时段内的天数值的负值时,所述第二预设时段与所述第一预设时段不存在重合的时段,所述第一状态数据不存在。
在第二种情形下,假设所述目标偏移数值为10,则可知,当前目标偏移数值大于零且小于所述第二预设时段内的天数值,所述第一查询日期在所述最近一次活跃时间之后的第10天,如图5所示,图5是本发明根据一示例性实施例示出的一种状态数据中存在第一状态数据时的示意图,此时,所述第二预设时段与所述第一预设时段存在重合的时段为最近一次活跃时间和在最近一次活跃时间前的一天,所述第一状态数据为所述状态数据中的第0位和第1位。由此可知,在当前目标偏移数值大于或等于零且小于所述第二预设时段的天数值的情形下,所述第二预设时段与所述第一预设时段中重合的时段内的天数为所述第二预设时段内的天数值与所述目标偏移数值的差值,并由于以二进制形式表达的状态数据最低位为第0位且最低位对应的一天为所述重合的时段内的最后一天,因此所述重合的时段对应的所述第一状态数据为所述状态数据的第0位至第k位,其中,k=N-1-daygap,N为所述第二预设时段的天数值,daygap为所述目标偏移数值。在第三种情形下,假设所述目标偏移值为-5,则可知,当前目标偏移值为负数且大于所述第一预设时段内的天数值的负值,所述第一查询日期在所述最近一次活跃时间之前的第5天,如图6所示,图6是本发明根据一示例性实施例示出的另一种状态数据中存在第一状态数据时的示意图,由于所述第二预设时段中的第一天未超出所述第一预设时段中的第一天,因此所述第二预设时段与所述第一预设时段重合的时段为所述第二预设时段,也即,在图6所示的示例中,所述第一状态数据为所述状态数据的第5位至第16位。但如果所述第二预设时段中的第一天超出所述第一预设时段中的第一天,则所述第二预设时段与所述第一预设时段重合的时段为所述第一预设时段中的第一天到所述第一查询日期。由此可知,在所述目标偏移数值为负数且大于所述第一预设时段内的天数值的负值的情形下,所述第一状态数据为所述状态数据的第i位至第j位,其中,i=|daygap|,j=min((N-1+|daygap|),M-1),N为所述第二预设时段内的天数值,daygap为所述目标偏移数值,M为所述第一预设时段内的天数值。由此确定出以二进制形式表达的第一状态数据之后,就可以根据所述第一状态数据所包含的用于表示活跃状态为活跃的标识对应的数值的个数获得所述第一活跃天数。基于此,在一实施例中,所述步骤S014中,所述根据所述第一状态数据统计所述第一活跃天数,可以包括以下步骤:
在步骤S0144中,当所述第一状态数据不存在时,确定所述第一活跃天数为零;
在步骤S0145中,当所述第一状态数据为以二进制形式表达的状态数据的第0位至第k位时,统计所述状态数据的第0位至第k位中表示活跃状态为活跃的数值的个数,以获得所述第一活跃天数;
在步骤S0146中,当所述第一状态数据为以二进制形式表达的状态数据的第i位至第j位时,统计所述状态数据的第i位至第j位中表示活跃状态为活跃的数值的个数,以获得所述第一活跃天数。
对于所述步骤S0145,假设以二进制形式表达的所述状态数据为:0000000000000000000000000000000000000010000000000000000100001101,并假设所述第一状态数据为所述状态数据的第0位至第5位、表示活跃状态为活跃的标识对应的数值为1,这么一来,可以统计所述状态数据中第0位至第5位中1的个数,即可获得所述第一活跃天数,在该例子中,所述状态数据中第0位至第5位中1的个数为3,此时的第一活跃天数为3。
对于所述步骤S0146,假设以二进制形式表达的所述状态数据为:0000000000000000000000000000000000000010000000000000000100001101,并假设所述第一状态数据为所述状态数据的第5位至第25位、表示活跃状态为活跃的标识对应的数值为1,这么一来,可以统计所述状态数据中第5位至第25位中1的个数,即可获得所述第一活跃天数,在该例子中,所述状态数据中第5位至第25位中1的个数为1,此时的第一活跃天数为1。
由此可知,只要从所述状态数据中确定出所述第二预设时段与所述第一预设时段重合的时段对应的第一状态数据,就可以依据所述第一状态数据计算得到所述第一状态数据所包含的用于表示活跃状态为活跃的值的个数,该个数即为所述第一活跃天数。
在一实施例中,为提高根据所述第一状态数据统计所述第一活跃天数的统计效率,由于所述状态数据bitmap为Long类型的数值,因此可以通过以下公式①计算所述状态数据的第start位到第end位中用于表示活跃状态为活跃的值的个数:
Long.bitCount(bitmap<<(63-end)>>>(start+(63-end)))——公式①
其中,start表示所述状态数据中与所述第一状态数据的第0位对应的一位数值所在的位数,end表示所述状态数据中与所述第一状态数据的最后一位对应的一位数值所在的位数。例如,如果所述第一状态数据为所述状态数据的第0位至第10位,则start=0,end=10。
通过公式①,可以通过移位运算将所述状态数据中除了所述第一状态数据以外的其他数值置零,随后再通过函数Long.bitCount计算移位后的状态数据中用于表示活跃状态为活跃的值的个数,即实现对所述第一活跃天数的获取。
以下,举个例子说明一下所述公式①中bitmap<<(63-end)>>>(start+(63-end))的运算过程:
假设所述状态数据为所述第一状态数据为所述状态数据的第4位至第8位,则start=4,end=8;并假设所述状态数据为:
0000000000000000000000000000000000000010000000000000000100001101。
基于此,bitmap<<(63-end)>>>(start+(63-end))相应地更新为:bitmap<<(63-8)>>>(4+(63-8)),相当于bitmap<<55>>>59,也即:先将bitmap左移55位之后,再右移59位并在左端补0,经过上述移位运算后的状态数据bitmap为:
0000000000000000000000000000000000000000000000000000000000010000。
由此可知,经过上述移位运算后,原本为所述状态数据的第4位至第8位的第一状态数据变更为移位后的状态数据的第0位至第5位,从而方便函数Long.bitCount对第一活跃天数的统计。
由此,上述涉及的运算大多为位运算,因此可以更好地提高第一活跃天数的统计效率。
需要说明的是,确定第一状态数据之后,还可以通过相关技术中的其他方式实现对所述第一状态数据对应的二进制数值中数值0或数值1的个数的统计,本发明实施例不限于上述个数统计方式。
由上述可知,所述第一活跃天数为零的可能性是存在的,而且所述第一活跃天数为零的情况可能由以下其中一种情形所引发的:第一种情形、所述第二预设时段在所述第一预设时段之外且在所述第一预设时段之后;第二种情形、所述第二预设时段在所述第一预设时段之外且在所述第一预设时段之前;第三种情形、所述第二预设时段与所述第一预设时段存在重合的时段,但目标用户账号在该重合的时段中未发生过活跃。其中,由于所述状态数据在所述目标用户账号发生过活跃时才更新,因此对于上述第一种情形和第三种情形,所述目标用户账号确实在所述第二预设时段内未发生活跃,活跃天数为零。但对于上述第二种情形,由于所述状态数据最多只能记录所述目标用户账号在连续64天内的活跃状态,因此所述状态数据在最近一次活跃时间之前的第63天前的状态数据都被刷新,不存在相应的记录了;所以在第二种情形下,所述第二预设时段为最近一次活跃时间之前的第63天前的时段,其活跃状态未被记录于所述状态数据中,故认为活跃天数为零,但实际中活跃天数不一定为零。因此,如果针对第二种情形也直接认为第一活跃天数为零,则会造成查询者以为所述第二预设时段内的第一活跃天数确实为零,由此可能引发一些不准确的结论或导致后续基于活跃天数进行的其他处理缺乏客观性和准确性。所以为至少解决这一技术问题,在一实施例中,所述方法还可以包括:
在步骤S0151中,当统计所得的第一活跃天数为零时,根据所述状态数据统计所述第一预设时段内的第三活跃天数;
在步骤S0152中,输出所述第一活跃天数和所述第三活跃天数。
其中,统计所述状态数据中用于表示活跃状态为活跃的数值的个数即可得到所述第三活跃天数,与所述第一活跃天数的统计原理相同,在此不进行赘述。
由此,通过在所述第一活跃天数为零的情况下,还统计所述第三活跃天数并输出,可以使得查询者基于第一活跃天数和第三活跃天数得知所述目标用户账号更多活跃状态信息,避免仅基于为零的第一活跃天数所引发的不准确结论,而且也可以使得在后续处理中,可以结合第一活跃天数和第三活跃天数进行合理的处理,例如,推荐系统可以结合第一活跃天数和第三活跃天数实现较为合理的信息推荐。
虽然可以通过上一实施例解决因只输出为零的第一活跃天数可能引发一些不准确的结论或导致后续基于活跃天数进行的其他处理缺乏客观性和准确性的问题,但查询者或推荐系统仍无法得知目标用户账号的第一活跃天数为零的原因,故为解决这一技术问题,在一实施例中,所述步骤S0152还可以包括:输出用于提示所述第一活跃天数为零的原因的提示信息。其中,对于所述第一种情形和所述第三种情形,所述提示信息可以包括用于表示所述目标用户账号确实在当前查询时段未发生过活跃的信息;对于所述第二种情形,所述提示信息可以包括用于表示系统未记录有当前查询时段对应的活跃状态数据、和/或当前查询时段已超出可查询时段范围的信息。由此,当所述第一活跃天数为零时,可以使得查询者得知相关原因,也可以使得查询者根据相关原因调整当前查询时段。
在另一实施例中,如果有减少数据处理量的需求,可以在所述第一活跃天数为零时,输出所述第一活跃天数和所述提示信息,而不对所述第三活跃天数进行统计。
统计得到所述第一活跃天数之后,在一实施例中,所述方法还可以包括:输出所述第一活跃天数。由此,查询者可以得知所述目标用户账号在所述第二预设时段内的第一活跃天数。此后,可以利用所述第一活跃天数制定相关的用户运营策略或对所述目标用户进行数据推荐,以更好地将容易流失的用户吸引回来、保持用户稳定性和/或保留高价值用户。
在信息推荐或用户运营策略的制定过程中,除了需要应用到活跃天数之外,有时候还需要得知活跃天数中每一天对应的实际日期,以根据实际日期获知用户在活跃时的用户行为数据,例如,用户在活跃时观看过哪些信息、体验过哪些游戏、购买过哪些产品、使用过用户平台中的哪些性能等。因此,为方便活跃日期的获取,在一实施例中,所述方法还可以包括:
在步骤S016中,根据所述参考时间和第一偏移数值确定以二进制形式表达的状态数据中每一位数值对应的实际日期;
在步骤S017中,根据所述状态数据中每一位数值与实际日期的对应关系,确定所述第一状态数据中表示活跃状态为活跃的数值对应的实际日期,以获得所述目标用户账号在所述第二预设时段内发生活跃的活跃日期。
对所述步骤S016和S017的理解可参见上述对所述活跃记录数据所表示的含义进行说明时所应用的例子,在此不进行赘述。
获得所述第二预设时段内发生活跃的活跃日期和第一活跃天数之后,在一实施例中,可以直接向推荐系统发送所述活跃日期和第一活跃天数,以方便推荐系统对活跃日期和第一活跃天数的获取,提高推荐系统后续的信息筛选效率,基于此,所述方法还可以包括:
在步骤S018中,向推荐系统发送所述第一活跃天数和所述活跃日期,以使所述推荐系统根据所述目标用户账号在活跃日期产生的用户行为数据从若干产品中筛选出用于向所述目标用户账号发送的产品集。
需要说明的是,所述推荐系统在筛选候选产品集的过程中,所依据的数据除了所述用户行为数据之外,还可以包括与能够反映所述目标用户账号的喜好的其他信息,例如,所述目标用户账号的收藏夹中包含的信息。另外,所述推荐系统根据所述用户行为数据和/或所述其他信息筛选得到产品集的原理可参见相关技术,在此不进行赘述。
在统计得到第一活跃天数之后,如果在后续中又收到获取所述目标用户账号在第二查询日期之前的第三预设时段内的第二活跃天数的请求,可以依据获取所述第一活跃天数的原理获取所述第二活跃天数,在此不进行赘述。
但是,发明人发现如果仍依据所述第一活跃天数的获取原理获取第二活跃天数,会增加一些不必要的运算步骤,从而不仅增加系统运算负担,而且影响第二活跃天数的获取效率。因此,为至少解决这一技术问题,在一实施例中,所述方法还可以包括:
在步骤S021中,收到用于请求获取所述目标用户账号在第二查询日期之前的第三预设时段内的第二活跃天数的请求时,确定所述第一状态中对应于第一时段的数值以外的其他数值中用于表示活跃状态为活跃的数值的个数的第一数量值,并确定以二进制形式表达的状态数据中对应于第二时段的数值中用于表示活跃状态为活跃的数值的个数的第二数量值;其中,所述第三预设时段内的天数值与所述第二预设时段内的天数值相同,所述第一时段为所述第三预设时段与所述第二预设时段重合的时段,所述第二时段为所述第三预设时段中与所述第二预设时段不重合的时段;
在步骤S023中,根据所述第一活跃天数、所述第一数量值和所述第二数量值计算得到所述第二活跃天数。
以下,举个例子说明一下通过所述步骤S021~S023计算得到所述第二活跃天数的过程:
如图7所示,图7是本发明根据一示例性实施例示出的状态数据、第二预设时段和第三预设时段之间的一种关系示意图,已知所述第二预设时段内的第一活跃天数,现在要获得所述第三预设时段的第二活跃天数。从图7所示的示例可知,所述第二预设时段中的T21时段与所述第三预设时段中的T32时段重合,所述第二预设时段中的T22时段与所述第三预设时段不重合,且所述第三预设时段中的T31时段与所述第二预设时段不重合。基于此,所述第三预设时段的第二活跃天数=T31时段内的活跃天数+T32时段内的活跃天数=T31时段内的活跃天数+T21时段内的活跃天数=T31时段内的活跃天数+(第二预设时段内的第一活跃天数-T22时段内的活跃天数);其中,T31时段内的活跃天数即所述第二数量值,T22时段内的活跃天数即所述第一数量值,基于此,上述计算公式相当于:第二活跃天数=第一活跃天数-第一数量值+第二数量值。
由此,在已知某个时段内的活跃天数时,如果要获取另一个时段内的活跃天数,则可以基于已知的活跃天数去计算所述另一个时段内的活跃天数,从而可以减少一定的处理步骤。
需要说明的是,所述第二活跃天数=第一活跃天数-第一数量值+第二数量值的这一计算方式,在所述第三预设时段与所述第二预设时段存在重合的时段时才成立,才可以基于已知的第一活跃天数计算所述第二活跃天数。如果所述第三预设时段与所述第二预设时段完全不重合,则可以根据所述第一活跃天数的统计原理统计得到所述第二活跃天数。
在一实施例中,所述步骤S021中,所述第一数量值和所述第二数量值的确定过程可以包括:
在步骤S0211中,确定所述第二查询日期相对所述第一查询日期往前或往后偏移的天数,以获得查询天数偏移数值a;
在步骤S0212中,当所述第二查询日期不在所述第一预设时段内时,如果所述查询天数偏移数值a为负数且大于所述第二预设时段内的天数值的负值,如图7所示的情形,则确定第一数量值为零,并统计所述状态数据的第n+1位至第n+|a|位中表示活跃状态为活跃的数值的个数,以获得第二数量值;如果所述查询天数偏移数值a为正数且小于所述第三预设时段内的天数值,如图8所示的情形,则统计所述状态数据的第n+1-a位至第n位中表示活跃状态为活跃的数值的个数,以获得第一数量值,并确定第二数量值为零;
在步骤S0213中,当所述第二查询日期在所述第一预设时段内时,如果所述查询天数偏移数值a为负数且大于所述第二预设时段内的天数值的负值,如图9所示的情形,则统计所述状态数据的第m位至第m+|a|位中表示活跃状态为活跃的数值的个数,以获得第一数量值,并统计所述状态数据的第n+1位至第n+|a|位中表示活跃状态为活跃的数值的个数,以获得第二数量值;如果所述查询天数偏移数值a为正数且小于所述第三预设时段内的天数值,如图10所示的情形,则统计所述状态数据的第n+1-a位至第n位中表示活跃状态为活跃的数值的个数,以获得第一数量值,并统计所述状态数据的第m-a位至第m-1位中表示活跃状态为活跃的数值的个数,以获得第二数量值。
其中,m和n用于指示所述第一状态数据为以二进制形式表达的状态数据中的第m位至第n位,m为整数且0≤m<n,n为整数且m<n≤64。
上述中,所述查询天数偏移数值a为负数时,表示所述第二查询日期在所述第一查询日期之前,基于此,如果为负数的查询天数偏移数值a大于所述第二预设时段内的天数值的负值,则表示所述第三预设时段中至少有所述第二查询日期在所述第二预设时段内。故此时所述第三预设时段与所述第二预设时段存在重合的时段,可以根据所述第一活跃天数、第一数量值和第二数量值计算得到所述第二活跃天数。所述查询天数偏移数值a为正数时,表示所述第二查询日期在所述第一查询日期之后,基于此,如果为正数的查询天数偏移数值a小于所述第三预设时段内的天数值,则表示所述第三预设时段中至少有第一天在所述第二预设时段内。故此时所述第三预设时段与所述第二预设时段也存在重合的时段,可以根据所述第一活跃天数、第一数量值和第二数量值计算得到所述第二活跃天数。
反之,当所述查询天数偏移数值为负数且小于或等于所述第二预设时段内的天数值的负值时,或者,当所述查询天数偏移数值为正数且大于或等于所述第三预设时段内的天数值时,所述第三预设时段与所述第二预设时段不存在重合的时段,此时可以根据所述第一活跃天数的统计原理统计得到所述第二活跃天数。
与前述数据处理方法对应,本发明还提供了一种数据处理装置,所述数据处理装置可以应用于终端,如移动设备、计算机、直播平台或可穿戴设备,中,也可以应用于服务端中。所述数据处理装置包括:
第一接收模块,用于在收到用于请求获取目标用户账号在第一查询日期之前的第二预设时段内的第一活跃天数的请求时,获取所述目标用户账号的活跃记录数据;其中,所述活跃记录数据包括用于表征所述目标用户账号最近一次活跃时间相对预设参考时间的偏移天数的第一偏移数值、以及用于表征所述目标用户账号在最近一次活跃时间之前的第一预设时段内每一天的活跃状态的状态数据;
第一确定模块,用于确定所述第一查询日期相对所述参考时间的偏移天数,以获得第二偏移数值;
第二确定模块,用于根据所述第一偏移数值和第二偏移数值确定所述第一查询日期相对所述最近一次活跃时间往前或往后偏移的天数,以获得目标偏移数值;
第一统计模块,用于根据所述目标偏移数值确定所述状态数据中对应于所述第一预设时段和所述第二预设时段重合的时段的第一状态数据,并根据所述第一状态数据统计所述第一活跃天数。
在一实施例中,所述第一统计模块可以包括:
第一确定单元,用于根据所述目标偏移数值确定所述状态数据中对应于所述第一预设时段和所述第二预设时段重合的时段的第一状态数据;
第一统计单元,用于根据所述第一状态数据统计所述第一活跃天数。
在一实施例中,所述第一确定单元可以包括:
第一确定子单元,用于在所述目标偏移数值大于或等于所述第二预设时段内的天数值、或所述目标偏移数值为负数且小于或等于所述第一预设时段内的天数值的负值时,确定所述第一状态数据不存在;
第二确定子单元,用于在所述目标偏移数值大于或等于零且小于所述第二预设时段内的天数值时,确定所述第一状态数据为以二进制形式表达的状态数据的第0位至第k位,其中,k的值等于所述第二预设时段内的天数值和1的差值与所述目标偏移数值之差;
第三确定子单元,用于在所述目标偏移数值为负数且大于所述第一预设时段内的天数值的负值时,确定所述第一状态数据为以二进制形式表达的状态数据的第i位至第j位,其中,i的值等于所述目标偏移数值的绝对值,j的值为以下两项中的最小值:所述第二预设时段内的天数值和1的差值与所述目标偏移数值的绝对值之和、所述第一预设时段内的天数值和1的差值。
在一实施例中,所述第一统计单元可以包括:
第一统计子单元,用于在所述第一状态数据不存在时,确定所述第一活跃天数为零;
第二统计子单元,用于在所述第一状态数据为以二进制形式表达的状态数据的第0位至第k位时,统计所述状态数据的第0位至第k位中表示活跃状态为活跃的数值的个数,以获得所述第一活跃天数;
第三统计子单元,用于在所述第一状态数据为以二进制形式表达的状态数据的第i位至第j位时,统计所述状态数据的第i位至第j位中表示活跃状态为活跃的数值的个数,以获得所述第一活跃天数。
在一实施例中,所述装置还可以包括:
第三确定模块,用于在统计得到所述第一活跃天数之后,收到用于请求获取所述目标用户账号在第二查询日期之前的第三预设时段内的第二活跃天数的请求时,确定所述第一状态中对应于第一时段的数值以外的其他数值中用于表示活跃状态为活跃的数值的个数的第一数量值,并确定以二进制形式表达的状态数据中对应于第二时段的数值中用于表示活跃状态为活跃的数值的个数的第二数量值;其中,所述第三预设时段内的天数值与所述第二预设时段内的天数值相同,所述第一时段为所述第三预设时段与所述第二预设时段重合的时段,所述第二时段为所述第三预设时段中与所述第二预设时段不重合的时段;
计算模块,用于根据所述第一活跃天数、所述第一数量值和所述第二数量值计算得到所述第二活跃天数。
在一实施例中,所述第三确定模块可以包括:
第二确定单元,用于在统计得到所述第一活跃天数之后,收到用于请求获取所述目标用户账号在第二查询日期之前的第三预设时段内的第二活跃天数的请求时,确定所述第二查询日期相对所述第一查询日期往前或往后偏移的天数,以获得查询天数偏移数值a;
第三确定单元,用于在所述第二查询日期不在所述第一预设时段内时,如果所述查询天数偏移数值a为负数且大于所述第二预设时段内的天数值y1的负值,则确定第一数量值为零,并统计所述状态数据的第n+1位至第n+|a|位中表示活跃状态为活跃的数值的个数,以获得第二数量值;如果所述查询天数偏移数值a为正数且小于所述第三预设时段内的天数值,则统计所述状态数据的第n+1-a位至第n位中表示活跃状态为活跃的数值的个数,以获得第一数量值,并确定第二数量值为零;
第四确定单元,用于在所述第二查询日期在所述第一预设时段内时,如果所述查询天数偏移数值a为负数且大于所述第二预设时段内的天数值的负值,则统计所述状态数据的第m位至第m+|a|位中表示活跃状态为活跃的数值的个数,以获得第一数量值,并统计所述状态数据的第n+1位至第n+|a|位中表示活跃状态为活跃的数值的个数,以获得第二数量值;如果所述查询天数偏移数值a为正数且小于所述第三预设时段内的天数值,则统计所述状态数据的第n+1-a位至第n位中表示活跃状态为活跃的数值的个数,以获得第一数量值,并统计所述状态数据的第m-a位至第m-1位中表示活跃状态为活跃的数值的个数,以获得第二数量值。
其中,m和n用于指示所述第一状态数据为以二进制形式表达的状态数据中的第m位至第n位,m为整数且0≤m<n,n为整数且m<n≤64。
在一实施例中,所述装置还可以包括:
第二统计模块,用于在统计所得的第一活跃天数为零时,根据所述状态数据统计所述第一预设时段内的第三活跃天数;
输出模块,用于输出所述第一活跃天数和所述第三活跃天数。
在一实施例中,所述输出模块还可以用于输出用于提示所述第一活跃天数为零的原因的提示信息。在所述第二预设时段在所述第一预设时段之外且在所述第一预设时段之后、或者所述第二预设时段与所述第一预设时段存在重合的时段,但目标用户账号在该重合的时段中未发生过活跃时,所述提示信息可以包括用于表示所述目标用户账号确实在当前查询时段未发生过活跃的信息。在所述第二预设时段在所述第一预设时段之外且在所述第一预设时段之前,所述提示信息可以包括用于表示系统未记录有当前查询时段对应的活跃状态数据、和/或当前查询时段已超出可查询时段范围的信息。
在一实施例中,所述装置还可以包括:
第一日期确定模块,用于根据所述参考时间和第一偏移数值确定以二进制形式表达的状态数据中每一位数值对应的实际日期;
第二日期确定模块,用于根据所述状态数据中每一位数值与实际日期的对应关系,确定所述第一状态数据中表示活跃状态为活跃的数值对应的实际日期,以获得所述目标用户账号在所述第二预设时段内发生活跃的活跃日期。
在一实施例中,所述装置还可以包括:
发送模块,用于向推荐系统发送所述第一活跃天数和所述活跃日期,以使所述推荐系统根据所述目标用户账号在活跃日期产生的用户行为数据从若干产品中筛选出用于向所述目标用户账号发送的产品集。
上述装置中各个模块和单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元。
与前述数据处理方法对应,本发明还提供了一种数据处理的电子设备,所述电子设备可以包括:
处理器;
存储器,用于存储可由所述处理器执行的计算机程序;
其中,所述处理器执行所述程序时实现前述任一方法实施例中的数据处理方法的步骤。
本发明实施例所提供的数据处理装置的实施例可以应用在所述电子设备上。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在电子设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图11所示,图11是本发明根据一示例性实施例示出的一种电子设备的硬件结构图,除了图11所示的处理器、内存、网络接口、以及非易失性存储器之外,所述电子设备还可以包括其他硬件,如摄像模块、显示模块;或通常根据该电子设备的实际功能,还可以包括其他硬件,对此不再赘述。
与前述方法实施例对应,本发明实施例还提供一种机器可读存储介质,其上存储有程序,所述程序被处理器执行时实现前述任一方法实施例中的数据处理方法的步骤。
本发明实施例可采用在一个或多个包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。所述机器可读存储介质可以包括:永久性或非永久性的可移动或非可移动媒体。所述机器可读存储介质的信息存储功能可以由任何可以实现的方法或技术实现。所述信息可以是计算机可读指令、数据结构、程序的模型或其它数据。
另外,所述机器可读存储介质包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其它类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其它内存技术的记忆体、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其它光学存储器、磁盒式磁带、磁带磁盘存储或其它磁性存储设备或可用于存储可被计算设备访问的信息的其它非传输介质。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本发明旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。