본문 바로가기

분류 전체보기

(21)
MD4, MD5 알고리즘 보호되어 있는 글입니다.
UUID 업무에서 종종 식별자 필요할 때 UUID를 사용하는 데, UUID 가 무엇이고 왜 사용하는 지 정리해보았다. 명칭 UUID universally unique identifier (or GUID Globally Unique Identifier) 길이 128 비트, 16 octet(8비트) 동기 영구적이고 고유한 값인 URN 을 위해 제안됨 장점 UUID 를 부여하기 위해 어떤 중앙 처리 과정이나 권한이 필요하지 않음 완전히 자동으로 생성될 수 있음 트랜잭션의 식별자로 사용될 수 있을 만큼 할당 속도가 빠름 다른 방법들에 비해 상대적으로 작은 길이로 소팅, 해싱, 할당, DB 저장, 프로그래밍 등을 쉽게 가능하도록 함 형태 uuid time-low "-" time-mid "-" time-high-and-ve..
링크드 리스트로 브라우저 히스토리 구현하기 덱 자료구조를 활용한 경우를 찾아보면 브라우저 히스토리나 멀티 스레드 스케줄링 등이 나옵니다. 익숙하고 자주 사용해 본 브라우저 히스토리 API 의 메서드를 링크드 리스트로 구현해보았습니다. 브라우저 히스토리 브라우저 히스토리 API는 브라우저의 세션 히스토리에 접근할 있도록 합니다. 주요 메서드는 다음과 같습니다. back() : 이전 기록으로 이동 forward() : 앞선 기록으로 이동 go(int i) : i 만큼 이동, 음수이면 back, 양수이면 forward와 같음 제약 조건 브라우저 히스토리를 구현할 때 다음을 조건으로 두었습니다. 히스토리의 총 길이는 5이며, 이를 넘어갈 경우 가장 오래된 기록을 삭제합니다. back, forward, go를 모두 구현합니다. 히스토리의 정해진 길이보다 ..
링크드 리스트 링크드 리스트는 리스트 List와 덱 Deque 등을 구현한 클래스입니다. 링크드 리스트에 대해 알아보기 전에 리스트와 덱에 대해 먼저 알아보았습니다. 리스트 인터페이스 리스트 인터페이스는 순서가 있는 컬렉션으로 시퀀스 sequence 라고도 불립니다. 요소가 삽입될 위치를 조정할 수 있고, 인덱스로 요소에 접근할 수 있고, 리스트 내의 요소들을 검색할 수 있습니다. 아래 표는 각 기능을 구현한 메서드에 대한 설명입니다. 인덱스로 요소에 접근하는 메서드 구현한 클래스에 따라 요소를 인덱스로 접근하는데 인덱스의 값에 따라 실행 시간이 소요될 수 있습니다. (예: 링크드 리스트) get 메서드가 여기에 해당합니다. 리스트 내의 요소들을 검색하는 메서드 성능적인 면에서 주의해서 사용해야 하는데, 대부분의 구현..
어레이 리스트 어레이 리스트 특징 어레이 리스트 ArrayList 클래스는 컬렉션 인터페이스 포스트에서 말한 Collection 인터페이스를 구현한 객체 중 하나입니다. 다음과 같은 특징을 가지고 있습니다. List 인터페이스를 구현한 클래스이며, 요소로는 null을 포함한 모든 타입을 가질 수 있습니다. 변경할 수 있는 메서드를 지원하고, 가변 객체이고, 가변 크기 리스트이며, 임의 접근 리스트입니다. size, isEmtpy, get, set, iterator 등은 O(1), add와 나머지 대부분의 메서드들은 O(n)의 시간 복잡도를 가집니다. 배열 용량 capacity 어레이 리스트 객체는 리스트 내부에 요소들을 저장하는데 사용하는 배열의 크기를 지칭하는 배열 용량 capacity 를 가지고 있습니다. 어레이 ..