获取数据的方法和装置与流程

文档序号:11677582阅读:172来源:国知局
获取数据的方法和装置与流程

本申请涉及数据处理技术领域,尤其涉及一种获取数据的方法和装置。



背景技术:

当数据能够记录在正常状态和非正常状态的数据库,且只能从处于正常状态的数据库获取数据时,获取的数据可能产生乱序问题,即先获取产生时间在后的数据。如果数据处理时间有严格要求,需要按照时间产生顺序依序执行,那么在获取到乱序的数据时就会造成数据处理出错。



技术实现要素:

本申请旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本申请的一个目的在于提出一种获取数据的方法,该方法可以避免数据获取的乱序问题,保证数据处理的正确执行。

本申请的另一个目的在于提出一种获取数据的装置。

为达到上述目的,本申请第一方面实施例提出的获取数据的方法,包括:获取第一截止时间,所述第一截止时间是数据表中已经完成记录的第一类数据的截止时间,所述第一类数据是与待获取数据同类别的数据;确定待获取数据的起始时间;如果所述起始时间小于或等于所述第一截止时间,获取所述待获 取数据;如果成功获取所述待获取数据,将所述待获取数据记录在所述数据表中,并更新所述第一截止时间。

本申请第一方面实施例提出的获取数据的方法,通过比对截止时间和起始时间,获取起始时间小于或等于截止时间的数据,可以避免获取发生时间跳跃的数据,从而可以避免发生数据乱序问题,保证存在时序要求的数据被正确处理。

为达到上述目的,本申请第二方面实施例提出的获取数据的装置,包括:第一获取模块,用于获取第一截止时间,所述第一截止时间是数据表中已经完成记录的第一类数据的截止时间,所述第一类数据是与待获取数据同类别的数据;确定模块,用于确定待获取数据的起始时间;第二获取模块,用于在所述起始时间小于或等于所述第一截止时间时,获取所述待获取数据;记录模块,用于在成功获取所述待获取数据后,将所述待获取数据记录在所述数据表中,并更新所述第一截止时间。

本申请第二方面实施例提出的获取数据的装置,通过比对截止时间和起始时间,获取起始时间小于或等于截止时间的数据,可以避免获取发生时间跳跃的数据,从而可以避免发生数据乱序问题,保证存在时序要求的数据被正确处理。

本申请附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。

附图说明

本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1是本申请一实施例提出的获取数据的方法的流程示意图;

图2是本申请另一实施例提出的获取数据的方法的流程示意图;

图3是本申请另一实施例提出的获取数据的装置的结构示意图;

图4是本申请另一实施例提出的获取数据的装置的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的模块或具有相同或类似功能的模块。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。相反,本申请的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。

图1是本申请一实施例提出的获取数据的方法的流程示意图,该方法包括:

s11:获取第一截止时间,所述第一截止时间是数据表中已经完成记录的第一类数据的截止时间,所述第一类数据是与待获取数据同类别的数据。

本实施例中,在获取数据时,可以以时间间隔为单位获取数据,例如,时间间隔是5分钟,则在第一个时间点获取[00:00,00:05)这一时间间隔的数据,在第二个时间点获取[00:05,00:10)这一时间间隔的数据。第一个时间点和第二个时间点可以是设置的,例如,第一个时间点是00:10,第二个时间点是00:15。

获取的数据可以记录在数据表中,则当成功获取[00:00,00:05)这一时间间隔的数据后,可以将该时间间隔的数据记录在数据表中。

截止时间是数据表中已经完成记录的数据的截止时间,例如,数据表中已 经完成记录的数据是[00:00,00:05)这一时间间隔的数据,则截止时间是00:05。

另外,可以根据数据表中之后记录的数据更新该截止时间,例如,[00:05,00:10)这一时间间隔的数据也被记录在数据表中,则已经完成记录的数据的截止时间是00:10。

可以理解的是,截止时间的初始值可以是数据的记录起始时间,例如是00:00。

另外,记录的数据可以分为一个或多个类别,相应的,可以对应每个类别分别记录截止时间。例如,待获取数据是分账记账的交易记录时,数据可以分为冻结解冻类数据和消费快赎类数据,可以分别对应这两类数据记录两个截止时间。

如果当前的待获取数据是冻结解冻类数据,则获取冻结解冻类数据对应的截止时间,如果当前的待获取数据是消费快赎类数据,则获取消费快赎类数据对应的截止时间。

s12:确定待获取数据的起始时间。

