具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
对账可以理解为核对账目,是指在会计核算中,为保证账簿记录正确可靠,对账簿中的有关数据进行检查和核对的工作。随着计算机和互联网技术的发展,利用计算机技术进行对账处理,大大提高了对账处理的效率和准确性。在会计电算化环境下,通常情况下系统提供自动对账功能,即系统根据用户设置的对账条件进行逐笔检查,对达到对账标准的记录进行勾对,未勾对的即为未达账项。系统进行自动对账的条件一般可以包括业务发生的日期、结算式、结算票号、发生金额相同等。其中,发生金额相同是账的基本条件,对于其他条件,用户可以根据需要自定义选择。
本说明书一个场景实例中,对账数据处理包括清算数据和业务数据,将清算数据和业务数据进行核对,确定数据是否符合要求,完成对账数据处理。其中,清算数据可以理解为清算机构(可以理解为支付交易金额对应的机构)提供的交易清算明细,业务数据可以理解为业务平台(可以理解为交易平台)接收到的业务交易明细。例如:本说明书一个示例中,对账数据处理可以应用在线上支付场景,支付平台有合作的支付机构,用户可以在支付平台上绑定合作的支付机构对应的支付方式,如:信用卡、银行卡、银联卡、电子钱包等方式。用户在交易时,可以通过支付平台采用绑定的支付方式进行支付。与支付平台合作的支付机构,每隔指定时间会对使用该支付机构在支付平台完成的交易进行清算,并将清算数据发送给支付平台。支付平台可以将接收到的清算数据与支付平台本地存储的业务数据进行核对,确定交易数据是否一致,即对账数据处理。
例如:支付平台A与银行M借记卡有合作业务,用户可以在支付平台A上绑定自己的银行M借记卡,使用银行M借记卡进行交易支付。银行M每天可以对当天使用银行M借记卡在该支付平台A上完成的交易进行清算,并将清算数据发送给该支付平台A。支付平台A可以将接收到的清算数据和支付平台本地存储的业务数据(如:使用银行M借记卡支付的交易记录数据)进行核对,确定交易数据是否一致。
当然,根据实际需要清算数据和业务数据还可以理解为其他的含义,如:业务数据可以是财务部门统计的财务流水数据,清算数据可以是公司其他部门如:销售、行政、技术等部门统计的财务流水数据。清算数据和业务数据分表表示需要对账处理的两方数据,具体可以根据对账事务的应用场景定义清算数据和业务数据的含义。
本说明书实施例中提供了一种对账数据处理方法,通过对清算数据进行分表、分组处理,并依据清算数据的分组情况,对业务数据进行分组,对分组后的业务数据和清算数据以单组形式进行对账处理。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度,并且,仅以机构方流水即清算数据为参考,业务增长时调整分组方参数时,不会出现两方分组不一致的情况,提高了对账数据处理的准确性。
本说明书中对账数据处理方法可以应用在客户端或服务器中,客户端可以是智能手机、平板电脑、智能可穿戴设备(智能手表、虚拟现实眼镜、虚拟现实头盔等)、智能车载设备等电子设备。
具体的,图1是本说明书一个实施例中对账数据处理方法的流程示意图,如图1所示,本说明书一个实施例中提供的对账数据处理方法可以包括:
步骤102、预先对接收到的待对账处理的清算数据进行分表处理,并将各清算数据表中的清算数据进行分组处理,确定出清算数据对应的清算分表号和清算分组号。
在具体的实施过程中,本说明书实施例中的对账数据处理可以应用在相互合作的两个机构或两个平台,用于核对这两个机构或两个平台的数据即账目是否一致。本说明书实施例提供的对账数据处理方法可以应用在对账终端上,对账终端可以理解为能够进行对账处理的终端,可以是交易平台。参见上述实施例的记载,清算数据可以由负责支付的机构或终端发送,如:上述实施例中,清算数据可以由银行M所在的终端发送。清算终端可以每隔一定时间对清算周期内的交易数据进行统计、清算,获得清算数据。清算数据可以包括清算终端统计的在清算周期内交易数据明细,可以理解为清算终端统计的流水,如清算数据可以包括:每一笔交易的交易流水号、交易金额、交易日期、交易双方的用户名、交易商品名称等。
接收到清算终端发送的清算数据后,对账终端可以对清算数据进行分表和分组处理,先将清算数据进行分表后,再将各清算数据表中的清算数据进行分组,确定各个清算数据对应的清算分表号和清算分组号。
例如:支付平台A与银行M借记卡有合作业务,用户可以在支付平台A上绑定自己的银行M借记卡,在使用支付平台进行交易时,用户可以选择绑定的银行M借记卡进行交易支付。银行M每天可以对当天使用银行M借记卡在支付平台A上完成的交易进行清算,即银行M可以统计当天在支付平台A上使用银行M借记卡进行的交易数据,获得清算当天的清算数据,并将清算数据发送给支付平台A。其中,银行M发送的清算数据可以包括:清算当天在在支付平台A上使用银行M借记卡进行交易的每一笔交易的交易流水号、交易金额交易日期、交易双方的用户名、交易商品名称、以及清算当天的交易总额等中的一个或多个数据。支付平台A接收到银行M发送的清算数据后,可以先对清算数据进行分表,再对各个表中的清算数据进行分组,获得各个清算数据的清算分表号和清算分组号。
需要说明的是,接收到的清算数据可能会被压缩、加密,可以根据通信协议或加解密算法对接收到的清算数据进行解析后,再对清算数据进行分表和分组处理。
步骤104、根据所述清算分表号和所述清算分组号,对本地业务数据表中存储的待对账处理的业务数据进行分组,并记录各业务数据对应的业务分组号。
在具体的实施过程中,将接收到的清算数据进行分表和分组处理后,触发对账指令时,可以根据清算数据的分表和分组情况,对本地存储的待对账处理的业务数据进行分组。可以先对本地的业务数据进行分表处理,将业务数据存储到本地的业务数据表中,再根据各个清算数据表中各组清算数据对应的交易流水号,对业务数据进行分组。
例如:支付平台A与银行M借记卡有合作业务,用户可以在支付平台A上绑定自己的银行M借记卡,在使用支付平台进行交易时,用于可以选择绑定的银行M借记卡进行交易支付。银行M对清算当天使用银行M借记卡在支付平台A上完成的交易进行清算获得清算数据后,将清算数据发送给支付平台A,支付平台A对接收到的清算数据进行分表和分组处理。需要进行对账处理时,即触发对账命令后,支付平台A可以根据清算数据对应的分表和分组情况,将清算数据和业务数据中对应于同一笔交易的数据的标记为相同的分组号。如:获取清算数据中一笔交易的清算分表号和清算分组号,在业务数据中获取同一笔交易的业务数据信息,将该业务数据信息划分为同样的分表号和分组号。例如:获取清算数据中一笔交易信息的清算分表号为1和清算分组号0,在业务数据中获取对应于同一笔交易的业务数据信息,该业务数据信息的业务分表号设置为1,并将该业务数据信息的业务分组号标记为0。以此类推,完成对本地存储的业务数据的分组。
此外,支付平台A还可以对支付平台A本地存储的清算当天使用银行M借记卡进行交易的业务数据进行分表,将本地的业务数据存储在业务数据表中。其中,支付平台A对本地存储的业务数据的分表方式与对清算数据进行分表的方式相同,如:清算数据和业务数据均平均分配到指定数量的数据表中。在触发对账命令后,支付平台A可以根据清算数据的分组和分表信息,依次对各个业务数据表中的业务数据进行分组,如:先对业务分表号为1的业务数据表中的业务数据进行分组,获取清算分表号为1的清算数据a,以及清算数据a的清算分组号0,在业务分表号为1的业务数据表中的获取对应于同一笔交易的业务数据b,将业务数据b的业务分组号也设置为0。以此类推,完成对本地存储的业务数据的分组。
当然,根据实际使用需要,还可以采用其他的方式对本地存储的业务数据进行分组,本说明书实施例不作具体限定。
步骤106、将清算分组号和业务分组号作为对账条件,对清算数据和业务数据进行对账数据处理。
对本地存储的对账数据进行分组结束后,可以将清算分组号和业务分组号作为对账条,对清算数据和业务数据进行对账处理。如:依次对清算分组号和业务分组号相同,且清算分表号和业务分表号相同的清算数据和业务数据进行对账处理。例如:先对清算数据表1和业务数据表1中的数据进行对账处理,可以将清算分组号和业务分组号相同作为对账条件,依次核对清算分表号为1的清算数据表中的清算数据和业务分表号为1的业务数据表中的业务数据。如:先对清算分组号为0的清算数据与业务分组号为0的业务数据进行对账处理,核对两组数据是否一致,再核对清算分组号为1、业务分组号为1的数据,以此类推,直至清算分表号为1的清算数据表中的清算数据和业务分表号为1的业务数据表中的业务数据对账结束,再核对其他清算数据表和业务数据表中的数据。此外,根据实际需要还可以包括其他的对账条件,如:交易日期、交易金额等,本说明书实施例不作具体限定。
需要说明的是,本说明书实施例中的清算数据表和业务数据表,并没有实质的区别,仅仅是名称的区别,均是用于保存数据的数据表,本说明书实施例为了区分保存清算数据和业务数据的数据表而分别命名。同样的,清算分组号和业务分组号,清算分表号和业务分表号,也没有实质的区别,仅仅是名称的区别。
此外,清算数据和业务数据的分组参数,如分为多少组,可以根据实际业务处理的量级以及系统的处理能力进行设置,本说明书实施例不作具体限定。
本说明书实施例提供的对账数据处理方法,以机构方即清算终端统计的清算数据即流水为参考,在清算终端的流水落地过程对流水进行分表分组处理。在实际对账处理时,以清算终端的分组情况作为参考,对本地存储的业务数据进行分组,对分组后的业务数据和清算数据以单组形式进行对账处理。对本地存储的业务数据的打标与对账动作控制在单事务内,从而确保在事务内部完成打标和对账处理,实现了对账事务量级的控制。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度,并且,仅以机构方流水即清算数据为参考,业务增长时调整分组参数时,不会出现两方分组不一致的情况,提高了对账数据处理的准确性。
在上述实施例的基础上,本说明书一些实施例中,所述对接收到的待对账处理的清算数据进行分表处理,并将各清算数据表中的清算数据进行分组处理,包括:
在所述清算数据存储到本地之前,根据预设的分表数,计算所述清算数据对应的清算分表号;
计算各数据表中的清算数据对应的清算分组号,将所述清算数据标记上对应的清算分组号;
将所述清算数据保存到对应的清算数据表中。
在具体的实施过程中,当接收到清算终端将清算数据后,在将清算数据存储到本地即清算数据落地之前,可以根据预设的分表数,计算清算数据对应的清算分表号。分表数可以理解为分表总数量,即将清算数据分配到多少个清算数据表中。例如:预先设置分表数为100,若当前的清算数据的量级为800W,则每个清算数据表中需要分配8W个清算数据。每个清算数据表可以对应有一个清算分表号,具体可以根据清算数据的流水号,依次确定出清算数据对应的清算分表号,或根据交易时间对清算数据进行分表处理,还可以随机将清算数据进行分表处理,本说明书实施例不作具体限定。再对计算各个清算数据表中的清算数据对应的分组号,如可以预设设置分组数,将各个清算数据表中的清算数据平均分配到各组中,标记各个清算数据对应的清算分组号。最后,将标记好的清算数据存储到对应的清算数据表中,完成清算数据的落地保存。
本说明书实施例,可以将清算终端发送的清算数据在落地之前,对清算数据进行分表和分组打标处理,为后续以单组为单位进行对账处理,提供了数据依据。
在上述实施例的基础上,本说明书一些实施例中,所述计算各数据表中的清算数据对应的清算分组号,包括:
根据清算数据流水量级、所述分表数和预设的单个分组流水量级,确定所述清算数据对应的分组数;
根据所述分组数,利用哈希算法,计算各清算数据表中的清算数据对应的清算分组号。
清算数据流水量级可以理解为接收到的清算数据的流水数量,如:若接收到的清算数据有800W条,则可以确定当前的清算数据流水量级为800W。单个分组流水量级可以理解为数据库支持的处理单事务的量级,如:根据数据库的数据处理能力,确定当前数据库支持单事务量级为1W,则可以确定单个分组流水量级为1W。单个分组流水量级的具体值可以根据实际数据库的数据处理能力以及当前需要处理的数据的量级预先设置,本说明书实施例不作具体限定。在具体的实施过程中,在对清算数据进行分组打标处理时,可以根据当前的清算数据流水量级、预设的分表数以及预设的单个分组流水量级,确定出清算数据对应的分组数。例如:若接收到的清算数据的清算数据流水量级为800W,预设的分表数为100,预设的单个分组流水量级为1W,则可以确定每个清算数据表中的量级为8W,需要将每个清算数据表中的清算数据分为8组,才能满足单个分组流水量级的要求,因此,确定出接收到的清算数据的分组数为8。
确定出清算数据的分组数后,可以利用哈希算法,将各个清算数据表中的清算数据分配到指定的组中,确定出各个清算数据对应的清算分组号,并将清算数据标记上对应的清算分组号。其中,使用哈希算法计算各个清算数据对应的分组数的具体方式,可以根据实际需要进行选择,本说明书实施例不作具体限定。
本说明书实施例,基于数据库的处理能力设置单个分组流水量级,将清算数据进行分组打标处理,通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度。并且,当业务出现增长时,分组细化参数调整(如:调整单个分组流水量级)即可针对单表下流水进行分组扩展,支持更多分组,适配业务的增长,适用性比较强。
在上述实施例的基础上,本说明书一些实施例中,所述根据所述清算分表号和所述清算分组号,对本地业务数据表中存储的待对账处理的业务数据进行分组,包括:
预先将本地存储的待对账处理的业务数据存储到指定数量的业务数据表中,记录所述业务数据对应的业务分表号,其中,所述业务数据的分表规则与所述清算数据的分表规则相同;
依次获取各清算数据表中各组清算数据的流水号集合;
根据所述流水号集合,在本地存储的目标业务数据表中获取与所述流水号集合相匹配的业务数据,所述目标业务数据表的业务分表号与所述流水号集合对应的清算数据的清算分表号相同;
将所述流水号集合对应的清算数据的清算分组号作为获取到的业务数据的业务分组号,将所述获取到的业务数据标记上业务分组号,直至业务数据均被标记上对应的业务分组号;
相应地,所述将清算分组号和业务分组号作为对账条件,对清算数据和业务数据进行对账数据处理,包括:
依次对清算分表号与业务分表号相同、且清算分组号和业务分组号相同的清算数据和业务数据进行对账处理,直至所述清算数据和/或所述业务数据均对账处理完成。在具体的实施过程中,对账终端可以将预先对本地的业务数据进行分表存储,即将本地存储的待对账处理的业务数据存储到指定数量的业务数据表中。其中,业务数据对应的分表数与清算数据对应的分表数相同,例如:预设的清算数据的分表数为100,则业务数据的分表数也为100。可以采用相同的分表规则对业务数据和清算数据进行分表处理,如:依据交易流水号、交易时间等,依次将清算数据和业务数据分配到对应的数据表中。其中,清算分表号和业务分表号的编号方式可以相同,可以将对应于同一笔交易的清算数据和业务数据分别分配到编号相同的清算数据表和业务数据表中。例如:清算数据a和业务数据b对应于同一笔交易,可以将清算数据a保存在清算分表号为1的清算数据表中,将业务数据b保存在业务分表号为1的业务数据表中。
对本地存储的业务数据分表存储,并对接收到的清算数据分表存储、分组打标后,可以依次获取各个清算数据表中各组清算数据的流水号集合,流水号可以表示用于标识交易数据或需对账处理的数据的字符串,如:交易流水号等。再根据获取到的流水号集合,在对应的业务数据表中获取与流水号集合相匹配的业务数据,与流水号集合相匹配的业务数据可以理解为业务数据表中有相同的流水号的业务数据,或与流水号集合对应的清算数据属于同一笔交易的业务数据。将获取到的业务数据标记上对应的业务分组号,直至所有的业务数据表中的业务数据均被标记上对应的业务分组号。分组结束后,可以依次对各个清算数据表和业务数据表中的分表号、分组号相同的数据进行对账处理,直至所有的数据对账处理完成。
例如:若清算数据表和业务数据表均为100个,先获取第1个清算数据表中各组清算数据对应的流水号集合,再根据获取到的流水号集合对第一个业务数据表中的业务数据进行打标分组。再对第2个清算数据表和业务数据表做相同的数据处理,直至对所有的业务数据表中的业务数据均打标分组完成。如:获取第1个清算数据表中清算分组号为0的清算数据的流水号集合,在本地存储的第1个业务数据表中获取与该流水号集合相匹配的业务数据,并将获取到的业务数据标记上业务分组号为0,以此类推,完成对所有业务数据的打标分组处理。再依次对各个清算数据表和业务数据表中的数据进行对账处理,如先对第1个清算数据表和第1个业务数据表进行对账处理,依次对分组号相同的清算数据和业务数据进行对账处理,直至第1个清算数据表和第1个业务数据表对账处理结束,再对第2个清算数据表和第2个业务数据表进行对账处理,直至第100个清算数据表和第100个业务数据表的数据对账处理结束。或者,也可以同时对分表号相同且分组号也相同的清算数据和业务数据进行对账处理,如:采用多线程对账,同时对多个组的数据进行对账。
本说明书实施例,以清算终端的清算数据的分组情况作为基础,对本地的业务数据做分组处理,业务数据和清算数据均分组结束后,再以单组的形式进行对账处理。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度,当业务出现增长时,分组细化参数调整即可针对单表下流水进行分组扩展,支持更多分组,适配业务的增长。另外,本说明书实施例的流水分组仅以机构方流水为参考,业务增长时调整分组参数,不会出现两方分组不一致的情况,提高了对账数据处理的准确性。
在上述实施例的基础上,本说明书一些实施例中,所述根据所述清算分表号和所述清算分组号,对本地业务数据表中存储的待对账处理的业务数据进行分组,包括:
获取指定清算分表号对应的指定清算数据表中各组清算数据的流水号集合;
根据所述流水号集合,在本地存储的业务数据中获取与所述流水号集合相匹配的业务数据;
将所述流水号集合对应的清算分组号作为与所述流水号集合相匹配的业务数据的业务分组号,将所述获取到的业务数据标记上业务分组号,直至所述指定清算数据表中的清算数据对应的业务数据均被分组标记;
相应地,所述将清算分组号和业务分组号作为对账条件,对清算数据和业务数据进行对账数据处理,包括:
对指定清算数据表中清算分组号和业务分组号相同的清算数据和业务数据进行对账数据处理。
在具体的实施过程中,在对清算数据分组打标处理后,可以获取指定清算数据表中各组清算数据对应的流水号集合,再获取本地存储的与流水号集合相匹配的业务数据,并将流水号集合对应的清算数据的清算分组号作为对应的业务数据的业务分组号进行打标。依照此方法,将指定清算数据表中的清算数据对应的业务数据均打标完成后,对打标的业务数据和清算数据进行对账处理,如:可以对具有相同分组号的业务数据和清算数据进行核对。其中,流水号集合以及与流水号集合相匹配的业务数据的含义与上述实施例的记载一致,此处不再赘述。
例如:若清算数据表为100个,将第1个清算数据表作为指定清算数据表。可以获取第1个清算数据表中各组清算数据对应的流水号集合,再根据获取到的流水号集合,在本地存储的业务数据中获取与该流水号集合相匹配的业务数据,并将获取到的业务数据标记上对应的业务分组号。如:获取第1个清算数据表中清算分组号为0的清算数据的流水号集合,在本地存储业务数据中获取与该流水号集合相匹配的业务数据,并将获取到的业务数据标记上业务分组号为0,以此类推,完成对第1个清算数据表中对应的所有业务数据的打标分组处理。再对第1个清算数据表中的清算数据与打标的业务数据进行对账处理,如:以分组号为条件,将第1个清算数据表中的清算数据与具有相同分组号业务数据进行核对。
在对业务数据进行分组打标时,也可以采用上述实施例记载的方法,先对业务数据进行与清算数据相同方式的分表处理后,在对应的业务数据表中,获取与流水号集合相匹配的业务数据进行打标,以提高业务数据打标效率。
本说明书实施例,在对账指令触发时,可以根据指定清算数据表中各组清算数据的流水号集合,对业务数据进行分组打标,根据分组号进行对账数据处理。可以实现对指定的清算数据表中数据进行对账数据处理,不需要将所有的业务数据均分组打标完成后再进行对账,实现针对性对账业务处理的功能。
在上述实施例的基础上,本说明书一些实施例中,所述将清算分组号和业务分组号作为对账条件,对清算数据和业务数据进行对账数据处理,包括:
依次将各所述清算数据表作为所述指定清算数据表,根据所述指定清算数据表中各组清算数据对应的流水号集合,对本地存储的业务数据进行标记分组,更新本地存储的业务数据对应的业务分组号;
根据所述清算分组号和更新后的业务分组号,进行对账数据处理,直至所述清算数据和/或所述业务数据均对账处理完成。
在具体的实施过程中,可以依次将清算数据表作为指定清算数据表,并采用上述实施例的方法对业务数据进行分组打标,更新本地存储的业务数据的业务分组号。根据更新后的业务分组号和指定清算数据表中的清算分组号,对业务数据和清算数据进行对账处理。对指定清算数据表中的清算数据和对应的业务数据对账处理结束后,可以更新清算数据和业务数据的处理状态,方便在对下一个数据表中的数据进行对账处理时,更新业务数据的分组号。当标记有分组号的业务数据对账处理结束后,可以进行下一次的分组标记和对账处理。
例如:若清算数据表和业务数据表均为100个,先将清算数据表1作为指定清算数据表,可以采用上述实施例记载的方法,获取清算数据表1中各组清算数据的流水号集合,并根据流水号集合对业务数据进行打标分组。之后根据清算分组号和业务分组号,对清算数据表1中各组清算数据与对应的业务数据进行对账处理,直至清算数据表1中的清算数据对账处理结束。如:若每个表对应有8个组,分组号为0-7,根据清算数据表1各组清算数据的流水号集合对业务数据进行打标分组。分组结束后,将清算分组号为0的清算数据与业务分组号为0的业务数据进行对账处理,以此类推,直至8个组的数据对账处理结束。再将清算数据表2作为指定清算数据表,采用相同的方法,获取清算数据表2中各组清算数据的流水号集合,并根据流水号集合对业务数据进行打标分组,更新业务数据的业务分组号,如:将与清算数据表1对应的业务数据的分组号标记清除,将清算数据表2对应的业务数据进行打标分组。之后对清算数据表2中各组清算数据与对应的业务数据进行对账处理,以此类推,直至100个清算数据表中的清算数据对账处理结束。
本说明书实施例,在单个表的基础上,依次分表分组进行对账处理。对账事务触发后,参考指定清算数据表中清算数据的分组信息,对业务数据进行分组打标,根据分组号进行对账数据处理。再对下一个清算数据表内的各组清算数据对应的业务数据进行打标,再进行对账事务处理。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度,业务数据的打标与对账动作控制在单事务内,从而确保在事务内部完成打标和对账处理,实现对账数据处理的量级控制。并且依次以表为单位对而延误数据进行分组打标,不需要统一对业务数据进行分组,提高了对账事务处理的里活性。
图2是本说明书一个实施例中对账数据处理的框架示意图,图2中“我方”可以理解为对账终端,“机构方”可以理解为清算终端,“流水”可以理解为交易流水信息。如图2所示,针对我方流水落地时,指定单表维度下不做特殊处理;机构方流水落地时,针对机构方流水在单表维度进行分组打标计算,即根据预期单个分组流水量级对流水号落地阶段计算分组号,从而使得机构方流水落地后已完成打标动作。在现有对账处理操作上,根据机构流水分组维度捞取整个分组下流水号集合,并根据流水号集合对我方流水进行分组打标,从而达到指定分组在两方流水下集合的可控,进而达到对账事务控制的目的。需要注意的是,我方流水打标与对账动作控制在单事务内,从而确保在事务内部完成打标和对账处理,控制事务量级。
下面结合图2,介绍本说明书一个场景实例中,对账数据处理的过程:
如图2所示,本说明书一个场景实例中,机构方可以是银行M,我方与银行M借记卡有合作业务,用户可以在我方的终端上利用自己的银行M借记卡进行交易支付。若银行M借记卡支付,每日量级为800W,分表数为100,单表量级即8W,但实际数据库支持单事务量级为1W,需要进行对账事务控制在1W维度。如图2所示,我方流水实时支付阶段,可以正常计算分表,并完成落地动作,即将我方本地存储的业务数据进行分表存储。机构方流水(即银行M统计的使用在我方系统中进行交易的交易流水)在清算日完成清算后,将清算数据发送给我方,我方系统解析银行M发送的清算数据后,可以获取到机构方的清算明细记录。每条明细落地前即存储到我方数据库之前,我方系统可以对银M的清算数据做如下处理:第一步、计算分表位,即计算各条明细对应的清算分表号。第二步、计算分组,使用Hash(即哈希算法)方法对单表流水Hash在8个桶中,从而达到单表下每个分组在1W内,清算分组号的编号可以为0-7。第三步,对账触发,捞取机构流水下单个分组的数据,以组为单位进行对账数据处理。例如:分组号为0的分组内,机构方流水量级在1W内,根据分组号对应的机构方流水号集合,更新我方流水的流水号集合内流水的分组号,将我方对应的流水信息的分组号标记为0,进行打标。对账触发时捞取两边分组号为0的流水从而控制对账事务处理在1W级流水处理。
本说明书实施例,通过机构流水落地阶段,对流水在单表维度下进行分组打标动作,并在对账处理时,控制单事务内,依据机构方流水号集合为参考进行我方流水的分组打标动作。在对账处理时,捞取指定分组下两方流水进行对账处理,从而控制对账事务。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度,当业务出现增长时,分组细化参数调整即可针对单表下流水进行分组扩展,支持更多分组,适配业务的增长。另外,在我方流水与机构方流水落地时均进行分组计算不同,本说明书实施例的流水分组仅以机构方流水为参考,业务增长时调整分组方法参数,不会出现两方分组不一致的情况。本说明书实施例,支持业务增长下分组适应配置变化,可以准确控制流水对账事务的量级,且分组增加过程自适应,不涉及两方流水分组不一致问题,提高对账数据处理的准确性。同时,避免了因采用流水号区间控制对账操作区间,若业务流水号不连续,不能控制业务处理流水量级的问题。
本说明书中上述方法的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。相关之处参考方法实施例的部分说明即可。
基于上述所述的对账数据处理方法,本说明书一个或多个实施例还提供一种对账数据处理装置。所述的装置可以包括使用了本说明书实施例所述方法的系统(包括分布式系统)、软件(应用)、模块、组件、服务器、客户端等并结合必要的实施硬件的装置。基于同一创新构思,本说明书实施例提供的一个或多个实施例中的装置如下面的实施例所述。由于装置解决问题的实现方案与方法相似,因此本说明书实施例具体的装置的实施可以参考前述方法的实施,重复之处不再赘述。以下所使用的,术语“单元”或者“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
具体地,图3是本说明书提供的对账数据处理装置一个实施例的模块结构示意图,如图3所示,本说明书中提供的资源数据更新装置可以包括:清算数据分组模块31、业务数据分组模块32、对账处理模块33,其中:
清算数据分组模块31,可以用于预先对接收到的待对账处理的清算数据进行分表处理,并将各清算数据表中的清算数据进行分组处理,确定出清算数据对应的清算分表号和清算分组号;
业务数据分组模块32,可以用于根据所述清算分表号和所述清算分组号,对本地业务数据表中存储的待对账处理的业务数据进行分组,并记录各业务数据对应的业务分组号;
对账处理模块33,可以用于将清算分组号和业务分组号作为对账条件,对清算数据和业务数据进行对账数据处理。
本说明书实施例提供的对账数据处理方法,以机构方即清算终端统计的清算数据即流水为参考,在清算终端的流水落地过程对流水进行分表分组处理。在实际对账处理时,以清算终端的分组情况作为参考,对本地存储的业务数据进行分组,对分组后的业务数据和清算数据以单组形式进行对账处理,实现了对对账事务处理的控制。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度,并且,仅以机构方流水即清算数据为参考,业务增长时调整分组参数时,不会出现两方分组不一致的情况,提高了对账数据处理的准确性。
在上述实施例的基础上,本说明书一些实施例中,所述清算数据分组模块包括:
清算数据分表单元,用于在所述清算数据存储到本地之前,根据预设的分表数,计算所述清算数据对应的清算分表号;
清算数据分组单元,用于计算各数据表中的清算数据对应的清算分组号,将所述清算数据标记上对应的清算分组号;
数据落地单元,用于将所述清算数据保存到对应的清算数据表中。
本说明书实施例,可以将清算终端发送的清算数据在落地之前,对清算数据进行分表和分组打标处理,为后续以单组为单位进行对账处理,提供了数据依据。
在上述实施例的基础上,本说明书一些实施例中,所述清算数据分组单元具体用于:
根据清算数据流水量级、所述分表数和预设的单个分组流水量级,确定所述清算数据对应的分组数;
根据所述分组数,利用哈希算法,计算各清算数据表中的清算数据对应的清算分组号。
本说明书实施例,基于数据库的处理能力设置单个分组流水量级,将清算数据进行分组打标处理,通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度。并且,当业务出现增长时,分组细化参数调整即可针对单表下流水进行分组扩展,支持更多分组,适配业务的增长,适用性比较强。
在上述实施例的基础上,本说明书一些实施例中,所述业务数据分组模块具体用于:
预先将本地存储的待对账处理的业务数据存储到指定数量的业务数据表中,记录所述业务数据对应的业务分表号,其中,所述业务数据的分表规则与所述清算数据的分表规则相同;
依次获取各清算数据表中各组清算数据的流水号集合;
根据所述流水号集合,在本地存储的目标业务数据表中获取与所述流水号集合相匹配的业务数据,所述目标业务数据表的业务分表号与所述流水号集合对应的清算数据的清算分表号相同;
将所述流水号集合对应的清算数据的清算分组号作为获取到的业务数据的业务分组号,将所述获取到的业务数据标记上业务分组号,直至业务数据均被标记上对应的业务分组号;
相应地,所述对账处理模块具体用于:
依次对清算分表号与业务分表号相同、且清算分组号和业务分组号相同的清算数据和业务数据进行对账处理,直至所述清算数据和/或所述业务数据均对账处理完成。
本说明书实施例,以清算终端的清算数据的分组情况作为基础,对本地的业务数据做分组处理,业务数据和清算数据均分组结束后,再以单组的形式进行对账处理。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度,当业务出现增长时,分组细化参数调整即可针对单表下流水进行分组扩展,支持更多分组,适配业务的增长。另外,本说明书实施例的流水分组仅以机构方流水为参考,业务增长时调整分组参数,不会出现两方分组不一致的情况,提高了对账数据处理的准确性。
在上述实施例的基础上,本说明书一些实施例中,所述业务数据分组模块具体用于:
获取指定清算分表号对应的指定清算数据表中各组清算数据的流水号集合;
根据所述流水号集合,在本地存储业务数据中获取与所述流水号集合相匹配的业务数据;
将所述流水号集合对应的清算分组号作为与所述流水号集合相匹配的业务数据的业务分组号,将所述获取到的业务数据标记上业务分组号,直至所述指定清算数据表中的清算数据对应的业务数据均被分组标记;
相应地,所述对账处理模块还用于:
对指定清算数据表中清算分组号和业务分组号相同的清算数据和业务数据进行对账数据处理。
本说明书实施例,在对账指令触发时,可以根据指定清算数据表中各组清算数据的流水号集合,对业务数据进行分组打标,根据分组号进行对账数据处理。可以实现对指定的清算数据表中数据进行对账数据处理,不需要将所有的业务数据均分组打标完成后再进行对账,实现针对性对账业务处理的功能。
在上述实施例的基础上,本说明书一些实施例中,所述业务数据分组模块还用于:
依次将各所述清算数据表作为所述指定清算数据表,根据所述指定清算数据表中各组清算数据对应的流水号集合,对本地存储的业务数据进行标记分组,更新本地存储的业务数据对应的业务分组号;
根据所述清算分组号和更新后的业务分组号,进行对账数据处理,直至所述清算数据和/或所述业务数据均对账处理完成。
本说明书实施例,在单个表的基础上,依次分表分组进行对账处理。对账事务触发后,参考清算数据的分组信息,对业务数据进行分组打标,根据分组号进行对账数据处理。再对下一个数据表内的各组清算数据对应的业务数据进行打标,再进行对账事务处理。通过在分表维度下进行分组细化,增加对账处理时事务控制的更细粒度。并且依次以表为单位对而延误数据进行分组打标,不需要统一对业务数据进行分组,提高了对账事务处理的里活性。
需要说明的,上述所述的装置根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照上述对应的方法实施例的描述,在此不作一一赘述。
本说明书实施例还提供一种对账数据处理设备,包括:至少一个处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现上述实施例中对账数据处理方法,如:
预先对接收到的待对账处理的清算数据进行分表处理,并将各清算数据表中的清算数据进行分组处理,确定出清算数据对应的清算分表号和清算分组号;
根据所述清算分表号和所述清算分组号,对本地业务数据表中存储的待对账处理的业务数据进行分组,并记录各业务数据对应的业务分组号;
将清算分组号和业务分组号作为对账条件,对清算数据和业务数据进行对账数据处理。
图4是本说明书一个实施例中提供的对账数据处理系统的结构示意图,如图4所示,本说明书实施例中的对账数据处理系统可以包括清算终端、对账终端,其中,清算终端、对账终端可以是客户端也可以是服务器,其中清算终端可以有多个。所述清算终端用于进行数据清算,并将清算数据发送至对账终端;所述对账终端用于接收所述清算终端发送的清算数据,并根据上述实施例所述的方法将清算数据和对账终端本地存储的业务数据进行对账处理。
需要说明的,上述所述的处理设备和系统,根据方法实施例的描述还可以包括其他的实施方式。具体的实现方式可以参照上述对应的方法实施例的描述,在此不作一一赘述。
本说明书提供的对账数据处理装置或处理设备或系统,也可以应用在多种数据分析处理系统中。所述系统或装置或处理设备可以包括上述实施例中任意一个对账数据处理装置。所述的系统或装置或处理设备可以为单独的服务器,也可以包括使用了本说明书的一个或多个所述方法或一个或多个实施例装置的服务器集群、系统(包括分布式系统)、软件(应用)、实际操作装置、逻辑门电路装置、量子计算机等并结合必要的实施硬件的终端装置。所述核对差异数据的检测系统可以包括至少一个处理器以及存储计算机可执行指令的存储器,所述处理器执行所述指令时实现上述任意一个或者多个实施例中所述方法的步骤。
本说明书实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图5是本说明书一个实施例中对账数据处理服务器的硬件结构框图,该服务器可以是上述实施例中的对账数据处理装置、对账数据处理设备或系统。如图5所示,服务器10可以包括一个或多个(图中仅示出一个)处理器100(处理器100可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器200、以及用于通信功能的传输模块300。本邻域普通技术人员可以理解,图5所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器10还可包括比图5中所示更多或者更少的组件,例如还可以包括其他的处理硬件,如数据库或多级缓存、GPU,或者具有与图5所示不同的配置。
存储器200可用于存储应用软件的软件程序以及模块,如本说明书实施例中的对账数据处理方法对应的程序指令/模块,处理器100通过运行存储在存储器200内的软件程序以及模块,从而执行各种功能应用以及资源数据更新。存储器200可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器200可进一步包括相对于处理器100远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输模块300用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端的通信供应商提供的无线网络。在一个实例中,传输模块300包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输模块300可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书提供的上述实施例所述的方法或装置可以通过计算机程序实现业务逻辑并记录在存储介质上,所述的存储介质可以计算机读取并执行,实现本说明书实施例所描述方案的效果。
所述存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。所述存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
本说明书实施例提供的上述对账数据处理方法或装置可以在计算机中由处理器执行相应的程序指令来实现,如使用windows操作系统的c++语言在PC端实现、linux系统实现,或其他例如使用android、iOS系统程序设计语言在智能终端实现,以及基于量子计算机的处理逻辑实现等。
需要说明的是说明书上述所述的装置、计算机存储介质、系统根据相关方法实施例的描述还可以包括其他的实施方式,具体的实现方式可以参照对应方法实施例的描述,在此不作一一赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于硬件+程序类实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参考方法实施例的部分说明即可。
本说明书实施例并不局限于必须是符合行业通信标准、标准计算机资源数据更新和数据存储规则或本说明书一个或多个实施例所描述的情况。某些行业标准或者使用自定义方式或实施例描述的实施基础上略加修改后的实施方案也可以实现上述实施例相同、等同或相近、或变形后可预料的实施效果。应用这些修改或变形后的数据获取、存储、判断、处理方式等获取的实施例,仍然可以属于本说明书实施例的可选实施方案范围之内。
在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,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式资源数据更新环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程资源数据更新设备的处理器以产生一个机器,使得通过计算机或其他可编程资源数据更新设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程资源数据更新设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程资源数据更新设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参考即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参考方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。