欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)處理方法及數(shù)據(jù)處理裝置與流程

文檔序號:11677705閱讀:230來源:國知局
數(shù)據(jù)處理方法及數(shù)據(jù)處理裝置與流程

本發(fā)明涉及計算機技術(shù)領域,特別涉及一種數(shù)據(jù)處理方法及數(shù)據(jù)處理裝置。



背景技術(shù):

推薦引擎,是主動發(fā)現(xiàn)用戶當前或潛在需求,并主動推薦信息給用戶的信息網(wǎng)絡技術(shù)。具體來說,推薦引擎綜合利用用戶的行為、屬性,對象的屬性、內(nèi)容、分類,以及用戶之間的社交關(guān)系等等,挖掘用戶的喜好和需求,主動向用戶推薦其感興趣或者需要的對象。

在推薦引擎應用中,不期望將曾經(jīng)推薦給用戶的信息再次推薦給用戶。每次推薦信息給用戶的時候,需要對推薦的信息進行記錄。在下一次推薦列表生成的時候,需要過濾掉近一段時間內(nèi)推薦過的信息。這就需要在每次推薦信息之前,需要將本次推薦的信息更新到推薦記錄中。比如,本次推薦10條文檔,則需要將該10條文檔的文檔id寫入到記錄中。在生成推薦列表時,需要讀出所有的推薦記錄,如果已有5000條推薦記錄,則需要將5000條推薦記錄全部讀取,然后將推薦列表中的文檔id與推薦記錄中的文檔id進行比較并去除已經(jīng)推薦過的文檔。

目前的數(shù)據(jù)庫系統(tǒng)均不能很好的支持這種需求。例如,leveldb的值是一個整體,不支持更新值的一部分。redis的鏈表結(jié)構(gòu),雖然支持更新鏈表的一部分,但鏈表更新代價很大,還需要定期刪除老的記錄,操作極不方便。



技術(shù)實現(xiàn)要素:

有鑒于此,本申請?zhí)峁┮环N數(shù)據(jù)處理方法及數(shù)據(jù)處理裝置,以實現(xiàn)方便快捷地對推薦記錄進行更新。

一方面,本申請?zhí)峁┮环N數(shù)據(jù)處理方法,包括:在存儲介質(zhì)中開辟索引區(qū)和數(shù)據(jù)區(qū),所述索引區(qū)包括一一對應的鍵(key)字段和值(value)字段,所述數(shù)據(jù)區(qū)中包括多個數(shù)據(jù)文件,每個數(shù)據(jù)文件中包含多個大小相同的數(shù)據(jù)單元;在所述數(shù)據(jù)區(qū)的一個數(shù)據(jù)文件的一個數(shù)據(jù)單元中寫入一個用戶的推薦記錄,所述推薦記錄包括指針和至少一條推薦內(nèi)容標識,其中,所述指針用于保存下一條推薦內(nèi)容標識的寫入地址;在所述key字段寫入所述用戶的用戶id,在所述value字段寫入所述推薦記錄所在的數(shù)據(jù)文件的編號以及所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址。

可選地,所述方法還包括:在所述數(shù)據(jù)文件中寫入該數(shù)據(jù)文件包含的數(shù)據(jù)單元個數(shù)u,每個推薦記錄包含的推薦內(nèi)容標識的條數(shù)上限v以及該數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記,其中u和v均為大于2的整數(shù)。

可選地,所述u=2m,v=2n,m和n均是大于1的整數(shù)。

可選地,所述方法還包括:獲取待讀取的推薦記錄所在的數(shù)據(jù)文件的編號;獲取待讀取的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址;讀取所述推薦記錄的指針;判斷所述指針保存的地址是否大于所述推薦內(nèi)容標識的條數(shù)上限v,如果大于,則返回所述數(shù)據(jù)文件中該用戶的所有推薦記錄;否則,返回所述數(shù)據(jù)文件中該推薦記錄單元從起始區(qū)域至指針保存的地址之前的所有推薦內(nèi)容標識。

可選地,所述方法還包括:獲取待寫入的推薦內(nèi)容標識對應的推薦記錄所在的數(shù)據(jù)文件的編號;獲取待寫入的推薦內(nèi)容標識對應的推薦記錄在其所在的數(shù)據(jù)文件中的偏移地址;讀取所述推薦記錄的指針;用該指針保存的地址與推薦記錄所包含的推薦內(nèi)容標識的條數(shù)上限v取余得到待寫入推薦內(nèi)容標識的寫入地址;從所述寫入地址開始逐條寫入待寫入的推薦內(nèi)容標識。

可選地,所述方法還包括:遍歷所述數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記找到一個可用的數(shù)據(jù)單元;將該數(shù)據(jù)單元的使用標記修改為被使用狀態(tài);將該數(shù)據(jù)單元的指針置零并初始化所述數(shù)據(jù)單元;以所述數(shù)據(jù)單元所在的數(shù)據(jù)文件的編號以及所述數(shù)據(jù)單元在所述數(shù)據(jù)文件內(nèi)的偏移為value字段的值,以新增用戶的用戶id為key字段的值,將所述新增用戶信息插入索引區(qū)。

