掌桥专利:专业的专利平台
掌桥专利
首页

对象获取方法、装置、电子设备及存储介质

文献发布时间:2023-06-19 19:28:50


对象获取方法、装置、电子设备及存储介质

技术领域

本公开涉及互联网技术领域,尤其涉及一种对象获取方法、装置、电子设备、存储介质及程序产品。

背景技术

数据去重技术是互联网应用中至关重要的技术。数据的去重已经广泛的应用于各种各样的应用系统,但由于系统的不同往往采用的去重方式也是不同的,因此需要根据业务的需求选择符合自己业务的去重方式。比如在抠像类视频模板合集业务中,用户在分页拉取模板内容时,不能看到重复的内容,因此需要根据模板ID对返回给客户端的内容进行去重,保证去重后用户看不到重复的数据。

目前常用的数据去重方法为前端或客户端去重,即由前端或客户端记录服务端已经返回的数据ID,用户再次获取数据时,根据记录的数据进行去重。但此方法有可能出现断页的情况,比如当前页返回的数据,已经全部在历史页面中有出现,此时就会发生断页的情况。

发明内容

本公开提供一种对象获取方法、装置、电子设备、存储介质及程序产品,以至少解决现有去重方法容易发生断页的问题。本公开的技术方案如下:

根据本公开实施例的第一方面,提供一种对象获取方法,包括:

接收客户端发送的对象加载请求;

在所述对象加载请求携带有所述客户端当前展示的对象列表对应的版本标识,以及所述当前展示的对象列表中最后一个对象的对象标识的情况下,基于所述版本标识和所述对象标识,查询预先设置的配置中心,得到目标对象列表;所述配置中心存储有服务器定时筛选得到的历史对象列表和所述历史对象列表对应的版本标识;

返回所述目标对象列表至所述客户端。

在一示例性实施例中,所述历史对象列表中的每个对象具有对应的对象标识;所述基于所述版本标识和所述对象标识,查询预先设置的配置中心,得到目标对象列表,包括:

基于所述版本标识,从所述配置中心存储的历史对象列表中确定出与所述客户端当前展示的对象列表对应的目标历史对象列表;

从所述目标历史对象列表中,筛选出处于所述对象标识对应的对象之后的其他对象;

根据所述其他对象,得到所述目标对象列表。

在一示例性实施例中,所述接收客户端发送的对象加载请求之后,还包括:

检测所述对象加载请求的携带信息;

在所述对象加载请求未携带所述客户端当前展示的对象列表对应的版本标识,以及所述当前展示的对象列表中最后一个对象的对象标识的情况下,从所述配置中心中获取符合预设要求的版本的对象列表,作为所述目标对象列表。

在一示例性实施例中,所述方法还包括:

在所述配置中心不存在所述客户端当前展示的对象列表对应的版本标识的情况下,从所述配置中心中获取符合预设要求的版本的对象列表,作为所述目标对象列表。

在一示例性实施例中,所述方法还包括:

定时从候选对象中筛选出符合预设条件的筛选后对象列表,并生成针对所述筛选后对象列表的版本标识;

将所述筛选后对象列表及所述筛选后对象列表的版本标识写入所述配置中心,对应作为所述配置中心存储的历史对象列表和所述历史对象列表对应的版本标识。

在一示例性实施例中,所述定时从候选对象中筛选出符合预设条件的筛选后对象列表,并生成针对所述筛选后对象列表的版本标识,包括:

针对每次筛选出的筛选后对象列表,确定前一次筛选出的筛选后对象列表的版本标识;

对所述前一次筛选出的筛选后对象列表的版本标识执行加一操作,得到当前筛选出的筛选后对象列表的版本标识。

在一示例性实施例中,所述将所述筛选后对象列表及所述筛选后对象列表的版本标识写入所述配置中心,包括:

获取所述配置中心的存储阈值及所述配置中心的当前存储列表数目;

