728x90
반응형

분류 전체보기 168

해시 테이블(Hash Table)

해시테이블과 해시맵은 기본적으로 동일한 개념을 가지고 있습니다. 해시테이블은 데이터를 저장하는 자료구조 중 하나로, 키 (Key)와 값(Value)으로 이루어진 데이터를 저장하고 검색하는데 사용됩니다. 키를 이용하여 값에 접근하므로, 데이터를 빠르 게 검색할 수 있습니다. 해시맵은 자바의 컬렉션 프레임워크에서 제공하는 클래스 중 하나로, 해시테이블을 구현한 클래스입니다. 즉, 해시맵은 해시테 이블의 일종으로, 기본적인 개념과 사용 방법은 동일합니다. 하지만 해시맵은 해시테이블보다 좀 더 최적화된 구조와 알고리즘을 사용하여 보다 높은 성능을 제공합니다. 해시맵은 동기화 된(Synchronized) 버전과 동기화되지 않은(Unsynchronized) 버전이 존재하며, 동기화된 버전은 멀티스레드 환경에서 안 ..

Algorithm 2023.04.12

[Effective Java] 아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라.

🎯 아이템 78. 공유 중인 가변 데이터는 동기화해 사용하라. synchronized 키워드는 해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. 한 개체가 일관된 상태를 가지고 생성되고, 이 객체에 접근하는 메서드는 그 객체에 락(lock)을 건다. 락을 건 메서드는 객체의 상태를 확인하고 필요하면 수정한다. 즉, 객체를 하나의 일관된 상태에서 다른 일관된 상태로 변화시킨다. 동기화 없이는 한 스레드가 만든 변화를 다른 스레드에서 확인하지 못할 수 있다. 동기화는 일관성이 깨진 상태를 볼 수 없게 하는 것은 물론, 동기화된 메서드나 블록에 들어간 스레드가 같은 락의 보호하에 수행된 모든 이전 수정의 최종 결과를 보게 해준다. 동기화는 배타적 실행뿐 아니라 스레드 사이의 안정적인 통신에 꼭 필..

Java 2023.04.12

[Effective Java] 아이템 77. 예외를 무시하지 말라.

// catch 블록을 비워두면 예외가 무시된다. 아주 의심스러운 코드다! try{ ... } catch (SomeException e){ } 예외는 문제 상황에 잘 대처하기 위해 존재하는데 catch 블록을 비워두면 예외가 존재할 이유가 없어진다. 물론 예외를 무시해야 할 때도 있다. 예를 들어 FileInputStream을 닫을 때가 그렇다. 파일의 상태를 변경하지 않았으니 복구 할 것이 없으며, 필요한 정보는 이미 다 읽었다는 뜻이니 남은 작업을 중단할 이유도 없다. 어쨌든 예외를 무시하고 했다면 catch 블록 안에 그렇게 결정한 이유를 주석으로 남기고 예외 변수의 이름도 ignored로 바꿔놓도록 하자. 참고 자료 Joshua Bloch, 『Effective Java 3/E』, 개앞맵시 옮김, ..

Java 2023.04.12

정렬(Sort)

정렬(Sort)은 주어진 데이터를 일정한 기준에 따라 순서대로 나열하는 것을 말합니다. 정렬은 대부분 검색과 함께 사용되어 검색의 성능을 높이기 위해 사용됩니다. 시간 복잡도(Time Complexity) 시간 복잡도(Time Complexity)는 코드의 실행 시긴이 어떤 요인으로 결정되는지 나타내는 시간과 입력 데이터의 함수 관계입니다. 일반적으로 알고리즘의 시간 복잡도는 입력 크기에 대한 함수로 표현되며, 이를 Big-O 표기법으로 나타냅니다. 빅오 표기법(Big-O) 알고리즘 성능을 수학적으로 표기해주는 표기법이다. 알고리즘의 실행시간보다는 데이터나 사용자 증가률에 따른 알고리즘 성능을 예측하는게 목표이므로 중요하지 않은 부분인 상수와 같은 숫자는 모두 제거한다. 즉, 빅오 표기법은 불필요한 연산..

Algorithm 2023.04.10

페이지 교체 알고리즘

페이지 교체 알고리즘은 메모리 관리에서 페이지 부재(page fault)가 발생할 때 어떤 페이지를 교체할지를 결정하는 알고리즘입니다. 페이지 부재란 프로세스가 필요한 페이지를 메모리에 찾지 못하고 디스크에서 가져와야 할 때 발생합니다. FIFO(First-In, First-Out) 가장 먼저 들어온 페이지를 우선적으로 교체합니다. 구현이 간단하며, 페이지의 시간적 특성을 반영하기 때문에 예측성이 높습니다. 하지만 최신 페이지가 교체되지 않는 문제점이 있습니다. 최적 페이지 교체(Optimal Page Replacement) 미래에 가장 오랫동안 사용하지 않을 페이지를 교체합니다. 최적의 교체 알고리즘이지만 구현이 불가능할 정도로 많은 예측이 필요합니다. LRU(Least Recently Used) 가장..

CS 2023.04.08
728x90
반응형