可選地,所述方法還包括:根據(jù)待刪除用戶的用戶id在索引區(qū)確定待刪除的推薦記錄對應的數(shù)據(jù)文件編號和所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址;根據(jù)所述數(shù)據(jù)文件編號加載對應的數(shù)據(jù)文件,根據(jù)所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址確定所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記;將所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記修改為未使用狀態(tài)。

可選地,在所述方法中,將對一個數(shù)據(jù)單元的操作分配到同一個線程中依次執(zhí)行。

可選地,在所述方法中,將對一個數(shù)據(jù)文件的操作分配到同一個線程中依次執(zhí)行。

另一方面,本申請還提供一種數(shù)據(jù)處理裝置,包括:創(chuàng)建模塊,用于在存儲介質(zhì)中開辟索引區(qū)和數(shù)據(jù)區(qū),所述索引區(qū)包括一一對應的鍵(key)字段和值(value)字段,所述數(shù)據(jù)區(qū)中包括多個數(shù)據(jù)文件,每個數(shù)據(jù)文件中包含多個大小相同的數(shù)據(jù)單元;第一寫入模塊,用于在所述數(shù)據(jù)區(qū)的一個數(shù)據(jù)文件的一個數(shù)據(jù)單元中寫入一個用戶的推薦記錄,所述推薦記錄包括指針和至少一條推薦內(nèi)容標識,其中,所述指針用于保存下一條推薦內(nèi)容標識的寫入地址;第二寫入模塊,用于在所述key字段寫入所述用戶的用戶id,在所述value字段寫入所述推薦記錄所在的數(shù)據(jù)文件的編號以及所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址。

可選地,所述裝置還包括:第三寫入模塊,用于在所述數(shù)據(jù)文件中寫入該數(shù)據(jù)文件包含的數(shù)據(jù)單元個數(shù)u,每個推薦記錄包含的推薦內(nèi)容標識的條數(shù)上限v以及該數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記,其中u和v均為大于2的整數(shù)。

可選地,所述u=2m,v=2n,其中m和n均是大于1的整數(shù)。

可選地,所述裝置還包括:第一獲取模塊,用于獲取待讀取的推薦記錄所在的數(shù)據(jù)文件的編號;第二獲取模塊,用于獲取待讀取的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址;第一讀取模塊,用于讀取所述推薦記錄的指針;第一判斷模塊,用于判斷所述指針保存的地址是否大于所述推薦內(nèi)容標識的條數(shù)上限v;第一反饋模塊,用于在所述指針保存的地址大于所述推薦內(nèi)容標識的條數(shù)上限v時,返回所述數(shù)據(jù)文件中該用戶的所有推薦內(nèi)容標識;第二反饋模塊,用于在所述指針保存的地址不大于所述推薦內(nèi)容標識的條數(shù)上限v時,返回所述數(shù)據(jù)文件中該推薦記錄單元從起始區(qū)域至指針保存的地址之前的所有推薦內(nèi)容標識。

可選地,所述裝置還包括:第三獲取模塊,用于獲取待寫入的推薦內(nèi)容標識對應的推薦記錄所在的數(shù)據(jù)文件的編號;第四獲取模塊,用于獲取待寫入的推薦內(nèi)容標識對應的推薦記錄在其所在的數(shù)據(jù)文件中的偏移地址;第二讀取模塊,用于讀取所述推薦記錄的指針;第一計算模塊,用于用該指針保存的地址與推薦記錄所包含的推薦內(nèi)容標識的條數(shù)上限v取余得到待寫入推薦內(nèi)容標識的寫入地址;第三寫入模塊,用于從所述寫入地址開始逐條寫入待寫入的推薦內(nèi)容標識。

可選地,所述裝置還包括:第一查找模塊,用于遍歷所述數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記找到一個可用的數(shù)據(jù)單元;第一更改模塊,用于將該數(shù)據(jù)單元的使用標記修改為被使用狀態(tài);初始化模塊,用于將該數(shù)據(jù)單元的指針置零并初始化所述數(shù)據(jù)單元;插入模塊,用于以所述數(shù)據(jù)單元所在的數(shù)據(jù)文件的編號以及所述數(shù)據(jù)單元在所述數(shù)據(jù)文件內(nèi)的偏移為value字段的值,以新增用戶的用戶id為key字段的值,將所述新增用戶信息插入索引區(qū)。

可選地,所述裝置還包括:第二查找模塊,用于根據(jù)待刪除用戶的用戶id在索引區(qū)確定待刪除的推薦記錄對應的數(shù)據(jù)文件編號和所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址;第三查找模塊,用于根據(jù)所述數(shù)據(jù)文件編號加載對應的數(shù)據(jù)文件,根據(jù)所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址確定所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記;第二更改模塊,用于將所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記修改為未使用狀態(tài)。

可選地,在所述裝置中,將對一個數(shù)據(jù)單元的操作分配到同一個線程中依次執(zhí)行。

可選地,在所述裝置中,將對一個數(shù)據(jù)文件的操作分配到同一個線程中依次執(zhí)行。

