Java의 해싱 함수는 객체의 값을 정수 형태로 정의하고 반환하는 솔루션으로 만들어졌으며, 해싱 함수의 출력으로 얻은 이 반환 값을 해시 값이라고 합니다. 모든 해싱 함수는 개체에 대한 반환 값으로 4바이트의 정수를 반환합니다. 동일한 유형의 두 개체는 해싱 함수의 출력과 동일한 정수 값을 가지며, 마찬가지로 다른 개체는 다른 해시 값을 갖습니다. 해시 값에서 객체를 파생할 수 없으며 이로 인해 해싱 함수가 되돌릴 수 없는 함수가 됩니다.
해싱 함수란 무엇인가요?
무료 소프트웨어 개발 과정 시작
웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등
해시 함수는 객체에 해당하는 정수 값을 반환하는 함수로 정의할 수 있습니다. 해시 함수는 항상 동일한 객체에 대해 동일한 정수 값을 반환합니다. 해시 함수에서 반환되는 정수 값을 해시 값이라고 합니다. Hash 함수 관련 중요 사항은 다음과 같습니다.
다음은 해시 함수의 일반적인 응용 프로그램입니다.
거의 모든 프로그래밍 언어에는 해시 기반 데이터 구조가 포함되어 있습니다. 예를 들어, java에는 해시 함수를 기반으로 하는 해시 테이블, 해시 맵, 해시 세트, 트리 세트 데이터 구조가 포함되어 있습니다. 이러한 데이터 구조는 각 키가 고유한 반면 여러 키에 동일한 값이 존재할 수 있는 키-값 설계입니다.
이 알고리즘은 데이터 무결성 검사에 사용됩니다. 이 알고리즘은 모든 길이의 메시지를 입력으로 사용하고 고정 길이(128비트) 데이터를 출력으로 생성합니다. 메시지 다이제스트 알고리즘의 예로는 MD2, MD4, MD5 및 MD6이 있습니다.
이 알고리즘은 데이터 보안에 사용되며 SSL(Secure Socket Layer)과 같은 애플리케이션 및 프로토콜에 사용됩니다. SHA-0, SHA-1, SHA-2, SHA-3은 보안 해시 알고리즘의 일반적인 카테고리입니다.
사용자 인증을 위해 비밀번호를 입력하면 입력된 비밀번호의 해시 값이 계산되어 네트워크를 통해 원본 해시가 저장된 서버로 전송되는 로그인 시나리오를 생각해 보겠습니다. 이는 클라이언트에서 서버로 비밀번호가 전송될 때 스니핑이 수행되지 않도록 하기 위해 수행됩니다.
프로그래밍 언어에서는 서로 다른 키워드가 사용되므로 이러한 키워드와 식별자를 구별하기 위해 컴파일러는 해시 테이블을 사용하여 구현된 해시 세트를 사용하여 이러한 모든 키워드와 식별자를 저장합니다.
해싱을 사용하여 주어진 문자열에서 하나 이상의 패턴을 검색하는 검색 알고리즘입니다. 가장 일반적으로 사용되는 알고리즘 중 하나입니다.
이러한 인터페이스에는 한 번에 두 개체를 비교하는 데 사용되는 기능이 포함되어 있습니다. 이러한 함수의 반환 값은 주어진 개체가 비교 대상 개체보다 작거나 같거나 큰지에 따라 음수, 0 또는 양수일 수 있습니다. 내부 비교기 및 비교 인터페이스는 해시 함수를 사용하여 객체를 서로 비교합니다.
우선순위 큐는 FIFO(선입선출) 순서를 따르는 일반 큐와 다릅니다. 우선순위 큐에서 요소는 우선순위에 따라 사용자 정의 순서로 배열되며, 이는 인턴이 해시 함수를 기반으로 하는 비교 및 비교기를 사용하여 내부적으로 구현됩니다.
다음은 해시 함수 생성을 위한 몇 가지 일반적인 설계 원칙입니다.
public int hashCode (){ //Logic goes here }
두 개 이상의 개체가 동일한 해시 값을 반환하면 해시 충돌이 발생합니다. 키-값 쌍으로 데이터를 저장하는 Java 해시 맵의 예를 들어 보겠습니다. 해시 맵에 객체를 넣으면 키의 해시 값이 계산되고 이 해시 값 버킷 위치를 기반으로 값 객체를 저장하는 위치가 검색됩니다. 서로 다른 해시 값을 가진 객체는 서로 다른 버킷에 들어가야 합니다. 두 개 이상의 객체가 동일한 해시 값을 갖는 경우 연결 목록이라는 추가 데이터 구조를 사용하여 동일한 버킷 위치에 저장됩니다. 동일한 해시 값을 갖는 모든 객체는 연결 목록을 사용하여 함께 연결됩니다. 이 메커니즘을 체인이라고 합니다. 다음은 해시 함수를 사용하여 충돌을 처리하는 방법입니다.
해싱의 장점은 다음과 같습니다.
해싱에는 장점 외에도 몇 가지 제한 사항도 있습니다.
위 내용은 Java의 해싱 함수의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!