当所述当前存储列表数目等于所述存储阈值时,将所述筛选后对象列表添加至所述配置中心,并删除当前存储列表中存储时间最早的对象列表。

根据本公开实施例的第二方面,提供一种对象获取装置,包括:

接收单元,被配置为执行接收客户端发送的对象加载请求;

查询单元,被配置为执行在所述对象加载请求携带有所述客户端当前展示的对象列表对应的版本标识,以及所述当前展示的对象列表中最后一个对象的对象标识的情况下,基于所述版本标识和所述对象标识,查询预先设置的配置中心,得到目标对象列表;所述配置中心存储有服务器定时筛选得到的历史对象列表和所述历史对象列表对应的版本标识;

返回单元,被配置为执行返回所述目标对象列表至所述客户端。

在一示例性实施例中,所述历史对象列表中的每个对象具有对应的对象标识;所述查询单元,具体被配置为执行基于所述版本标识,从所述配置中心存储的历史对象列表中确定出与所述客户端当前展示的对象列表对应的目标历史对象列表;从所述目标历史对象列表中,筛选出处于所述对象标识对应的对象之后的其他对象;根据所述其他对象,得到所述目标对象列表。

在一示例性实施例中,所述查询单元,还被配置为执行检测所述对象加载请求的携带信息;在所述对象加载请求未携带所述客户端当前展示的对象列表对应的版本标识,以及所述当前展示的对象列表中最后一个对象的对象标识的情况下,从所述配置中心中获取符合预设要求的版本的对象列表,作为所述目标对象列表。

在一示例性实施例中,所述查询单元,还被配置为执行在所述配置中心不存在所述客户端当前展示的对象列表对应的版本标识的情况下,从所述配置中心中获取符合预设要求的版本的对象列表,作为所述目标对象列表。

在一示例性实施例中,所述装置还包括:

筛选模块,被配置为执行定时从候选对象中筛选出符合预设条件的筛选后对象列表,并生成针对所述筛选后对象列表的版本标识;

写入模块,被配置为执行将所述筛选后对象列表及所述筛选后对象列表的版本标识写入所述配置中心,对应作为所述配置中心存储的历史对象列表和所述历史对象列表对应的版本标识。

在一示例性实施例中,所述筛选模块,还被配置为执行针对每次筛选出的筛选后对象列表,确定前一次筛选出的筛选后对象列表的版本标识;对所述前一次筛选出的筛选后对象列表的版本标识执行加一操作,得到当前筛选出的筛选后对象列表的版本标识。

在一示例性实施例中,所述写入模块,还被配置为执行获取所述配置中心的存储阈值及所述配置中心的当前存储列表数目;当所述当前存储列表数目等于所述存储阈值时,将所述筛选后对象列表添加至所述配置中心,并删除当前存储列表中存储时间最早的对象列表。

根据本公开实施例的第三方面,提供一种电子设备,包括:

处理器;

用于存储所述处理器可执行指令的存储器;

其中,所述处理器被配置为执行所述指令,以实现如上任一项所述的方法。

根据本公开实施例的第四方面,提供一种计算机可读存储介质,当所述计算机可读存储介质中的指令由电子设备的处理器执行时,使得所述电子设备能够执行如上任一项所述的方法。

根据本公开实施例的第五方面,提供一种计算机程序产品,所述计算机程序产品中包括指令,所述指令被电子设备的处理器执行时,使得所述电子设备能够执行如上任一项所述的方法。

本公开的实施例提供的技术方案至少带来以下有益效果:

通过在配置中心记录服务器定时筛选得到的对象列表,并为各对象列表赋予对应的版本标识,进而在接收到客户端发送的对象加载请求时,可根据对象加载请求携带的客户端当前展示的对象列表的版本标识和当前展示的对象列表中最后一个对象的对象标识,确定客户端当前所展示的对象列表和展示的最后一个对象,从而可准确地从配置中心中确定出当前所展示的对象列表中未展示的对象,将未返回的对象构成的对象列表,作为目标对象列表,返回给客户端,使用户可继续浏览当前展示的对象列表中未展示的对象,从而避免返回给客户端的对象与客户端已展示的对象重复,出现断页的现象。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。