本申請實施例提供的數(shù)據(jù)處理方法及數(shù)據(jù)處理裝置,提前分配數(shù)據(jù)存儲空間,提升了系統(tǒng)效率。此外,本申請?zhí)峁┑募夹g(shù)方案在更新推薦記錄時,利用指針保存的地址與用戶推薦記錄大小取余獲取新的推薦記錄的寫入地址,在寫入新推薦記錄的同時覆蓋掉過期的推薦記錄,簡化了操作;其次,本申請的技術(shù)方案可以將對同一個用戶的操作都分配到同一個線程中依次執(zhí)行,也可以將位于同一個數(shù)據(jù)文件中的多個用戶的操作都分配到同一個線程中依次執(zhí)行,避免對同一個數(shù)據(jù)單元或者同一個數(shù)據(jù)文件的多線程間的同步操作,省去了多線程同步的開銷,極大地簡化了數(shù)據(jù)處理的過程。

附圖說明

圖1為本申請一實施例提供的一種數(shù)據(jù)處理方法的流程圖;

圖2為本申請一實施例提供的一種數(shù)據(jù)處理方法的索引區(qū)中的示意圖;

圖3為本申請一實施例提供的一種數(shù)據(jù)處理方法中的數(shù)據(jù)文件的結(jié)構(gòu)示意圖;

圖4為本申請一實施例提供的一種數(shù)據(jù)處理方法的部分流程圖;

圖5為本申請一實施例提供的一種數(shù)據(jù)處理方法的部分流程圖;

圖6為本申請一實施例提供的一種數(shù)據(jù)處理方法的部分流程圖;

圖7為本申請一實施例提供的一種數(shù)據(jù)處理方法的部分流程圖;

圖8為本申請一實施例提供的一種數(shù)據(jù)處理方法中單一線程處理示意圖;

圖9為本申請一實施例提供的一種數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖;

圖10為本申請一實施例提供的一種數(shù)據(jù)處理裝置的部分結(jié)構(gòu)示意圖;

圖11為本申請一實施例提供的一種數(shù)據(jù)處理裝置的部分結(jié)構(gòu)示意圖;

圖12為本申請一實施例提供的一種數(shù)據(jù)處理裝置的部分結(jié)構(gòu)示意圖;

圖13為本申請一實施例提供的一種數(shù)據(jù)處理裝置的部分結(jié)構(gòu)示意圖;

圖14為本申請一實施例提供的一種電子設備的結(jié)構(gòu)示意圖。

具體實施方式

發(fā)明人通過研究發(fā)現(xiàn),在推薦引擎應用中,通常情況下,只需記錄最近推薦給用戶的一定數(shù)量的推薦內(nèi)容標識即可。比如,記錄最近推薦的5000篇文檔。超過5000篇之后,可以將最先推薦的歷史文檔的推薦記錄抹去,這樣也不影響用戶體驗。基于這樣的構(gòu)思,本申請?zhí)峁┮环N數(shù)據(jù)處理方法及一種數(shù)據(jù)處理裝置。

參見圖1,本申請一實施例提供一種數(shù)據(jù)處理方法,包括:步驟101至103。

步驟101:在存儲介質(zhì)中開辟索引區(qū)和數(shù)據(jù)區(qū),所述索引區(qū)包括一一對應的鍵(key)字段和值(value)字段,所述數(shù)據(jù)區(qū)中包括多個數(shù)據(jù)文件,每個數(shù)據(jù)文件中包含多個大小相同的數(shù)據(jù)單元。

步驟102:在所述數(shù)據(jù)區(qū)的一個數(shù)據(jù)文件的一個數(shù)據(jù)單元中寫入一個用戶的推薦記錄,所述推薦記錄包括指針和至少一條推薦內(nèi)容標識,其中,所述指針用于保存下一條推薦內(nèi)容標識的寫入地址。

本申請實施例中,每個數(shù)據(jù)單元中寫入一個用戶的推薦記錄,每個推薦記錄中可以記錄相同數(shù)量的推薦內(nèi)容標識,例如可以記錄5000條或者8000條,本申請對此不作限定。每個推薦內(nèi)容對應一個推薦內(nèi)容標識,通過記錄推薦內(nèi)容標識,就可以對推薦的內(nèi)容進行記錄。每個數(shù)據(jù)單元中均包括一個指針,所述指針保存的是下一條推薦內(nèi)容標識的寫入地址,每個數(shù)據(jù)單元可以記錄的推薦內(nèi)容標識的數(shù)量是確定的,從而根據(jù)指針保存的地址即可確定當前的數(shù)據(jù)單元所記錄的推薦記錄是否寫滿。

步驟103:在所述key字段寫入所述用戶的用戶id,在所述value字段寫入所述推薦記錄所在的數(shù)據(jù)文件的編號以及所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址。

圖2是所述索引區(qū)中key字段與value字段的關(guān)系圖。從圖中可以看出,key字段中寫入了用戶id(userid),value字段中寫入了推薦記錄所在的數(shù)據(jù)文件的編號(datafileid)以及推薦記錄在所述數(shù)據(jù)文件中的偏移地址(offset),兩者一一對應。這樣,通過userid即可確定對應的datafileid和offset。

本申請實施例所提供的數(shù)據(jù)處理方法,每個數(shù)據(jù)單元的容量相同且確定,在索引區(qū)建立了用戶id與推薦記錄所在的數(shù)據(jù)文件的編號以及所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址的對應關(guān)系,通過指針保存了下一條推薦內(nèi)容標識的寫入地址,這些為后續(xù)對數(shù)據(jù)區(qū)的實現(xiàn)快速讀寫操作奠定了基礎。

