데이터를 여러개의 세그먼트로 저장한다.
각 세그먼트는 독립적인 작은 해쉬Table처럼 작용한다.
동시 접근을 위해서 [[lock]]사용시 독립적으로 락이 걸리게 된다. 따라서 다른 세그먼트에 영향을 끼치지 않는다.
키-값 쌍의 저장 검색 자료구조이다.
해쉬함수를 이용해서 키를 해쉬값으로 반환한다.
해시값을 이용해서 Data array특정 위치에 저장한다.
해시함수
버킷(Bucket)
충돌(collision)
서로 다른 두 키가 동일해시를 지정해서 발생하는 문제이다.
삽입, 삭제, 검색의 과정
1. 키를 해시함수에 입력해 해시값을 계산한다.
2. 해시값을 배열 idx로 사용한다. 해당하는 버킷에 접근한다.
3. 버킷에 키-쌍을 삽입, 삭제, 검색을 수행한다.
멀티스레드 환경에서 동시접근 데이터 불일치 문제를 해결하는 기법이다.
락걸린 자원은 한 번에 하나의 해시 스레드에 접근한다.
자원 사용을 위해서 락을 거는 과정이다.
작원에 락이 걸리면 다른 쓰레드는 대기해야한다.
자원 사용이 끝난 후 락을 해제한다.
다른 쓰레드가 접근 가능하게 한다.
오늘 처음으로 페어프로그래밍을 해봤다. 내가 얼마나 부족했는지 잘 알수 있었던 시간 ㅋ ㅠ ㅋ ㅠ
문제에서 궁극적으로 추출해야하는 값 적어놓기
해당 목표를 위해서 나아갈 세부사항을 적어야 함
본격적으로 슈도코드를 짜기전에 사용해야할 자료구조를 정한다.
필요한 변수 리스트들을 뽑아낸다.
이 과정에서 변수가 추가될 수도 필요가 없다고 판단되면 삭제될 수도 있다.
중요한건 코드가 아닌 머리로 문제를 풀어보면서 사용해야할 자료구조, 변수에 대해서 생각해야한다.
큰 틀에서 작은틀로 줄여가면서 문제를 풀어보기
중간중간 결과는 출력문을 이용해서 확인한다.
내 머릿통
자바로도 문제를 풀어보게 되었다...
#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL