Serialization hauv java – Cas nws xwb?

Java Serialization

Kwv serialization yog tus tsav haus dejcawv cov kev peev xwm tseg tau ib daim teb ntawd thiab muaj lwm yam khoom uas nws chiv keeb rau ib cov kwj tso zis ntau lawm (lwm cov ntaub ntawv); kom tus tsav haus dejcawv yuav tau recreated ntawm cov serialized luam ib lub sij hawm tom qab li thiab thaum yuav tsum tau.

Java kwv serialization, ua tswvcuab yog ib txoj kev tshiab feature teeb khoom siv kev loj hlob Java 1.1, muaj ib tug feature txia ib pab los yog ib tug twj paj nruas nkaus xwb rau ib tug kwj ntawm khoom, los yog array ntawm bytes storing los sis xa pem lub network xws li ces cov saum no hais kwj ntawm khoom los ntawm bytes array yuav tau transformed rov qab mus rau lub Java khoom. Feem ntau tag nrho cov qhov zoo li yeej vim yog lub ObjectInputStream thiab ObjectOutputStream kawm. Tus programmer yuav xaiv kom muaj kev muaj nuj nqi no uas yog cov Serializable interface thaum tsim cov chav kawm ntawv.

Txoj kev uas muaj serialization no los yog deflating los sis marshalling ib yam twj paj nruas, thiab de-serialization hu ua inflating los sis tsis marshalling.

Serialization yog tus mechanism uas muaj muaj peev xwm ua ib yam twj paj nruas sau tau ib daim qauv ntawm nws thiab tag nrho rau lwm yam ntawd neeg ua tim khawv nyob rau hauv cov ntaub ntawv los ntawm cov hoob kawm ObjecctOutputStream ib lwm. Nws yuav sau cov ntaub ntawv lug, los, Jframes, los yog ib yam twj paj nruas irrespective of nws cov hom. Thaum serializing tus tsav haus dejcawv khaws nws cov lus rau hom twj paj nruas mas li vim lub sijhawm de-serializing no tawm mus ua si rau recreate pes tsawg hom twj paj nruas uas yog.

Yog li serialization qhia cov kev pab nram qab no:

  • Lub kaw lus rau persisting nruas, xws li; sau ntawv rau lawv cov khoom rau lwm cov ntaub ntawv los sis disk, los yog txuag cia rau ib database.
  • Lub zog rau tej thaj chaw deb txoj kev hais lus.
  • Lub kaw lus rau distributing khoom, Piv txwv li hauv software Cheebtsam li COM, NAB RAJKUBSAI.
  • Lub kaw lus rau taw tau kev hloov sij hawm ua ntaub ntawv.

Nkaus to taub serialization ib tug yuav tsum muaj ib tug to taub lub nruas Persistence thiab ntws. Ntawm no peb yuav piav me ntsis ntawm neb li ntawd xwb, nco ntsoov qhia peb xwb. Dab lawv txhua yuav coj ib tshooj cais nyob rau nws tus kheej.








Ntws:

Txhua qhov kev pab cuam yuav tsum mus sau nws cov ntaub ntawv no rau ib qhov chaw los yog cov channel, txhua qhov kev pab cuam uas pab nyeem cov ntaub ntawv ntawm ib channel thiab. Nyob rau hauv Java no raws qhov twg ib qho kev sau los nyeem nws tej ntaub ntawv uas hu ua Kwj.

Daim duab hauv qab no qhia tau hais tias zoo li cas xwb mi txog ntws.

Serialization

Graphical cov sawv cev ntawm tus kwj

Kwj yog ob hom yeej:

  • Kwj byte— Hoob hu ua (*Ntws)
  • Ximxoo kwj— Hoob hu ua (*Nyeem ntawv thiab * txawj sau ntawv)

Txhua tus kwj uas muaj peev xwm yuav sau cov ntaub ntawv muaj cov txheej sau ntawv txoj kev. Thiab txhua tus kwj uas nyeem tau tej ntaub ntawv ntawm tej qhov chaw muaj zoo ib yam li txheej nyeem txoj kev. Thaum dej yog tsim tag nrho cov kev no yuav tsum tau invoked.

Tam sim no peb tham txog Persistence.








Persistence:

Nruas Persistence yog lub peev xwm khoom nyob los yog tseem muaj sia nyob nyob daim ntawv sau. Txhais li cas yog tias yam thaum tsim thaum runtime sau los ntawm tus JVM khib nyiab twj paj nruas uas yog tsis siv. Tiam sis yog persistence API yog siv ces tus kwv tsis sau los ntawm JVM xwb yog mus nyob thiab yuav tsum accessed rau lwm zaus tso daim ntawv thov. Hauv persistence txhais tau tias muaj cov neeg sab nraud ntawm daim ntawv thov uas nws khiav khiav koj tseem kwv tseem.

