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