数据同步过程中增量数据的解析方法及存储介质与流程

文档序号:32158382发布日期:2022-11-12 01:08阅读:90来源:国知局
数据同步过程中增量数据的解析方法及存储介质与流程

1.本发明涉及数据库技术领域,特别是涉及一种数据同步过程中增量数据的解析方法及存储介质。


背景技术:

2.在利用数据同步软件进行数据实时同步时分为三个阶段,第一阶段进行存量数据的初始化装载,获得数据同步的基础点;第二阶段以初始化数据装载建立的同步基础点为基准进行增量数据同步;第三阶段定期对数据同步的源端数据和目标数据进行比对校验,以确认在数据同步过程中没有丢失数据。其中,进行增量数据同步时,通过解析数据库日志获取增量数据,从而实现数据实时同步是一种常用的实时数据复制技术。
3.对于oracle rac(real application clusters,实时应用集群,简写为rac)源端来说,归档日志和在线日志通常存储在asm(automatic stoage management,自动存储管理)中,在针对oracle rac的增量数据获取过程中需要从asm中读取日志,然后解析出增量数据。在现有技术中,读取日志和解析数据在一个线程中进行,每次读取日志时,解析数据必须等待,效率不高。


技术实现要素:

4.本发明的一个目的是要提供一种能够能够解决上述任一问题的的数据同步过程中增量数据的解析方法及存储介质。
5.本发明一个进一步的目的是要优化资源利用率。
6.本发明一个进一步的目的是要优化解析线程的解析工作。
7.特别地,本发明提供了一种数据同步过程中增量数据的解析方法,包括:
8.获取数据库日志;
9.将所述数据库日志划分为设定数量的数据块,在预设的全局登记区中按顺序定义所述数据块的块号并将所述数据块定义为未读取状态;
10.利用多个读取线程按照所述块号分别读取所述数据块,每个所述读取线程将读取完成的数据块放入各自的队列中。
11.可选地,每个所述读取线程按照所述块号分别读取所述数据块的步骤包括:
12.在所述全局登记区查询顺序最靠前且为未读取状态的块号;
13.根据块号找到对应的数据块开始读取;
14.将读取完成的所述数据块放入自己对应的队列中。
15.可选地,根据块号找到对应的数据块开始读取的步骤之前包括;
16.在所述全局登记区将查询到的所述块号进行加锁,以防止其他读取线程对所述块号进行查询。
17.可选地,将读取完成的数据块放入自己对应的队列中的步骤之后包括:
18.判断所述队列是否已满,若是,停止所述读取线程的读取工作,并进入等待阶段,
若否,返回执行在所述全局登记区查询顺序最靠前且为未读取状态的块号的步骤。
19.可选地,停止所述读取线程的读取工作,并进入等待阶段的步骤之后包括:
20.判断所述读取线程的等待时间是否超出阈值,若是,终止所述读取线程的读取工作,待所述读取线程对应的队列存有的全部数据被解析完成后,将所述读取线程退出,若否,返回执行判断队列是否已满的步骤。
21.可选地,在每个所述读取线程将读取完成的数据块放入各自的队列中的步骤之后,还包括:
22.在所述全局登记区中将已放入队列的所述数据块的状态信息更新为已读取状态,并将所述数据块所在的队列号录入所述全局登记区;
23.利用解析线程从所述多个读取线程的队列的队首中挑选块号顺序最靠前的数据块进行解析。
24.可选地,解析线程从所述多个读取线程的队列的队首中挑选块号顺序最靠前的数据块进行解析的步骤包括:
25.在所述全局登记区查询顺序最靠前的且为已读取状态的块号;
26.按照查询到的所述块号到相应的队列号对应的队列中取出所述数据块并对所述数据块进行解析;
27.在所述全局登记区将所述数据块的状态信息更新为已解析状态。
28.可选地,按照查询到的块号到相应的队列号对应的队列中取出所述数据块并对所述数据块进行解析的步骤之前包括:
29.判断对所有数据块查询一遍后是否有符合条件的数据块,若是,执行按照查询到的块号到相应队列号对应的队列中取出所述数据块的步骤,若否,返回执行在所述全局登记区查询块号顺序最靠前的且为已读取状态的数据块的步骤。
30.可选地,返回执行在所述全局登记区查询块号顺序最靠前的且为已读取状态的数据块的步骤之前还包括:
31.判断在所述全局登记区进行查询的时间是否超过阈值,若是,生成新的读取线程,使新的读取线程加入读取工作,初始化查询时间并继续查询,若否,继续查询。
32.根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现上述任一项中的数据同步过程中增量数据的解析方法。
33.本发明的数据同步过程中增量数据的解析方法,将数据库日志划分为设定数量的数据块,在预设的全局登记区中按顺序定义数据块的块号并将数据块定义为未读取状态;利用多个读取线程按照块号分别读取数据块,每个读取线程将读取完成的数据块放入各自的队列中。在本方法中,通过设立全局登记区对多个数据块按顺序标号以及状态定义,以对多个读取线程的读取动作进行协调,以及为每个读取线程准备对应的队列。使得多个读取线程能够同时按照块号对数据库日志进行读取,然后将读取到的数据放在自身对应的队列中进行缓冲。而因为队列从后端插入从前端删除,所以数据块在队列中一定是块号靠前的在队前。也就是说,读取线程将数据放入队列后可以去读取新的数据,因为有多个读取线程同时在读取数据,所以能够减少解析线程空等情况的发生,有助于提高解析工作的效率。而且,全局登记区对每个数据块的块号和状态进行管理,使得多个读取线程能够在全局登记
区的协调下有序地进行数据读取,保证了数据读取有序进行,避免出现读取混乱的情况。
34.进一步地,本发明的数据同步过程中增量数据的解析方法通过在将读取完成的数据块放入自己对应的队列中的步骤之后判断所述队列是否已满,若是,停止所述读取线程的读取工作,并进入等待阶段,若否,返回执行在所述全局登记区查询顺序最靠前且为未读取状态的块号的步骤。并在停止所述读取线程的读取工作,并进入等待阶段的步骤之后判断所述读取线程的等待时间是否超出阈值,若是,终止所述读取线程的读取工作,待所述读取线程对应的队列存有的全部数据被解析完成后,将所述读取线程退出,若否,返回执行判断队列是否已满的步骤。因此,能够避免读取线程读取完数据却放不进队列而导致故障的情形发生。并且,若读取线程的等待时间超出阈值,也就是说,读取线程过多,解析线程处理不过来。那么,等读取线程对应的队列存有的全部数据被解析完成后将读取线程退出,从而对读取线程进行动态调整,避免空读取线程占据运行能力,以达到更优的资源利用率。
35.更进一步地,本发明的数据同步过程中增量数据的解析方法通过返回执行在所述全局登记区查询块号顺序最靠前的且为已读取状态的数据块的步骤之前判断在所述全局登记区进行查询的时间是否超过阈值,若是,生成新的读取线程,使新的读取线程加入读取工作,初始化查询时间并继续查询,若否,继续查询。具体来说,若查询的时间超过阈值,也就是目前读取线程的读取效率跟不上解析线程的解析效率。因此,通过在查询的时间超过阈值时生成新的读取线程,能够优化数据解析工作,进一步减少解析线程等待的情况发生。
36.根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
附图说明
37.后文将参照附图以示例性而非限制性的方式详细描述本发明的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应该理解,这些附图未必是按比例绘制的。附图中:
38.图1是根据本发明一个实施例的数据库系统的示意图;
39.图2是根据本发明一个实施例的数据同步过程中增量数据的解析方法的示意性流程图;
40.图3是根据本发明一个实施例的数据同步过程中增量数据的解析方法中读取线程读取数据步骤的示意性流程图;
41.图4是根据本发明一个实施例的数据同步过程中增量数据的解析方法中另一种读取线程读取数据步骤的示意性流程图;
42.图5是根据本发明一个实施例的数据同步过程中增量数据的解析方法中解析线程解析数据步骤的示意性流程图;
43.图6是根据本发明一个实施例的数据同步过程中增量数据的解析方法中另一种解析线程解析数据步骤的示意性流程图;
44.图7是根据本发明一个实施例的机器可读存储介质的示意图。
具体实施方式
45.本领域技术人员应当理解的是,下文所描述的实施例仅仅是本发明的一部分实施
例,而不是本发明的全部实施例,该一部分实施例旨在用于解释本发明的技术原理,并非用于限制本发明的保护范围。基于本发明提供的实施例,本领域普通技术人员在没有付出创造性劳动的情况下所获得的其它所有实施例,仍应落入到本发明的保护范围之内。
46.需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
47.图1是根据本发明一个实施例的数据库系统的示意图。图2是根据本发明一个实施例的数据同步过程中增量数据的解析方法的示意性流程图。
48.参照图1所示,具体地,本实施例的数据库系统包括asm(自动存储管理)100、全局登记区200、读取线程310、读取线程320、读取线程330、读取线程340和解析线程400。其中,asm100存储有源端的数据库日志。读取线程310、读取线程320、读取线程330、读取线程340用于从asm100中读取数据,每个读取线程单独地对应有一个特定的队列,读取线程310、读取线程320、读取线程330、读取线程340分别对应有队列1、队列2、队列3、队列4。解析线程400用于从队列中取出数据进行解析。全局登记区200用于对读取线程和解析线程400的动作进行协调。
49.参照图2所示,在本实施例中,数据同步过程中增量数据的解析方法一般性地可包括:
50.步骤s202,获取数据库日志;
51.步骤s204,将数据库日志划分为设定数量的数据块,在预设的全局登记区中按顺序定义数据块的块号并将数据块定义为未读取状态;
52.步骤s206,利用多个读取线程按照块号分别读取数据块,每个读取线程将读取完成的数据块放入各自的队列中;
53.步骤s208,在全局登记区中将已放入队列的数据块的状态信息更新为已读取状态,并将数据块所在的队列号录入全局登记区;
54.步骤s210,利用解析线程从多个读取线程的队列的队首中挑选块号顺序最靠前的数据块进行解析。
55.具体来说,在步骤s204中,就是将数据库日志按照预设条件进行划分,从而得到多个数据块。在全局登记区200中定义每一个数据块的块号和状态信息,换句话说,全局登记区200登记有每个数据块的身份信息,从而能够与数据库日志中的每个数据块准确对应。
56.举例来说,数据库日志被分为了50块,那么在全局登记区200按块号0至49对每一个数据块进行定义,并且将每一个块号下的状态信息定义为未读取状态。
57.另外,在读取线程开始读取某一数据块后,在全局登记区200中将正在读取的数据块的状态信息更新为读取中状态。具体来说,例如读取线程310正在对块号为0的数据块进行读取,则将该数据块在全局登记区200的状态信息由未读取状态改为读取中状态,也就是将块号0下的状态信息由未读取状态改为读取中状态。
58.具体来说,在步骤s208中,例如读取线程310将块号为0的数据块读取完成并将其放入自己的队列1中,则将该数据块在全局登记区200的状态信息由读取中状态改为已读取
状态,也就是将块号0下的状态信息由读取中状态改为已读取状态。并且,将队列1记入块号0下的状态信息中,表示块号0对应的数据放在了队列1中。
59.在本实施例的方案中,通过设立全局登记区200对多个数据块按顺序标号以及状态定义,以对多个读取线程的读取动作进行协调,以及为每个读取线程准备对应的队列。使得多个读取线程能够同时按照块号对数据库日志进行读取,然后将读取到的数据放在自身对应的队列中进行缓冲。而因为队列从后端插入从前端删除,所以数据块在队列中一定是块号靠前的在队前。也就是说,读取线程将数据放入队列后可以去读取新的数据,因为有多个读取线程同时在读取数据,所以能够减少解析线程空等情况的发生,有助于提高解析工作的效率。而且,全局登记区200对每个数据块的块号和状态进行管理,使得多个读取线程能够在全局登记区200的协调下有序地进行数据读取,保证了数据读取有序进行,避免出现读取混乱的情况。
60.进一步地,解析线程400只需从全局登记区200中找到块号顺序最靠前且为已读取状态的数据块,就可以按照块号顺序从队列中取出对应数据并进行解析。因为按照块号顺序进行解析,所以,在实现多线程同步读取的情况下,能够保证数据解析的完整性和连续性。
61.需要说明的是,图1中读取线程的数量只是一种示意性展示,读取线程的数量可以是小于数据块数量的其他任意数量。
62.图3是根据本发明一个实施例的数据同步过程中增量数据的解析方法中读取线程读取数据步骤的示意性流程图。
63.参照图3所示,具体地,以一个读取线程为例,其读取数据的步骤包括:
64.步骤s302,在全局登记区查询顺序最靠前且为未读取状态的块号;
65.步骤s304,根据块号找到对应的数据块开始读取;
66.步骤s306,将读取完成的数据块放入自己对应的队列中。
67.结合图1所示,以读取线程310为例,在读取线程310启动后,读取线程310到全局登记区200查询块号顺序最靠前(在本示例中即块号最小的)且为未读取状态的块号。例如,当查询到块号0时,块号0的状态信息为未读取状态。那么,读取线程310到数据库日志中找到块号0对应的数据块进行读取,并且在全局登记区200将块号0的状态更新为读取中状态。读取完成后,读取线程310将数据放入队列1中。此时,全局登记区200中块号0的状态信息更新为已读取状态。然后,读取线程310可以再去执行新一轮的查询读取动作。
68.同样地,其他读取线程也采用上文中所述的步骤进行数据的读取。
69.优选地,在根据块号找到对应的数据块开始读取的步骤之前包括;在全局登记区将查询到的块号进行加锁。
70.具体来说,当读取线程310查询到块号0为符合条件的块号时,先在全局登记区200对块号0进行加锁,使得其他读取线程无法再对块号0进行查询。从而避免多个读取线程对同一块号同时读取的情况发生。
71.需要说明的是,在进行加锁的情况下,也可以不设读取中状态,而是一直锁住,直至状态变为已读取状态。
72.图4是根据本发明一个实施例的数据同步过程中增量数据的解析方法中另一种读取线程读取数据步骤的示意性流程图。在本实施例中,读取线程读取数据的步骤包括:
73.步骤s402,在全局登记区查询顺序最靠前且为未读取状态的块号;
74.步骤s404,根据块号找到对应的数据块开始读取;
75.步骤s406,将读取完成的数据块放入自己对应的队列中;
76.步骤s408,判断队列是否已满,若是,执行步骤s410,若否,返回执行步骤s402。
77.步骤s410,停止读取线程的读取工作,并进入等待阶段。
78.以上一实施例中的举例来说,当读取线程310将块号0对应的数据块读取完成后,读取线程310将数据放入队列1中。此时,判断队列1中的数据有没有放满,如果放满了,也就是说队列1放不下新的数据了。那么,读取线程310不再去读取新的数据,进入等待阶段。直至队列1空出,读取线程310再重新去查询读取新的数据。
79.在本实施例的方案中,通过使读取线程在队列已满后进入等待状态,能够避免读取线程读取完数据却放不进队列而导致故障的情形发生。
80.继续参照图4,进一步地,步骤s410,停止所述读取线程的读取工作,并进入等待阶段的步骤之后还包括,
81.步骤s412,判断读取线程的等待时间是否超出阈值,若是,执行步骤s414,若否,返回执行步骤s408。其中,阈值可以根据需要进行设定,例如30秒、37秒、40秒、48秒等。
82.步骤s414,终止读取线程的读取工作,待读取线程对应的队列存有的全部数据被解析完成后,将读取线程退出。
83.具体来说,例如当读取线程310已经进入等待阶段,那么开始记录读取线程310的等待时间。期间,一直对队列1的状态进行查询。如果队列1一直空不出来,等待时间一直增加。当等待时间超出阈值时,不再对队列1的状态进行查询,也就是说,不论队列1空不空,读取线程310都不再去读取新的数据。直至队列1中已有的数据被解析线程400解析完成,读取线程310退出。
84.本领域技术人员能够理解的是,通过判断读取线程的等待时间,若读取线程的等待时间超出阈值,也就是说,读取线程过多,解析线程400处理不过来队列中的数据。那么,等读取线程对应的队列存有的全部数据被解析完成后将读取线程退出,从而对读取线程进行动态调整,避免空读取线程占据运行能力,以达到更优的资源利用率。
85.图5是根据本发明一个实施例的数据同步过程中增量数据的解析方法中解析线程解析数据步骤的示意性流程图。解析线程解析数据的步骤包括:
86.步骤s502,在全局登记区查询顺序最靠前的且为已读取状态的块号;
87.步骤s504,按照查询到的块号到相应的队列号对应的队列中取出数据块并对数据块进行解析;
88.步骤s506,在全局登记区将数据块的状态信息更新为已解析状态。
89.具体来说,读取线程310已经将块号0对应的数据读取完成并放入了队列1。那么,在全局登记区200,块号0下的状态信息为已读取状态且附有队列1的标识。解析线程400在全局登记区200按块号顺序查询,查询到块号0时,块号0为已读取状态。解析线程400根据块号0下队列1的标记到队列1中取出相应的数据进行解析。
90.图6是根据本发明一个实施例的数据同步过程中增量数据的解析方法中另一种解析线程解析数据步骤的示意性流程图。解析线程解析数据的步骤包括:
91.步骤s602,在全局登记区查询顺序最靠前的且为已读取状态的块号;
92.步骤s604,判断对所有数据块查询一遍后是否有符合条件的数据块,若是,执行步骤s606,若否,返回执行步骤s602;
93.步骤s606,按照查询到的块号到相应的队列号对应的队列中取出数据块并对数据块进行解析;
94.步骤s608,在全局登记区将数据块的状态信息更新为已解析状态。
95.具体来说,当全局登记区200中没有状态为已读取状态的块号,也就是说,队列1、队列2、队列3、队列4均为空。那么,解析线程400在全局登记区200找不到符合条件的块号。解析线程400不断循环查询过程,直至出现符合条件的块号,开始对数据进行解析。
96.继续参照图6所示,进一步地,返回步骤s602之前还包括:
97.步骤s610,判断在全局登记区进行查询的时间是否超过阈值,若是,执行步骤s612,若否,再返回步骤s602。其中,阈值可以根据需要进行设定,例如30秒、37秒、40秒、48秒等。
98.步骤s612,生成新的读取线程,使新的读取线程加入读取工作,初始化查询时间并返回步骤s602。
99.具体来说,当解析线程400在全局登记区200找不到符合条件的块号,解析线程400不断循环查询过程,并记录解析线程400的查询时间。当查询时间超出阈值时,生成一个新的读取线程,也就是在读取线程310、读取线程320、读取线程330、读取线程340之外生成一个新的线程。使新的线程加入读取工作,然后初始化查询时间,继续查询也就是返回步骤s602。
100.本领域技术人员能够理解的是,通过在查询的时间超过阈值时生成新的读取线程,使新的读取线程加入读取工作。具体来说,若查询的时间超过阈值,也就是目前数量的读取线程的读取效率跟不上解析线程400的解析效率。因此,通过在查询的时间超过阈值时生成新的读取线程,能够优化数据解析工作,进一步减少解析线程400等待的情况发生。
101.参照图1、图2、图4和图6所示,以一个实施例对数据同步过程中增量数据的解析方法进行详细说明:
102.获取到50mb的数据块日志,将数据库日志分成50块。需要说明的是,此处划分的大小只是一种示意,也可以50mb划分为25块等。在全局登记区200将50块数据块按0至49进行编号,并将所有数据块的状态信息定义为未读取状态。
103.启动读取线程310、读取线程320、读取线程330、读取线程340,每个读取线程都去全局登记区200查询块号最小且为未读取状态的块号。读取线程310查询到块号0符合条件,先将其加锁。因此,读取线程310、读取线程320、读取线程330、读取线程340无法再查询到块号0。此时,块号最小且为未读取状态的块号变为块号1。读取线程310到数据库日志中找到块号0对应的数据块进行读取,并且在全局登记区200将块号0的状态更新为读取中状态。更新为读取中状态后,可以解锁,因为状态信息已不是未读取状态。读取完成后,读取线程310将数据放入队列1中。此时,全局登记区200中块号0的状态信息更新为已读取状态。然后,读取线程310可以再去执行新一轮的查询读取动作。
104.需要说明的是,也可以不设读取中状态,而是一直锁住,直至状态变为已读取状态。
105.另外,读取线程320查询到块号1、读取线程330查询到块号2、读取线程340查询到
块号3。同样地,将读取完的数据分别放入自己对应的队列2、队列3、队列4。
106.读取线程310重新查询,查询到块号4符合条件,重复上述读取过程进行读取。同样地,读取线程320查询到块号5、读取线程330查询到块号6、读取线程340查询到块号7。
107.为便于描述,此处假设队列只能放两个数据。以读取线程340为例,当读取线程340将块号7的数据放入队列4后,块号3的数据尚未被解析线程400取走。那么,队列4放入块号7的数据后已满。那么,读取线程340不再去读取新的数据,进入等待阶段。当读取线程340已经进入等待阶段,那么开始记录读取线程340的等待时间。期间,一直对队列4的状态进行查询。如果队列4一直空不出来,等待时间一直增加。当等待时间超出阈值时,不再对队列4的状态进行查询,不论队列4空不空,读取线程340都不再去读取新的数据。直至队列4中已有的数据即块号3和块号7的数据被解析线程400解析完成,读取线程340退出。也就是说,只剩下读取线程310、读取线程320、读取线程330进行读取动作。
108.同时,解析线程400在全局登记区200按块号顺序查询,查询到块号0时,块号0为已读取状态。解析线程400根据块号0下队列1的标记到队列1中取出相应的数据进行解析。然后,再去进行查询,查询到块号1为已读取状态。解析线程400到队列2中取出相应的数据进行解析。
109.此处假设是读取线程340没有退出的情况,解析线程400一直查询,直至将块号7解析完成。读取线程310、读取线程320、读取线程330、读取线程340都未读取完成新的数据,也就是队列1、队列2、队列3、队列4均为空。那么,解析线程400在全局登记区200找不到符合条件的块号。解析线程400不断循环查询过程,并记录解析线程400的查询时间。当查询时间超出阈值时,生成一个新的读取线程,也就是在读取线程310、读取线程320、读取线程330、读取线程340之外生成一个新的线程。使新的线程加入读取工作,然后初始化查询时间,继续查询。
110.在本实施例的方案中,多个读取线程能够同时按照块号对数据库日志进行读取,然后将读取到的数据放在自身对应的队列中进行缓冲,解析线程400只需从多个队列中取出对应数据并进行解析。读取线程将数据放入队列后可以去读取新的数据,解析线程400从队列中取出数据进行解析,因为有多个读取线程同时在读取数据,所以能够减少解析线程400空等情况的发生,有助于提高解析工作的效率。
111.而且,因为按照块号顺序进行解析,所以能够保证数据解析的准确性和连续性。并且,当网络延迟发生时,虽然读取数据的过程受到影响,但是解析线程400仍然可以对已放在队列中的数据进行解析,从而有利于减小网络延迟对数据解析的影响。
112.另外,通过判断读取线程的等待时间,若读取线程的等待时间超出阈值,也就是说,读取线程过多,解析线程400处理不过来队列中的数据。那么,等读取线程对应的队列存有的全部数据被解析完成后将读取线程退出,从而对读取线程进行动态调整,避免空读取线程占据运行能力,以达到更优的资源利用率
113.进一步地,通过在查询的时间超过阈值时生成新的读取线程,使新的读取线程加入读取工作。具体来说,若查询的时间超过阈值,也就是目前数量的读取线程的读取效率跟不上解析线程400的解析效率。因此,通过在查询的时间超过阈值时生成新的读取线程,能够优化数据解析工作,进一步减少解析线程400等待的情况发生。
114.本技术还提供了一种机器可读存储介质。图7是根据本发明一个实施例的机器可
读存储介质10的示意图。机器可读存储介质10其上存储有机器可执行程序11,机器可执行程序11被处理器执行时实现上述任一实施例的数据同步过程中增量数据的解析方法。
115.就本实施例的描述而言,机器可读存储介质10可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读存储介质10甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
116.应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。
117.至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1