第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

當(dāng)java提供API來執(zhí)行序列化框架時(shí),什么需要選擇序列化框架?

當(dāng)java提供API來執(zhí)行序列化框架時(shí),什么需要選擇序列化框架?

夢里花落0921 2023-08-16 09:47:23
我正在閱讀有關(guān) Avro 的內(nèi)容,并且正在嘗試比較 avro 與 java 序列化系統(tǒng)。但不知怎的,我無法判斷為什么 avro 用于數(shù)據(jù)序列化而不是 java 序列化。事實(shí)上,為什么要出現(xiàn)另一個(gè)系統(tǒng)來取代java序列化系統(tǒng)呢?以下是我的理解的總結(jié)。要使用 java 序列化功能,我們必須使此類實(shí)現(xiàn)可序列化接口。如果您這樣做并序列化對象,那么在反序列化期間,類似e = (Employee) in.readObject();接下來我們可以使用 getter/setter 來處理員工對象。在 avro 中,首先是模式定義。接下來是使用 avro API 進(jìn)行序列化。再次關(guān)于反序列化,有類似的事情。接下來我們可以使用 getter/setter 來處理員工對象。問題是我沒有看到任何區(qū)別,只是使用它的 API 不同?誰能澄清我的疑問嗎?public AvroHttpRequest deSerealizeAvroHttpRequestJSON(byte[] data) {DatumReader<AvroHttpRequest> reader     = new SpecificDatumReader<>(AvroHttpRequest.class);    Decoder decoder = null;    try {        decoder = DecoderFactory.get().jsonDecoder(          AvroHttpRequest.getClassSchema(), new String(data));        return reader.read(null, decoder);    } catch (IOException e) {        logger.error("Deserialization error:" + e.getMessage());    }}接下來我們可以使用 getter/setter 來處理員工對象。問題是我沒有看到這兩種方法之間有任何區(qū)別。兩者都做同樣的事情。只是 API 不同嗎?誰能幫助我更好地理解這一點(diǎn)?
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊

內(nèi)置的 java 序列化有一些相當(dāng)顯著的缺點(diǎn)。例如,如果不仔細(xì)考慮,您可能無法反序列化一個(gè)可能沒有更改數(shù)據(jù)、僅更改了類方法的對象。

您還可以創(chuàng)建一個(gè)情況,其中串行 uid 相同(手動(dòng)設(shè)置),但由于兩個(gè)系統(tǒng)之間的類型不兼容而實(shí)際上無法反序列化。

第三方序列化庫可以通過使用抽象映射將數(shù)據(jù)配對在一起來幫助緩解這種情況。精心設(shè)計(jì)的序列化庫甚至可以提供對象不同版本之間的映射。

最后,第三方序列化庫的錯(cuò)誤處理通常對開發(fā)人員或操作員更有用。


查看完整回答
反對 回復(fù) 2023-08-16
  • 1 回答
  • 0 關(guān)注
  • 118 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)