一种数据存储方法及装置与流程

文档序号:17641474发布日期:2019-05-11 00:42阅读:215来源:国知局
一种数据存储方法及装置与流程

本申请涉及数据处理技术领域,具体而言,涉及一种数据存储方法及装置。



背景技术:

在大数据兴起的今天,hbase(分布式存储数据库)作为列式数据库在数据存储、检索方面占据着重要的地位。hbase不同于一般的关系型数据库,它是一个适合于非结构化数据存储的数据库,具有高可靠性、高性能、面向列、可伸缩、扩展性好、无缝水平扩展、开源性的特点。

在数据入库hbase的时候,hbase可以为每个数据的标签(属性)建立索引。用户在检索具有某一标签的数据时,利用上述索引即可查询到对应的数据。一条数据可能具有很多的标签,因此一条数据可能需要建立多个索引,这就给数据的入库造成很大的压力,尤其是在数据量巨大的时候,数据入库的效率非常低,同时,大量的索引也引发了索引膨胀,浪费了不必要的存储空间。



技术实现要素:

有鉴于此,本申请实施例的目的在于提供一种数据存储方法及装置,数据存入hbase数据库时,一条数据只需要存储一个标签索引;数据检索时,基于检索条件能够确定所要检索的目标数据的标签索引,继而利用确定的一个或多个标签索引即可查询到所要查询的数据,本申请实施例有效减少了数据存入hbase数据库时需要同时入库的索引的数量,提高了数据入库的效率,节省了存储空间。

第一方面,本申请实施例提供了一种数据存储方法,包括:

获取每条待存储数据对应的每个标签的标签值;

针对每条待存储数据,基于获取的该条待存储数据的所有标签值,确定该条待存储数据的行键;

将该条待存储数据以及该条待存储数据的行键存入hbase数据库;

将所述待存储数据存入hbase数据库后,将获取的该条待存储数据的所有标签值存入关系型数据库。

在一种可能的实施方式中,所述基于获取的该条待存储数据的所有标签值,确定该条待存储数据的行键,包括:

计算获取的该条待存储数据的所有标签值的和,得到该条待存储数据的特征和;

利用预定算法对该条待存储数据的特征和进行处理,得到该条待存储数据的标签索引;

将所述标签索引、所述待存储数据的生成时间和所述待存储数据的唯一标识符组成所述待存储数据的行键。

在一种可能的实施方式中,所述将获取的该条待存储数据的所有标签值存入关系型数据库,包括:

查询所述关系型数据库中是否存在一行数据中的标签值与所述待存储数据的所有标签值相同;

若存在,则将查找到的该行数据对应的计数值增加固定值;

若不存在,则在所述关系型数据库中插入一行数据,插入的该行数据用于记录获取的该条待存储数据的所有标签值,并将该行数据对应的计数值配置为初始值。

在一种可能的实施方式中,所述数据存储方法还包括:

获取目标数据的检索条件;所述检索条件包括至少一个标签值;

从所述关系型数据库中,查找与所述检索条件匹配的目标行;

获取每个目标行中的所有标签值,并基于获取的每个目标行中的所有标签值,分别确定每个目标行对应的标签索引;

利用确定的每个标签索引,从所述hbase数据库中查找匹配的行键,将匹配的行键对应的行数据作为目标数据。

在一种可能的实施方式中,所述查找与所述检索条件匹配的目标行,包括:

所述关系型数据库中存在一行数据中的标签值包括所述检索条件中的所有标签值时,将该行数据作为所述目标行。

在一种可能的实施方式中,所述利用确定的每个标签索引,从所述hbase数据库中查找匹配的行键,包括:

确定的标签索引与hbase数据库中行键中的标签索引相同时,该行键为与确定的标签索引相同的行键。

第二方面,本申请实施例提供了一种数据存储装置,包括:

标签获取模块,用于获取每条待存储数据对应的每个标签的标签值;

行键计算模块,用于针对每条待存储数据,基于获取的该条待存储数据的所有标签值,确定该条待存储数据的行键;

第一存储模块,用于将该条待存储数据以及该条待存储数据的行键存入hbase数据库;