图1是根据一示例性实施例示出的一种对象获取方法的应用环境图。

图2是根据一示例性实施例示出的一种对象获取方法的流程示意图。

图3是根据一示例性实施例示出的一种目标历史对象列表确定步骤的流程示意图。

图4.1是根据一示例性实施例示出的一种将对象写入配置中心的流程示意图。

图4.2是根据一应用实例示出的一种将视频模板写入配置中心的流程示意图。

图5.1是根据一示例性实施例示出的一种从配置中心读取对象的流程示意图。

图5.2是根据一应用实例示出的一种从配置中心读取视频模板的流程示意图。

图6是根据一示例性实施例示出的一种对象获取装置的结构框图。

图7是根据一示例性实施例示出的一种电子设备的框图。

具体实施方式

为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。

需要说明的是,以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。还需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。

数据去重技术在目前的互联网应用系统中应用十分广泛。目前常用的数据去重有前端或客户端去重,基于分布式缓存Redis(Remote Dictionary Server,远程字典服务,一个开源的数据库)的去重等。其中,前端或客户端去重的方法在很多业务系统中有使用,实现方法为前端或客户端记录服务端已经返回的数据ID,用户再次获取数据时,根据记录的数据进行去重。但此方法缺点是有可能出现断页的情况,比如当前页返回的数据,已经全部在历史页面中有出现,此时就会发生断页的情况。

基于分布式缓存Redis的普通去重方法是:使用Redis记录为每个设备ID返回的数据ID列表,用户下次发送数据获取请求时,通过Redis将已经返回给前端或客户端的数据ID过滤掉,保证返回的数据一定是用户没有看到过的。此方案的缺点是:(1)比较依赖于Redis,若Redis服务不稳定比如网络抖动,前端或客户端还是可能出现重复的数据;(2)需要使用Redis记录每个设备ID返回的数据,若请求的每秒查询率(Queries-per-second,QPS)较大,需要大量的内存存储用户已经收到的数据。

还有另一种基于Redis的去重方法是采用Redis的位图(Bitmap,一种数据结构,用于记录大量的0-1状态)进行去重,实现原理为将已经返回给前端或客户端的数据ID转化为bit格式并存储于Redis的Bitmap集合中,每次返回数据列表给前端或客户端前,先利用Bitmap集合进行去重,筛选掉已经返回给客户端或前端的数据。此方案能够高效精确的将大数据中的重复数据筛选掉,降低Redis的存储成本。但此方案的缺点是:比较依赖于Redis,若Redis服务不稳定比如网络抖动,前端或客户端还是可能出现重复的数据。

针对上述问题,本公开提出了一种基于多版本控制的方式进行数据去重,通过在配置中心记录服务器定时筛选得到的对象列表,并为各对象列表赋予对应的版本标识,进而在接收到客户端发送的对象加载请求时,可根据对象加载请求携带的客户端当前展示的对象列表的版本标识和当前展示的对象列表中最后一个对象的对象标识,确定客户端当前所展示的对象列表和展示的最后一个对象,从而可准确地从配置中心中确定出当前所展示的对象列表中未展示的对象,将未返回的对象构成的对象列表,作为目标对象列表,返回给客户端,使用户可继续浏览当前展示的对象列表中未展示的对象,从而避免返回给客户端的对象与客户端已展示的对象重复,出现断页的现象。同时,该方法无需为每个设备ID记录下发过的对象列表,也无需使用分布式的缓存Redis,从而可以减少网络开销,避免Redis服务不稳定导致客户端出现重复对象的问题。

