Java Serializácia
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Java Serializácia
Ahojte,
Dá sa nejako v jave dosiahnuť to, že mam objekty rôznych tried, a chcem ich dávať do binárneho súboru (serializované) ale ja by som potreboval aby som mal k nim priamo prístup teda by som chcel použiť RandomAccessFile
ibaže neviem ako riešiť to posúvanie v tom súbore
v C++ existuje union, v jave by sa takéto niečo nedalo spraviť?
Ďakujem
Dá sa nejako v jave dosiahnuť to, že mam objekty rôznych tried, a chcem ich dávať do binárneho súboru (serializované) ale ja by som potreboval aby som mal k nim priamo prístup teda by som chcel použiť RandomAccessFile
ibaže neviem ako riešiť to posúvanie v tom súbore
v C++ existuje union, v jave by sa takéto niečo nedalo spraviť?
Ďakujem
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Java Serializácia
union je daco ine,
Co ti brani dat tie objekty do listu a ten serializovat?
Alebo si spravit datovu triedu, ktora bude mat getre a setre na tie tvoje objekty a tu serializovat
Co ti brani dat tie objekty do listu a ten serializovat?
Alebo si spravit datovu triedu, ktora bude mat getre a setre na tie tvoje objekty a tu serializovat
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
lenže mne ide o to, aby som to celé nemusel naťahovať do pamäti, preto sa potrebujem v tom súbore nejako pohybovať
preto ma napadol ten union z C++, lebo tam keď som do pola chcel nahádzať rozdielne objekty, tak sa to pekne pomocou toho dalo
preto ma napadol ten union z C++, lebo tam keď som do pola chcel nahádzať rozdielne objekty, tak sa to pekne pomocou toho dalo
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Java Serializácia
napriklad mozes ukladat serializovane objekty do SqLite,
alebo cez memory stream, ulozit objekt do buffera s pevnou dlzkou a ten zapisat do suboru
alebo cez memory stream, ulozit objekt do buffera s pevnou dlzkou a ten zapisat do suboru
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
A ako sa v jave používajú tie memory streamy?
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Java Serializácia
tak isto ako ostatne streamy, len nezapisujes do suboru alebo TCP streamu, ale do bufferu (pole bytov)
Re: Java Serializácia
A co je zle na seek() a mape na zaciatku suboru?
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
nad tým som tiež uvažoval, ale je problém v tom, že ak budem chcieť tie dáta meniť, tak mi budú vznikať medzery, i keď pravdu povediac takto budem mať medzier ešte viac...
pouvažujem
pouvažujem
Re: Java Serializácia
S tou mapou mas dve moznosti: bud si urobis mapu malych jednotiek pamati (zalezi od priemernej velkosti objektu) a pouzijes FAT system. Druha moznost (asi elegantnejsia) je ulozit si do mapy na zaciatku suboru identifikator, adresu v subore a velkost. A nasledne pri vymazovani dat nastavit identifikator alebo adresu na nejaku nemozno hodnotu (napr 0, kedze na zaciatku suboru sa nachadza mapa). Potom ak by si chcel zapisat nove data, proste by si si zobral nejaku adresu a zistoval ci sa spolu s velkostou objekt zmesti do nejakej medzery, pripadne by si ho prilepil na uplny koniec.
//autoeditácia príspevku (12 Máj 2013, 16:37)
Tretia moznost je drzat si zasobnik/frontu (lepsie zasobnik) alebo nieco podobne a v nom mat ulozene informacie o medzerach. V pripade dynamicky rastuceho suboru je toto asi najlepsie riesenie.
//autoeditácia príspevku (12 Máj 2013, 16:37)
Tretia moznost je drzat si zasobnik/frontu (lepsie zasobnik) alebo nieco podobne a v nom mat ulozene informacie o medzerach. V pripade dynamicky rastuceho suboru je toto asi najlepsie riesenie.
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
ďakujem, tak to bude asi najlepšie
ešte by ma zaujímalo či sa nedá nejako efektívnejšie ukladať tie objekty, lebo keď si spravím pole 100 stringov, a tie uložím do súboru (cez serializaciu) tak to má menšiu veľkosť ako táto moja štruktúra, a keď som pozeral ten .bin súbor, tak pri tom poli stringov som mal identifikáciu toho objektu (java.lang.String) len raz, ale v tej mojej implementácii keď serializujem a ukladám tam ten objekt tak to mám pri každom
s tým by sa dalo niečo spraviť alebo by to bolo až moc zložité?
lebo tak viem že si môžem spraviť vlastnú implementáciu serializácie ale to už je zbytočné
ešte by ma zaujímalo či sa nedá nejako efektívnejšie ukladať tie objekty, lebo keď si spravím pole 100 stringov, a tie uložím do súboru (cez serializaciu) tak to má menšiu veľkosť ako táto moja štruktúra, a keď som pozeral ten .bin súbor, tak pri tom poli stringov som mal identifikáciu toho objektu (java.lang.String) len raz, ale v tej mojej implementácii keď serializujem a ukladám tam ten objekt tak to mám pri každom
s tým by sa dalo niečo spraviť alebo by to bolo až moc zložité?
lebo tak viem že si môžem spraviť vlastnú implementáciu serializácie ale to už je zbytočné
Re: Java Serializácia
celkom nechapem. Co je tvoj pripad? Identifikacia sa vyskytuje len raz alebo stale? Ako to robi tvoja implementacia?ešte by ma zaujímalo či sa nedá nejako efektívnejšie ukladať tie objekty, lebo keď si spravím pole 100 stringov, a tie uložím do súboru (cez serializaciu) tak to má menšiu veľkosť ako táto moja štruktúra, a keď som pozeral ten .bin súbor, tak pri tom poli stringov som mal identifikáciu toho objektu (java.lang.String) len raz, ale v tej mojej implementácii keď serializujem a ukladám tam ten objekt tak to mám pri každom
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
nie, už mi to nerobí
len nastavil som si kapacitu na 1 000 000
a "prázdny" súbor má 15MB
4*1000000 + 8*1000000 = 16000000/1024/1024 ~ 15M
nebolo by možno lepšie riešiť tu mapu v druhom súbore?
len nastavil som si kapacitu na 1 000 000
a "prázdny" súbor má 15MB
4*1000000 + 8*1000000 = 16000000/1024/1024 ~ 15M
nebolo by možno lepšie riešiť tu mapu v druhom súbore?
Re: Java Serializácia
Neviem o co sa snazis. Samotna mapa nepotrebuje mat fixnu dlzku, staci jej maly zaklad napr. 100 prvkov. Nasledne ak bude nutne urobit vacsiu mapu, na 99 prvok v arrayi das ukazovatel na pokracovanie, ktore muze byt ulozene kdekolvek dalej v subore (alebo v medzere). Takto to vsetko bude fungovat dynamicky. Ak to chces jednoduchsie, urob si bitovu mapu kde bude jeden bit jeden chunk. Ak chces, mam na to fungujuci kod v Ccku.
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
no to bude problém, ja potrebujem kvázi priamy prístup k tým objektom, takže neviem si predstaviť keby som používal povedzme mapu o dĺžke 100 a chcel povedzme prvok z indexom 2000, kým by som sa k nemu dostal
neviem asi to nechám takto, malo by to stačiť
neviem asi to nechám takto, malo by to stačiť
Re: Java Serializácia
Zakazdym by si jednoduchó vybral adresu na uplnom konci zoznamu a tak presiel stovku. Jednoducho by si nebral mapu ako nieco specialne, ale ako normalny array. Len praca by bola rozdielna.
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Java Serializácia
Aj mna by zaujimal kontext tohto problemu.
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
no ono je to skôr také cvičenie, ešte som s tým nerobil a chcel som si to nejako vyskúšať
-
harrison314
Hardcore addict
- Príspevky: 8223
- Registrovaný: 27 máj 2009, 20:42
- Bydlisko: Bratislava
- Kontaktovať používateľa:
Re: Java Serializácia
tak to si potom pre objekty vytvor vlastnu serializaciu,
inak, keby tento problem riesim ja pouzijem databazu
inak, keby tento problem riesim ja pouzijem databazu
-
miso250593
Medium Expert
- Príspevky: 89
- Registrovaný: 11 júl 2008, 16:53
- Kontaktovať používateľa:
Re: Java Serializácia
jo do databázy sa to samozrejme dá dať
ďakujem za rady
ďakujem za rady