Po zapoznaniu się z tym, o co w tym wszystkim chodzi, postanowiłem napisać, miejmy nadzieję, prostsze wyjaśnienie poprzez analogię:
Podsumowanie: Co to jest kod mieszający?
- To odcisk palca. Możemy użyć tego odcisku palca do identyfikacji interesujących nas osób.
Przeczytaj poniżej, aby uzyskać więcej informacji:
Pomyśl o haszkodzie tak, jak o nas, próbując jednoznacznie zidentyfikować kogoś
Jestem detektywem szukającym przestępcy. Nazwijmy go Panem Okrutnym. (Był notorycznym mordercą, kiedy byłem dzieckiem - włamał się do domu porwanego i zamordował biedną dziewczynę, porzucił jej ciało i nadal jest na wolności - ale to osobna sprawa). Pan Cruel ma pewne szczególne cechy, których mogę użyć, aby jednoznacznie zidentyfikować go w morzu ludzi. W Australii mamy 25 milionów ludzi. Jednym z nich jest Pan Okrutny. Jak możemy go znaleźć?
Złe sposoby na zidentyfikowanie pana okrutnego
Najwyraźniej pan Cruel ma niebieskie oczy. To niewiele pomaga, ponieważ prawie połowa populacji Australii ma również niebieskie oczy.
Dobre sposoby na zidentyfikowanie pana okrutnego
Z czego jeszcze mogę skorzystać? Wiem: użyję odcisku palca!
Zalety :
- Dla dwóch osób jest naprawdę trudno mieć ten sam odcisk palca (nie jest to niemożliwe, ale bardzo mało prawdopodobne).
- Odcisk palca pana Cruela nigdy się nie zmieni.
- Każda część całej istoty Pana Cruela: jego wygląd, kolor włosów, osobowość, nawyki żywieniowe itp. Muszą (najlepiej) znaleźć odzwierciedlenie w jego odcisku palca, tak że jeśli ma brata (który jest bardzo podobny, ale nie taki sam) - to jedno i drugie powinny mieć różne odciski palców. Mówię „należy”, ponieważ nie możemy zagwarantować w 100%, że dwie osoby na tym świecie będą miały różne odciski palców.
- Ale zawsze możemy zagwarantować, że pan Cruel zawsze będzie miał ten sam odcisk palca - i że jego odcisk palca NIGDY się nie zmieni.
Powyższe cechy ogólnie składają się na dobre funkcje skrótu.
Więc o co chodzi z „zderzeniami”?
Więc wyobraź sobie, że dostanę trop i znajdę kogoś pasującego do odcisków palców pana Cruela. Czy to oznacza, że znalazłem pana Okrutnego?
........być może! Muszę się bliżej przyjrzeć. Jeśli używam SHA256 (funkcja haszująca) i szukam małego miasteczka, w którym jest tylko 5 osób - to jest bardzo duża szansa, że go znalazłem! Ale jeśli używam MD5 (kolejna słynna funkcja haszująca) i sprawdzam odciski palców w mieście z + 2 ^ 1000 osób, to jest całkiem dobra możliwość, że dwie zupełnie różne osoby mogą mieć ten sam odcisk palca.
Więc jakie są korzyści z tego wszystkiego?
Jedyną prawdziwą zaletą haszowania jest to, że chcesz umieścić coś w tablicy skrótów - a w przypadku tablic skrótów chciałbyś szybko znaleźć obiekty - i właśnie tam pojawia się kod skrótu. szybko. To hack, który znacznie poprawia wydajność, ale niewielkim kosztem dokładności.
Wyobraźmy sobie więc, że mamy stół do haszowania wypełniony ludźmi - 25 milionów podejrzanych w Australii. Pan Cruel jest gdzieś tam ..... Jak możemy go naprawdę szybko znaleźć ? Musimy przejrzeć je wszystkie: znaleźć potencjalne dopasowanie lub w inny sposób uniewinnić potencjalnych podejrzanych. Nie chcesz brać pod uwagę wyjątkowych cech każdej osoby, ponieważ zajęłoby to zbyt dużo czasu. Czego byś użył zamiast tego? Użyłbyś hashcode! Kod skrótu może powiedzieć, czy dwie osoby są różne. Czy Joe Bloggs NIE jest Panem Okrutnym. Jeśli odciski nie pasują, to wiesz, że to zdecydowanie NIE jest Mr Cruel. Ale jeśli odciski palców się zgadzająnastępnie, w zależności od użytej funkcji skrótu, istnieje duże prawdopodobieństwo, że znalazłeś swojego mężczyznę. Ale to nie jest 100%. Jedynym sposobem, aby mieć pewność, jest dalsze dochodzenie: (i) czy miał okazję / motyw, (ii) świadkowie itp.
Jeśli używasz komputerów, jeśli dwa obiekty mają tę samą wartość kodu skrótu, musisz ponownie zbadać, czy są naprawdę równe. np. musiałbyś sprawdzić, czy obiekty mają np. taką samą wysokość, taką samą wagę itp., czy liczby całkowite są takie same, czy też customer_id jest zgodne, a następnie dojść do wniosku, czy są takie same. jest to zazwyczaj wykonywane przez implementację interfejsów IComparer lub IEquality.
Kluczowe podsumowanie
Zasadniczo hashcode to odcisk palca.
- Teoretycznie dwie różne osoby / przedmioty mogą nadal mieć ten sam odcisk palca. Innymi słowy. Jeśli masz dwa takie same odciski palców ......... nie muszą one pochodzić od tej samej osoby / przedmiotu.
- Buuuuuut, ta sama osoba / przedmiot zawsze zwróci ten
sam odcisk palca .
- Oznacza to, że jeśli dwa obiekty zwracają różne kody skrótu, to wiesz ze 100% pewnością, że te obiekty są różne.
Obejście powyższego zajmie dobre 3 minuty. Może przeczytaj to kilka razy, aż będzie miało sens. Mam nadzieję, że to komuś pomogło, ponieważ nauczenie się tego wszystkiego wymagało wiele żalu!