在本申請一實施例中,圖1所示的方法可以還包括:

在所述數(shù)據(jù)文件中寫入該數(shù)據(jù)文件包含的數(shù)據(jù)單元個數(shù)u,每個推薦記錄包含的推薦內(nèi)容標識的條數(shù)上限v以及該數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記i,其中u和v均為大于2的正整數(shù)。

圖3是該實施例中所述數(shù)據(jù)文件的結(jié)構(gòu)示意圖。本申請中為每個用戶保存一個推薦記錄,該推薦記錄保存在一個數(shù)據(jù)單元中。圖中,u表示該數(shù)據(jù)文件中包含的數(shù)據(jù)單元的個數(shù),也即該數(shù)據(jù)文件中記錄的用戶的個數(shù);v表示每個用戶的推薦記錄中包含的推薦內(nèi)容標識的最大條數(shù);p表示一個用戶的推薦記錄的指針,其中保存的是下一條待寫入的推薦內(nèi)容標識的位置,每個指針p后的r1至rv表示該用戶的推薦記錄中的v條推薦內(nèi)容標識;i表示數(shù)據(jù)文件中各個數(shù)據(jù)單元的占用情況,對于某個數(shù)據(jù)單元,占用可用1表示,未被占用可以用0表示,只要能表示數(shù)據(jù)單元被占用與否的狀態(tài)即可,本申請對此不做限定。例如以u=5為例,若前三個數(shù)據(jù)單元被占用,后兩個未被占用,則i=11100。

實際應用中,為了計算上的便利,可以設置u=2m,v=2n,m和n均是大于1的自然數(shù)。例如u=8,v=16,即數(shù)據(jù)文件中包括8個數(shù)據(jù)單元,每個數(shù)據(jù)單元中記錄16條推薦內(nèi)容標識。若8個數(shù)據(jù)單元中后面4個未被占用,則i=11110000。

本申請實施例提供的數(shù)據(jù)處理方法,在圖1所示的方法的基礎上進一步確定了數(shù)據(jù)文件中記錄的數(shù)據(jù)單元的個數(shù),從而可以提前分配數(shù)據(jù)存儲空間,提升了系統(tǒng)效率。

在完成如圖1或者圖3所示的初始創(chuàng)建和記錄后,即可向用戶推薦已經(jīng)記錄的推薦內(nèi)容。

本申請一實施例中,在創(chuàng)建了如圖3所示的數(shù)據(jù)空間后,若有新的推薦內(nèi)容要推薦時,需要先讀取已經(jīng)推薦過的推薦內(nèi)容的推薦記錄,將新的推薦內(nèi)容標識形成的推薦列表與推薦記錄中的推薦內(nèi)容標識比較并將重復的推薦內(nèi)容從推薦列表中刪除,并將去重后的推薦列表推薦給用戶。參見圖4,本申請一實施例提供的數(shù)據(jù)處理方法中,讀取已經(jīng)推薦過的推薦內(nèi)容的推薦記錄包括步驟401-404。

步驟401:獲取待讀取的推薦記錄所在的數(shù)據(jù)文件的編號。

步驟402:獲取待讀取的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址。

如圖2和3所示,用戶id與用戶數(shù)據(jù)文件編號以及用戶的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址之間是一一對應的,當確定了推薦列表的推薦對象,也即用戶后,根據(jù)該用戶的用戶id即可從索引表中確定該用戶的數(shù)據(jù)文件編號(datafileid)以及用戶的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址(offset)。

步驟403:讀取所述推薦記錄的指針。

在確定了該用戶的datafileid和offset后,即可在數(shù)據(jù)文件中找到該用戶對應的數(shù)據(jù)單元。從圖3所示的數(shù)據(jù)結(jié)構(gòu)中看出,該用戶的數(shù)據(jù)單元中,第一位即該數(shù)據(jù)單元的指針。

步驟404:判斷所述指針保存的地址是否大于所述推薦內(nèi)容標識的條數(shù)上限v,如果大于,則返回所述數(shù)據(jù)文件中該用戶的所有推薦記錄;否則,返回所述數(shù)據(jù)文件中該推薦記錄單元從起始區(qū)域至指針保存的地址之前的所有推薦記錄。

用戶數(shù)據(jù)單元的指針保存的是下一條推薦內(nèi)容標識的寫入地址,如果所述指針保存的地址大于數(shù)據(jù)單元中記錄的推薦內(nèi)容標識的條數(shù)上限,說明該數(shù)據(jù)單元已經(jīng)寫滿,那么該數(shù)據(jù)單元中記錄的所有的推薦內(nèi)容標識均應返回才能讀取到完整的已推薦內(nèi)容的推薦記錄;如果所述指針保存的地址不大于數(shù)據(jù)單元中記錄的推薦內(nèi)容標識的條數(shù)上限,則說明所述數(shù)據(jù)單元還未寫滿,那么只需要返回指針保存的地址之前的所有的推薦內(nèi)容標識即可讀取到完整的已推薦內(nèi)容的推薦記錄。