本公开实施例提供的对象获取方法,可以应用于如图1所示的应用环境中。其中,客户端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。在本公开的应用场景中,使用客户端102的用户在进行页面浏览的过程中,可发送对象加载请求至服务器104,服务器104接收到该对象加载请求后,可根据对象加载请求携带的信息确定返回给客户端102的目标对象列表。具体地,若客户端102发送的对象加载请求携带有客户端102当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识,则服务器104可根据对象加载请求所携带的版本标识和对象标识,查询预先设置的配置中心106,得到目标对象列表,然后返回目标对象列表至客户端102,使客户端102的用户可浏览目标对象列表中的对象。

其中,客户端102可以安装于各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备中,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

图2是根据一示例性实施例示出的一种对象获取方法的流程示意图,如图2所示,以该方法应用于图1中的服务器104为例进行说明,包括以下步骤:

在步骤S210中,接收客户端发送的对象加载请求。

其中,对象加载请求可以理解为客户端102的用户在进行页面浏览的过程中需要获取在页面中展示的对象的请求。

其中,对象可以为视频、图片、音频和文本等。

在步骤S220中,在对象加载请求携带有客户端当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识的情况下,基于版本标识和对象标识,查询预先设置的配置中心,得到目标对象列表;配置中心存储有服务器定时筛选得到的历史对象列表和历史对象列表对应的版本标识。

其中,版本标识为表征对象列表的唯一性的标识。

其中,对象标识为表征对象唯一性的标识,对象列表中的每个对象均具有对应的对象标识,例如,当对象为视频时,对象标识可以为视频ID;当对象为视频模板时,对象标识可以为视频模板ID。

其中,配置中心可以理解为一种统一管理各种应用配置的基础服务组件。

在另一示例性实施例中,在步骤S210接收客户端发送的对象加载请求之后,还包括:检测对象加载请求的携带信息;在对象加载请求未携带客户端当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识的情况下,从配置中心中获取符合预设要求的版本的对象列表,作为目标对象列表。

其中,符合预设要求的版本可以为最新版本。

具体实现中,对象合集的生成需要服务器104定时从大量的对象的候选集中筛选出符合预设条件的筛选后对象,每次筛选得到的筛选后对象可构成一个筛选后对象列表,每得到一个筛选后对象列表,可将该筛选后对象列表写入配置中心,并为该筛选后对象列表赋予一个版本标识,通过版本标识标记每次得到的不同的筛选后对象列表,由此得到存储有历史对象列表和历史对象列表的版本标识的配置中心。

进一步地,服务器104接收到客户端102发送的对象加载请求后,可检测对象加载请求携带的信息,即检测对象加载请求是否携带客户端102当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识,由此判断客户端102是在页面浏览的过程中为继续浏览而发送的对象加载请求,还是首次进入当前页面所发送的对象加载请求。

更具体地,若对象加载请求携带有客户端102当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识,表明客户端102是在页面浏览的过程中为继续浏览而发送的对象加载请求,此时,可基于版本标识和对象标识,查询已存储历史对象列表的配置中心106,确定客户端102当前展示的对象列表对应的目标历史对象列表以及最后一个对象在目标历史对象列表中的位置,从而确定待返回给客户端102的目标对象列表。

若对象加载请求未携带客户端102当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识,表明客户端102为首次进入当前页面所发送的对象加载请求,此时从配置中心106中获取最新版本的对象列表,作为目标对象列表。

在步骤S230中,返回目标对象列表至客户端。

具体实现中,服务器104在从配置中心106确定出目标对象列表后,则可将目标对象列表发送给客户端102,使客户端102展示目标对象列表,供用户查看。

