具体实施方式
根据本申请的实施方式,提出了一种数据仓库质量保障方法、装置和系统。
为使得本申请的发明目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例提供的数据仓库质量保障装置可以应用于任意数据库或者数据仓库处理装置或系统,也可以作为一个独立的装置而存在。当其作为独立的装置而存在时,其也可以与现有的数据库、数据仓库处理装置或系统数据连接,以为所述数据仓库处理装置或系统提供质量保障。当然,以上仅为本申请实际应用场景的示例性说明,本申请也可以应用到其他场景,在此不进行限制。
参见图1,为本申请实施例提供的一种数据仓库质量保障方法流程图。所示方法例如可以包括:
S101,响应于接收数据模型的提交请求,判断所述数据模型是否符合数据模型设计规则,获得第一判断结果;若所述第一判断结果表明所述数据模型不符合所述数据模型设计规则,展示第一提示信息以用于提示所述数据模型不符合数据模型设计规则。
当数据仓库质量保障装置接收到数据模型的提交请求时,响应于所述请求,判断所述数据模型是否符合数据模型设计规则。其中,数据模型设计规则可以根据需要预先设置。数据模型设计规则用于判断用户提交的数据模型是否符合设计规范,例如是否符合合法性、完整性等要求。在具体实现时,数据模型设计规则可以包括下列中的任意一种或多种:物理表前缀命名规则、物理表后缀命名规则、分区字段设置规则、元数据完整性规则等。
相应地,所述判断所述数据模型是否符合数据模型设计规则,获得第一判断结果包括以下所列中的一种或任意结合:
(1)获取第一物理表前缀名,将获取的所述第一物理表前缀名与合法物理表前缀名集合中的各物理表前缀名进行比较;若存在与所述第一物理表前缀名相同的前缀名,则确定所述第一物理表前缀名符合数据模型设计规则;若不存在,则确定所述第一物理表前缀名不符合数据模型设计规则。其中,所述合法物理表前缀名集合包括符合预设的物理表前缀名命名规则的前缀名。举例说明,可以根据预设的物理表前缀名命名规则列举各符合规则的物理表前缀名,将这些前缀名组成合法物理表前缀名集合。当在判断物理表前缀名是否符合规则时,则将所述物理表前缀名与所述集合中的各前缀名进行比较;若在集合中存在一致的前缀名,则说明所述前缀名合法。否则,所述前缀名不合法,则会展示第一提示信息,用于提示前缀名不合法或出错。进一步地,可以获取任务目录树,根据目录树获取各任务节点的属性,例如各任务节点所属的层次,例如中间层或者应用层。获得各任务节点的层次属性后,即可以根据其层次属性对应的合法物理表前缀名集合,判断所述任务节点对应的物理表前缀名是否符合物理表前缀名命名规则。
(2)获取第一物理表后缀名,将获取的所述第一物理表后缀名与合法物理表后缀名集合中的各物理表后缀名进行比较;若存在与所述第一物理表后缀名相同的后缀名,则确定所述第一物理表后缀名符合数据模型设计规则;若不存在,则确定所述第一物理表后缀名不符合数据模型设计规则。其中,所述合法物理表后缀名集合包括符合预设的物理表后缀名命名规则的后缀名。举例说明,可以根据预设的物理表后缀名命名规则列举各符合规则的物理表后缀名,将这些后缀名组成合法物理表后缀名集合。当在判断物理表后缀名是否符合规则时,则将所述物理表后缀名与所述集合中的各后缀名进行比较。若在集合中存在一致的后缀名,则说明所述后缀名合法。否则,所述后缀名不合法,则会展示第一提示信息,用于提示后缀名不合法或出错。进一步地,可以获取任务目录树,根据目录树获取各任务节点的属性,例如各任务节点所属的层次,例如中间层或者应用层。获得各任务节点的层次属性后,即可以根据其层次属性对应的合法物理表后缀名集合,判断所述任务节点对应的物理表后缀名是否符合物理表后缀名命名规则。
(3)获取分区字段的名称与格式,判断所述分区字段的名称与格式是否符合预先定义的分区字段设置规则;若是,则确定所述分区字段符合数据模型设计规则;若否,则确定所述分区字段不符合数据模型设计规则。举例说明,对表或文件进行分区时,按照日期进行分区,每个分区按照日期形成一个块状数据。例如,分区字段为date,其格式为yyyy/mm/dd。本申请实现时,则可以坚持各表的分区字段的命名是否为预先定义的名称,分区字段的格式是否是预先定义的格式。
(4)获取元数据,判断所述元数据是否符合完整性规则;若所述元数据符合完整性规则,则确定所述元数据符合数据模型设计规则;若否,则确定所述元数据不符合数据模型设计规则。举例说明,完整性规则要求元数据需要具有相应的描述信息;若通过判断,所述描述信息为空,则确定所述元数据不符合完整性规则。进一步地,若判断所述描述信息不为空,还可以通过分词处理,确定所述描述信息是否为有效信息。例如,设置无效信息集合,若所述无效信息集合存在与待判断的描述信息一致的描述信息,则确定所述元数据不符合完整性规则。当然,完整性规则还可以包括其他内容,在此不进行限定。
需要说明的是,以上仅是对如何判断数据模型是否符合数据模型设计规则进行了示例性说明,并不视为对本申请的限制。本领域技术人员在付出创造性劳动下获取的其他数据模型设计规则或者判断方式均属于本申请的保护范围。
进一步地,在一些实现方式中,所述方法还包括:若所述第一判断结果表明所述数据模型不符合所述数据模型设计规则,获取所述数据模型设计规则的类型;当所述数据模型设计规则的类型为强规则时,显示第四提示信息用于提示拒绝所述数据模型提交请求;当所述数据模型设计规则的类型为弱规则时,显示第五提示信息用于提示用户选择是否继续提交;响应于用户点击第五提示信息的对应选项的输入,接受或者拒绝所述数据模型提交请求。举例说明,当确定提交的数据模型不符合相应的数据模型设计规则时,可以根据所述数据模型设计规则的类型,例如是强规则还是弱规则进行不同的处理。若对应强规则,所展示的第四提示信息具体可以为拒绝所述数据模型提交请求的信息,进一步地,还可以提示用户是否返回修改。举例说明,第四提示信息会提示用户必须将违反规则的问题修复,才能提交代码。若对应弱规则,可以只显示第一提示信息;进一步,还可以显示第五提示信息,提示用户是选择继续提交还是返回修改。如果用户选择继续提交,则响应于用户的选择操作,接受所述数据模型提交请求。如果用户选择返回修改,则响应于用户的选择操作,拒绝所述数据模型提交请求。
S102,响应于接收代码的提交请求,判断所述代码是否符合代码开发规则,获得第二判断结果;若所述第二判断结果表明所述代码不符合所述代码开发规则,展示第二提示信息以用于提示所述代码不符合所述代码开发规则。
当数据仓库质量保障装置接收到代码的提交请求时,响应于所述请求,判断代码是否符合代码开发规则。其中,代码开发规则可以根据需要预先设置。代码开发规则用于判断用户提交的代码是否符合开发规范,例如是否符合合法性、完整性等要求。在具体实现时,代码开发规则可以包括下列中的任意一种或多种:输出表规则、语法规则、调度依赖规则、数据删除规则等。
相应地,所述判断所述代码是否符合代码开发规则,获得第二判断结果包括以下所列中的一种或任意结合:
(1)获取输出表的数量与名称,判断所述输出表的数量与名称是否与所述输出表对应的任务设置一致;若一致,则确定所述输出表符合代码开发规则;若不一致,则确定所述输出表不符合代码开发规则。一般地,对应一个任务应当有且只有一个输出表。当输出表的数量大于1个时,则确定其不符合代码开发规则。此外,各任务对应的输出表名称应当与任务名称具有关联关系。举例说明,对应AA任务,其输出表应当是AA表。
(2)对所述代码进行语法解析,判断所述代码是否符合预先定义的语法规则;若符合,则确定所述代码符合代码开发规则;若不符合,则确定所述代码不符合代码开发规则。
(3)获取各任务节点对应的调度依赖关系,根据所述调度依赖关系判断所述任务节点是否与其调度的任务节点存在关联关系;若存在,确定所述调度依赖关系符合代码开发规则;若不存在,则确定所述调度依赖关系不符合代码开发规则。举例说明,对应任务节点D,其执行需要调度任务节点A、B、C的执行结果,那么任务节点D与任务节点A、B、C具有调度依赖,而设置调度依赖关系,需要将任务节点D与任务节点A、B、C形成关联关系。若经过判断,所述任务节点D与任务节点A、B、C的任意一个不存在关联关系,则确定其不符合调度依赖规则,即不不符合代码开发规则。(4)根据任务、表与分区的关联关系,判断删除分区操作对应的表是否与当前任务具有关联关系;若是,则确定所述删除分区操作符合代码开发规则;若否,则确定所述删除分区操作不符合代码开发规则。在实际开发时,为防止误操作,应确保删除分区的操作对应的表与当前任务具有关联关系,不能够删除其他没有关联关系的表的分区。
(5)根据任务与表的关联关系,判断删除表操作对应的表是否与当前任务具有关联关系;若是,则确定所述删除表操作符合代码开发规则;若否,则确定所述删除表操作不符合代码开发规则。
需要说明的是,以上仅是对如何判断代码是否符合代码开发规则进行了示例性说明,并不视为对本申请的限制。本领域技术人员在付出创造性劳动下获取的其他代码开发规则或者判断方式均属于本申请的保护范围。
进一步地,在一些实现方式中,所述方法还包括:若所述第二判断结果表明所述代码不符合所述代码开发规则,获取所述代码开发规则的类型;当所述代码开发规则的类型为强规则时,显示第六提示信息用于提示拒绝所述代码提交请求;当所述代码开发规则的类型为弱规则时,显示第七提示信息用于提示用户选择是否继续提交;响应于用户点击第七提示信息的对应选项的输入,接受或者拒绝所述代码提交请求。举例说明,当确定提交的代码不符合相应的代码开发规则时,可以根据所述代码开发规则的类型,例如是强规则还是弱规则进行不同的处理。若对应强规则,所展示的第六提示信息具体可以为拒绝所述代码提交请求的信息,进一步地,还可以提示用户是否返回修改。举例说明,第六提示信息会提示用户必须将违反规则的问题修复,才能提交代码。若对应弱规则,可以只显示第二提示信息;进一步,还可以显示第七提示信息,提示用户是选择继续提交还是返回修改。如果用户选择继续提交,则响应于用户的选择操作,接受所述代码提交请求。如果用户选择返回修改,则响应于用户的选择操作,拒绝所述代码提交请求。
优选地,在某些实施例中还可以包括如下步骤:
S103(如图中虚线框所示,用于表明不是必须的而是优选的步骤),响应于接收代码的执行请求,执行所述代码并判断代码执行结果是否符合数据执行质量规则,获得第三判断结果;若所述第三判断结果表明所述代码执行结果不符合所述数据执行质量规则,展示第三提示信息以用于提示所述代码执行结果不符合所述数据执行质量规则。
当数据仓库质量保障装置接收到代码的执行请求时,响应于所述请求,执行所述代码并判断代码执行结果是否符合数据执行质量规则。其中,数据执行质量规则可以根据需要预先设置。数据执行质量用于判断代码执行结果是否符合数据质量规范,例如是否符合合法性、有效性、完整性等要求。在具体实现时,数据执行质量规则可以包括下列中的任意一种或多种:主键规则、数据量规则、有效值规则、空值检查规则、合法性规则、逻辑校验规则等。
相应地,所述执行所述代码并判断代码执行结果是否符合数据执行质量规则,获得第三判断结果包括以下所列中的一种或任意结合:
(1)判断是否存在重复的主键;若存在,确定所述代码执行结果不符合数据执行质量规则;若不存在,确定所述代码执行结果符合数据执行质量规则。具体实现时,主键不能够重复,否则会在执行中出错。因此,在执行时,需要主键是否重复进行判断。
(2)获取所述执行结果对应的数据量,判断所述数据量是否大于第一设定阈值或者小于第二设定阈值;若是,则确定所述代码执行结果不符合数据执行质量规则;若否,确定所述代码执行结果符合数据执行质量规则。代码正常运行时,执行结果对应的数据量应当在一个合理范围。如果执行结果对应的数据量远大于第一设定阈值或者小于第二设定阈值,说明数据执行异常。其中,第一设定阈值和第二设定阈值根据经验设定。
(3)判断代码执行结果中是否存在空值;若是,则确定所述代码执行结果不符合数据执行质量规则;若否,确定所述代码执行结果符合数据执行质量规则。举例说明,一些字段对应的值不应当为空,如果为空值,则确定出错。
(4)对代码执行结果进行逻辑校验处理;若通过逻辑校验,则确定所述代码执行结果符合数据执行质量规则;若否,确定所述代码执行结果不符合数据执行质量规则。具体的逻辑校验规则可以根据需要设置。举例说明,根据逻辑,字段C对应的数据应当是字段A与字段B对应的数据的和值,若经过校验,字段A与字段B对应的数值的和值不等于字段C对应的数值,说明逻辑校验不通过。当然,以上仅为示例性说明,还可以根据需要设置其他逻辑校验规则。
(5)判断代码执行结果是否符合合法性规则;是,则确定所述代码执行结果不符合数据执行质量规则;若否,确定所述代码执行结果符合数据执行质量规则。具体的合法性规则可以根据需要设置,在此不进行限定。
参见图2,为本申请实施例提供的另一种数据仓库质量保障方法流程图。所示方法为图1所示方法应用时的一个具体实例。
S201,展示模型设计界面,以供用户进行模型设计。
S202,当接收到数据模型提交请求时,执行数据模型检查。
所述数据模型检查具体为判断提交的数据模型是否符合数据模型设计规则。若所述数据模型符合数据模型设计规则,则进入下一阶段;若否,提示用户并返回模型设计界面。所述数据模型检查包括物理表前缀、物理表后缀、分区字段、元数据完整性检查等。
S203,展示数据开发界面,用户执行数据开发。
S204,当接收到代码提交请求时,执行代码检查。
所述代码检查具体为判断所述代码是否符合代码开发规则。若所述代码模型符合代码开发规则,则进入下一阶段;若否,提示用户并返回数据开发界面。所述代码检查包输出表检查、语法解析、调度依赖检查、删除分区检查、删除表检查等。
S205,若通过代码检查,展示任务发布界面。
S206,响应于任务执行请求,执行所述任务。
S207,对执行结果进行质量检查。
所述质量检查具体为判断代码执行结果是否符合数据执行质量规则。若是,提示用户任务成功。若否,提示用户任务失败。其中,所述质量检查包括主键重复检查、数据量波动检查、空值检查、合法性检查、逻辑校验等。
下面结合图3,对本申请一个应用场景的示例进行说明。参见图3,为本申请实施例提供的数据仓库质量保障方法交互流程图。
S301,管理员设定规则。
所述规则包括但不限于模型设计规则、代码开发规则、数据执行质量规则。
S302,数据研发人员进行数据模型设计。
S303,响应于数据模型提交请求,系统执行数据模型设计规则检查。
S304,若不符合数据模型设计规则,系统提示研发人员修改。
S305,若符合数据模型设计规则,则检查通过,系统允许数据模型设计提交。
S306,研发人员执行代码开发。
S307,响应于代码提交请求,系统执行代码开发规则检查。
S308,若不符合代码开发规则,系统提示研发人员修改。
S309,若符合代码开发规则,则检查通过,系统允许代码提交。
S310,研发人员发送模型设计和任务代码的发布、执行请求。
S311,系统接受所述执行请求并执行代码。
S312,系统调用数据执行质量规则,进行数据执行质量检查。
S313,若不符合数据执行质量规则,系统提示研发人员执行出错;若符合数据执行质量规则,则执行任务成功,并触发下游节点执行。
参见图4,为本申请实施例提供的提示信息示意图。在图4中,提示用户输入和代码血缘分析不匹配。并进一步提示用户是否继续执行提交操作。当然,以上仅是提示信息的一个示例,不视为对本申请的限制。
在本申请实施例提供的数据仓库质量保障方法中,可以对数据模型设计、代码开发、代码执行结果是否符合设定规则进行判断,并提示用户出错信息,有效减少了代码开发的维护成本,提高了数据仓库的开发质量,减少了系统资源浪费。
参见图5,为本申请实施例提供的一种数据仓库质量保障装置示意图。
一种数据仓库质量保障装置500,包括:
第一判断单元501,用于响应于接收数据模型的提交请求,判断所述数据模型是否符合数据模型设计规则,获得第一判断结果;
第一提示单元502,用于若所述第一判断结果表明所述数据模型不符合所述数据模型设计规则,展示第一提示信息以用于提示所述数据模型不符合所述数据模型设计规则;
第二判断单元503,用于响应于接收代码的提交请求,判断所述代码是否符合代码开发规则,获得第二判断结果;
第二提示单元504,用于若所述第二判断结果表明所述代码不符合所述代码开发规则,展示第二提示信息以用于提示所述代码不符合所述代码开发规则。
优选地,所述装置还可以包括(图中虚线框所示的不是必须的而是优选的单元或者部分):
第三判断单元505,用于响应于接收代码的执行请求,执行所述代码并判断代码执行结果是否符合数据执行质量规则,获得第三判断结果;
第三提示单元506,用于若所述第三判断结果表明所述代码执行结果不符合所述数据执行质量规则,展示第三提示信息以用于提示所述代码执行结果不符合所述数据执行质量规则。
进一步地,所述第一判断单元包括以下所列中的一种或任意结合:
第一判断子单元,用于获取第一物理表前缀名,将获取的所述第一物理表前缀名与合法物理表前缀名集合中的各物理表前缀名进行比较;若存在与所述第一物理表前缀名相同的前缀名,则确定所述第一物理表前缀名符合数据模型设计规则;若不存在,则确定所述第一物理表前缀名不符合数据模型设计规则;所述合法物理表前缀名集合包括符合预设的物理表前缀名命名规则的前缀名;
第二判断子单元,用于获取第一物理表后缀名,将获取的所述第一物理表后缀名与合法物理表后缀名集合中的各物理表后缀名进行比较;若存在与所述第一物理表后缀名相同的后缀名,则确定所述第一物理表后缀名符合数据模型设计规则;若不存在,则确定所述第一物理表后缀名不符合数据模型设计规则;所述合法物理表后缀名集合包括符合预设的物理表后缀名命名规则的后缀名;
第三判断子单元,用于获取分区字段的名称与格式,判断所述分区字段的名称与格式是否符合预先定义的分区字段设置规则;若是,则确定所述分区字段符合数据模型设计规则;若否,则确定所述分区字段不符合数据模型设计规则;
第四判断子单元,用于获取元数据,判断所述元数据是否符合完整性规则;若所述元数据符合完整性规则,则确定所述元数据符合数据模型设计规则;若否,则确定所述元数据不符合数据模型设计规则。
进一步地,所述第二判断单元包括以下所列中的一种或任意结合:
第五判断子单元,用于获取输出表的数量与名称,判断所述输出表的数量与名称是否与所述输出表对应的任务设置一致;若一致,则确定所述输出表符合代码开发规则;若不一致,则确定所述输出表不符合代码开发规则;
第六判断子单元,用于对所述代码进行语法解析,判断所述代码是否符合预先定义的语法规则;若符合,则确定所述代码符合代码开发规则;若不符合,则确定所述代码不符合代码开发规则;
第七判断子单元,用于获取各任务节点对应的调度依赖关系,根据所述调度依赖关系判断所述任务节点是否与其调度的任务节点存在关联关系;若存在,确定所述调度依赖关系符合代码开发规则;若不存在,则确定所述调度依赖关系不符合代码开发规则;
第八判断子单元,用于根据任务、表与分区的关联关系,判断删除分区操作对应的表是否与当前任务具有关联关系;若是,则确定所述删除分区操作符合代码开发规则;若否,则确定所述删除分区操作不符合代码开发规则;
第九判断子单元,用于根据任务与表的关联关系,判断删除表操作对应的表是否与当前任务具有关联关系;若是,则确定所述删除表操作符合代码开发规则;若否,则确定所述删除表操作不符合代码开发规则。
进一步地,所述第三判断单元包括以下所列中的一种或任意结合:
第十判断子单元,用于判断是否存在重复的主键;若存在,确定所述代码执行结果不符合数据执行质量规则;若不存在,确定所述代码执行结果符合数据执行质量规则;
第十一判断子单元,用于获取所述执行结果对应的数据量,判断所述数据量是否大于第一设定阈值或者小于第二设定阈值;若是,则确定所述代码执行结果不符合数据执行质量规则;若否,确定所述代码执行结果符合数据执行质量规则;
第十二判断子单元,用于判断代码执行结果中是否存在空值;若是,则确定所述代码执行结果不符合数据执行质量规则;若否,确定所述代码执行结果符合数据执行质量规则;
第十三判断子单元,用于判断代码执行结果是否符合合法性规则;是,则确定所述代码执行结果不符合数据执行质量规则;若否,确定所述代码执行结果符合数据执行质量规则;
第十四判断子单元,用于对代码执行结果进行逻辑校验处理;若通过逻辑校验,则确定所述代码执行结果符合数据执行质量规则;若否,确定所述代码执行结果不符合数据执行质量规则。
进一步地,所述装置还包括:
第一获取单元,用于若所述第一判断结果表明所述数据模型不符合所述数据模型设计规则,获取所述数据模型设计规则的类型;
第四提示单元,用于当所述数据模型设计规则的类型为强规则时,显示第四提示信息用于提示拒绝所述数据模型提交请求;
第五提示单元当所述数据模型设计规则的类型为弱规则时,显示第五提示信息用于提示用户是否选择继续提交;
第一响应单元,用于响应于用户点击第五提示信息的对应选项的输入,接受或者拒绝所述数据模型提交请求。
进一步地,所述装置还包括:
第二获取单元,用于若所述第二判断结果表明所述代码不符合所述代码开发规则,获取所述代码开发规则的类型;
第六提示单元,用于当所述代码开发规则的类型为强规则时,显示第六提示信息用于提示拒绝所述代码提交请求;
第七提示单元,用于当所述代码开发规则的类型为弱规则时,显示第七提示信息用于提示用户选择是否继续提交;
第二响应单元,用于响应于用户点击第七提示信息的对应选项的输入,接受或者拒绝所述代码提交请求。
上述各单元的功能可对应于图1至图3详细描述的上述数据仓库质量保障方法的处理步骤,于此不再赘述。
参见图6,为本申请实施例提供的一种数据仓库质量保障系统示意图。
所述数据仓库质量保障系统600包括数据模型设计模块601、代码开发模块602、代码执行模块603(不是必须的)、质量保障模块604,其中:
所述数据模型设计模块601用于执行数据模型的新增、修改、查询、删除、提交操作;
所述代码开发模块602用于执行代码的新增、修改、查询、删除、提交操作;
所述代码执行模块603用于发布代码;
所述质量保障模块604用于响应于所述数据模型设计模块发送的数据模型的提交请求时,判断所述数据模型是否符合数据模型设计规则,获得第一判断结果;若所述第一判断结果表明所述数据模型不符合所述数据模型设计规则,展示第一提示信息以用于提示所述数据模型不符合所述数据模型设计规则;以及,响应于所述代码开发模块发送的代码的提交请求时,判断所述代码是否符合代码开发规则,获得第二判断结果;若所述第二判断结果表明所述代码不符合所述代码开发规则,展示第二提示信息以用于提示所述代码不符合所述代码开发规则。
进一步地,所述质量保障模块604还用于响应于所述代码执行模块发送的代码的执行请求时,执行所述代码并判断代码执行结果是否符合数据执行质量规则,获得第三判断结果;若所述第三判断结果表明所述代码执行结果不符合所述数据执行质量规则,展示第三提示信息以用于提示所述代码执行结果不符合所述数据执行质量规则。
其中,所述质量保障模块的功能可对应于图1至图3详细描述的上述数据仓库质量保障方法的处理步骤,于此不再赘述。所述质量保障模块的功能也可以参照图5所示装置的各单元或功能而实现。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。