本發(fā)明涉及電通信技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)查詢的方法、裝置及系統(tǒng)。
背景技術(shù):
數(shù)據(jù)查詢是現(xiàn)代互聯(lián)網(wǎng)技術(shù)中最為基本的數(shù)據(jù)交互手段,在瀏覽器應(yīng)用及數(shù)據(jù)庫(kù)查詢系統(tǒng)中得到了廣泛的使用。典型的數(shù)據(jù)查詢過(guò)程涉及作為查詢發(fā)起方的客戶端和作為查詢響應(yīng)方的服務(wù)端兩側(cè)??蛻舳税l(fā)起一個(gè)查詢請(qǐng)求,將查詢條件(例如需要訪問(wèn)的主機(jī)地址)添加到查詢請(qǐng)求中發(fā)送給服務(wù)端。服務(wù)端對(duì)查詢請(qǐng)求的內(nèi)容進(jìn)行解析,根據(jù)查詢條件進(jìn)行數(shù)據(jù)查詢,并通過(guò)返回查詢響應(yīng)的方式將查詢結(jié)果(例如網(wǎng)頁(yè)數(shù)據(jù))返回給客戶端。
在現(xiàn)有的數(shù)據(jù)查詢過(guò)程中發(fā)明人發(fā)現(xiàn):當(dāng)客戶端在短時(shí)間內(nèi)先后發(fā)起多次查詢請(qǐng)求時(shí),受種種原因影響,服務(wù)端返回查詢響應(yīng)的先后順序與客戶端發(fā)起查詢請(qǐng)求的先后順序并不一定能夠保證一致。具體而言,在一種情況下,當(dāng)客戶端通過(guò)不同的超文本傳輸協(xié)議(Hypertext Transfer Protocol,簡(jiǎn)稱(chēng)HTTP)連接分別向同一個(gè)服務(wù)端發(fā)送查詢請(qǐng)求時(shí),受網(wǎng)絡(luò)傳輸條件的影響,多個(gè)HTTP連接的傳輸速度會(huì)有所差異,查詢請(qǐng)求到達(dá)服務(wù)端的先后順序以及查詢響應(yīng)返回到客戶端的先后順序都是無(wú)規(guī)律的,由此導(dǎo)致較早發(fā)送的查詢請(qǐng)求可能較晚才能獲得對(duì)應(yīng)的查詢響應(yīng)。而在另一種情況下,客戶端通過(guò)多個(gè)HTTP連接分別向不同的服務(wù)端發(fā)送查詢請(qǐng)求。在網(wǎng)絡(luò)傳輸條件一致的條件下,即使查詢請(qǐng)求能夠按照客戶端發(fā)送的先后順序到達(dá)服務(wù)端,但是不同服務(wù)端的負(fù)載程度和處理速度各有不同,同樣會(huì)打亂查詢響應(yīng)的返回順序。綜上而言,無(wú)論何種原因?qū)е律鲜鰡?wèn)題的出現(xiàn),只要發(fā)送查詢請(qǐng)求與接收查詢響應(yīng)之間出現(xiàn)了延時(shí),并且在延時(shí)期間客戶端又發(fā)起了新的查詢請(qǐng)求,那么當(dāng)在先請(qǐng)求對(duì)應(yīng)的響應(yīng)返回時(shí),客戶端就會(huì)將在先響應(yīng)作為在后請(qǐng)求的查詢結(jié)果予以輸出,由此導(dǎo)致用戶看到的查詢結(jié) 果與輸入的查詢條件不對(duì)應(yīng),從而影響用戶對(duì)查詢服務(wù)的使用。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種數(shù)據(jù)查詢的方法、裝置及系統(tǒng),能夠解決因延時(shí)導(dǎo)致的查詢結(jié)果與查詢操作不對(duì)應(yīng)的問(wèn)題。
為解決上述問(wèn)題,一方面,本發(fā)明提供了一種數(shù)據(jù)查詢的方法,該方法包括:
為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記;
向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求;
接收服務(wù)端返回的查詢響應(yīng),查詢響應(yīng)中攜帶有查詢數(shù)據(jù),以及對(duì)應(yīng)查詢響應(yīng)的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記;
判斷接收的請(qǐng)求標(biāo)記與最后一次發(fā)送的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同;
若判斷結(jié)果為是,則輸出查詢數(shù)據(jù)。
另一方面,本發(fā)明還提供了一種數(shù)據(jù)查詢的裝置,該裝置包括:
生成單元,用于為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記;
發(fā)送單元,用于向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求;
接收單元,用于接收服務(wù)端返回的查詢響應(yīng),查詢響應(yīng)中攜帶有查詢數(shù)據(jù),以及對(duì)應(yīng)查詢響應(yīng)的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記;
判斷單元,用于判斷接收的請(qǐng)求標(biāo)記與最后一次發(fā)送的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同;
輸出單元,用于當(dāng)判斷結(jié)果為是時(shí),輸出查詢數(shù)據(jù)。
再一方面,本發(fā)明還提供了一種數(shù)據(jù)查詢的系統(tǒng),該系統(tǒng)包括客戶端和服務(wù)端;
客戶端,用于為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記,向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求;
服務(wù)端,用于響應(yīng)查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,解析查詢請(qǐng)求獲得請(qǐng)求標(biāo)記,將請(qǐng)求標(biāo)記及數(shù)據(jù)查詢獲得的查詢數(shù)據(jù)添加到對(duì)應(yīng)查詢請(qǐng)求的查詢響應(yīng)中返回給客戶端;
客戶端,還用于接收服務(wù)端返回的查詢響應(yīng),判斷接收的請(qǐng)求標(biāo)記與 最后一次發(fā)送的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同,若判斷結(jié)果為是,則輸出查詢數(shù)據(jù)。
本發(fā)明提供的數(shù)據(jù)查詢的方法、裝置及系統(tǒng),能夠在向服務(wù)端發(fā)送的查詢請(qǐng)求中添加一個(gè)唯一的請(qǐng)求標(biāo)記,由服務(wù)端將該請(qǐng)求標(biāo)記添加到對(duì)應(yīng)該查詢請(qǐng)求的查詢響應(yīng)中返回給客戶端。在接收到查詢響應(yīng)時(shí),客戶端對(duì)查詢響應(yīng)中請(qǐng)求標(biāo)記和最后一次發(fā)送的查詢請(qǐng)求中的請(qǐng)求標(biāo)記進(jìn)行比對(duì)。如果兩個(gè)請(qǐng)求標(biāo)記相同,則證明接收到的查詢響應(yīng)是對(duì)應(yīng)最后一次查詢請(qǐng)求的查詢響應(yīng),客戶端將該查詢響應(yīng)中的查詢結(jié)果予以輸出。與現(xiàn)有技術(shù)相比,本發(fā)明能夠使客戶端直接輸出與用戶最后執(zhí)行的查詢操作所對(duì)應(yīng)的查詢結(jié)果,由此保證用戶最近一次的查詢操作真實(shí)有效。
上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書(shū)的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說(shuō)明
通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
圖1示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)查詢的方法流程圖;
圖2示出了本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)查詢的方法流程圖;
圖3示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)查詢的裝置的組成框圖;
圖4示出了本發(fā)明實(shí)施例提供的另一種數(shù)據(jù)查詢的裝置的組成框圖;
圖5示出了本發(fā)明實(shí)施例提供的一種數(shù)據(jù)查詢的系統(tǒng)框圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
為保證客戶端輸出的查詢結(jié)果與用戶執(zhí)行的查詢操作相對(duì)應(yīng),本發(fā)明實(shí)施例給出了一種數(shù)據(jù)查詢的方法。該方法的核心思想在于:通過(guò)添加請(qǐng)求標(biāo)記的方式識(shí)別相互對(duì)應(yīng)的查詢請(qǐng)求和查詢響應(yīng),并且無(wú)論用戶進(jìn)行幾次查詢操作,以及服務(wù)端返回的查詢響應(yīng)的先后順序如何,客戶端均只輸出與最后一次查詢操作對(duì)應(yīng)的查詢結(jié)果,由此保證用戶最后一次查詢操作的有效性。如圖1所示,該方法包括:
101、為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記。
客戶端在每次發(fā)起查詢請(qǐng)求前,均為待發(fā)送的查詢請(qǐng)求生成一個(gè)請(qǐng)求標(biāo)記,該請(qǐng)求標(biāo)記不重復(fù)生成也不重復(fù)使用,由此保證每個(gè)查詢請(qǐng)求的請(qǐng)求標(biāo)記唯一有效。
實(shí)際應(yīng)用中,客戶端可以在發(fā)送查詢請(qǐng)求前,臨時(shí)生成一個(gè)請(qǐng)求標(biāo)記,也可以預(yù)先生成多個(gè)不重復(fù)的請(qǐng)求標(biāo)記,將其預(yù)存在標(biāo)記列表或標(biāo)記隊(duì)列中,當(dāng)發(fā)起查詢請(qǐng)求時(shí)從中選取一個(gè)請(qǐng)求標(biāo)記分配給待發(fā)送的查詢請(qǐng)求。本實(shí)施例不對(duì)生成請(qǐng)求標(biāo)記的時(shí)機(jī)進(jìn)行限制。
102、向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求。
客戶端將生成的請(qǐng)求標(biāo)記添加到查詢請(qǐng)求的預(yù)設(shè)字段中,并向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求。實(shí)際應(yīng)用中,可以在客戶端與服務(wù)端兩側(cè)配置相同的私有協(xié)議,指定客戶端添加請(qǐng)求標(biāo)記的具體字段位置,以及服務(wù)端解析請(qǐng)求標(biāo)記的具體字段位置。而對(duì)于無(wú)法通過(guò)改寫(xiě)協(xié)議指定字段位置的情況,也可以將請(qǐng)求標(biāo)記脫離于查詢請(qǐng)求進(jìn)行單獨(dú)發(fā)送。但是為保證請(qǐng)求標(biāo)記與查詢請(qǐng)求之間的強(qiáng)關(guān)聯(lián)性,需要對(duì)發(fā)送請(qǐng)求標(biāo)記和查詢請(qǐng)求之間的時(shí)間間隔進(jìn)行嚴(yán)格限制。較為理想的,該時(shí)間間隔應(yīng)當(dāng)遠(yuǎn)小于人為觸發(fā)兩次查詢請(qǐng)求之間可能存在的最小時(shí)間間隔。
需要說(shuō)明的是,本實(shí)施例中所述的私有協(xié)議是指?jìng)鬏攲邮褂玫膮f(xié)議類(lèi)型,包括但不限于是傳輸控制協(xié)議(Transmission Control Protocol,簡(jiǎn)稱(chēng)TCP)及用戶數(shù)據(jù)報(bào)協(xié)議(User Datagram Protocol,簡(jiǎn)稱(chēng)UDP),本實(shí)施例并不對(duì)應(yīng)用層使用的諸如超文本傳輸協(xié)議(Hypertext Transfer Protocol,簡(jiǎn)稱(chēng)HTTP)等公有協(xié)議進(jìn)行排斥。
103、接收服務(wù)端返回的查詢響應(yīng)。
服務(wù)端在接收到查詢請(qǐng)求后,從中解析出查詢條件信息,并從指定的字段位置中解析出客戶端添加的請(qǐng)求標(biāo)記。然后根據(jù)查詢條件信息查找對(duì)應(yīng)的查詢數(shù)據(jù),并將查詢數(shù)據(jù)作為查詢結(jié)果添加到查詢響應(yīng)中。區(qū)別于現(xiàn)有技術(shù)的是,服務(wù)端還會(huì)將解析出的請(qǐng)求標(biāo)記添加到查詢響應(yīng)中,以便客戶端后續(xù)識(shí)別查詢響應(yīng)之用。
與步驟102類(lèi)似的,服務(wù)端添加請(qǐng)求標(biāo)記的字段位置也可以由私有協(xié)議自由指定。在一種較為簡(jiǎn)便的實(shí)現(xiàn)方式中,可以將客戶端及服務(wù)端添加請(qǐng)求標(biāo)記的字段位置指定為同一位置。
104、判斷接收的請(qǐng)求標(biāo)記與最后一次發(fā)送的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同。
為實(shí)現(xiàn)對(duì)請(qǐng)求標(biāo)記的比對(duì),客戶端需要按照發(fā)起時(shí)序?qū)σ寻l(fā)送的查詢請(qǐng)求進(jìn)行緩存。在接收到查詢響應(yīng)時(shí),客戶端從查詢響應(yīng)中解析出查詢數(shù)據(jù)以及服務(wù)端添加的請(qǐng)求標(biāo)記,并從緩存的最后一條查詢請(qǐng)求中解析出客戶端此前添加的請(qǐng)求標(biāo)記。然后對(duì)分別解析出的兩個(gè)請(qǐng)求標(biāo)記進(jìn)行比對(duì)。
需要說(shuō)明的是,本實(shí)施例的目的在于使客戶端輸出與最后一次查詢操作相對(duì)應(yīng)的查詢結(jié)果,因此無(wú)論用戶此前進(jìn)行過(guò)幾次查詢操作,均無(wú)需將解析的請(qǐng)求標(biāo)記與在先請(qǐng)求中的請(qǐng)求標(biāo)記進(jìn)行比對(duì)。
105、若判斷結(jié)果為是,則輸出查詢數(shù)據(jù)。
若兩個(gè)請(qǐng)求標(biāo)記相同,則表示服務(wù)端返回了對(duì)應(yīng)最后一次查詢請(qǐng)求的查詢響應(yīng),該查詢響應(yīng)中的查詢數(shù)據(jù)必然為最后一次查詢操作所要獲取的查詢結(jié)果,因此客戶端將該查詢數(shù)據(jù)輸出反饋給用戶。
若兩個(gè)請(qǐng)求標(biāo)記不同,則表示服務(wù)端返回了對(duì)應(yīng)在先查詢請(qǐng)求的查詢響應(yīng)。由于用戶在發(fā)起在先查詢操作之后又發(fā)起了至少一次在后查詢操作,此時(shí)將在先查詢操作對(duì)應(yīng)的查詢數(shù)據(jù)反饋給用戶已沒(méi)有實(shí)際意義,因此客戶端可以對(duì)對(duì)應(yīng)在先查詢請(qǐng)求的查詢響應(yīng)進(jìn)行特別處理。實(shí)際應(yīng)用中,較為節(jié)省存儲(chǔ)資源的處理方式為,直接將在先查詢響應(yīng)中的查詢數(shù)據(jù)丟棄。當(dāng)然,在一些考量查詢服務(wù)質(zhì)量的情況中,客戶端也可以對(duì)在先查詢響應(yīng)中的查詢數(shù)據(jù)進(jìn)行保存,以便后續(xù)擇機(jī)向用戶進(jìn)行反饋。
需要說(shuō)明的是,本實(shí)施例提供的方法適用于實(shí)際生活中的所有數(shù)據(jù)查 詢場(chǎng)景,這些場(chǎng)景包括但不限于是:通過(guò)瀏覽器請(qǐng)求網(wǎng)頁(yè)內(nèi)容、通過(guò)APP進(jìn)行垂直搜索以及在私有網(wǎng)絡(luò)中進(jìn)行數(shù)據(jù)庫(kù)查詢等。
下面通過(guò)一個(gè)簡(jiǎn)單的示例對(duì)現(xiàn)有技術(shù)和圖1方法進(jìn)行比較說(shuō)明:
假設(shè)用戶向垂直搜索服務(wù)器發(fā)送查詢請(qǐng)求1,請(qǐng)求查詢16款?yuàn)W迪A4L全系車(chē)型的價(jià)格H,由于此時(shí)服務(wù)器負(fù)載較高,因此沒(méi)有對(duì)查詢請(qǐng)求1做出及時(shí)響應(yīng);此后用戶又向服務(wù)器發(fā)送查詢請(qǐng)求2,請(qǐng)求查詢15款奔馳C200全系車(chē)型的價(jià)格L。在客戶端發(fā)送查詢請(qǐng)求2之后,服務(wù)器對(duì)查詢請(qǐng)求1做出響應(yīng),將價(jià)格H添加到查詢響應(yīng)1中返回給客戶端。在現(xiàn)有技術(shù)中,客戶端在接收到查詢響應(yīng)1后,直接對(duì)其中的價(jià)格H進(jìn)行輸出,但是此時(shí)用戶已做出產(chǎn)生查詢請(qǐng)求2的第二次查詢操作,其所期待的查詢結(jié)果是對(duì)應(yīng)第二次查詢操作的價(jià)格L,這種情況下將價(jià)格H進(jìn)行輸出顯然欠妥。
而在圖1所示方法中,客戶端在發(fā)送的查詢請(qǐng)求1中添加了請(qǐng)求標(biāo)記“110”,在發(fā)送的查詢請(qǐng)求2中添加了請(qǐng)求標(biāo)記“203”。服務(wù)器在響應(yīng)查詢請(qǐng)求1時(shí),將其中的請(qǐng)求標(biāo)記“110”添加到查詢響應(yīng)1中,連同價(jià)格H一同返回給客戶端??蛻舳嗽诮邮盏讲樵冺憫?yīng)1后,將其中的請(qǐng)求標(biāo)記“110”與在后發(fā)送的查詢請(qǐng)求2中的請(qǐng)求標(biāo)記“203”進(jìn)行比對(duì),發(fā)現(xiàn)兩者不同,客戶端丟棄價(jià)格H。此后,服務(wù)器又返回了攜帶請(qǐng)求標(biāo)記“203”及價(jià)格L的查詢響應(yīng)2??蛻舳藢㈨憫?yīng)2中的請(qǐng)求標(biāo)記“203”與查詢請(qǐng)求2中的請(qǐng)求標(biāo)記“203”進(jìn)行比對(duì),發(fā)現(xiàn)兩者相同,客戶端輸出價(jià)格L,該價(jià)格L正是用戶當(dāng)前所期待的查詢結(jié)果。
通過(guò)上述示例可以看出:現(xiàn)有技術(shù)中,客戶端輸出的查詢結(jié)果與用戶進(jìn)行的查詢操作“錯(cuò)位”,從查詢期待的角度上講,這種方式無(wú)法使用戶獲得有效的查詢結(jié)果。相對(duì)而言,圖1所示方法雖然犧牲了在先查詢結(jié)果的輸出,但是能夠保證用戶的最后一次查詢操作可以獲得相對(duì)應(yīng)的查詢結(jié)果,從而能夠在無(wú)法避免響應(yīng)延時(shí)的條件下保證部分查詢操作的有效性。
進(jìn)一步的,作為對(duì)圖1所示方法的細(xì)化,本發(fā)明實(shí)施例還提供了一種數(shù)據(jù)查詢的方法。如圖2所示,該方法包括:
201、為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記。
本實(shí)施例中,能夠作為請(qǐng)求標(biāo)記使用的參數(shù)可以是偽隨機(jī)數(shù)、信息摘 要算法(Message-Digest Algorithm 5,簡(jiǎn)稱(chēng)MD5)值或者時(shí)間戳。下面分別對(duì)著三種參數(shù)的使用進(jìn)行介紹:
1、偽隨機(jī)數(shù)
客戶端側(cè)植入有一個(gè)偽隨機(jī)數(shù)發(fā)生函數(shù),該函數(shù)本身的特點(diǎn)在于每次生成的偽隨機(jī)數(shù)互相不重復(fù)。在進(jìn)行數(shù)據(jù)查詢時(shí),客戶端可以單起一個(gè)線程監(jiān)控瀏覽器等程序的運(yùn)行狀態(tài)。當(dāng)產(chǎn)生查詢請(qǐng)求時(shí),該線程通過(guò)hook函數(shù)將發(fā)送動(dòng)作截獲,并跳轉(zhuǎn)調(diào)用偽隨機(jī)數(shù)發(fā)生函數(shù)生成偽隨機(jī)數(shù)。
在本實(shí)施例的一種實(shí)現(xiàn)方式中,當(dāng)使用C語(yǔ)言進(jìn)行編譯時(shí),可以直接使用C語(yǔ)言編譯器提供的、基于ansi標(biāo)準(zhǔn)的偽隨機(jī)數(shù)發(fā)生器函數(shù)。這個(gè)函數(shù)由srand()和rand()兩個(gè)子函數(shù)組成。在生成偽隨機(jī)數(shù)時(shí),首先為srand()提供一個(gè)名為“種子值”、類(lèi)型為unsigned int的初始值,該初始值的取值范圍為0~65535。通常情況下可以使用快速計(jì)數(shù)寄存器或移位寄存器隨機(jī)分配該種子值。然后調(diào)用rand(),根據(jù)srand()的種子值返回一個(gè)偽隨機(jī)數(shù),該偽隨機(jī)數(shù)是在0~32767的取值范圍內(nèi)隨機(jī)選擇的。當(dāng)需要生成下一個(gè)偽隨機(jī)數(shù)時(shí)重復(fù)調(diào)用rand(),仍從上述取值范圍內(nèi)隨機(jī)選擇出一個(gè)新的偽隨機(jī)數(shù)。由于rand()理論上具有不重復(fù)選擇的機(jī)制(即多次調(diào)用rand()選擇出的偽隨機(jī)數(shù)雖然都落于上述范圍內(nèi),但是相互之間不會(huì)重復(fù)),因此本實(shí)施例中可以基于一個(gè)種子值生成多個(gè)不同的偽隨機(jī)數(shù)。
但是在實(shí)際應(yīng)用中,上述不重復(fù)選擇的機(jī)制并不是一個(gè)全概率事件,即選擇的多個(gè)偽隨機(jī)數(shù)存在較小概率重復(fù)的可能(這也是“偽隨機(jī)數(shù)”名稱(chēng)的由來(lái))。特別是隨著生成偽隨機(jī)數(shù)數(shù)量的不斷增多,后續(xù)選擇偽隨機(jī)數(shù)的取值范圍將會(huì)越來(lái)越小,因此重復(fù)選擇偽隨機(jī)數(shù)的概率就會(huì)越來(lái)越大。為防止出現(xiàn)重復(fù)的偽隨機(jī)數(shù),在本實(shí)施例的一種改進(jìn)方案中,可以根據(jù)預(yù)設(shè)的生成次數(shù)更換種子值。例如在通過(guò)一個(gè)種子值生成了1000個(gè)偽隨機(jī)數(shù)后,重新為srand()隨機(jī)分配一個(gè)新的種子值,并由rand()根據(jù)新的種子值繼續(xù)生成偽隨機(jī)數(shù)。種子值的隨機(jī)改變可以進(jìn)一步提高rand()的隨機(jī)化程度,由此降低偽隨機(jī)數(shù)重復(fù)的概率。
實(shí)際應(yīng)用中,可以根據(jù)偽隨機(jī)數(shù)的取值范圍設(shè)定預(yù)設(shè)的生成次數(shù),例如可以將生成次數(shù)設(shè)定為32768/2=16384,或者32768/4=8192。當(dāng)然生成次 數(shù)也可以是一個(gè)固定值,例如上述示例中的1000次,本實(shí)施例不對(duì)預(yù)設(shè)生成次數(shù)的具體數(shù)值進(jìn)行限制。
2、MD5值
本實(shí)施例中,還可以對(duì)查詢請(qǐng)求中的查詢條件進(jìn)行MD5運(yùn)算,將獲得的MD5值作為請(qǐng)求標(biāo)記使用。由于不同查詢請(qǐng)求的查詢條件互不相同,因此計(jì)算出來(lái)的MD5值不會(huì)重復(fù)。
實(shí)際應(yīng)用中,對(duì)于請(qǐng)求網(wǎng)頁(yè)內(nèi)容的查詢請(qǐng)求,可以對(duì)其中攜帶的統(tǒng)一資源定位符(Uniform Resource Locator,簡(jiǎn)稱(chēng)URL)做MD5運(yùn)算,例如對(duì)URL“http://localhost:7777/user.do?name=uu&sex=male”做MD5運(yùn)算;也可以僅對(duì)URL中的查詢字符串進(jìn)行MD5運(yùn)算,例如對(duì)上述URL中的“name=uu&sex=male”做MD5運(yùn)算。對(duì)于數(shù)據(jù)庫(kù)查詢請(qǐng)求,則可以將其中的查詢字段進(jìn)行MD5運(yùn)算。本實(shí)施例不對(duì)MD5運(yùn)算的具體對(duì)象進(jìn)行限制。
3、時(shí)間戳
本實(shí)施例中還可以根據(jù)查詢請(qǐng)求產(chǎn)生的時(shí)間生成時(shí)間戳,將時(shí)間戳用作為請(qǐng)求標(biāo)記。通常,基于用戶操作產(chǎn)生的查詢請(qǐng)求的產(chǎn)生時(shí)間互不相同,或者說(shuō)用戶一般無(wú)法在同一時(shí)刻上同時(shí)發(fā)起多次查詢請(qǐng)求。因此查詢請(qǐng)求的產(chǎn)生時(shí)間是唯一的。實(shí)際應(yīng)用中,客戶端可以在生成查詢請(qǐng)求時(shí)請(qǐng)求獲取當(dāng)前的系統(tǒng)時(shí)鐘,將獲取的系統(tǒng)時(shí)刻值作為時(shí)間戳使用。此外,客戶端也可以在啟動(dòng)后通過(guò)一個(gè)獨(dú)立的線程進(jìn)行計(jì)數(shù),在生成查詢請(qǐng)求時(shí),讀取當(dāng)前的計(jì)數(shù)值作為相對(duì)時(shí)間戳使用。
需要說(shuō)明的是,實(shí)際應(yīng)用中可能存在由應(yīng)用進(jìn)程同時(shí)觸發(fā)多個(gè)后臺(tái)查詢請(qǐng)求的情況,即存在非人為觸發(fā)的并發(fā)查詢請(qǐng)求。由于并發(fā)查詢請(qǐng)求的時(shí)間戳相同,因此無(wú)法用作請(qǐng)求標(biāo)記。對(duì)此這種情況,客戶端可以將時(shí)間戳與其他能夠體現(xiàn)查詢請(qǐng)求的相對(duì)唯一性的信息進(jìn)行組合,作為請(qǐng)求標(biāo)記使用。示例性的,可用作請(qǐng)求標(biāo)記的信息組合可以為“時(shí)間戳+進(jìn)程編號(hào)/名稱(chēng)”或者“時(shí)間戳+主機(jī)域名”。
以上對(duì)偽隨機(jī)數(shù)、MD5值以及時(shí)間戳用作請(qǐng)求標(biāo)記的實(shí)現(xiàn)方式進(jìn)行了介紹。實(shí)際應(yīng)用中,上述三種參數(shù)可以單獨(dú)或相互組合作為請(qǐng)求標(biāo)記使用。
202、將請(qǐng)求標(biāo)記添加到查詢請(qǐng)求中。
目前,數(shù)據(jù)查詢技術(shù)使用的最為廣泛的應(yīng)用層協(xié)議為HTTP協(xié)議,本實(shí)施例將以HTTP協(xié)議為例進(jìn)行說(shuō)明。
HTTP請(qǐng)求包含請(qǐng)求行、頭字段(head)和體字段(body)三部分。其中,請(qǐng)求行用以記錄請(qǐng)求類(lèi)型、訪問(wèn)資源以及HTTP版本等信息,頭字段用以說(shuō)明服務(wù)器使用的附加信息,體字段中則可以添加任意的數(shù)據(jù)信息。本實(shí)施例中客戶端可以將請(qǐng)求標(biāo)記添加到體字段中。此外,由于首字段中的內(nèi)容也可以進(jìn)行適當(dāng)修改,因此實(shí)際應(yīng)用中將請(qǐng)求標(biāo)記添加到首字段中也是可行的。
203、向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求。
204、將已發(fā)送的查詢請(qǐng)求加入本地堆棧。
查詢請(qǐng)求在被發(fā)送到服務(wù)端后,需要保存在客戶端本地,用于后續(xù)比對(duì)請(qǐng)求標(biāo)記之用。本實(shí)施例中,客戶端按照發(fā)送的先后順序?qū)⒉煌牟樵冋?qǐng)求順序加入到堆棧中進(jìn)行保存。堆棧具有“先進(jìn)后出”的特性,最早發(fā)送的查詢請(qǐng)求存放于棧底,最晚發(fā)送的查詢請(qǐng)求則存放于棧頂。利用該特性,在比對(duì)請(qǐng)求標(biāo)記時(shí)客戶端直接讀取棧頂中的內(nèi)容即可獲得最后一次發(fā)送的查詢請(qǐng)求。
205、接收服務(wù)端返回的查詢響應(yīng)。
對(duì)于單個(gè)客戶端而言,通過(guò)對(duì)偽隨機(jī)數(shù)、MD5值等參數(shù)的使用可以保證各個(gè)查詢請(qǐng)求中的請(qǐng)求標(biāo)記不重復(fù)。但是服務(wù)端會(huì)與大量的客戶端進(jìn)行交互,各個(gè)客戶端之間生成請(qǐng)求標(biāo)記的過(guò)程是相互獨(dú)立的,無(wú)法保證不同客戶端的查詢請(qǐng)求中的請(qǐng)求標(biāo)記沒(méi)有重復(fù)。在本實(shí)施例中,沒(méi)有必要保證不同客戶端生成的請(qǐng)求標(biāo)記一定不同,服務(wù)端無(wú)需對(duì)不同客戶端的請(qǐng)求標(biāo)記進(jìn)行區(qū)分,甚至無(wú)需關(guān)注請(qǐng)求標(biāo)記的具體內(nèi)容,只需要將查詢請(qǐng)求中解析出的請(qǐng)求標(biāo)記“原封不動(dòng)”的添加到對(duì)應(yīng)該查詢請(qǐng)求的查詢響應(yīng)中即可。
206、判斷接收的請(qǐng)求標(biāo)記與本地堆棧棧頂保存的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同。
受網(wǎng)絡(luò)時(shí)延或服務(wù)端負(fù)載狀況影響,查詢響應(yīng)返回順序可能會(huì)被打亂??蛻舳藷o(wú)需判斷也無(wú)法判斷接收的查詢響應(yīng)對(duì)應(yīng)于哪一個(gè)查詢請(qǐng)求。因此,客戶端在每次接收到查詢響應(yīng)時(shí),均要對(duì)堆棧的棧頂內(nèi)容進(jìn)行一次讀取, 獲取最后發(fā)送的查詢請(qǐng)求,并從中解析出對(duì)應(yīng)的請(qǐng)求標(biāo)記。然后將該標(biāo)記與查詢響應(yīng)中解析出的請(qǐng)求標(biāo)記相比對(duì)。如果兩者相同,則表示接收的查詢響應(yīng)與最后發(fā)送的查詢請(qǐng)求相對(duì)應(yīng),執(zhí)行步驟207輸出該查詢響應(yīng)中的查詢數(shù)據(jù);如果兩者不同,則表示接收的查詢響應(yīng)是對(duì)應(yīng)在先查詢請(qǐng)求的查詢響應(yīng),由于此時(shí)用戶期待的是最后一次查詢操作對(duì)應(yīng)的查詢數(shù)據(jù),輸出在先查詢操作的查詢數(shù)據(jù)已沒(méi)有意義,因此客戶端執(zhí)行步驟208,將查詢響應(yīng)中的查詢數(shù)據(jù)丟棄。
207、若判斷結(jié)果為是,則輸出查詢數(shù)據(jù)。
本實(shí)施例所述的輸出包括通過(guò)不同類(lèi)型的外設(shè)對(duì)數(shù)據(jù)信息進(jìn)行不同形式的展示,實(shí)際應(yīng)用中客戶端可以通過(guò)顯示器進(jìn)行圖像輸出,也可以通過(guò)揚(yáng)聲器進(jìn)行音頻輸出。對(duì)于較為常見(jiàn)的圖像輸出方式,客戶端可以將查詢數(shù)據(jù)顯示在瀏覽器頁(yè)面中,或者APP的窗口中,再或者顯示在特定的數(shù)據(jù)庫(kù)查詢界面中。本實(shí)施例不對(duì)輸出查詢數(shù)據(jù)的方式和外設(shè)類(lèi)型進(jìn)行限制。
208、若判斷結(jié)果為否,則丟棄查詢數(shù)據(jù)。
進(jìn)一步的,考慮到用戶有時(shí)需要對(duì)某些在先查詢操作的查詢數(shù)據(jù)進(jìn)行查看,為改善丟棄在先查詢數(shù)據(jù)導(dǎo)致的查詢結(jié)果反饋不完整的問(wèn)題,作為步驟208的替換,本實(shí)施例還可以對(duì)在先查詢操作對(duì)應(yīng)的查詢結(jié)果進(jìn)行緩存,以備后續(xù)擇機(jī)進(jìn)行輸出展示。具體的,在執(zhí)行完步驟206之后,如果請(qǐng)求標(biāo)記比對(duì)不相同,則客戶端依次讀取堆棧中存放的剩余查詢請(qǐng)求,并將每個(gè)查詢請(qǐng)求中的請(qǐng)求標(biāo)記解析出來(lái)與該查詢響應(yīng)中的請(qǐng)求標(biāo)記進(jìn)行比對(duì)。由于查詢響應(yīng)中的請(qǐng)求標(biāo)記是客戶端在發(fā)送查詢請(qǐng)求時(shí)生成的,因此一定可以在堆棧中找到包含該請(qǐng)求標(biāo)記的查詢請(qǐng)求。當(dāng)找到對(duì)應(yīng)的查詢請(qǐng)求時(shí),客戶端將查詢響應(yīng)中的查詢數(shù)據(jù)作為歷史查詢數(shù)據(jù),與查找到的查詢請(qǐng)求的屬性信息進(jìn)行關(guān)聯(lián)輸出。其中,所述屬性信息主要用于供用戶對(duì)查詢操作進(jìn)行區(qū)別,可以但不限于是查詢請(qǐng)求中的查詢條件,例如URL或查詢字段等。將該屬性信息與查詢數(shù)據(jù)關(guān)聯(lián)的顯示在特定窗口/界面中的列表中,以便用戶對(duì)歷次查詢操作的查詢結(jié)果進(jìn)行查看。
在本實(shí)施例的最后一種實(shí)現(xiàn)方式中,如果不使用步驟208的替換方案,那么在執(zhí)行步驟204時(shí),也可以不使用堆棧保存查詢請(qǐng)求。由于無(wú)需對(duì)往 次查詢請(qǐng)求進(jìn)行回溯,因此客戶端無(wú)需對(duì)所有查詢請(qǐng)求全部進(jìn)行保存,只需要保存最后一次發(fā)送的查詢請(qǐng)求即可。因而在本實(shí)現(xiàn)方式中,客戶端開(kāi)辟一小塊能夠存儲(chǔ)一條查詢請(qǐng)求的緩存空間即可。當(dāng)發(fā)送了新的查詢請(qǐng)求后,客戶端將在后查詢請(qǐng)求存儲(chǔ)在該存儲(chǔ)空間中,對(duì)原有存儲(chǔ)的在先查詢請(qǐng)求進(jìn)行替換。由于在任何時(shí)候客戶端均只需保存一條查詢請(qǐng)求,因此本實(shí)現(xiàn)方式能夠降低對(duì)緩存的占用程度,同時(shí)還可以省去清理緩存的復(fù)雜邏輯,能夠大大優(yōu)化客戶端的內(nèi)存使用。
進(jìn)一步的,作為對(duì)圖1或圖2所示方法的實(shí)現(xiàn),本發(fā)明另一實(shí)施例還提供了一種數(shù)據(jù)查詢的裝置。本裝置實(shí)施例與前述方法實(shí)施例對(duì)應(yīng),能夠?qū)崿F(xiàn)前述方法實(shí)施例中的全部?jī)?nèi)容。為便于閱讀,本裝置實(shí)施例僅對(duì)前述方法實(shí)施例中的內(nèi)容進(jìn)行概要性描述,不對(duì)方法實(shí)施例中的細(xì)節(jié)內(nèi)容進(jìn)行逐一贅述。如圖3所示,該裝置包括:生成單元31、發(fā)送單元32、接收單元33、判斷單元34以及輸出單元35。其中,
生成單元31,用于為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記;
發(fā)送單元32,用于向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求;
接收單元33,用于接收服務(wù)端返回的查詢響應(yīng),查詢響應(yīng)中攜帶有查詢數(shù)據(jù),以及對(duì)應(yīng)查詢響應(yīng)的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記;
判斷單元34,用于判斷接收的請(qǐng)求標(biāo)記與最后一次發(fā)送的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同;
輸出單元35,用于當(dāng)判斷結(jié)果為是時(shí),輸出查詢數(shù)據(jù)。
進(jìn)一步的,如圖4所示,生成單元31,包括:
第一生成模塊311,用于通過(guò)偽隨機(jī)數(shù)發(fā)生函數(shù)生成偽隨機(jī)數(shù);
第二生成模塊312,用于對(duì)查詢請(qǐng)求中的查詢條件進(jìn)行信息摘要算法MD5計(jì)算,生成MD5值;
第三生成模塊313,用于根據(jù)查詢請(qǐng)求產(chǎn)生的時(shí)間生成時(shí)間戳。
進(jìn)一步的,第一生成模塊311,用于:當(dāng)請(qǐng)求標(biāo)記為偽隨機(jī)數(shù)時(shí),根據(jù)預(yù)設(shè)的生成次數(shù)更換種子值。
進(jìn)一步的,如圖4所示,該裝置進(jìn)一步包括:
加入單元36,用于在接收服務(wù)端返回的查詢響應(yīng)之前,將已發(fā)送的查 詢請(qǐng)求加入本地堆棧;
判斷單元34,用于判斷接收的請(qǐng)求標(biāo)記與本地堆棧棧頂保存的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同。
進(jìn)一步的,如圖4所示,該裝置進(jìn)一步包括:
查找單元37,用于當(dāng)判斷結(jié)果為否時(shí),查找與接收的請(qǐng)求標(biāo)記對(duì)應(yīng)的查詢請(qǐng)求;
輸出單元35,用于將查詢數(shù)據(jù)作為歷史查詢數(shù)據(jù),與查找到的查詢請(qǐng)求的屬性信息進(jìn)行關(guān)聯(lián)輸出。
所述數(shù)據(jù)查詢的裝置包括處理器和存儲(chǔ)器,上述生成單元31、發(fā)送單元32、接收單元33、判斷單元34、輸出單元35等均作為程序單元存儲(chǔ)在存儲(chǔ)器中,由處理器執(zhí)行存儲(chǔ)在存儲(chǔ)器中的上述程序單元來(lái)實(shí)現(xiàn)相應(yīng)的功能。
處理器中包含內(nèi)核,由內(nèi)核去存儲(chǔ)器中調(diào)取相應(yīng)的程序單元。內(nèi)核可以設(shè)置一個(gè)或以上,通過(guò)調(diào)整內(nèi)核參數(shù)來(lái)保證客戶端直接輸出與最后發(fā)起的查詢請(qǐng)求所對(duì)應(yīng)的查詢結(jié)果。
存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flashRAM),存儲(chǔ)器包括至少一個(gè)存儲(chǔ)芯片。
本申請(qǐng)還提供了一種計(jì)算機(jī)程序產(chǎn)品,當(dāng)在數(shù)據(jù)處理設(shè)備上執(zhí)行時(shí),適于執(zhí)行初始化有如下方法步驟的程序代碼:為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記;向服務(wù)端發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求;接收服務(wù)端返回的查詢響應(yīng),查詢響應(yīng)中攜帶有查詢數(shù)據(jù),以及對(duì)應(yīng)查詢響應(yīng)的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記;判斷接收的請(qǐng)求標(biāo)記與最后一次發(fā)送的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同;若判斷結(jié)果為是,則輸出查詢數(shù)據(jù)。
進(jìn)一步的,作為對(duì)圖1或圖2所示方法的實(shí)現(xiàn),本發(fā)明另一實(shí)施例還提供了一種數(shù)據(jù)查詢的系統(tǒng)。本系統(tǒng)實(shí)施例與前述方法實(shí)施例對(duì)應(yīng),能夠?qū)崿F(xiàn)前述方法實(shí)施例中的全部?jī)?nèi)容。為便于閱讀,本系統(tǒng)實(shí)施例僅對(duì)前述方法實(shí)施例中的內(nèi)容進(jìn)行概要性描述,不對(duì)方法實(shí)施例中的細(xì)節(jié)內(nèi)容進(jìn)行逐一贅述。如圖5所示,該系統(tǒng)包括:客戶端51和服務(wù)端52,其中,客戶 端51包含前述圖3或圖4所示的裝置,或者獨(dú)立于該裝置但是與該裝置之間具有數(shù)據(jù)交互關(guān)系,用以實(shí)現(xiàn)該裝置的全部功能。具體的:
客戶端51,用于為待發(fā)送的查詢請(qǐng)求生成不重復(fù)的請(qǐng)求標(biāo)記,向服務(wù)端52發(fā)送攜帶請(qǐng)求標(biāo)記的查詢請(qǐng)求;
服務(wù)端52,用于響應(yīng)查詢請(qǐng)求進(jìn)行數(shù)據(jù)查詢,解析查詢請(qǐng)求獲得請(qǐng)求標(biāo)記,將請(qǐng)求標(biāo)記及數(shù)據(jù)查詢獲得的查詢數(shù)據(jù)添加到對(duì)應(yīng)查詢請(qǐng)求的查詢響應(yīng)中返回給客戶端51;
客戶端51,還用于接收服務(wù)端52返回的查詢響應(yīng),判斷接收的請(qǐng)求標(biāo)記與最后一次發(fā)送的查詢請(qǐng)求所攜帶的請(qǐng)求標(biāo)記是否相同,若判斷結(jié)果為是,則輸出查詢數(shù)據(jù)。
本發(fā)明實(shí)施例提供的數(shù)據(jù)查詢的裝置及系統(tǒng),能夠在向服務(wù)端發(fā)送的查詢請(qǐng)求中添加一個(gè)唯一的請(qǐng)求標(biāo)記,由服務(wù)端將該請(qǐng)求標(biāo)記添加到對(duì)應(yīng)該查詢請(qǐng)求的查詢響應(yīng)中返回給客戶端。在接收到查詢響應(yīng)時(shí),客戶端對(duì)查詢響應(yīng)中請(qǐng)求標(biāo)記和最后一次發(fā)送的查詢請(qǐng)求中的請(qǐng)求標(biāo)記進(jìn)行比對(duì)。如果兩個(gè)請(qǐng)求標(biāo)記相同,則證明接收到的查詢響應(yīng)是對(duì)應(yīng)最后一次查詢請(qǐng)求的查詢響應(yīng),客戶端將該查詢響應(yīng)中的查詢結(jié)果予以輸出。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例能夠使客戶端直接輸出與用戶最后執(zhí)行的查詢操作所對(duì)應(yīng)的查詢結(jié)果,由此保證用戶最近一次的查詢操作真實(shí)有效。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè) 機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
存儲(chǔ)器可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flashRAM)。存儲(chǔ)器是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類(lèi)型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤(pán)只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(pán)(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤(pán)存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
以上僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技 術(shù)人員來(lái)說(shuō),本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。