本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,尤其涉及一種排名方法和裝置。
背景技術(shù):
在互聯(lián)網(wǎng)應(yīng)用中,經(jīng)??梢杂玫礁鞣N排名,例如:針對(duì)最熱門的內(nèi)容、最活躍的用戶、最受歡迎的話題等等對(duì)象進(jìn)行排名,排名通過排名算法得以實(shí)現(xiàn)。
在現(xiàn)有的排名算法中,通常是按照一定的數(shù)據(jù)統(tǒng)計(jì)周期對(duì)數(shù)據(jù)庫中的對(duì)象進(jìn)行定期排名統(tǒng)計(jì),然后將排名結(jié)果放置在內(nèi)存中,當(dāng)客戶刷新頁面的時(shí)候可以實(shí)現(xiàn)排名結(jié)果的同步更新。這種方法適用于對(duì)排名實(shí)時(shí)性要求不高的場景,用戶對(duì)這種排名的敏感度不高,有稍微的延時(shí)或者不準(zhǔn)確是可以被容忍的。
但是,對(duì)于某些應(yīng)用來說,用戶對(duì)排名的實(shí)時(shí)性要求較高,例如:一個(gè)網(wǎng)站為了防止受到惡意訪問的攻擊,需要實(shí)時(shí)統(tǒng)計(jì)訪問網(wǎng)絡(luò)互連協(xié)議(Internet Protocol,簡稱IP)地址的次數(shù),并對(duì)訪問量較大的一些IP地址進(jìn)行控制,但是,通過現(xiàn)有的排名算法無法滿足用戶對(duì)排名的實(shí)時(shí)性要求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種排名方法和裝置,用戶可以實(shí)時(shí)獲取排名,滿足了用戶對(duì)排名的實(shí)時(shí)性要求。
本發(fā)明提供的排名方法,包括:
獲取待排名對(duì)象的當(dāng)前屬性信息;其中,所述當(dāng)前屬性信息包括所述待排名對(duì)象的對(duì)象標(biāo)識(shí)和所述待排名對(duì)象的當(dāng)前屬性值;
根據(jù)所述對(duì)象標(biāo)識(shí)和所述當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取所述待排名對(duì)象的更新屬性值;其中,所述全對(duì)象隊(duì)列位于內(nèi)存中且包括在獲取所述待排名對(duì)象之前獲取到的所有對(duì)象的歷史屬性信息;
根據(jù)所述對(duì)象標(biāo)識(shí)和所述更新屬性值更新排名隊(duì)列,獲得排名結(jié)果;其中,所述排名隊(duì)列位于內(nèi)存中且包括多個(gè)已經(jīng)排名的對(duì)象的屬性信息。
本發(fā)明提供的排名裝置,包括:
獲取模塊,用于獲取待排名對(duì)象的當(dāng)前屬性信息;其中,所述當(dāng)前屬性信息包括所述待排名對(duì)象的對(duì)象標(biāo)識(shí)和所述待排名對(duì)象的當(dāng)前屬性值;
第一更新模塊,用于根據(jù)所述對(duì)象標(biāo)識(shí)和所述當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取所述待排名對(duì)象的更新屬性值;其中,所述全對(duì)象隊(duì)列位于內(nèi)存中且包括在獲取所述待排名對(duì)象之前獲取到的所有對(duì)象的歷史屬性信息;
第二更新模塊,用于根據(jù)所述對(duì)象標(biāo)識(shí)和所述更新屬性值更新排名隊(duì)列,獲得排名結(jié)果;其中,所述排名隊(duì)列位于內(nèi)存中且包括多個(gè)已經(jīng)排名的對(duì)象的屬性信息。
本發(fā)明提供一種排名方法和裝置,排名方法包括:獲取待排名對(duì)象的當(dāng)前屬性信息,根據(jù)對(duì)象標(biāo)識(shí)和當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取待排名對(duì)象的更新屬性值,根據(jù)對(duì)象標(biāo)識(shí)和更新屬性值更新排名隊(duì)列,獲得排名結(jié)果。本發(fā)明提供的排名方法,通過在內(nèi)存設(shè)置兩個(gè)隊(duì)列,可以實(shí)時(shí)的根據(jù)待排名對(duì)象的當(dāng)前屬性信息更新全對(duì)象隊(duì)列和排名隊(duì)列,因此,用戶可以實(shí)時(shí)獲取排名,滿足了用戶對(duì)排名的實(shí)時(shí)性要求。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例一提供的排名方法的流程圖;
圖2為本發(fā)明實(shí)施例二提供的排名方法的流程圖;
圖3為本發(fā)明實(shí)施例一提供的排名裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的說明書和權(quán)利要求書及上述附圖中的術(shù)語“第一”、“第二”、“第三”“第四”等(如果存在)是用于區(qū)別類似的對(duì)象,而不必用于描述特定的順序或先后次序。應(yīng)該理解這樣使用的數(shù)據(jù)在適當(dāng)情況下可以互換,以便這里描述的本發(fā)明的實(shí)施例例如能夠以除了在這里圖示或描述的那些以外的順序?qū)嵤?。此外,術(shù)語“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟或單元的過程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于清楚地列出的那些步驟或單元,而是可包括沒有清楚地列出的或?qū)τ谶@些過程、方法、產(chǎn)品或設(shè)備固有的其它步驟或單元。
圖1為本發(fā)明實(shí)施例一提供的排名方法的流程圖,本實(shí)施例提供的排名方法,執(zhí)行主體可以為排名裝置。如圖1所示,本實(shí)施例提供的排名方法,可以包括:
步驟101、獲取待排名對(duì)象的當(dāng)前屬性信息。
其中,當(dāng)前屬性信息包括待排名對(duì)象的對(duì)象標(biāo)識(shí)和待排名對(duì)象的當(dāng)前屬性值。
具體的,待排名對(duì)象的對(duì)象標(biāo)識(shí)用于唯一區(qū)分不同的待排名對(duì)象,待排名對(duì)象的當(dāng)前屬性值是指在上一次排名與本次排名之間,待排名對(duì)象的屬性值的變化值。
需要說明的是,本實(shí)施例對(duì)于待排名對(duì)象的對(duì)象標(biāo)識(shí)的具體實(shí)現(xiàn)方式不加以限制。
需要說明的是,本實(shí)施例對(duì)于待排名對(duì)象的類型不加以限制,對(duì)于不同類型的對(duì)象,其屬性值的含義、計(jì)算方式都不相同,根據(jù)需要進(jìn)行設(shè)置。
例如:若待排名對(duì)象為IP地址,則IP地址的屬性值可以為IP地址的訪問次數(shù),其計(jì)算方式可以為,每當(dāng)IP地址訪問或者被訪問一次,則IP地址的屬性值加1。
又例如:若待排名對(duì)象為用戶,則用戶的屬性值可以為用戶的綜合得分,其計(jì)算方式可以為,用戶被關(guān)注一次,則用戶的綜合得分加2分,用戶被取消關(guān)注一次,則用戶的綜合得分減2分,用戶關(guān)注其他用戶,則用戶的綜合得分加1分,用戶取消關(guān)注其他用戶,則用戶的綜合得分減1分,等等。
再例如:若待排名對(duì)象為文章,則文章的屬性值可以為文章的綜合得分,其計(jì)算方式可以為,文章被點(diǎn)贊一次,則文章的綜合得分加1分,文章被轉(zhuǎn)發(fā)一次,則文章的綜合得分加2分,文章被下載一次,則文章的綜合得分加3分,等等。
步驟102、根據(jù)對(duì)象標(biāo)識(shí)和當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取待排名對(duì)象的更新屬性值。
其中,全對(duì)象隊(duì)列位于內(nèi)存中且包括在獲取待排名對(duì)象之前獲取到的所有對(duì)象的歷史屬性信息。
可見,在全對(duì)象隊(duì)列中,存儲(chǔ)了所有已經(jīng)獲取到的對(duì)象的歷史屬性信息,對(duì)于待排名對(duì)象,如果在本次排名之前已經(jīng)進(jìn)行過排名,則在全對(duì)象隊(duì)列中將存儲(chǔ)有待排名對(duì)象的歷史屬性信息,如果在本次排名之前沒有進(jìn)行過排名,則在全對(duì)象隊(duì)列中將不會(huì)存儲(chǔ)有待排名對(duì)象的歷史屬性信息。由于在本次排名和上一次排名之間,待排名對(duì)象的當(dāng)前屬性值可能發(fā)生變化,而且,全對(duì)象隊(duì)列中存儲(chǔ)的是所有已經(jīng)獲取到的對(duì)象的歷史屬性信息,因此,在本步驟中,根據(jù)待排名對(duì)象的對(duì)象標(biāo)識(shí)和待排名對(duì)象的當(dāng)前屬性值更新全對(duì)象隊(duì)列,并且,根據(jù)更新后的全對(duì)象隊(duì)列中更新后的歷史屬性信息可以獲取待排名對(duì)象的更新屬性值。
其中,對(duì)象的歷史屬性信息包括對(duì)象的對(duì)象標(biāo)識(shí)和對(duì)象的歷史屬性值。對(duì)象的對(duì)象標(biāo)識(shí)用于唯一區(qū)分不同的對(duì)象,對(duì)象的歷史屬性值是指在本次排名之前該對(duì)象的屬性值。
其中,待排名對(duì)象的更新屬性值是指在本次排名中包含有待排名對(duì)象歷史屬性信息和當(dāng)前屬性信息的最新獲得的屬性值。
可選的,作為一種具體的實(shí)現(xiàn)方式,步驟102,根據(jù)對(duì)象標(biāo)識(shí)和當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取待排名對(duì)象的更新屬性值,可以包括:
根據(jù)對(duì)象標(biāo)志判斷待排名對(duì)象是否位于全對(duì)象隊(duì)列中。
若待排名對(duì)象位于全對(duì)象隊(duì)列中,則獲取全對(duì)象隊(duì)列中待排名對(duì)象的歷史屬性值,根據(jù)預(yù)設(shè)數(shù)據(jù)更新規(guī)則對(duì)當(dāng)前屬性值和歷史屬性值進(jìn)行數(shù)據(jù)處理得到更新后的歷史屬性值,將更新后的歷史屬性值作為更新屬性值。
其中,本實(shí)施例對(duì)于預(yù)設(shè)數(shù)據(jù)更新規(guī)則不加以限制,不同類型的對(duì)象,其對(duì)應(yīng)的預(yù)設(shè)數(shù)據(jù)更新規(guī)則可能不同,根據(jù)需要進(jìn)行設(shè)置。
例如:若待排名對(duì)象為IP地址,則預(yù)設(shè)數(shù)據(jù)更新規(guī)則可以為權(quán)值相加運(yùn)算。
相應(yīng)的,根據(jù)預(yù)設(shè)數(shù)據(jù)更新規(guī)則對(duì)當(dāng)前屬性值和歷史屬性值進(jìn)行數(shù)據(jù)處理得到更新后的歷史屬性值,可以包括:
獲取當(dāng)前屬性值所屬范圍對(duì)應(yīng)的權(quán)值,將權(quán)值與當(dāng)前屬性值相乘后與歷史屬性值進(jìn)行相加的結(jié)果作為更新后的歷史屬性值。
假設(shè),IP地址的訪問次數(shù)在(0,20)范圍對(duì)應(yīng)的權(quán)值為0.2,IP地址的訪問次數(shù)在(20,50)范圍對(duì)應(yīng)的權(quán)值為0.5,如果,IP地址1的歷史屬性值為123次,IP地址1的當(dāng)前屬性值為16次,則更新后的IP地址1的歷史屬性值為0.2*16+123=126.2次。
又例如:若待排名對(duì)象為文章,則預(yù)設(shè)數(shù)據(jù)更新規(guī)則可以為相加運(yùn)算。
相應(yīng)的,根據(jù)預(yù)設(shè)數(shù)據(jù)更新規(guī)則對(duì)當(dāng)前屬性值和歷史屬性值進(jìn)行數(shù)據(jù)處理得到更新后的歷史屬性值,可以包括:
將當(dāng)前屬性值與歷史屬性值進(jìn)行相加的結(jié)果作為更新后的歷史屬性值。
假設(shè),文章X的歷史屬性值為123分,文章X的當(dāng)前屬性值為16分,則更新后的文章X的歷史屬性值為16+123=139分。
可選的,步驟102,根據(jù)對(duì)象標(biāo)識(shí)和當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取待排名對(duì)象的更新屬性值,還可以包括:
若待排名對(duì)象不在全對(duì)象隊(duì)列中,則將待排名對(duì)象插入至全對(duì)象隊(duì)列的隊(duì)尾,將當(dāng)前屬性值作為待排名對(duì)象的歷史屬性值以及更新屬性值。
例如:若待排名對(duì)象為用戶Y,用戶Y的當(dāng)前屬性值為56分,用戶Y不在全對(duì)象隊(duì)列中,說明本次排名之前用戶Y沒有進(jìn)行過排名,則將用戶Y插入至全對(duì)象隊(duì)列的隊(duì)尾,并且,將用戶Y的當(dāng)前屬性值56分作為用戶Y的歷史屬性值和用戶Y的更新屬性值。
需要說明的是,本實(shí)施例對(duì)于全對(duì)象隊(duì)列的長度不做特別限制,例如,可以設(shè)置為固定值,也可以不做限制。
需要說明的是,本實(shí)施例對(duì)于全對(duì)象隊(duì)列中各個(gè)對(duì)象的存放位置不做特別限制,例如,可以按序存放,也可以無序存放。
步驟103、根據(jù)對(duì)象標(biāo)識(shí)和更新屬性值更新排名隊(duì)列,獲得排名結(jié)果。
其中,排名隊(duì)列位于內(nèi)存中且包括多個(gè)已經(jīng)排名的對(duì)象的屬性信息。
可見,本實(shí)施例提供的排名方法,在內(nèi)存中設(shè)置兩個(gè)隊(duì)列,一個(gè)為全對(duì)象隊(duì)列,存儲(chǔ)所有已經(jīng)獲取到的對(duì)象的歷史屬性信息,另一個(gè)為排名隊(duì)列,存儲(chǔ)已經(jīng)排名的多個(gè)對(duì)象的屬性信息。對(duì)于一個(gè)待排名對(duì)象,可以實(shí)時(shí)的根據(jù)待排名對(duì)象的當(dāng)前屬性信息更新全對(duì)象隊(duì)列,根據(jù)更新后的全對(duì)象隊(duì)列獲取待排名對(duì)象的更新屬性值,根據(jù)待排名對(duì)象的更新屬性值更新排名隊(duì)列,從而得到最新的排名結(jié)果。由于全對(duì)象隊(duì)列和排名隊(duì)列位于內(nèi)存中,根據(jù)排名對(duì)象的當(dāng)前屬性信息可以實(shí)時(shí)快速刷新排名結(jié)果,因此,相比于現(xiàn)有技術(shù)中定期刷新排名結(jié)果,用戶可以實(shí)時(shí)獲取排名,滿足了用戶對(duì)排名的實(shí)時(shí)性要求。
可選的,排名隊(duì)列包括預(yù)設(shè)數(shù)值個(gè)對(duì)象。
通過設(shè)置預(yù)設(shè)數(shù)值,可以節(jié)約內(nèi)存的存儲(chǔ)空間。其中,預(yù)設(shè)數(shù)值根據(jù)需要進(jìn)行設(shè)置。
需要說明的是,在本實(shí)施例中,無論是待排名對(duì)象,或者是全對(duì)象隊(duì)列中的對(duì)象,或者是排名隊(duì)列中的對(duì)象,同一個(gè)對(duì)象的對(duì)象標(biāo)識(shí)相同。
本實(shí)施例提供了一種排名方法,包括:獲取待排名對(duì)象的當(dāng)前屬性信息,根據(jù)對(duì)象標(biāo)識(shí)和當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取待排名對(duì)象的更新屬性值,根據(jù)對(duì)象標(biāo)識(shí)和更新屬性值更新排名隊(duì)列,獲得排名結(jié)果。本實(shí)施例提供的排名方法,用戶可以實(shí)時(shí)獲取排名,滿足了用戶對(duì)排名的實(shí)時(shí)性要求。
圖2為本發(fā)明實(shí)施例二提供的排名方法的流程圖,本實(shí)施例在實(shí)施例一的基礎(chǔ)上,提供了排名方法的另一種實(shí)現(xiàn)方式,尤其提供了實(shí)施例一中步驟103的具體實(shí)現(xiàn)方式。如圖2所示,本實(shí)施例提供的排名方法,實(shí)施例一中步驟103,根據(jù)對(duì)象標(biāo)識(shí)和更新屬性值更新排名隊(duì)列,可以包括:
步驟201、根據(jù)對(duì)象標(biāo)志判斷待排名對(duì)象是否位于排名隊(duì)列中。
步驟202、若待排名對(duì)象位于排名隊(duì)列中,則獲取位于待排名對(duì)象前面的第一對(duì)象,并判斷更新屬性值是否大于第一對(duì)象的第一屬性值。
步驟203、若更新屬性值大于第一對(duì)象的第一屬性值,則交換待排名對(duì)象與第一對(duì)象的位置,并繼續(xù)獲取位于待排名對(duì)象前面的第二對(duì)象,針對(duì)第二對(duì)象重復(fù)執(zhí)行上述判斷是否交換位置的操作,直至更新屬性值小于第二對(duì)象的第二屬性值或者直至待排名對(duì)象位于排名隊(duì)列的隊(duì)首。
具體的,如果待排名對(duì)象位于排名隊(duì)列中,說明待排名對(duì)象在本次排名之前已經(jīng)進(jìn)行過排名,則需要根據(jù)待排名對(duì)象的更新屬性值更新排名隊(duì)列。如果待排名對(duì)象的更新屬性值大于其前面的第一對(duì)象的第一屬性值,則需要對(duì)待排名對(duì)象重新進(jìn)行排序,即,將待排名對(duì)象的位置與第一對(duì)象的位置進(jìn)行互換,然后,需要繼續(xù)判斷待排名對(duì)象與其之前的第二對(duì)象是否需要交換排名位置,即,獲取位于待排名對(duì)象前面的第二對(duì)象,判斷更新屬性值是否大于第二對(duì)象的第二屬性值,若更新屬性值大于第二對(duì)象的第二屬性值,則交換待排名對(duì)象與第二對(duì)象的位置,以此類推,直至待排名對(duì)象的更新屬性值小于其前面的對(duì)象的屬性值,或者,直至待排名對(duì)象位于排名隊(duì)列的隊(duì)首,此時(shí),對(duì)排名隊(duì)列中各個(gè)對(duì)象的排名位置更新完成,可以獲得最近的排名結(jié)果。
可見,本實(shí)施例提供的排名方法,如果待排名對(duì)象位于排名隊(duì)列中,僅更新待排名對(duì)象與其之前對(duì)象的排名位置關(guān)系,而不必更新待排名對(duì)象與其之后對(duì)象的排名位置關(guān)系,由于并不是更新整個(gè)排名隊(duì)列,因此,提升了排名的更新速度,進(jìn)一步提升了排名的實(shí)時(shí)性。
可選的,本實(shí)施例提供的排名方法,還可以包括:
若待排名對(duì)象位于排名隊(duì)列中,且更新屬性值小于或者等于第一對(duì)象的第一屬性值,則不更新排名隊(duì)列。
可選的,本實(shí)施例提供的排名方法,還可以包括:
若待排名對(duì)象不在排名隊(duì)列中,則獲取位于排名隊(duì)列隊(duì)尾的第三對(duì)象,并判斷更新屬性值是否大于第三對(duì)象的第三屬性值。
若更新屬性值大于第三對(duì)象的第三屬性值,則將待排名對(duì)象插入至第三對(duì)象的位置之前,并繼續(xù)獲取位于待排名對(duì)象前面的第四對(duì)象,針對(duì)第四對(duì)象重復(fù)執(zhí)行上述判斷是否交換位置的操作,直至更新屬性值小于第四對(duì)象的第四屬性值或者直至待排名對(duì)象位于排名隊(duì)列的隊(duì)首。
具體的,如果待排名對(duì)象不在排名隊(duì)列中,說明待排名對(duì)象在本次排名之前沒有進(jìn)行過排名,因此,需要從排名隊(duì)列最后一個(gè)對(duì)象開始判斷待排名對(duì)象是否可以進(jìn)入排名隊(duì)列。如果待排名對(duì)象的更新屬性值大于排名隊(duì)列隊(duì)尾的第三對(duì)象的第三屬性值,則待排名對(duì)象可以進(jìn)入排名隊(duì)列,即,將待排名對(duì)象插入至第三對(duì)象的位置之前,然后,需要繼續(xù)判斷待排名對(duì)象與其之前的第四對(duì)象是否需要交換排名位置,以此類推,直至待排名對(duì)象的更新屬性值小于其前面的對(duì)象的屬性值,或者,直至待排名對(duì)象位于排名隊(duì)列的隊(duì)首,此時(shí),對(duì)排名隊(duì)列中各個(gè)對(duì)象的排名位置更新完成,可以獲得最近的排名結(jié)果。
其中,將待排名對(duì)象插入至第三對(duì)象的位置之前,可以理解,如果排名隊(duì)列已滿,則第三對(duì)象將被替換出排名隊(duì)列,如果排名隊(duì)列未滿,則第三對(duì)象仍然在排名隊(duì)列中,僅是下移一個(gè)排名位置。
可選的,本實(shí)施例提供的排名方法,還可以包括:
若待排名對(duì)象不在排名隊(duì)列中,且更新屬性值小于或者等于第三對(duì)象的第三屬性值,則判斷排名隊(duì)列是否為滿隊(duì)列。
若排名隊(duì)列未滿,則將待排名對(duì)象插入至排名隊(duì)列的隊(duì)尾。
本實(shí)施例提供了一種排名方法,具體提供了更新排名隊(duì)列的實(shí)現(xiàn)方式。本實(shí)施例提供的排名方法,用戶可以實(shí)時(shí)獲取排名,滿足了用戶對(duì)排名的實(shí)時(shí)性要求。
圖3為本發(fā)明實(shí)施例一提供的排名裝置的結(jié)構(gòu)示意圖,本實(shí)施例提供的排名裝置,用以執(zhí)行圖1-圖2所示的任一實(shí)施例提供的排名方法。如圖3所示,本實(shí)施例提供的排名裝置,可以包括:
獲取模塊11,用于獲取待排名對(duì)象的當(dāng)前屬性信息。其中,當(dāng)前屬性信息包括待排名對(duì)象的對(duì)象標(biāo)識(shí)和待排名對(duì)象的當(dāng)前屬性值。
第一更新模塊12,用于根據(jù)對(duì)象標(biāo)識(shí)和當(dāng)前屬性值更新全對(duì)象隊(duì)列中存儲(chǔ)的歷史屬性信息,根據(jù)更新后的歷史屬性信息獲取待排名對(duì)象的更新屬性值。其中,全對(duì)象隊(duì)列位于內(nèi)存中且包括在獲取待排名對(duì)象之前獲取到的所有對(duì)象的歷史屬性信息。
第二更新模塊13,用于根據(jù)對(duì)象標(biāo)識(shí)和更新屬性值更新排名隊(duì)列,獲得排名結(jié)果。其中,排名隊(duì)列位于內(nèi)存中且包括多個(gè)已經(jīng)排名的對(duì)象的屬性信息。
可選的,第二更新模塊13具體用于:
根據(jù)對(duì)象標(biāo)志判斷待排名對(duì)象是否位于排名隊(duì)列中。
若待排名對(duì)象位于排名隊(duì)列中,則獲取位于待排名對(duì)象前面的第一對(duì)象,并判斷更新屬性值是否大于第一對(duì)象的第一屬性值。
若更新屬性值大于第一對(duì)象的第一屬性值,則交換待排名對(duì)象與第一對(duì)象的位置,并繼續(xù)獲取位于待排名對(duì)象前面的第二對(duì)象,針對(duì)第二對(duì)象重復(fù)執(zhí)行上述判斷是否交換位置的操作,直至更新屬性值小于第二對(duì)象的第二屬性值或者直至待排名對(duì)象位于排名隊(duì)列的隊(duì)首。
可選的,第二更新模塊13還用于:
若待排名對(duì)象位于排名隊(duì)列中,且更新屬性值小于或者等于第一對(duì)象的第一屬性值,則不更新排名隊(duì)列。
可選的,第二更新模塊13還用于:
若待排名對(duì)象不在排名隊(duì)列中,則獲取位于排名隊(duì)列隊(duì)尾的第三對(duì)象,并判斷更新屬性值是否大于第三對(duì)象的第三屬性值。
若更新屬性值大于第三對(duì)象的第三屬性值,則將待排名對(duì)象插入至第三對(duì)象的位置之前,并繼續(xù)獲取位于待排名對(duì)象前面的第四對(duì)象,針對(duì)第四對(duì)象重復(fù)執(zhí)行上述判斷是否交換位置的操作,直至更新屬性值小于第四對(duì)象的第四屬性值或者直至待排名對(duì)象位于排名隊(duì)列的隊(duì)首。
可選的,第二更新模塊13還用于:
若待排名對(duì)象不在排名隊(duì)列中,且更新屬性值小于或者等于第三對(duì)象的第三屬性值,則判斷排名隊(duì)列是否為滿隊(duì)列。
若排名隊(duì)列未滿,則將待排名對(duì)象插入至排名隊(duì)列的隊(duì)尾。
可選的,第一更新模塊12具體用于:
根據(jù)對(duì)象標(biāo)志判斷待排名對(duì)象是否位于全對(duì)象隊(duì)列中。
若待排名對(duì)象位于全對(duì)象隊(duì)列中,則獲取全對(duì)象隊(duì)列中待排名對(duì)象的歷史屬性值。根據(jù)預(yù)設(shè)數(shù)據(jù)更新規(guī)則對(duì)當(dāng)前屬性值和歷史屬性值進(jìn)行數(shù)據(jù)處理得到更新后的歷史屬性值。將更新后的歷史屬性值作為更新屬性值。
可選的,第一更新模塊12還用于:
若待排名對(duì)象不在全對(duì)象隊(duì)列中,則將待排名對(duì)象插入至全對(duì)象隊(duì)列的隊(duì)尾。將當(dāng)前屬性值作為待排名對(duì)象的歷史屬性值以及更新屬性值。
本實(shí)施例提供的排名裝置,用于執(zhí)行圖1-圖2所示方法實(shí)施例提供的排名方法,其技術(shù)原理和技術(shù)效果類似,此處不再贅述。
最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照前述各實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。