本發(fā)明涉及數(shù)據(jù)存儲(chǔ)領(lǐng)域,特別涉及一種日志鏈表數(shù)據(jù)在存儲(chǔ)器中的讀寫方法。
背景技術(shù):
數(shù)據(jù)在存儲(chǔ)器中存儲(chǔ)時(shí)通常遵循先進(jìn)先出的方式,即越新存儲(chǔ)的數(shù)據(jù),存儲(chǔ)位置越靠后。日志數(shù)據(jù)在存儲(chǔ)時(shí)也不例外。但采用ui界面顯示日志數(shù)據(jù)時(shí),需要顯示最新的數(shù)據(jù),即最新的日志數(shù)據(jù)最先顯示,若在顯示時(shí)有新到的日志數(shù)據(jù),則還需要實(shí)時(shí)刷新顯示。
數(shù)據(jù)存儲(chǔ)順序與日志數(shù)據(jù)顯示順序的不一致,導(dǎo)致日志數(shù)據(jù)在顯示時(shí)速度較慢,實(shí)時(shí)性不強(qiáng)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服已有的日志數(shù)據(jù)存儲(chǔ)順序與日志數(shù)據(jù)顯示順序不一致,造成日志數(shù)據(jù)顯示速度慢、實(shí)時(shí)性不強(qiáng)的缺陷,從而提供一種能有效提高日志顯示速度的日志鏈表數(shù)據(jù)讀寫方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種日志鏈表數(shù)據(jù)在存儲(chǔ)器中的寫方法,包括:
步驟101)、初始化寫地址warnsave和讀地址pageaddr;其中,
所述寫地址warnsave包含兩個(gè)元素:addr和num,其中的addr代表了最新記錄的存儲(chǔ)地址,num代表了一共存儲(chǔ)的記錄個(gè)數(shù);在初始化寫地址warnsave時(shí),num的數(shù)值為0,addr的大小為:一個(gè)記錄長(zhǎng)度×待存儲(chǔ)的記錄個(gè)數(shù);其中,在日志數(shù)據(jù)存儲(chǔ)時(shí),待存儲(chǔ)的記錄個(gè)數(shù)是已知值;
所述讀地址pageaddr僅包含地址元素;
步驟102)當(dāng)有新的日志記錄時(shí),將該新的日志記錄按照從高地址到低地址的順序?qū)懭氪鎯?chǔ)器,寫地址warnsave減去一個(gè)記錄的長(zhǎng)度,并將最新的寫地址warnsave賦予讀地址pageaddr。
上述技術(shù)方案中,所述步驟102)進(jìn)一步包括:
102-1)、當(dāng)有新的日志需要存儲(chǔ)時(shí),以寫地址warnsave中的addr元素的當(dāng)前數(shù)值所代表的存儲(chǔ)器地址作為寫操作的起始地址,然后按照從高地址到低地址的順序 在一段存儲(chǔ)單元存儲(chǔ)數(shù)據(jù);
步驟102-2)、修改寫地址warnsave中的addr元素的數(shù)值,即將其數(shù)值減去當(dāng)前所存儲(chǔ)的日志記錄的長(zhǎng)度,并為寫地址warnsave中的num元素值加1;
步驟102-3)、將寫地址warnsave中的addr元素的新的數(shù)值賦予讀地址pageaddr。
本發(fā)明還提供了一種日志鏈表數(shù)據(jù)在存儲(chǔ)器中的讀方法,用于對(duì)所述的寫方法所存儲(chǔ)的日志鏈表數(shù)據(jù)進(jìn)行讀取,包括:
步驟201)、從讀地址pageaddr開始,按照從低地址開始向高地址的順序從存儲(chǔ)器中讀取日志數(shù)據(jù),判斷當(dāng)前所讀取的日志數(shù)據(jù)的大小能否達(dá)到一頁(yè)的顯示規(guī)模,如果是,執(zhí)行下一步,否則,執(zhí)行步驟203);
步驟202)、顯示當(dāng)前頁(yè)的日志數(shù)據(jù),然后將讀地址pageaddr減去頁(yè)數(shù)乘以每頁(yè)的個(gè)數(shù),接著重新執(zhí)行步驟201);
步驟203)、顯示當(dāng)前頁(yè)的日志數(shù)據(jù),結(jié)束讀取操作。
本發(fā)明的優(yōu)點(diǎn)在于:
本發(fā)明在顯示日志數(shù)據(jù)時(shí)實(shí)時(shí)性強(qiáng),顯示速度快。
附圖說明
圖1是日志在gui上顯示的示意圖;
圖2是日志鏈表數(shù)據(jù)在存儲(chǔ)器中的存儲(chǔ)示意圖。
具體實(shí)施方式
現(xiàn)結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步的描述。
圖1為日志在gui上顯示的示意圖,如圖所示,日志在gui上以頁(yè)的形式顯示,每頁(yè)有多條記錄。在機(jī)器運(yùn)行過程中,會(huì)存在多個(gè)這樣的頁(yè),具備上翻、下翻頁(yè)等功能,并且有新日志時(shí),需要實(shí)時(shí)更新頁(yè)顯示的內(nèi)容。
下面結(jié)合圖2對(duì)日志鏈表數(shù)據(jù)在存儲(chǔ)器中的讀寫方法進(jìn)行說明。該方法包括:
步驟101)、初始化寫地址warnsave和讀地址pageaddr。其中,
所述寫地址warnsave包含兩個(gè)元素:addr和num,其中的addr代表了最新記錄的存儲(chǔ)地址,num代表了一共存儲(chǔ)的記錄個(gè)數(shù)。在初始化寫地址warnsave時(shí),num的數(shù)值為0,addr的大小為:一個(gè)記錄長(zhǎng)度×待存儲(chǔ)的記錄個(gè)數(shù);其中,在日志存儲(chǔ) 時(shí),待存儲(chǔ)的記錄個(gè)數(shù)是已知值。
所述讀地址pageaddr僅包含地址元素,在初始化讀地址pageaddr時(shí),其值為最新的寫地址warnsave的值。
步驟102)當(dāng)有新的日志記錄時(shí),將該新的日志記錄按照從高地址到低地址的順序?qū)懭氪鎯?chǔ)器,warnsave減去一個(gè)記錄的長(zhǎng)度。
以圖2所示的fram存儲(chǔ)器為例,該存儲(chǔ)器的下方表示低地址,上方表示高地址。當(dāng)有新的日志需要存儲(chǔ)時(shí),以寫地址warnsave中的addr元素的當(dāng)前數(shù)值所代表的存儲(chǔ)器地址作為寫操作的起始地址,然后按照從高地址到低地址的順序在一段存儲(chǔ)單元存儲(chǔ)數(shù)據(jù)。完成寫操作后,修改寫地址warnsave中的addr元素的數(shù)值,即將其數(shù)值減去當(dāng)前所存儲(chǔ)的日志記錄的長(zhǎng)度,并為寫地址warnsave中的num元素值加1。此外,還需要寫地址warnsave中的addr元素的新的數(shù)值賦予讀地址pageaddr。
按照本發(fā)明的方法存儲(chǔ)日志后,在讀取日志數(shù)據(jù)時(shí),按照如下步驟實(shí)現(xiàn):
步驟201)、從讀地址pageaddr開始,按照從低地址開始向高地址的順序從存儲(chǔ)器中讀取日志數(shù)據(jù),判斷當(dāng)前所讀取的日志數(shù)據(jù)的大小能否達(dá)到一頁(yè)的顯示規(guī)模,如果是,執(zhí)行下一步,否則,執(zhí)行步驟203);
步驟202)、顯示當(dāng)前頁(yè)的日志數(shù)據(jù),然后將讀地址pageaddr減去頁(yè)數(shù)乘以每頁(yè)的個(gè)數(shù),接著重新執(zhí)行步驟201);
步驟203)、顯示當(dāng)前頁(yè)的日志數(shù)據(jù),結(jié)束讀取操作。
最后所應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參照實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。