在讀取到已推薦內(nèi)容的推薦記錄后,可以將已推薦內(nèi)容的推薦記錄與待推薦的推薦列表比較。所述待推薦列表中記錄了待推薦的推薦內(nèi)容標識。將待推薦的推薦內(nèi)容標識與推薦記錄中的推薦內(nèi)容標識進行比較,從推薦列表中刪除已經(jīng)推薦過的推薦內(nèi)容標識,將去重后的推薦列表的推薦內(nèi)容標識對應的推薦內(nèi)容推薦給用戶。

參見圖5,本申請一實施例中,為用戶推薦新的推薦內(nèi)容后,將該推薦內(nèi)容的標識更新至推薦記錄中,包括步驟501-505。

步驟501:獲取待寫入的推薦內(nèi)容標識對應的推薦記錄所在的數(shù)據(jù)文件的編號。

步驟502:獲取待寫入的推薦內(nèi)容標識對應的推薦記錄在其所在的數(shù)據(jù)文件中的偏移地址。

如前所述,根據(jù)圖2和圖3所創(chuàng)建的數(shù)據(jù)結(jié)構(gòu),用戶id與用戶數(shù)據(jù)文件編號以及用戶的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址之間是一一對應的。本申請實施例中,對同一個用戶的推薦內(nèi)容標識都記錄在同一個推薦記錄中??梢允紫却_定接收推薦內(nèi)容的用戶,然后可以根據(jù)該用戶的用戶id,確定該用戶的推薦記錄所在的數(shù)據(jù)文件的編號和所述推薦記錄在其所在的數(shù)據(jù)文件中的偏移地址,從而在數(shù)據(jù)區(qū)找到待寫入的推薦內(nèi)容標識對應的數(shù)據(jù)單元。

步驟503:讀取所述推薦記錄的指針。

根據(jù)圖3所示的數(shù)據(jù)結(jié)構(gòu),每個用戶的推薦記錄占用一個數(shù)據(jù)單元。該數(shù)據(jù)單元的第一位就是該數(shù)據(jù)單元的指針,用于記錄該數(shù)據(jù)單元中下一條推薦記錄標識的寫入地址。

步驟504:用該指針保存的地址與推薦記錄所包含的推薦內(nèi)容標識的條數(shù)上限v取余得到待寫入推薦內(nèi)容標識的寫入地址。

步驟505:從所述寫入地址開始逐條寫入待寫入的推薦內(nèi)容標識。

推薦記錄包含的推薦內(nèi)容標識的條數(shù)上限實際上標志著該數(shù)據(jù)單元的容量。指針保存的是下一條推薦內(nèi)容標識的寫入位置。以每個數(shù)據(jù)單元最多能夠記錄32條推薦內(nèi)容標識為例,如果當前已經(jīng)記錄了20條,那么如果第一條的地址記為0,第20條的地址為19,那么指針中保存的地址為20。用20與32取余,得到的值是20,即從地址20開始寫入待寫入的推薦內(nèi)容標識,與之前已經(jīng)保存的20條記錄實現(xiàn)了順序連接。如果該數(shù)據(jù)單元中已經(jīng)寫滿,即已經(jīng)寫了32條推薦內(nèi)容標識,那么指針中保存的地址為32,與容量32取余,得到的結(jié)果是0,那么就從地址0開始寫新的待寫入的推薦內(nèi)容標識,實現(xiàn)寫入新數(shù)據(jù)的同時覆蓋舊數(shù)據(jù),提高了數(shù)據(jù)處理效率。

實際應用中,如果有新增的推薦用戶,基于圖2或者圖3所示的數(shù)據(jù)結(jié)構(gòu),參見圖6,本申請一實施例提供的處理方法還包括步驟601-604。

步驟601:遍歷所述數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記找到一個可用的數(shù)據(jù)單元。

如圖3所示,本申請實施例中,通過使用標記i來標記數(shù)據(jù)文件中各個數(shù)據(jù)單元的使用狀態(tài)。通過遍歷該使用標記即可找到可用的數(shù)據(jù)單元。例如,如果該數(shù)據(jù)文件中,u=4,i=1101,那么說明第三個數(shù)據(jù)單元未被占用,可以將其作為可用的數(shù)據(jù)單元。

步驟602:將該數(shù)據(jù)單元的使用標記修改為被使用狀態(tài)。

繼續(xù)上面的例子,可以將i修改為1111,這樣,第三個數(shù)據(jù)單元被標志為被占用狀態(tài)。

步驟603:將該數(shù)據(jù)單元的指針置零并初始化所述數(shù)據(jù)單元。

步驟604:以所述數(shù)據(jù)單元所在的數(shù)據(jù)文件的編號以及所述數(shù)據(jù)單元在所述數(shù)據(jù)文件內(nèi)的偏移為value字段的值,以新增用戶的用戶id為key字段的值,將所述新增用戶信息插入索引區(qū)。

本申請實施例所提供的數(shù)據(jù)處理方法,通過數(shù)據(jù)單元的使用標記可以方便快捷地為新用戶找到可用的數(shù)據(jù)單元,提高了數(shù)據(jù)區(qū)的利用率,同時也提高了數(shù)據(jù)處理速度。

為回收數(shù)據(jù)空間,對于長時間不再使用推薦引擎的用戶可以刪除其對應的數(shù)據(jù)單元。參見圖7,基于圖2和圖3所示的數(shù)據(jù)結(jié)構(gòu),本申請一實施例提供的數(shù)據(jù)處理方法還包括步驟701-703。