其中,可以根据数据获取规则获取数据,从而确定待获取数据的起始时间。例如,在异步数据获取时,在一个时间点获取的是之前预设时间间隔的数据,例如,在00:10这一时间点需要获取[00:00,00:05)这一时间间隔的数据,则在当前时间是00:10时,待获取数据是指[00:00,00:05)这一时间间隔的数据,则相应的起始时间是00:00。又例如,在00:15这一时间点需要获取[00:05,00:10)这一时间间隔的数据,则在当前时间是00:15时,当前待获取数据是指[00:05,00:10)这一时间间隔的数据,则相应的起始时间是00:05。

s13:如果所述起始时间小于或等于所述第一截止时间,获取所述待获取 数据。

s14:如果成功获取所述待获取数据,将所述待获取数据记录在所述数据表中,并更新所述第一截止时间。

例如,假设第一截止时间是00:05,则在待获取数据是[00:05,00:10)这一时间间隔的数据时,由于起始时间是00:05,等于截止时间,则获取[00:05,00:10)这一时间间隔的数据。如果成功获取[00:05,00:10)这一时间间隔的数据,则将该时间间隔的数据记录在数据表中,并将第一截止时间更新为00:10。另外,当存在数据获取任务积压时,会存在待获取数据的起始时间小于相应类别的截止时间,此时也获取该待获取数据。

另一方面,如果没有成功获取待获取数据,则保持数据表和第一截止时间不变。例如,如果没有成功获取[00:05,00:10)这一时间间隔的数据,则数据表中记录的数据保持不变,另外,记录的第一截止时间也保持不变。

另一方面,当起始时间大于截止时间时,放弃获取数据,等待下一轮获取任务执行时重新确定。

例如,假设截止时间是00:05,则在待获取数据是[00:10,00:15)这一时间间隔的数据时,由于起始时间是00:10,大于截止时间,则放弃获取[00:10,00:15)这一时间间隔的数据。在下一轮获取数据任务开始后,可以重复执行s11-s13以确定是否获取当前的待获取数据。

本实施例中,通过比对截止时间和起始时间,获取起始时间小于或等于截止时间的数据,可以避免获取发生时间跳跃的数据,从而可以避免发生数据乱序问题,保证存在时序要求的数据被正确处理。

图2是本申请另一实施例提出的获取数据的方法的流程示意图,本实施例以数据处理是分账记账为例。

分账记账主要是指发生了某笔交易导致的金额的增加、金额的减小、金额的冻结、金额的解冻等进行的记账。

分账异步记账是指用户的每笔交易不是实时记账的,而是滞后一段时间,通过第一定时任务(用任务x表示)的方式,获取用户之前做成功的交易记录,并记录在待分账记账表(用表a表示)中,另外,通过第二定时任务(用任务y表示)按交易时间的顺序获取表a中的记录执行分账记账。

相关技术中,任务x和任务y的处理逻辑如下:

任务x的处理逻辑是:

用户产生的交易记录可以分为两类,一类是消费快赎类(用rd表示),另一类是冻结解冻类(用fz表示),相应的,交易记录可以先分别记录在这两种类型的表中,例如,rd类交易记录在rd表中,fz类交易记录在fz表中,任务x从rd表和fz表中获取数据并记录在表a中。

任务x在rd表和fz表中以时间间隔为单位获取数据。例如,时间间隔是5分钟,则每天的第一个时间范围是00:00-00:05,每获取一个时间间隔的数据可以称为一个任务(task),则每天rd表对应288个task,同理,fz表也对应288个task。以每天为例:第一个task的时间范围是[00:00,00:05)(前闭后开),00:10开始执行第一个task。依此类推,第二个task的时间范围是[00:05,00:10),00:15开始执行第二个task。最后一个task的时间范围是[23:55,00:00)(此时的00:00是指),第二天的00:05开始执行最后一个task。从rd表和fz表中获取的数据被记录在表a中。另外,如果在执行task任务时存在前面未执行成功的task任务,则未执行成功的task任务被并行执行,例如,00:10开始执行第一个 task时未成功,则在00:10开始执行时,可以并行执行第一个task和第二个task。

任务y的处理逻辑是:

任务y从表a中获取数据并进行分账记账。表a中的数据按交易时间顺序排列,任务y获取的时间范围是:(当前系统时间往前推36个小时,当前系统时间往前推15分钟),那么最快异步化记账,也要滞后15分钟,而上面的任务x获取数据的范围是[滞后10分钟,滞后5分钟)。

