一种关系数据的处理方法和装置
【技术领域】
本发明涉及计算机应用技术领域,特别涉及一种关系数据的处理方法和装置。
【背景技术】
随着大数据时代的来临,对关系数据的收集、分析、维护和利用等处理成为十分重要的内容。目前很多应用领域存在这样一种需求:需要定期对关系数据进行有效聚类,即将存在关联关系的数据聚为一类,这为后续关系数据的分析和利用提供基础。以诸如支付宝等支付工具为例,每天都会出现数以万计的新注册账户,然而这些新注册账户中很大一部分是与历史数据中的已有账户存在关联的,例如存在共用的身份证、银行卡、设备标识等。为了对关系数据进行收集和维护,方便后续进行分析和利用,需要定期将新增的账户和历史账户进行聚类,即将存在关联关系的账户聚为一个群组,这一过程通常称为关系数据的连通处理。
由于新增的账户可能会造成新的聚类结果,例如原来账户1、账户2之间存在共用的身份证,账户3和账户4之间存在共用的银行卡,因此,账户 1和账户2聚为一个群组,账户3和账户4聚为一个群组。如果新增的账户5 与账户2存在共用的身份证并且与账户3存在共用的银行卡,则最终会引起账户1、账户2、账户3、账户4和账户5聚为一个群组。目前针对增量关系数据所采用的处理方式主要是:每次基于关联关系将增量关系数据与历史关系数据进行全量的聚类。然而,随着数据规模的不断扩大,如果存在上亿个账户和上亿的关联关系,那么每天增加的账户关系数据和历史数据完全放在一起进行全量的聚类,所带来的计算量十分庞大,耗费的计算资源和时间也会非常大。
【发明内容】
有鉴于此,本发明提供了一种关系数据的处理方法和装置,以便于降低新增关系数据所引起的对计算资源和时间的耗费。
具体技术方案如下:
本发明提供了一种关系数据的处理方法,该方法包括:
获取新增关系数据;
依据所述新增关系数据,确定与新增节点存在关联关系的历史节点所在的群组,将确定出的各群组分别作为群组节点;
重复执行聚类过程,直至所有节点的群组标签不再发生变化:
其中所述聚类过程包括:将发送节点的群组标签发送至与其存在关联关系的节点,所述发送节点包括新增节点和与新增节点存在关联关系的群组节点,新增节点初始的群组标签为新增节点的标签;依据预设的选择策略,为接收到标签的节点选择该节点的群组标签与接收到的标签中的一个,利用选择的标签替换该节点的群组标签。
根据本发明一可选实施方式,所述新增关系数据包括新增节点以及该新增节点与其他新增节点或历史节点的关联关系。
根据本发明一可选实施方式,所述获取新增关系数据包括:
获取新增节点和历史节点的属性信息,依据属性信息确定与新增节点存在关联关系的节点,记录新增节点以及该新增节点与其他新增节点或历史节点的关联关系。
根据本发明一可选实施方式,在所述依据所述新增关系数据,确定与新增节点存在关联关系的历史节点所在的群组之前还包括:
判断是否存在与新增节点存在关联关系的历史节点,如果是,则继续执行所述依据所述新增关系数据,确定与新增节点存在关联关系的历史节点所在的群组;否则,重复执行所述聚类过程,直至所有节点的群组标签不再发生变化,在执行所述聚类过程时,所述发送节点包括新增节点。
根据本发明一可选实施方式,依据预设的选择策略,为接收到标签的节点选择该节点的群组标签与接收到的标签中的一个包括:
比较接收到标签的节点的群组标签与接收到的标签,选择其中的最小值;或者,比较接收到的标签的节点的群组标签与接收到的标签,选择其中的最大值;
其中对所有接收到标签的节点采用相同的选择策略。
根据本发明一可选实施方式,该方法还包括:
当所有节点的群组标签不再发生变化后,在关系数据库中记录或输出属于同一群组的节点以及各节点的关联关系,其中群组标签相同的节点属于同一群组。
根据本发明一可选实施方式,该方法应用于账户关系数据的处理;
账户作为所述节点,存在共同属性的账户作为存在关联关系的节点,所述标签为账户编号。
本发明还提供了一种关系数据的处理装置,该装置包括:新增数据获取单元、群组节点确定单元和数据库维护单元;
所述新增数据获取单元,用于获取新增关系数据;
所述群组节点确定单元,用于依据所述新增关系数据,确定与新增节点存在关联关系的历史节点所在的群组,将各群组作为群组节点,触发所述聚类单元;
所述聚类单元,用于受到触发后,重复执行以下操作,直至所有节点的群组标签不再发生变化:将发送节点的群组标签发送至与其存在关联关系的节点,所述发送节点包括新增节点和与新增节点存在关联关系的群组节点,新增节点初始的群组标签为新增节点的标签;依据预设的选择策略,为接收到标签的节点选择该节点的群组标签与接收到的标签中的一个,触发所述数据库维护单元利用选择的标签替换该节点的群组标签;
所述数据库维护单元,用于在关系数据库中维护各节点的关联关系以及各节点的群组标签。
根据本发明一可选实施方式,所述新增关系数据包括新增节点以及该新增节点与其他新增节点或历史节点的关联关系。
根据本发明一可选实施方式,所述新增数据获取单元,具体用于获取新增节点和历史节点的属性信息,依据属性信息确定与新增节点存在关联关系的节点,记录新增节点以及该新增节点与其他新增节点或历史节点的关联关系。
根据本发明一可选实施方式,该装置还包括:
判断单元,用于判断是否存在与新增节点存在关联关系的历史节点,如果是,则触发所述群组节点确定单元执行操作;否则,触发所述聚类单元执行操作;
所述聚类单元在受到所述判断单元触发执行操作时,将新增节点作为所述发送节点。
根据本发明一可选实施方式,所述聚类单元在依据预设的选择策略,为接收到标签的节点选择该节点的群组标签与接收到的标签中的一个时,具体执行:
比较接收到标签的节点的群组标签与接收到的标签,选择其中的最小值;或者,比较接收到的标签的节点的群组标签与接收到的标签,选择其中的最大值;
其中对所有接收到标签的节点采用相同的选择策略。
根据本发明一可选实施方式,该装置还包括:
输出单元,用于当所有节点的群组标签不再发生变化后,输出属于同一群组的节点以及各节点的关联关系,其中群组标签相同的节点属于同一群组。
根据本发明一可选实施方式,该装置应用于账户关系数据的处理;
账户作为所述节点,存在共同属性的账户作为存在关联关系的节点,所述标签为账户编号。
由以上技术方案可以看出,本发明提供的关系数据的处理方式,对于新增关系数据,仅仅会涉及到新增节点之间以及与该新增节点存在关联的历史节点的聚类处理,对与新增节点不存在关联的历史节点则不会参与聚类处理。相比较每次都对历史关系数据进行全量聚类的方式,显然减小了计算量,降低了对计算资源和时间的消耗,在关系数据规模庞大的情况下,效果更加明显。
【附图说明】
图1为本发明实施例提供的一种方法流程图;
图2为本发明实施例提供的一个数据网络的示意图;
图3为本发明实施例提供的装置结构图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
在本发明实施例中,可以采用关系网络的形式体现关系数据,其中关系网络中的节点代表关系数据中的对象,节点之间的连线代表对象之间的关联关系。在定期进行关系数据维护时,会新增关系数据,本发明就在于将新增关系数据融合入已经存在的关系网络,即与历史关系数据所形成的群组进行融合。
图1为本发明实施例提供的一种方法流程图,在本实施例中,当定期对关系数据进行维护时,开始执行如图1中所示的流程,包括以下步骤:
在101中,获取新增关系数据。
由于关系数据的维护是定期执行的,因此当新的周期到来时,会有一些新增节点的数据,这些新增节点之间可能存在关联关系,新增节点与历史节点之间也可能存在关联关系,所谓历史节点指的是已经维护的关系数据库中的各节点。节点与节点之间的关联关系可以通过属性信息来确定,例如当节点与节点之间存在共同的属性时,确定节点与节点之间存在关联关系。记录确定的新增节点与新增节点或历史节点的关联关系。
新增关系数据包括新增节点以及该新增节点与其他新增节点或历史节点的关联关系。上述新增关系数据可以由本发明实施例提供的关系数据的处理装置依据获取的新增节点的数据来确定,也可以由其他装置依据获取的新增节点的数据确定后,通过该装置与本发明实施例提供的关系数据的处理装置之间的接口提供给本发明实施例提供的关系数据的处理装置。
已有的关系数据库中记录有历史节点、历史节点之间的关联关系以及各历史节点所在的群组标签。在本发明实施例中,存在关联关系的节点被划分为一个群组,例如节点1与节点2之间存在关联关系,节点2与节点3之间存在关联关系,节点2与节点4之间存在关联关系,节点4与节点5之间存在关联关系,那么节点1、节点2、节点3、节点4和节点5就被划分为一个群组,具有相同的群组标签,假设该群组标签为0001。该群组构成的数据网络可以如图2中所示,数据网络中各节点的边体现节点之间的关联关系。这些节点在数据库中被记录的信息可以如表1中所示。
表1
节点 |
存在关联关系的节点 |
所在群组标签 |
节点1 |
节点2 |
0001 |
节点2 |
节点3、节点4 |
0001 |
节点3 |
节点2 |
0001 |
节点4 |
节点2、节点5 |
0001 |
节点5 |
节点4 |
0001 |
在102中,依据新增关系数据,判断是否存在与新增节点存在关联关系的历史节点,如果是,则执行103;否则,执行104。
这里,对于不存在与新增节点存在关联关系的历史节点可能有两种情况:一种是目前关系数据库中尚没有数据,即还不存在历史节点;另一种是目前关系数据库中已经存在历史节点,但均与新增节点不存在关联。
如果存在与新增节点存在关联关系的历史节点,则在103中,依据新增关系数据,确定与新增节点存在关联关系的历史节点所在的群组,将确定出的各群组分别作为群组节点。
由于关系数据库中的历史节点均是已经聚类完成的,因此每个历史节点都属于一个群组,一个群组内所有历史节点的群组标签都是相同的,这在后续步骤中将会体现。举个例子,假设某个新增节点与历史节点n存在关联关系,该历史节点n属于某个群组,该群组的群组标签为M,那么将该群组看做是一个节点,即群组节点。
在104中,将各发送节点的群组标签发送至与其存在关联关系的节点,其中新增节点初始的群组标签为新增节点的标签。
在本发明实施例中,各节点所在群组标签采用的是该群组中节点自身标签中的一个,从后续步骤中将可以看出。作为新增节点而言,由于尚未被划分群组,可以将其自身标签作为初始所在的群组标签。
节点的标签可以采用节点标识、节点编号等能够唯一标识该节点的信息。例如当节点为用户的注册账户时,节点的标签可以采用账户编号。
若本步骤是步骤102直接触发的,即不存在与新增节点存在关联关系的历史节点,那么本步骤中的发送节点仅包括新增节点。即各新增节点分别向与其存在关联关系的节点发送群组标签。
若本步骤是步骤103之后触发的,即存在与新增节点存在关联关系的历史节点,那么本步骤中的发送节点包括新增节点,以及在步骤103中确定出的群组节点。即各新增节点和群组节点分别向与其存在关联关系的节点发送群组标签。
在105中,依据预设的选择策略,为接收到标签的节点选择该节点的群组标签与接收到的标签中的一个,利用选择的标签替换该节点的群组标签。
同样,如果步骤104是步骤102触发的,那么接收到标签的节点也仅包含新增节点。如果步骤104是步骤103之后触发的,那么接收到标签的节点既包含新增节点,也包含群组节点。
将接收到标签的节点接收到的标签与该节点的群组标签进行比较,依据预设的选择策略,从接收到的标签与自身的群组标签中选择一个,如果选择的是接收到的标签,则利用接收到的标签替换数据库中记录的该节点的群组标签。如果选择的是自身的群组标签,则可以无需对关系数据库中记录的该节点的群组标签进行替换。需要说明的是,如果群组节点选择的是接收到的标签,那么在进行关系数据库中的群组标签替换时,可以将该群组节点所包含所有节点的群组标签均进行替换。
其中上述预设的选择策略对于所有节点而言,都必须采用相同的选择策略,以使得存在关联关系的节点最终选择出来的群组标签是一致的。例如可以采用以下选择策略中的其中一个:
策略1:比较接收到的标签和自身的群组标签,选择其中的最小值。
策略2:比较接收到的标签和自身的群组标签,选择其中的最大值。
对于标签而言,由于其采用的可能是标识、编号等信息,如果是可以直接进行大小比较的标签类型,例如编号,则直接进行值的大小比较,选择其中的最小值或最大值。如果是不能直接进行大小比较的标签类型,例如账户标识,则可以采用计算机系统的字符编码方式对账户标识进行编码后,利用编码后得到的值进行大小比较。
在106中,判断是否存在节点的群组标签发生变化,如果是,则转至步骤104;否则,执行107。
只要存在节点的群组标签发生了变化,其中新增节点的群组标签可能会发生变化,群组节点(即历史节点)的群组标签也可能会发生变化,则说明群组的划分可能尚未完成,则继续转至步骤104重复执行,直至所有节点的群组标签不发生变化。
在107中,记录或输出属于同一群组的节点以及各节点的关联关系,其中群组标签相同的节点属于同一群组。
最终,当所有节点的群组标签不再发生变化,依据关系数据库中记录的各节点的群组标签,将具有相同群组标签的节点确定为同一群组。可以依据关系数据库中的记录,输出各群组的节点以及各节点的关联关系。
下面以账户关系数据的维护为例,对本发明实施例提供的方法进行描述。
对于初始的第一个周期而言,关系数据库中尚不存在历史账户。获取新增账户数据,其中包括新增账户编号和属性信息。通过新增账户的属性信息,诸如采用的身份证件信息、绑定的银行卡信息、填写的用户地址信息等等,在本实施例中,可以将具备共同属性的账户确定为存在关联关系的账户,例如采用相同身份证件信息的账户之间存在关联关系,绑定同一银行卡的账户之间存在关联关系,对应相同用户地址信息的账户之间存在关联关系。
新增账户分别将自身的编号作为所在群组标签,然后分别向与其存在关联关系的账户发送其群组标签。举个简单的例子,假设新增账户包括:
账户001、账户002、账户003、账户004、账户005、账户006。
其中,账户001与账户002存在关联关系,账户002又与账户003存在关联关系,账户004与账户005、账户006存在关联关系。
分别将各账户的编号作为所在的群组标签,记录于关系数据库中,即初始时如表2所示。
表2
节点 |
存在关联关系的节点 |
所在群组标签 |
账户001 |
账户002 |
001 |
账户002 |
账户001、账户003 |
002 |
账户003 |
账户002 |
003 |
账户004 |
账户005、账户006 |
004 |
账户005 |
账户004 |
005 |
账户006 |
账户004 |
006 |
然后分别将各账户所在的群组标签发送给与其存在关联关系的账户。例如:
账户001发送001给账户002,
账户002发送002给账户001和账户003,
账户003发送003给账户002,
账户004发送004给账户005和账户006,
账户005发送005给账户004,
账户006发送006给账户004。
对于接收到标签的各账户,比较接收到的标签和该账户所在的群组标签,取其中的最小值替换改账户所在的群组标签。例如账户001接收到002 后,仍选择001作为自身所在群组标签,账户002接收到001和003,与自身所在群组标签002比较后,选择001作为自身所在群组标签。经过所有账户的一轮比较和群组标签选择后,关系数据库中记录的数据变为如表3中所示。
表3
节点 |
存在关联关系的节点 |
所在群组标签 |
账户001 |
账户002 |
001 |
账户002 |
账户001、账户003 |
001 |
账户003 |
账户002 |
002 |
账户004 |
账户005、账户006 |
004 |
账户005 |
账户004 |
004 |
账户006 |
账户004 |
004 |
由表3中可以看出,除了账户001和账户004之外,其他账户所在的群组标签均发生了变化。再重复执行图1中所示的步骤102和步骤103,即:
账户001发送001给账户002,
账户002发送001给账户001和账户003,
账户003发送002给账户002,
账户004发送004给账户005和账户006,
账户005发送004给账户004,
账户006发送004给账户004。
同样,将各接收到标签的账户所在的群组标签与接收到的标签进行比较,选择其中的最小值替换改账户所在的群组标签。得到的关系数据库如表 4中所示。
表4
节点 |
存在关联关系的节点 |
所在群组标签 |
账户001 |
账户002 |
001 |
账户002 |
账户001、账户003 |
001 |
账户003 |
账户002 |
001 |
账户004 |
账户005、账户006 |
004 |
账户005 |
账户004 |
004 |
账户006 |
账户004 |
004 |
可见,只有账户003所在的群组标签发生了变化,重新执行图1中所示的步骤102和103,最终得到的关系数据库中的内容仍为表4中所示,所有账户的群组标签都没有变化。此时依据群组标签,可以确定出账户001、账户002、账户003属于同一群组,账户004、账户005和账户006属于同一群组,对应的数据网络可以如图3中所示。
对于再一个周期,当前关系数据库中如表4中所示的各账户为历史节点,假设新增节点为:账户007、账户008、账户009、账户010,其中账户007 与账户002、账户008存在关联关系,账户008又与账户005存在关联关系,账户009与账户010存在关联关系。
首先确定与各新增账户存在关联关系的群组节点,由于账户007与历史账户002存在关联关系,因此,将账户002所在的群组作为群组节点,假设称为群组账户1。同理,将账户005所在的群组作为群组账户2。将各新增节点的账户编号作为其群组标签,将各节点(包括新增节点和群组节点)的群组标签发送给与其存在关联关系的节点:
群组账户1发送001给账户007,
群组账户2发送004给账户008,
账户007发送007给群组账户1和账户008,
账户008发送008给群组账户2,
账户009发送009给账户110,
账户010发送010给账户009。
经过对接收到标签的各账户所在的群组标签和接收到的标签进行比较和选择替换后,得到的关系数据库如表5中所示。
表5
可见,账户007、账户008和账户010的群组标签都发生了变化,重复执行图1中所示的步骤104和步骤105:
群组账户1发送001给账户007,
群组账户2发送004给账户008,
账户007发送001给群组账户1和账户008,
账户008发送004给群组账户2,
账户009发送009给账户110,
账户010发送009给账户009。
得到的关系数据库如表6中所示。
表6
可见账户007的群组标签发生了变化,再次执行图1中的步骤104和步骤105:
群组账户1发送001给账户007,
群组账户2发送004给账户008,
账户007发送001给群组账户1和账户008,
账户008发送001给群组账户2,
账户009发送009给账户110,
账户010发送009给账户009。
得到的关系数据库如表7中所示。
表7
可见,群组账户2的群组标签发生了变化,再次执行图1中的步骤104 和步骤105后,得到的关系数据库仍如表7中所示。可以看出,由于新增账户的融合,账户001~账户008划分为同一群组,账户009和账户010划分为同一群组。
再假设,第三个周期来临,新增账户011和012,其中账户011与账户 003、账户012分别存在关联,那么将账户001、账户002和账户003所在的群组作为群组账户3。然后执行:
群组账户3发送001给账户011;
账户011发送011给群组账户3和账户012;
账户012发送012给账户011。
得到的关系数据库如表8中所示。
表8
再执行一轮:
群组账户3发送001给账户011;
账户011发送001给群组账户3和账户012;
账户012发送011给账户011。
得到的关系数据库如表9中所示。
表9
再执行一轮:
群组账户3发送001给账户011;
账户011发送001给群组账户3和账户012;
账户012发送001给账户011。
得到的关系数据库仍如表9中所示。通过本周期的操作可以看出,聚类过程仅涉及新增账户以及与新增账户存在关联关系的群组账户(即历史账户),对于与新增账户不存在关联关系的历史账户则不需要进行聚类处理。
后续周期的处理过程不再一一赘述。
下面结合图3对本发明实施例提供的装置进行详细描述,如图3中所示,本发明实施例提供的装置可以包括新增数据获取单元01、群组节点确定单元 02、聚类单元03和数据库维护单元04,还可以包括判断单元05和输出单元 06。其中,各组成单元的主要功能如下:
其中,新增数据获取单元01负责获取新增关系数据。由于关系数据的维护是定期执行的,因此新增数据获取单元01定期获取新增关系数据。新增关系数据包括新增节点以及该新增节点与其他新增节点或历史节点的关联关系。
其中新增关系数据可以由其他装置来确定,新增数据获取单元01从其他装置获取。也可以由新增数据获取单元01确定,即获取新增节点和历史节点的属性信息,依据属性信息确定与新增节点存在关联关系的节点,记录新增节点以及该新增节点与其他新增节点或历史节点的关联关系。
群组节点确定单元02负责依据新增关系数据,确定与新增节点存在关联关系的历史节点所在的群组,将各群组作为群组节点,触发聚类单元03。
聚类单元03受到触发后,重复执行以下操作,直至所有节点的群组标签不再发生变化:将发送节点的群组标签发送至与其存在关联关系的节点,发送节点包括新增节点和与新增节点存在关联关系的群组节点,新增节点初始的群组标签为新增节点的标签;依据预设的选择策略,为接收到标签的节点选择该节点的群组标签与接收到的标签中的一个,触发数据库维护单元利用选择的标签替换该节点的群组标签。
其中,节点的标签可以采用节点标识、节点编号等能够唯一标识该节点的信息。例如当节点为用户的注册账户时,节点的标签可以采用账户编号。
由于还存在这样的情况,即可能新增节点与历史节点不存在关联关系,或者在第一个关系数据的维护周期尚不存在历史节点。鉴于这种情况,判断单元 05可以首先判断是否存在与新增节点存在关联关系的历史节点,如果是,则触发群组节点确定单元02执行操作;否则,触发聚类单元03执行操作。聚类单元03在受到判断单元05触发执行操作时,仅将新增节点作为发送节点。这种情况下,仅在新增节点之间进行聚类,对历史节点的群组状况不会产生影响。
另外,聚类单元03在依据预设的选择策略,为接收到标签的节点选择该节点的群组标签与接收到的标签中的一个时,可以比较接收到标签的节点的群组标签与接收到的标签,选择其中的最小值;或者,比较接收到的标签的节点的群组标签与接收到的标签,选择其中的最大值。但需要对所有接收到标签的节点采用相同的选择策略,以使得存在关联关系的节点最终选择出来的群组标签是一致的。
对于标签而言,由于其采用的可能是标识、编号等信息,如果是可以直接进行大小比较的标签类型,例如编号,则直接进行值的大小比较,选择其中的最小值或最大值。如果是不能直接进行大小比较的标签类型,例如账户标识,则可以采用计算机系统的字符编码方式对账户标识进行编码后,利用编码后得到的值进行大小比较。
数据库维护单元04负责在关系数据库中维护各节点的关联关系以及各节点的群组标签。当所有节点的群组标签不再发生变化后,可以确定关系数据库中群组标签相同的节点属于同一群组,输出单元06可以输出属于同一群组的节点以及各节点的关联关系。
作为一种使用场景,该装置可以应用于账户关系数据的处理,并且可以广泛应用于诸如支付平台、社交网络平台、购物平台等多种服务平台。更优选地,还可以应用于包含多种子服务平台的服务提供平台,诸如一个服务提供商旗下可能具有多种子服务平台,例如阿里巴巴旗下具有淘宝、天猫等购物平台,来往、旺旺等即时通信平台,支付宝等支付平台,等等,用户可能在不同子服务平台注册了不同的账户,通过本发明实施例提供的方式,就可以将各账户依据关联关系进行聚类。当账户作为节点时,通常可以将存在共同属性的账户作为存在关联关系的节点,标签可以采用账户编号。
上述的装置可以设置于需要对关系数据进行处理的任意设备,例如设置于服务器,该服务器具有获取新增关系数据的接口,以及对关系数据库的维护接口。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等) 或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。