上述对象获取方法中,通过在配置中心记录服务器定时筛选得到的对象列表,并为各对象列表赋予对应的版本标识,进而在接收到客户端发送的对象加载请求时,可根据对象加载请求携带的客户端当前展示的对象列表的版本标识和当前展示的对象列表中最后一个对象的对象标识,确定客户端当前所展示的对象列表和展示的最后一个对象,从而可准确地从配置中心中确定出当前所展示的对象列表中未展示的对象,将未返回的对象构成的对象列表,作为目标对象列表,返回给客户端,使用户可继续浏览当前展示的对象列表中未展示的对象,从而避免返回给客户端的对象与客户端已展示的对象重复,出现断页的现象。

在一示例性实施例中,如图3所示,在步骤S220中,基于版本标识和对象标识,查询预先设置的配置中心,得到目标对象列表,具体可以通过以下步骤实现:

步骤S221,基于版本标识,从配置中心存储的历史对象列表中确定出与客户端当前展示的对象列表对应的目标历史对象列表;

步骤S222,从目标历史对象列表中,筛选出处于对象标识对应的对象之后的其他对象;

步骤S223,根据其他对象,得到目标对象列表。

具体实现中,客户端每次展示的对象均来自配置中心,因此,可以基于客户端当前展示的对象列表的版本标识,从配置中心中确定出与客户端当前展示的对象列表对应的历史对象列表,作为目标历史对象列表,即将配置中心中版本标识与客户端当前展示的对象列表的版本标识相同的历史对象列表作为目标历史对象列表。之后,从目标历史对象列表中,筛选出处于对象标识对应的对象之后的其他对象,将其他对象形成为目标对象列表。

其中,确定目标对象列表时,还需考虑返回给客户端的对象限制条件,例如,若设定每次返回给客户端的对象为30个,则需要从目标历史对象列表中处于对象标识对应的对象之后的其他对象中,从前至后筛选出30个对象,构成目标对象列表。

需要说明的是,当对象加载请求携带的客户端当前展示的对象列表中最后一个对象的对象标识与目标历史对象列表中最后一个对象的对象标识相同时,表明目标历史对象列表中的所有对象均已在客户端进行了展示,即其他对象为零,此时可获取配置中心中的最新版本的对象列表,作为目标对象列表,返回给客户端。

本实施例中,根据版本标识从配置中心中确定出与所述客户端当前展示的对象列表对应的目标历史对象列表,然后确定客户端展示的最后一个对象在目标历史对象列表中的对应位置,从而可准确地从配置中心中确定出客户端当前所展示的对象列表中未展示的对象,将未返回的对象构成的对象列表,作为目标对象列表,返回给客户端,使用户可继续浏览当前展示的对象列表中未展示的对象,从而避免返回给客户端的对象与客户端已展示的对象重复,出现断页的现象。

在一示例性实施例中,上述对象获取方法还包括:在配置中心不存在客户端当前展示的对象列表对应的版本标识的情况下,从配置中心中获取符合预设要求的版本的对象列表,作为目标对象列表。

具体实现中,在对象加载请求携带有客户端当前展示的对象列表对应的版本标识之后,若配置中心不存在客户端当前展示的对象列表对应的版本标识,即从配置中心中未查找到与客户端当前展示的对象列表对应的历史对象列表时,可从配置中心中获取最新版本的对象列表,作为目标对象列表,返回给客户端。

本实施例中,考虑到对象加载请求携带有客户端当前展示的对象列表对应的版本标识,但配置中心中不存在相对应的历史对象列表的情况,提出了将最新版本的对象列表,作为目标对象列表,返回给客户端的解决方法,避免客户端无对象可展示的情况出现。

在一示例性实施例中,上述对象获取方法还包括:

步骤S310,定时从候选对象中筛选出符合预设条件的筛选后对象列表,并生成针对筛选后对象列表的版本标识;

步骤S320,将筛选后对象列表及筛选后对象列表的版本标识写入配置中心,对应作为配置中心存储的历史对象列表和历史对象列表对应的版本标识。

