Sissejuhatus Java rämpsfunktsiooni
Kuna me teame, et Java on objektorienteeritud keel, peaks objekti oleku kirjeldamiseks olema sõltumata sellest, kui suur see objekt võib olla, mehhanism. Selle nõude täitmiseks loodi Java räsimisfunktsioon.
Mis on räsimisfunktsioon?
Rihmafunktsiooni saab määratleda kui funktsiooni, mis tagastab objektile vastava täisarvu. Räsifunktsioon tagastab sama objekti jaoks alati sama täisarvu. Räsifunktsiooni tagastatud täisarvu väärtust nimetatakse räsiväärtuseks. Järgnevad olulised punktid funktsiooni Hash kohta:
- Tagastab objektile alati täisarvu (4 baiti).
- Objekti olekut ei saa räsi väärtuse põhjal arvutada, kuna räsifunktsioonid on oma olemuselt pöördumatud.
- Kahel võrdsel objektil on sama räsiväärtus.
- Kahel ebavõrdsel objektil ei ole alati erinevad Hassi väärtused.
Hash-funktsiooni rakendused
Siin on räsifunktsioonide levinumad rakendused:
1. Andmestruktuurid
Peaaegu igas programmeerimiskeeles on räsipõhised andmestruktuurid. Näiteks java sisaldab jahtide tabelit, jahi kaarti, räsikomplekti, puukomplekti andmestruktuure, mis põhinevad räsifunktsioonil. Nende andmestruktuuride aluseks on võtmeväärtuse disain, kus iga võti on kordumatu, samas kui sama väärtus võib eksisteerida ka mitme võtme puhul.
2. Sõnumite kokkuvõte
Seda algoritmi kasutatakse andmete terviklikkuse kontrollimiseks. See algoritm võtab sisendina mistahes pikkusega sõnumi ja toodab väljundina fikseeritud pikkusega (128-bitist) andmeid. Teadete kokkuvõtete algoritmide näideteks on MD2, MD4, MD5 ja MD6.
3. Turvaline hash algoritm
Seda algoritmi kasutatakse andmeturbe jaoks ning seda kasutatakse rakendustes ja protokollides, näiteks SSL (Secure Socket Layer). SHA-0, SHA-1, SHA-2 ja SHA-3 on Secure Hash algoritmi tavalised kategooriad.
4. Paroolide kontrollimine ja säilitamine
Vaatleme sisselogimise stsenaariumi, kus kasutaja autentimiseks parooli sisestamisel arvutatakse sisestatud parooli räsi väärtus ja see saadetakse võrgu kaudu serverisse, kus originaali räsi salvestatakse. Selle eesmärk on tagada, et kliendi poolt serverisse parooli saatmise ajal nuhkimist ei tehta.
5. Kompilaatori töö
Kuna programmeerimiskeeles kasutatakse erinevaid märksõnu, kasutab nende märksõnade ja identifikaatorite eristamiseks kompilaator kõigi nende märksõnade ja identifikaatorite salvestamiseks räsikomplekti, mida rakendatakse räsitabeli abil.
6. Rabin- Karpi algoritm
See on otsimisalgoritm, mis kasutab räsimist, et otsida antud stringist ühte või mitut mustrit. See on üks kõige sagedamini kasutatavaid algoritme.
7. Võrreldavad ja võrdlusliidesed
Need liidesed sisaldavad funktsioone, mida kasutatakse kahe objekti korraga võrdlemiseks. Nende funktsioonide tagastusväärtus võib olla negatiivne, null või positiivne sõltuvalt sellest, kas antud objekt on väiksem, võrdne või suurem kui objekt, mida me võrdleme. Sisemises komparaatoris ja võrreldavates liidestes kasutatakse objektide võrdlemiseks räsifunktsiooni.
8. Prioriteedijärjekord
Prioriteedijärjekord erineb tavapärasest järjekorrast, mis järgib FIFO (esimene esimesest väljas) järjekorda. Prioriteetsete järjekordade elemendid on paigutatud kohandatud järjekorras vastavalt nende prioriteedile, mida rakendatakse sisemiselt, kasutades võrreldavat ja komparaatorit, mille internid põhinevad räsifunktsioonidel.
Räsifunktsioonide kujundamine
Siin on mõned räsifunktsioonide loomise üldised kujunduspõhimõtted:
- Räsifunktsiooni tuleks tõhusalt hinnata.
- Räsifunktsioonide järgi arvutatud räsumahud peaksid olema ühtlaselt jaotunud, see aitab vältida kokkupõrkeid.
- Java programmeerimiskeel pakub üldist räsimisfunktsiooni hashCode () meetodiga Objekti ülemklassis.
public int hashCode ()(
//Logic goes here
)
Hash-kokkupõrge Java-s
Räsikokkupõrge toimub siis, kui kaks või enam objekti annavad sama räsiväärtuse. Võtame näiteks java-räsi kaardi, mis salvestab andmeid võtme-väärtuse paarides. Kui paneme objekti räsikaardile, arvutatakse võtme räsiväärtus ja selle räsiväärtuse ämbri asukoha põhjal leitakse väärtus objekti salvestamiseks. Objektid, millel on erinevad räsiväärtused, peavad minema erinevatesse ämbritesse. Kui kahel või enamal objektil on sama räsiväärtus, salvestatakse nad samasse kopu asukohta, kasutades täiendavat andmestruktuuri, mida nimetatakse lingitud loendiks. Kõik sama räsiväärtusega objektid aheldatakse ühendatud lingi abil. Seda mehhanismi nimetatakse aheldamiseks. Järgnevalt on toodud räsifunktsioonid kokkupõrgete käsitlemiseks:
- Aheldamine : Nagu juba kaetud, on ahela loomise idee luua lingitud objektid, millel on sama räsiväärtus. Aheldamine on lihtne tehnika, kuid nõuab täiendavat lisamälu.
- Avatud adresseerimine: Selle tehnika puhul salvestatakse kõik elemendid räsitabelisse, milles iga kirje sisaldab kas kirjet või NULL-i. Elemendi otsimisel otsitakse räsitabeli iga kirje järgi soovitud kirjet, kuni leitakse vajalik kirje või järeldatakse, et kirjet tabelis ei eksisteeri.
Räsimise eelised
Räsimise eelised on järgmised:
- Võrrelge kahe faili sisu hõlpsalt ja tõhusalt, ilma neid avamata.
- Räsifunktsioone kasutatakse faili terviklikkuse kontrollimiseks.
- Räsimise abil on otsingu toimingud andmestruktuurides muutunud kiiremaks.
- Räsifunktsioonid mängivad andmeturbes üliolulist rolli, kuna enamik turbealgoritme ja -protokolle kasutab räsi.
- Rähistamine teisendab andmed lühemaks fikseeritud pikkusega väärtuseks või võtmeks, mis tähistab algset stringi, mida saab võrgu kaudu saata.
Räsimise puudused
Lisaks eelistele on räsimisega seotud ka mõned piirangud:
- Räsimist ei saa andmete sortimiseks rakendada.
- Räsikokkupõrget ei saa praktiliselt vältida, mis omakorda põhjustab ebatõhusust.
Soovitatavad artiklid
See on Java räsifunktsiooni juhend. Siin käsitleme räsifunktsiooni rakendusi koos eeliste ja puudustega. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -
- VB.Neti deklareerimine ja initsialiseerimine
- Java-programm näitab HashMap ja TreeMap
- Räsimise tüübid DBMS-is
- Steganograafia tehnikad
- Massiivid Java programmeerimises
- Java Java-kaart