第二存储模块,用于将所述待存储数据存入hbase数据库后,将获取的该条待存储数据的所有标签值存入关系型数据库。

在一种可能的实施方式中,所述行键计算模块具体用于:

计算获取的该条待存储数据的所有标签值的和,得到该条待存储数据的特征和;

利用预定算法对该条待存储数据的特征和进行处理,得到该条待存储数据的标签索引;

将所述标签索引、所述待存储数据的生成时间和所述待存储数据的唯一标识符组成所述待存储数据的行键。

在一种可能的实施方式中,所述第二存储模块具体用于:

查询所述关系型数据库中是否存在一行数据中的标签值与所述待存储数据的所有标签值相同;

若存在,则将查找到的该行数据对应的计数值增加固定值;

若不存在,则在所述关系型数据库中插入一行数据,插入的该行数据用于记录获取的该条待存储数据的所有标签值,并将该行数据对应的计数值配置为初始值。

在一种可能的实施方式中,上述数据存储装置包括数据检索模块,所述数据检索模块具体用于:

获取目标数据的检索条件;所述检索条件包括至少一个标签值;

从所述关系型数据库中,查找与所述检索条件匹配的目标行;

获取每个目标行中的所有标签值,并基于获取的每个目标行中的所有标签值,分别确定每个目标行对应的标签索引;

利用确定的每个标签索引,从所述hbase数据库中查找匹配的行键,将匹配的行键对应的行数据作为目标数据。

本申请实施例提供的数据存储方法及装置,首先获取每条待存储数据对应的每个标签的标签值;之后,针对每条待存储数据,基于获取的该条待存储数据的所有标签值,确定该条待存储数据的行键;之后,将该条待存储数据以及该条待存储数据的行键存入hbase数据库,并在将所述待存储数据存入hbase数据库后,将获取的该条待存储数据的所有标签值存入关系型数据库。在进行数据检索的时候,首先获取目标数据的检索条件;所述检索条件包括至少一个标签值;之后,从所述关系型数据库中,查找与所述检索条件匹配的目标行;之后,获取每个目标行中的所有标签值,并基于获取的每个目标行中的所有标签值,分别确定每个目标行对应的标签索引;最后,利用确定的每个标签索引,从所述hbase数据库中查找匹配的行键,将匹配的行键对应的行数据作为目标数据。

本申请实施例的上述技术方案在存储数据的时候,利用该数据的所有标签值确定该数据的标签索引,一条数据只需要建立一个用于数据查询的标签索引。在需要检索数据的时候,基于检索条件,确定所要检索的目标数据的标签索引,继而利用确定的一个或多个标签索引即可查询到所要检索的目标数据,本申请实施例有效减少了数据存入hbase数据库库时需要同时入库的标签索引的数量,提高了数据入库的效率,节省了存储空间。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本申请实施例所提供的一种数据存储方法的流程图;

图2示出了本申请实施例所提供的另一种数据存储方法中,将待存储数据的所有标签值存入关系型数据库的流程图;

图3示出了本申请实施例所提供的另一种数据存储方法中,从hbase数据中检索目标数据的流程图;

图4示出了本申请实施例所提供的另一种数据存储方法的流程图;

图5示出了本申请实施例所提供的另一种数据存储方法的流程图;

图6示出了本申请实施例所提供的一种数据存储装置的结构示意图;

图7示出了本申请实施例所提供的一种电子设备的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,应当理解,本申请中附图仅起到说明和描述的目的,并不用于限定本申请的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本申请中使用的流程图示出了根据本申请的一些实施例实现的操作。应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。此外,本领域技术人员在本申请内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。

另外,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。

本申请的实施例提供了一种数据存储方法及装置,该方法及装置,在存储数据时,每一条数据只需要存储一个用于数据查询的标签索引,从而有效减少了数据入库时需要存储的索引的数量,提高了数据入库效率,节省了存储空间。具体地,如图1所示,数据存储方法包括如下步骤:

s110、获取每条待存储数据对应的每个标签的标签值。