正常情况下,延迟15分钟获取(或称为捞取)到的数据,一定会捞取到之前全的数据进行分账记账,且是按顺序执行的,不会出现乱序的情况。例如,当前系统时间是00:20,那么任务y捞取待分账执行数据的时间范围是(当前系统-36小时,00:05),就拿其中的最近的时间段[00:00,00:05),任务x会在00:10分开始捞取,并落地记录(记录在表a中),在00:20之前就能数据全部记录在表a中,从而任务y可以顺序获取数据并执行。

但是,下面的情况会出现乱序问题:

交易记录的数据库分为正常状态的数据库(简称为正常库)和异常状态的数据库(简称为failover库),而任务x只从正常库中获取交易记录,当交易记录在某个时间内停留在了failover库,而还没有回迁到正常库的情况下,虽然对应时间范围的task不会执行成功,但如果跨过某个task时间段,交易记录的库切回了正常库状态,可能导致后面时间段的task开始执行,并执行成功,因为后面捞取数据的时候,数据库的标示位是正常的,举例如下:用户做了笔冻结解冻并支付的消费,10元,这单消费包含三条记录,先冻结10元(fz1条记录),再解冻10元(fz1条记录)然后消费快赎类的10元(rd1条记录),且这个用户的账户余额就10元,冻结解冻 两条记录在[00:00,00:05)时间段内,支付的一条记录在[00:05,00:10)时间段内,当[00:00,00:05)时间段恰好碰到数据落到failover库还没回迁完成,而等到[00:05,00:10)时间是切到正常库,所以支付这条记录是落到正常库中,那就有可能支付记录对应的待分账记账记录先落地到表a,并被任务y捞取到执行分账记账成功,用户余额变为0。此后,由于之前未执行成功的任务(冻结解冻两条记录)能够在后续被重新执行,并成功记录在表a中,当表a中记录有冻结解冻的两条记录对应的两条待分账记账的记录后,任务y可以从表a中获取这两天记录并执行,但是会出现执行分账记账不成功了,因为用户账户金额不足以冻结解冻。

为了解决上述乱序问题,参见图2,本实施例的流程包括:

s21:获取第一截止时间,所述第一截止时间是数据表中已经完成记录的第一类数据的截止时间,所述第一类数据是与待获取数据同类别的数据。

其中,本实施例中,可以新建一个表(用表b表示),该表用于记录截止时间。

如上所示,在分账记账时,交易可以分为rd类和fz类,因此,可以对应每类交易分别记录截止时间,例如,分别用deadline(rd)和deadline(fz)表示。

如上所示,task是按时间间隔分割的,进一步的,task还可以按照用户属性维度分为多个片(slice),具有相同用户属性维度的用户为一条slice,所有slice覆盖所有的用户。如果某条task的某条slice执行完成,则代表某个时间间隔内的某个属性相同的用户的所有交易记录捞取到并插入到表a中,如果某条task的所有slice都执行完成,则代表某个时间间隔内的所有用户的交易记录都捞取到并插入到表a,待分账记账执行。

可以理解的是,上述的用户属性维度可以根据实际需要设置。另外,在其他场景下,处理的对象也可以是按照时间间隔获取的数据,而不再对数据按照用户属性维度等进行细分。

本实施例中,在根据用户属性维度细分时,可以对应每个用户属性维度在表b中分别对应fz类交易和rd类交易记录截止时间。

例如,在某个用户属性维度上的用户,该用户在[00:00,00:05)有两条冻结解冻记录,在[00:05,00:10)有一条支付记录,当[00:00,00:05)这段时间是failover库时,[00:00,00:05)的fz的task执行未完成,该用户对应的deadline(fz)就一直没变,是上条记录的捞取交易记录完成的截止时间,即当天的00:00,而当到[00:05,00:10),切回到正常库,此时[00:05,00:10)的rd的task执行完成,更新该用户对应的deadline(rd)为该条slice对应的task的捞取时间范围的截止时间,即当天的00:10。如表1所示:

表1

s22:获取待获取数据的起始时间。

s23:如果所述起始时间小于或等于所述第一截止时间,获取所述待获取数据。

s24:如果成功获取所述待获取数据,将所述待获取数据记录在所述数据 表中,并更新所述第一截止时间。

s25:如果不能成功获取待获取数据,保持数据表和第一截止时间不变。

例如,deadline(fz)和deadline(rd)的初始值都是00:00,则在00:10这一时间点,需要获取[00:00,00:05)这一时间间隔的数据,假设获取[00:00,00:05)这一时间间隔的数据时,数据库为异常库,而任务x只能从正常库获取数据,那么不能成功获取到[00:00,00:05)这一时间间隔的数据,则在表a中不记录[00:00,00:05)这一时间间隔的数据,另外,由于这一时间间隔的数据是冻结解冻类的交易,则保持表b中deadline(fz)不变,依然是00:00。