Ib txoj kev kom muaj kev persistence yog cia tus tsav haus dejcawv qhov chaw lwm cov ntaub ntawv los database thiab retrieve lawv nyob rau ib lub sij hawm tom qab. Qhov no yog qhov twg serialization tawm mus ua si. Tsis-persisted yam tshwm sim li khiav khiav lub Java Virtual tshuab.

Khoom serialized no tsis muaj dab tsi tab sis lub txia mus ua kwj thiab xa li tau ntaub ntawv los ntawm network cia thiab nqi.

Kev siv lub Serializable interface

Cov chav kawm ntawv yuav tsum siv cov java.io.Serializable interface rau cov khoom ntawm hoob kawm ntawd kom tau serializable. Cov Serializable interface yeej tsis muaj txoj kev thiab tsuas yog cov uas ua li ib marker qhia hais tias qhov kawm tau serialization. Tsuas teb ntawm tus kwv uas muaj lawm serialized yuav fwm, txoj kev los sis constructors yog tsis fwm qhov dej serialized. Yog hais tias ib yam twj paj nruas ua ib tug siv rau lwm yam twj paj nruas, ces tus kwv teb yog kuj serialized yog cov hoob kawm ntawd tus kwv muaj tau tus ntawv Serializable. Hauv lwm lo lus hauv kwv teeb yog serialized kiag li. Tus kwv teeb muaj xws li cov ntoo los yog ntawm tus kwv thiab nws cov khoom sub teb qauv.








Qhov ob lub ntsiab kawm uas pab tswj Serializable interface:

  • ObjectInputStream
  • ObjectOutputStream

Qhia 1: Hoob kawm coj los qhia serialization

[chaws]
ntshuam java.io.*;