这里,所述标签为描述待存储数据的预设角度,这里的预设角度可以是待存储数据对应的地址、时间、行为等。

这里,所述标签值为从对应的预设角度描述所述待存储数据的字符或词汇,即标签值是标签的具体取值,例如,标签值可以是某一个具体的地址、某一个具体的时间、某一个具体的行为等。另外,标签值还可以是标签的具体取值的代码,例如标签值可以是某一个具体的地址的代码、某一个具体的时间的代码、某一个具体的行为的代码等。例如,在具体实施例中,可以用代码w031030001表示标签值qq,用代码w031030002表示标签维微信,用代码w0210001表示标签值西安市高新区。此步骤实质上是获取了待存储数据在每个预定角度上的实际取值。

s120、针对每条待存储数据,基于获取的该条待存储数据的所有标签值,确定该条待存储数据的行键。

上述行键包括基于该条待存储数据的所有标签值生成的标签索引、该条待存储数据的生成时间以及该条待存储数据的唯一标识符。

在具体实施时,可以利用如下步骤生成该条待存储数据的标签索引:计算获取的该条待存储数据的所有标签值的和,得到该条待存储数据的特征和;利用预定算法对该条待存储数据的特征和进行处理,得到该条待存储数据的标签索引。

上述在计算待存储数据的所有标签值的和之前,可以先对每个标签值进行数据处理,例如对标签值进行量化、去重、检错等。

上述预定算法可以包括1种或多种算法,例如包括哈希算法和/或加密算法,在具体实施时,可以对待存储数据的所有标签值的和首先进行哈希运算,再对哈希运算得到的值进行加密,例如可用md5算法(消息摘要算法,messagedigestalgorithm)对哈希运算得到的值进行加密。

在两条以上的待存储数据具有完全相同的标签值的情况下,利用上述预定算法得到的标签索引将会相同,此时,为了标记不同的数据,将待存储数据的唯一标识符、生成时间和标签索引进行了组合,来形成待存储数据的行键。

s130、将该条待存储数据以及该条待存储数据的行键存入hbase数据库。

现有数据入库hbase的处理中:数据源在采集数据时,对于采集到的数据(称为待存储数据)会生成一个行键,为了与上述计算得到的行键进行区分,这里称为原始数据的行键,则hbase表中的一行数据包括原始数据的行键和采集到的数据。

在本公开的示例中,将待存储数据存入hbase后,hbase表中的一行数据包括:确定的待存储数据的行键、原始数据的行键以及采集到的数据。

在一个示例中,上述原始数据的行键包括待存储数据的生成时间和待存储数据的唯一标识符。

在一个示例中,上述待存储数据存入hbase表后,该行数据中的采集到的数据包括所有标签值。

s140、将所述待存储数据存入hbase数据库后,将获取的该条待存储数据的所有标签值存入关系型数据库。

在本公开的示例中,需要在数据入库hbase后,才将待存储数据的所有标签值存入关系型数据库。这是因为,后续从hbase查询数据时,需要先从关系型数据库中查询标签,再根据查询到的标签从hbase查询数据,如果关系型数据库中记录了一条数据的标签,而hbase中未记录该条数据,那么就会造成空查询。为了避免空查询,需要在数据入库hbase成功后,再将该条数据的标签值记录在关系型数据库中。

上述关系型数据库利用一个标签统计表存储待存储数据的标签值,每一行只用于存储一条待存储数据的标签值。

在一个示例中,在两条以上的待存储数据具有相同的标签值的情况下,可以利用所述标签统计表的同一行记录相同的标签值,并在该行中的一个预定的列中存储具有相同的标签值的待存储数据的数量。

在具体实施时,如图2所示,可以利用如下步骤将该待存储数据的所有标签值存入关系型数据库:

s210、查询所述关系型数据库中是否存在一行数据中的标签值与所述待存储数据的所有标签值相同。

s220、若存在,则将查找到的该行数据对应的计数值增加固定值。

上述计数值可以用于表示对应的原始数据的数量,此时,若在关系型数据库中查找到一行数据中的标签值与所述待存储数据的所有标签值相同时,将计数值增加1即可。