又例如,在00:15这一时间点,需要获取[00:05,00:10)这一时间间隔的数据,假设获取[00:05,00:10)这一时间间隔的数据时处于正常库,而任务x从正常库获取数据,那么可以成功获取到[00:05,00:10)这一时间间隔的数据,则在表a中记录[00:05,00:10)这一时间间隔的数据,另外,由于这一时间间隔是消费快赎类的交易,则将表b中deadline(rd)更新为00:10。

可以理解的是,在00:15这一时间点,由于[00:00,00:05)这一时间间隔的数据并未获取成功,因此可以在该时间点并发执行多个任务,例如,并发执行获取[00:05,00:10)这一时间间隔的数据,以及获取[00:00,00:05)这一时间间隔的数据,由于deadline(fz)=00:00,[00:00,00:05)这一时间间隔的数据的起始时间等于该类数据的截止时间,则此时还可以成功获取到[00:00,00:05)这一时间间隔的数据,并将deadline(fz)更新为00:05。

上述的s21-s25可以具体由任务x执行,另外,任务y的处理逻辑可以包括:

s26:在所述数据表中获取预设时间段的数据,所述预设时间段的结束时 间是已经记录的截止时间中的最小值,所述已经记录的截止时间包括所述第一截止时间,每个截止时间与一类数据对应。

相关技术中,任务y在表a中获取数据时,获取的是(当前系统时间往前推36个小时,当前系统时间往前推15分钟)这一时间范围的数据。

本实施例中,任务y在表a中获取数据时,获取的是(当前系统时间往前推36个小时,min(deadline(fz),deadline(rd)))这一时间范围的数据。

例如,对应一个用户,该用户的deadline(fz)=当天日期的00:00,deadline(rd)=当天日期的00:10,那么任务y从表a中获取数据时,结束时间是上述两个截止时间中的最小值,即当天日期的00:00,因此,任务y获取的表a中的数据的时间范围是(当前系统时间-36小时,当天日期的00:00)。

如果再出现之前乱序的场景,由于获取的数据的结束时间是截止时间的较前的时间点,那么支付记录即便落地到表a中,也不会被任务y捞取到执行之后的分账记账,只能等到该用户属性的冻结解冻的deadline(fz)为当天日期的00:10才能捞取到,这样之前的[00:00,00:05)有两条冻结解冻记录就已经落地到表a中了(因为task是按时间段顺序执行的),只要记录落地全了,后面执行分账记账的逻辑,会保证按交易时间的顺序执行,就不会出先乱序的问题了。

s27:对所述预设时间段的数据按照时间顺序依序处理。

例如,按照时间顺序依次执行冻结解冻类的两条记录再执行支付的一条记录。

本实施例中,通过比对截止时间和起始时间,获取起始时间小于或等于截 止时间的数据,可以避免获取发生时间跳跃的数据,从而可以避免发生数据乱序问题,保证存在时序要求的数据被正确处理。进一步的,通过在执行数据处理时,更改获取的数据的结束时间,可以在乱序的数据已经记录在数据表时,也不被获取执行,从而保证数据按序正确处理。

图3是本申请另一实施例提出的获取数据的装置的结构示意图,该装置30包括:第一获取模块31、确定模块32、第二获取模块33和记录模块34。

第一获取模块31,用于获取第一截止时间,所述第一截止时间是数据表中已经完成记录的第一类数据的截止时间,所述第一类数据是与待获取数据同类别的数据。

本实施例中,在获取数据时,可以以时间间隔为单位获取数据,例如,时间间隔是5分钟,则在第一个时间点获取[00:00,00:05)这一时间间隔的数据,在第二个时间点获取[00:05,00:10)这一时间间隔的数据。第一个时间点和第二个时间点可以是设置的,例如,第一个时间点是00:10,第二个时间点是00:15。

获取的数据可以记录在数据表中,则当成功获取[00:00,00:05)这一时间间隔的数据后,可以将该时间间隔的数据记录在数据表中。

截止时间是数据表中已经完成记录的数据的截止时间,例如,数据表中已经完成记录的数据是[00:00,00:05)这一时间间隔的数据,则截止时间是00:05。

另外,可以根据数据表中之后记录的数据更新该截止时间,例如,[00:05,00:10)这一时间间隔的数据也被记录在数据表中,则已经完成记录的数据的截止时间是00:10。