pej xeem hoob RandomClass implements Serializable {

// Meskas muaj nqis random

lwm yam zoo li qub rau cov menyuam r() {

rov qab mus (rau cov menyuam)(Math.random() * 10);

}

cov ntaub ntawv rau lwm cov menyuam[];

// Constructor

pej RandomClass() {

datafile = tshiab rau cov menyuam[r()];

rau (rau cov menyuam kuv = 0; Kuv<datafile.length; i )

datafile[Kuv]= r();

}

qhua maj tsis muaj dabtsis pej xeem() {

System.out.println(“Cov RandomClass no muaj “+datafile.length ” random zauv”);

rau (rau cov menyuam kuv = 0; Kuv<datafile.length; i ) {

System.out.Print(datafile[Kuv]+”:”);

System.out.println();

}

}
[/chaws]

Rau saum toj no yog nws li xwb los ua ib cov hoob uas yog serializable li nws yog tus ntawv yog cov serializable interface. Cov kawm ua ib pawg zauv random thaum nws lom yog tsim.

Qhia 2: Qauv uas qhia serializing khoom tawm

Txoj hauv qab no qhia tau hais tias cov functionality uas sau tej khoom rau ib tug kwj siv hauv chav kawm ntawv ObjectOutputStream. Qhov kev pab cuam muaj ib array zauv tab sis rau serialize peb tsis tas yuav ntxees los ntawm cov khoom puab. Cov serializable interface yuav saib xyuas ntawd yuav.

[chaws]

ntshuam java.io.*;

ntshuam java.util.*;

tsev kawm OutSerialize {

pej xeem tsis muaj dabtsis loj zoo li qub (Txoj hlua args[]) throws IOException {

RandomClass rc1 = RandomClass tshiab();

RandomClass rc2 = RandomClass tshiab();

//ua ib tug kwj saw nrog kwv kwj rau saum.

ObjectOutputStream tawm = ObjectOutputStream tshiab(FileOutputStream tshiab(“objects.dat”));

Hnub tim = hnub tshiab tam sim no(System.currentTimeMillis());

//java.util.* ntawd mas rau cov hnub ua.

out.writeObject(tam sim no);

out.writeObject(rc1);

out.writeObject(rc2);

out.close();

System.out.println(“Kuv tau sau:”);

System.out.println(“Ib yam twj paj nruas hnub: “+tam sim no);

System.out.println(“Ob pab randoms”);

rc1.printout();

rc2.printout();

}

}

[/chaws]

Qhia 3: Nruas nyeem ntawv serialized los yog De-Serialization

Txoj hauv qab qha tau cov functionality ObjectInputStream hoob kawm uas nyeem Serialized tej ntaub ntawv los ntawm cov ntaub ntawv mus rau hauv qhov kev pab cuam ib lwm. Nco ntsoov tias muaj tau nyeem cov khoom nyob rau hauv cov kev yuam tib raws nraim li yog thaum tau sau ntawv.

[chaws]

ntshuam java.io.*;

ntshuam java.util.*;

tsev kawm InSerialize {

pej xeem tsis muaj dabtsis loj zoo li qub (Txoj hlua args[]) throws IOException, ClassNotFoundException {

ObjectInputStream hauv = ObjectInputStream tshiab (FileInputStream tshiab(“objects.dat”));

Hnub tim d1 = (Hnub)in.readObject();

RandomClass rc1 = (RandomClass)in.readObject();

RandomClass rc2 = (RandomClass)in.readObject();

System.out.println(“Kuv tau nyeem:”);

System.out.println(“Ib yam twj paj nruas hnub: “+d1);

System.out.println(“Ob pab randoms”);

rc1.printout();

rc2.printout();

}

}

[/chaws]

Yuav luag txhua lub hoob nyob rau hauv java no Serilaizable, nrog rau cov hoob kawm AWT. Ib tug ncej, Nws yog ib qhov rais, muaj ib pawg ntawm cheebtsam graphical. Yog hais tias ib tug ncej serialized, lub serialization mechanism yuav saib xyuas thiab serializes tag nrho nws cov cheebtsam thiab ntaub ntawv (txoj hauj lwm, txheem thiab lwm yam). Ib yam twj paj nruas kawm hauv java tsis tau serialized li vim lawv muaj cov ntaub ntawv uas chiv keeb nraum operating system III.. E.g. java.io.FileInputStream thiab java.lang.Thread kawm. Lub lag luam tag nrho serialization tsis yog ib yam twj paj nruas muaj siv rau lub caij tsis-serializable, thiab ib NotSerializableException ces muab pov tseg yog. Yog tias yam muaj siv rau ib yam twj paj nruas uas tsis yog cov serializable siv, nws yeej yuav serialized tseem yuav siv lub nraum lo lus tseem ceeb.

Qhia 4: Ua tej khoom siv serializable siv lo lus tseem ceeb 'nraum'

[chaws]

pej xeem hoob Sclass implements Serializable{

pej xeem nraum xov newThread;

//Nco ntsoov tias xov los vim tsi muaj ib hoob serializable

chaw studentID txoj hlua;

lwm yam rau cov menyuam zaum;

}

[/chaws]

Kev ruaj ntseg hauv Serialization

Serializing muaj ib hoob kawm rau java implies xa tag nrho cov ntaub ntawv mus rau ib lwm cov ntaub ntawv los sis database, los ntawm ib tug kwj. Peb yuav tej tsam xav pub cov ntaub ntawv uas yog serialized.

Ob txoj kev uas yuav ua:

  • Ywg ntsees txis cov ntaub ntawv uas peb tsis xav kom tau serialize li nraum,(yog neej ntawd tag nrho cov ntaub ntawv yog serialized)
  • Los yog ntsees txis cov ntaub ntawv uas peb xav serialize siv lossis Externalizable.(yog vim tsis muaj dab tsi yog serialized)

Yog tias tej ntaub ntawv tom teb yog cim nraum ces daim teb ntawd yuav tsis tau serialized thaum ObjectOutputStream kawm hu ua nyob rau ntawd yam twj paj nruas. E.g. kheej nraum txoj hlua lo lus zais;

Ntawm qhov kev tes ntsees txis cov ntaub ntawv raws li serializable peb yuav tsum tau muaj los kos tus kwv ua Externalizable, thiab siv lub writeExternal thiab readExternal txoj kev sau ntawv thiab nyeem ntawv ntsees.








Xaus:

Tus kwv serialization feature siv nyob rau hauv ntau lub nruab distributed ib kev txuas lus zoo ntawv. Tiam sis Serialization exposes lwm yam lus yog li txhawm hais tias hom ntaub ntawv paub daws teeb, tej zaum uas nyeg yuam encapsulation. Kuj tseem zoo tsis tau paub tias cov ntaub ntawv rau tus tsav haus dejcawv serialized yog tib yam li cov ntaub ntawv sau nyob rau hauv cov thawj kwv xwb. Nws yog ib tug zoo xyaum kom muaj kev rau ObjectInputValidation interface thiab overriding tus validateObject() txawm yog nws yuav siv ob peb ntau kab ntawm txoj txoj kev. Yog tus tsav haus dejcawv yog tsis pom zoo peb yuav muab cov InvalidObjectException.

Tagged: ,
============================================= ============================================== Yuav zoo TechAlpine phau ntawv rau Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Txaus siab rau qhov blog? Tshaj tawm lus thov :)

Follow by Email
LinkedIn
LinkedIn
Share