s230、若不存在,则在所述关系型数据库中插入一行数据,插入的该行数据用于记录获取的该条待存储数据的所有标签值,并将该行数据对应的计数值配置为初始值。

在计数值表示对应的原始数据的数量时,上述计数值的初始值为1。

以上,将待存储数据、待存储数据的行键存入hbase,并且将待存储数据的所有标签值存入关系型数据后,待存储数据的存储完成。

根据上面的陈述可知,关系型数据库的标签统计表中,每一行只用于存储某一条待存储数据的标签值,那么,在进行数据检索的时候,首先从所述标签统计表中,筛选符合所述检索条件的行;之后从筛选得到的行中获取所有的标签值;之后利用所有标签值就能够计算得到所要检索的目标数据的标签索引,继而利用计算得到的目标数据的标签索引就能够从hbase数据库中查询所要检索的目标数据。

在具体实施时,如图3所示,可以利用如下步骤实现从hbase数据中检索目标数据:

s310、获取目标数据的检索条件;所述检索条件包括至少一个标签值。

s320、从所述关系型数据库中,查找与所述检索条件匹配的目标行。

这里,查找与所述检索条件匹配的目标行具体可以是:所述关系型数据库中存在一行数据中的标签值包括所述检索条件中的所有标签值时,将该行数据作为所述目标行。

s330、获取每个目标行中的所有标签值,并基于获取的每个目标行中的所有标签值,分别确定每个目标行对应的标签索引。

这里,基于目标行中的所有标签值,确定目标行对应的标签索引的方法,与将数据存储入hbase时计算标签索引的方法相同。

s340、利用确定的每个标签索引,从所述hbase数据库中查找匹配的行键,将匹配的行键对应的行数据作为目标数据。

这里,利用确定的每个标签索引,从所述hbase数据库中查找匹配的行键具体可以是:

确定的标签索引与hbase数据库中行键中的标签索引相同时,该行键为与确定的标签索引相同的行键。

上述在检索目标数据的时候,基于包括至少一个标签值的检索条件,能够在关系型数据库中检索到符合该检索条件的1条或多条目标数据的所有标签值,之后基于每条目标数据的所有标签值,利用与数据存储时计算标签索引的方法相同的方法,就能够计算得到所要检索的每条目标数据的标签索引,最后,基于计算得到的每条目标数据的标签索引就能够从hbase数据库中查询到对应的目标数据。

从前面的陈述可知,在数据存储时,hbase数据库只存储了每条待存储数据的一个标签索引,在数据检索时,利用关系型数据存储的每条数据的标签值即可确定所要检索的目标数据的标签索引,之后利用确定的标签索引就能够从hbase中检索要目标数据。上述实施例的技术方案在实现数据存储、检索功能的同时,有效降低了存储的用于检索数据的标签索引的数量。

hbase不能实现模糊检索等高级检索方式,关系型数据库可以实现模糊检索等高级形式的检索方式,因此在利用关系型数据库检索符合检索条件的1条或多条目标数据的标签值的时候,就实现了利用模糊检索等高级检索方式检索目标数据。

下面通过一些具体的实施例对本申请的数据存储方法进行详细说明。如图4所示,数据存储方法具体可以包括如下步骤:

步骤一、获取标签值。对于海量的待存储数据,获取每条待存储数据对应预设的标签的标签值,并将获取的标签值写入标签统计表。

如图4所示,获取的待存储数据的标签值可以包括位置、app类型、行为、作者、来源标识、去向标识、数据的唯一标识、数据生成时间等。

获取待存储数据的标签值之后,进行标签统计,生成标签统计表。这里的标签统计表存储在关系型数据库中,如下表1所示,标签统计表中包括若干行,第一行用于存储预设的标签,其余每一行用于存储某一条待存储数据的所有的标签值,标签统计表中的每一列对应一个标签,某一行的某一列具体用于存储某一条待存储数据的某一个标签对应的标签值。

表1

