本發(fā)明涉及數(shù)據(jù)操作技術(shù),尤其是一種操作撤銷方法和裝置、電子設(shè)備。
背景技術(shù):
::數(shù)據(jù)庫(database)是按照數(shù)據(jù)結(jié)構(gòu)來組織、存儲(chǔ)和管理數(shù)據(jù)的倉(cāng)庫,它產(chǎn)生于距今六十多年前,隨著信息技術(shù)和市場(chǎng)的發(fā)展,特別是二十世紀(jì)九十年代以后,數(shù)據(jù)管理不再僅僅是存儲(chǔ)和管理數(shù)據(jù),而轉(zhuǎn)變成用戶所需要的各種數(shù)據(jù)管理的方式。對(duì)于數(shù)據(jù)庫中的數(shù)據(jù)操作是非常頻繁的,但出現(xiàn)操作錯(cuò)誤時(shí),就需要進(jìn)行操作撤銷,目前已有的數(shù)據(jù)庫產(chǎn)品大多是通過將數(shù)據(jù)庫備份的方式來實(shí)現(xiàn)撤銷,也即每過一段時(shí)間將數(shù)據(jù)庫文件保存一次。當(dāng)需要撤銷的時(shí)候,就將當(dāng)前數(shù)據(jù)舍棄,并讀取出之前保存的數(shù)據(jù)。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn),至少存在以下問題:現(xiàn)有技術(shù)中提供的數(shù)據(jù)撤銷操作無法適應(yīng)頻繁撤銷操作,會(huì)需要非常頻繁的備份數(shù)據(jù)庫,占用極大的存儲(chǔ)空間。技術(shù)實(shí)現(xiàn)要素:本發(fā)明實(shí)施例所要解決的一個(gè)技術(shù)問題是:提供一種適用于執(zhí)行頻繁操作的操作撤銷技術(shù)。本發(fā)明實(shí)施例提供的一種操作撤銷方法,包括:接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求;所述待撤銷操作用于對(duì)原始數(shù)據(jù)按照正序操作信息執(zhí)行操作以獲取更新數(shù)據(jù);響應(yīng)于所述對(duì)待撤銷操作的操作撤銷請(qǐng)求,獲取所述待撤銷操作對(duì)應(yīng)的逆序操作信息;所述逆序操作信息用于表示對(duì)所述待撤銷操作對(duì)應(yīng)的正序操作信息進(jìn)行完全逆操作獲得的操作信息;根據(jù)所述逆序操作信息執(zhí)行操作,獲得原始數(shù)據(jù)。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述逆序操作信息與所述正序操作信息一一對(duì)應(yīng),所述逆序操作信息包括至少一個(gè)逆操作信息;所述正序操作信息包括至少一個(gè)正操作信息;每個(gè)所述逆操作信息與一個(gè)所述正序操作信息相對(duì)應(yīng),所述逆操作信息執(zhí)行的操作與其對(duì)應(yīng)的所述正序操作信息執(zhí)行的操作為逆操作;所述逆序操作信息中逆操作信息的順序與其對(duì)應(yīng)的所述正序操作信息中正操作信息的順序相反。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求之前,還包括:開啟監(jiān)控開關(guān),執(zhí)行對(duì)原始數(shù)據(jù)的監(jiān)控;在原始數(shù)據(jù)執(zhí)行待撤銷操作得到更新數(shù)據(jù)過程中,通過監(jiān)控獲得所述待撤銷操作對(duì)應(yīng)的正序操作信息,直到關(guān)閉監(jiān)控開關(guān);所述監(jiān)控開關(guān)用于控制對(duì)所述原始數(shù)據(jù)的監(jiān)控,以獲取對(duì)所述原始數(shù)據(jù)的正序操作信息。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求之前,還包括:獲取所述待撤銷操作對(duì)應(yīng)的所有正操作信息和構(gòu)成正序操作信息的正操作信息的順序;基于每個(gè)所述正操作信息獲取對(duì)應(yīng)的逆操作信息,基于所述順序獲得對(duì)應(yīng)的逆序,將所有逆操作信息按照逆序排列后構(gòu)成對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,還包括:將獲得的對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息存入撤銷補(bǔ)丁列表中;所述撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)所述撤銷補(bǔ)丁保存一個(gè)對(duì)所述原始數(shù)據(jù)的一個(gè)逆序操作信息。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述獲取待撤銷操作對(duì)應(yīng)的逆序操作信息,包括:從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)所述待撤銷操作的一個(gè)撤銷補(bǔ)丁,基于所述撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,還包括:將獲得的對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息存入撤銷補(bǔ)丁列表中;所述撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)所述撤銷補(bǔ)丁保存一個(gè)對(duì)所述原始數(shù)據(jù)的一個(gè)逆操作信息。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述獲取待撤銷操作對(duì)應(yīng)的逆序操作信息,包括:從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)所述待撤銷操作的至少一個(gè)撤銷補(bǔ)丁,基于所有所述撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,所述撤銷補(bǔ)丁列表中所有撤銷補(bǔ)丁按照時(shí)間順序排列。在基于本發(fā)明上述方法的另一個(gè)實(shí)施例中,還包括:每達(dá)到設(shè)定時(shí)間間隔,清除所述撤銷補(bǔ)丁列表中的所有撤銷補(bǔ)丁。根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供的一種操作撤銷裝置,包括:請(qǐng)求接收單元,用于接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求,所述待撤銷操作用于對(duì)原始數(shù)據(jù)按照正序操作信息執(zhí)行操作以獲取更新數(shù)據(jù);信息獲取單元,用于響應(yīng)于所述對(duì)待撤銷操作的操作撤銷請(qǐng)求,獲取所述待撤銷操作對(duì)應(yīng)的逆序操作信息;所述逆序操作信息用于表示對(duì)所述待撤銷操作對(duì)應(yīng)的正序操作信息進(jìn)行完全逆操作獲得的操作信息;操作單元,用于根據(jù)所述逆序操作信息執(zhí)行操作,獲得原始數(shù)據(jù)。根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供的一種電子設(shè)備,包括如上所述的操作撤銷裝置。根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供的一種電子設(shè)備,包括:存儲(chǔ)器,用于存儲(chǔ)可執(zhí)行指令;以及處理器,用于與所述存儲(chǔ)器通信以執(zhí)行所述可執(zhí)行指令從而完成如上任意一項(xiàng)所述的操作撤銷方法的操作。基于本發(fā)明上述實(shí)施例提供的一種操作撤銷方法和裝置、電子設(shè)備,通過獲取待撤銷操作對(duì)應(yīng)的逆序操作信息,按照逆序操作信息對(duì)更新數(shù)據(jù)執(zhí)行操作,獲得撤銷了待撤銷操作的原始數(shù)據(jù),由于逆序操作信息的獲取使撤銷操作更易執(zhí)行,適用于頻繁撤銷操作;提高了數(shù)據(jù)撤銷操作的靈活性,支持任意時(shí)刻撤銷任意數(shù)量的數(shù)據(jù)更新操作,并大大減少了數(shù)據(jù)撤銷操作的代價(jià)。下面通過附圖和實(shí)施例,對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步的詳細(xì)描述。附圖說明構(gòu)成說明書的一部分的附圖描述了本發(fā)明的實(shí)施例,并且連同描述一起用于解釋本發(fā)明的原理。參照附圖,根據(jù)下面的詳細(xì)描述,可以更加清楚地理解本發(fā)明,其中:圖1為本發(fā)明操作撤銷方法一個(gè)實(shí)施例的流程圖。圖2為本發(fā)明操作撤銷方法又一個(gè)實(shí)施例的流程圖。圖3為本發(fā)明操作撤銷裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。圖4為本發(fā)明操作撤銷裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。圖5為本發(fā)明操作撤銷裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。具體實(shí)施方式現(xiàn)在將參照附圖來詳細(xì)描述本發(fā)明的各種示例性實(shí)施例。應(yīng)注意到:除非另外具體說明,否則在這些實(shí)施例中闡述的部件和步驟的相對(duì)布置、數(shù)字表達(dá)式和數(shù)值不限制本發(fā)明的范圍。同時(shí),應(yīng)當(dāng)明白,為了便于描述,附圖中所示出的各個(gè)部分的尺寸并不是按照實(shí)際的比例關(guān)系繪制的。以下對(duì)至少一個(gè)示例性實(shí)施例的描述實(shí)際上僅僅是說明性的,決不作為對(duì)本發(fā)明及其應(yīng)用或使用的任何限制。對(duì)于相關(guān)領(lǐng)域普通技術(shù)人員已知的技術(shù)、方法和設(shè)備可能不作詳細(xì)討論,但在適當(dāng)情況下,所述技術(shù)、方法和設(shè)備應(yīng)當(dāng)被視為說明書的一部分。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步討論。本發(fā)明實(shí)施例可以應(yīng)用于計(jì)算機(jī)系統(tǒng)/服務(wù)器,其可與眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置一起操作。適于與計(jì)算機(jī)系統(tǒng)/服務(wù)器一起使用的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的例子包括但不限于:個(gè)人計(jì)算機(jī)系統(tǒng)、服務(wù)器計(jì)算機(jī)系統(tǒng)、瘦客戶機(jī)、厚客戶機(jī)、手持或膝上設(shè)備、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)個(gè)人電腦、小型計(jì)算機(jī)系統(tǒng)﹑大型計(jì)算機(jī)系統(tǒng)和包括上述任何系統(tǒng)的分布式云計(jì)算技術(shù)環(huán)境,等等。計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在由計(jì)算機(jī)系統(tǒng)執(zhí)行的計(jì)算機(jī)系統(tǒng)可執(zhí)行指令(諸如程序模塊)的一般語境下描述。通常,程序模塊可以包括例程、程序、目標(biāo)程序、組件、邏輯、數(shù)據(jù)結(jié)構(gòu)等等,它們執(zhí)行特定的任務(wù)或者實(shí)現(xiàn)特定的抽象數(shù)據(jù)類型。計(jì)算機(jī)系統(tǒng)/服務(wù)器可以在分布式云計(jì)算環(huán)境中實(shí)施,分布式云計(jì)算環(huán)境中,任務(wù)是由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的。在分布式云計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)設(shè)備的本地或遠(yuǎn)程計(jì)算系統(tǒng)存儲(chǔ)介質(zhì)上。圖1為本發(fā)明操作撤銷方法一個(gè)實(shí)施例的流程圖。如圖1所示,該實(shí)施例方法包括:步驟103,接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求。其中,待撤銷操作用于對(duì)原始數(shù)據(jù)按照正序操作信息執(zhí)行操作以獲取更新數(shù)據(jù),待撤銷操作可以是對(duì)原始數(shù)據(jù)的刪除、添加或替換等操作,待撤銷操作可以是一個(gè)或多個(gè)刪除、添加或替換等操作,多個(gè)操作之間存在操作順序,這些順序操作對(duì)應(yīng)正序操作信息。步驟104,響應(yīng)于對(duì)待撤銷操作的操作撤銷請(qǐng)求,獲取待撤銷操作對(duì)應(yīng)的逆序操作信息。其中,逆序操作信息用于表示對(duì)待撤銷操作對(duì)應(yīng)的正序操作信息進(jìn)行完全逆操作獲得的操作信息,完全逆序可以包括兩個(gè)含義,第一種是順序是相反的,并且每個(gè)單獨(dú)的操作信息也是逆向的;第二種是指僅是操作信息的順序是相反的,通常本申請(qǐng)所指完全逆序操作是指第一種,但也存在第二種的情況。步驟105,根據(jù)逆序操作信息執(zhí)行操作,獲得原始數(shù)據(jù)。本實(shí)施例提供的操作撤銷方法可以應(yīng)用于數(shù)據(jù)庫操作,在具體應(yīng)用中,更適用于需要頻繁撤銷操作的區(qū)塊鏈系統(tǒng),現(xiàn)有的區(qū)塊鏈系統(tǒng)大多基于工作量證明機(jī)制(pow)來達(dá)成共識(shí),區(qū)塊鏈系統(tǒng)中的各個(gè)節(jié)點(diǎn)通過完成一項(xiàng)非常困難的任務(wù)(通常是一個(gè)非常難解的數(shù)學(xué)問題)來獲取在區(qū)塊鏈中添加新的區(qū)塊的權(quán)限,并獲取相應(yīng)獎(jiǎng)勵(lì)。pow能夠防止節(jié)點(diǎn)任意的向區(qū)塊鏈中添加新的區(qū)塊,從而保證區(qū)塊鏈的一致性。但由于多個(gè)節(jié)點(diǎn)可能同時(shí)完成任務(wù),這些節(jié)點(diǎn)都擁有了在區(qū)塊鏈中加入新區(qū)塊的權(quán)限,此時(shí)區(qū)塊鏈會(huì)發(fā)生分叉。分叉發(fā)生后各節(jié)點(diǎn)會(huì)在自己所在的分叉鏈上繼續(xù)工作(求解難解的數(shù)學(xué)問題),并在該分叉上添加新的區(qū)塊。直到最終有一條分叉的長(zhǎng)度超過其他分叉,此時(shí)該分叉會(huì)重新成為新的主鏈,所有節(jié)點(diǎn)會(huì)拋棄其他分叉并在該主鏈上繼續(xù)工作。大多數(shù)基于區(qū)塊鏈的互聯(lián)網(wǎng)產(chǎn)品需要連接到區(qū)塊鏈系統(tǒng)的一個(gè)或多個(gè)節(jié)點(diǎn),并從該節(jié)點(diǎn)上獲取數(shù)據(jù),同時(shí)更新后端數(shù)據(jù)庫。由于區(qū)塊鏈可能分叉,此時(shí)如果我們連接的節(jié)點(diǎn)是處于分叉鏈上并最終被拋棄,那么此時(shí)需要撤銷之前分叉鏈上的區(qū)塊數(shù)據(jù)對(duì)應(yīng)的后段數(shù)據(jù)庫更新操作。而目前已有的數(shù)據(jù)庫產(chǎn)品大多是通過將數(shù)據(jù)庫備份的方式來實(shí)現(xiàn)撤銷,也即每過一段時(shí)間將數(shù)據(jù)庫文件保存一次。當(dāng)需要撤銷的時(shí)候,就將當(dāng)前數(shù)據(jù)舍棄,并讀取出之前保存的數(shù)據(jù)。這種處理方式并不適用于區(qū)塊鏈產(chǎn)品,因?yàn)閰^(qū)塊鏈的分叉的時(shí)間不確定,而且比較頻繁(例如,以太坊測(cè)試鏈中平均30分鐘就發(fā)生一次分叉),如果采用備份恢復(fù)的方法,會(huì)需要非常頻繁的備份數(shù)據(jù)庫(例如,以太坊平均每15秒產(chǎn)生一個(gè)新的區(qū)塊,也即每15秒就需要備份一次數(shù)據(jù)庫),這樣代價(jià)太大。因此,采用本實(shí)施例提供的操作撤銷方法更適合區(qū)塊鏈系統(tǒng)的操作?;诒景l(fā)明上述實(shí)施例提供的一種操作撤銷方法,通過獲取待撤銷操作對(duì)應(yīng)的逆序操作信息,按照逆序操作信息對(duì)更新數(shù)據(jù)執(zhí)行操作,獲得撤銷了待撤銷操作的原始數(shù)據(jù),由于逆序操作信息的獲取使撤銷操作更易執(zhí)行,適用于頻繁撤銷操作;提高了數(shù)據(jù)撤銷操作的靈活性,支持任意時(shí)刻撤銷任意數(shù)量的數(shù)據(jù)更新操作,并大大減少了數(shù)據(jù)撤銷操作的代價(jià)。在本發(fā)明操作撤銷方法上述實(shí)施例的一個(gè)具體示例中,逆序操作信息與正序操作信息一一對(duì)應(yīng),逆序操作信息包括至少一個(gè)逆操作信息;正序操作信息包括至少一個(gè)正操作信息;每個(gè)逆操作信息與一個(gè)正序操作信息相對(duì)應(yīng),逆操作信息執(zhí)行的操作與其對(duì)應(yīng)的所述正序操作信息執(zhí)行的操作為逆操作;逆序操作信息中逆操作信息的順序與其對(duì)應(yīng)的正序操作信息中正操作信息的順序相反。在本發(fā)明操作撤銷方法的另一個(gè)實(shí)施例中,基于上述實(shí)施例的基礎(chǔ)上,在步驟103之前還可以包括:開啟監(jiān)控開關(guān),執(zhí)行對(duì)原始數(shù)據(jù)的監(jiān)控;在原始數(shù)據(jù)執(zhí)行待撤銷操作得到更新數(shù)據(jù)過程中,通過監(jiān)控獲得待撤銷操作對(duì)應(yīng)的正序操作信息,直到關(guān)閉監(jiān)控開關(guān);監(jiān)控開關(guān)用于控制對(duì)原始數(shù)據(jù)的監(jiān)控,以獲取對(duì)原始數(shù)據(jù)的正序操作信息。本實(shí)施例提供的方法通過監(jiān)控開關(guān)控制對(duì)那些需要執(zhí)行撤銷的操作進(jìn)行記錄其操作信息,以獲得正序操作信息,基于正序操作信息才能獲得相應(yīng)的逆序操作信息,進(jìn)而完成對(duì)待撤銷操作的撤銷;因此,在本實(shí)施例中只有在監(jiān)控開關(guān)開啟的情況下執(zhí)行的操作信息才進(jìn)行記錄,節(jié)省了存儲(chǔ)空間。圖2為本發(fā)明操作撤銷方法又一個(gè)實(shí)施例的流程圖。在上述實(shí)施例的基礎(chǔ)上,如圖2所示,本實(shí)施例方法包括:步驟201,獲取待撤銷操作對(duì)應(yīng)的所有正操作信息和構(gòu)成正序操作信息的正操作信息的順序。步驟202,基于每個(gè)正操作信息獲取對(duì)應(yīng)的逆操作信息,基于順序獲得對(duì)應(yīng)的逆序,將所有逆操作信息按照逆序排列后構(gòu)成對(duì)應(yīng)待撤銷操作對(duì)應(yīng)的逆序操作信息。步驟103,接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求。其中,待撤銷操作用于對(duì)原始數(shù)據(jù)按照正序操作信息執(zhí)行操作以獲取更新數(shù)據(jù)。步驟104,響應(yīng)于對(duì)待撤銷操作的操作撤銷請(qǐng)求,獲取待撤銷操作對(duì)應(yīng)的逆序操作信息。其中,逆序操作信息用于表示對(duì)待撤銷操作對(duì)應(yīng)的正序操作信息進(jìn)行完全逆操作獲得的操作信息。步驟105,根據(jù)逆序操作信息執(zhí)行操作,獲得原始數(shù)據(jù)。本實(shí)施例提供的方法,通過從待撤銷操作獲取正序操作信息,將正序操作信息分解為順序和每個(gè)正操作,此時(shí)獲取的是所有正操作信息和順序信息,基于順序信息將獲得對(duì)應(yīng)的逆序信息,將對(duì)應(yīng)正操作信息的逆操作信息按照逆序信息進(jìn)行排序就獲得逆序操作信息,基于該獲得的逆序操作信息執(zhí)行就可撤銷待撤銷操作對(duì)數(shù)據(jù)的操作,獲得執(zhí)行待撤銷操作之前的數(shù)據(jù)。在本發(fā)明操作撤銷方法上述實(shí)施例的一個(gè)具體示例中,步驟202與步驟103之間還可以包括:將獲得的對(duì)應(yīng)待撤銷操作對(duì)應(yīng)的逆序操作信息存入撤銷補(bǔ)丁列表中;撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)撤銷補(bǔ)丁保存一個(gè)對(duì)原始數(shù)據(jù)的一個(gè)逆序操作信息。本實(shí)施例中將每個(gè)逆序操作信息作為一個(gè)撤銷補(bǔ)丁存入撤銷補(bǔ)丁列表中,在需要撤銷待撤銷操作時(shí),只需讀取撤銷補(bǔ)丁列表中對(duì)應(yīng)該待撤銷操作的撤銷補(bǔ)丁,即可獲得逆序操作信息,進(jìn)而完成撤銷操作。在本發(fā)明操作撤銷方法上述各實(shí)施例的一個(gè)具體示例中,步驟104具體包括:從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)待撤銷操作的一個(gè)撤銷補(bǔ)丁,基于撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。在本實(shí)施例中,由于將逆序操作信息存入了撤銷補(bǔ)丁列表中,執(zhí)行撤銷操作時(shí),只要讀取撤銷補(bǔ)丁列表中對(duì)應(yīng)的撤銷補(bǔ)丁即可獲得對(duì)應(yīng)的逆序操作信息。在本發(fā)明操作撤銷方法上述實(shí)施例的另一個(gè)具體示例中,步驟202與步驟103之間還可以包括:將獲得的對(duì)應(yīng)待撤銷操作對(duì)應(yīng)的逆序操作信息存入撤銷補(bǔ)丁列表中;撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)撤銷補(bǔ)丁保存一個(gè)對(duì)原始數(shù)據(jù)的一個(gè)逆操作信息。此時(shí),步驟104具體包括:從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)待撤銷操作的至少一個(gè)撤銷補(bǔ)丁,基于所有撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。在本示例中將每個(gè)逆操作存入一個(gè)撤銷補(bǔ)丁中,并且其中撤銷補(bǔ)丁的保存方式可以是正序排列、也可以是逆序排列,此時(shí)如過需要獲得的逆序操作信息包括多個(gè)逆操作信息,那么此時(shí)需要獲得多個(gè)撤銷補(bǔ)丁即可獲得撤銷操作信息。在上述各實(shí)施例操作撤銷方法的一個(gè)具體示例中,撤銷補(bǔ)丁列表中所有撤銷補(bǔ)丁按照時(shí)間順序排列。對(duì)于按照時(shí)間順序排列的撤銷補(bǔ)丁,當(dāng)撤銷補(bǔ)丁中保存對(duì)于待撤銷操作的完整逆序操作信息時(shí),只需獲得對(duì)應(yīng)的一個(gè)撤銷補(bǔ)丁即可;而當(dāng)每個(gè)撤銷補(bǔ)丁中只保存一個(gè)逆操作信息時(shí),按照時(shí)間順序排列撤銷補(bǔ)丁時(shí),在獲取對(duì)應(yīng)待撤銷操作的多個(gè)撤銷補(bǔ)丁時(shí),從對(duì)應(yīng)第一個(gè)正操作信息的逆操作信息順序獲得所需數(shù)量的撤銷補(bǔ)丁,將獲得的撤銷補(bǔ)丁中的逆操作信息逆序讀取獲得逆序操作信息。為了保證撤銷補(bǔ)丁列表的時(shí)效性,每達(dá)到設(shè)定時(shí)間間隔,清除撤銷補(bǔ)丁列表中的所有撤銷補(bǔ)丁。定期清理撤銷補(bǔ)丁列表可以保證撤銷補(bǔ)丁列表中有剩余空間,能夠保存新的逆序操作信息或逆操作信息。key-value分布式存儲(chǔ)系統(tǒng)數(shù)據(jù)庫更新操作基本分為兩類:刪除數(shù)據(jù)操作delete,更新數(shù)據(jù)操作put。delete操作一般會(huì)帶上需要?jiǎng)h除的數(shù)據(jù)的key作為參數(shù),當(dāng)遇到delete操作時(shí)我們會(huì)先讀取key對(duì)應(yīng)的值value,并將put(key,value)操作放入撤銷補(bǔ)丁列表中。這樣撤銷時(shí)我們只需執(zhí)行put(key,value)就自然將數(shù)據(jù)庫恢復(fù)到delete之前的狀態(tài)。put操作一般會(huì)帶上兩個(gè)參數(shù)key和value,如果原先數(shù)據(jù)庫中不存在key和對(duì)應(yīng)的value,那么就新建一條記錄。如果原先存在key,就將該key對(duì)應(yīng)的值更新為value。在構(gòu)建put操作的逆操作時(shí),我們先檢查原先數(shù)據(jù)庫中是否存在key,如果不存在,其逆操作為deletekey;如果存在,逆操作為將value重置為原有的值。將上述任一實(shí)施例的操作撤銷方法應(yīng)用到一個(gè)具體的key-value數(shù)據(jù)庫中時(shí),在具體實(shí)施中可以如下:1)初始狀態(tài)下的原始表格數(shù)據(jù)如表1所示:表1原始數(shù)據(jù)列表keyvaluealice123bob456cindy789初始狀態(tài)時(shí)撤銷補(bǔ)丁列表為空。對(duì)原始數(shù)據(jù)執(zhí)行插入操作:insert(david,101112)2)對(duì)原始數(shù)據(jù)執(zhí)行插入操作后的更新數(shù)據(jù)如表2所示:表2執(zhí)行插入操作的更新數(shù)據(jù)列表keyvaluealice123bob456cindy789david101112此時(shí),撤銷補(bǔ)丁列表中包括一個(gè)撤銷補(bǔ)丁,該撤銷補(bǔ)丁為:deletedavid。3)對(duì)2)獲得的更新數(shù)據(jù)數(shù)據(jù)執(zhí)行替換操作后的更新數(shù)據(jù)如表3所示:表3執(zhí)行替換操作的更新數(shù)據(jù)列表keyvaluealice123bob456cindy789david12此時(shí),撤銷補(bǔ)丁列表中包括兩個(gè)撤銷補(bǔ)丁,如表4所示:表4撤銷補(bǔ)丁列表deletedavidupdate(david,101112)4)對(duì)3)獲得的更新數(shù)據(jù)執(zhí)行刪除操作后獲得的更新數(shù)據(jù)如表5所示:表5執(zhí)行刪除操作后的更新數(shù)據(jù)列表keyvaluebob456cindy789david12此時(shí),撤銷補(bǔ)丁列表中包括三個(gè)撤銷補(bǔ)丁,如表6所示:表6撤銷補(bǔ)丁列表deletedavidupdate(david,101112)insert(alice,123)每次數(shù)據(jù)庫撤銷操作就是獲取撤銷補(bǔ)丁列表中的撤銷補(bǔ)丁最后一行來操作當(dāng)前數(shù)據(jù)庫,當(dāng)執(zhí)行4)的刪除操作的撤銷時(shí),獲取撤銷補(bǔ)丁insert(alice,123)并執(zhí)行,數(shù)據(jù)庫恢復(fù)為表3所示的數(shù)據(jù)。如果需要將上述三次操作都進(jìn)行撤銷,將倒序獲得撤銷補(bǔ)?。篿nsert(alice,123)、update(david,101112)和deletedavid,并依次執(zhí)行操作,基于表5所示的數(shù)據(jù)執(zhí)行撤銷補(bǔ)丁insert(alice,123)獲得表3所示的數(shù)據(jù),基于表3所示的數(shù)據(jù)執(zhí)行撤銷補(bǔ)丁update(david,101112)將獲得表2所示的數(shù)據(jù),基于表2所示的數(shù)據(jù)執(zhí)行撤銷補(bǔ)丁deletedavid將獲得表1所示的數(shù)據(jù),完成對(duì)三次操作的撤銷。而監(jiān)控開關(guān)的作用在具體實(shí)施中,通過以下列子進(jìn)行說明:數(shù)據(jù)庫中保存有多張表格:分別為表7、表8和表9,表格內(nèi)容如下:表7keyvaluealice123bob456cindy789表8keyvaluechina123usa456japan789表9但是只有表7中的操作有撤銷的需求,那么對(duì)于下面一系列數(shù)據(jù)庫操作:insert(david,101112)table1;update(david,12)table1;insert(india,222)table2;update(india,2222222)table2;deletenytable3。只需要在操作表7的時(shí)候打開撤銷開關(guān),那么獲取的撤銷補(bǔ)丁列表就只包括對(duì)表1監(jiān)控獲得的操作補(bǔ)丁,如表10所示:表10撤銷補(bǔ)丁列表deletedavidupdate(david,101112)這樣就不會(huì)有很多無用的撤銷補(bǔ)丁,可以節(jié)省大量資源。本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:rom、ram、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。圖3為本發(fā)明操作撤銷裝置一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。該實(shí)施例的裝置可用于實(shí)現(xiàn)本發(fā)明上述各方法實(shí)施例。如圖3所示,該實(shí)施例的裝置包括:請(qǐng)求接收單元34,用于接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求,其中,待撤銷操作用于對(duì)原始數(shù)據(jù)按照正序操作信息執(zhí)行操作以獲取更新數(shù)據(jù)。信息獲取單元35,用于響應(yīng)于對(duì)待撤銷操作的操作撤銷請(qǐng)求,獲取待撤銷操作對(duì)應(yīng)的逆序操作信息;其中,逆序操作信息用于表示對(duì)待撤銷操作對(duì)應(yīng)的正序操作信息進(jìn)行完全逆操作獲得的操作信息。操作單元36,用于根據(jù)逆序操作信息執(zhí)行操作,獲得原始數(shù)據(jù)。基于本發(fā)明上述實(shí)施例提供的一種操作撤銷裝置,通過獲取待撤銷操作對(duì)應(yīng)的逆序操作信息,按照逆序操作信息對(duì)更新數(shù)據(jù)執(zhí)行操作,獲得撤銷了待撤銷操作的原始數(shù)據(jù),由于逆序操作信息的獲取使撤銷操作更易執(zhí)行,適用于頻繁撤銷操作;提高了數(shù)據(jù)撤銷操作的靈活性,支持任意時(shí)刻撤銷任意數(shù)量的數(shù)據(jù)更新操作,并大大減少了數(shù)據(jù)撤銷操作的代價(jià)。在本發(fā)明操作撤銷裝置上述實(shí)施例的一個(gè)具體示例中,逆序操作信息與正序操作信息一一對(duì)應(yīng),逆序操作信息包括至少一個(gè)逆操作信息;正序操作信息包括至少一個(gè)正操作信息;每個(gè)逆操作信息與一個(gè)正序操作信息相對(duì)應(yīng),逆操作信息執(zhí)行的操作與其對(duì)應(yīng)的正序操作信息執(zhí)行的操作為逆操作;逆序操作信息中逆操作信息的順序與其對(duì)應(yīng)的正序操作信息中正操作信息的順序相反。圖4為本發(fā)明操作撤銷裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。在上述實(shí)施例的基礎(chǔ)上,如圖4所示,本實(shí)施例裝置中還包括:監(jiān)控單元41,用于開啟監(jiān)控開關(guān),執(zhí)行對(duì)原始數(shù)據(jù)的監(jiān)控;在原始數(shù)據(jù)執(zhí)行待撤銷操作得到更新數(shù)據(jù)過程中,通過監(jiān)控獲得待撤銷操作對(duì)應(yīng)的正序操作信息,直到關(guān)閉監(jiān)控開關(guān);監(jiān)控開關(guān)用于控制對(duì)所述原始數(shù)據(jù)的監(jiān)控,以獲取對(duì)原始數(shù)據(jù)的正序操作信息。本實(shí)施例提供的裝置通過監(jiān)控開關(guān)控制對(duì)那些需要執(zhí)行撤銷的操作進(jìn)行記錄其操作信息,以獲得正序操作信息,基于正序操作信息才能獲得相應(yīng)的逆序操作信息,進(jìn)而完成對(duì)待撤銷操作的撤銷;因此,在本實(shí)施例中只有在監(jiān)控開關(guān)開啟的情況下執(zhí)行的操作信息才進(jìn)行記錄,節(jié)省了存儲(chǔ)空間。圖5為本發(fā)明操作撤銷裝置又一個(gè)實(shí)施例的結(jié)構(gòu)示意圖。在上述實(shí)施例的基礎(chǔ)上,如圖2所示,本實(shí)施例裝置還包括:順序獲取單元52,用于獲取待撤銷操作對(duì)應(yīng)的所有正操作信息和構(gòu)成正序操作信息的正操作信息的順序;逆操作單元53,用于基于每個(gè)正操作信息獲取對(duì)應(yīng)的逆操作信息,基于順序獲得對(duì)應(yīng)的逆序,將所有逆操作信息按照逆序排列后構(gòu)成對(duì)應(yīng)待撤銷操作對(duì)應(yīng)的逆序操作信息。本實(shí)施例提供的裝置,通過從待撤銷操作獲取正序操作信息,將正序操作信息分解為順序和每個(gè)正操作,此時(shí)獲取的是所有正操作信息和順序信息,基于順序信息將獲得對(duì)應(yīng)的逆序信息,將對(duì)應(yīng)正操作信息的逆操作信息按照逆序信息進(jìn)行排序就獲得逆序操作信息,基于該獲得的逆序操作信息執(zhí)行就可撤銷待撤銷操作對(duì)數(shù)據(jù)的操作,獲得執(zhí)行待撤銷操作之前的數(shù)據(jù)。在本發(fā)明操作撤銷裝置上述實(shí)施例的一個(gè)具體示例中,還包括:撤銷補(bǔ)丁列表,用于存儲(chǔ)獲得的對(duì)應(yīng)待撤銷操作對(duì)應(yīng)的逆序操作信息;撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)撤銷補(bǔ)丁保存一個(gè)對(duì)原始數(shù)據(jù)的一個(gè)逆序操作信息或逆操作信息。在本發(fā)明操作撤銷裝置上述實(shí)施例的一個(gè)具體示例中,信息獲取單元35,具體用于從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)待撤銷操作的至少一個(gè)撤銷補(bǔ)丁,基于撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。在本發(fā)明操作撤銷裝置上述實(shí)施例的一個(gè)具體示例中,撤銷補(bǔ)丁列表中所有撤銷補(bǔ)丁按照時(shí)間順序排列。在本發(fā)明操作撤銷裝置上述實(shí)施例的一個(gè)具體示例中,還包括:列表更新單元,用于每達(dá)到設(shè)定時(shí)間間隔,清除撤銷補(bǔ)丁列表中的所有撤銷補(bǔ)丁。根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供的一種電子設(shè)備,包括上述任意一項(xiàng)實(shí)施例操作撤銷裝置。根據(jù)本發(fā)明實(shí)施例的另一個(gè)方面,提供的一種電子設(shè)備,包括:存儲(chǔ)器,用于存儲(chǔ)可執(zhí)行指令;以及處理器,用于與所述存儲(chǔ)器通信以執(zhí)行所述可執(zhí)行指令從而完成上述任意一項(xiàng)實(shí)施例操作撤銷方法的操作。1、一種操作撤銷方法,包括:接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求;所述待撤銷操作用于對(duì)原始數(shù)據(jù)按照正序操作信息執(zhí)行操作以獲取更新數(shù)據(jù);響應(yīng)于所述對(duì)待撤銷操作的操作撤銷請(qǐng)求,獲取所述待撤銷操作對(duì)應(yīng)的逆序操作信息;所述逆序操作信息用于表示對(duì)所述待撤銷操作對(duì)應(yīng)的正序操作信息進(jìn)行完全逆操作獲得的操作信息;根據(jù)所述逆序操作信息執(zhí)行操作,獲得原始數(shù)據(jù)。2、根據(jù)1所述的方法,所述逆序操作信息與所述正序操作信息一一對(duì)應(yīng),所述逆序操作信息包括至少一個(gè)逆操作信息;所述正序操作信息包括至少一個(gè)正操作信息;每個(gè)所述逆操作信息與一個(gè)所述正序操作信息相對(duì)應(yīng),所述逆操作信息執(zhí)行的操作與其對(duì)應(yīng)的所述正序操作信息執(zhí)行的操作為逆操作;所述逆序操作信息中逆操作信息的順序與其對(duì)應(yīng)的所述正序操作信息中正操作信息的順序相反。3、根據(jù)1或2所述的方法,所述接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求之前,還包括:開啟監(jiān)控開關(guān),執(zhí)行對(duì)原始數(shù)據(jù)的監(jiān)控;在原始數(shù)據(jù)執(zhí)行待撤銷操作得到更新數(shù)據(jù)過程中,通過監(jiān)控獲得所述待撤銷操作對(duì)應(yīng)的正序操作信息,直到關(guān)閉監(jiān)控開關(guān);所述監(jiān)控開關(guān)用于控制對(duì)所述原始數(shù)據(jù)的監(jiān)控,以獲取對(duì)所述原始數(shù)據(jù)的正序操作信息。4、根據(jù)1-3任一所述的方法,所述接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求之前,還包括:獲取所述待撤銷操作對(duì)應(yīng)的所有正操作信息和構(gòu)成正序操作信息的正操作信息的順序;基于每個(gè)所述正操作信息獲取對(duì)應(yīng)的逆操作信息,基于所述順序獲得對(duì)應(yīng)的逆序,將所有逆操作信息按照逆序排列后構(gòu)成對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息。5、根據(jù)4所述的方法,還包括:將獲得的對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息存入撤銷補(bǔ)丁列表中;所述撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)所述撤銷補(bǔ)丁保存一個(gè)對(duì)所述原始數(shù)據(jù)的一個(gè)逆序操作信息。6、根據(jù)5所述的方法,所述獲取待撤銷操作對(duì)應(yīng)的逆序操作信息,包括:從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)所述待撤銷操作的一個(gè)撤銷補(bǔ)丁,基于所述撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。7、根據(jù)4所述的方法,還包括:將獲得的對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息存入撤銷補(bǔ)丁列表中;所述撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)所述撤銷補(bǔ)丁保存一個(gè)對(duì)所述原始數(shù)據(jù)的一個(gè)逆操作信息。8、根據(jù)7所述的方法,所述獲取待撤銷操作對(duì)應(yīng)的逆序操作信息,包括:從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)所述待撤銷操作的至少一個(gè)撤銷補(bǔ)丁,基于所有所述撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。9、根據(jù)5-8任一所述的方法,所述撤銷補(bǔ)丁列表中所有撤銷補(bǔ)丁按照時(shí)間順序排列。10、根據(jù)9所述的方法,還包括:每達(dá)到設(shè)定時(shí)間間隔,清除所述撤銷補(bǔ)丁列表中的所有撤銷補(bǔ)丁。11、一種操作撤銷裝置,包括:請(qǐng)求接收單元,用于接收對(duì)更新數(shù)據(jù)已執(zhí)行的待撤銷操作的操作撤銷請(qǐng)求,所述待撤銷操作用于對(duì)原始數(shù)據(jù)按照正序操作信息執(zhí)行操作以獲取更新數(shù)據(jù);信息獲取單元,用于響應(yīng)于所述對(duì)待撤銷操作的操作撤銷請(qǐng)求,獲取所述待撤銷操作對(duì)應(yīng)的逆序操作信息;所述逆序操作信息用于表示對(duì)所述待撤銷操作對(duì)應(yīng)的正序操作信息進(jìn)行完全逆操作獲得的操作信息;操作單元,用于根據(jù)所述逆序操作信息執(zhí)行操作,獲得原始數(shù)據(jù)。12、根據(jù)11所述的裝置,所述逆序操作信息與所述正序操作信息一一對(duì)應(yīng),所述逆序操作信息包括至少一個(gè)逆操作信息;所述正序操作信息包括至少一個(gè)正操作信息;每個(gè)所述逆操作信息與一個(gè)所述正序操作信息相對(duì)應(yīng),所述逆操作信息執(zhí)行的操作與其對(duì)應(yīng)的所述正序操作信息執(zhí)行的操作為逆操作;所述逆序操作信息中逆操作信息的順序與其對(duì)應(yīng)的所述正序操作信息中正操作信息的順序相反。13、根據(jù)11或12所述的方法,還包括:監(jiān)控單元,用于開啟監(jiān)控開關(guān),執(zhí)行對(duì)原始數(shù)據(jù)的監(jiān)控;在原始數(shù)據(jù)執(zhí)行待撤銷操作得到更新數(shù)據(jù)過程中,通過監(jiān)控獲得所述待撤銷操作對(duì)應(yīng)的正序操作信息,直到關(guān)閉監(jiān)控開關(guān);所述監(jiān)控開關(guān)用于控制對(duì)所述原始數(shù)據(jù)的監(jiān)控,以獲取對(duì)所述原始數(shù)據(jù)的正序操作信息。14、根據(jù)11-13任一所述的裝置,還包括:順序獲取單元,用于獲取所述待撤銷操作對(duì)應(yīng)的所有正操作信息和構(gòu)成正序操作信息的正操作信息的順序;逆操作單元,用于基于每個(gè)所述正操作信息獲取對(duì)應(yīng)的逆操作信息,基于所述順序獲得對(duì)應(yīng)的逆序,將所有逆操作信息按照逆序排列后構(gòu)成對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息。15、根據(jù)14所述的裝置,還包括:撤銷補(bǔ)丁列表,用于存儲(chǔ)獲得的對(duì)應(yīng)所述待撤銷操作對(duì)應(yīng)的逆序操作信息;所述撤銷補(bǔ)丁列表中保存至少一個(gè)撤銷補(bǔ)丁,每個(gè)所述撤銷補(bǔ)丁保存一個(gè)對(duì)所述原始數(shù)據(jù)的一個(gè)逆序操作信息或逆操作信息。16、根據(jù)15所述的裝置,所述信息獲取單元,具體用于從撤銷補(bǔ)丁列表中獲取對(duì)應(yīng)所述待撤銷操作的至少一個(gè)撤銷補(bǔ)丁,基于所述撤銷補(bǔ)丁獲得對(duì)應(yīng)待撤銷操作的逆序操作信息。17、根據(jù)15-16任一所述的裝置,所述撤銷補(bǔ)丁列表中所有撤銷補(bǔ)丁按照時(shí)間順序排列。18、根據(jù)17所述的裝置,還包括:列表更新單元,用于每達(dá)到設(shè)定時(shí)間間隔,清除所述撤銷補(bǔ)丁列表中的所有撤銷補(bǔ)丁。19、一種電子設(shè)備,包括11至18任意一項(xiàng)所述的操作撤銷裝置。20、一種電子設(shè)備,包括:存儲(chǔ)器,用于存儲(chǔ)可執(zhí)行指令;以及處理器,用于與所述存儲(chǔ)器通信以執(zhí)行所述可執(zhí)行指令從而完成1至10任意一項(xiàng)所述的操作撤銷方法的操作。本說明書中各個(gè)實(shí)施例均采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似的部分相互參見即可。對(duì)于系統(tǒng)實(shí)施例而言,由于其與方法實(shí)施例基本對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見方法實(shí)施例的部分說明即可??赡芤栽S多方式來實(shí)現(xiàn)本發(fā)明的方法和裝置。例如,可通過軟件、硬件、固件或者軟件、硬件、固件的任何組合來實(shí)現(xiàn)本發(fā)明的方法和裝置。用于所述方法的步驟的上述順序僅是為了進(jìn)行說明,本發(fā)明的方法的步驟不限于以上具體描述的順序,除非以其它方式特別說明。此外,在一些實(shí)施例中,還可將本發(fā)明實(shí)施為記錄在記錄介質(zhì)中的程序,這些程序包括用于實(shí)現(xiàn)根據(jù)本發(fā)明的方法的機(jī)器可讀指令。因而,本發(fā)明還覆蓋存儲(chǔ)用于執(zhí)行根據(jù)本發(fā)明的方法的程序的記錄介質(zhì)。本發(fā)明的描述是為了示例和描述起見而給出的,而并不是無遺漏的或者將本發(fā)明限于所公開的形式。很多修改和變化對(duì)于本領(lǐng)域的普通技術(shù)人員而言是顯然的。選擇和描述實(shí)施例是為了更好說明本發(fā)明的原理和實(shí)際應(yīng)用,并且使本領(lǐng)域的普通技術(shù)人員能夠理解本發(fā)明從而設(shè)計(jì)適于特定用途的帶有各種修改的各種實(shí)施例。當(dāng)前第1頁12當(dāng)前第1頁12