本發(fā)明涉及web系統(tǒng)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)導(dǎo)出方法及裝置。
背景技術(shù):
對(duì)于大型的企業(yè)或者網(wǎng)絡(luò)平臺(tái)來(lái)說(shuō),常常有大量的數(shù)據(jù)報(bào)表需要進(jìn)行傳輸,尤其是應(yīng)用諸如erp等數(shù)據(jù)平臺(tái)的企業(yè),用戶常常需要將大量的數(shù)據(jù)以excel報(bào)表形式下載到本地機(jī)上進(jìn)行后續(xù)處理。
目前客戶端從服務(wù)器上導(dǎo)出數(shù)據(jù)時(shí)所采用的傳輸方式如圖6所示:用戶從自己的客戶端向服務(wù)器發(fā)起請(qǐng)求,服務(wù)器在其內(nèi)存中處理請(qǐng)求,根據(jù)請(qǐng)求查詢數(shù)據(jù)庫(kù),將查詢得到的數(shù)據(jù)項(xiàng)緩存在服務(wù)器的內(nèi)存中,等待查詢?nèi)客瓿珊蠓?wù)器做出響應(yīng),將查詢到的數(shù)據(jù)傳送給用戶的客戶端。在此過程中,服務(wù)器獲取大量數(shù)據(jù)的耗時(shí)較長(zhǎng),客戶端可能由于長(zhǎng)時(shí)間得不到響應(yīng)而出現(xiàn)服務(wù)器響應(yīng)超時(shí)異常、數(shù)據(jù)無(wú)法正常導(dǎo)出的問題;同時(shí),由于所有的工作均在服務(wù)器的內(nèi)存中完成,在數(shù)據(jù)量很大的時(shí)候,在內(nèi)存中需要?jiǎng)?chuàng)建大量對(duì)象來(lái)緩存這些數(shù)據(jù)項(xiàng),這時(shí)會(huì)引起可用內(nèi)存減少,使得服務(wù)器的其他工作受到影響,在數(shù)據(jù)量過大的時(shí)候還有引起內(nèi)存溢出(oom)導(dǎo)致系統(tǒng)崩潰,嚴(yán)重影響用戶體驗(yàn)。
因此,有必要提供一種數(shù)據(jù)導(dǎo)出方法及裝置來(lái)解決上述技術(shù)問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種數(shù)據(jù)導(dǎo)出方法及裝置,旨在解決從服務(wù)器導(dǎo)出大量數(shù)據(jù)時(shí)容易出現(xiàn)服務(wù)器響應(yīng)超時(shí)的問題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種數(shù)據(jù)導(dǎo)出裝置,應(yīng)用于web系統(tǒng),所述web系統(tǒng)包括客戶端和服務(wù)器,所述數(shù)據(jù)導(dǎo)出裝置包括:
第一請(qǐng)求模塊,用于在所述客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求;
數(shù)據(jù)處理模塊,用于使所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程以將待導(dǎo)出數(shù)據(jù)寫入目標(biāo)文件,并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端;
第二請(qǐng)求模塊,用于使所述客戶端接收所述識(shí)別碼并根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼;
查詢模塊,用于使所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端;
判斷模塊,用于使所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成;
第三請(qǐng)求模塊,用于在所述判斷模塊的判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求;
數(shù)據(jù)下載模塊,用于使所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端。
可選地,所述數(shù)據(jù)處理模塊具體用于:
所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程;
所述數(shù)據(jù)寫入線程將待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件,其中所述目標(biāo)文件為excel文件。
可選地,所述數(shù)據(jù)處理模塊還用于:
所述數(shù)據(jù)寫入線程分批次讀取所述待導(dǎo)出數(shù)據(jù)并將讀取到的所述待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件。
可選地,所述數(shù)據(jù)導(dǎo)出裝置還包括:
存儲(chǔ)模塊,用于使所述服務(wù)器將所述數(shù)據(jù)寫入線程的識(shí)別碼和執(zhí)行狀態(tài)寫入存儲(chǔ)單元。
可選地,所述數(shù)據(jù)下載模塊具體用于:
所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求壓縮所述目標(biāo)文件;
將壓縮后的所述目標(biāo)文件返回至所述客戶端。
相較于現(xiàn)有技術(shù),本發(fā)明所提出的數(shù)據(jù)導(dǎo)出裝置在客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求,服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端,所述客戶端接收所述識(shí)別碼并根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼,然后所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端,所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成,并在判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求,最后所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端,通過輪訓(xùn)機(jī)制每隔一定時(shí)間請(qǐng)求服務(wù)器,避免了導(dǎo)出大量數(shù)據(jù)時(shí)、客戶端長(zhǎng)時(shí)間得不到服務(wù)器響應(yīng)而出現(xiàn)響應(yīng)超時(shí)的問題。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種數(shù)據(jù)導(dǎo)出方法,應(yīng)用于web系統(tǒng),所述web系統(tǒng)包括客戶端和服務(wù)器,所述方法包括步驟:
所述客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求;
所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程以將待導(dǎo)出數(shù)據(jù)寫入目標(biāo)文件,并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端;
所述客戶端接收所述識(shí)別碼并根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼;
所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端;
所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成,并在判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求;
所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端。
可選地,所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程以將待導(dǎo)出數(shù)據(jù)寫入目標(biāo)文件的步驟具體為:
所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程;
所述數(shù)據(jù)寫入線程將待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件,其中所述目標(biāo)文件為excel文件。
可選地,所述數(shù)據(jù)寫入線程將待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件的步驟具體為:
所述數(shù)據(jù)寫入線程分批次讀取所述待導(dǎo)出數(shù)據(jù)并將讀取到的所述待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件。
可選地,所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程以將待導(dǎo)出數(shù)據(jù)寫入目標(biāo)文件的步驟之后還包括:
所述服務(wù)器將所述數(shù)據(jù)寫入線程的識(shí)別碼和執(zhí)行狀態(tài)寫入存儲(chǔ)單元。
可選地,所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端的步驟包括:
所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求壓縮所述目標(biāo)文件;
將壓縮后的所述目標(biāo)文件返回至所述客戶端。
相較于現(xiàn)有技術(shù),本發(fā)明所提出的數(shù)據(jù)導(dǎo)出方法在客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求,服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端,所述客戶端接收所述識(shí)別碼并根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼,然后所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端,所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成,并在判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求,最后所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端,通過輪訓(xùn)機(jī)制每隔一定時(shí)間請(qǐng)求服務(wù)器,避免了導(dǎo)出大量數(shù)據(jù)時(shí)、客戶端長(zhǎng)時(shí)間得不到服務(wù)器響應(yīng)而出現(xiàn)響應(yīng)超時(shí)的問題。
附圖說(shuō)明
圖1為本發(fā)明所述的數(shù)據(jù)導(dǎo)出裝置第一實(shí)施例的功能模塊示意圖;
圖2為本發(fā)明所述的數(shù)據(jù)導(dǎo)出裝置第二實(shí)施例的功能模塊示意圖;
圖3為本發(fā)明所述的數(shù)據(jù)導(dǎo)出方法第一實(shí)施例的實(shí)施流程示意圖;
圖4為本發(fā)明所述的數(shù)據(jù)導(dǎo)出方法第二實(shí)施例的實(shí)施流程示意圖;
圖5為本發(fā)明所述的數(shù)據(jù)導(dǎo)出方法一實(shí)施例的示意圖;
圖6為現(xiàn)有技術(shù)中客戶端從服務(wù)器導(dǎo)出數(shù)據(jù)時(shí)一實(shí)施例的示意圖。
附圖標(biāo)記:
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明所適用的web系統(tǒng)。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說(shuō)明,其本身并沒有特定的意義。因此,“模塊”與“部件”可以混合地使用。
web(worldwideweb,也稱www或萬(wàn)維網(wǎng))是internet上集文本、聲音、動(dòng)畫、視頻等多種媒體信息于一身的信息服務(wù)系統(tǒng),它起源于1989年3月,由歐洲量子物理實(shí)驗(yàn)室cern(theeuropeanlaboratoryforparticlephysics)所發(fā)展出來(lái)的主從結(jié)構(gòu)分布式超媒體系統(tǒng)。通過萬(wàn)維網(wǎng),人們只要通過使用簡(jiǎn)單的方法,就可以很迅速方便地取得豐富的信息資料,由于用戶在通過web瀏覽器訪問信息資源的過程中,無(wú)需再關(guān)心一些技術(shù)性的細(xì)節(jié),而且界面非常友好,因而web在internet上一推出就受到了熱烈的歡迎,走紅全球,并迅速得到了爆炸性的發(fā)展。通常,整個(gè)web系統(tǒng)由web服務(wù)器(或web容器)、瀏覽器(browser)及通信協(xié)議等3部分組成,當(dāng)web瀏覽器(客戶端)連接到web服務(wù)器上并請(qǐng)求文件時(shí),web服務(wù)器將處理該請(qǐng)求并將文件反饋到該瀏覽器上,附帶的信息會(huì)告訴瀏覽器如何查看該文件。
具體的,web服務(wù)器是指駐留于因特網(wǎng)上某種類型計(jì)算機(jī)的程序,常用的web服務(wù)器有微軟的信息服務(wù)器(iis)和apache。通俗的講,web服務(wù)器傳送(serves)頁(yè)面使瀏覽器可以瀏覽,然而應(yīng)用程序服務(wù)器提供的是客戶端應(yīng)用程序可以調(diào)用的方法。確切一點(diǎn),web服務(wù)器專門處理http請(qǐng)求,但是應(yīng)用程序服務(wù)器是通過很多協(xié)議來(lái)為應(yīng)用程序提供商業(yè)邏輯。web服務(wù)器可以解析http協(xié)議,當(dāng)web服務(wù)器接收到一個(gè)http請(qǐng)求,會(huì)返回一個(gè)http響應(yīng),例如送回一個(gè)html頁(yè)面。為了處理一個(gè)請(qǐng)求,web服務(wù)器可以響應(yīng)一個(gè)靜態(tài)頁(yè)面或圖片,進(jìn)行頁(yè)面跳轉(zhuǎn),或者把動(dòng)態(tài)響應(yīng)的產(chǎn)生委托給一些其它的程序例如cgi腳本,jsp腳本,servlets,asp腳本,服務(wù)器端javascript,或者一些其它的服務(wù)器端技術(shù)。無(wú)論它們(腳本)的目的如何,這些服務(wù)器端的程序通常產(chǎn)生一個(gè)html的響應(yīng)來(lái)讓瀏覽器可以瀏覽。
web服務(wù)器的工作原理并不復(fù)雜,一般可分成如下4個(gè)步驟:連接過程、請(qǐng)求過程、應(yīng)答過程以及關(guān)閉連接。下面對(duì)這4個(gè)步驟作一簡(jiǎn)單的介紹。連接過程就是web服務(wù)器和其瀏覽器之間所建立起來(lái)的一種連接。查看連接過程是否實(shí)現(xiàn),用戶可以找到和打開socket這個(gè)虛擬文件,這個(gè)文件的建立意味著連接過程這一步驟已經(jīng)成功建立。請(qǐng)求過程就是web的瀏覽器運(yùn)用socket這個(gè)文件向其服務(wù)器而提出各種請(qǐng)求。應(yīng)答過程就是運(yùn)用http協(xié)議把在請(qǐng)求過程中所提出來(lái)的請(qǐng)求傳輸?shù)絯eb的服務(wù)器,進(jìn)而實(shí)施任務(wù)處理,然后運(yùn)用http協(xié)議把任務(wù)處理的結(jié)果傳輸?shù)絯eb的瀏覽器,同時(shí)在web的瀏覽器上面展示上述所請(qǐng)求之界面。關(guān)閉連接就是當(dāng)上一個(gè)步驟--應(yīng)答過程完成以后,web服務(wù)器和其瀏覽器之間斷開連接之過程。web服務(wù)器上述4個(gè)步驟環(huán)環(huán)相扣、緊密相聯(lián),邏輯性比較強(qiáng),可以支持多個(gè)進(jìn)程、多個(gè)線程以及多個(gè)進(jìn)程與多個(gè)線程相混合的技術(shù)。
基于上述web系統(tǒng),提出本發(fā)明的數(shù)據(jù)導(dǎo)出方法及裝置。
首先,本發(fā)明提出一種數(shù)據(jù)導(dǎo)出裝置400,所述數(shù)據(jù)導(dǎo)出裝置400應(yīng)用于web系統(tǒng),所述web系統(tǒng)包括客戶端和服務(wù)器。
如圖1所示,是本發(fā)明所述的數(shù)據(jù)導(dǎo)出裝置400第一實(shí)施例的功能模塊示意圖。在本實(shí)施例中,所述數(shù)據(jù)導(dǎo)出裝置400可以被分割成一個(gè)或多個(gè)模塊,所述一個(gè)或多個(gè)模塊被存儲(chǔ)于存儲(chǔ)器中,并由一個(gè)或多個(gè)控制器所執(zhí)行,以完成本發(fā)明。例如,在圖1中,所述數(shù)據(jù)導(dǎo)出裝置400可以被分割成第一請(qǐng)求模塊401、數(shù)據(jù)處理模塊402、第二請(qǐng)求模塊403、查詢模塊404、判斷模塊405、第三請(qǐng)求模塊406以及數(shù)據(jù)下載模塊407。其中本發(fā)明所稱的模塊是指一種能夠完成特定功能的一系列計(jì)算機(jī)程序指令段,比程序更適合于描述所述數(shù)據(jù)導(dǎo)出裝置400的實(shí)現(xiàn)原理。以下將就上述各功能模塊401-407的具體功能進(jìn)行詳細(xì)描述。
所述第一請(qǐng)求模塊401,用于在所述客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求。具體的,輪訓(xùn)機(jī)制是指客戶端以一定的時(shí)間間隔向服務(wù)器發(fā)出請(qǐng)求,以頻繁請(qǐng)求的方式來(lái)保持客戶端和服務(wù)器的同步;對(duì)于本發(fā)明,客戶端啟動(dòng)輪訓(xùn)機(jī)制是為了每隔一定時(shí)間間隔向服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求。
所述數(shù)據(jù)處理模塊402,用于使所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程以將待導(dǎo)出數(shù)據(jù)寫入目標(biāo)文件,并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端。本實(shí)施例中,目標(biāo)文件為excel文件,即待導(dǎo)出數(shù)據(jù)以excel形式導(dǎo)出,且目標(biāo)文件的初始內(nèi)容為空。具體的,數(shù)據(jù)處理模塊402具體用于實(shí)現(xiàn):(1)所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程;即當(dāng)服務(wù)器第一次接收到來(lái)自客戶端的對(duì)某些數(shù)據(jù)的數(shù)據(jù)導(dǎo)出請(qǐng)求時(shí),服務(wù)器會(huì)為這一請(qǐng)求啟動(dòng)一個(gè)數(shù)據(jù)寫入線程,并將該數(shù)據(jù)寫入線程的識(shí)別碼返回至客戶端;(2)所述數(shù)據(jù)寫入線程將待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件,其中xml格式的excel文件的寫入速度較快,能夠有效降低服務(wù)器b的響應(yīng)時(shí)間。此外,每一數(shù)據(jù)寫入線程均具有唯一的識(shí)別碼,該識(shí)別碼用于從服務(wù)器上的各個(gè)線程中找到相應(yīng)的數(shù)據(jù)寫入線程。優(yōu)選的,本實(shí)施例中,該識(shí)別碼為通用唯一識(shí)別碼(universallyuniqueidentifier,uuid),uuid是一個(gè)軟件建構(gòu)的標(biāo)準(zhǔn),也是被開源軟件基金會(huì)的組織應(yīng)用在分布式計(jì)算環(huán)境領(lǐng)域的一部分。
所述第二請(qǐng)求模塊403,用于使所述客戶端接收所述識(shí)別碼并根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼。
所述查詢模塊404,用于使所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端。本實(shí)施例中,當(dāng)服務(wù)器接收到來(lái)自客戶端的數(shù)據(jù)導(dǎo)出請(qǐng)求和識(shí)別碼時(shí),服務(wù)器會(huì)根據(jù)該識(shí)別碼查找對(duì)應(yīng)的線程,本發(fā)明中服務(wù)器根據(jù)識(shí)別碼可以查找到之前啟動(dòng)的數(shù)據(jù)寫入線程,此時(shí)服務(wù)器獲取數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并反饋給客戶端。其中,數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)包括正在寫入(如表示為running)和寫入完成(如表示為finish),該執(zhí)行狀態(tài)可以由預(yù)設(shè)的狀態(tài)值來(lái)表示,如當(dāng)執(zhí)行狀態(tài)為running時(shí),其狀態(tài)值記為0,當(dāng)執(zhí)行狀態(tài)為finish時(shí),其狀態(tài)值記為1,服務(wù)器返回執(zhí)行狀態(tài)時(shí)是返回其狀態(tài)值。此外,服務(wù)器中設(shè)置有存儲(chǔ)單元redis,redis中存儲(chǔ)有數(shù)據(jù)寫入線程的通用唯一識(shí)別碼uuid和執(zhí)行狀態(tài)(包括狀態(tài)值)。
所述判斷模塊405,用于使所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成。具體的,客戶端可以根據(jù)執(zhí)行狀態(tài)的狀態(tài)值來(lái)判斷執(zhí)行狀態(tài)是否為寫入完成,本實(shí)施例中,當(dāng)服務(wù)器返回的狀態(tài)值為1時(shí),表示執(zhí)行狀態(tài)為寫入完成,此時(shí)客戶端關(guān)閉輪訓(xùn)機(jī)制并向服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求。
所述第三請(qǐng)求模塊406,用于在所述判斷模塊的判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求。
所述數(shù)據(jù)下載模塊407,用于使所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端。即當(dāng)服務(wù)器接收到來(lái)自客戶端的數(shù)據(jù)下載請(qǐng)求時(shí),服務(wù)器將目標(biāo)文件發(fā)送至客戶端。
通過上述模塊401-407,本發(fā)明數(shù)據(jù)導(dǎo)出裝置在客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求,服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端,所述客戶端接收所述識(shí)別碼并根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼,然后所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端,所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成,并在判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求,最后所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端,通過輪訓(xùn)機(jī)制每隔一定時(shí)間請(qǐng)求服務(wù)器,避免了導(dǎo)出大量數(shù)據(jù)時(shí)、客戶端長(zhǎng)時(shí)間得不到服務(wù)器響應(yīng)而出現(xiàn)響應(yīng)超時(shí)的問題。
基于上述第一實(shí)施例,提出本發(fā)明所述的數(shù)據(jù)導(dǎo)出裝置400的第二實(shí)施例。在本實(shí)施例中,如圖2所示,數(shù)據(jù)導(dǎo)出裝置400還包括存儲(chǔ)模塊408。
本實(shí)施中,所述數(shù)據(jù)處理模塊402具體用于:根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程;所述數(shù)據(jù)寫入線程分批次讀取所述待導(dǎo)出數(shù)據(jù)并將讀取到的所述待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件,并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端。請(qǐng)參考圖5,圖5為用戶通過客戶端a從服務(wù)器b中導(dǎo)出數(shù)據(jù)時(shí)一實(shí)施例的示意圖,其中客戶端a可以為移動(dòng)終端、pc機(jī)、ipad等終端設(shè)備,當(dāng)用戶需要導(dǎo)出數(shù)據(jù)時(shí),在客戶端a上進(jìn)行操作以發(fā)出數(shù)據(jù)導(dǎo)出指令給客戶端a,當(dāng)客戶端a接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪訓(xùn)機(jī)制并向服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求。
所述存儲(chǔ)模塊408,用于使所述服務(wù)器將所述數(shù)據(jù)寫入線程的識(shí)別碼和執(zhí)行狀態(tài)寫入存儲(chǔ)單元。再請(qǐng)參考圖5,本實(shí)施例中,存儲(chǔ)單元為redis,redis中為該數(shù)據(jù)寫入線程存儲(chǔ)識(shí)別碼uuid和執(zhí)行狀態(tài)(包括狀態(tài)值)。
所述查詢模塊404,用于使所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端。如圖5所示,本實(shí)施例中,當(dāng)服務(wù)器b接收到來(lái)自客戶端a的數(shù)據(jù)導(dǎo)出請(qǐng)求和識(shí)別碼時(shí),服務(wù)器b會(huì)根據(jù)該識(shí)別碼查找對(duì)應(yīng)的線程,本發(fā)明中服務(wù)器b根據(jù)識(shí)別碼可以查找到之前啟動(dòng)的數(shù)據(jù)寫入線程,此時(shí)服務(wù)器b獲取數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并反饋給客戶端。其中,數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)包括正在寫入(如表示為running)和寫入完成(如表示為finish),該執(zhí)行狀態(tài)可以由預(yù)設(shè)的狀態(tài)值來(lái)表示,如當(dāng)執(zhí)行狀態(tài)為running時(shí),其狀態(tài)值記為0,當(dāng)執(zhí)行狀態(tài)為finish時(shí),其狀態(tài)值記為1,服務(wù)器返回執(zhí)行狀態(tài)時(shí)是返回其狀態(tài)值。
所述數(shù)據(jù)下載模塊407具體用于:(1)所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求壓縮所述目標(biāo)文件;(2)將壓縮后的所述目標(biāo)文件返回至所述客戶端。本實(shí)施例中,將待導(dǎo)出數(shù)據(jù)以xml格式寫入excel文件中,采用xml格式寫入速度較快,同時(shí)xml格式的文件壓縮率更高,進(jìn)而客戶端下載時(shí)速度更快。需要說(shuō)明的是,本實(shí)施例中數(shù)據(jù)壓縮的步驟在接收到數(shù)據(jù)下載請(qǐng)求時(shí)執(zhí)行;而在實(shí)際應(yīng)用中,該數(shù)據(jù)壓縮步驟還可以由數(shù)據(jù)寫入線程來(lái)執(zhí)行,如圖5所示,當(dāng)數(shù)據(jù)寫入完成后,直接將目標(biāo)文件進(jìn)行壓縮,當(dāng)服務(wù)器接收到客戶端的數(shù)據(jù)下載請(qǐng)求時(shí),直接將壓縮后的目標(biāo)文件返回至客戶端,其中壓縮后的目標(biāo)以流的形式進(jìn)行傳輸。
通過上述模塊401至408,本發(fā)明所提出的數(shù)據(jù)導(dǎo)出裝置在在接收到數(shù)據(jù)導(dǎo)出指令時(shí),客戶端根據(jù)數(shù)據(jù)寫入線程的識(shí)別碼采用輪訓(xùn)機(jī)制每隔預(yù)設(shè)的間隔時(shí)間請(qǐng)求服務(wù)器,避免了服務(wù)器響應(yīng)超時(shí)的問題;同時(shí),服務(wù)器將待導(dǎo)出數(shù)據(jù)以xml格式寫入excel格式的目標(biāo)文件中,并在數(shù)據(jù)寫入完成時(shí)對(duì)目標(biāo)文件進(jìn)行壓縮,其中xml格式的數(shù)據(jù)寫入速度相比其他格式更快,且xml格式的文件壓縮率更高,使得客戶端下載數(shù)據(jù)時(shí)速度更快。
進(jìn)一步地,本發(fā)明提出一種數(shù)據(jù)導(dǎo)出方法,該方法應(yīng)用于web系統(tǒng),所述web系統(tǒng)包括客戶端和服務(wù)器。如圖3所示,是本發(fā)明所述的數(shù)據(jù)導(dǎo)出方法第一實(shí)施例的實(shí)施流程圖。在本實(shí)施例中,根據(jù)不同的需求,圖3所示的流程圖中的步驟的執(zhí)行順序可以改變,某些步驟可以省略。
步驟s501,客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求。具體的,輪訓(xùn)機(jī)制是指客戶端以一定的時(shí)間間隔向服務(wù)器發(fā)出請(qǐng)求,以頻繁請(qǐng)求的方式來(lái)保持客戶端和服務(wù)器的同步;對(duì)于本發(fā)明,客戶端啟動(dòng)輪訓(xùn)機(jī)制是為了每隔一定時(shí)間間隔向服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求。
步驟s502,所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程以將待導(dǎo)出數(shù)據(jù)寫入目標(biāo)文件,并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端。
本實(shí)施例中,目標(biāo)文件為excel文件,即待導(dǎo)出數(shù)據(jù)以excel形式導(dǎo)出,且目標(biāo)文件的初始內(nèi)容為空。具體的,步驟s502包括以下步驟:(1)所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程;即當(dāng)服務(wù)器第一次接收到來(lái)自客戶端的對(duì)某些數(shù)據(jù)的數(shù)據(jù)導(dǎo)出請(qǐng)求時(shí),服務(wù)器會(huì)為這一請(qǐng)求啟動(dòng)一個(gè)數(shù)據(jù)寫入線程,并將該數(shù)據(jù)寫入線程的識(shí)別碼返回至客戶端;(2)所述數(shù)據(jù)寫入線程將待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件,其中xml格式的excel文件的寫入速度較快,能夠有效降低服務(wù)器b的響應(yīng)時(shí)間。此外,每一數(shù)據(jù)寫入線程均具有唯一的識(shí)別碼,該識(shí)別碼用于從服務(wù)器上的各個(gè)線程中找到相應(yīng)的數(shù)據(jù)寫入線程。優(yōu)選的,本實(shí)施例中,該識(shí)別碼為通用唯一識(shí)別碼(universallyuniqueidentifier,uuid),uuid是一個(gè)軟件建構(gòu)的標(biāo)準(zhǔn),也是被開源軟件基金會(huì)的組織應(yīng)用在分布式計(jì)算環(huán)境領(lǐng)域的一部分。
步驟s503,所述客戶端根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼。
步驟s504,所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端。
本實(shí)施例中,當(dāng)服務(wù)器接收到來(lái)自客戶端的數(shù)據(jù)導(dǎo)出請(qǐng)求和識(shí)別碼時(shí),服務(wù)器會(huì)根據(jù)該識(shí)別碼查找對(duì)應(yīng)的線程,本發(fā)明中服務(wù)器根據(jù)識(shí)別碼可以查找到之前啟動(dòng)的數(shù)據(jù)寫入線程,此時(shí)服務(wù)器獲取數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并反饋給客戶端。其中,數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)包括正在寫入(如表示為running)和寫入完成(如表示為finish),該執(zhí)行狀態(tài)可以由預(yù)設(shè)的狀態(tài)值來(lái)表示,如當(dāng)執(zhí)行狀態(tài)為running時(shí),其狀態(tài)值記為0,當(dāng)執(zhí)行狀態(tài)為finish時(shí),其狀態(tài)值記為1,服務(wù)器返回執(zhí)行狀態(tài)時(shí)是返回其狀態(tài)值。此外,服務(wù)器中設(shè)置有存儲(chǔ)單元redis,redis中存儲(chǔ)有數(shù)據(jù)寫入線程的通用唯一識(shí)別碼uuid和執(zhí)行狀態(tài)(包括狀態(tài)值)。
步驟s505,所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成,并在判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求。
具體的,客戶端可以根據(jù)執(zhí)行狀態(tài)的狀態(tài)值來(lái)判斷執(zhí)行狀態(tài)是否為寫入完成,本實(shí)施例中,當(dāng)服務(wù)器返回的狀態(tài)值為1時(shí),表示執(zhí)行狀態(tài)為寫入完成,此時(shí)客戶端關(guān)閉輪訓(xùn)機(jī)制并向服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求。
步驟s506,所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端。即當(dāng)服務(wù)器接收到來(lái)自客戶端的數(shù)據(jù)下載請(qǐng)求時(shí),服務(wù)器將目標(biāo)文件發(fā)送至客戶端。
通過上述步驟s501-s506,本發(fā)明數(shù)據(jù)導(dǎo)出方法在客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求,服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端,所述客戶端接收所述識(shí)別碼并根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼,然后所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端,所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成,并在判斷結(jié)果為是時(shí),關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求,最后所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求將所述目標(biāo)文件返回至所述客戶端,通過輪訓(xùn)機(jī)制每隔一定時(shí)間請(qǐng)求服務(wù)器,避免了導(dǎo)出大量數(shù)據(jù)時(shí)、客戶端長(zhǎng)時(shí)間得不到服務(wù)器響應(yīng)而出現(xiàn)響應(yīng)超時(shí)的問題。
基于上述第一實(shí)施例,提出本發(fā)明所述的數(shù)據(jù)導(dǎo)出方法的第二實(shí)施例。
如圖4所示,是本發(fā)明所述的數(shù)據(jù)導(dǎo)出方法第二實(shí)施例的實(shí)施流程圖。在本實(shí)施例中,根據(jù)不同的需求,圖4所示的流程圖中的步驟的執(zhí)行順序可以改變,某些步驟可以省略。
步驟s601,客戶端接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪詢機(jī)制并向服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求。請(qǐng)參考圖5,圖5為用戶通過客戶端a從服務(wù)器b中導(dǎo)出數(shù)據(jù)時(shí)一實(shí)施例的示意圖,其中客戶端a可以為移動(dòng)終端、pc機(jī)、ipad等終端設(shè)備,當(dāng)用戶需要導(dǎo)出數(shù)據(jù)時(shí),在客戶端a上進(jìn)行操作以發(fā)出數(shù)據(jù)導(dǎo)出指令給客戶端a,當(dāng)客戶端a接收到數(shù)據(jù)導(dǎo)出指令時(shí),啟動(dòng)輪訓(xùn)機(jī)制并向服務(wù)器發(fā)送數(shù)據(jù)導(dǎo)出請(qǐng)求。
步驟s602,所述服務(wù)器根據(jù)所述數(shù)據(jù)導(dǎo)出請(qǐng)求啟動(dòng)數(shù)據(jù)寫入線程。
步驟s603,所述數(shù)據(jù)寫入線程分批次讀取所述待導(dǎo)出數(shù)據(jù)并將讀取到的所述待導(dǎo)出數(shù)據(jù)以xml格式寫入所述目標(biāo)文件,同時(shí)將所述數(shù)據(jù)寫入線程的識(shí)別碼和執(zhí)行狀態(tài)寫入存儲(chǔ)單元并將所述數(shù)據(jù)寫入線程的識(shí)別碼返回至所述客戶端。如圖5所示,本實(shí)施例中,存儲(chǔ)單元為redis,redis中為該數(shù)據(jù)寫入線程存儲(chǔ)識(shí)別碼uuid和執(zhí)行狀態(tài)(包括狀態(tài)值)。
步驟s604,所述客戶端根據(jù)所述輪訓(xùn)機(jī)制的間隔時(shí)間每隔所述間隔時(shí)間向所述服務(wù)器發(fā)送所述數(shù)據(jù)導(dǎo)出請(qǐng)求和所述識(shí)別碼。如圖5所示,客戶端a接收到服務(wù)器b返回的識(shí)別碼后,每隔間隔時(shí)間向服務(wù)器b發(fā)送一次數(shù)據(jù)導(dǎo)出請(qǐng)求和識(shí)別碼,該間隔時(shí)間可以預(yù)先設(shè)置,如設(shè)置為5秒、10秒等。
步驟s605,所述服務(wù)器根據(jù)所述識(shí)別碼查詢相應(yīng)的所述數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并將所述執(zhí)行狀態(tài)返回至所述客戶端。如圖5所示,本實(shí)施例中,當(dāng)服務(wù)器b接收到來(lái)自客戶端a的數(shù)據(jù)導(dǎo)出請(qǐng)求和識(shí)別碼時(shí),服務(wù)器b會(huì)根據(jù)該識(shí)別碼查找對(duì)應(yīng)的線程,本發(fā)明中服務(wù)器b根據(jù)識(shí)別碼可以查找到之前啟動(dòng)的數(shù)據(jù)寫入線程,此時(shí)服務(wù)器b獲取數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)并反饋給客戶端。其中,數(shù)據(jù)寫入線程的執(zhí)行狀態(tài)包括正在寫入(如表示為running)和寫入完成(如表示為finish),該執(zhí)行狀態(tài)可以由預(yù)設(shè)的狀態(tài)值來(lái)表示,如當(dāng)執(zhí)行狀態(tài)為running時(shí),其狀態(tài)值記為0,當(dāng)執(zhí)行狀態(tài)為finish時(shí),其狀態(tài)值記為1,服務(wù)器返回執(zhí)行狀態(tài)時(shí)是返回其狀態(tài)值。
步驟s606,所述客戶端接收并判斷所述執(zhí)行狀態(tài)是否為寫入完成,若判斷結(jié)果為是,則執(zhí)行步驟s607,反之返回步驟s604。
步驟s607,關(guān)閉所述輪訓(xùn)機(jī)制并向所述服務(wù)器發(fā)送數(shù)據(jù)下載請(qǐng)求。
步驟s608,所述服務(wù)器根據(jù)所述數(shù)據(jù)下載請(qǐng)求壓縮所述目標(biāo)文件,并將壓縮后的所述目標(biāo)文件返回至所述客戶端。本實(shí)施例中,將待導(dǎo)出數(shù)據(jù)以xml格式寫入excel文件中,采用xml格式寫入速度較快,同時(shí)xml格式的文件壓縮率更高,進(jìn)而客戶端下載時(shí)速度更快。需要說(shuō)明的是,本實(shí)施例中數(shù)據(jù)壓縮的步驟在接收到數(shù)據(jù)下載請(qǐng)求時(shí)執(zhí)行;而在實(shí)際應(yīng)用中,該數(shù)據(jù)壓縮步驟還可以由數(shù)據(jù)寫入線程來(lái)執(zhí)行,如圖5所示,當(dāng)數(shù)據(jù)寫入完成后,直接將目標(biāo)文件進(jìn)行壓縮,當(dāng)服務(wù)器接收到客戶端的數(shù)據(jù)下載請(qǐng)求時(shí),直接將壓縮后的目標(biāo)文件返回至客戶端,其中壓縮后的目標(biāo)以流的形式進(jìn)行傳輸。
通過上述步驟s601至s608,本發(fā)明所提出的數(shù)據(jù)導(dǎo)出方法在接收到數(shù)據(jù)導(dǎo)出指令時(shí),客戶端根據(jù)數(shù)據(jù)寫入線程的識(shí)別碼采用輪訓(xùn)機(jī)制每隔預(yù)設(shè)的間隔時(shí)間請(qǐng)求服務(wù)器,避免了服務(wù)器響應(yīng)超時(shí)的問題;同時(shí),服務(wù)器將待導(dǎo)出數(shù)據(jù)以xml格式寫入excel格式的目標(biāo)文件中,并在數(shù)據(jù)寫入完成時(shí)對(duì)目標(biāo)文件進(jìn)行壓縮,其中xml格式的數(shù)據(jù)寫入速度相比其他格式更快,且xml格式的文件壓縮率更高,使得客戶端下載數(shù)據(jù)時(shí)速度更快。
需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,空調(diào)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說(shuō)明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。