本申請涉及數(shù)據(jù)存儲,尤其涉及一種數(shù)據(jù)存儲方法、設備及存儲介質(zhì)。
背景技術:
1、在圖像信號處理(image?signal?processing,isp)技術領域,isp可調(diào)試參數(shù)多達成百上千,這些isp參數(shù)在調(diào)試完成會存儲至設備的flash中,在下次設備上電時加載該flash并應用以得到對應的圖像。目前程序中的isp參數(shù)使用c語言結構體變量進行描述,一般的做法將結構體變量以二進制的方式寫入flash形成bin文件并存儲,在下次使用時直接調(diào)用flash中的bin文件,但結構體變量改變時,整個bin文件便無法使用了。
2、目前,是對結構體變量做序列化,變成json格式,用變量名做key進行存儲附加在bin文件的后面,加載的時候如果發(fā)現(xiàn)結構體變量較之前有變化則解析bin文件后面的json文件以恢復可用的參數(shù)。但這種方式存在存儲isp參數(shù)時需要消耗較大的flash空間大和解析時需要消耗較大的內(nèi)存空間和耗費較長的時間的問題。
3、因此,如何減小存儲結構體變量數(shù)據(jù)所需的flash空間以及減小解析結構體變量數(shù)據(jù)所需的內(nèi)存空間和解析耗時是目前亟待解決的問題。
技術實現(xiàn)思路
1、本申請的主要目的在于提供一種數(shù)據(jù)存儲方法、設備及存儲介質(zhì),旨在減小存儲結構體變量數(shù)據(jù)所需的flash空間以及減小解析結構體變量數(shù)據(jù)所需的內(nèi)存空間和解析耗時,進而提高結構體變量數(shù)據(jù)加載效率和準確性。
2、第一方面,本申請?zhí)峁┮环N數(shù)據(jù)存儲方法,所述數(shù)據(jù)存儲方法包括以下步驟:
3、獲取待存儲的源代碼結構體數(shù)據(jù),所述源代碼結構體數(shù)據(jù)中包括多個結構體變量;
4、基于所述源代碼結構體數(shù)據(jù)的語法結構對各所述結構體變量進行抽象語法樹構建,得到數(shù)據(jù)抽象語法樹;
5、對所述數(shù)據(jù)抽象語法樹的每個節(jié)點的結構體變量進行結構體變量編碼,得到每個所述結構體變量唯一的索引條目,所述索引條目用于描述節(jié)點結構體信息;
6、將多個所述索引條目組成的索引表和源代碼結構體數(shù)據(jù)進行區(qū)分存儲,所述索引表用于描述所述源代碼結構體數(shù)據(jù)中各結構體數(shù)據(jù)的位置。
7、第二方面,本申請還提供一種終端設備,所述終端設備包括處理器、存儲器、以及存儲在所述存儲器上并可被所述處理器執(zhí)行的計算機程序,其中所述計算機程序被所述處理器執(zhí)行時,實現(xiàn)如上述的數(shù)據(jù)存儲方法的步驟。
8、第三方面,本申請還提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)上存儲有計算機程序,其中所述計算機程序被處理器執(zhí)行時,實現(xiàn)如上述的數(shù)據(jù)存儲方法的步驟。
9、本申請?zhí)峁┮环N數(shù)據(jù)存儲方法、設備及存儲介質(zhì),本申請通過獲取待存儲的源代碼結構體數(shù)據(jù),該源代碼結構體數(shù)據(jù)中包括多個結構體變量;然后基于源代碼結構體數(shù)據(jù)的語法結構對各結構體變量進行抽象語法樹構建,能夠準確地得到數(shù)據(jù)抽象語法樹;對數(shù)據(jù)抽象語法樹的每個節(jié)點的結構體變量進行結構體變量編碼,得到每個結構體變量唯一的索引條目,該索引條目用于描述節(jié)點結構體信息;之后將多個所述索引條目組成的索引表和源代碼結構體數(shù)據(jù)進行區(qū)分存儲,索引表用于描述源代碼結構體數(shù)據(jù)中各結構體數(shù)據(jù)的位置。本申請中通過將多個所述索引條目組成的索引表和源代碼結構體數(shù)據(jù)進行區(qū)分存儲中,能夠有效地減小存儲結構體變量數(shù)據(jù)所需的flash空間,并在數(shù)據(jù)加載時通過索引表能夠快速地找到所需的結構體變量數(shù)據(jù),有效地減小解析結構體變量數(shù)據(jù)所需的內(nèi)存空間和解析耗時,進而提高結構體變量數(shù)據(jù)加載效率和準確性。
1.一種數(shù)據(jù)存儲方法,其特征在于,包括:
2.如權利要求1所述的數(shù)據(jù)存儲方法,其特征在于,所述對所述數(shù)據(jù)抽象語法樹的每個節(jié)點的結構體變量進行結構體變量編碼,得到每個所述結構體變量唯一的索引條目,包括:
3.如權利要求2所述的數(shù)據(jù)存儲方法,其特征在于,所述初始索引條目包括id、變量索引數(shù)、變量所占空間大小和變量單個實體的空間大?。凰龈鶕?jù)所述數(shù)據(jù)抽象語法樹的結構關系對每個節(jié)點的結構體變量賦予編號信息,得到每個所述結構體變量的初始索引條目,包括:
4.如權利要求3所述的數(shù)據(jù)存儲方法,其特征在于,所述根據(jù)數(shù)據(jù)抽象語法樹的結構關系分別確定每個節(jié)點的所述結構體變量的變量索引數(shù),包括:
5.如權利要求4所述的數(shù)據(jù)存儲方法,其特征在于,所述確定所述結構體變量所處的節(jié)點是否為葉節(jié)點之后,還包括:
6.如權利要求1所述的數(shù)據(jù)存儲方法,其特征在于,所述方法還包括:
7.如權利要求1-6任一項所述的數(shù)據(jù)存儲方法,其特征在于,所述方法還包括:
8.如權利要求1-6任一項所述的數(shù)據(jù)存儲方法,其特征在于,所述方法還包括:
9.一種終端設備,其特征在于,所述終端設備包括處理器、存儲器、以及存儲在所述存儲器上并可被所述處理器執(zhí)行的計算機程序,其中所述計算機程序被所述處理器執(zhí)行時,實現(xiàn)如權利要求1至8中任一項所述的數(shù)據(jù)存儲方法的步驟。
10.一種計算機可讀存儲介質(zhì),其特征在于,所述計算機可讀存儲介質(zhì)上存儲有計算機程序,其中所述計算機程序被處理器執(zhí)行時,實現(xiàn)如權利要求1至8中任一項所述的數(shù)據(jù)存儲方法的步驟。