Uvod u funkciju ležanja na Javi
Kao što znamo da je Java objektno orijentiran jezik, stoga bi trebao postojati mehanizam za opisivanje stanja objekta, bez obzira koliko objekt mogao biti velik. U ispunjenju ovog zahtjeva nastala je funkcija mržnje u Javi.
Što je funkcija ležanja?
Hash funkcija može se definirati kao funkcija koja vraća cjelobrojnu vrijednost koja odgovara objektu. Hash funkcija uvijek vraća istu cjelobrojnu vrijednost za isti objekt. Cijela vrijednost vraćena pomoću hash funkcije naziva se Hash Value. Evo važnih stavki u vezi sa funkcijom Hash:
- Uvijek vraća cijeli broj (4 bajta) za objekt.
- Ne možemo izračunati stanje objekta iz hash vrijednosti koja je hash funkcija nepovratne su prirode.
- Dva jednaka objekta imat će istu hash vrijednost.
- Dva nejednaka objekta nemaju uvijek različite Hash vrijednosti.
Primjene Hash funkcije
Ovo su uobičajene primjene hash funkcija:
1. Strukture podataka
Gotovo svaki programski jezik sadrži strukture podataka zasnovane na hash. Na primjer, java sadrži Hash tablicu, Hash Map, Hash Set, Tree Set strukture podataka koje se temelje na funkciji Hash. Osnova ovih struktura podataka je dizajn ključ-vrijednost gdje je svaki ključ jedinstven dok ista vrijednost može postojati za više ključeva.
2. Sažetak poruka
Ovaj se algoritam koristi u provjeri integriteta podataka. Ovaj algoritam uzima poruku bilo koje duljine kao ulaz i proizvodi podatke fiksne duljine (128-bitne) kao izlaz. Primjeri algoritama za razbijanje poruka uključuju MD2, MD4, MD5 i MD6.
3. Osigurajte algoritam za hash
Ovaj se algoritam koristi za sigurnost podataka i koristi se u aplikacijama i protokolima poput Secure Socket Layer (SSL). SHA-0, SHA-1, SHA-2 i SHA-3 uobičajene su kategorije algoritma sigurnog osmjehivanja.
4. Provjera i pohrana lozinke
Razmotrimo scenarij prijave u kojem se, kada se unosi lozinka za autentifikaciju korisnika, izračunava hash vrijednost unesene lozinke i šalje preko mreže na poslužitelj na kojem je pohranjen hash izvornika. To je učinjeno kako bi se osiguralo da se njuškanje ne izvrši kada se lozinka od klijenta pošalje na poslužitelj.
5. Rad kompajlera
Budući da se u programskom jeziku koriste različite ključne riječi, radi razlikovanja tih ključnih riječi i identifikatora, prevoditelj koristi skup hash koji se implementira pomoću tablice hash-a za pohranu svih ovih ključnih riječi i identifikatora.
6. Rabin- Karpov algoritam
To je algoritam pretraživanja koji koristi hashing za pretraživanje jednog ili više uzoraka u određenom nizu. To je jedan od najčešće korištenih algoritama.
7. Usporedna i komparativna sučelja
Ova sučelja sadrže funkcije koje se koriste za usporedbu dva objekta odjednom. Povratna vrijednost ovih funkcija može biti negativna, nulta ili pozitivna na temelju toga je li dati objekt manji od, jednak ili veći od objekta s kojim uspoređujemo. Unutarnji komparativni i usporedivi sučelja koriste hash funkciju za usporedbu objekata jedan od drugog.
8. Red prioriteta
Red prioriteta za razliku je od uobičajenog reda koji slijedi redoslijed FIFO (First in First out). Elementi reda prioriteta raspoređeni su u prilagođenom redoslijedu na temelju njihovog prioriteta, koji se interno implementira pomoću usporedivih i komparatora koji se stažisti temelje na funkcijama hash-ova.
Dizajn funkcija sjeckanja
Evo nekih općih načela dizajna za stvaranje hash funkcija:
- Trebalo bi učinkovito ocjenjivati hash funkciju.
- Vrijednosti oštra izračunane iz hash funkcija trebaju biti ravnomjerno raspoređene, što pomaže u izbjegavanju sudara.
- Programski jezik Java pruža opću funkciju hashpiranja pomoću metode hashCode () u nadklasi Object.
public int hashCode ()(
//Logic goes here
)
Hash Collision u Javi
Do sudara hash-a dolazi kada dva ili više objekata vraćaju istu hash vrijednost. Uzmimo za primjer java hash karte koja pohranjuje podatke u parove ključ-vrijednost. Kada stavimo objekt u hash mapu, izračunava se vrijednost hash vrijednosti ključa, a na osnovu te lokacije segmenta vrijednosti hash vrijednosti za pohranjivanje vrijednosti vrijednosti pronađeno je. Objekti s različitim vrijednostima hash-a moraju ići u različite kante. Kad dva ili više objekata imaju istu hash vrijednost, oni se pohranjuju na isto mjesto spremnika koristeći dodatnu strukturu podataka koja se naziva povezanim popisom. Svi se objekti koji imaju istu hash vrijednost povezuju zajedno povezanim popisom. Taj se mehanizam naziva vezivanje. Slijede načini rukovanja sudarima pomoću hash funkcije:
- Lanac: Kao što je već pokriveno, ideja lanca je stvoriti povezani popis objekata koji imaju istu hash vrijednost. Vezivanje je jednostavna tehnika, ali zahtijeva dodatnu dodatnu memoriju.
- Otvoreno adresiranje: U ovoj se tehnici svi elementi pohranjuju u hash tablici u kojoj svaki unos sadrži ili zapis ili NULL. Kada se pretražuje element, svaki se unos u hash tablici traži za željeni zapis sve dok se ne nađe potreban zapis ili se zaključi da zapis ne postoji u tablici.
Prednosti ležanja
Slijede prednosti hashiranja:
- Usporedite sadržaj dvije datoteke jednostavno i učinkovito, bez otvaranja.
- Hash funkcije se koriste za provjeru integriteta datoteke.
- Uz pomoć raspršivanja, operacije pretraživanja u strukturama podataka postale su brže.
- Hash funkcije igraju vitalnu ulogu u sigurnosti podataka jer većina sigurnosnih algoritama i protokola koristi hashing.
- Hashing pretvara podatke u kraću vrijednost ili ključ fiksne duljine koji predstavlja izvorni niz koji se može poslati preko mreže.
Nedostaci mržnje
Osim prednosti, postoje i neka ograničenja miješanja:
- Hashing se ne može primijeniti za sortiranje podataka.
- Sudar se ne može praktično izbjeći što zauzvrat dovodi do neučinkovitosti.
Preporučeni članci
Ovo je vodič za Hashing funkciju na Javi. Ovdje smo raspravljali o primjeni hash funkcije zajedno s prednostima i nedostacima. Možete pogledati i sljedeće članke da biste saznali više -
- Izjava i inicijalizacija VB.Net-a
- Java program koji prikazuje HashMap i TreeMap
- Vrste mržnje u DBMS-u
- Tehnike stenografije
- Nizi u Java programiranju
- Hashmap na Javi