步驟701:根據(jù)待刪除用戶的用戶id在索引區(qū)確定待刪除的推薦記錄對應的數(shù)據(jù)文件編號和所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址。

步驟702:根據(jù)所述數(shù)據(jù)文件編號加載對應的數(shù)據(jù)文件,根據(jù)所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址確定所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記。

如前所述,根據(jù)圖2和圖3所創(chuàng)建的數(shù)據(jù)結(jié)構(gòu),用戶id與用戶數(shù)據(jù)文件編號以及用戶的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址之間是一一對應的。當確定了待刪除的數(shù)據(jù)對應的用戶id,那么則可以根據(jù)索引表確定該用戶的數(shù)據(jù)單元對應的使用標記。

步驟703:將所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記修改為未使用狀態(tài)。

數(shù)據(jù)單元對應的使用標記是該單元是否被占用的標志,后續(xù)應用中,如果需要新增用戶,當發(fā)現(xiàn)一個數(shù)據(jù)單元的使用標記為未使用狀態(tài),即可在該數(shù)據(jù)單元中寫入新的數(shù)據(jù)。本申請實施例提供的數(shù)據(jù)處理方法僅僅通過對數(shù)據(jù)單元對應的使用標記的更改就可以完成數(shù)據(jù)空間的回收,在提高數(shù)據(jù)空間的利用率的同時極大地提高了數(shù)據(jù)處理的效率。

參見圖8,本申請一實施例中,為了減少不同線程之間的同步消耗,可以將對一個數(shù)據(jù)單元的操作分配到同一個線程中依次執(zhí)行;可選地,在其他實施例中,也可以對一個數(shù)據(jù)文件的操作分配到同一個線程中依次執(zhí)行,這樣可以避免對同一個數(shù)據(jù)單元或者同一個數(shù)據(jù)文件的多線程間的同步操作,省去了多線程同步的開銷,極大地簡化了數(shù)據(jù)處理的過程。

在上述的實施例中,提供了一種數(shù)據(jù)處理方法,與之相對應的,本申請還提供一種數(shù)據(jù)處理裝置。該裝置是與上述數(shù)據(jù)處理方法的實施例相對應。

圖9-圖14為本申請實施例提供的數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。由于裝置實施例基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的說明即可。下述描述的裝置實施例僅僅是示意性的。

參見圖9,本申請一實施例提供的一種數(shù)據(jù)處理裝置,包括:

創(chuàng)建模塊901,用于在存儲介質(zhì)中開辟索引區(qū)和數(shù)據(jù)區(qū),所述索引區(qū)包括一一對應的鍵(key)字段和值(value)字段,所述數(shù)據(jù)區(qū)中包括多個數(shù)據(jù)文件,每個數(shù)據(jù)文件中包含多個大小相同的數(shù)據(jù)單元;

第一寫入模塊902,用于在所述數(shù)據(jù)區(qū)的一個數(shù)據(jù)文件的一個數(shù)據(jù)單元中寫入一個用戶的推薦記錄,所述推薦記錄包括指針和至少一條推薦內(nèi)容標識,其中,所述指針用于保存下一條推薦內(nèi)容標識的寫入地址;

第二寫入模塊903,用于在所述key字段寫入所述用戶的用戶id,在所述value字段寫入所述推薦記錄所在的數(shù)據(jù)文件的編號以及所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址。

可選地,所述數(shù)據(jù)處理裝置還可以包括:

第三寫入模塊,用于在所述數(shù)據(jù)文件中寫入該數(shù)據(jù)文件包含的數(shù)據(jù)單元個數(shù)u,每個推薦記錄包含的推薦內(nèi)容標識的條數(shù)上限v以及該數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記,其中u和v均為大于2的整數(shù)。

可選地,為了提高處理速度,實際應用中,可以設置u=2m,v=2n,其中m和n均是大于1的整數(shù)。

本申請實施例提供的數(shù)據(jù)處理裝置,確定了數(shù)據(jù)文件中記錄的數(shù)據(jù)單元的個數(shù),從而可以提前分配數(shù)據(jù)存儲空間,提升了系統(tǒng)效率。

參見圖10,本申請一實施例中,所述數(shù)據(jù)處理裝置還可以包括:

第一獲取模塊1001,用于獲取待讀取的推薦記錄所在的數(shù)據(jù)文件的編號;

第二獲取模塊1002,用于獲取待讀取的推薦記錄位于其所在的數(shù)據(jù)文件中的偏移地址;

第一讀取模塊1003,用于讀取所述推薦記錄的指針;

第一判斷模塊1004,用于判斷所述指針保存的地址是否大于所述推薦內(nèi)容標識的條數(shù)上限v;

第一反饋模塊1005,用于在所述指針保存的地址大于所述推薦內(nèi)容標識的條數(shù)上限v時,返回所述數(shù)據(jù)文件中該用戶的所有推薦內(nèi)容標識;

第二反饋模塊1006,用于在所述指針保存的地址不大于所述推薦內(nèi)容標識的條數(shù)上限v時,返回所述數(shù)據(jù)文件中該推薦記錄所在的數(shù)據(jù)單元從起始的推薦內(nèi)容標識至指針保存的地址之前的所有推薦內(nèi)容標識。