具体实现中,候选对象可能在不断更新,因此,为确保可以向客户端返回最新的符合预设条件的对象,可通过设置定时任务(例如,定时10分钟1次),使服务器定时从候选对象中筛选出符合预设条件的筛选后对象,且每次筛选得到的筛选后对象可构成一个筛选后对象列表,每得到一个筛选后对象列表,可将该筛选后对象列表写入配置中心,并生成一个版本时,赋予该筛选后对象列表,通过版本标识标记每次得到的不同的筛选后对象列表,由此得到存储有历史对象列表和历史对象列表的版本标识的配置中心。

本实施例中,通过将定时筛选得到的筛选后对象列表及筛选后对象列表的版本标识写入配置中心,无需再使用Mysql(一种关系型数据库)进行单独的存储,也无需记录为每个客户端下发过哪些对象,即可实现向每个客户端发送不重复的目标对象列表,减少存储资源的消耗。

进一步地,在一示例性实施例中,步骤S310中定时从候选对象中筛选出符合预设条件的筛选后对象列表,并生成针对筛选后对象列表的版本标识,包括:

步骤S3101,针对每次筛选出的筛选后对象列表,确定前一次筛选出的筛选后对象列表的版本标识;

步骤S3102,对前一次筛选出的筛选后对象列表的版本标识执行加一操作,得到当前筛选出的筛选后对象列表的版本标识。

具体实现中,版本标识可以用序号命名,例如,设前一次筛选出的筛选后对象列表的版本标识为2.0,则确定当前筛选出的筛选后对象列表的版本标识时,可将前一次筛选出的筛选后对象列表的版本标识加一,得到3.0,作为当前筛选出的筛选后对象列表的版本标识。

本实施例中,通过对前一次筛选出的筛选后对象列表的版本标识执行加一操作,得到

当前筛选出的筛选后对象列表的版本标识,使得每次筛选得到的对象列表的版本标识均不5相同,从而可标记不同的对象列表,并且通过加一操作,便于在确定配置中心中存储的最

新版本的对象列表时,可将版本标识最大的对象列表作为最新版本的对象列表。

在一示例性实施例中,步骤S320中将筛选后对象列表及筛选后对象列表的版本标识

写入配置中心,包括:

0步骤S3201,获取配置中心的存储阈值及配置中心的当前存储列表数目;

步骤S3202,当当前存储列表数目等于存储阈值时,将筛选后对象列表添加至配置中心,并删除当前存储列表中存储时间最早的对象列表。

具体实现中,为了降低对象列表对配置中心的存储资源的占用,还可设置存储阈值,

将配置中心存储的对象列表的数目控制在存储阈值范围内。更具体地,在每得到一个新版5本的筛选后对象列表后,可确定配置中心的当前存储列表数目,若当前存储列表数目等于

存储阈值,则如果将新版本的筛选后对象列表存储至配置中心后,配置中心存储的对象列表将超过存储阈值,因此,在将该新版本的筛选后对象列表存储至配置中心的同时,可将配置中心当前存储的对象列表中存储时间最早,即版本最低的对象列表删除,使得配置中心存储的对象列表数目维持在存储阈值范围内。

0本实施例中,在配置中心当前存储的对象列表的数目等于存储阈值时,在将所述筛选

后对象列表添加至所述配置中心的同时,删除当前存储列表中存储时间最早的对象列表,使得配置中心存储的对象列表数目维持在存储阈值范围内,从而实现在降低对象列表对配置中心的存储资源的占用的同时,保持配置中心存储的对象列表为最新的几个版本。

5在一示例性实施例中,为了便于本领域技术人员理解本公开实施例,以下将结合附图的具体示例进行说明。

参考图4.1,为一个实施例中将对象写入配置中心的流程示意图,包括以下步骤:

步骤S410,定时从候选对象中筛选出符合预设条件的筛选后对象列表;

步骤S420,针对每次筛选出的筛选后对象列表,确定前一次筛选出的筛选后对象列表的版本标识;