可以理解的是,截止时间的初始值可以是数据的记录起始时间,例如是 00:00。

另外,记录的数据可以分为一个或多个类别,相应的,可以对应每个类别分别记录截止时间。例如,待获取数据是分账记账的交易记录时,数据可以分为冻结解冻类数据和消费快赎类数据,可以分别对应这两类数据记录两个截止时间。

如果当前的待获取数据是冻结解冻类数据,则获取冻结解冻类数据对应的截止时间,如果当前的待获取数据是消费快赎类数据,则获取消费快赎类数据对应的截止时间。

确定模块32,用于确定待获取数据的起始时间。

其中,可以根据数据获取规则获取数据,从而确定待获取数据的起始时间。例如,在异步数据获取时,在一个时间点获取的是之前预设时间间隔的数据,例如,在00:10这一时间点需要获取[00:00,00:05)这一时间间隔的数据,则在当前时间是00:10时,待获取数据是指[00:00,00:05)这一时间间隔的数据,则相应的起始时间是00:00。又例如,在00:15这一时间点需要获取[00:05,00:10)这一时间间隔的数据,则在当前时间是00:15时,当前待获取数据是指[00:05,00:10)这一时间间隔的数据,则相应的起始时间是00:05。

获取模块33,用于在所述起始时间小于或等于所述第一截止时间时,获取所述待获取数据。

记录模块34,用于在成功获取所述待获取数据后,将所述待获取数据记录在所述数据表中,并更新所述第一截止时间。

例如,假设第一截止时间是00:05,则在待获取数据是[00:05,00:10)这一时间间隔的数据时,由于起始时间是00:05,等于截止时间,则获取[00:05,00:10)这一时间间隔的数据。如果成功获取[00:05,00:10)这一时间 间隔的数据,则将该时间间隔的数据记录在数据表中,并将第一截止时间更新为00:10。另外,当存在数据获取任务积压时,会存在待获取数据的起始时间小于相应类别的截止时间,此时也获取该待获取数据。

一些实施例中,参见图4,该装置30还包括:

保持模块35,用于在不能成功获取所述待获取数据时,保持所述数据表不变,且保持所述第一截止时间不变。

例如,如果没有成功获取[00:05,00:10)这一时间间隔的数据,则数据表中记录的数据保持不变,另外,记录的第一截止时间也保持不变。

另一方面,当起始时间大于截止时间时,放弃获取数据,等待下一轮获取任务执行时重新确定。

例如,假设截止时间是00:05,则在待获取数据是[00:10,00:15)这一时间间隔的数据时,由于起始时间是00:10,大于截止时间,则放弃获取[00:10,00:15)这一时间间隔的数据。在下一轮获取数据任务开始后,可以重复执行s11-s13以确定是否获取当前的待获取数据。

可选的,所述记录模块用于获取所述待获取数据,包括:

从处于正常状态的数据库中获取所述待获取数据,其中,数据在产生后被记录在所述数据库中,所述数据库包括正常状态和非正常状态。

一些实施例中,参见图4,该装置30还包括:

第三获取模块36,用于在所述数据表中获取预设时间段的数据,所述预设时间段的结束时间是已经记录的截止时间中的最小值,所述已经记录的截止时间包括所述第一截止时间,每个截止时间与一类数据对应;

处理模块37,用于对所述预设时间段的数据按照时间顺序依序处理。

相关技术中,任务y在表a中获取数据时,获取的是(当前系统时间往 前推36个小时,当前系统时间往前推15分钟)这一时间范围的数据。

本实施例中,任务y在表a中获取数据时,获取的是(当前系统时间往前推36个小时,min(deadline(fz),deadline(rd)))这一时间范围的数据。

例如,对应一个用户,该用户的deadline(fz)=当天日期的00:00,deadline(rd)=当天日期的00:10,那么任务y从表a中获取数据时,结束时间是上述两个截止时间中的最小值,即当天日期的00:00,因此,任务y获取的表a中的数据的时间范围是(当前系统时间-36小时,当天日期的00:00)。

本实施例中各模块的具体内容可以参见方法实施例中的相关描述,在此不再赘述。

本实施例中,通过比对截止时间和起始时间,获取起始时间小于或等于截止时间的数据,可以避免获取发生时间跳跃的数据,从而可以避免发生数据乱序问题,保证存在时序要求的数据被正确处理。进一步的,通过在执行数据处理时,更改获取的数据的结束时间,可以在乱序的数据已经记录在数据表时,也不被获取执行,从而保证数据按序正确处理。

需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式 或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。

应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且, 描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。

尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。

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