參見圖11,本申請一實施例中,所述數(shù)據(jù)處理裝置還包括:

第三獲取模塊1101,用于獲取待寫入的推薦內(nèi)容標識對應的推薦記錄所在的數(shù)據(jù)文件的編號;

第四獲取模塊1102,用于獲取待寫入的推薦內(nèi)容標識對應的推薦記錄在其所在的數(shù)據(jù)文件中的偏移地址;

第二讀取模塊1103,用于讀取所述推薦記錄的指針;

第一計算模塊1104,用于用該指針保存的地址與推薦記錄所包含的推薦內(nèi)容標識的條數(shù)上限v取余得到待寫入推薦內(nèi)容標識的寫入地址;

第三寫入模塊1105,用于從所述寫入地址開始逐條寫入待寫入的推薦內(nèi)容標識。

本申請?zhí)峁┑臄?shù)據(jù)處理裝置在更新推薦記錄時,利用指針保存的地址與用戶推薦記錄大小取余獲取新的推薦記錄的寫入地址,在寫入新推薦記錄的同時覆蓋掉過期的推薦記錄,簡化了操作。

參見圖12,本申請一實施例中,所述數(shù)據(jù)處理裝置還包括:

第一查找模塊1201,用于遍歷所述數(shù)據(jù)文件中的數(shù)據(jù)單元的使用標記找到一個可用的數(shù)據(jù)單元;

第一更改模塊1202,用于將該數(shù)據(jù)單元的使用標記修改為被使用狀態(tài);

初始化模塊1203,用于將該數(shù)據(jù)單元的指針置零并初始化所述數(shù)據(jù)單元;

插入模塊1204,用于以所述數(shù)據(jù)單元所在的數(shù)據(jù)文件的編號以及所述數(shù)據(jù)單元在所述數(shù)據(jù)文件內(nèi)的偏移為value字段的值,以新增用戶的用戶id為key字段的值,將所述新增用戶信息插入索引區(qū)。

本申請實施例所提供的數(shù)據(jù)處理裝置,通過數(shù)據(jù)單元的使用標記可以方便快捷地為新用戶找到可用的數(shù)據(jù)單元,提高了數(shù)據(jù)區(qū)的利用率,同時也提高了數(shù)據(jù)處理速度。

參見圖13,本申請一實施例提供的數(shù)據(jù)處理裝置還包括:

第二查找模塊1301,用于根據(jù)待刪除用戶的用戶id在索引區(qū)確定待刪除的推薦記錄對應的數(shù)據(jù)文件編號和所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址;

第三查找模塊1302,用于根據(jù)所述數(shù)據(jù)文件編號加載對應的數(shù)據(jù)文件,根據(jù)所述推薦記錄在所述數(shù)據(jù)文件中的偏移地址確定所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記;

第二更改模塊1303,用于將所述待刪除推薦記錄對應的數(shù)據(jù)單元的使用標記修改為未使用狀態(tài)。

本申請實施例提供的數(shù)據(jù)處理裝置僅僅通過對數(shù)據(jù)單元對應的使用標記的更改就可以完成數(shù)據(jù)空間的回收,在提高數(shù)據(jù)空間的利用率的同時極大地提高了數(shù)據(jù)處理的效率。

本申請一實施例中,為了減少不同線程之間的同步消耗,在所述數(shù)據(jù)處理裝置中,可以將對一個數(shù)據(jù)單元的操作分配到同一個線程中依次執(zhí)行;可選地,在其他實施例中,也可以將對一個數(shù)據(jù)文件的操作分配到同一個線程中依次執(zhí)行,這樣可以避免對同一個數(shù)據(jù)單元或者同一個數(shù)據(jù)文件的多線程間的同步操作,省去了多線程同步的開銷,極大地簡化了數(shù)據(jù)處理的過程。

圖14是本申請實施例提供的執(zhí)行數(shù)據(jù)處理方法的電子設備的硬件結(jié)構(gòu)示意圖,如圖14所示,該電子設備包括:

一個或多個處理器1410以及存儲器1420,圖14中以一個處理器1410為例。

執(zhí)行數(shù)據(jù)存儲方法的設備還可以包括:輸入裝置1430和輸出裝置1440。

處理器1410、存儲器1420、輸入裝置1430和輸出裝置1440可以通過總線或者其他方式連接,圖14中以通過總線1450連接為例。

存儲器1420作為一種非易失性計算機可讀存儲介質(zhì),可用于存儲非易失性軟件程序、非易失性計算機可執(zhí)行程序以及模塊,如本申請實施例中的數(shù)據(jù)存儲方法對應的程序指令/模塊(例如,附圖9-圖13所示的各個模塊)。處理器1410通過運行存儲在存儲器1420中的非易失性軟件程序、指令以及模塊,從而執(zhí)行服務器的各種功能應用以及數(shù)據(jù)處理,即實現(xiàn)上述方法實施例的數(shù)據(jù)存儲方法。

