具体实施方式
为了使本技术邻域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本邻域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
下面结合附图对本申请所述的数据模型管理装置进行详细的说明。图1是本申请所述一种数据模型管理装置一种实施例的模块结构示意图。虽然本申请提供了如下述实施例或模块图的装置结构,但基于常规或者无需创造性的劳动在所述装置中可以包括更多或者更少的模块单元。
具体的本申请提供的一种数据模型管理装置一种实施例如图1所示,所述装置可以包括配置模块1和业务处理单元2,所述配置模块1可以包括:
模型定义模块101,可以用于存储设置的包括模型唯一标识的模型基础信息;
模型入参模块102,可以用于存储设置的所述模型的入参信息的数据;
模型资源库103,可以用于存储所述模型的资源文件的信息;
模型变量模块104,可以用于存储定义的模型变量和所述模型变量的算法信息;
模型算法模块105,可以用于存储定义的模型算法信息;
所述业务处理单元2,可以用于根据预定计算规则将所述配置模块中的模型信息构建成可运行的模块对象。
下面对本申请实施例的数据模型管理装置进行详细说明。具体的,所述配置模块1可以包括:
模型定义模块101,可以存储设置的包括模型唯一标识的模型基础信息。所述的模型定义模块101可以存储包括模型的名称、描述、所属域、状态等模型信息,这些信息通常可以为开发设计人员为需要构建的模型定义设置的模型基础信息。一般的,在针对某一终端应用或者某一服务开发项目中,一个数据模型通常包括用于区别其他数据模型的模型唯一标识。所述的模型唯一标识可以为在所述模型定义模块中设置的数据模型的唯一名称,或者其他类型的区别标识信息。基于模型唯一标识,在模型构建、资源调用、运行、配置信息修改等管理操作时,可以准确有效的调用到数据模型相对应的操作对象。
当然,所述的模型定义模块101中还可以存储所述模型的其他信息,例如所述数据模型可以完成的功能的描述,如姓名打分、手机号码打分,或者所述模型属于相应终端应用或者服务器的账户域还是金融域,或者所述数据模型属于新建开发中的模型还是已经在终端应用发布运行等状态的描述。
作业人员可以在所述模型定义模块中设置所需构建的模型的基本信息,所述模型定义模块可以存储获取的包括模型唯一标识的模型基本信息。
模型入参模块102,可以用于存储设置的所述模型的入参信息的数据。
所述的模型的入参信息,可以包括该模型在运行时需要调用的入口参数并可以用于后续模型运算的信息。在所述模型的终端应用场景中,所述的入参信息具体的可以包括例如姓名、email、电话号码,或者其他具有业务意义的数字、字符、符合等信息。所述的入参信息可以根据所需构建的模型设计需求进行设计。图2是本申请提供的所述模型入参模块一种实施例的应用界面图,如图2所示,在所述模型入参模块中,具体的可以定义包括例如入参名称、入参描述、入参类型等信息参数。
当然,所述的模型入参模块102中可以为一个模型设置多个类型的多个入参。如图2中所示的手机号码打分模型的模型入参模块中的入参名称为phoneType、入参类型为字符型,还可以进一步的设置所述手机号码打分模型的其他入参名称,如phoneNumber,入参类型为整数型。
作业人员可以在所述模型入参模块102中定义构建模型所允许的入参信息。所述模型入参模块102可以获取并存储作业人员设置的模型入参信息的数据。
模型资源库103,可以用于存储所述模型的资源文件的信息。
所述的模型资源库103可以用于存储所述模型涉及到的资源文件名称、资源文件格式、资源文件存储在服务单元(例如SFS)的地址、以及所述模型的资源文件是否落地等信息。所述的资源文件的落地通常是指将资源文件从本地的其他存储单元或者远程服务器端下载后进行本地持久化存储。一般的,所述的资源落地的过程中还常常包括对下载的资源文件的一些数据处理过程,具体地可以根据数据处理或者设计需求进行设置是否需对资源文件的进一步处理以及所述进一步处理的具体处理方式。所述的模型资源库103可以为包括所述模型资源文件的存储单元,也可以为包括指向所述模型资源文件的路径、链表、指针等指向所述资源文件的信息数据。
上述中,所述的可以存储资源文件的服务单元可以为本地或者远程服务器为所述模型提供资源文件存储的数据模块。在本申请的一种实施例种,所述的服务单元可以采用SFS(safefile system,SFS),这样,所述模型资源库存储有所述模型资源文件在网络文件系统中的存储地址。所述的SFS为一种安全的网络文件系统,可以用于存储和提供通过SFS客户端或者相应接口访问SFS服务器来实现文件管理的网络文件系统。本实施例中可以采用所述SFS存储所述模型的资源文件。具体的例如在采用JAVA设计语言实现的模型中,SfsManagerClient可以提供从SFS下载资源文件的调用方法。然后可以采用SimpleModelResourceParserFactory提供的SimpleModelResourceParser解析器接口解析获取的资源文件。
需要说明的是,所述模型资源库103中存储资源文件或者路径等所指向的资源文件可以包括一般常规的字符信息,例如采集的包括多个手机号码数据的CSV文本,或者提前录入的包括多个姓名的TXT文本。本申请的一种实施例中,所述的模型资源库可以包括资源解析单元1031,所述资源解析单元103可以用于对所述模型资源库存储或者下载的资源文件进行解析,可以将所述资源文件转换成预定的数据格式。具体的例如在JAVA中,CSVSimpleModelResourceParserImpl是其中的一个CSV格式文件的解析器,可以获取Map<String,List<String>>的解析结果。这样,在后续模型算法处理类似例如上述CSV或者TXT文本的资源文件时,业务处理单元106可以不需要在每次要获取所述资源文件时都进行资源文件解析,可以节约数据处理时间,提高所述模型构建、验证、运行等处理效率。
在本发明的一种实施方式中,所述的数据模型管理装置可以采用Hbase数据库存储所述资源文件解析后的结果信息。所述的Hbase为一种分布式、面向列的开源数据库,通常适用于非结构化数据的存储,因此本实施例中可以用于存储落地后的资源文件。所述的Hbase数据库可以设置在所述模型资源库103中,也可以为单独的用于存储所述资源文件解析后的结果信息的数据存储单元。当然,所述业务处理单元106可以直接调用所述Hbase中的信息数据,所述的单独的Hbase数据库也可以与所述模型资源库103有链接或者映射关系,然后所述业务处理单元通过模型资源库103调用所述单独的Hbase中的信息数据。
所述的Hbase存储时可以采用本地内存存储和分布式内存存储的方式。可以设置本地存储存储单元,可以用于所述解析后的资源文件数据,并在所述模型本地内存仓储加载时全部加载至内存中进行处理;例如在具体的如采用JAVA语言设计资源文件落地Hbase处理时,可以包括如下方式:
将原资源文件解析生成的Map<String,List<String>>对象序列化后整体落地在一个rowkey下面。所述的rowkey格式可以设置为:模型唯一UUID+资源名称,可以通过murmurHash算法后取前5位并拼接成所述资源名称。在所述模型本地内存仓储加载的时候会一次加载上述资源到内存中进行处理。
一般的,对应小文件资源,比如一个20M的单个资源文件,在数据处理时可以直接解析并全量加载到内存中。而对于较大的资源文件,例如一个500M甚至是1G的单个资源文件,如果直接解析并全量加载到内存中,往往会导致内存消耗过大,很容易造成应用系统的内存溢出。因此,本申请的另一种实施例中,所述的Hbase存储可以采用分布式内存存储模式。可以设置分布式内存存储单元,可以用于将所述解析后的资源文件数据分成多个资源项进行存储,并在所述模型本地内存仓储被调用时加载需要的资源项。具体的在采用JAVA语言设计资源文件落地Hbase处理时,所述分布式内存存储模式可以包括:
将原资源文件解析生成的Map<String,List<String>>打散生成多项数据,每一项都生成一个rowkey进行存储。所述的rowkey格式可以设置为:模型唯一UUID+资源名称+项名称,可以通过murmurHash算法后取前5位并拼接原名称。在所述模型本地内存仓储加载的时候不会一次性加载全部资源到内存中,可以按需加载,可以在使用到某一项时再加载该项资源。
本实施例中在所述资源文件落地Hbase时可以采用分布式内存存储模式,可以资源文件较大时有效节约内存消耗,提高模型数据处理效率和模型运行、管理等的可靠性。
模型变量模块104,可以用于存储定义的模型变量和所述模型变量的算法信息。
所述的模型变量模块104中可以存储定义设置的实现模型所需用到的模型变量以及所述模型变量的算法信息。所述模型变量的算法信息可以包括模型变量的表达式或者设置的变量脚本信息。在所述模型变量模块104中,可以定义一个或者多个模型变量,所述模型变量可以调用入参信息进行预定规则的计算。所述模型变量可以包括相应的变量类型、变量名称、调用的入参,可以调用函数和资源文件等,并可以通过表达式计算后返回相应类型的返回值。所述模型变量的返回值可以用于模型算法的输入值进行模型运算。
在本申请的一种具体的实施例中,所述模型变量可以包括普通变量和资源变量。所述的普通变量可以为所述的模型入参信息按照预定转换函数或格式化方法解析后得到的值,所述的资源变量可以为生成的资源key值,可以用于从资源文件中获取得到资源项。当然,可以在所述模型变量模块中为定义的不同模型变量设置不同的区别标识,或者变量选项。这样,为所述模型变量定义不同的变量分类,可以更加有效的为业务处理单元进行变量数据快速处理,同时也可以在业务作业人员模型变量定义、设计时更加明确清晰,提高作业人员的处理效率和作业使用体验。
模型算法模块105,可以用于存储定义的模型算法信息。
作业人员可以在所述模型算法模块105中定义设置实现模块功能的算法信息,例如实现对用户输入的姓名如何进行测试打分,或者对用户的手机号码采用的打分算法等。所述的模型算法模块105中可以提供相应的算法实现工具,如可以采用的某种设计语言的函数调用,定义设置的入参、模型变量、自定义函数等。所述模型算法模块105可以获取并存储作业人员定义设计的模型算法信息。
所述业务处理单元2,可以用于根据预定计算规则将所述配置模块中的模型信息构建成可运行的模块对象。
所述业务处理单元2可以加载所述配置模块1中相应模块单元中配置的模型信息,将所述模型信息快速的装配成一个可运行的模块对象。在本申请所述的数据模型管理装置中,所述业务处理单元2执行的所述预定计算规则可以预先编辑、设置,也可以调用某种编程设计语言的对象编译、构建函数或者模块等,用于实现构建可以运行的模块对象。当然,所述业务处理单元2构建模块对象时可以同时将所述模型中所涉及到的资源文件进行解析和持久化本地存储。所述构建模块对象的处理过程可以包括将所述模型的配置模块1中的各种模型信息进行编译、连接,可以形成实例化的可以介质存储并通过计算机执行的应用,或者类结构、组件、单元功能模块等。
具体的例如在JAVA设计编程语言中,所述的业务处理单元2可以调用SimpleModelManger接口提供buildSimpleInCacheById方法构建内存模式的SimpleModel对象。所述的SimpleModel通常是指基础打分模型的可运行持有类接口,包含getVars获取模型变量、getModelResource获取模型资源等方法。SimpleModelImpl可以为一个模型的具体实现类,所述的实现类中包含具体的modelVars模型变量列表、resources模型资源列表、simpleModelScorer模型打分算法器对象、varsScript变量脚本对象等。当然,在构建模块对象时所述业务处理单元2也可以包括但不限于采用下述函数实现:
runSimpleModelByName:按照模型名称执行构建模型模块对象;
checkModeIsExit:检查要运行的模型是否存在;
ValidateParams:验证模型调用入参的有效性;
execVars:执行模型变量脚本的计算;
SimpleModelHbaseHelper:提供从Hbase获取和写入的资源文件解析后的Map<String,List<String>>信息;
caculateScore:执行模型的打分算法。
需要说明的是,本申请所述的数据模型管理装置中的配置模块1和业务处理单元2提供了一种新的、有效的数据模型的设计管理方式,可以应用于姓名、手机号码打分的数据模型,也可以应用于星座测试、资产管理、在线购物、信息查询等多种应用模型的构建、管理中。所述的装置可以通过本申请实施例中所述的加载于实体存储介质的可执行程序JAVA编程设计语言实现,也可以通过其他的编程设计语言例如groovy、C++等实现,本申请对具体的实现本申请各个实施例的设计语言不做限定。
本申请所述的一种数据模型管理装置,将传统的模型主程序逐行硬件编码的方式分模型不同的配置模块,可以在所述模型配置模块中设置、定义所需构建的模块的相应参数、变量、资源文件、算法等,然后可以通过业务处理单元设置的预定计算规则构建模块对象。通过本申请提供的数据模型管理装置,可以分模块的配置模型相应的数据信息,相比传统的程序编程,可以快速实现模型的建立,使数据模型快速发布,及时上线,发挥应用性能。当然,本申请所述的数据模型管理装置中配置模块可以为作业人员提供可视化的操作界面,作业人员可以在所示操作界面中配置模型的模型信息数据。通过本申请装置可以使模型分析和开发人员更加直观、清晰的掌握和部署模型的各个配置模块的数据。并且可以方便、及时的对不同模型的各个配置模块中的模块信息进行添加、修改、删除等操作,方便用户管理模型数据,大大提高了数据模型构建的灵活性,并且可以有效缩短模型开发周期。
一般的,作业人员在模型的配置模块中配置模型相应的参数信息后,通常还需要对模型进行测试验证,因此本申请所述的数据模型管理装置中还可以包括:
验证模块3,可以用于根据存储的模型校验入参脚本信息对构建的模块对象进行验证。所述验证模块3可以加载设置在模型入参存储单元中的入参构建脚本,进行生成入参;生成入参后,根据设置的模型入参信息管理表配置的入参约定规则检测所述生成的入参是否合法;对于合法的入参,执行模型变量模块中存储的变量算法,并将计算得到的变量和合法的入参作为所述模型算法的输入信息进行模型运算;输出所述模型运算结果,并根据所述模型运算结果验证模型能的配置数据是否正常。
图3是本申请所述数据模型管理装置另一种实施例的模块结构示意图。如图3所示,在具体应用场景中,所述的验证模块3可以在验证入参输入脚本中输入构建脚本,用于构建需要验证的入参列表信息。具体的验证过程中,作业人员可以在模型校验入参脚本中设置需要验证的入参信息,例如若干个电话号码或者姓名信息。验证执行时可以先加载入参构建脚本,进行生产入参操作。如果在所述生成入参过程中因脚本异常导致生成入参失败,则可以结束验证流程,输出验证失败的验证结果。如果所述入参构建脚本能够正常生成入参,则可以调用提供的模型验证接口,按照预先设置的模型入参信息管理表中配置的入参预定规则执行对模型入参的校验,检测入参是否合法。所述的模型验证接口内部可以根据需要验证的模型的ID加载一个内存模式的SimpleModel对象。具体的例如在JAVA设计语言中,SimpleModelValidator接口可以提供validateModel方法用于模型验证,SimpleModelManger接口可以提供buildSimpleInCacheById方法用于构建内存模式的SimpleModel对象。对于校验结果为不合法的入参可以直接显示不合法异常堆栈信息,并可以结束验证过程,输出验证失败的验证结果。对于合法的入参,可以继续执行模型变量模块中设置的变量计算脚本,并可以将计算得到的变量和所述合法的入参作为模型算法的输入信息进行模型运算。如果构建的模块对象如上述加载的SimpleModel对象可以输出如符合设计要求的结果信息,则验证通过;如果中途存在执行异常,收集异常堆栈信息后输出异常信息,然后可以定位至异常信息处,或者直接退出整个验证过程。
作业人员可以通过本实施例所述的验证模块来观察、验证模型的配置信息是否正常,是否满足后续的发布乃至上线应用的要求。对于不正常或者不能满足设计要求的模型,可以重新进行配置信息,然后再次验证。这样,通过本申请的数据模型管理装置提高的验证模块可以快速、方便的对新建或者修改后的模型进行验证,可以保障模型发布应用的可靠性,实现对模型的快速、有效验证。
本申请所述的数据模型管理装置中,可以存储配置的多个模型的数据信息。所述的存储的模型可以根据所处的状态设置不同的模型状态,例如新建、待验证、已验证、正式运行等。
对通过验证的数据模型,可以进行发布,实现模型的快速应用。所述的模型的发布,可以包括发布新构建的可以应用于线上的应用模型,或者发布当前线上已经存在的模型更新版本。当然,在一些应用场景中,所述模型的发布也可以为对当前线上模型进行下线,或者删除当前正在运行的某些模型。需要说明的是,本申请中所述模型发布所面向的对象可以为终端上的应用,例如移动终端上购物应用APP,也可以为服务器上提供的业务服务,如可以为终端应用提供数据访问、存储或者信息交互的服务器上的业务应用。
图4是本申请所述数据模型管理装置另一种实施例的模块结构示意图。如图4所示,具体的,本申请所述的数据模型管理装置还可以包括:
资源管理模块4,可以用于存储包括要模块上线、更新、删除中至少一种操作的模型列表信息。在所述模型列表信息中,可以包括当前正确运行的模型信息,也可以包括需要修改或者添加的模型的信息,当然也可以包括需要删除的模型的数据信息。对不同的模块的不同操作设置相应的操作区分标识。具体的,例如所述模型列表信息中可以用模型名称作为当前终端或者服务器上模型的唯一识别标识,对于不需要做变动的模型在所述模型列表信息中可以在模型名称前添加“NUL”标识,或者对模型名称不做修改;对于需求增加的模型可以在所述模型列表信息中添加此次增加模型的模型名称,并在所述模型名称前添加“ADD“标识;对于需求下线删除的模型可以在所述模型列表信息中添加此次下线模型的模型名称,并在所述模型名称前添加“DEL“标识。
这样服务器或者终端应用可以根据从所述获取资源管理模块4中设置的模型列表信息更新模型数据信息。在其他的实施方式中,所述数据模型管理装置也可以定时发送广播消息,具体的例如可以包括模块更新单元,可以用于向指定终端或者服务器上的应用发送模型更新消息,用于通知服务器或者终端应用更新模块。
对于大型的业务关键型系统,如金融系统、电子商务系统等,系统可用性是一个非常关键的指标,通常需要24小时不间断服务。系统一旦停止,就有可能会带来巨大的损失。然而,通常上述所述的这类系统的业务规则又复杂多变,经常需要进行各种各样的升级,在业务规则发生变化时,通常需要重新启动系统来进行系统升级,这样会极大的降低了系统可用性。为了避免在系统升级时重新启动系统进而造成损失,本申请上述实施例可以提供热部署方式的模型修改、升级装置,可以有效应用于多种需要进行模型修改的终端或者服务系统。所谓热部署通常是指在系统运行时升级软件,而不需要重新启动系统。具体的实现方式可以如下所述的打分模型上线过程:
对于需要发布的模型,可以根据模型管理装置中配置信息快速装置成可运行的SimpleModel对象,同时对设计到的模型资源文件进行解析与持久化落地。或者根据上一次当前域模型发布时间作为版本,从模型管理装置的本地化数据库中加载当前域需要上线的基础打分模型,然后检查模型资源库是否存在没有落地的资源文件。对没有落地的资源文件可以从SFS中下载,并进行一一解析并落地到Hbase进行持久化存储。然后将需要上线的一个或者多个模型装配成SimpleModel对象,对构建好的SimpleModel对象进行序列化,并存储到模型列表信息中,将其标识为“ADD”。然后再判断目前已经在模型列表信息中,现在需要下线的模型,如果存在,则将其标识为“DEL”,或者删除基础模型上线表中的对应项。在本申请的其他实施例中,也可以将所述模型列表信息分别设置为模型上线列表和模型下线列表。所述模型上线列表可以存储需要上线和/或当前存在的模型信息,所述模型下线列表可以用于存储在模型的中需要下线的模型信息。然后可以构建一个资源管理模块的广播消息,进行分布式资源管理消息的广播推送。当然,所述的广播消息中可以预先设置此次模型发布的相关模型信息。
终端应用或者服务器业务系统收到资源管理模块4发送的广播消息后,可以首先判断模型信息中是否包含本域信息,如果不包含则直接忽略并结束;如果包含,则可以根据本运行时内存记录的上一次发布时间版本与本次发布消息中的时间版本形成时间窗口,从模型列表信息或者模型上线列表中加载当前域需要上线的模型并反序列化形成SimpleModel对象。然后也可以加载其他域共享给当前域需要上线的模型并反序列化形成SimpleModel对象。可以从模型列表信息或者模型下线列表中加载需要下线的模型,并根据上线和下线模型更新本地打分模型运行内存仓储单元,实现终端或者服务器模型的热部署。在JAVA中,可以利用SimpleModelRepository提供一个本地内存仓储,目的是用于持有所有线上的模型数据。
利用本申请提供的上述数据模型管理装置,可以实现模型的快速参数配置、快速上线发布,并且可以实现终端或者服务器数据模型的热部署。在模型添加、修改等操作过程中不会影响线上运行的模型,达到系统平滑升级,为数据模型的定义、开发、管理、发布、应用、升级等提供了有力支持。
本申请所述的数据模型管理装置可以应用多种业务服务系统中,因此,本申请还提供一种数据模型处理服务器,所述服务器被设置成,可以包括:
可以接收数据模型管理装置发送的模型更新消息,在判断所述模型更新消息中包括有需要处理的模型时可以获取模型列表信息;可以根据所述模型列表信息中设置的业务处理信息对指定模型进行相应处理操作。
所述的模型更新消息可以为上述所述装置中资源管理模块发送的广播消息。所述的业务处理信息具体的可以参照本申请其他实施例中例如设置的对模型进行添加、删除、修改的叙述,在此不做赘述。利用本申请提供的数据模型处理服务器,可以实现自身或者为终端应用模型提供热部署,达到新模型的快速发布、上线应用,模型修改,应用服务平滑升级,提高服务器服务能力,同时也可以提高相应终端一侧用户的服务使用体验。
基于本申请上述所述一种数据模型装置,本申请还提供一种模型数据处理方法,图5是本申请所述一种模型数据处理方法一种实施例的方法流程示意图,如图5所示,所述方法可以包括:
S101:将数据模型分成预定个数的配置模块组,所述的配置模块组分别存储获取的模型的配置信息;
S102:根据预定计算规则将所述配置模块组中的模型信息构建成可运行的模块对象。
本申请提供了一种的模型数据处理方法提供了一种区别于常规模型硬编码的新的、有效的数据模型的构建、管理方法,可以应用于姓名、手机号码打分等数据模型的构建。相比传统的主程序编程,可以快速实现模型的建立,使数据模型快速发布,及时上线,发挥应用性能。
尽管本申请内容中提到数据库存储、JAVA编程设计语言、信息判断交互等之类的数据处理描述,但是,本申请并不局限于必须是完全标准或者所提及的语言、信息交互的数据处理的情况。本申请中各个实施例所涉及的上述描述仅是本申请中的一些实施例中的应用,在某些标准、方法、语言的基础上略加修改后的数据处理方法也可以实行上述本申请各实施例的方案。当然,在符合本申请上述各实施例的中所述的模块、单元功能以及数据处理方法步骤的其他无创造性的变形,仍然可以实现相同的申请,在此不再赘述。
虽然本申请提供了如实施例或附图所示的装置模块结构或者方法流程,但基于常规或者无创造性的手段可以包括更多或者更少的模块单元或者操作步骤。实施例中列举的装置结构仅仅为基于本申请思想的一些实现方式,不代表唯一的模块结构。
上述实施例阐明的单元或模块,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块或者单元分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现,例如可以将模型定义模块和模型变量模块设置为一个模块实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现,例如模型资源库可以分为本地Hbase数据库和远程的SFS资源服务器。
本邻域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本邻域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本邻域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。