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

消息狀態(tài)存儲方法、裝置及計算機可讀存儲介質與流程

文檔序號:11406948閱讀:180來源:國知局
本發(fā)明涉及消息存儲
技術領域
:,尤其涉及一種消息狀態(tài)存儲方法,裝置以及計算機可讀存儲介質。
背景技術
::隨著互聯(lián)網(wǎng)以及無線通信技術的不斷發(fā)展,郵件,im,短信等通訊工具應用更加廣泛,消息交流已經(jīng)成為日常生活中重要的環(huán)節(jié)。針對每日小則成百,多則上千的消息列表,用戶所面對的累積消息越來越多。相較于已讀消息,用戶更關注的是那些未讀的消息。針對龐大的用戶群體,海量的信息列表,如何利用較少的空間存儲達到表示消息讀取狀態(tài)的判斷,已經(jīng)成為了消息推送中重要的一環(huán)。目前所使用的常用消息存儲方法是將用戶和消息建立起一個n*n的映射,當用戶增加以及消息增長的時候,會帶來性能上o(n^2)的一個增長方式,這樣帶來的存儲空間的開銷是巨大的,存儲空間增加的同時也造成了檢索性能上的瓶頸,降低了用戶提取未讀消息的速度,影響了用戶體驗。技術實現(xiàn)要素:本發(fā)明的主要目的在于提出一種消息狀態(tài)存儲方法、裝置及計算機可讀存儲介質,能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。為實現(xiàn)上述目的,本發(fā)明提供的一種消息狀態(tài)存儲方法,所述消息狀態(tài)包括:未讀狀態(tài)和已讀狀態(tài),所述方法包括:建立用戶的標識信息與消息狀態(tài)列表的1:1映射;按照預設存儲規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表;所述預設存儲規(guī)則為:使用一個long類型字段的自然數(shù)標識所述用戶的64條消息的消息狀態(tài)。其中,所述按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表,包括:初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài);當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。其中,所述更新所述特定消息的消息狀態(tài)所屬的自然數(shù)的數(shù)值,包括:在所述消息狀態(tài)列表中查詢所述特定消息的消息狀態(tài)所屬的自然數(shù)的順序t,數(shù)值k,并將所述數(shù)值k轉換為二進制表達式nk;其中,t=i/64;使用公式nk1=nk&(~(1<<j)),j=i%64,得到更新后的所述特定消息的消息狀態(tài)所屬的順序為t的自然數(shù)的二進制表達式;將所述二進制表達式nk1轉換為數(shù)值k1并作為順序為t的自然數(shù)的數(shù)值存入所述消息狀態(tài)列表中;其中,nk表示該特定消息未讀取之前所屬的自然數(shù)的數(shù)值k的二進制表達式,j表示該特定消息的消息狀態(tài)由順序為t的自然數(shù)的第j位表示,i表示該特定消息的消息順序,nk1表示該特定消息被讀取之后所屬的順序為t的自然數(shù)的二進制表達式。其中,當所述用戶的消息狀態(tài)數(shù)量超過所述消息狀態(tài)列表的最大容量max之后,所述按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表,包括:按照所述用戶的消息發(fā)布的先后順序以及公式i=(id%max)/64復用所述消息狀態(tài)列表;其中,id表示復用前所述用戶的消息順序,i表示復用后所述用戶的消息順序;初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài);當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。其中,所述更新所述特定消息的消息狀態(tài)所屬的自然數(shù)的數(shù)值,包括:在所述消息狀態(tài)列表中查詢所述特定消息的消息狀態(tài)所屬的自然數(shù)的順序t,數(shù)值k,并將所述數(shù)值k轉換為二進制表達式nk;其中,t=(i%max)/64;使用公式nk1=nk&(~(1<<j)),j=i%max%64,得到更新后的所述特定消息的消息狀態(tài)所屬的順序為t的自然數(shù)的二進制表達式;將所述二進制表達式nk1轉換為數(shù)值k1并作為順序為t的自然數(shù)的數(shù)值存入所述消息狀態(tài)列表中;其中,nk表示該特定消息未讀取之前所屬的自然數(shù)的數(shù)值k的二進制表達式,j表示該特定消息的消息狀態(tài)由順序為t的自然數(shù)的第j位表示,i表示該特定消息的消息順序,nk1表示該特定消息被讀取之后所屬的順序為t的自然數(shù)的二進制表達式。其中,所述方法還包括:當接收到查詢全部未讀消息的請求時,查詢所述消息狀態(tài)列表中存儲的所有自然數(shù);若二進制格式中的“1”或“0”表示消息未讀狀態(tài)時,則查詢所有自然數(shù)對應的所述二進制表達式中的“1”或“0”的數(shù)量。其中,若所述二進制表達式中的“1”表示消息未讀狀態(tài)時,所述查詢所有自然數(shù)對應的所述二進制表達式中的“1”的數(shù)量,包括:查詢數(shù)值為m的自然數(shù)對應的所述二進制表達式的“1”的數(shù)量,具體如下:使用公式m-1=m&(m-1),c=m&(m-1),查詢數(shù)值為m的自然數(shù)對應的所述二進制表達式中最低位的“1”的位置;將m-1賦值給m,繼續(xù)執(zhí)行m-1=m&(m-1),c=m^(m-1),查詢所述二進制表達式中最低位的“1”的位置,直到m-1的值為0,得到數(shù)值為m的自然數(shù)對應的“1”的數(shù)量。此外,為實現(xiàn)上述目的,本發(fā)明還提出一種消息狀態(tài)存儲裝置,所述裝置包括存儲器、處理器及存儲在所述存儲器上并可在所述處理器上運行的消息狀態(tài)存儲程序,所述消息狀態(tài)存儲程序執(zhí)行如下步驟:建立用戶的標識信息與消息狀態(tài)列表的1:1映射;按照預設存儲規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表;所述預設存儲規(guī)則為:使用一個long類型字段的自然數(shù)標識所述用戶的64條消息的消息狀態(tài)。其中,所述消息狀態(tài)存儲程序在執(zhí)行按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表,包括:初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài);當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。此外,本發(fā)明還提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有消息狀態(tài)存儲程序,當所述消息狀態(tài)存儲被至少一個處理器執(zhí)行時實現(xiàn)上述任一項所述的消息狀態(tài)存儲方法的步驟。本發(fā)明的有益效果是:本發(fā)明實施例的技術方案,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以o(n)的性能進行增長。與現(xiàn)有技術相比,能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。附圖說明圖1為實現(xiàn)本發(fā)明各個實施例的移動終端的硬件結構示意圖;圖2為如圖1所示的移動終端的無線通信系統(tǒng)示意圖;圖3是本發(fā)明的消息狀態(tài)存儲方法的第一實施例的流程示意圖;圖4為本發(fā)明的消息狀態(tài)存儲方法的第二實施例的流程示意圖;圖5為圖4中步驟403的實施例的流程示意圖;圖6是本發(fā)明的消息狀態(tài)存儲方法的第三實施例的流程示意圖;圖7是本發(fā)明的消息狀態(tài)存儲方法的第四實施例的流程示意圖;圖8是本發(fā)明的查找未讀消息的實施例的流程示意圖;圖9是本發(fā)明的消息狀態(tài)存儲裝置的實施例的結構示意圖;本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結合實施例,參照附圖做進一步說明。具體實施方式應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身沒有特定的意義。因此,“模塊”、“部件”或“單元”可以混合地使用。本發(fā)明中提供的應用程序的消息狀態(tài)存儲方法,可以應用于各種終端以及計算機可讀存儲介質。其中,終端可以以各種形式來實施。例如,本發(fā)明中描述的終端可以包括諸如手機、平板電腦、筆記本電腦、掌上電腦、個人數(shù)字助理(personaldigitalassistant,pda)、便捷式媒體播放器(portablemediaplayer,pmp)、導航裝置、可穿戴設備、智能手環(huán)、計步器等移動終端,以及諸如數(shù)字tv、臺式計算機等固定終端。后續(xù)描述中將以移動終端為例進行說明,本領域技術人員將理解的是,除了特別用于移動目的的元件之外,根據(jù)本發(fā)明的實施方式的構造也能夠應用于固定類型的終端。請參閱圖1,其為實現(xiàn)本發(fā)明各個實施例的一種移動終端的硬件結構示意圖,該移動終端100可以包括:rf(radiofrequency,射頻)單元101、wifi模塊102、音頻輸出單元103、a/v(音頻/視頻)輸入單元104、傳感器105、顯示單元106、用戶輸入單元107、接口單元108、存儲器109、處理器110、以及電源111等部件。本領域技術人員可以理解,圖1中示出的移動終端結構并不構成對移動終端的限定,移動終端可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。下面結合圖1對移動終端的各個部件進行具體的介紹:射頻單元101可用于收發(fā)信息或通話過程中,信號的接收和發(fā)送,具體的,將基站的下行信息接收后,給處理器110處理;另外,將上行的數(shù)據(jù)發(fā)送給基站。通常,射頻單元101包括但不限于天線、至少一個放大器、收發(fā)信機、耦合器、低噪聲放大器、雙工器等。此外,射頻單元101還可以通過無線通信與網(wǎng)絡和其他設備通信。上述無線通信可以使用任一通信標準或協(xié)議,包括但不限于gsm(globalsystemofmobilecommunication,全球移動通訊系統(tǒng))、gprs(generalpacketradioservice,通用分組無線服務)、cdma2000(codedivisionmultipleaccess2000,碼分多址2000)、wcdma(widebandcodedivisionmultipleaccess,寬帶碼分多址)、td-scdma(timedivision-synchronouscodedivisionmultipleaccess,時分同步碼分多址)、fdd-lte(frequencydivisionduplexing-longtermevolution,頻分雙工長期演進)和tdd-lte(timedivisionduplexing-longtermevolution,分時雙工長期演進)等。wifi屬于短距離無線傳輸技術,移動終端通過wifi模塊102可以幫助用戶收發(fā)電子郵件、瀏覽網(wǎng)頁和訪問流式媒體等,它為用戶提供了無線的寬帶互聯(lián)網(wǎng)訪問。雖然圖1示出了wifi模塊102,但是可以理解的是,其并不屬于移動終端的必須構成,完全可以根據(jù)需要在不改變發(fā)明的本質的范圍內而省略。音頻輸出單元103可以在移動終端100處于呼叫信號接收模式、通話模式、記錄模式、語音識別模式、廣播接收模式等等模式下時,將射頻單元101或wifi模塊102接收的或者在存儲器109中存儲的音頻數(shù)據(jù)轉換成音頻信號并且輸出為聲音。而且,音頻輸出單元103還可以提供與移動終端100執(zhí)行的特定功能相關的音頻輸出(例如,呼叫信號接收聲音、消息接收聲音等等)。音頻輸出單元103可以包括揚聲器、蜂鳴器等等。a/v輸入單元104用于接收音頻或視頻信號。a/v輸入單元104可以包括圖形處理器(graphicsprocessingunit,gpu)1041和麥克風1042,圖形處理器1041對在視頻捕獲模式或圖像捕獲模式中由圖像捕獲裝置(如攝像頭)獲得的靜態(tài)圖片或視頻的圖像數(shù)據(jù)進行處理。處理后的圖像幀可以顯示在顯示單元106上。經(jīng)圖形處理器1041處理后的圖像幀可以存儲在存儲器109(或其它存儲介質)中或者經(jīng)由射頻單元101或wifi模塊102進行發(fā)送。麥克風1042可以在電話通話模式、記錄模式、語音識別模式等等運行模式中經(jīng)由麥克風1042接收聲音(音頻數(shù)據(jù)),并且能夠將這樣的聲音處理為音頻數(shù)據(jù)。處理后的音頻(語音)數(shù)據(jù)可以在電話通話模式的情況下轉換為可經(jīng)由射頻單元101發(fā)送到移動通信基站的格式輸出。麥克風1042可以實施各種類型的噪聲消除(或抑制)算法以消除(或抑制)在接收和發(fā)送音頻信號的過程中產(chǎn)生的噪聲或者干擾。移動終端100還包括至少一種傳感器105,比如光傳感器、運動傳感器以及其他傳感器。具體地,光傳感器包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線的明暗來調節(jié)顯示面板1061的亮度,接近傳感器可在移動終端100移動到耳邊時,關閉顯示面板1061和/或背光。作為運動傳感器的一種,加速計傳感器可檢測各個方向上(一般為三軸)加速度的大小,靜止時可檢測出重力的大小及方向,可用于識別手機姿態(tài)的應用(比如橫豎屏切換、相關游戲、磁力計姿態(tài)校準)、振動識別相關功能(比如計步器、敲擊)等;至于手機還可配置的指紋傳感器、壓力傳感器、虹膜傳感器、分子傳感器、陀螺儀、氣壓計、濕度計、溫度計、紅外線傳感器等其他傳感器,在此不再贅述。顯示單元106用于顯示由用戶輸入的信息或提供給用戶的信息。顯示單元106可包括顯示面板1061,可以采用液晶顯示器(liquidcrystaldisplay,lcd)、有機發(fā)光二極管(organiclight-emittingdiode,oled)等形式來配置顯示面板1061。用戶輸入單元107可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與移動終端的用戶設置以及功能控制有關的鍵信號輸入。具體地,用戶輸入單元107可包括觸控面板1071以及其他輸入設備1072。觸控面板1071,也稱為觸摸屏,可收集用戶在其上或附近的觸摸操作(比如用戶使用手指、觸筆等任何適合的物體或附件在觸控面板1071上或在觸控面板1071附近的操作),并根據(jù)預先設定的程式驅動相應的連接裝置。觸控面板1071可包括觸摸檢測裝置和觸摸控制器兩個部分。其中,觸摸檢測裝置檢測用戶的觸摸方位,并檢測觸摸操作帶來的信號,將信號傳送給觸摸控制器;觸摸控制器從觸摸檢測裝置上接收觸摸信息,并將它轉換成觸點坐標,再送給處理器110,并能接收處理器110發(fā)來的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線以及表面聲波等多種類型實現(xiàn)觸控面板1071。除了觸控面板1071,用戶輸入單元107還可以包括其他輸入設備1072。具體地,其他輸入設備1072可以包括但不限于物理鍵盤、功能鍵(比如音量控制按鍵、開關按鍵等)、軌跡球、鼠標、操作桿等中的一種或多種,具體此處不做限定。進一步的,觸控面板1071可覆蓋顯示面板1061,當觸控面板1071檢測到在其上或附近的觸摸操作后,傳送給處理器110以確定觸摸事件的類型,隨后處理器110根據(jù)觸摸事件的類型在顯示面板1061上提供相應的視覺輸出。雖然在圖1中,觸控面板1071與顯示面板1061是作為兩個獨立的部件來實現(xiàn)移動終端的輸入和輸出功能,但是在某些實施例中,可以將觸控面板1071與顯示面板1061集成而實現(xiàn)移動終端的輸入和輸出功能,具體此處不做限定。接口單元108用作至少一個外部裝置與移動終端100連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機端口、外部電源(或電池充電器)端口、有線或無線數(shù)據(jù)端口、存儲卡端口、用于連接具有識別模塊的裝置的端口、音頻輸入/輸出(i/o)端口、視頻i/o端口、耳機端口等等。接口單元108可以用于接收來自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿咏K端100內的一個或多個元件或者可以用于在移動終端100和外部裝置之間傳輸數(shù)據(jù)。存儲器109可用于存儲軟件程序以及各種數(shù)據(jù)。存儲器109可主要包括存儲程序區(qū)和存儲數(shù)據(jù)區(qū),其中,存儲程序區(qū)可存儲操作系統(tǒng)、至少一個功能所需的應用程序(比如聲音播放功能、圖像播放功能等)等;存儲數(shù)據(jù)區(qū)可存儲根據(jù)手機的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話本等)等。此外,存儲器109可以包括高速隨機存取存儲器,還可以包括非易失性存儲器,例如至少一個磁盤存儲器件、閃存器件、或其他易失性固態(tài)存儲器件。處理器110是移動終端的控制中心,利用各種接口和線路連接整個移動終端的各個部分,通過運行或執(zhí)行存儲在存儲器109內的軟件程序和/或模塊,以及調用存儲在存儲器109內的數(shù)據(jù),執(zhí)行移動終端的各種功能和處理數(shù)據(jù),從而對移動終端進行整體監(jiān)控。處理器110可包括一個或多個處理單元;優(yōu)選的,處理器110可集成應用處理器和調制解調處理器,其中,應用處理器主要處理操作系統(tǒng)、用戶界面和應用程序等,調制解調處理器主要處理無線通信。可以理解的是,上述調制解調處理器也可以不集成到處理器110中。移動終端100還可以包括給各個部件供電的電源111(比如電池),優(yōu)選的,電源111可以通過電源管理系統(tǒng)與處理器110邏輯相連,從而通過電源管理系統(tǒng)實現(xiàn)管理充電、放電、以及功耗管理等功能。盡管圖1未示出,移動終端100還可以包括藍牙模塊等,在此不再贅述。為了便于理解本發(fā)明實施例,下面對本發(fā)明的移動終端所基于的通信網(wǎng)絡系統(tǒng)進行描述。請參閱圖2,圖2為本發(fā)明實施例提供的一種通信網(wǎng)絡系統(tǒng)架構圖,該通信網(wǎng)絡系統(tǒng)為通用移動通信技術的lte系統(tǒng),該lte系統(tǒng)包括依次通訊連接的ue(userequipment,用戶設備)201,e-utran(evolvedumtsterrestrialradioaccessnetwork,演進式umts陸地無線接入網(wǎng))202,epc(evolvedpacketcore,演進式分組核心網(wǎng))203和運營商的ip業(yè)務204。具體地,ue201可以是上述終端100,此處不再贅述。e-utran202包括enodeb2021和其它enodeb2022等。其中,enodeb2021可以通過回程(backhaul)(例如x2接口)與其它enodeb2022連接,enodeb2021連接到epc203,enodeb2021可以提供ue201到epc203的接入。epc203可以包括mme(mobilitymanagemententity,移動性管理實體)2031,hss(homesubscriberserver,歸屬用戶服務器)2032,其它mme2033,sgw(servinggateway,服務網(wǎng)關)2034,pgw(pdngateway,分組數(shù)據(jù)網(wǎng)絡網(wǎng)關)2035和pcrf(policyandchargingrulesfunction,政策和資費功能實體)2036等。其中,mme2031是處理ue201和epc203之間信令的控制節(jié)點,提供承載和連接管理。hss2032用于提供一些寄存器來管理諸如歸屬位置寄存器(圖中未示)之類的功能,并且保存有一些有關服務特征、數(shù)據(jù)速率等用戶專用的信息。所有用戶數(shù)據(jù)都可以通過sgw2034進行發(fā)送,pgw2035可以提供ue201的ip地址分配以及其它功能,pcrf2036是業(yè)務數(shù)據(jù)流和ip承載資源的策略與計費控制策略決策點,它為策略與計費執(zhí)行功能單元(圖中未示)選擇及提供可用的策略和計費控制決策。ip業(yè)務204可以包括因特網(wǎng)、內聯(lián)網(wǎng)、ims(ipmultimediasubsystem,ip多媒體子系統(tǒng))或其它ip業(yè)務等。雖然上述以lte系統(tǒng)為例進行了介紹,但本領域技術人員應當知曉,本發(fā)明不僅僅適用于lte系統(tǒng),也可以適用于其他無線通信系統(tǒng),例如gsm、cdma2000、wcdma、td-scdma以及未來新的網(wǎng)絡系統(tǒng)等,此處不做限定?;谏鲜鲆苿咏K端硬件結構以及通信網(wǎng)絡系統(tǒng),提出本發(fā)明方法各個實施例。如圖3所示,是本發(fā)明的消息狀態(tài)存儲方法的第一實施例的流程示意圖。其中,該消息狀態(tài)存儲方法可以用于移動終端,例如可以應用于智能手機、平板電腦、個人數(shù)字助理等設備。如圖3所示,該消息狀態(tài)存儲方法包括如下步驟:步驟301:建立用戶的標識信息與消息狀態(tài)列表的1:1映射。步驟302:按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表;所述預設存儲規(guī)則為:使用一個long類型字段的自然數(shù)標識所述用戶的64條消息的消息順序以及消息狀態(tài)。在步驟301中,首先為每個用戶建立一個唯一的標識信息,如身份標識id,并將身份標識id與該用戶的消息狀態(tài)列表的1:1映射。該映射關系可以表示如下:id:0010100000000000……0000。其中,id表示用戶的身份標識,消息狀態(tài)列表中的0、1則表示用戶的消息狀態(tài);若0表示該消息已讀,1表示消息未讀,則上述例子表示第3條,第5條..等消息是未讀消息,其余是已讀消息。在本發(fā)明的所有實施例中,均以0表示該消息已讀,1表示消息未讀進行描述。可以理解的是,也可以用0表示該消息未讀,1表示消息已讀。在步驟302中,按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表。由于在在計算機表示中,一個long字段的數(shù)據(jù)類型可以表示64位的0,1比特流。如17可以表示成(0000,0000,0000,…0000,0001,0001),因此,針對用戶的每64條消息狀態(tài),可以考慮用一個long字段來表示。因此,預設存儲規(guī)則可以是:使用一個long類型字段的自然數(shù)標識所述用戶的64條消息的消息狀態(tài)。舉例來說,如17(0000,0000,0000,…0000,0001,0001)則可以用來表示第1、5條消息未讀,其余消息已讀。又例如,若用戶的64條消息中,第1、2、3、4條消息全部為未讀消息,其余消息全部為已讀消息,那么按照存儲預設規(guī)則,消息狀態(tài)列表中存儲的long類型字段的自然數(shù)則為15。采用此種存儲方式進行消息狀態(tài)的存儲,當消息數(shù)量持續(xù)增加的時候,每增加64條消息,只需要多增加一個long類型的字段進行存儲。但是一個用戶始終只針對一行記錄,達到1:1的效果。經(jīng)過轉換,該行記錄的映射如下:id:n1,n2,…nn(ni表示一個0~264-1的數(shù)字)。每一個數(shù)字代表用戶的64條消息的消息狀態(tài)。本發(fā)明實施例的消息狀態(tài)存儲方法,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以線性o(n)的性能進行增長。與現(xiàn)有技術相比,能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。如圖4所示,是本發(fā)明的消息狀態(tài)存儲方法的第二實施例的流程示意圖。其中,該消息狀態(tài)存儲方法可以用于移動終端,例如可以應用于智能手機、平板電腦、個人數(shù)字助理等設備。如圖4所示,該消息狀態(tài)存儲方法包括如下步驟:步驟401:建立用戶的標識信息與消息狀態(tài)列表的1:1映射。步驟402:初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài)。步驟403:當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。需要說明的是,本實施例與圖3所示的實施例的區(qū)別在于:本實施例對圖3中的步驟302,即按照預設存儲規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表的步驟進行了細化,具體是通過步驟402至步驟403來實現(xiàn)的。具體地,在按照預設規(guī)則初始化消息狀態(tài)列表時,將用戶的消息狀態(tài)全部置為未讀狀態(tài),即1111,1111,1111,.....1111的比特序列,那么表示成long類型之后,即為:id:264-1,264-1,…264-1,表示所有消息均未讀。在步驟403中,當消息狀態(tài)列表中的特定消息(如第i條消息)被用戶讀取之后,該第i條消息的消息狀態(tài)則由未讀狀態(tài)變?yōu)橐炎x狀態(tài),相應地,需要將該第i條消息的消息狀態(tài)置為已讀。因此,需要將代表第i條消息的消息狀態(tài)的比特位由1置為0。根據(jù)前文的描述可知,每一條消息都對應消息狀態(tài)列表中的一個自然數(shù)。那么,在將該第i條消息的消息狀態(tài)的比特位由1置為0時,第i條消息所屬的自然數(shù)在消息狀態(tài)列表中的順序或者說位置不會發(fā)生變化,只是自然數(shù)的數(shù)值會相應發(fā)生變化。因此,將第i條消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)的具體操作方法可以是:更新該第i條消息的消息狀態(tài)所屬自然數(shù)的數(shù)值。具體實現(xiàn)時,可以通過圖5的方式進行。圖5是更新該第i條消息的消息狀態(tài)所屬自然數(shù)的數(shù)值的實施例的流程圖,其包括:步驟501:在所述消息狀態(tài)列表中查詢所述特定消息的消息狀態(tài)所屬的自然數(shù)的順序t,數(shù)值k,并將所述數(shù)值k轉換為二進制表達式nk。步驟502:使用公式nk1=nk&(~(1<<j)),j=i%64,得到更新后的所述特定消息的消息狀態(tài)所屬的順序為t的自然數(shù)的二進制表達式。步驟503:將所述二進制表達式nk1轉換為數(shù)值k1并作為順序為t的自然數(shù)的數(shù)值存入所述消息狀態(tài)列表中。根據(jù)前文的描述可知,若消息狀態(tài)列表中存儲有n個自然數(shù),即n1,n2,…nn(ni表示一個0~264-1的數(shù)字)。在用戶讀取第i條消息之后,需要更新該第i條消息的消息狀態(tài)所屬自然數(shù)的數(shù)值。在更新數(shù)值之前,首先需要在消息狀態(tài)列表中查找第i條消息所屬的自然數(shù)在消息狀態(tài)列表中的順序,以及當前的數(shù)值(步驟501)。其中,第i條消息在消息狀態(tài)列表中的順序可以通過如下公式得到:t=i/64............(1)其中,i表示消息順序,t表示第i條消息的消息狀態(tài)屬于消息狀態(tài)列表中的第t個自然數(shù),或者說第i條消息的消息狀態(tài)由消息狀態(tài)列表中順序為t的自然數(shù)表達。在找到第i條消息的消息狀態(tài)所屬的順序為t的自然數(shù)之后,讀取到順序為t的自然數(shù)的數(shù)值k,并該將數(shù)值k轉換為二進制表達式nk。在步驟502中,需要找出第i條消息的消息狀態(tài)具體由nk中的那個比特位表示,并將該找出的比特位置0,同時還需要得到將該比特位置0之后,第i條消息所屬的順序為t的自然數(shù)的二進制表達式。在查找第i條消息具體由nk中的那個比特位表示,可以采用如下公式:j=i%64...........(2)。其中,j表示第i條消息具體nk中的第j位表示。然后在將nk中第j位由未讀狀態(tài)變?yōu)橐炎x狀態(tài),例如由1置0,具體可以采用如下公式:nk1=nk&(~(1<<j))...........(3)。其中,nk表示該第i條消息未讀取之前所屬的自然數(shù)的數(shù)值k的二進制表達式,j表示該第i條消息的消息狀態(tài)由順序為t的自然數(shù)的第j位表示,nk1表示該第i條消息被讀取之后所屬的順序為t的自然數(shù)的二進制表達式。舉例來說,若用戶讀取第3條消息之后,則第3條消息的消息狀態(tài)應由未讀狀態(tài)變?yōu)橐炎x狀態(tài),此時,首先執(zhí)行公式(1),求出第3條消息的消息狀態(tài)所屬的自然數(shù)在消息狀態(tài)列表中的順序為t=1,然后讀取消息狀態(tài)列表中順序為1的自然數(shù)的數(shù)值k,假設k=15。然后將15轉換為二進制表達式nk,即1111。即是說,用戶的第1、2、3、4條消息的消息狀態(tài)均為未讀狀態(tài)。其次,采用公式(2)求出第3條消息具體由nk中的那個比特位表示,即j=2。然后按照公式(3)求出第2條消息的消息狀態(tài)置0之后,第3條消息所屬的第一個自然數(shù)的二進制表達式。具體操作時,首先1<<j得到0100,僅有第j位是1,其余均為0。然后執(zhí)行~(1<<j)取反操作,得到1011僅有第j位是0,其余都是1。然后執(zhí)行nk&(~(1<<j)),即1111&1011=1011僅將第j位設成0,這樣就實現(xiàn)了將第j比特位置0,而其余比特位的數(shù)值保持不變。本發(fā)明實施例的消息狀態(tài)存儲方法,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以o(n)的性能進行增長。當用戶讀取某條消息之后,能夠快速將該消息由未讀只為已讀并存入消息狀態(tài)列表。與現(xiàn)有技術相比,本發(fā)明實施例能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。需要說明的是,圖3以及圖4所示的實施例中,由于預設存儲規(guī)則進行存儲時,存儲的用戶消息的消息狀態(tài)的數(shù)量是有限的,當用戶的消息狀態(tài)數(shù)量超過消息狀態(tài)列表的最大容量max之后,即nn也已經(jīng)被未讀消息數(shù)量使用完畢,此時可以考慮按照消息發(fā)布的先后順序,重新依次復用消息狀態(tài)列表中的字段ni(i從1開始復用)。下面,將通過圖6所示的實施例進行詳細描述。圖6是本發(fā)明的消息狀態(tài)存儲方法的第三實施例的流程示意圖。其中,該消息狀態(tài)存儲方法可以用于移動終端,例如可以應用于智能手機、平板電腦、個人數(shù)字助理等設備。如圖6所示,該消息狀態(tài)存儲方法包括如下步驟:步驟601:建立用戶的標識信息與消息狀態(tài)列表的1:1映射。步驟602:按照所述用戶的消息發(fā)布的先后順序以及公式i=(id%max)/64復用所述消息狀態(tài)列表。步驟603:初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài)。步驟604:當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。本實施例與圖4所示的實施例的區(qū)別有兩點:第一,即在初始化消息狀態(tài)列表,需要執(zhí)行步驟602,即復用所述消息狀態(tài)列表的long字段。第二,由于前面步驟602中是復用后的long字段,因此,在步驟604,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值時,也會有相應的調整。下面將分別對上述區(qū)別進行描述。在步驟602中,當用戶的消息數(shù)量超過消息狀態(tài)列表的最大容量max的時候,即nn也已經(jīng)被未讀消息數(shù)量使用完畢,此時可以考慮按照消息發(fā)布的先后順序,重新依次復用消息狀態(tài)列表中的字段ni(i從1開始復用)。復用的公式如下:i=(id%max)/64...........(4)。其中,id表示復用前所述用戶的消息順序,i表示復用后所述用戶的消息順序。例如,發(fā)布第max+1條消息的時候,由于消息數(shù)量已經(jīng)超過消息最大容量max,此時可以認為第一條發(fā)布的消息可以認為無效了。那么,可以將max+1條消息的消息狀態(tài)可以使用第1條消息所屬的自然數(shù)來存儲,即使用n1存儲。即是說,當消息達到一定數(shù)值后,可以重新復用消息狀態(tài)列表中已有的字段。這樣,即使在用戶數(shù)量激增以及消息數(shù)量增長的時候,本發(fā)明實施例只用有限數(shù)量的空間開銷,便可完成未讀消息的存儲,突破性的提高了空間的利用率,大大降低了空間存儲??梢岳斫獾氖?,由于本實施例支持對消息狀態(tài)列表中字段的循環(huán)使用,那么相應地,當特定消息(第i條消息)被用戶讀取之后,在更新第i條消息的消息狀態(tài)所屬的自然數(shù)的數(shù)值時,即執(zhí)行步驟604時,與圖4所示的實施例相比,也會做相應的調整。具體調整如下:第一,在求取第i條消息在消息狀態(tài)列表中的順序可以通過如下公式得到:t=(i%max)/64...........(5)。其中,i表示消息順序,t表示第i條消息的消息狀態(tài)屬于消息狀態(tài)列表中的第t個自然數(shù),或者說第i條消息的消息狀態(tài)由消息狀態(tài)列表中順序為t的自然數(shù)表達。在找到第i條消息的消息狀態(tài)所屬的順序為t的自然數(shù)之后,讀取到順序為t的自然數(shù)的數(shù)值k,并該將數(shù)值k轉換為二進制表達式nk。第二,在查找第i條消息具體由nk中的那個比特位表示時,可以采用如下公式:j=i%max%64...........(6)。其中,j表示第i條消息具體nk中的第j位表示。當然,在將nk中第j位由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,例如由1置0,仍采用上述公式(3)。只是公式(3)中,i,j的取值與圖4所示的實施例不同。需要說明的是,在按照上述實施例所述的方法存儲用戶的消息狀態(tài)之后,若接收到查詢該用戶全部未讀消息的請求時,則需要從消息狀態(tài)列表中查詢用戶的全部未讀消息,具體是查詢消息狀態(tài)列表中存儲的自然數(shù)轉換為二進制時比特位為1的具體數(shù)量和位置。下面,將通過圖7以及圖8進行描述。圖7所示的是本發(fā)明的消息狀態(tài)存儲方法的第四實施例的流程示意圖。其中,該消息狀態(tài)存儲方法可以用于移動終端,例如可以應用于智能手機、平板電腦、個人數(shù)字助理等設備。如圖7所示,該消息狀態(tài)存儲方法包括如下步驟:步驟701:建立用戶的標識信息與消息狀態(tài)列表的1:1映射。步驟702:按照所述用戶的消息發(fā)布的先后順序以及公式i=(id%max)/64復用所述消息狀態(tài)列表。步驟703:初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài)。步驟704:當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。步驟705:當接收到查詢全部未讀消息的請求時,查詢所述消息狀態(tài)列表中存儲的所有自然數(shù)。步驟706:查詢所述二進制表達式中的“1”數(shù)量與位置。本實施例與圖6所示的實施例的區(qū)別在于:當接收到查詢全部未讀消息的請求時,還查詢所述用戶的未讀消息的數(shù)量??梢岳斫獾氖?,由于消息狀態(tài)列表中存儲的是long字段,且用比特位1表示消息未讀,因此在查詢用戶的未讀消息的數(shù)量時,則轉換為查詢消息狀態(tài)列表中存儲的是long字段中比特位1的數(shù)量。具體地,查詢所述用戶的未讀消息的數(shù)量具體通過步驟705至步驟706實現(xiàn)。首先,需要查詢消息狀態(tài)列表中存儲的所有自然數(shù),即所有的long字段。在查詢到所有自然數(shù)之后,還將查詢到的所有自然數(shù)的數(shù)值轉換為對應的二進制表達式。最后,查詢所有自然數(shù)對應的二進制表達式中的“1”的數(shù)量,從而得到用戶未讀消息的數(shù)量。在查詢所有自然數(shù)對應的二進制表達式中的“1”的數(shù)量時,具體是分別查詢每個自然數(shù)對應的二進制表達式中的“1”的數(shù)量,然后將查詢到的每一個自然數(shù)對應的二進制表達式中的“1”的數(shù)量進行統(tǒng)計,疊加,即可得到所有自然數(shù)對應的二進制表達式中的“1”的數(shù)量。在查詢每個自然數(shù)對應的二進制表達式中的“1”的數(shù)量,具體可以采用如下方法:首先,使用如下公式得到某一自然數(shù)對應二進制表達式中最低位“1”的位置。m-1=m&(m-1)...........(7);c=m^(m-1)...........(8)。舉例來說,若消息狀態(tài)列表中存儲的自然數(shù)的數(shù)值為17,那么其對應的二進制表達為0000,0000,0000,....,0000,0001,0001。在采用公式(7)和(8)查詢0000,0000,0000,....,0000,0001,0001最低位“1”的位置時,具體如下:首先,使用公式(7),即17-1=17&(17-1),對應的二進制表達為:0000,0000,0000,....,0000,0001,0001&0000,0000,0000,....,0000,0001,0000----------------------------------------------------------------0000,0000,0000,....,0000,0001,0000本步驟的目的是:刪除最低位的“1”。然后使用公式(8),即c=16^17,即:0000,0000,0000,....,0000,0001,0000^0000,0000,0000,....,0000,0001,0001----------------------------------------------------------------0000,0000,0000,....,0000,0000,0001c便是經(jīng)過一輪計算以后,得到的最后一位“1”的位置。在找出最后一位“1”的位置之后,將m-1賦值給m,繼續(xù)執(zhí)行m-1=m&(m-1),c=m^(m-1),查詢所述二進制表達式中最低位的“1”的位置,直到m-1的值為0,便終止運算,得到數(shù)值為m的自然數(shù)對應的“1”的數(shù)量。實踐發(fā)現(xiàn),當m中有多少個1的時候,只要循環(huán)多少次結束運算,并且得到了所有1的位置。當接收到用戶查詢全部未讀消息的請求時,可以通過圖8所示的流程來實現(xiàn)。在圖8中,步驟801表示接收到用戶查詢全部未讀消息的請求。步驟802表示,從消息狀態(tài)列表中存儲的第一個自然數(shù)開始,計算該自然數(shù)對應的“1”的數(shù)量,即當前自然數(shù)中未讀消息的數(shù)量。步驟803表示,判斷當前計算的自然數(shù)是否小于消息狀態(tài)列表中存儲的自然數(shù)序列的個數(shù)。步驟804表示,當前自然數(shù)還有未讀消息沒有找出。步驟805表示,保存當前自然數(shù)的值。步驟806表示,計算出當前自然數(shù)中消息順序最小的未讀消息。步驟807表示,保存計算出的最小未讀消息的順序,同時計算下一位未讀消息的順序。步驟808表示,計算消息狀態(tài)列表中下一個自然數(shù)的未讀消息數(shù)量。需要說明的是,若消息狀態(tài)列表中的字段經(jīng)過循環(huán)利用之后,目前得到1的位置不是最新記錄最新消息的未讀位置。該循環(huán)方案最多記錄max條消息記錄,所以要得到最新的未讀消息數(shù)量,需要做一個轉換:n=最新消息id-max+n,n表示最新的未讀消息數(shù)量。本發(fā)明實施例的消息狀態(tài)存儲方法,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以o(n)的性能進行增長。當用戶讀取某條消息之后,能夠快速將該消息由未讀只為已讀并存入消息狀態(tài)列表。與現(xiàn)有技術相比,本發(fā)明實施例能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。并且,當消息達到一定數(shù)值后,可以重新復用消息狀態(tài)列表中已有的字段。這樣,即使在用戶數(shù)量激增以及消息數(shù)量增長的時候,本發(fā)明實施例只用有限數(shù)量的空間開銷,便可完成未讀消息的存儲,突破性的提高了空間的利用率,大大降低了空間存儲。另外,當接收到查詢用戶全部未讀消息的請求時,能夠基于位運算,快速查詢到未讀消息數(shù)量,緩解了檢索性能上的瓶頸。上述對消息狀態(tài)存儲方法進行了詳細的描述,下面,將對使用該消息狀態(tài)存儲的裝置以及計算機可讀存儲介質進行描述。如圖9所示,本發(fā)明提供的移動終端的實施例的結構示意圖,該移動終端90包括:存儲器901、處理器902。其中,存儲器901上存儲有消息狀態(tài)存儲方法程序并可以在處理器102上運行。處理器102運行存儲器101上的消息狀態(tài)存儲方法程序時,執(zhí)行如下步驟:建立用戶的標識信息與消息狀態(tài)列表的1:1映射;以及按照預設存儲規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表;所述預設存儲規(guī)則為:使用一個long類型字段的自然數(shù)標識所述用戶的64條消息的消息狀態(tài)。首先為每個用戶建立一個唯一的標識信息,如身份標識id,并將身份標識id與該用戶的消息狀態(tài)列表的1:1映射。該映射關系可以表示如下:id:0010100000000000……0000。其中,id表示用戶的身份標識,消息狀態(tài)列表中的0、1則表示用戶的消息狀態(tài);若0表示該消息已讀,1表示消息未讀,則上述例子表示第3條,第5條..等消息是未讀消息,其余是已讀消息。在本發(fā)明的所有實施例中,均以0表示該消息已讀,1表示消息未讀進行描述??梢岳斫獾氖牵部梢杂?表示該消息未讀,1表示消息已讀。其次按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表。由于在在計算機表示中,一個long字段的數(shù)據(jù)類型可以表示64位的0,1比特流。如17可以表示成(0000,0000,0000,…0000,0001,0001),因此,針對用戶的每64條消息狀態(tài),可以考慮用一個long字段來表示。因此,預設存儲規(guī)則可以是:使用一個long類型字段的自然數(shù)標識所述用戶的64條消息的消息狀態(tài)。舉例來說,如17(0000,0000,0000,…0000,0001,0001)則可以用來表示第1、5條消息未讀,其余消息已讀。又例如,若用戶的64條消息中,第1、2、3、4條消息全部為未讀消息,其余消息全部為已讀消息,那么按照存儲預設規(guī)則,消息狀態(tài)列表中存儲的long類型字段的自然數(shù)則為15。采用此種存儲方式進行消息狀態(tài)的存儲,當消息數(shù)量持續(xù)增加的時候,每增加64條消息,只需要多增加一個long類型的字段進行存儲。但是一個用戶始終只針對一行記錄,達到1:1的效果。經(jīng)過轉換,該行記錄的映射如下:id:n1,n2,…nn(ni表示一個0~264-1的數(shù)字)。每一個數(shù)字代表用戶的64條消息的消息狀態(tài)。本發(fā)明實施例的消息狀態(tài)存儲裝置,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以線性o(n)的性能進行增長。與現(xiàn)有技術相比,能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。需要說明的是,本發(fā)明實施例的消息狀態(tài)存儲程序在執(zhí)行按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表,具體執(zhí)行:初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài);當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。具體地,在按照預設規(guī)則初始化消息狀態(tài)列表時,將用戶的消息狀態(tài)全部置為未讀狀態(tài),即1111,1111,1111,.....1111的比特序列,那么表示成long類型之后,即為:id:264-1,264-1,…264-1,表示所有消息均未讀。其中,當消息狀態(tài)列表中的特定消息(如第i條消息)被用戶讀取之后,該第i條消息的消息狀態(tài)則由未讀狀態(tài)變?yōu)橐炎x狀態(tài),相應地,需要將該第i條消息的消息狀態(tài)置為已讀。因此,需要將代表第i條消息的消息狀態(tài)的比特位由1置為0。根據(jù)前文的描述可知,每一條消息都對應消息狀態(tài)列表中的一個自然數(shù)。那么,在將該第i條消息的消息狀態(tài)的比特位由1置為0時,第i條消息所屬的自然數(shù)在消息狀態(tài)列表中的順序或者說位置不會發(fā)生變化,只是自然數(shù)的數(shù)值會相應發(fā)生變化。因此,將第i條消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)的具體操作方法可以是:更新該第i條消息的消息狀態(tài)所屬自然數(shù)的數(shù)值。具體實現(xiàn)時,消息狀態(tài)存儲程序可以執(zhí)行如下步驟:在所述消息狀態(tài)列表中查詢所述特定消息的消息狀態(tài)所屬的自然數(shù)的順序t,數(shù)值k,并將所述數(shù)值k轉換為二進制表達式nk。使用公式nk1=nk&(~(1<<j)),j=i%64,得到更新后的所述特定消息的消息狀態(tài)所屬的順序為t的自然數(shù)的二進制表達式。以及,將所述二進制表達式nk1轉換為數(shù)值k1并作為順序為t的自然數(shù)的數(shù)值存入所述消息狀態(tài)列表中。根據(jù)前文的描述可知,若消息狀態(tài)列表中存儲有n個自然數(shù),即n1,n2,…nn(ni表示一個0~264-1的數(shù)字)。在用戶讀取第i條消息之后,需要更新該第i條消息的消息狀態(tài)所屬自然數(shù)的數(shù)值。在更新數(shù)值之前,首先需要在消息狀態(tài)列表中查找第i條消息所屬的自然數(shù)在消息狀態(tài)列表中的順序,以及當前的數(shù)值。其中,第i條消息在消息狀態(tài)列表中的順序可以通過如下公式(1)得到。在找出第i條消息的消息狀態(tài)具體由nk中的那個比特位表示時,并將該找出的比特位置0,同時還需要得到將該比特位置0之后,第i條消息所屬的順序為t的自然數(shù)的二進制表達式。在查找第i條消息具體由nk中的那個比特位表示,可以采用如下公式(2)。在將nk中第j位由未讀狀態(tài)變?yōu)橐炎x狀態(tài),例如由1置0,具體可以采用如下公式(3)。舉例來說,若用戶讀取第3條消息之后,則第3條消息的消息狀態(tài)應由未讀狀態(tài)變?yōu)橐炎x狀態(tài),此時,首先執(zhí)行公式(1),求出第3條消息的消息狀態(tài)所屬的自然數(shù)在消息狀態(tài)列表中的順序為t=1,然后讀取消息狀態(tài)列表中順序為1的自然數(shù)的數(shù)值k,假設k=15。然后將15轉換為二進制表達式nk,即1111。即是說,用戶的第1、2、3、4條消息的消息狀態(tài)均為未讀狀態(tài)。其次,采用公式(2)求出第3條消息具體由nk中的那個比特位表示,即j=2。然后按照公式(3)求出第2條消息的消息狀態(tài)置0之后,第3條消息所屬的第一個自然數(shù)的二進制表達式。具體操作時,首先1<<j得到0100,僅有第j位是1,其余均為0。然后執(zhí)行~(1<<j)取反操作,得到1011僅有第j位是0,其余都是1。然后執(zhí)行nk&(~(1<<j)),即1111&1011=1011僅將第j位設成0,這樣就實現(xiàn)了將第j比特位置0,而其余比特位的數(shù)值保持不變。本發(fā)明實施例的消息狀態(tài)存儲裝置,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以o(n)的性能進行增長。當用戶讀取某條消息之后,能夠快速將該消息由未讀只為已讀并存入消息狀態(tài)列表。與現(xiàn)有技術相比,本發(fā)明實施例能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。需要說明的第二點是,由于預設存儲規(guī)則進行存儲時,存儲的用戶消息的消息狀態(tài)的數(shù)量是有限的,當用戶的消息狀態(tài)數(shù)量超過消息狀態(tài)列表的最大容量max之后,即nn也已經(jīng)被未讀消息數(shù)量使用完畢,此時可以考慮按照消息發(fā)布的先后順序,重新依次復用消息狀態(tài)列表中的字段ni(i從1開始復用)。下面,將進行詳細描述。當用戶的消息數(shù)量超過消息狀態(tài)列表的最大容量max的時候,即nn也已經(jīng)被未讀消息數(shù)量使用完畢,此時可以考慮按照消息發(fā)布的先后順序,重新依次復用消息狀態(tài)列表中的字段ni(i從1開始復用)。復用公式為上述公式(4)。例如,發(fā)布第max+1條消息的時候,由于消息數(shù)量已經(jīng)超過消息最大容量max,此時可以認為第一條發(fā)布的消息可以認為無效了。那么,可以將max+1條消息的消息狀態(tài)可以使用第1條消息所屬的自然數(shù)來存儲,即使用n1存儲。即是說,當消息達到一定數(shù)值后,可以重新復用消息狀態(tài)列表中已有的字段。這樣,即使在用戶數(shù)量激增以及消息數(shù)量增長的時候,本發(fā)明實施例只用有限數(shù)量的空間開銷,便可完成未讀消息的存儲,突破性的提高了空間的利用率,大大降低了空間存儲。可以理解的是,由于本實施例支持對消息狀態(tài)列表中字段的循環(huán)使用,那么相應地,當特定消息(第i條消息)被用戶讀取之后,在更新第i條消息的消息狀態(tài)所屬的自然數(shù)的數(shù)值時,也會做相應的調整。具體調整如下:第一,在求取第i條消息在消息狀態(tài)列表中的順序可以通過公式(5)得到第二,在查找第i條消息具體由nk中的那個比特位表示時,可以通過公式(6)得到。當然,在將nk中第j位由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,例如由1置0,仍采用上述公式(3)。只是公式(3)中,i,j的取值與圖4所示的實施例不同。需要說明的是,在按照上述實施例所述的方法存儲用戶的消息狀態(tài)之后,若接收到查詢該用戶全部未讀消息的請求時,則需要從消息狀態(tài)列表中查詢用戶的全部未讀消息,具體是查詢消息狀態(tài)列表中存儲的自然數(shù)轉換為二進制時比特位為1的具體數(shù)量和位置。具體地,當接收到查詢全部未讀消息的請求時,還查詢所述用戶的未讀消息的數(shù)量??梢岳斫獾氖?,由于消息狀態(tài)列表中存儲的是long字段,且用比特位1表示消息未讀,因此在查詢用戶的未讀消息的數(shù)量時,則轉換為查詢消息狀態(tài)列表中存儲的是long字段中比特位1的數(shù)量。首先,需要查詢消息狀態(tài)列表中存儲的所有自然數(shù),即所有的long字段。在查詢到所有自然數(shù)之后,還將查詢到的所有自然數(shù)的數(shù)值轉換為對應的二進制表達式。最后,查詢所有自然數(shù)對應的二進制表達式中的“1”的數(shù)量,從而得到用戶未讀消息的數(shù)量。在查詢所有自然數(shù)對應的二進制表達式中的“1”的數(shù)量時,具體是分別查詢每個自然數(shù)對應的二進制表達式中的“1”的數(shù)量,然后將查詢到的每一個自然數(shù)對應的二進制表達式中的“1”的數(shù)量進行統(tǒng)計,疊加,即可得到所有自然數(shù)對應的二進制表達式中的“1”的數(shù)量。在查詢每個自然數(shù)對應的二進制表達式中的“1”的數(shù)量,具體可以采用如下方法:首先,使用公式(7)和(8)得到某一自然數(shù)對應二進制表達式中最低位“1”的位置。舉例來說,若消息狀態(tài)列表中存儲的自然數(shù)的數(shù)值為17,那么其對應的二進制表達為0000,0000,0000,....,0000,0001,0001。在采用公式(7)和(8)查詢0000,0000,0000,....,0000,0001,0001最低位“1”的位置時,具體如下:首先,使用公式(7),即17-1=17&(17-1),對應的二進制表達為:0000,0000,0000,....,0000,0001,0001&0000,0000,0000,....,0000,0001,0000----------------------------------------------------------------0000,0000,0000,....,0000,0001,0000本步驟的目的是:刪除最低位的“1”。然后使用公式(8),即c=16^17,即:0000,0000,0000,....,0000,0001,0000^0000,0000,0000,....,0000,0001,0001----------------------------------------------------------------0000,0000,0000,....,0000,0000,0001c便是經(jīng)過一輪計算以后,得到的最后一位“1”的位置。在找出最后一位“1”的位置之后,將m-1賦值給m,繼續(xù)執(zhí)行m-1=m&(m-1),c=m^(m-1),查詢所述二進制表達式中最低位的“1”的位置,直到m-1的值為0,便終止運算,得到數(shù)值為m的自然數(shù)對應的“1”的數(shù)量。實踐發(fā)現(xiàn),當m中有多少個1的時候,只要循環(huán)多少次結束運算,并且得到了所有1的位置。需要說明的是,若消息狀態(tài)列表中的字段經(jīng)過循環(huán)利用之后,目前得到1的位置不是最新記錄最新消息的未讀位置。該循環(huán)方案最多記錄max條消息記錄,所以要得到最新的未讀消息數(shù)量,需要做一個轉換:n=最新消息id-max+n,n表示最新的未讀消息數(shù)量。本發(fā)明實施例的消息狀態(tài)存儲裝置,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以o(n)的性能線性進行增長。當用戶讀取某條消息之后,能夠快速將該消息由未讀只為已讀并存入消息狀態(tài)列表。與現(xiàn)有技術相比,本發(fā)明實施例能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。并且,當消息達到一定數(shù)值后,可以重新復用消息狀態(tài)列表中已有的字段。這樣,即使在用戶數(shù)量激增以及消息數(shù)量增長的時候,本發(fā)明實施例只用有限數(shù)量的空間開銷,便可完成未讀消息的存儲,突破性的提高了空間的利用率,大大降低了空間存儲。另外,當接收到查詢用戶全部未讀消息的請求時,能夠基于位運算,快速查詢到未讀消息數(shù)量,緩解了檢索性能上的瓶頸。相應地,本發(fā)明實施例還提供了一種計算機可讀存儲介質,所述計算機可讀存儲介質存儲有消息狀態(tài)存儲程序,當該消息狀態(tài)存儲程序被至少一個處理器執(zhí)行時實現(xiàn)如下步驟:建立用戶的標識信息與消息狀態(tài)列表的1:1映射;按照預設存儲規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表;所述預設存儲規(guī)則為:使用一個long類型字段的自然數(shù)標識所述用戶的64條消息的消息狀態(tài)。其中,所述按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表,包括:初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài);當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。其中,所述更新所述特定消息的消息狀態(tài)所屬的自然數(shù)的數(shù)值,包括:在所述消息狀態(tài)列表中查詢所述特定消息的消息狀態(tài)所屬的自然數(shù)的順序t,數(shù)值k,并將所述數(shù)值k轉換為二進制表達式nk;其中,t=i/64;使用公式nk1=nk&(~(1<<j)),j=i%64,得到更新后的所述特定消息的消息狀態(tài)所屬的順序為t的自然數(shù)的二進制表達式;將所述二進制表達式nk1轉換為數(shù)值k1并作為順序為t的自然數(shù)的數(shù)值存入所述消息狀態(tài)列表中;其中,nk表示該特定消息未讀取之前所屬的自然數(shù)的數(shù)值k的二進制表達式,j表示該特定消息的消息狀態(tài)由順序為t的自然數(shù)的第j位表示,i表示該特定消息的消息順序,nk1表示該特定消息被讀取之后所屬的順序為t的自然數(shù)的二進制表達式。其中,當所述用戶的消息狀態(tài)數(shù)量超過所述消息狀態(tài)列表的最大容量max之后,所述按照預設規(guī)則將所述用戶的消息狀態(tài)存入所述消息狀態(tài)列表,包括:按照所述用戶的消息發(fā)布的先后順序以及公式i=(id%max)/64復用所述消息狀態(tài)列表;其中,id表示復用前所述用戶的消息順序,i表示復用后所述用戶的消息順序;初始化所述消息狀態(tài)列表,將所述用戶的消息狀態(tài)全部置為未讀狀態(tài);當所述消息狀態(tài)列表中特定消息的消息狀態(tài)由未讀狀態(tài)變?yōu)橐炎x狀態(tài)時,更新所述特定消息的消息狀態(tài)所屬自然數(shù)的數(shù)值,以將所述特定消息的消息狀態(tài)由未讀狀態(tài)置為已讀狀態(tài)。其中,所述更新所述特定消息的消息狀態(tài)所屬的自然數(shù)的數(shù)值,包括:在所述消息狀態(tài)列表中查詢所述特定消息的消息狀態(tài)所屬的自然數(shù)的順序t,數(shù)值k,并將所述數(shù)值k轉換為二進制表達式nk;其中,t=(i%max)/64;使用公式nk1=nk&(~(1<<j)),j=i%max%64,得到更新后的所述特定消息的消息狀態(tài)所屬的順序為t的自然數(shù)的二進制表達式;將所述二進制表達式nk1轉換為數(shù)值k1并作為順序為t的自然數(shù)的數(shù)值存入所述消息狀態(tài)列表中;其中,nk表示該特定消息未讀取之前所屬的自然數(shù)的數(shù)值k的二進制表達式,j表示該特定消息的消息狀態(tài)由順序為t的自然數(shù)的第j位表示,i表示該特定消息的消息順序,nk1表示該特定消息被讀取之后所屬的順序為t的自然數(shù)的二進制表達式。其中,所述方法還包括:當接收到查詢全部未讀消息的請求時,查詢所述消息狀態(tài)列表中存儲的所有自然數(shù);若二進制格式中的“1”或“0”表示消息未讀狀態(tài)時,則查詢所有自然數(shù)對應的所述二進制表達式中的“1”或“0”的數(shù)量。其中,若所述二進制表達式中的“1”表示消息未讀狀態(tài)時,所述查詢所有自然數(shù)對應的所述二進制表達式中的“1”的數(shù)量,包括:查詢數(shù)值為m的自然數(shù)對應的所述二進制表達式的“1”的數(shù)量,具體如下:使用公式m-1=m&(m-1),c=m&(m-1),查詢數(shù)值為m的自然數(shù)對應的所述二進制表達式中最低位的“1”的位置;將m-1賦值給m,繼續(xù)執(zhí)行m-1=m&(m-1),c=m^(m-1),查詢所述二進制表達式中最低位的“1”的位置,直到m-1的值為0,得到數(shù)值為m的自然數(shù)對應的“1”的數(shù)量。本發(fā)明實施例的計算機可讀存儲介質,在存儲用戶的消息狀態(tài)時,首先建立用戶的標識信息與消息狀態(tài)列表的1:1映射,然后再按照一個long類型字段的自然數(shù)標識用戶64條消息的消息狀態(tài)的規(guī)則進行用戶消息狀態(tài)的存儲。這樣,即使用戶激增以及消息爆炸,所帶來的存儲空間的消耗也只以線性o(n)的性能進行增長。與現(xiàn)有技術相比,能夠使用較少的存儲空間存儲相同數(shù)量消息的消息狀態(tài)。需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例方法可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發(fā)明的技術方案本質上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(如rom/ram、磁碟、光盤)中,包括若干指令用以使得一臺終端設備(可以是手機,計算機,服務器,空調器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述的方法。以上僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的
技術領域
:,均同理包括在本發(fā)明的專利保護范圍內。當前第1頁12當前第1頁12
當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
华容县| 清水县| 菏泽市| 天全县| 高青县| 武陟县| 石嘴山市| 藁城市| 湾仔区| 伊宁市| 栾城县| 呈贡县| 兴宁市| 五河县| 磴口县| 犍为县| 岳阳县| 马边| 北安市| 车致| 柘城县| 龙口市| 新津县| 宣威市| 绥宁县| 蚌埠市| 河池市| 阿坝县| 三亚市| 凭祥市| 银川市| 兴和县| 台北市| 上饶县| 蓝山县| 聊城市| 本溪市| 体育| 西林县| 当阳市| 乡宁县|