一种信息推荐方法、装置及设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种信息推荐方法、装置及设备。
背景技术
近年来,伴随着互联网信息技术的发展和普及,人们通过互联网能够获取到每天最新的信息资讯。***或服务器会为用户推荐或者推荐一些信息,比如:采用诸如互联网的通信网络从大量的内容中利用各种推荐技术推荐筛选后的内容。随着媒体类业务(例如网上新闻应用程序、交友软件、手机点播业务、网络小说阅读业务等)的发展,媒体内容(例如音频、视频、新闻、资讯、网络小说等)的种类越来越繁多,如何为用户推荐最新的且优质的相关内容已经成为多媒体领域中的一个重要问题。
现有技术中,为了向用户推荐最新且优质的信息,***通常会离线计算好一个数据集,按照数据生成时间排序(从新到旧),形成推荐列表,将推荐列表放在线上按照排序进行推荐;当出现新数据时,将新数据***到当前推荐位置的下一个位置,保证优先推荐新增的数据。但是在实际应用值,由于线上的推荐列表是多个用户共用的,当将新数据***到当前推荐数据的下一位置时,会破坏原有推荐列表的优先级顺序,导致再次按照列表进行循环推荐时,影响推荐结果的准确性。
发明内容
有鉴于此,本申请实施例提供了一种信息推荐方法、装置及设备,用于优先推荐最新的信息,且不破坏原有数据的优先级顺序,保证信息推荐结果的准确性。
为解决上述技术问题,本说明书实施例是这样实现的:
本说明书实施例提供的一种信息推荐方法,包括:
获取终端发送的第一信息推荐请求;
根据所述第一信息推荐请求从第一存储区域中读取第一数据,得到第一数据集合,所述第一存储区域为预设的用于存储生成时间晚于预设时刻的数据的区域;
判断所述第一数据集合中的数据的总数量是否满足预设阈值,得到第一判断结果;
当所述第一判断结果表示所述第一数据集合中的数据的总数量不满足所述预设阈值时,根据所述第一信息推荐请求从第二存储区域中读取第二数据,得到第二数据集合;所述第二存储区域为预设的用于存储生成时间早于所述预设时刻的数据的区域;所述第二存储区域与所述第一存储区域不同;
根据所述第一数据集合以及所述第二数据集合,得到第三数据集合;所述第三数据集合中的数据的总数量满足所述预设阈值;
根据所述第三数据集合中的数据,对所述终端进行信息推荐。
本说明书实施例提供的一种信息推荐装置,包括:
信息推荐请求获取模块,用于获取终端发送的第一信息推荐请求;
第一数据读取模块,用于根据所述第一信息推荐请求从第一存储区域中读取第一数据,得到第一数据集合,所述第一存储区域为预设的用于存储生成时间晚于预设时刻的数据的区域;
判断模块,用于判断所述第一数据集合中的数据的总数量是否满足预设阈值,得到第一判断结果;
第二数据读取模块,用于当所述第一判断结果表示所述第一数据集合中的数据的总数量不满足所述预设阈值时,根据所述第一信息推荐请求从第二存储区域中读取第二数据,得到第二数据集合;所述第二存储区域为预设的用于存储生成时间早于所述预设时刻的数据的区域;所述第二存储区域与所述第一存储区域不同;
第三数据集合确定模块,用于根据所述第一数据集合以及所述第二数据集合,得到第三数据集合;所述第三数据集合中的数据的总数量满足所述预设阈值;
信息推荐模块,用于根据所述第三数据集合中的数据,对所述终端进行信息推荐。
本说明书实施例提供的一种信息推荐设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取终端发送的第一信息推荐请求;
根据所述第一信息推荐请求从第一存储区域中读取第一数据,得到第一数据集合,所述第一存储区域为预设的用于存储生成时间晚于预设时刻的数据的区域;
判断所述第一数据集合中的数据的总数量是否满足预设阈值,得到第一判断结果;
当所述第一判断结果表示所述第一数据集合中的数据的总数量不满足所述预设阈值时,根据所述第一信息推荐请求从第二存储区域中读取第二数据,得到第二数据集合;所述第二存储区域为预设的用于存储生成时间早于所述预设时刻的数据的区域;所述第二存储区域与所述第一存储区域不同;
根据所述第一数据集合以及所述第二数据集合,得到第三数据集合;所述第三数据集合中的数据的总数量满足所述预设阈值;
根据所述第三数据集合中的数据,对所述终端进行信息推荐。
本说明书实施例提供的一种计算机可读介质,其上存储有计算机可读指令,所述计算机可读指令可被处理器执行以实现一种信息推荐方法。
本说明书实施例采用的上述至少一个技术方案能够达到以下有益效果:通过获取终端发送的第一信息推荐请求;并根据第一信息推荐请求首先从第一存储区域中读取生成时间晚于预设时刻的第一数据,得到第一数据集合,当第一数据集合中的数据的总数量不满足预设阈值时,再根据第一信息推荐请求从第二存储区域中读取生成时间早于预设时刻的第二数据,得到第二数据集合;根据所述第一数据集合以及所述第二数据集合,得到数据总数量满足预设阈值的第三数据集合并根据第三数据集合中的数据对所述终端进行信息推荐,在保证在对用户终端进行信息推荐时优先推荐时效性较强的第一数据的情况下,不破坏原有的第二数据的优先级顺序,不影响对其他用户的推荐结果,保证信息推荐结果的精确性。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为现有技术中信息推荐方法使用的数据结构存储方式示意图;
图2为本发明书实施例提供的一种信息推荐的场景示意图;
图3为本说明书实施例提供的一种信息推荐方法的流程示意图;
图4为本说明书实施例提供的一种信息推荐方法对应的第一数据读取方法示意图;
图5为本说明书实施例提供的一种信息推荐方法对应的循环读取数据的方法示意图;
图6为本说明书实施例提供的一种信息推荐方法对应的读取数据的方法示意图;
图7为本说明书实施例提供的一种信息推荐方法对应的第一数据以及第二数据的存储方式示意图;
图8为本说明书实施例提供的对应于图3的一种信息推荐装置的结构示意图;
图9为本说明书实施例提供的对应于图3的一种信息推荐设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
随着互联网的发展,利用互联网进行信息推荐或者推荐的场景越来越普遍,例如:网页内容推荐、视频推荐、新闻推荐等。在进行信息推荐时,***通常会离线计算一个数据集,将计算完成的数据集中的数据按照评分规则进行评分,得到优先级顺序,然后将排好序的数据集放到线上按照优先级顺序推荐给终端用户。但是在实际应用中,线上信息推荐或推荐时除了离线计算好完成的数据之外,还会产生一些新的数据,在进行推荐时,用户希望能看到时效性更快更优质的内容;所以如果发现有新的优质内容的时候应该优先推新的优质内容;没有新内容的时候,可能按照内容的热度或者其他打分进行推荐排好序的数据集中的数据。
现有技术中,为了满足上述要求,采用图1中的方式进行推荐:
图1为现有技术中信息推荐方法使用的数据结构存储方式示意图,如图1所示,将新增的元素或者数据(数据11)直接***当前读数(数据2)的下一个,以实现优先显示新增元素或数据。但是为了节省存储空间,多个用户会共用一个推荐列表,基于这个前提,现有技术中将新元素***当前位置的下一位置,会导致在向另一个用户推荐信息时,推荐顺序被打乱,即新增的元素破坏了原有数据的顺序性以及评分排序体系,再次循环时(向另一个用户推荐内容时),导致数据优先级错误,例如:A用户读到了第二个位置,那么新增的元素***A用户读到的下一个位置(第三个位置),如图1中所示,数据11为新增元素或新增数据,当为B用户推荐信息时,会造成为B用户推荐时推荐列表的排序混乱,顺序为:1→2→11→3→4→5,影响了为B用户的推荐结果。另外,当乱序后的列表被多次用于推荐后,新增元素数据11的被推荐次数,会明显高于未***列表的其他新增元素数据,导致后续对于数据11的优先级的评价结果出现异常。
为了解决现有技术中的缺陷,本方案给出了以下实施例:
图2为本发明书实施例提供的一种信息推荐的场景示意图,如图2所示,服务器201接收终端202发送的信息推荐请求,服务器201根据信息推荐请求从线上确定带推荐的信息,并将待推荐的数据推荐给终端202,在终端202的屏幕界面上进行显示相应的信息,供用户观看。其中,服务器201接收到终端202发送的请求之后,如何从线上取出待推荐的数据即是本方案需要详细阐述的内容。
图3为本说明书实施例提供的一种信息推荐方法的流程示意图。从程序角度而言,流程的执行主体可以是服务器。
如图3所示,该流程可以包括以下步骤:
步骤301:获取终端发送的第一信息推荐请求。
本申请实施例中,所述的服务器可以是能够提供数据业务的服务器,包括但不限于:网站服务器、数据中心服务器等。服务器可以采用独立的工作方式(仅一台服务器提供直播数据业务),也可以采用集群式的工作方式。
终端(Terminal)也称终端设备,可以指的是计算机网络中处于网络最***的设备,主要用于用户信息的输入以及处理结果的输出等。所述的终端,可以是用户所使用的手机、平板电脑、智能电视、计算机等具有数据显示功能的终端,在某些实际应用场景中,终端还可以是大型显示设备(如:直播厅中具有大型显示屏的设备),这里并不构成对本申请的限定。
信息推荐请求可以是由终端发出的用于请求信息推荐的消息,服务器可以接收到终端发送的信息推荐请求,从而为终端进行信息推荐。例如:文字内容推荐请求、视频推荐请求、网页推荐请求、产品推荐请求等等。
步骤302:根据所述第一信息推荐请求从第一存储区域中读取第一数据,得到第一数据集合,所述第一存储区域为预设的用于存储生成时间晚于预设时刻的数据的区域。
将存储空间按照预设时刻分为第一存储区域和第二存储区域。
在规定的时间范围内生成的数据在存储时,可以根据时间存储在不同的两个存储区域中,第一存储区域可以指的是用来存储生成时间晚于预设时刻的数据的区域,可以理解为第一存储区域中存储的都是规定时间内的新增数据。***中产生新数据时,每条数据都有对应的生成时间,记录每条新数据的生成时间。延用上述例子,预设时刻为12:00,晚于12:00的数据为:数据1(13:00),数据2(13:30)、数据3(14:00)、数据4(15:00),将这四个数据作为第一数据存储到第一存储区域中。第一数据可以为生成时间晚于预设时刻的数据,这里需要说明的是,第一数据的生成时间晚于预设时刻,还可以限定第一数据生成时间晚于预设时刻且满足预设条件的数据,比如:第一数据可以表示生成时间晚于预设时刻的点击率高于预设阈值的数据。此处,本方案对此不作限定;
第一存储区域中可能存储数据,也可能不存在数据:当不存在生成时间晚于预设时刻的数据时,第一存储区域中就可以不存在数据。
第二存储区域可以指的是用来存储生成时间早于预设时刻的数据的区域,第二存储区域中的第二数据可以是离线计算好的数据,第二数据在存储区域中的存储顺序可以是按照预设评分体系进行统计处理后得到的排序进行存储。
预设时刻可以指的是离线计算好的存储于第二存储区域中的数据的生成时间最晚的一个数据的生成时间。比如:第二存储区域中存在A、B、C和D四个数据,生成时间分别为:A(12:00)、B(13:00)、C(14:00)、D(15:00),此时预设时刻可以为15:00,将设定周期内(比如:一天为一个周期)生成时间晚于15:00的数据作为第一数据存储到第一存储区域中。在本方案中,预设时刻一般可以表示第二存储区域中存储的最后一个数据对应的生成时间。延用前述例子,第二存储区域中最后一个数据为D,对应的数据生成时间为15:00,此时,可以将15:00作为预设时刻。
因此,当服务器获取到终端发送的第一信息推荐请求后,首先会从第一存储区域中读取生成时间晚于预设时刻的第一数据。
步骤303:判断所述第一数据集合中的数据的总数量是否满足预设阈值,得到第一判断结果。
在推荐场景中,都有一个每次刷新/下拉取多少条数据的业务参数;如果取满了就取数完成。此时,每次刷新或拉取的数据的业务参数可以作为预设阈值,比如:每次刷新或拉取的数据的业务参数为5,则可以认为预设阈值为5。
从第一数据集合中读取到第一数据之后,需要判断第一数据集合中的第一数据的总数量是否满足预设阈值,这里所述的预设阈值可以表示的是预先设定的每次推荐给终端的信息的数量,比如:预先设定每次推荐5条信息给终端,那么预设阈值可以是5,每读取5条数据,则将5条数据对应的信息在终端进行推荐。
步骤304:当所述第一判断结果表示所述第一数据集合中的数据的总数量不满足所述预设阈值时,根据所述第一信息推荐请求从第二存储区域中读取第二数据,得到第二数据集合;所述第二存储区域为预设的用于存储生成时间早于所述预设时刻的数据的区域;所述第二存储区域与所述第一存储区域不同。
当第一数据集合中的第一数据的总数量不满足预设阈值时(比如:预设每次推荐数量为5条,此时取到的第一数据的总数量为3条),需要继续读取数据,此时,可以从预设时刻之前数据集合中进行读取,预设时刻之前的数据集合存储在第二存储区域中,第二存储区域中的数据具有排序顺序,其排序的依据可以是根据时间进行排序,也可以是根据点击/浏览热度进行排序,还可以是根据预设打分规则进行打分,并根据分数大小进行的排序,此处,本方案并不对第二存储区域中的排序依据进行限定。
需要说明的是,本方案中采用两个不同的存储区域分别存储不同时间段的数据,预设时刻之前的数据也可以叫做旧数据,可以存储到第二存储区域中,预设时刻之后的数据也可以叫做新数据,可以存储到第一存储区域中。存储区域可以理解为是用于存储数据的存储区域/存储空间,比如:数据库、数据表等。其中,第一存储区域与第二存储区域可以同属于一个数据库,也可以属于不同的数据库,但是第一存储区域与第二存储区域属于不同的两个存储区域。
步骤305:根据所述第一数据集合以及所述第二数据集合,得到第三数据集合;所述第三数据集合中的数据的总数量满足所述预设阈值。
从第一数据集合以及所述第二数据集合中的读取设定数量的数据放入第三数据集合中。比如:从第一数据集合中读取到的数据为{数据1、数据2、数据3},从第二数据集合中读取到的数据为{数据4、数据5、数据6、数据7、数据8},假设预设阈值为5,则第三数据集合中的数据可以为{数据1、数据2、数据3、数据4、数据5}。
步骤306:根据所述第三数据集合中的数据,对所述终端进行信息推荐。
将读取到的数据对应的信息在发送信息推荐请求的终端上进行显示。
图1中的方法,通过获取终端发送的第一信息推荐请求;并根据第一信息推荐请求首先从第一存储区域中读取生成时间晚于预设时刻的第一数据,得到第一数据集合,当第一数据集合中的数据的总数量不满足预设阈值时,再根据第一信息推荐请求从第二存储区域中读取生成时间早于预设时刻的第二数据,得到第二数据集合;根据所述第一数据集合以及所述第二数据集合,得到数据总数量满足预设阈值的第三数据集合并根据第三数据集合中的数据对所述终端进行信息推荐,在保证在对用户终端进行信息推荐时优先推荐时效性较强的第一数据的情况下,不破坏原有的第二数据的优先级顺序,不影响对其他用户的推荐结果,保证信息推荐结果的精确性。
基于图3的方法,本说明书实施例还提供了该方法的一些具体实施方式,下面进行说明。
在实际应用中,获取终端发送的第一信息推荐请求之后,还可以包括;
根据所述第一信息推荐请求判断第一存储区域中是否存在生成时间晚于预设时刻的第一数据;
若不存在,则直接从第二存储区域中取第二数据,得到第二数据集合;
若存在,则从第一存储区域中按照第一读取顺序取出第一数据,得到第一数据集合。
所述得到第一判断结果之后,还可以包括:
当所述第一判断结果表示所述第一数据集合中的数据的总数量满足所述预设阈值时,根据所述第一数据集合中的数据,对所述终端进行信息推荐。
在实际应用中,如果新数据的数量足够多,可能会出现新数据的数量就能够满足预设阈值,此时,则不需要再取旧数据,比如:第一数据集合中的数据总量为10条,预设阈值为5条,此时,可以直接从第一数据集合中按照顺序取出五条数据,对所述终端进行信息推荐即可。这里需要说明的是,当第一数据集合中的数据总量大于预设阈值时,读取数据的顺序可以根据实际情况进行设定。
在具体取数据的过程中,所述根据所述第一信息推荐请求从第一存储区域中读取第一数据,具体可以包括:
确定所述第一存储区域中用于存储初始数据的第一存储地址;
从所述第一存储地址开始,按照预先设置的第一读取顺序,依序读取所述第一存储区域中每个存储地址所存储的第一数据;所述第一存储区域中的第一数据在存储时,按照预设的第一存储顺序进行存储,所述第一存储顺序与所述第一读取顺序相同。
存储区域中可以设置多个存储位置/地址,为了方便存储,可以将存储空间中的存储位置用十六进制给存储位置的字节地址进行编号,比如:其地址编号可以从0000到FFFF,具有顺序性。
在取数时,首先需要确定第一存储区域中用于存储初始数据的第一存储地址,将第一存储位置作为读取数据的是起始位置。预先设置的第一读取顺序可以表示的是第一数据的第一存储顺序。预设的第一存储顺序可以是按照数据生成时间的先后顺序作为存储顺序,比如:第一数据为:数据1(生成时间为8:00)、数据2(生成时间为9:00)、数据3(生成时间为10:00)、数据4(生成时间为11:00),此时将生成时间最早的数据1存储在起始位置,然后按照时间顺序依次存储数据2-4,第一数据的存储顺序可以表示为:数据1、数据2、数据3、数据4,假设读取顺序与存储顺序相同,则在取数时的读取顺序也为数据1、数据2、数据3、数据4。值得说明的是,取数时的读取顺序也可以与存储的顺序不相同,根据实际需要进行设定,此处不作限定。
在具体读取第一数据时,所述按照预先设置的第一读取顺序,依序读取所述第一存储区域中每个存储地址所存储的第一数据,具体可以包括:
创建第一游标,所述第一游标指向所述第一存储地址;
确定所述第一存储区域中各个存储地址对应的地址编号;
移动所述第一游标按照所述第一存储区域中各个存储地址对应的地址编号依序读取所述第一存储区域中每个存储地址所存储的第一数据。
游标可以认为是一个队列或数据集上的表示位,用来表示数据已经读到的位置,也可以理解为指针。第一游标可以定义为用于取新数据的游标。
存储区域中的每个存储地址都可以设置对应的地址标号,比如:采用十六进制进行编号或者采用十进制按照顺序进行编号。
从第一存储区域中取完第一数据(新数据)之后,当新数据数量不满足推荐或推荐的预设阈值,可以继续从第二存储区域中读取第二数据(旧数据),在读取第二数据时,所述根据所述第一信息推荐请求从第二存储区域中读取第二数据,具体可以包括:
确定所述第二存储区域中用于存储初始数据的第二存储地址;
从所述第二存储地址开始,按照预先设置的第二读取顺序,依序读取所述第二存储区域中每个存储地址所存储的第二数据;所述第二存储区域中的第二数据在存储时,按照预设的第二存储顺序进行存储,所述第二存储顺序与所述第二读取顺序相同。
更为具体地,所述按照预先设置的第二读取顺序,依序读取所述第二存储区域中每个存储地址所存储的第二数据,具体可以包括:
创建第二游标,所述第二游标指向所述第二存储地址;
确定所述第二存储区域中各个存储地址对应的地址编号;
移动所述第二游标按照所述第二存储区域中各个存储地址对应的地址编号依序读取所述第二存储区域中每个存储地址所存储的第二数据。
需要说明的是,第二游标可以定义为用于取第二数据的游标。按照预先设置的读取顺序,依序读取所述存储区域中每个存储地址所存储的数据时,依照的顺序可以是按照地址编号的递增顺序进行读取,也可以是按照地址编号的降序进行读取,读取的规则可以根据实际情况进行设置,本方案对此不作限定。
为了可以更好地理解提取第一数据和第二数据的方法,可以结合图4进行补充阐述:
图4为本说明书实施例提供的一种信息推荐方法对应的第一数据读取方法示意图。如图4所示,新数据/第一数据为new_1……new_n,旧数据/第二数据为old_1、old_2、old_3、old_4……,其中,第一数据存储于第一区域401中,第二数据存储于第二区域402中,在具体取数时,创建了两个游标,分别为第一游标new和第二游标old,数据1(new_1)存储在第一存储区域存储初始数据的第一存储地址上。移动第一游标按照第一存储区域中各个存储地址对应的地址编号依序读取所述第一存储区域中每个存储地址所存储的第一数据。如图4所示,new游标与old游标取数的方向相反。每次取数的时候,需要优先取新数据,将new游标/指针向上按照地址编号移动取数,直到new指针移动到最上边,即将第一数据全部取完,如果第一数据取完之后,数量不满足预设阈值,此时还需要继续取数,则向下移动old指针,按照地址编号依序取数。
通过上述的方法步骤,保证将第一数据和第二数据存储在不同的存储区域中,在取数时,优先读取第一数据,然后再按照优先级顺序读取第二数据,在保证在对用户终端进行信息推荐时优先推荐时效性较强的第一数据的情况下,不破坏原有的第二数据的评分体系或者排序顺序,不影响对其他用户的推荐结果。
实际应用场景中,服务器可以接收到不同用户的信息推荐请求,也可以接收同一终端发送的多次请求。比如:用户A在某视频APP中请求推荐视频,在查看视频时,会刷新、重复点击推荐按钮或者下拉,此时,每刷新、点击相关按钮或下拉一次可以被认为是发出再一次的信息推荐请求,因此,所述根据所述第三数据集合中的数据,对所述终端进行信息推荐之后,还可以包括:
获取所述终端发送的第二信息推荐请求;
确定所述第一数目条数据中最后一条数据对应的第一地址编号;
以所述第一地址编号为基准,根据所述第二信息推荐请求,移动所述第二游标从所述第一地址编号对应的存储位置的下一个存储位置开始按照预设读取顺序依次读取数量满足所述预设阈值的数据;
将所述数量满足所述预设阈值的数据推荐至所述终端。
当服务器接收到再一次的信息推荐请求时,需要确定上一次服务器读取数据的位置,接着上一次的位置继续读取数据进行推荐,这样才可以避免再次将用户刚看过的内容接着推荐给用户。
比如:服务器接收到第一信息推荐请求时,从线上数据库中依次选取的数据为{数据1、数据2、数据3、数据4、数据5},确定最后一条数据(数据5)对应的地址编号为地址5,当服务器接收到第二信息推荐请求时,服务器从数据5对应的地址编号5为基准,移动第二游标从所述第一地址编号(地址5)对应的存储位置的下一个存储位置地址6开始按照预设读取顺序依次读取数量满足所述预设阈值的数据{数据6、数据7、数据8、数据9、数据10}。
进一步地,所述移动所述第二游标从所述第二地址信息往后依次读取满足所述预设阈值条数据,具体可以包括:
移动所述第二游标从所述第二存储区域中依次读取第二数目条数据,直到读取完所述第二存储区域中最后存储的数据;
判断所述第二数目条数据是否满足所述预设阈值,得到第二判断结果;
当所述第二判断结果表示所述第二数目条数据满足所述预设阈值时,根据所述第二数目条数据,对所述终端进行信息推荐;
当所述第二判断结果表示所述第二数目条数据不满足所述预设阈值时,继续移动所述第二游标从所述第一存储区域中按照预先设置的第三读取顺序依序读取第三数目条数据,根据所述第三数目条数据和所述第二数目条数据,对所述终端进行信息推荐,所述第三数目条数据与所述第二数目条数据的数据总数量之和等于所述预设阈值,所述第三读取顺序与所述第一读取顺序相反。
在实际的推荐或推荐场景中,在***刚上线或者处于冷启动状态时,由于次数线上数据库中存储的内容偏少,当线上数据库中存储的数据已完全推荐给用户后,不能因为没有数据就导致用户终端上没有内容可显示而出现白屏此时,可以采用循环推荐的方法,具体方式可以是:移动第二游标从所述第二存储区域中依次读取第二数目条数据,直到读取完所述第二存储区域中最后存储的数据,此时判断取出的数据是否满足推荐的预设阈值,如果满足,可以直接进行推荐,如果不满足,就需要继续取数据,为了方便理解,可以结合图5和图6进行说明:
图5为本说明书实施例提供的一种信息推荐方法对应的循环读取数据的方法示意图。如图5所示,第一游标new已经移动到最上边,可以认为已经将第一区域中的数据全部取完,第二游标已经移动到最下边,可以认为第二存储区域中的数据也已经全部被读取完,此时,若读取的数据的总数量仍然不满足预设阈值,可以采用循环推荐的方法,可以将第一游标new和第二游标old重新置为队列最上边位置,并向下移动old游标按照地址编号进行取数。例如:由于***刚上线,线上数据库中存储的数据较少,第一存储区域中存储的数据有数据1,数据2,第二存储区域中存储有数据3、数据4,当移动第一游标取完数据1和数据2(取数顺序为先取数据1,再取数据2),移动第二游标取完数据3和数据4(取数顺序为先取数据3,再取数据4)之后仍然无法满足信息推荐预设的阈值6,此时就需要移动第二游标从第一存储区域中依次读取数据2、数据1,此时才满足预设阈值,此时,循环取数时从第一存储区域中读取数据的顺序与第一信息推荐请求对应的从第一存储区域中取数的顺序相反。不过,作为可延伸的实施例,无论是否循环取数,取数的顺序可以始终保持一致。
图6为本说明书实施例提供的一种信息推荐方法对应的读取数据的方法示意图。如图6所示,可以按照下列步骤进行数据提取:
步骤601:当获取指令时,将数据按照时间进行排序放在线上数据库中;
步骤602:将创建的第一游标new和第二游标old置于数据库中数据队列的最前面;
步骤603:当存在新增的元素或者数据时,将新增的元素放在数据库中数据队列的最上面;
步骤604:在取数据时,移动第一游标向上取数,移动第二游标向下取数,判断第一游标是否位于数据库中数据队列的头部;
步骤605:若第一游标位于数据库中数据队列的头部,可以认为第一游标已将新数据全部取完,此时移动第二游标向下取旧数据,判断二游标是否位于数据队列尾部;
步骤606:当第二游标位于数据队列尾部时,证明第二游标也将旧数据全部取完,将第一游标和第二游标置于队列最前面进行循环取数;
步骤607:若第二游标没有位于数据队列尾部,则继续移动第二游标进行取数;
步骤608:判断取数是否完成;
步骤609:若完成取数,则结束取数;
步骤610:若没完成取数,则继续采用第二游标取数;
步骤611:若第一游标未位于数据库中数据队列的头部,则移动第一游标向上取数;
步骤612:判断取数是否完成;
步骤613:若取数完成,则结束取数;
步骤614:若取数未完成,则继续取数。
上述上例仅是本申请实施例中在实际应用场景下的一种可能方式,并不构成对本申请的限定。
通过上述方法,当取完线上数据库中第一数据和第二数据之后,仍不满足推荐的预设阈值时,采用循环取数、循环推荐的方法,避免用户终端出现白屏的现象。
在实际应用场景中,从第一存储区域中读取到第一数据,得到第一数据集合,从第二存储区域中读取到第二数据,得到第二数据集合,但是最终推荐的数据的数量只需满足预设阈值即可,因此,从第一数据集合以及第二数据集合中取出预设数量个数据,组成第三数据集合,所述根据所述第一数据集合以及所述第二数据集合,得到第三数据集合,具体可以包括:
将所述第一数据集合中的全部数据放入第三数据集合中;
从所述第二数据集合中读取第一数目条数据,放入所述第三数据集合中,所述第一数目条数据与所述第一数据集合中的全部数据的数量之和等于所述预设阈值,所述第二数据集合中的数据的总数量大于等于第一数目条。
比如:第一数据集合为{数据1、数据2},第二数据集合为{数据3、数据4、数据5、数据6、数据7},推荐信息数量的预设阈值为3条,则首先将第一数据集合中的全部数据放入第三数据集合中,然后从第二数据集合中读取第一条数据(数据3),得到第三数据集合为{数据1、数据2、数据3},并将这三条数据对应的信息推荐到终端进行显示即可。
需要说明的是,得到推荐信息的方法还可以采用以下的实现方式:
确定待推荐信息的预设阈值;
从第一存储区域中取出全部数据,放入待推荐数据集合;
再从第二存储区域中取出第一数目条数据,其中,第一数目条数据与待推荐数据集合中的全部数据的数量之和等于所述预设阈值。
通过上述方法,保证了在读取数据时优先读取第一数据,第一数据读完之后在读取第二数据,保证了给终端推荐信息的时效性。
在实际应用中,所述根据所述第一信息推荐请求从第一存储区域中读取第一数据之前,还可以包括:
确定第一存储区域以及第二存储区域中各个存储地址对应的地址编号;
将生成时间晚于预设时刻的第一数据按照所述生成时间的先后顺序以及所述地址编号依序存储到所述第一存储区域中对应的存储地址上;
将生成时间早于预设时刻的第二数据按照预设排序顺序以及所述地址编号依序存储到所述第二存储区域中对应的存储地址上。
更进一步地,所述将生成时间晚于预设时刻的数据按照所述生成时间的先后顺序以及所述地址编号依序存储到所述第一存储区域中对应的存储地址上,具体可以包括:
确定所述第一存储区域中用于存储初始数据的第一存储地址;
将所述第一数据按照所述生成时间的先后顺序依次存储到所述第一存储区域中对应的存储地址上,所述第一存储区域中的一个地址编号的存储地址对应存储一条所述第一数据,所述第一数据中生成时间最早的数据存储于所述第一存储地址。
为了能够更好地理解第一数据以及第二数据的存储方式,可以结合图6中的方法进行详细阐述:
图7为本说明书实施例提供的一种信息推荐方法对应的第一数据以及第二数据的存储方式示意图。如图7所示,当有新数据时,将新数据存储于旧数据集的头部,新数据/第一数据为new_1……new_n,旧数据/第二数据为old_1、old_2、old_3、old_4……,第一存储区域和第二存储区域可以属于同一个数据库,在进行编号时,可以从第一存储区域按照预设编号规则(比如:按照十六进制进行编号)依序进行编号。在具体进行存储时,将第一数据存储到第一区域中,第二数据存储到第二区域中,第一区域与第二区域不同,保证新增的数据***线上数据库之后,不会破坏旧数据的优先级顺序。
具体地,根据第一数据的生成时间,将获取的数据按照生成时间从早到晚的顺序依序存储到第一存储区域中,在存储时,可以将第一条数据对应存储到第一存储区域中开始存储的第一个存储地址中,数据生成时间以及存储位置的编号进行对应。存储顺序可以与编号顺序相反,也可以与编号顺序相同,第一存储区域中开始存储的第一个存储地址对应的编号可以是图6中的new_1,也可以是new_n,比如:按照时间早晚,将数据1存储到第一存储区域中的第一个存储位置上,按照第一存储区域中地址编号递减的方式将数据2-4存储到第一存储区域中的相应位置上。比如:第一存储区域中的存储位置的地址编号为地址1……地址n,此时,将数据1存储到地址n上,数据n存储到地址1上。也可以按照第一存储区域中地址编号递增的方式将数据2-n存储到第一存储区域中的相应位置上。比如:第一存储区域中的存储位置的地址编号为地址1……地址n,此时,将数据1存储到地址1上,数据n存储到地址n上。
所述将生成时间早于预设时刻的第二数据按照预设排序顺序以及所述地址编号依序存储到所述第二存储区域中对应的存储地址上,具体可以包括:
确定所述第二存储区域中用于存储初始数据的第二存储地址;
确定第二数据的优先级顺序;
将所述第二数据按照所述优先级顺序依次存储到所述第二存储区域中对应的存储地址上,所述第二存储区域中的一个地址编号的存储地址对应存储一条所述第二数据,所述第二数据中所述优先级最高的数据存储到所述第二存储地址,所述第二存储地址与所述第一存储地址相邻。
将第二数据按照预设的评分体系进行排序,得到所述更新数据对应的优先级顺序;
按照所述更新数据对应的优先级顺序将所述更新数据依次存储到所述第二存储区域中。
延用上述例子,第二存储区域中的每个存储位置也具有相应的地址编号,在存储第二数据时,将排好序的数据依次存储到第二存储区域中,例如:第二存储区域中的存储位置的地址编号为地址1、地址2、地址3、地址4、地址5,地址6,将数据old_1存储到地址1上,将数据old_2存储到地址2上,将数据old_3存储到地址3上,将数据old_4存储到地址4上。
需要说明的是,在具体进行数据存储时,只要满足将已经排序的数据按照一定的存储规则进行存储即可,可以将数据依序存储到连续的存储位置上,也可以存储到不连续的存储位置上,比如:延用上述例子,可以将数据old_1存储到地址1上,将数据old_2存储到地址3上,将数据old_3存储到地址5上,将数据old_4存储到地址7上。
另外,第一数据在进行存储时,还存在另一种实施方式:可以根据第二存储区域中的其实存储位置为基准进行存储,具体方法可以包括:
将存储空间中的存储位置进行地址编号;
将编号完成的存储空间分为第一存储区域和第二存储区域;
确定所述第二存储区域中起始存储位置对应的地址编号;
以所述起始存储位置对应的地址编号为基准,将第一数据按照时间顺序依序存储到所述起始存储位置对应的地址编号之前。
比如:存储空间中存储位置编号依次为地址1、地址2、地址3、……地址n,将存储空间分为两个存储区域,第一存储区域中的存储位置地址编号为地址1-地址100,第二存储区域中的存储位置的地址编号为地址101-地址n。在具体存储时,确定第二存储区域中的起始存储位置对应的地址编号为地址101,假设第一数据为数据1-10,则以地址101为基准,将数据1-10存储到地址101之前,即可以将数据1存储到地址100上,数据2存储到地址99上……数据10存储到地址91上。值得强调的是,第一数据在进行存储时,仍然只需要满足将按照时间排序的第一数据按照一定的存储规则存储到第一存储区域中即可。
在实际应用场景中,每天互联网会产生很多的信息内容,因此,需要对第二存储区域中的数据进行时间周期性的更新,也可以进行条件性的更新,比如:设定每天凌晨00:00进行内容更新,或者是按照点击率热度进行更新,当某一信息的热度达到预设阈值时进行更新都可以。具体地,所述根据所述第三数据集合中的数据,对所述终端进行信息推荐之后,还可以包括:
确定所述第二存储区域中的各个第二数据的第一生成时间;
确定所述第一生成时间中的最早时间距离当前时刻的时长;
当所述时长满足数据更新周期时,更新所述第二存储区域中的数据。
所述更新所述第二存储区域中的数据,具体可以包括:
获取第二生成时间对应的时间段内生成的更新数据;所述第二生成时间中的起始时间,晚于所述第二数据的生成时间;
根据预设的评分体系对所述更新数据进行排序,得到排序后的所述更新数据;
从排序后的所述更新数据中,读取排序靠前的预设数目个更新数据;
按照所述预设数目个更新数据对应的优先级顺序将所述更新数据依次存储到所述第二存储区域中。
在更新时,以第一数据中生成时间最早的数据对应的时间为依据,确定所述第一生成时间中的最早时间距离当前时刻的时长;时长满足数据更新周期时,获取第二生成时间对应的时间段内生成的更新数据;根据预设的评分体系对所述更新数据进行排序,得到排序后的所述更新数据;从排序后的所述更新数据中,读取排序靠前的预设数目个更新数据;按照所述预设数目个更新数据对应的优先级顺序将所述更新数据依次存储到所述第二存储区域中。
比如:第一数据的生成时间中,最早的生成时间是:00:01,确定距离当前时间的时长为24个小时,满足更新条件,此时,可以获取第二天00:01之后生成的数据,并按照时间顺序、评分高低等数据进行排序,然后存储到第二存储区域中。
通过上述方法,根据数据生成时间对第二存储区域中的数据进行更新,能够保证第二存储区域中数据的时效性更强,从而推荐效果更及时、准确。
基于同样的思路,本说明书实施例还提供了上述方法对应的装置。图8为本说明书实施例提供的对应于图3的一种信息推荐装置的结构示意图。如图8所示,该装置可以包括:
信息推荐请求获取模块801,用于获取终端发送的第一信息推荐请求;
第一数据读取模块802,用于根据所述第一信息推荐请求从第一存储区域中读取第一数据,得到第一数据集合,所述第一存储区域为预设的用于存储生成时间晚于预设时刻的数据的区域;
判断模块803,用于判断所述第一数据集合中的数据的总数量是否满足预设阈值,得到第一判断结果;
第二数据读取模块804,用于当所述第一判断结果表示所述第一数据集合中的数据的总数量不满足所述预设阈值时,根据所述第一信息推荐请求从第二存储区域中读取第二数据,得到第二数据集合;所述第二存储区域为预设的用于存储生成时间早于所述预设时刻的数据的区域;所述第二存储区域与所述第一存储区域不同;
第三数据集合确定模块805,用于根据所述第一数据集合以及所述第二数据集合,得到第三数据集合;所述第三数据集合中的数据的总数量满足所述预设阈值;
信息推荐模块806,用于根据所述第三数据集合中的数据,对所述终端进行信息推荐。
可选的,所述装置,还可以用于:
当所述第一判断结果表示所述第一数据集合中的数据的总数量满足所述预设阈值时,根据所述第一数据集合中的数据,对所述终端进行信息推荐。
可选的,所述第一数据读取模块802,具体可以包括:
第一存储地址确定单元,用于确定所述第一存储区域中用于存储初始数据的第一存储地址;
第一数据读取单元,用于从所述第一存储地址开始,按照预先设置的第一读取顺序,依序读取所述第一存储区域中每个存储地址所存储的第一数据;所述第一存储区域中的第一数据在存储时,按照预设的第一存储顺序进行存储,所述第一存储顺序与所述第一读取顺序相同。
可选的,所述第一数据读取单元,具体可以用于:
创建第一游标,所述第一游标指向所述第一存储地址;
确定所述第一存储区域中各个存储地址对应的地址编号;
移动所述第一游标按照所述第一存储区域中各个存储地址对应的地址编号依序读取所述第一存储区域中每个存储地址所存储的第一数据。
可选的,所述第三数据集合确定模块805,具体可以用于:
将所述第一数据集合中的全部数据放入第三数据集合中;
从所述第二数据集合中读取第一数目条数据,放入所述第三数据集合中,所述第一数目条数据与所述第一数据集合中的全部数据的数量之和等于所述预设阈值,所述第二数据集合中的数据的总数量大于等于第一数目条。
可选的,所述第二数据读取模块804,具体可以包括:
第二存储地址确定单元,用于确定所述第二存储区域中用于存储初始数据的第二存储地址;
第二数据读取单元,用于从所述第二存储地址开始,按照预先设置的第二读取顺序,依序读取所述第二存储区域中每个存储地址所存储的第二数据;所述第二存储区域中的第二数据在存储时,按照预设的第二存储顺序进行存储,所述第二存储顺序与所述第二读取顺序相同。
可选的,所述第二数据读取单元,具体可以用于:
创建第二游标,所述第二游标指向所述第二存储地址;
确定所述第二存储区域中各个存储地址对应的地址编号;
移动所述第二游标按照所述第二存储区域中各个存储地址对应的地址编号依序读取所述第二存储区域中每个存储地址所存储的第二数据。
可选的,所述装置,还可以包括:
确定第一存储区域以及第二存储区域中各个存储地址对应的地址编号;
将生成时间晚于预设时刻的第一数据按照所述生成时间的先后顺序以及所述地址编号依序存储到所述第一存储区域中对应的存储地址上;
将生成时间早于预设时刻的第二数据按照预设排序顺序以及所述地址编号依序存储到所述第二存储区域中对应的存储地址上。
可选的,所述装置,具体可以用于:
确定所述第一存储区域中用于存储初始数据的第一存储地址;
将所述第一数据按照所述生成时间的先后顺序依次存储到所述第一存储区域中对应的存储地址上,所述第一存储区域中的一个地址编号的存储地址对应存储一条所述第一数据,所述第一数据中生成时间最早的数据存储于所述第一存储地址。
可选的,所述装置,具体用于:
确定所述第二存储区域中用于存储初始数据的第二存储地址;
确定第二数据的优先级顺序;
将所述第二数据按照所述优先级顺序依次存储到所述第二存储区域中对应的存储地址上,所述第二存储区域中的一个地址编号的存储地址对应存储一条所述第二数据,所述第二数据中所述优先级最高的数据存储到所述第二存储地址,所述第二存储地址与所述第一存储地址相邻。
可选的,所述装置,还可以包括:
第一生成时间确定模块,用于确定所述第二存储区域中的各个第二数据的第一生成时间;
时长确定模块,用于确定所述第一生成时间中的最早时间距离当前时刻的时长;
更新模块,用于当所述时长满足数据更新周期时,更新所述第二存储区域中的数据。
可选的,所述更新模块,具体可以包括:
更新数据获取单元,用于获取第二生成时间对应的时间段内生成的更新数据;所述第二生成时间中的起始时间,晚于所述第二数据的生成时间;
排序单元,用于根据预设的评分体系对所述更新数据进行排序,得到排序后的所述更新数据;
更新数据确定单元,用于从排序后的所述更新数据中,读取排序靠前的预设数目个更新数据;
更新单元,用于按照所述预设数目个更新数据对应的优先级顺序将所述更新数据依次存储到所述第二存储区域中。
可选的,所述装置,还可以包括:
第二信息推荐请求获取模块,用于获取所述终端发送的第二信息推荐请求;
第一地址编号确定模块,用于确定所述第一数目条数据中最后一条数据对应的第一地址编号;
数据读取模块,用于以所述第一地址编号为基准,根据所述第二信息推荐请求,移动所述第二游标从所述第一地址编号对应的存储位置的下一个存储位置开始按照预设读取顺序依次读取数量满足所述预设阈值的数据;
将所述数量满足所述预设阈值的数据推荐至所述终端。
可选的,所述数据读取模块,具体可以用于:
移动所述第二游标从所述第二存储区域中依次读取第二数目条数据,直到读取完所述第二存储区域中最后存储的数据;
判断所述第二数目条数据是否满足所述预设阈值,得到第二判断结果;
当所述第二判断结果表示所述第二数目条数据满足所述预设阈值时,根据所述第二数目条数据,对所述终端进行信息推荐;
当所述第二判断结果表示所述第二数目条数据不满足所述预设阈值时,继续移动所述第二游标从所述第一存储区域中按照预先设置的第三读取顺序依序读取第三数目条数据,根据所述第三数目条数据和所述第二数目条数据,对所述终端进行信息推荐,所述第三数目条数据与所述第二数目条数据的数据总数量之和等于所述预设阈值,所述第三读取顺序与所述第一读取顺序相反。
基于同样的思路,本说明书实施例还提供了上述方法对应的设备。
图9为本说明书实施例提供的对应于图3的一种信息推荐设备的结构示意图。如图9所示,设备900可以包括:
至少一个处理器910;以及,
与所述至少一个处理器通信连接的存储器930;其中,
所述存储器930存储有可被所述至少一个处理器910执行的指令920,所述指令被所述至少一个处理器910执行,以使所述至少一个处理器910能够:
获取终端发送的第一信息推荐请求;
根据所述第一信息推荐请求从第一存储区域中读取第一数据,得到第一数据集合,所述第一存储区域为预设的用于存储生成时间晚于预设时刻的数据的区域;
判断所述第一数据集合中的数据的总数量是否满足预设阈值,得到第一判断结果;
当所述第一判断结果表示所述第一数据集合中的数据的总数量不满足所述预设阈值时,根据所述第一信息推荐请求从第二存储区域中读取第二数据,得到第二数据集合;所述第二存储区域为预设的用于存储生成时间早于所述预设时刻的数据的区域;所述第二存储区域与所述第一存储区域不同;
根据所述第一数据集合以及所述第二数据集合,得到第三数据集合;所述第三数据集合中的数据的总数量满足所述预设阈值;
根据所述第三数据集合中的数据,对所述终端进行信息推荐。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、***、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。