本申請涉及軟件開發(fā),尤其涉及一種序列化和反序列化監(jiān)測方法、裝置及計算機(jī)設(shè)備。
背景技術(shù):
1、在日常的項目開發(fā)中,經(jīng)常會遇到需要將java的對象進(jìn)行序列化為字符串保存在文件中的情況,在需要使用時再將字符串反序列化為對應(yīng)的對象。或者是從服務(wù)端下發(fā)的字符串內(nèi)容反序列化為對應(yīng)的對象,以將對象的狀態(tài)信息轉(zhuǎn)換為可以存儲或傳輸?shù)母袷健?/p>
2、在項目在打包的過程中,出于減少包體大小、安全性等因素考量,會將類的字段、方法進(jìn)行混淆優(yōu)化,以減少包體積,提高安全性。在這一過程中,字段的名稱可能會發(fā)生改變,若在書寫代碼時遺漏了字段的注解,就會導(dǎo)致反序列化時不能通過鍵查找到對應(yīng)的值,使得反序列化失敗,影響業(yè)務(wù)的正常運(yùn)行。
技術(shù)實(shí)現(xiàn)思路
1、本申請的目的旨在至少能解決上述的技術(shù)缺陷之一,特別是現(xiàn)有技術(shù)中出于減少包體大小、安全性等因素考量,會將類的字段、方法進(jìn)行混淆優(yōu)化,以減少包體積,提高安全性。在這一過程中,字段的名稱可能會發(fā)生改變,若在書寫代碼時遺漏了字段的注解,就會導(dǎo)致反序列化時不能通過鍵查找到對應(yīng)的值,使得反序列化失敗,影響業(yè)務(wù)的正常運(yùn)行的技術(shù)缺陷。
2、第一方面,本申請?zhí)峁┝艘环N序列化和反序列化監(jiān)測方法,所述方法包括:
3、對序列化工具類、序列化方法和反序列化方法進(jìn)行調(diào)用監(jiān)測;
4、當(dāng)滿足預(yù)設(shè)的觸發(fā)條件時,確定目標(biāo)參數(shù);
5、在所述目標(biāo)參數(shù)中的各個字段中標(biāo)記帶有預(yù)設(shè)的目標(biāo)關(guān)鍵字的字段,并遍歷所述目標(biāo)參數(shù)中未標(biāo)記的字段,以檢查遍歷的各個字段是否有添加序列化名稱注解;所述目標(biāo)關(guān)鍵字用于標(biāo)識不需要序列化的字段;
6、若遍歷的各個字段中存在未添加所述序列化名稱注解的字段,則將遍歷的各個字段中未添加所述序列化名稱注解的字段確定為異常字段,并根據(jù)各個異常字段觸發(fā)異常提示。
7、在其中一個實(shí)施例中,所述觸發(fā)條件為:
8、監(jiān)測到存在參數(shù)傳入所述序列化工具類中,
9、或,
10、監(jiān)測到所述序列化方法或所述反序列化方法被調(diào)用。
11、在其中一個實(shí)施例中,所述確定目標(biāo)參數(shù)的步驟,包括:
12、當(dāng)監(jiān)測到存在參數(shù)傳入所述序列化工具類中時,將傳入的參數(shù)確定為目標(biāo)參數(shù)。
13、在其中一個實(shí)施例中,所述確定目標(biāo)參數(shù)的步驟,包括:
14、當(dāng)監(jiān)測到所述序列化方法或所述反序列化方法被調(diào)用時,將所調(diào)用的方法確定為目標(biāo)方法;
15、將所述目標(biāo)方法轉(zhuǎn)換為靜態(tài)方法,以從所述靜態(tài)方法中獲取傳入的目標(biāo)參數(shù)。
16、在其中一個實(shí)施例中,所述將所述目標(biāo)方法轉(zhuǎn)換為靜態(tài)方法的步驟,包括:
17、調(diào)用預(yù)設(shè)的asm庫將字節(jié)碼中與所述目標(biāo)方法對應(yīng)的代碼中的invokevirtual指令修改為invokestatic指令,以靜態(tài)方法調(diào)用所述目標(biāo)方法,以完成對所述目標(biāo)方法的轉(zhuǎn)換,并得到所述目標(biāo)方法對應(yīng)的靜態(tài)方法。
18、在其中一個實(shí)施例中,所述目標(biāo)關(guān)鍵字為transient?關(guān)鍵字;所述在所述目標(biāo)參數(shù)中的各個字段中標(biāo)記帶有預(yù)設(shè)的目標(biāo)關(guān)鍵字的字段的步驟,包括:
19、遍歷所述目標(biāo)參數(shù)中的每個字段,當(dāng)遍歷到帶有所述transient?關(guān)鍵字的字段時,對該字段進(jìn)行標(biāo)記。
20、在其中一個實(shí)施例中,所述根據(jù)各個異常字段觸發(fā)異常提示的步驟,包括:
21、根據(jù)各個異常字段,確定每個異常字段的代碼位置;
22、根據(jù)每個異常字段的代碼位置,分別確定各個異常字段的代碼位置對應(yīng)的跳轉(zhuǎn)鏈接;
23、根據(jù)每個異常字段的代碼位置對應(yīng)的跳轉(zhuǎn)鏈接,生成每個異常字段的異常信息,并拋出每個異常字段的異常信息。
24、第二方面,本申請?zhí)峁┝艘环N序列化和反序列化監(jiān)測裝置,所述裝置包括:
25、調(diào)用監(jiān)測模塊,用于對序列化工具類、序列化方法和反序列化方法進(jìn)行調(diào)用監(jiān)測;
26、參數(shù)確定模塊,用于當(dāng)滿足預(yù)設(shè)的觸發(fā)條件時,確定目標(biāo)參數(shù);
27、遍歷檢查模塊,用于在所述目標(biāo)參數(shù)中的各個字段中標(biāo)記帶有預(yù)設(shè)的目標(biāo)關(guān)鍵字的字段,并遍歷所述目標(biāo)參數(shù)中未標(biāo)記的字段,以檢查遍歷的各個字段是否有添加序列化名稱注解;所述目標(biāo)關(guān)鍵字用于標(biāo)識不需要序列化的字段;
28、異常提示模塊,用于若遍歷的各個字段中存在未添加所述序列化名稱注解的字段,則將遍歷的各個字段中未添加所述序列化名稱注解的字段確定為異常字段,并根據(jù)各個異常字段觸發(fā)異常提示。
29、第三方面,本申請?zhí)峁┝艘环N存儲介質(zhì),所述存儲介質(zhì)中存儲有計算機(jī)可讀指令,所述計算機(jī)可讀指令被一個或多個處理器執(zhí)行時,使得一個或多個處理器執(zhí)行如上述任一項實(shí)施例所述序列化和反序列化監(jiān)測方法的步驟。
30、第四方面,本申請?zhí)峁┝艘环N計算機(jī)設(shè)備,包括:一個或多個處理器,以及存儲器;
31、所述存儲器中存儲有計算機(jī)可讀指令,所述一個或多個處理器執(zhí)行時所述計算機(jī)可讀指令時,執(zhí)行如上述任一項實(shí)施例所述序列化和反序列化監(jiān)測方法的步驟。
32、從以上技術(shù)方案可以看出,本申請實(shí)施例具有以下優(yōu)點(diǎn):
33、本申請?zhí)峁┑男蛄谢头葱蛄谢O(jiān)測方法、裝置及計算機(jī)設(shè)備,該方法包括:對序列化工具類、序列化方法和反序列化方法進(jìn)行調(diào)用監(jiān)測,當(dāng)滿足預(yù)設(shè)的觸發(fā)條件時,確定所要檢查的目標(biāo)參數(shù),為了排除不需要序列化的字段,在目標(biāo)參數(shù)中的各個字段中標(biāo)記帶有預(yù)設(shè)的目標(biāo)關(guān)鍵字的字段,然后遍歷目標(biāo)參數(shù)中未標(biāo)記的字段,以檢查遍歷的各個字段是否有添加序列化名稱注解,若遍歷的各個字段中存在未添加所述序列化名稱注解的字段,則將這些字段確定為異常字段,并根據(jù)各個異常字段觸發(fā)異常提示。通過對需要添加但未添加序列化名稱注解的字段進(jìn)行異常提示,以提醒開發(fā)人員處理,避免項目上線或開發(fā)測試階段才發(fā)現(xiàn)這一問題,導(dǎo)致業(yè)務(wù)因反序列化失敗而產(chǎn)生異常,以提升項目管理以及風(fēng)險管理的水平。
1.一種序列化和反序列化監(jiān)測方法,其特征在于,所述方法包括:
2.根據(jù)權(quán)利要求1所述的序列化和反序列化監(jiān)測方法,其特征在于,所述觸發(fā)條件為:
3.根據(jù)權(quán)利要求1或2所述的序列化和反序列化監(jiān)測方法,其特征在于,所述確定目標(biāo)參數(shù)的步驟,包括:
4.根據(jù)權(quán)利要求1或2所述的序列化和反序列化監(jiān)測方法,其特征在于,所述確定目標(biāo)參數(shù)的步驟,包括:
5.根據(jù)權(quán)利要求4所述的序列化和反序列化監(jiān)測方法,其特征在于,所述將所述目標(biāo)方法轉(zhuǎn)換為靜態(tài)方法的步驟,包括:
6.根據(jù)權(quán)利要求1所述的序列化和反序列化監(jiān)測方法,其特征在于,所述目標(biāo)關(guān)鍵字為transient?關(guān)鍵字;所述在所述目標(biāo)參數(shù)中的各個字段中標(biāo)記帶有預(yù)設(shè)的目標(biāo)關(guān)鍵字的字段的步驟,包括:
7.根據(jù)權(quán)利要求1所述的序列化和反序列化監(jiān)測方法,其特征在于,所述根據(jù)各個異常字段觸發(fā)異常提示的步驟,包括:
8.一種序列化和反序列化監(jiān)測裝置,其特征在于,所述裝置包括:
9.一種存儲介質(zhì),其特征在于:所述存儲介質(zhì)中存儲有計算機(jī)可讀指令,所述計算機(jī)可讀指令被一個或多個處理器執(zhí)行時,使得一個或多個處理器執(zhí)行如權(quán)利要求1至7中任一項所述序列化和反序列化監(jiān)測方法的步驟。
10.一種計算機(jī)設(shè)備,其特征在于,包括:一個或多個處理器,以及存儲器;