从上表可以得出,每个标签值用一个对应的代码表示。标签包括时间、位置、行为等。如果以天为单位进行数据存储,在每天的预定时间,将待存储数据的标签值存入标签统计表中。在存储标签值的过程中,如果两条以上的待存储数据具有相同的标签值,可以利用所述标签统计表的同一行记录所述相同的标签值,并在该行中数量列中存储上述具有相同的标签值的待存储数据的数量。

在有新的待存储数据存入hbase时,若待存储数据的所有标签值与某一已存储数据的所有的标签值完全相同,只对上述数量列的值进行累加操作,待存储数据具有与其他待存储数据不同的标签值时,增加新的行。

综上,第一次向标签统计表写入标签值时,可以直接写入,后续需要将当前的标签值的和历史的标签值进行合并。

上述海量的待存储数据可以采用批量mapreduce加载方式进行加载,加载之后再获取每条待存储数据的标签值。

步骤二、计算标签索引(tid)。基于获取的每条待存储数据的标签值,生成每条待存储数据的标签索引。

这里,具体可以利用如下公式计算标签索引:

tid=md5(hash(f1+f2+f3+f4+…))

上述,tid表示标签索引,md5表示信息摘要算法(messagedigestalgorithm),hash表示哈希算法,f1、f2、f3、f4分别表示某一待存储数据的各个标签值。

步骤三、将待存储数据的tid和待存储数据本身存入hbase,利用tid即可查询得到对应的数据。

在将tid和待存储数据本身存入hbase时,由于重复的数据具有相同的tid,因此为了避免重复的待存储数据的tid相同,将tid与待存储数据的唯一标识和生成时间合并,生成待存储数据的行键。行键的具体格式可以是tid|id|time,其中|为字段分割符,id为一条待存储数据唯一标识,time为该条数据的生成时间,增加id和time的主要目的是为了防止相同的tid在hbase中发生覆盖。

需要指出的是,标签值入库关系型数据库需要在待存储数据入库hbase之后进行。

在一个示例中,采集到待存储数据时,可以生成一个对应的行键(即上述原始数据的行键),在原始数据的行键可以包括待存储数据的id和time。如图4所示,原始数据的行键也可以用于查询对应的数据,在具体实施时,可以原始数据的行键存储在hbase的drk列中。hbase的其他列可以用于存储待存储数据(例如各个标签值以及除了标签值以外的信息)。

在hbase数据入库时根据以上方式对每条数据计算tid值,并建立索引、即标签索引。

上面存储的数据,在利用包括多个标签值的检索条件进行数据检索的时候,先去标签统计表中检索出满足检索条件的目标数据的所有的标签值,使用与上述同样计算方式计算出目标数据的tid,再利用计算得到的目标数据的tid依次去hbase中进行检索,最后由hbase返回目标数据给客户端。

由于标签值存储在关系型数据库中,因此在进行检索时可以支持模糊、任意条件且and、任意条件或or等查询。

另外,如图4所示,将该待存储数据存储到hbase时,将from_id和to_id也进行了存储,具体是由独立的列,例如qauilfier列进行存储,因此查询时支持根据from_id或者to_id进行二次过滤,即从上述根据检查条件查询到的目标数据中根据from_id或者to_id进行筛选。

以上,由于标签值和数据存储在两个数据库中,为了保证数据一致性,可以先将数据和包含标签索引的行键存入hbase,hbase入库完成后触发关系型数据库开始统计存储标签值,将标签值写入关系型数据库的标签统计表中,这样可以避免hbase中由于没有存储tid相应的数据导致的空查询。

通过上述实施例可以在很大程度上减少hbase中存储的用于数据检索的标签索引,降低hbase中的物理存储量。

另外,也可以把标签统计表放置到其他类型数据库中,例如使用分布式文档存储数据库mongodb。标签统计表中数据的计算方式也可以用其他计算方式来实现,例如使用spark内存计算。

以上实施例,如图5所示,数据存储方法包括如下步骤:

步骤一、加载海量的待存储数据;

步骤二、基于每条待存储数据的标签值,计算每条待存储数据的标签索引tid。

