本申請涉及計算機
技術領域:
:,尤其涉及一種數(shù)據(jù)查詢方法及裝置。
背景技術:
::數(shù)據(jù)庫是按照數(shù)據(jù)結構來組織、存儲和管理數(shù)據(jù)的倉庫,其中集合了各種數(shù)據(jù)表??梢岳貌樵冋埱?如查詢語句)對數(shù)據(jù)表中的字段進行查詢、插入、刪除和修改,以及對引用數(shù)據(jù)表中的字段的表達式進行計算。在利用數(shù)據(jù)庫進行的業(yè)務處理時,可以將該業(yè)務的業(yè)務邏輯用表達式表示,表達式中引用業(yè)務邏輯所涉及的數(shù)據(jù)在數(shù)據(jù)庫中所屬的字段,以及可以將業(yè)務邏輯涉及的數(shù)據(jù)需要滿足的條件用字段需滿足的條件進行表示。此時,對于事先能夠確認涉及的海量數(shù)據(jù)需要滿足的條件的業(yè)務邏輯,現(xiàn)有的數(shù)據(jù)查詢方式中,通常采用數(shù)據(jù)預備的方式,即業(yè)務服務器預先從用于實現(xiàn)業(yè)務邏輯的表達式中解析出字段,從數(shù)據(jù)庫中取出符合業(yè)務參數(shù)值的字段下的字段值,利用取出的字段值執(zhí)行所述表達式,得到執(zhí)行結果,之后回流到數(shù)據(jù)庫中。當業(yè)務服務器從數(shù)據(jù)庫查詢所述確認涉及的數(shù)據(jù)需要滿足的條件的業(yè)務邏輯時,數(shù)據(jù)庫將之前回流的數(shù)據(jù)作為查詢結果返回給業(yè)務服務器。對于無法預知涉及的海量數(shù)據(jù)需要滿足的條件的業(yè)務邏輯,現(xiàn)有的數(shù)據(jù)查詢方式中,通常采用延遲告知用戶的手段,通知用戶計算可能會消耗N小時,N小時候會將結果推給用戶。這是因為,對于海量數(shù)據(jù),超過千萬條甚至超過億條的數(shù)據(jù)需要從數(shù)據(jù)庫讀取,這將對數(shù)據(jù)庫造成極大壓力。同時,由于網絡傳輸及IO消耗,耗時極為嚴重,過億條的數(shù)據(jù)讀取往往會數(shù)十分鐘甚至數(shù)小時,讀取之后還需要耗費一定的時間進行計算,這根本無法達到頁面級響應的要求。由上述分析可知,現(xiàn)有的查詢方式處理關于業(yè)務邏輯的查詢時,處理能力 有限,無法滿足用戶的需求。技術實現(xiàn)要素:本申請實施例提供一種數(shù)據(jù)查詢方法及裝置方法,用以解決現(xiàn)有的數(shù)據(jù)庫查詢方式存在的處理能力有限,無法滿足用戶的需求的問題。一種數(shù)據(jù)查詢方法,包括:業(yè)務服務器接收用戶終端發(fā)送的第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于表示業(yè)務邏輯且引用至少一個字段;從預先緩存的表達式與字段值之間的對應關系中,查找所述第一查詢請求中包含的表達式對應的字段值,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值;利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到執(zhí)行結果;將所述執(zhí)行結果攜帶在第一查詢響應中發(fā)送給所述用戶終端。一種數(shù)據(jù)查詢方法,包括:向業(yè)務服務器發(fā)送第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于實現(xiàn)業(yè)務邏輯且引用至少一個字段;接收所述業(yè)務服務器返回的第一查詢響應,所述第一查詢響應中攜帶有業(yè)務服務器利用預先建立的表達式與字段值之間的對應關系,查找所述第一查詢請求中包含的表達式對應的字段值,以及利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到的執(zhí)行結果,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值。一種數(shù)據(jù)查詢裝置,包括:接收模塊,用于接收用戶終端發(fā)送的第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于表示業(yè)務邏輯且引用至少一個字段;查找模塊,用于從預先緩存的表達式與字段值之間的對應關系中,查找所 述第一查詢請求中包含的表達式對應的字段值,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值;執(zhí)行模塊,用于利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到執(zhí)行結果;發(fā)送模塊,用于將所述執(zhí)行結果攜帶在第一查詢響應中發(fā)送給所述用戶終端。一種數(shù)據(jù)查詢裝置,包括:發(fā)送模塊,用于向業(yè)務服務器發(fā)送第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于實現(xiàn)業(yè)務邏輯且引用至少一個字段;接收模塊,用于接收所述業(yè)務服務器返回的第一查詢響應,所述第一查詢響應中攜帶有業(yè)務服務器利用預先建立的表達式與字段值之間的對應關系,查找所述第一查詢請求中包含的表達式對應的字段值,以及利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到的執(zhí)行結果,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值。在本申請實施例的方案中,預先緩存表達式與字段值之間的對應關系,在查詢時,直接從緩存的對應關系中查詢第一查詢請求中包含的表達式對應的字段值,之后進行第一查詢請求中包含的表達式的執(zhí)行,也即進行業(yè)務邏輯的執(zhí)行,繞開了從數(shù)據(jù)庫的海量數(shù)據(jù)中查詢表達式引用的字段對應的數(shù)據(jù),因此,降低了執(zhí)行表達式時對數(shù)據(jù)庫帶來的壓力以及網絡傳輸資源的消耗,并且減少了引用字段的查詢以及字段下的數(shù)據(jù)的網絡傳輸?shù)暮臅r,使得執(zhí)行結果可以在頁面級響應時間內返回給用戶終端,滿足了用戶的需求。附圖說明圖1為本申請實施例一提供的數(shù)據(jù)查詢方法的流程圖;圖2為本申請實施例二提供的數(shù)據(jù)查詢方法的流程圖;圖3為本申請實施例二提供的數(shù)據(jù)處理過程的框圖;圖4為本申請實施例三提供的數(shù)據(jù)查詢裝置的結構示意圖;圖5為本申請實施例四提供的數(shù)據(jù)查詢裝置的結構示意圖。具體實施方式以下結合說明書附圖對本申請的優(yōu)選實施例進行說明,應當理解,此處所描述的優(yōu)選實施例僅用于說明和解釋本申請,并不用于限定本申請。并且在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。實施例一如圖1所示,其為本申請實施例一提供的數(shù)據(jù)查詢方法的流程圖,包括以下步驟:步驟101:業(yè)務服務器接收用戶終端發(fā)送的第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于表示業(yè)務邏輯且引用至少一個字段;上述字段為數(shù)據(jù)庫的數(shù)據(jù)表中的字段。所述第一查詢請求中可以包括條件信息,也可以不包括條件信息,其中條件信息為第一查詢請求中包含的表達式引用的字段需滿足的條件;由于這里用表達式表示了業(yè)務邏輯,因此,這里字段需滿足的條件也即為業(yè)務邏輯涉及的數(shù)據(jù)需要滿足的條件。在不包括條件信息時,表明業(yè)務邏輯設計的數(shù)據(jù)是表達式中引用的字段下的所有數(shù)據(jù)。下面通過舉例對步驟101進行說明:假設數(shù)據(jù)庫的數(shù)據(jù)表A(tableA)中存儲了商品編號、好評率、關注度、差評率、收藏率等字段以及各字段下的字段值,業(yè)務邏輯為商品受用戶喜愛程度,用于表示喜愛程度的表達式為(好評率+收藏率)*常數(shù);則用戶終端可以利用SQL(StructuredQueryLanguage,結構化查詢語言)語句向業(yè)務服務器發(fā)送不包括條件信息的第一查詢請求,即select(好評率+ 收藏率)*常數(shù);此時業(yè)務服務器即可接收到select(好評率+收藏率)*常數(shù);用戶終端也可以向業(yè)務服務器發(fā)送包含條件信息的第一查詢請求,即select(好評率+收藏率)*常數(shù)where好評率=“指定范圍值1”and收藏率=“指定范圍值2”,這里的指定范圍值1是指好評率字段的列值為指定范圍內的值,指定范圍值2是指好評率字段的列值為指定范圍內的值。步驟102:從預先緩存的表達式與字段值之間的對應關系中,查找所述第一查詢請求中包含的表達式對應的字段值,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值;由于業(yè)務服務器提供給用戶終端查詢的業(yè)務邏輯是有限的,用戶終端可以在提供的業(yè)務邏輯中選擇一種或多種業(yè)務邏輯進行查詢,因此,本步驟102中,預先將各個業(yè)務邏輯用表達式來表示,建立并緩存表達式與表達式引用的字段下的字段值之間的對應關系;這里,建立的對應關系通常是表達式與表達式引用的字段下的所有字段值之間的對應關系。這是因為,用戶終端查詢的業(yè)務邏輯(表達式)是可以確定的,但是,由于各個用戶終端的需求不同,查詢的業(yè)務邏輯涉及到字段下的具體哪些字段值(數(shù)據(jù))可能是千差萬別的,相應的結果也會千差萬別,這也是現(xiàn)有技術無法使用數(shù)據(jù)回流技術來滿足用戶的需求的原因,這里緩存表達式引用的字段下的所有字段值,便于后續(xù)滿足不同用戶終端的需求。由于表達式對應的字段值的數(shù)據(jù)量較大,因此,可以用表達式命名字段值文件的名稱或作為字段值文件名稱的一部分來表明表達式和字段值的對應關系。字段值的具體存儲方式可以以二級制格式進行存儲,以行進行區(qū)分;假設“好評率”下的字段值為60%、95%、70%......70%;“收藏率”下的字段值為80%、78%、30%......75%;則二進制文件中存儲的數(shù)據(jù)可以為:在第一查詢請求中包括條件信息時,執(zhí)行步驟102之后,還需要利用所述第一查詢請求中包含的條件信息,對查找到的字段值進行過濾,獲得滿足所述條件信息的字段值;沿用步驟101中的例子,假設指定范圍值1和指定范圍2均為100-100000,則這里查找緩存的對應關系中表達式(好評率+收藏率)*常數(shù)對應的字段值為“好評率”和“收藏率”這兩個字段下的字段值;然后從“好評率”這一字段下選擇列值在100-100000的字段值,以及從“收藏率”這一字段下選擇列值在100-100000的字段值。具體的,可以通過以下三個步驟建立表達式與字段值之間的對應關系:第一步:接收第二查詢請求,所述第二查詢請求中包含表達式和數(shù)據(jù)表標識,所述第二查詢請求中包含的表達式引用至少一個字段,所述數(shù)據(jù)表標識所表示的數(shù)據(jù)表中包含所述第二查詢請求中包含的表達式所引用的字段;若需要建立的表達式與字段值之間的對應關系為(好評率+收藏率)*常數(shù)與“好評率”下的字段值和“收藏率”下的字段值,則上述第一步中,第二查詢請求使用的查詢語句可以為:select(好評率+收藏率)*常數(shù)fromtableA第二步:利用所述第二查詢請求中包含的表達式和所述數(shù)據(jù)表標識,從數(shù)據(jù)庫中獲取第二查詢請求中包含的表達式所引用的字段下的字段值;上述第二查詢請求中包含的數(shù)據(jù)表標識表示的數(shù)據(jù)表,包含了第二查詢請求中包含表達式引用的字段,以及字段下的字段值;因此,可以直接利用數(shù)據(jù)表標識從數(shù)據(jù)庫中查找表達式所引用的字段下的字段值;這里的第二步具體包括以下步驟1)至步驟3):步驟1):解析所述第二查詢請求中包含的表達式所引用的字段;步驟1)的具體實現(xiàn)可以為:將所述第二查詢請求中包含的表達式中包含的字符與所述數(shù)據(jù)表標識所表示的數(shù)據(jù)表中包含的字段進行匹配;將匹配成功的字符作為所述第二查詢請求中包含的表達式所引用的字段。步驟2):從數(shù)據(jù)庫中查找所述數(shù)據(jù)表標識所表示的數(shù)據(jù)表;步驟3):從查找到的數(shù)據(jù)表中獲取解析出的字段下的字段值。第三步:建立從數(shù)據(jù)庫中獲取的字段值與第二查詢請求中包含的表達式之間的對應關系。在針對每一業(yè)務邏輯,利用上述三個步驟步驟建立了表示該業(yè)務邏輯的表達式和字段值之間的對應關系之后,可以將對應關系保存在業(yè)務服務器的本地緩存中。對于海量數(shù)據(jù)而言,還可以將對應關系保存在緩存集群中。建立了上述對應關系之后,將上述對應關系直接存儲在緩存集群或者本地緩存中,實際讀取中盡管降低了數(shù)據(jù)庫的壓力,加快了業(yè)務服務器對用戶終端的查詢響應速度,然而,無論是存放到本地文件系統(tǒng)中或者放到緩存中一旦讀取都會消耗極大的IO資源或網絡資源。以測試數(shù)據(jù)為例,三個整數(shù)(int)類型的字段數(shù)據(jù)量一億條的導出備份數(shù)據(jù)大小超過1G,那么,1G大小無論是存放到本地文件系統(tǒng)中或者放到緩存中一旦讀取都會消耗極大的IO資源或網絡資源。為了減少IO資源或網絡資源的消耗,本申請實施例采用數(shù)據(jù)分割以及數(shù)據(jù)壓縮的手段,在上述第二步之后,下述第三步之前,還將從數(shù)據(jù)庫中獲取的字段值進行切割;對切割后得到的字段值進行壓縮,得到字段值壓縮包;具體分割時,通常可以將每千萬條數(shù)據(jù)為一個分割體,如上述1G文件,將會被分割成10個分割體,分割后每個分割體大小為百兆左右。同時,對分隔體采用壓縮算法(例如:LZ4極速壓縮算法進行壓縮,LZ4單核的壓縮速度超過400MB/s,單核的解壓速度超過1GB/s),壓縮后的文件分割體在1M左右,并將分割體存入緩存集群中。此時,上述第三步建立的對應關系具體為: 字段值壓縮包與所述第二查詢請求中包含的表達式之間的對應關系。步驟103:利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到執(zhí)行結果;這里,若步驟102中獲得的是滿足所述條件信息的字段值,則此時,本步驟103具體為:利用獲得的滿足所述條件信息的字段值,執(zhí)行所述第一查詢請求中包含的表達式,得到執(zhí)行結果。此外,考慮到獲得的滿足所述條件信息的字段值的數(shù)據(jù)量較大,為了快速地利用獲得的字段值執(zhí)行所述第一查詢請求中包含的表達式,業(yè)務服務器可以將查找到的字段值以流的方式輸入流式(Storm)處理集群;由然后由Storm處理集群來對所述表達式進行處理,也即進行業(yè)務邏輯的處理,之后所述服務器將所述流式處理集群輸出的作為所述第一查詢請求中包含的表達式的執(zhí)行結果。若獲得的滿足所述條件信息的字段值為字段值壓縮包,則Storm處理集群在進行數(shù)據(jù)邏輯處理之前還需要先對數(shù)據(jù)進行恢復(也即解壓縮處理)。將恢復后的數(shù)據(jù)以數(shù)據(jù)流形式噴出,以便于進行數(shù)據(jù)邏輯處理,這一過程詳見圖2所示。這里,若用戶終端的條件信息中還包含排序(升序及降序)以及取排列在前N位的執(zhí)行結果,則還可以對所述執(zhí)行結果進行排序,從排序后的執(zhí)行結果中取出排列在前N位的執(zhí)行結果。步驟104:將所述執(zhí)行結果攜帶在第一查詢響應中發(fā)送給所述用戶終端。此外,在本申請實施例中,考慮到每個數(shù)據(jù)庫中的數(shù)據(jù)是實時變化的,因此,為了提高返回給對用戶終端的查詢響應的準確性,還需要對已經緩存的對應關系進行更新。具體為,業(yè)務服務器根據(jù)配置的對應關系更新時刻,在所述對應關系更新時刻到來時,重新從數(shù)據(jù)庫中獲取第二查詢請求中包含的表達式所引用的字段下的字段值;利用重新獲取的字段值更新建立的所述對應關系。也即,當配置的對應關系更新時刻到來時,執(zhí)行上述步驟第一步至第三步,以 更新表達式對應的字段值。并且,配置對應關系更新時刻的方法可以為配置某一具體時刻作為對應關系更新時刻,也可以為配置某個周期,則業(yè)務服務器將每個周期結束的時刻作為對應關系更新時刻。需要說明的是,在第一查詢語句中不包含條件信息時,由于業(yè)務邏輯是確定的,因此,也可以采用
背景技術:
:中的事先把表達式的值計算出來,將計算結果回流到數(shù)據(jù)庫中,在接收到第一查詢語句時,直接將回流到數(shù)據(jù)庫中的計算結果返回給用戶終端。但對于本申請的方案而言,不論第一查詢語句中是否包含條件信息,均不需要進行數(shù)據(jù)回流操作,直接利用緩存的所述對應關系,即可較快地獲取業(yè)務邏輯的執(zhí)行結果,在頁面級響應時間內將查詢結果返回給用戶。在本申請實施例一的方案中,業(yè)務服務器預先緩存用于表示業(yè)務邏輯的表達式和字段值之間的對應關系,也即提前從數(shù)據(jù)庫中讀出了各表達式引用的字段下的字段值,并對讀出的字段值進行了切割以及壓縮,以降低真正計算時候帶來的數(shù)據(jù)庫壓力及網絡傳輸消耗,此外,還配合實時計算框架(Storm處理集群)來做大數(shù)據(jù)量的實時計算來達到高速計算,較大程度上提高了業(yè)務服務器的處理能,使得執(zhí)行結果可以在頁面級響應時間內返回給用戶終端,滿足了用戶的需求。以上實施例一從業(yè)務服務器的角度描述了本申請的數(shù)據(jù)查詢方法,下面通過實施二的方案從用戶終端角度描述本申請的數(shù)據(jù)查詢方法。實施例二如圖3所示,其為本申請實施例二提供的數(shù)據(jù)查詢方法的流程圖,包括以下步驟:步驟301:向業(yè)務服務器發(fā)送第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于實現(xiàn)業(yè)務邏輯且引用至少一個字段;步驟302:接收所述業(yè)務服務器返回的第一查詢響應,所述第一查詢響應中攜帶有業(yè)務服務器利用預先建立的表達式與字段值之間的對應關系,查找所述第一查詢請求中包含的表達式對應的字段值,以及利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到的執(zhí)行結果,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值。本申請實施二的數(shù)據(jù)查詢方法與實施例一僅是描述角度的不同,具體實現(xiàn)細節(jié)參見實施例一的描述,這里不再贅述。實施例三如圖4所示,其為本申請實施例三提供的數(shù)據(jù)查詢裝置的結構示意圖,包括:接收模塊41、查找模塊42、執(zhí)行模塊43和發(fā)送模塊44,其中:接收模塊41,用于接收用戶終端發(fā)送的第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于表示業(yè)務邏輯且引用至少一個字段;查找模塊42,用于從預先緩存的表達式與字段值之間的對應關系中,查找所述第一查詢請求中包含的表達式對應的字段值,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值;執(zhí)行模塊43,用于利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到執(zhí)行結果;發(fā)送模塊44,用于將所述執(zhí)行結果攜帶在第一查詢響應中發(fā)送給所述用戶終端。較佳的,所述第一查詢請求中還包括條件信息,該條件信息為第一查詢請求中包含的表達式引用的字段需滿足的條件;所述裝置還包括:過濾模塊45,用于從預先緩存的表達式與字段值之間的對應關系中,查找所述第一查詢請求中包含的達式對應的字段值之后,利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到執(zhí)行結果之前,利用所述第一查詢請 求中包含的條件信息,對查找到的字段值進行過濾,獲得滿足所述條件信息的字段值;所述執(zhí)行模塊43,具體用于利用獲得的滿足所述條件信息的字段值,執(zhí)行所述第一查詢請求中包含的表達式,得到執(zhí)行結果。較佳的,所述裝置還包括:對應關系建立模塊46,用于通過以下方式建立表達式與字段值之間的對應關系:接收第二查詢請求,所述第二查詢請求中包含表達式和數(shù)據(jù)表標識,所述第二查詢請求中包含的表達式引用至少一個字段,所述數(shù)據(jù)表標識所表示的數(shù)據(jù)表中包含所述第二查詢請求中包含的表達式所引用的字段;利用所述第二查詢請求中包含的表達式和所述數(shù)據(jù)表標識,從數(shù)據(jù)庫中獲取第二查詢請求中包含的表達式所引用的字段下的字段值;建立從數(shù)據(jù)庫中獲取的字段值與第二查詢請求中包含的表達式之間的對應關系。較佳的,所述對應關系建立模塊46,具體用于解析所述第二查詢請求中包含的表達式所引用的字段;從數(shù)據(jù)庫中查找所述數(shù)據(jù)表標識所表示的數(shù)據(jù)表;從查找到的數(shù)據(jù)表中獲取解析出的字段下的字段值。較佳的,所述對應關系建立模塊46,還用于在利用所述第二查詢請求中包含的表達式和所述數(shù)據(jù)表標識,從數(shù)據(jù)庫中獲取第二查詢請求中包含的表達式所引用的字段下的字段值之后,建立從數(shù)據(jù)庫中獲取的字段值與第二查詢請求中包含的表達式之間的對應關系之前,將從數(shù)據(jù)庫中獲取的字段值進行切割;對切割后得到的字段值進行壓縮,得到字段值壓縮包;所述對應關系建立模塊46,具體用于建立所述字段值壓縮包與所述第二查詢請求中包含的表達式之間的對應關系。較佳的,所述對應關系建立模塊46,還用于根據(jù)配置的對應關系更新時刻,在所述對應關系更新時刻到來時,重新從數(shù)據(jù)庫中獲取第二查詢請求中包含的表達式所引用的字段下的字段值;利用重新獲取的字段值更新建立的所述對應關系。較佳的,所述執(zhí)行模塊43,具體用于將查找到的字段值以流的方式輸入流式處理集群;將所述流式處理集群輸出的作為所述第一查詢請求中包含的表達式的執(zhí)行結果。本申請實施例三的具體細節(jié)的實現(xiàn),可參見實施例一的描述,這里不再贅述。實施例四如圖5所示,其為本申請實施例四提供的數(shù)據(jù)查詢裝置的結構示意圖,包括:發(fā)送模塊51和接收模塊52,其中:發(fā)送模塊51,用于向業(yè)務服務器發(fā)送第一查詢請求,所述第一查詢請求中包含表達式,所述表達式用于實現(xiàn)業(yè)務邏輯且引用至少一個字段;接收模塊52,用于接收所述業(yè)務服務器返回的第一查詢響應,所述第一查詢響應中攜帶有業(yè)務服務器利用預先建立的表達式與字段值之間的對應關系,查找所述第一查詢請求中包含的表達式對應的字段值,以及利用查找到的字段值執(zhí)行所述第一查詢請求中包含的表達式,得到的執(zhí)行結果,其中,表達式對應的字段值為數(shù)據(jù)表中該表達式引用的各字段下的字段值。本申請實施例四的具體細節(jié)的實現(xiàn),可參見實施例一及實施例二的描述,這里不再贅述。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到本發(fā)明實施例可以通過硬件實現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式實現(xiàn)?;谶@樣的理解,本發(fā)明實施例的技術方案可以以軟件產品的形式體現(xiàn)出來,該軟件產品可以存儲在一個非易失性存儲介質(可以是CD-ROM,U盤,移動硬盤等)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。本領域技術人員可以理解附圖只是一個優(yōu)選實施例的示意圖,附圖中的模塊或流程并不一定是實施本發(fā)明所必須的。本領域技術人員可以理解實施例中終端中的模塊可以按照實施例描述進行分布于實施例的終端中,也可以進行相應變化位于不同于本實施例的一個或多個終端中。上述實施例的模塊可以合并為一個模塊,也可以進一步拆分成多個子模塊。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。當前第1頁1 2 3 當前第1頁1 2 3