存儲器1420可以包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需要的應用程序;存儲數(shù)據(jù)區(qū)可存儲根據(jù)數(shù)據(jù)存儲裝置的使用所創(chuàng)建的數(shù)據(jù)等。此外,存儲器1420可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他非易失性固態(tài)存儲器件。在一些實施例中,存儲器1420可選包括相對于處理器1410遠程設置的存儲器,這些遠程存儲器可以通過網(wǎng)絡連接至數(shù)據(jù)存儲裝置。上述網(wǎng)絡的實例包括但不限于互聯(lián)網(wǎng)、企業(yè)內(nèi)部網(wǎng)、局域網(wǎng)、移動通信網(wǎng)及其組合。

輸入裝置1430可接收輸入的數(shù)字或字符信息,以及產(chǎn)生與數(shù)據(jù)存儲裝置的用戶設置以及功能控制有關(guān)的鍵信號輸入。輸出裝置1440可包括顯示屏等顯示設備。

所述一個或者多個模塊存儲在所述存儲器1420中,當被所述一個或者多個處理器1410執(zhí)行時,執(zhí)行上述任意方法實施例中的數(shù)據(jù)處理方法。

上述產(chǎn)品可執(zhí)行本申請實施例所提供的方法,具備執(zhí)行方法相應的功能模塊和有益效果。未在本實施例中詳盡描述的技術(shù)細節(jié),可參見本申請實施例所提供的方法。

本發(fā)明實施例的電子設備以多種形式存在,包括但不限于:

(1)移動通信設備:這類設備的特點是具備移動通信功能,并且以提供話音、數(shù)據(jù)通信為主要目標。這類終端包括:智能手機、多媒體手機、功能性手機,以及低端手機等。

(2)超移動個人計算機設備:這類設備屬于個人計算機的范疇,有計算和處理功能,一般也具備移動上網(wǎng)特性。這類終端包括:掌上電腦(pdapersonaldigitalassistant)、移動互聯(lián)網(wǎng)設備(mid,mobileinternetdevice)和超級移動個人計算機(umpc,ultra-mobilepersonalcomputer)設備等。

(3)便攜式娛樂設備:這類設備可以顯示和播放多媒體內(nèi)容。該類設備包括:音頻、視頻播放器,掌上游戲機,電子書,以及智能玩具和便攜式車載導航設備。

(4)服務器:提供計算服務的設備,服務器的構(gòu)成包括處理器、硬盤、內(nèi)存、系統(tǒng)總線等,服務器和通用的計算機架構(gòu)類似,但是由于需要提供高可靠的服務,因此在處理能力、穩(wěn)定性、可靠性、安全性、可擴展性、可管理性等方面要求較高。

(5)其他具有數(shù)據(jù)交互功能的電子裝置。

在本申請所提供的多個實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的檢測裝置的實施例僅僅是示意性的,例如,所述模塊的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個模塊或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信鏈接可以是通過一些接口,模塊的間接耦合或通信鏈接,可以是電性,機械或其它的形式。

所述作為分離部件說明的模塊可以是或者也可以不是物理上分開的,作為模塊顯示的部件可以是或者也可以不是物理模塊,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡模塊上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。

另外,在本發(fā)明各個實施例中的各功能模塊可以集成在一個處理模塊中,也可以是各個模塊單獨物理存在,也可以兩個或兩個以上模塊集成在一個模塊中。上述集成的模塊既可以采用硬件的形式實現(xiàn),也可以采用軟件功能模塊的形式實現(xiàn)。

所述集成的模塊如果以軟件功能模塊的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻的部分或者該技術(shù)方案的全部或部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:u盤、移動硬盤、只讀存儲器(rom,read-onlymemory)、隨機存取存儲器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。

需要說明的是,對于前述的各方法實施例,為了簡便描述,故將其都表述為一系列的動作組合,但是本領域技術(shù)人員應該知悉,本發(fā)明并不受所描述的動作順序的限制,因為依據(jù)本發(fā)明,某些步驟可以采用其它順序或者同時進行。其次,本領域技術(shù)人員也應該知悉,說明書中所描述的實施例均屬于優(yōu)選實施例,所涉及的動作和模塊并不一定都是本發(fā)明所必須的。

在上述實施例中,對各個實施例的描述都各有側(cè)重,某個實施例中沒有詳述的部分,可以參見其它實施例的相關(guān)描述。

以上公開的本發(fā)明優(yōu)選實施例只是用于幫助闡述本發(fā)明??蛇x實施例并沒有詳盡敘述所有的細節(jié),也不限制該發(fā)明僅為所述的具體實施方式。顯然,根據(jù)本說明書的內(nèi)容,可作很多的修改和變化。本說明書選取并具體描述這些實施例,是為了更好地解釋本發(fā)明的原理和實際應用,從而使所屬技術(shù)領域技術(shù)人員能很好地理解和利用本發(fā)明。本發(fā)明僅受權(quán)利要求書及其全部范圍和等效物的限制。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
汨罗市| 丹东市| 海兴县| 都江堰市| 平远县| 永德县| 汤阴县| 江门市| 佛学| 松江区| 丰城市| 昆明市| 武义县| 封丘县| 平武县| 融水| 彰化市| 阳西县| 那曲县| 松溪县| 林芝县| 巢湖市| 图木舒克市| 天柱县| 荥经县| 洛宁县| 肥城市| 青岛市| 申扎县| 邳州市| 黄浦区| 永福县| 靖安县| 莱西市| 阳新县| 吴旗县| 门头沟区| 绥化市| 温泉县| 乐都县| 楚雄市|