步骤S430,对前一次筛选出的筛选后对象列表的版本标识执行加一操作,得到当前筛选出的筛选后对象列表的版本标识;

步骤S440,获取配置中心的存储阈值及配置中心的当前存储列表数目;

步骤S450,当当前存储列表数目等于存储阈值时,将筛选后对象列表添加至配置中心,并删除当前存储列表中存储时间最早的对象列表。

例如,如图4.2所示,以候选对象为视频模板为例,将视频模板写入配置中心的过程为:按照定时任务,每隔10分钟从视频模板ID的候选集中进行一次筛选,筛选得到合法的视频模板ID,作为筛选后模板ID列表,为筛选后模板ID列表生成一个版本标识后,将筛选后模板ID列表和筛选后模板ID列表的版本标识存储至配置中心。

参考图5.1,为一个实施例中从配置中心读取对象的流程示意图,包括以下步骤:

步骤S510,接收客户端发送的对象加载请求,并检测对象加载请求的携带信息;

步骤S520,在对象加载请求未携带客户端当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识的情况下,从配置中心中获取符合预设要求的版本的对象列表,作为目标对象列表;

步骤S530,在对象加载请求携带有客户端当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识的情况下,基于版本标识和对象标识,查询预先设置的配置中心,得到目标对象列表;

步骤S540,在配置中心不存在客户端当前展示的对象列表对应的版本标识的情况下,从配置中心中获取符合预设要求的版本的对象列表,作为目标对象列表;

步骤S550,返回目标对象列表至客户端。

例如,如图5.2所示,仍以候选对象为视频模板为例,从配置中心读取目标模板列表的过程为:当接收到客户端发送的模板加载请求时,对模板加载请求的携带信息进行解析,获取客户端当前展示的模板列表对应的版本标识和当前展示的模板列表中最后一个模板的模板ID,根据版本标识查询配置中心。若配置中心不存在该版本标识或者模板加载请求未携带版本标识(即客户端为第一次发送模板加载请求),则获取最新版本的模板ID列表,构建返回结果,返回给客户端。若配置中心存在该版本标识,则确定客户端当前展示的模板列表中最后一个模板在配置中心对应的目标历史模板ID列表和在该目标历史模板ID列表中的位置,以从目标历史模板ID列表中筛选出未返回过的模板ID,构成目标模板ID列表,构建返回结果,返回给客户端。其中,构建的返回结果包括目标模板ID列表的版本标识和目标模板ID列表中各模板的模板ID。

上述实施例提供的方法,具有如下有益效果:(1)使用多版本的数据去重方式,不用记录为每个设备id下发过的模板列表;(2)此方案的去重实现起来比较简单,不会出现断页的现象,同时不需要使用分布式的缓存Redis,减少网络开销以及Redis的存储;(3)将数据存储在配置中心,不需要使用Mysql单独的存储。

应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。

可以理解的是,本说明书中上述方法的各个实施例之间相同/相似的部分可互相参见,每个实施例重点说明的是与其他实施例的不同之处,相关之处参见其他方法实施例的说明即可。

基于同样的发明构思,本公开实施例还提供了一种用于实现上述所涉及的对象获取方法的对象获取装置。

图6是根据一示例性实施例示出的一种对象获取装置的结构框图。参照图6,该装置包括:

接收单元610,被配置为执行接收客户端发送的对象加载请求;

查询单元620,被配置为执行在对象加载请求携带有客户端当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识的情况下,基于版本标识和对象标识,查询预先设置的配置中心,得到目标对象列表;配置中心存储有服务器定时筛选得到的历史对象列表和历史对象列表对应的版本标识;

返回单元630,被配置为执行返回目标对象列表至客户端。

在一示例性实施例中,历史对象列表中的每个对象具有对应的对象标识;查询单元620,具体被配置为执行基于版本标识,从配置中心存储的历史对象列表中确定出与客户端当前展示的对象列表对应的目标历史对象列表;从目标历史对象列表中,筛选出处于对象标识对应的对象之后的其他对象;根据其他对象,得到目标对象列表。

