一種數(shù)據(jù)操作的處理方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計算機領(lǐng)域,特別涉及一種數(shù)據(jù)操作的處理方法及裝置。
【背景技術(shù)】
[0002]經(jīng)過近幾年計算機技術(shù)的發(fā)展,計算機程序的開發(fā)難度和工作量也逐漸增大,使得開發(fā)人員與相關(guān)服務器之間的各類型的數(shù)據(jù)交互也愈加頻繁,從而加重了該交互過程中服務器的運算量,甚至會造成服務器系統(tǒng)出現(xiàn)故障。例如,利用Flash開發(fā)過程中,會將工具欄中的結(jié)構(gòu)模型拖拽到開發(fā)窗口中,然后向服務器發(fā)送命令,告知服務器有這樣的一個拖拽過程,生成了這樣一個結(jié)構(gòu)。但是如果快速連續(xù)多次拖拽結(jié)構(gòu)模型,因網(wǎng)絡或服務器的問題,命令沒有及時到達服務器,服務器沒有及時準確的作出響應,則開發(fā)結(jié)果會出錯。
【發(fā)明內(nèi)容】
[0003]本發(fā)明提供一種數(shù)據(jù)操作的處理方法及裝置,用以減少對多個連續(xù)數(shù)據(jù)操作進行處理的過程中出現(xiàn)故障的概率,并有效避免快速連續(xù)多次進行數(shù)據(jù)操作導致的開發(fā)結(jié)果出錯的問題。
[0004]根據(jù)本發(fā)明實施例的第一方面,提供一種數(shù)據(jù)操作的處理方法,可包括:
[0005]根據(jù)用戶的數(shù)據(jù)操作,生成對應的數(shù)據(jù)操作函數(shù);
[0006]將生成的所述數(shù)據(jù)操作函數(shù)寫入隊列中;
[0007]依次讀取所述隊列中的數(shù)據(jù)操作函數(shù),并將該數(shù)據(jù)操作函數(shù)發(fā)送至服務器進行處理,同時將該數(shù)據(jù)操作函數(shù)從所述隊列中移除。
[0008]在一個實施例中,所述根據(jù)用戶的數(shù)據(jù)操作,生成對應的數(shù)據(jù)操作函數(shù),可包括:
[0009]根據(jù)該數(shù)據(jù)操作的請求對象、請求參數(shù)以及與所述請求對象對應的回滾處理函數(shù)進行閉包處理,生成對應的數(shù)據(jù)操作函數(shù),所述請求對象為進行數(shù)據(jù)操作的操作方式指令,所述請求參數(shù)包括進行數(shù)據(jù)操作的結(jié)構(gòu)模型、以及該結(jié)構(gòu)模型當前所在地址。
[0010]在一個實施例中,所述依次讀取所述隊列中的數(shù)據(jù)操作函數(shù),可包括:
[0011]當監(jiān)測到寫入數(shù)據(jù)操作函數(shù)的操作停止時,讀取所述隊列中的所述數(shù)據(jù)操作函數(shù)。
[0012]在一個實施例中,當所述讀取所述隊列中的所述數(shù)據(jù)操作函數(shù)時,還可包括:
[0013]當監(jiān)測到有數(shù)據(jù)操作函數(shù)需要寫入隊列時,待正在讀取中的數(shù)據(jù)操作函數(shù)讀取完畢后,返回執(zhí)行寫入數(shù)據(jù)操作函數(shù)的操作,直至所述數(shù)據(jù)操作函數(shù)寫入完畢,返回繼續(xù)執(zhí)行讀取所述數(shù)據(jù)操作函數(shù)的操作。
[0014]在一個實施例中,所述讀取所述隊列中的所述數(shù)據(jù)操作函數(shù),可包括:
[0015]在每次讀取隊列中的所述數(shù)據(jù)操作函數(shù)并將該數(shù)據(jù)操作函數(shù)發(fā)送至服務器進行處理之后,接收服務器針對該數(shù)據(jù)操作函數(shù)反饋的處理結(jié)果;
[0016]當所述處理結(jié)果為處理成功,且當前沒有數(shù)據(jù)操作函數(shù)寫入時,執(zhí)行讀取下一個數(shù)據(jù)操作函數(shù)的操作;
[0017]當所述處理結(jié)果為處理失敗時,清空所述隊列。
[0018]在一個實施例中,所述將該數(shù)據(jù)操作函數(shù)發(fā)送至服務器,可包括:
[0019]通過異步傳輸?shù)姆绞綄⑺鰯?shù)據(jù)操作函數(shù)發(fā)送至服務器。
[0020]根據(jù)本發(fā)明實施例的第二方面,提供一種數(shù)據(jù)操作的處理裝置,可包括:
[0021]生成模塊,用于根據(jù)用戶的數(shù)據(jù)操作,生成對應的數(shù)據(jù)操作函數(shù);
[0022]寫入模塊,用于將生成的所述數(shù)據(jù)操作函數(shù)寫入隊列中;
[0023]讀取模塊,用于依次讀取所述隊列中的數(shù)據(jù)操作函數(shù),并將該數(shù)據(jù)操作函數(shù)發(fā)送至服務器進行處理,同時將該數(shù)據(jù)操作函數(shù)從所述隊列中移除。
[0024]在一個實施例中,所述生成模塊,可包括:
[0025]閉包子模塊,用于根據(jù)該數(shù)據(jù)操作的請求對象、請求參數(shù)以及與所述請求對象對應的回滾處理函數(shù)進行閉包處理,生成對應的數(shù)據(jù)操作函數(shù),所述請求對象為進行數(shù)據(jù)操作的操作方式指令,所述請求參數(shù)包括進行數(shù)據(jù)操作的結(jié)構(gòu)模型、以及該結(jié)構(gòu)模型當前所在地址。
[0026]在一個實施例中,所述讀取模塊,可包括:
[0027]讀取子模塊,用于當寫入數(shù)據(jù)操作函數(shù)的操作停止時,讀取所述隊列中的所述數(shù)據(jù)操作函數(shù)。
[0028]在一個實施例中,所述裝置還可包括監(jiān)測模塊:
[0029]所述監(jiān)測模塊,用于當讀取所述隊列中的所述數(shù)據(jù)操作函數(shù)時,監(jiān)測是否有數(shù)據(jù)操作函數(shù)需要寫入隊列;
[0030]所述寫入模塊,還用于當監(jiān)測到有數(shù)據(jù)操作函數(shù)需要寫入隊列,待正在讀取中的數(shù)據(jù)操作函數(shù)讀取完畢后,返回執(zhí)行寫入數(shù)據(jù)操作函數(shù)的操作,直至所述數(shù)據(jù)操作函數(shù)寫入完畢;
[0031]所述讀取模塊,還用于當所述數(shù)據(jù)函數(shù)寫入完畢時,返回繼續(xù)執(zhí)行讀取所述數(shù)據(jù)操作函數(shù)的操作。
[0032]在一個實施例中,所述裝置還可包括接收模塊和清空模塊:
[0033]所述接收模塊,用于在每次讀取隊列中的所述數(shù)據(jù)操作函數(shù)并將該數(shù)據(jù)操作函數(shù)發(fā)送至服務器進行處理之后,接收服務器針對該數(shù)據(jù)操作函數(shù)反饋的處理結(jié)果;
[0034]所述讀取模塊,還用于當所述處理結(jié)果為處理成功,且當前沒有數(shù)據(jù)操作函數(shù)寫入時,執(zhí)行讀取下一個數(shù)據(jù)操作函數(shù)的操作;
[0035]所述清空模塊,用于當所述處理結(jié)果為處理失敗時,清空所述隊列。
[0036]在一個實施例中,所述裝置還可包括:
[0037]發(fā)送模塊,用于通過異步傳輸?shù)姆绞綄⑺鰯?shù)據(jù)操作函數(shù)發(fā)送至服務器。
[0038]本發(fā)明實施例提供的技術(shù)方案可產(chǎn)生以下有益效果:
[0039]本發(fā)明實施例提供的數(shù)據(jù)操作的處理方法及裝置中,根據(jù)用戶的數(shù)據(jù)操作,生成對應的數(shù)據(jù)操作函數(shù);將生成的所述數(shù)據(jù)操作函數(shù)寫入隊列中;依次讀取所述隊列中的數(shù)據(jù)操作函數(shù),并將該數(shù)據(jù)操作函數(shù)發(fā)送至服務器進行處理,同時將該數(shù)據(jù)操作函數(shù)從所述隊列中移除。上述方法通過將連續(xù)多個數(shù)據(jù)操作分別生成對應的函數(shù),并依次將生成的函數(shù)寫入隊列,隨后依次讀取寫入隊列中的函數(shù)并進行相應處理,從而實現(xiàn)了對各個數(shù)據(jù)操作進行有序的處理,減少了對數(shù)據(jù)操作處理過程中出現(xiàn)故障的概率,提高了處理效率,并且有效避免開發(fā)結(jié)果出錯。
[0040]本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
[0041]下面通過附圖和實施例,對本發(fā)明的技術(shù)方案做進一步的詳細描述。
【附圖說明】
[0042]附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
[0043]圖1為本發(fā)明根據(jù)一示例性實施例示出的數(shù)據(jù)操作函數(shù)的處理方法的流程圖;
[0044]圖2為本發(fā)明根據(jù)一示例性實施例示出的另一數(shù)據(jù)操作函數(shù)的處理方法的流程圖;
[0045]圖3為本發(fā)明根據(jù)一示例性實施例示出的數(shù)據(jù)操作函數(shù)的處理裝置的框圖;
[0046]圖4為本發(fā)明根據(jù)一示例性實施例示出的另一數(shù)據(jù)操作函數(shù)的處理裝置的框圖;
[0047]圖5為本發(fā)明根據(jù)一示例性實施例示出的另一數(shù)據(jù)操作函數(shù)的處理裝置的框圖;
[0048]圖6為本發(fā)明根據(jù)一示例性實施例示出的另一數(shù)據(jù)操作函數(shù)的處理裝置的框圖。
【具體實施方式】
[0049]以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0050]根據(jù)本發(fā)明實施例的第一方面,提供一種數(shù)據(jù)操作的處理方法,該方法可用于能夠進行數(shù)據(jù)操作處理的各種客戶端、應用程序中,如圖1所示,該方法可包括步驟S101-S103:
[0051]步驟S101:根據(jù)用戶的數(shù)據(jù)操作,生成對應的數(shù)據(jù)操作函數(shù)。
[0052]步驟S102:將生成的數(shù)據(jù)操作函數(shù)寫入隊列中。
[0053]步驟S103:依次讀取隊列中的數(shù)據(jù)操作函數(shù),并將該數(shù)據(jù)操作函數(shù)發(fā)送至服務器進行處理,同時將該數(shù)據(jù)操作函數(shù)從隊列中移除。
[0054]其中,用戶可連續(xù)進行多個數(shù)據(jù)操作,例如連續(xù)多次對某個結(jié)構(gòu)模型進行拖拽移動、編輯等操作,與此同時,可根據(jù)上述每次數(shù)據(jù)操作分別生成對應的數(shù)據(jù)操作函數(shù),并按照各個數(shù)據(jù)操作產(chǎn)生的先后順序,依次將其對應的數(shù)據(jù)操作函數(shù)寫入隊列中。而后根據(jù)寫入的先后順序依次讀取隊列中的數(shù)據(jù)操作函數(shù),隨后將數(shù)據(jù)操作函數(shù)發(fā)送至服務器進行處理,同時將發(fā)送后的數(shù)據(jù)操作函數(shù)從隊列中移除。上述方法通過將多個數(shù)據(jù)操作通過函數(shù)形式寫入隊列的方式對其進行有序的處理,從而減少了數(shù)據(jù)操作處理過程中出現(xiàn)的故障。
[0055]在一個實施例中,步驟S101可實施為:
[0056]根據(jù)數(shù)據(jù)操作的請求對象、請求參數(shù)以及與請求對象對應的回滾處理函數(shù)進行閉包處理,生成對應的數(shù)據(jù)操作函數(shù),請求對象為進行數(shù)據(jù)操作的操作方式指令,請求參數(shù)包括進行數(shù)據(jù)操作的結(jié)構(gòu)模型、以及該結(jié)構(gòu)模型當前所在地址。
[0057]在另一個實施例中,當用戶連續(xù)多次對某個結(jié)構(gòu)模型進行拖拽移動的操作時,可根據(jù)每次操作將其對應的拖拽移動指令、該結(jié)構(gòu)模型、該結(jié)構(gòu)模型當前所在地址和移動的目標地址、以及該拖拽移動指令對應的回滾函數(shù)進行閉包處理,分別生成對應于每次操作的數(shù)據(jù)操作函數(shù)。該實施例實現(xiàn)了將數(shù)據(jù)操作的各項參數(shù)進行閉包整合,從而使得對數(shù)據(jù)操作的記錄更加準確有序。
[0058]在一個實施例中,步驟S103可實施為:
[0059]當監(jiān)測到寫入數(shù)據(jù)操作函數(shù)的操作停止時,讀取隊列中的數(shù)據(jù)操作函數(shù)。
[0060]該實施例可通過Javascript ( —種基于對象和事件驅(qū)動并具有相對安全性的客戶端腳本語言,廣泛用于客戶端Web開發(fā)領(lǐng)域)執(zhí)行,而Javascript的執(zhí)行基于單線程處理技術(shù),即當隊列入口正在執(zhí)行寫入數(shù)據(jù)操作函數(shù)的操作時,隊列出口無法同時執(zhí)行讀取數(shù)據(jù)操作函數(shù)的操作;反之,當隊列出口正在執(zhí)行讀取數(shù)據(jù)操作函數(shù)的操作時,隊列入口就無法執(zhí)行寫入數(shù)據(jù)操作函數(shù)的操作。其中,隊列的實質(zhì)是數(shù)組,而每個寫入隊列的數(shù)據(jù)操作函數(shù)都是構(gòu)成該數(shù)組的數(shù)組元素,寫入數(shù)據(jù)操作函數(shù)的操作可采用push方法執(zhí)行,即在數(shù)組的結(jié)尾(隊列入口)添加一個或多個數(shù)組元素;而移除數(shù)據(jù)操作函數(shù)的操作可采用shift方法執(zhí)行,即把數(shù)組開頭(隊列出口)的第一個數(shù)組元素刪除。該方法的好處是使系統(tǒng)運行穩(wěn)定、數(shù)據(jù)傳輸時擴展性強,有利于點對點的數(shù)據(jù)處理。
[0061]在一個實施例中,當正在執(zhí)行讀取隊列中的數(shù)據(jù)操作函數(shù)的操作時,可對隊列中寫入數(shù)據(jù)操作函數(shù)的操作執(zhí)行情況進行實時監(jiān)測。當監(jiān)測到有數(shù)據(jù)操作函數(shù)需要寫入隊列時,待正在讀取中的數(shù)據(jù)操作函數(shù)讀取完畢后,利用回調(diào)技術(shù)返回執(zhí)行寫入數(shù)據(jù)操作函