本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及運(yùn)營數(shù)據(jù)排序處理方法及裝置。
背景技術(shù):
眾所周知,在個人應(yīng)用中,存在著眾多的運(yùn)營排序需求。以應(yīng)用中心為例,需要用到運(yùn)營排序的有搜索、榜單、禮包等?,F(xiàn)有的排序方案中,通常需要首先根據(jù)運(yùn)營數(shù)據(jù)列表對數(shù)據(jù)庫中的數(shù)據(jù)源列表進(jìn)行去重操作,然后將將運(yùn)營數(shù)據(jù)列表中的數(shù)據(jù)按照指定位置插入到去重操作后的列表中。但是由于在去重操作時,需要將數(shù)據(jù)源列表中的每一個數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中的每一個數(shù)據(jù)進(jìn)行遍歷比對,以確定兩者數(shù)據(jù)是否相同。隨著數(shù)據(jù)源列表和運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的數(shù)量增大,使得進(jìn)行遍歷比對的次數(shù)成倍增長,使得排序的時間較長,影響系統(tǒng)的性能。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種運(yùn)營數(shù)據(jù)排序處理方法及裝置,旨在減少遍歷操作的次數(shù),縮短了排序的時間,提升系統(tǒng)的性能。
為實(shí)現(xiàn)上述目的,本發(fā)明提供的一種運(yùn)營數(shù)據(jù)排序處理裝置,運(yùn)營數(shù)據(jù)排序處理裝置包括:
獲取模塊,用于獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
去重模塊,用于根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;
處理模塊,用于根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。
可選地,獲取模塊包括:
建表單元,用于根據(jù)預(yù)設(shè)的哈希函數(shù)遍歷運(yùn)營數(shù)據(jù)列表,以建立運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
獲取單元,用于獲取哈希表。
可選地,處理模塊包括:
計算單元,用于根據(jù)中間列表每一頁對應(yīng)的數(shù)據(jù)個數(shù)和運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置計算運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)位于中間列表的位置信息;
處理單元,用于根據(jù)位置信息將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表,以形成運(yùn)營結(jié)果列表。
可選地,去重模塊包括:
遍歷單元,用于根據(jù)數(shù)據(jù)源列表的頁碼順序遍歷每一頁的數(shù)據(jù);
去重單元,用于根據(jù)哈希表去除數(shù)據(jù)源列表中當(dāng)前遍歷頁的數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表。
可選地,相同的數(shù)據(jù)是指數(shù)據(jù)的ID值相同。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提出一種運(yùn)營數(shù)據(jù)排序處理方法,運(yùn)營數(shù)據(jù)排序處理方法包括以下步驟:
獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;
根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。
可選地,獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表包括:
根據(jù)預(yù)設(shè)的哈希函數(shù)遍歷運(yùn)營數(shù)據(jù)列表,以建立運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
獲取哈希表。
可選地,根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表包括:
根據(jù)中間列表每一頁對應(yīng)的數(shù)據(jù)個數(shù)和運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置計算運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)位于中間列表的位置信息;
根據(jù)位置信息將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表,以形成運(yùn)營結(jié)果列表。
可選地,根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表包括:
根據(jù)數(shù)據(jù)源列表的頁碼順序遍歷每一頁的數(shù)據(jù);
根據(jù)哈希表去除數(shù)據(jù)源列表中當(dāng)前遍歷頁的數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表。
可選地,相同的數(shù)據(jù)是指數(shù)據(jù)的ID值相同。
本發(fā)明實(shí)施例通過獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。由于采用哈希表對數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù)進(jìn)行了判斷,因此可以減小遍歷操作的次數(shù),進(jìn)而縮短了排序的時間,提升了系統(tǒng)的性能。
此外采用上述方案可以實(shí)現(xiàn)對運(yùn)營數(shù)據(jù)排序的統(tǒng)一規(guī)范,從而達(dá)到程序組件化處理,組件化時,需要引入類的繼承。在數(shù)據(jù)源輸出的哈希表值的類中,需要繼承對原始數(shù)據(jù)的ID值及運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的位置獲??;在運(yùn)營排序處理的算法中,只需要送入該基類,即可實(shí)現(xiàn)不同功能模塊及不同項目中的運(yùn)營排序需求。組件化后,極大的減少了對同類需求實(shí)現(xiàn)的開發(fā)成本;并通過對高效算法的繼承,提高了不同應(yīng)用服務(wù)器的整體性能。
附圖說明
圖1為實(shí)現(xiàn)本發(fā)明各個實(shí)施例應(yīng)用的服務(wù)器一個可選的系統(tǒng)結(jié)構(gòu)示意圖;
圖2為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第一實(shí)施例的功能模塊結(jié)構(gòu)示意圖;
圖3為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第二實(shí)施例中去重模塊的細(xì)化功能模塊結(jié)構(gòu)示意圖;
圖4為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第二實(shí)施例中處理模塊的細(xì)化功能模塊結(jié)構(gòu)示意圖;
圖5為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置一實(shí)施例中數(shù)據(jù)源列表的部分示例圖;
圖6為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置一實(shí)施例中對圖4進(jìn)行去重操作之后的示例圖;
圖7為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置一實(shí)施例中對圖5進(jìn)行插入應(yīng)用G之后的示例圖;
圖8為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置一實(shí)施例中對圖5進(jìn)行插入應(yīng)用A之后的示例圖;
圖9為本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置一實(shí)施例的處理流程示例圖;
圖10為本發(fā)明運(yùn)營數(shù)據(jù)排序處理方法第一實(shí)施例的流程示意圖;
圖11為本發(fā)明運(yùn)營數(shù)據(jù)排序處理方法第二實(shí)施例的流程示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
參照圖1,為本發(fā)明一實(shí)施例的服務(wù)器的硬件結(jié)構(gòu)示意圖,該服務(wù)器包括:處理器101、存儲器102、用戶接口103、網(wǎng)絡(luò)接口104及通信總線105。通信總線105用于服務(wù)器中各組成部件之間的通信,用戶接口103用于接收用戶輸入的信息,該用戶接口可以為有線接口及無線接口,例如鍵盤、鼠標(biāo)等。網(wǎng)絡(luò)接口104用于數(shù)據(jù)服務(wù)器與外部進(jìn)行互相通信,該網(wǎng)絡(luò)接口104也可以包括有線接口及無線接口。存儲器102可以包括一個或一個以上計算機(jī)可讀存儲介質(zhì),而且其不但包括內(nèi)部存儲器,還包括外部存儲器。該存儲器中存儲有操作系統(tǒng)及運(yùn)營數(shù)據(jù)排序處理程序等等。處理器101用于調(diào)用存儲器102中的運(yùn)營數(shù)據(jù)排序處理程序,以執(zhí)行以下操作:
獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
根據(jù)所述哈希表去除所述預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與所述運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;
根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將所述運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至所述中間列表中,形成運(yùn)營結(jié)果列表。
進(jìn)一步地,處理器101還用于調(diào)用存儲器102中的運(yùn)營數(shù)據(jù)排序處理程序,以執(zhí)行以下操作:
根據(jù)預(yù)設(shè)的哈希函數(shù)遍歷運(yùn)營數(shù)據(jù)列表,以建立運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
獲取哈希表。
進(jìn)一步地,處理器101還用于調(diào)用存儲器102中的運(yùn)營數(shù)據(jù)排序處理程序,以執(zhí)行以下操作:
根據(jù)中間列表每一頁對應(yīng)的數(shù)據(jù)個數(shù)和運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置計算運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)位于中間列表的位置信息;
根據(jù)位置信息將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表,以形成運(yùn)營結(jié)果列表。
進(jìn)一步地,處理器101還用于調(diào)用存儲器102中的運(yùn)營數(shù)據(jù)排序處理程序,以執(zhí)行以下操作:
根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表包括:
根據(jù)數(shù)據(jù)源列表的頁碼順序遍歷每一頁的數(shù)據(jù);
根據(jù)哈希表去除數(shù)據(jù)源列表中當(dāng)前遍歷頁的數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表。
本發(fā)明實(shí)施例通過獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。由于采用哈希表對數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù)進(jìn)行了判斷,因此可以減小遍歷操作的次數(shù),進(jìn)而縮短了排序的時間,提升了系統(tǒng)的性能。
參照圖2,提出了本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第一實(shí)施例,在本實(shí)施例中,該運(yùn)營數(shù)據(jù)排序處理裝置包括:
獲取模塊10,用于獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
本發(fā)明實(shí)施例提供的運(yùn)營數(shù)據(jù)排序處理裝置,主要應(yīng)用在個人應(yīng)用中,用于根據(jù)運(yùn)營排序需求對數(shù)據(jù)進(jìn)行排序處理。
具體地,上述運(yùn)營是指將一些指定的數(shù)據(jù)(比如,付費(fèi)廣告)插入在指定的位置,或?qū)⒛承?yīng)用特定的放到指定位置等等。上述運(yùn)營數(shù)據(jù)列表包括指定的數(shù)據(jù)和指定的位置等信息。
在不同的運(yùn)營規(guī)則中運(yùn)營數(shù)據(jù)列表也不同。應(yīng)當(dāng)說明的是,當(dāng)運(yùn)營數(shù)據(jù)列表已經(jīng)建立相應(yīng)的哈希表時,可以直接獲取該哈希表即可。優(yōu)選地,在本實(shí)施例中,可以根據(jù)預(yù)設(shè)的哈希函數(shù)遍歷運(yùn)營數(shù)據(jù)列表,以建立運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;然后獲取哈希表。具體地,上述獲取模塊10包括:建表單元,用于根據(jù)預(yù)設(shè)的哈希函數(shù)遍歷運(yùn)營數(shù)據(jù)列表,以建立運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;獲取單元,用于獲取哈希表。如何建立哈希表,在此不做進(jìn)一步地說明。
去重模塊20,用于根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;
本實(shí)施例中,上述數(shù)據(jù)庫的數(shù)據(jù)源列表中的數(shù)據(jù)為原始數(shù)據(jù)。通常的,該數(shù)據(jù)源列表存在分頁,在每一頁數(shù)據(jù)的個數(shù)為固定值。該數(shù)據(jù)源的分頁方式可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,在此不做進(jìn)一步地限定。
應(yīng)當(dāng)說明的是,對于兩者數(shù)據(jù)是否相同的判斷可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,在本實(shí)施例中,可以根據(jù)運(yùn)營數(shù)據(jù)列表和數(shù)據(jù)源列表的鍵值KEY進(jìn)行比較判斷,具體地,在該鍵值KEY為數(shù)據(jù)的ID值。即在本實(shí)施例中,相同的數(shù)據(jù)是指數(shù)據(jù)的ID值相同。
具體地,在本實(shí)施例中,可以采取遍歷的方式,將數(shù)據(jù)源列表中每一個數(shù)據(jù)對應(yīng)的參數(shù)代入到哈希表中進(jìn)行計算一次,即可獲知當(dāng)前計算的參數(shù)對應(yīng)的數(shù)據(jù)源列表中數(shù)據(jù)是否與運(yùn)營數(shù)據(jù)列表中的數(shù)據(jù)重復(fù)。當(dāng)兩者重復(fù)時,則將數(shù)據(jù)源列表中的數(shù)據(jù)刪除。在遍歷完數(shù)據(jù)源列表中所有的數(shù)據(jù)后,將得到去重操作后的中間列表。
例如,在上述數(shù)據(jù)源列表中包括O、P、Q、R和S這5個元素,而在上述運(yùn)營數(shù)據(jù)列表中包含O、L、M和N這4個元素。
在本發(fā)明的一實(shí)施例中,通過建立上述哈希表,在進(jìn)行去重操作的過程中,首先在數(shù)據(jù)源列表遍歷到元素O之后,將元素O代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素O,從而將元素O刪除;接著在數(shù)據(jù)源列表遍歷到元素P之后,將元素P代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素P,從而將元素P保留;接著在數(shù)據(jù)源列表遍歷到元素Q之后,將元素Q代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素Q,從而將元素Q保留;接著在數(shù)據(jù)源列表遍歷到元素R之后,將元素R代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素R,從而將元素R保留;最后在數(shù)據(jù)源列表遍歷到元素S之后,將元素S代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素S,從而將元素S保留。因此在本申請中通過建立哈希表,在去重的操作中,需要執(zhí)行遍歷的次數(shù)為據(jù)源列表中元素個數(shù)。相對于現(xiàn)有技術(shù),可以在去重操作減少執(zhí)行遍歷的次數(shù),從而縮短執(zhí)行的時間,提高系統(tǒng)的性能。
處理模塊30,用于根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。
上述目標(biāo)位置為上述指定位置。以應(yīng)用排序?yàn)槔?,例如?yīng)用A指定的排序位置為第1位,應(yīng)用B指定的位置為第12位??梢岳斫獾氖牵诒緦?shí)施例中,該目標(biāo)位置為相應(yīng)的應(yīng)用在結(jié)果列表中總體排列順序。
可以理解的是,上述中間列表數(shù)據(jù)的排列方式可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,通常地,上述中間列表的數(shù)據(jù)格式與上述數(shù)據(jù)源列表一致,只是在數(shù)據(jù)源列表的基礎(chǔ)上刪除了部分重復(fù)的數(shù)據(jù)。在本實(shí)施例中,通常地,上述數(shù)據(jù)源列表為分頁形式結(jié)構(gòu),在每一頁上對應(yīng)有一定數(shù)量的數(shù)據(jù),例如,每一頁上對應(yīng)有10行數(shù)據(jù),每一行數(shù)據(jù)對應(yīng)為一元素(元素O、元素P、元素Q、元素R或元素S)的信息。例如每一頁的數(shù)量可以相同也可以不同,優(yōu)選地,每一數(shù)據(jù)的數(shù)量為10個,也就是說每一頁對應(yīng)有10行數(shù)據(jù)。本實(shí)施例中,上述應(yīng)用A對應(yīng)的位置為第一頁第一行,上述應(yīng)用B對應(yīng)的位置為第二頁第二行。
本發(fā)明實(shí)施例通過獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。由于采用哈希表對數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù)進(jìn)行了判斷,因此可以減小遍歷操作的次數(shù),進(jìn)而縮短了排序的時間,提升了系統(tǒng)的性能。
此外采用上述方案可以實(shí)現(xiàn)對運(yùn)營數(shù)據(jù)排序的統(tǒng)一規(guī)范,從而達(dá)到程序組件化處理,組件化時,需要引入類的繼承。在數(shù)據(jù)源輸出的哈希表值的類中,需要繼承對原始數(shù)據(jù)的ID值及運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的位置獲?。辉谶\(yùn)營排序處理的算法中,只需要送入該基類,即可實(shí)現(xiàn)不同功能模塊及不同項目中的運(yùn)營排序需求。組件化后,極大的減少了對同類需求實(shí)現(xiàn)的開發(fā)成本;并通過對高效算法的繼承,提高了不同應(yīng)用服務(wù)器的整體性能。
進(jìn)一步地,參照圖3和圖4,提出了本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第二實(shí)施例,本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第二實(shí)施例與本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第一實(shí)施例的區(qū)別在于,本實(shí)施例中,上述數(shù)據(jù)源列表中的數(shù)據(jù)為分頁設(shè)置的,在進(jìn)行遍歷時,可以進(jìn)行分頁遍歷,同時在計算插入位置時,需要根據(jù)每一頁對應(yīng)的數(shù)據(jù)個數(shù)進(jìn)行確定。具體地,在本發(fā)明運(yùn)營數(shù)據(jù)排序處理裝置第二實(shí)施例中,上述去重模塊20包括:
遍歷單元21,用于根據(jù)數(shù)據(jù)源列表的頁碼順序遍歷每一頁的數(shù)據(jù);
去重單元22,用于根據(jù)哈希表去除數(shù)據(jù)源列表中當(dāng)前遍歷頁的數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表。
上述處理模塊30包括:
計算單元31,用于根據(jù)中間列表每一頁對應(yīng)的數(shù)據(jù)個數(shù)和運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置計算運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)位于中間列表的位置信息;
處理單元32,用于根據(jù)位置信息將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表,以形成運(yùn)營結(jié)果列表。
可以理解的是,在本實(shí)施例中,對于數(shù)據(jù)源列表的遍歷去重操作可以按照整張列表進(jìn)行遍歷去重操作,也可以分頁進(jìn)行遍歷去重操作。
同樣地,可以根據(jù)每一頁數(shù)據(jù)的數(shù)量確定運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的具體位置信息,該位置信息包括該數(shù)據(jù)所屬的頁碼以及對應(yīng)的排列位置??梢岳斫獾氖?,可以在遍歷完所有頁數(shù)據(jù)后,在進(jìn)行數(shù)據(jù)插入,也可以在遍歷完一頁數(shù)據(jù)后,對當(dāng)前頁是否存在需要插入的運(yùn)營數(shù)據(jù)列表的數(shù)據(jù)進(jìn)行分析判斷,當(dāng)存在,則可以直接將相應(yīng)的數(shù)據(jù)插入到去重操作后的中間列表中,并繼續(xù)遍歷下一頁數(shù)據(jù);也可以在遍歷完所有頁的數(shù)據(jù)后,再插入運(yùn)營數(shù)據(jù)列表中的數(shù)據(jù)。以下將以一具體實(shí)例進(jìn)行詳細(xì)說明:
例如,分頁策略為每頁的數(shù)據(jù)個數(shù)為5,我們在某個頁面獲取第二頁的數(shù)據(jù)為應(yīng)用E、應(yīng)用F、應(yīng)用G、應(yīng)用H和應(yīng)用I(如圖5所示)。而運(yùn)營的需求是,應(yīng)用A排在第7個,應(yīng)用G排在第6個。此時,則根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的目標(biāo)位置排列順序獲取到應(yīng)用G排在第6個,應(yīng)用A排在第7個。此時,可以根據(jù)每頁的數(shù)據(jù)個數(shù)為5分析得到應(yīng)用G對應(yīng)的位置信息為第二頁第1個,應(yīng)用A對應(yīng)的位置信息為第二頁第二個。
在去重操作后,得到中間列表的第二頁為應(yīng)用E、應(yīng)用F、應(yīng)用H和應(yīng)用I(如圖6所示),其中應(yīng)用G為重復(fù)部分。
此時將運(yùn)營數(shù)據(jù)列表中的應(yīng)用G插入到中間列表后,可以得到以下順序應(yīng)用G、應(yīng)用E、應(yīng)用F、應(yīng)用H和應(yīng)用I(如圖7所示);然后再將運(yùn)營數(shù)據(jù)列表中的應(yīng)用A插入到中間列表后,可以得到以下順序應(yīng)用A、應(yīng)用G、應(yīng)用E、應(yīng)用F、應(yīng)用H和應(yīng)用I(如圖8所示)??梢岳斫獾氖?,為了不改變之前頁面中數(shù)據(jù)的數(shù)量,可以將應(yīng)用I放置第三頁進(jìn)行顯示。
在本發(fā)明實(shí)施例中,若上述運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的數(shù)量為N,數(shù)據(jù)源列表中的數(shù)據(jù)的數(shù)量為M。若采用現(xiàn)有的單獨(dú)比對的方式進(jìn)行去重操作,則需要將數(shù)據(jù)源列表中的每一個數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中的每一個數(shù)據(jù)進(jìn)行比對,從而確定是否重復(fù),因此在去重操作中遍歷的次數(shù)為M*N次;然而在本申請中利用哈希表進(jìn)行去重操作比對時,只需要將數(shù)據(jù)源列表中的每一個數(shù)據(jù)與哈希表比對一次即可得到數(shù)據(jù)源列表中當(dāng)前比對的數(shù)據(jù)是否與運(yùn)營數(shù)據(jù)列表中的數(shù)據(jù)重復(fù),若重復(fù),則刪除該數(shù)據(jù),若不重復(fù),則保留該數(shù)據(jù),因此去重操作遍歷的次數(shù)為M。即在本實(shí)施例中,可以減小去重操作中數(shù)據(jù)比對的次數(shù),因此提升了系統(tǒng)的性能。
如圖9所示,以下將以采用分頁形式的列表進(jìn)行排序的過程進(jìn)行詳細(xì)說明,在本實(shí)施例中,首先可以按照運(yùn)營數(shù)據(jù)列表中各數(shù)據(jù)指定的位置升序獲取全部的運(yùn)營數(shù)據(jù);然后將根據(jù)獲取的運(yùn)營數(shù)據(jù)建立哈希表,并對當(dāng)前頁的數(shù)據(jù)中進(jìn)行遍歷,以去除當(dāng)前頁的數(shù)據(jù)與運(yùn)營數(shù)據(jù)中重復(fù)的數(shù)據(jù);接著按照獲取運(yùn)營數(shù)據(jù)的順序逐一遍歷運(yùn)營數(shù)據(jù)列表的數(shù)據(jù),根據(jù)當(dāng)前遍歷的運(yùn)營數(shù)據(jù)列表的數(shù)據(jù)指定的位置和單頁最大數(shù)據(jù)的個數(shù)計算運(yùn)營數(shù)據(jù)列表的數(shù)據(jù)的頁位置,將運(yùn)營數(shù)據(jù)列表的數(shù)據(jù)插入到對應(yīng)頁的數(shù)據(jù)中,判斷遍歷操作是否完成,若是,則結(jié)束,若否,則遍歷下一運(yùn)營數(shù)據(jù)。
參照圖10,提出了本發(fā)明運(yùn)營數(shù)據(jù)排序處理方法第一實(shí)施例,在本實(shí)施例中,該運(yùn)營數(shù)據(jù)排序處理方法包括:
步驟S10,獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
本發(fā)明實(shí)施例提供的運(yùn)營數(shù)據(jù)排序處理方法,主要應(yīng)用在個人應(yīng)用中,用于根據(jù)運(yùn)營排序需求對數(shù)據(jù)進(jìn)行排序處理。
具體地,上述運(yùn)營是指將一些指定的數(shù)據(jù)(比如,付費(fèi)廣告)插入在指定的位置,或?qū)⒛承?yīng)用特定的放到指定位置等等。上述運(yùn)營數(shù)據(jù)列表包括指定的數(shù)據(jù)和指定的位置等信息。
在不同的運(yùn)營規(guī)則中運(yùn)營數(shù)據(jù)列表也不同。應(yīng)當(dāng)說明的是,當(dāng)運(yùn)營數(shù)據(jù)列表已經(jīng)建立相應(yīng)的哈希表時,可以直接獲取該哈希表即可。優(yōu)選地,在本實(shí)施例中,可以根據(jù)預(yù)設(shè)的哈希函數(shù)遍歷運(yùn)營數(shù)據(jù)列表,以建立運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;然后獲取哈希表。如何建立哈希表,在此不做進(jìn)一步地說明。
步驟S20,根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;
本實(shí)施例中,上述數(shù)據(jù)庫的數(shù)據(jù)源列表中的數(shù)據(jù)為原始數(shù)據(jù)。通常的,該數(shù)據(jù)源列表存在分頁,在每一頁數(shù)據(jù)的個數(shù)為固定值。該數(shù)據(jù)源的分頁方式可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,在此不做進(jìn)一步地限定。
應(yīng)當(dāng)說明的是,對于兩者數(shù)據(jù)是否相同的判斷可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,在本實(shí)施例中,可以根據(jù)運(yùn)營數(shù)據(jù)列表和數(shù)據(jù)源列表的鍵值KEY進(jìn)行比較判斷,具體地,在該鍵值KEY為數(shù)據(jù)的ID值。即在本實(shí)施例中,相同的數(shù)據(jù)是指數(shù)據(jù)的ID值相同。
具體地,在本實(shí)施例中,可以采取遍歷的方式,將數(shù)據(jù)源列表中每一個數(shù)據(jù)對應(yīng)的參數(shù)代入到哈希表中進(jìn)行計算一次,即可獲知當(dāng)前計算的參數(shù)對應(yīng)的數(shù)據(jù)源列表中數(shù)據(jù)是否與運(yùn)營數(shù)據(jù)列表中的數(shù)據(jù)重復(fù)。當(dāng)兩者重復(fù)時,則將數(shù)據(jù)源列表中的數(shù)據(jù)刪除。在遍歷完數(shù)據(jù)源列表中所有的數(shù)據(jù)后,將得到去重操作后的中間列表。
例如,在上述數(shù)據(jù)源列表中包括O、P、Q、R和S這5個元素,而在上述運(yùn)營數(shù)據(jù)列表中包含O、L、M和N這4個元素。
在本發(fā)明的一實(shí)施例中,通過建立上述哈希表,在進(jìn)行去重操作的過程中,首先在數(shù)據(jù)源列表遍歷到元素O之后,將元素O代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素O,從而將元素O刪除;接著在數(shù)據(jù)源列表遍歷到元素P之后,將元素P代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素P,從而將元素P保留;接著在數(shù)據(jù)源列表遍歷到元素Q之后,將元素Q代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素Q,從而將元素Q保留;接著在數(shù)據(jù)源列表遍歷到元素R之后,將元素R代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素R,從而將元素R保留;最后在數(shù)據(jù)源列表遍歷到元素S之后,將元素S代入到哈希表中進(jìn)行計算即可得到運(yùn)營數(shù)據(jù)列表存在元素S,從而將元素S保留。因此在本申請中通過建立哈希表,在去重的操作中,需要執(zhí)行遍歷的次數(shù)為據(jù)源列表中元素個數(shù)。相對于現(xiàn)有技術(shù),可以在去重操作減少執(zhí)行遍歷的次數(shù),從而縮短執(zhí)行的時間,提高系統(tǒng)的性能。
步驟S30,根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。
上述目標(biāo)位置為上述指定位置。以應(yīng)用排序?yàn)槔鐟?yīng)用A指定的排序位置為第1位,應(yīng)用B指定的位置為第12位??梢岳斫獾氖?,在本實(shí)施例中,該目標(biāo)位置為相應(yīng)的應(yīng)用在結(jié)果列表中總體排列順序。
可以理解的是,上述中間列表數(shù)據(jù)的排列方式可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,通常地,上述中間列表的數(shù)據(jù)格式與上述數(shù)據(jù)源列表一致,只是在數(shù)據(jù)源列表的基礎(chǔ)上刪除了部分重復(fù)的數(shù)據(jù)。在本實(shí)施例中,通常地,上述數(shù)據(jù)源列表為分頁形式結(jié)構(gòu),在每一頁上對應(yīng)有一定數(shù)量的數(shù)據(jù),例如,每一頁上對應(yīng)有10行數(shù)據(jù),每一行數(shù)據(jù)對應(yīng)為一元素(元素O、元素P、元素Q、元素R或元素S)的信息。例如每一頁的數(shù)量可以相同也可以不同,優(yōu)選地,每一數(shù)據(jù)的數(shù)量為10個,也就是說每一頁對應(yīng)有10行數(shù)據(jù)。本實(shí)施例中,上述應(yīng)用A對應(yīng)的位置為第一頁第一行,上述應(yīng)用B對應(yīng)的位置為第二頁第二行。
本發(fā)明實(shí)施例通過獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;根據(jù)哈希表去除預(yù)置數(shù)據(jù)庫的數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置,將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表中,形成運(yùn)營結(jié)果列表。由于采用哈希表對數(shù)據(jù)源列表與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù)進(jìn)行了判斷,因此可以減小遍歷操作的次數(shù),進(jìn)而縮短了排序的時間,提升了系統(tǒng)的性能。
此外采用上述方案可以實(shí)現(xiàn)對運(yùn)營數(shù)據(jù)排序的統(tǒng)一規(guī)范,從而達(dá)到程序組件化處理,組件化時,需要引入類的繼承。在數(shù)據(jù)源輸出的哈希表值的類中,需要繼承對原始數(shù)據(jù)的ID值及運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的位置獲??;在運(yùn)營排序處理的算法中,只需要送入該基類,即可實(shí)現(xiàn)不同功能模塊及不同項目中的運(yùn)營排序需求。組件化后,極大的減少了對同類需求實(shí)現(xiàn)的開發(fā)成本;并通過對高效算法的繼承,提高了不同應(yīng)用服務(wù)器的整體性能。
進(jìn)一步地,參照圖11,提出了本發(fā)明運(yùn)營數(shù)據(jù)排序處理方法第二實(shí)施例,本發(fā)明運(yùn)營數(shù)據(jù)排序處理方法第二實(shí)施例與本發(fā)明運(yùn)營數(shù)據(jù)排序處理方法第一實(shí)施例的區(qū)別在于,本實(shí)施例中,上述數(shù)據(jù)源列表中的數(shù)據(jù)為分頁設(shè)置的,在進(jìn)行遍歷時,可以進(jìn)行分頁遍歷,同時在計算插入位置時,需要根據(jù)每一頁對應(yīng)的數(shù)據(jù)個數(shù)進(jìn)行確定。具體地,在本發(fā)明運(yùn)營數(shù)據(jù)排序處理方法第二實(shí)施例中,該運(yùn)營數(shù)據(jù)排序處理方包括:
步驟S10,獲取預(yù)設(shè)的運(yùn)營數(shù)據(jù)列表對應(yīng)的哈希表;
步驟S21,根據(jù)數(shù)據(jù)源列表的頁碼順序遍歷每一頁的數(shù)據(jù);
步驟S22,根據(jù)哈希表去除數(shù)據(jù)源列表中當(dāng)前遍歷頁的數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中相同的數(shù)據(jù),以生成中間列表;
步驟S31,根據(jù)中間列表每一頁對應(yīng)的數(shù)據(jù)個數(shù)和運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的預(yù)設(shè)的目標(biāo)位置計算運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)位于中間列表的位置信息;
步驟S32,根據(jù)位置信息將運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)插入至中間列表,以形成運(yùn)營結(jié)果列表。
可以理解的是,在本實(shí)施例中,對于數(shù)據(jù)源列表的遍歷去重操作可以按照整張列表進(jìn)行遍歷去重操作,也可以分頁進(jìn)行遍歷去重操作。
同樣地,可以根據(jù)每一頁數(shù)據(jù)的數(shù)量確定運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的具體位置信息,該位置信息包括該數(shù)據(jù)所屬的頁碼以及對應(yīng)的排列位置??梢岳斫獾氖牵梢栽诒闅v完所有頁數(shù)據(jù)后,在進(jìn)行數(shù)據(jù)插入,也可以在遍歷完一頁數(shù)據(jù)后,對當(dāng)前頁是否存在需要插入的運(yùn)營數(shù)據(jù)列表的數(shù)據(jù)進(jìn)行分析判斷,當(dāng)存在,則可以直接將相應(yīng)的數(shù)據(jù)插入到去重操作后的中間列表中,并繼續(xù)遍歷下一頁數(shù)據(jù);也可以在遍歷完所有頁的數(shù)據(jù)后,再插入運(yùn)營數(shù)據(jù)列表中的數(shù)據(jù)。以下將以一具體實(shí)例進(jìn)行詳細(xì)說明:
例如,分頁策略為每頁的數(shù)據(jù)個數(shù)為5,我們在某個頁面獲取第二頁的數(shù)據(jù)為應(yīng)用E、應(yīng)用F、應(yīng)用G、應(yīng)用H和應(yīng)用I(如圖5所示)。而運(yùn)營的需求是,應(yīng)用A排在第7個,應(yīng)用G排在第6個。此時,則根據(jù)運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的目標(biāo)位置排列順序獲取到應(yīng)用G排在第6個,應(yīng)用A排在第7個。此時,可以根據(jù)每頁的數(shù)據(jù)個數(shù)為5分析得到應(yīng)用G對應(yīng)的位置信息為第二頁第1個,應(yīng)用A對應(yīng)的位置信息為第二頁第二個。
在去重操作后,得到中間列表的第二頁為應(yīng)用E、應(yīng)用F、應(yīng)用H和應(yīng)用I(如圖6所示),其中應(yīng)用G為重復(fù)部分。
此時將運(yùn)營數(shù)據(jù)列表中的應(yīng)用G插入到中間列表后,可以得到以下順序應(yīng)用G、應(yīng)用E、應(yīng)用F、應(yīng)用H和應(yīng)用I(如圖7所示);然后再將運(yùn)營數(shù)據(jù)列表中的應(yīng)用A插入到中間列表后,可以得到以下順序應(yīng)用A、應(yīng)用G、應(yīng)用E、應(yīng)用F、應(yīng)用H和應(yīng)用I(如圖8所示)??梢岳斫獾氖?,為了不改變之前頁面中數(shù)據(jù)的數(shù)量,可以將應(yīng)用I放置第三頁進(jìn)行顯示。
在本發(fā)明實(shí)施例中,若上述運(yùn)營數(shù)據(jù)列表中數(shù)據(jù)的數(shù)量為N,數(shù)據(jù)源列表中的數(shù)據(jù)的數(shù)量為M。若采用現(xiàn)有的單獨(dú)比對的方式進(jìn)行去重操作,則需要將數(shù)據(jù)源列表中的每一個數(shù)據(jù)與運(yùn)營數(shù)據(jù)列表中的每一個數(shù)據(jù)進(jìn)行比對,從而確定是否重復(fù),因此在去重操作中遍歷的次數(shù)為M*N次;然而,在本申請中利用哈希表進(jìn)行去重操作比對時,只需要將數(shù)據(jù)源列表中的每一個數(shù)據(jù)與哈希表比對一次即可得到數(shù)據(jù)源列表中當(dāng)前比對的數(shù)據(jù)是否與運(yùn)營數(shù)據(jù)列表中的數(shù)據(jù)重復(fù),若重復(fù),則刪除該數(shù)據(jù),若不重復(fù),則保留該數(shù)據(jù),因此去重操作遍歷的次數(shù)為M。即在本實(shí)施例中,可以減小去重操作中數(shù)據(jù)比對的次數(shù),因此提升了系統(tǒng)的性能。
需要說明的是,在本文中,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
出于解釋的目的,前面的描述使用了特定的術(shù)語,以提供對本發(fā)明的透徹理解。然而,對本領(lǐng)域的技術(shù)人員來說顯而易見的是,為了實(shí)踐本發(fā)明并不需要具體的細(xì)節(jié)。本發(fā)明的具體實(shí)施例的前述描述是為了圖示和說明的目的而呈現(xiàn)。它們并不意在詳盡的或?qū)⒈景l(fā)明限于所公開的準(zhǔn)確形式。鑒于上面的教義,許多修改和變化是可能的。為了最好地解釋本發(fā)明的原理及其實(shí)際應(yīng)用而示出并描述了這些實(shí)施例,從而使本領(lǐng)域的其他技術(shù)人員能夠最好地利用本發(fā)明和具有適于預(yù)期的特定使用的各種修改的各種實(shí)施例。意在本發(fā)明的范圍由隨后的權(quán)利要求和其等同物來限定。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍內(nèi)。