步骤三、dobuikload;这里,dobuikload是hbase中的一个逻辑过程,是指hbase入库的mapreduce执行完成之后,把生成的hfile文件移动到hbase中,数据才真正可读。实现了将每条待存储数据和对应的标签索引存入hbase数据库。

步骤四、统计当前待存储数据的标签值,与历史标签值进行比较,基于比较结果,将待存储数据的标签值写入标签统计表,或增加标签统计表中的数量列的数值。

以上实施例,如图5所示,数据存储后,在进行数据检索时包括如下步骤:

步骤一、获取客户端提供的检索条件;

步骤二、基于检索条件从标签统计表获取一条或多条目标数据的所有标签值;

步骤三、计算每条目标数据的标签索引tid;

步骤四、基于所述每条目标数据的标签索引tid从hbase中检索目标数据,并将得到的一条或多条目标数据反馈给客户端。

图6是示出本申请的一些实施例的数据存储装置的框图,该数据存储装置实现的功能对应上述方法执行的步骤。如图所示,数据存储装置可以包括标签获取模块610、行键计算模块620、第一存储模块630、第二存储模块640。

标签获取模块610可以用于获取每条待存储数据对应的每个标签的标签值。

行键计算模块620可以用于针对每条待存储数据,基于获取的该条待存储数据的所有标签值,确定该条待存储数据的行键。

第一存储模块630可以用于将该条待存储数据以及该条待存储数据的行键存入hbase数据库。

第二存储模块640可以用于将所述待存储数据存入hbase数据库后,将获取的该条待存储数据的所有标签值存入关系型数据库。

在一些实施例中,所述行键计算模块620具体用于:

计算获取的该条待存储数据的所有标签值的和,得到该条待存储数据的特征和;

利用预定算法对该条待存储数据的特征和进行处理,得到该条待存储数据的标签索引;

将所述标签索引、所述待存储数据的生成时间和所述待存储数据的唯一标识符组成所述待存储数据的行键。

在一些实施例中,所述第二存储模块640具体用于:

查询所述关系型数据库中是否存在一行数据中的标签值与所述待存储数据的所有标签值相同;

若存在,则将查找到的该行数据对应的计数值增加固定值;

若不存在,则在所述关系型数据库中插入一行数据,插入的该行数据用于记录获取的该条待存储数据的所有标签值,并将该行数据对应的计数值配置为初始值。

在一些实施例中,数据存储装置还包括数据检索模块650,所述数据检索模块650具体用于:

获取目标数据的检索条件;所述检索条件包括至少一个标签值;

从所述关系型数据库中,查找与所述检索条件匹配的目标行;

获取每个目标行中的所有标签值,并基于获取的每个目标行中的所有标签值,分别确定每个目标行对应的标签索引;

利用确定的每个标签索引,从所述hbase数据库中查找匹配的行键,将匹配的行键对应的行数据作为目标数据。

上述模块可以经由有线连接或无线连接彼此连接或通信。有线连接可以包括金属线缆、光缆、混合线缆等,或其任意组合。无线连接可以包括通过lan、wan、蓝牙、zigbee、或nfc等形式的连接,或其任意组合。两个或更多个模块可以组合为单个模块,并且任何一个模块可以分成两个或更多个单元。

本申请的一些实施例还公开了一种电子设备,如图7所示,包括:处理器701、存储器702和总线703,所述存储器702存储有所述处理器701可执行的机器可读指令,当电子设备运行时,所述处理器701与所述存储器702之间通过总线703通信。

所述机器可读指令被所述处理器701执行时执行以下数据存储的步骤:

获取每条待存储数据对应的每个标签的标签值;

针对每条待存储数据,基于获取的该条待存储数据的所有标签值,确定该条待存储数据的行键;

将该条待存储数据以及该条待存储数据的行键存入hbase数据库;

将所述待存储数据存入hbase数据库后,将获取的该条待存储数据的所有标签值存入关系型数据库。

本申请的一些实施例还公开了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述实施例的数据存储方法中的步骤。

本申请实施例还提供了一种进行文本检错计算机程序产品,其包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统和装置的具体工作过程,可以参考方法实施例中的对应过程,本申请中不再赘述。在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1