在一示例性实施例中,查询单元620,还被配置为执行检测对象加载请求的携带信息;在对象加载请求未携带客户端当前展示的对象列表对应的版本标识,以及当前展示的对象列表中最后一个对象的对象标识的情况下,从配置中心中获取符合预设要求的版本的对象列表,作为目标对象列表。

在一示例性实施例中,查询单元620,还被配置为执行在配置中心不存在客户端当前展示的对象列表对应的版本标识的情况下,从配置中心中获取符合预设要求的版本的对象列表,作为目标对象列表。

在一示例性实施例中,装置还包括:

筛选单元,被配置为执行定时从候选对象中筛选出符合预设条件的筛选后对象列表,并生成针对筛选后对象列表的版本标识;

写入单元,被配置为执行将筛选后对象列表及筛选后对象列表的版本标识写入配置中心,对应作为配置中心存储的历史对象列表和历史对象列表对应的版本标识。

在一示例性实施例中,筛选单元,还被配置为执行针对每次筛选出的筛选后对象列表,确定前一次筛选出的筛选后对象列表的版本标识;对前一次筛选出的筛选后对象列表的版本标识执行加一操作,得到当前筛选出的筛选后对象列表的版本标识。

在一示例性实施例中,写入单元,还被配置为执行获取配置中心的存储阈值及配置中心的当前存储列表数目;当当前存储列表数目等于存储阈值时,将筛选后对象列表添加至配置中心,并删除当前存储列表中存储时间最早的对象列表。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

图7是根据一示例性实施例示出的一种用于实现对象获取方法的电子设备700的框图。例如,电子设备700可以是移动电话、计算机、数字广播终端、消息收发设备、游戏控制台、平板设备、医疗设备、健身设备、个人数字助理等。

参照图7,电子设备700可以包括以下一个或多个组件:处理组件702、存储器704、电源组件706、多媒体组件708、音频组件710、输入/输出(I/O)的接口712、传感器组件714以及通信组件716。

处理组件702通常控制电子设备700的整体操作,诸如与显示、电话呼叫、数据通信、相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。

存储器704被配置为存储各种类型的数据以支持在电子设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令、联系人数据、电话簿数据、消息、图片、视频等。存储器704可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM)、电可擦除可编程只读存储器(EEPROM)、可擦除可编程只读存储器(EPROM)、可编程只读存储器(PROM)、只读存储器(ROM)、磁存储器、快闪存储器、磁盘、光盘或石墨烯存储器。

电源组件706为电子设备700的各种组件提供电力。电源组件706可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。

多媒体组件708包括在所述电子设备700和用户之间的提供输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是固定的光学透镜系统或具有焦距和光学变焦能力。

音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括麦克风(MIC),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括扬声器,用于输出音频信号。

I/O接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。

传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到电子设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700组件的位置改变,用户与电子设备700接触的存在或不存在,设备700

方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被5配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传

感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器、陀螺仪传感器、磁传感器、压力传感器或温度传感器。通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电

子设备700可以接入基于通信标准的无线网络,如WiFi,运营商网络(如2G、3G、4G或0 5G),或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部

广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。

在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(ASIC)、数

字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。

在一示例性实施例中,还提供了一种包括指令的计算机可读存储介质,例如包括指令0的存储器704,上述指令可由电子设备700的处理器720执行以完成上述方法。例如,计

算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。

在一示例性实施例中,还提供了一种计算机程序产品,所述计算机程序产品中包括指令,上述指令可由电子设备700的处理器720执行以完成上述方法。

需要说明的,上述的装置、电子设备、计算机可读存储介质、计算机程序产品等根据方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照相关方法实施例的描述,在此不作一一赘述。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。

应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。

技术分类

06120115926220