본문 바로가기

반응형

공부 정리

(141)
Hash 충돌 회피 알고리즘 개요 Hash 충돌에는 다양한 회피 알고리즘이 있습니다. 더 나은 성능을 위해서 계속 성능이 좋은 방식으로 진화하고 있으며, 대표적으로 HashMap에서 사용됩니다. 하지만 항상 최신 방법이 좋은 것은 아니며, 트레이드오프(trde-off)를 잘 따져보고 사용해야 합니다. 목차 Direct-Address Table Hash & HashTable 이란? Hash Function 나눗셈 방법 Collision 1. Chaining 2. Open Addressing - Linear Probing - Quadratic Probing - Double Hashing Open Addressing 성능 Direct-Address Table Direct-Address Table은 배열을 사용해서 실제 key값이 바로 해..
Iterator & Enumeration & ListIterator 개요 Enumeration, Iterator 둘 다 java.util pacakage에 있는 인터페이스이고 컬렉션 객체들의 요소들을 조회할 때 사용합니다. Enumeration과 Iterator의 차이점은 Iterator는 remove()를 제공한다는 것입니다. Enumeration은 legacy이며 Iterator를 쓰는 것이 더 좋습니다. Iterator와 Enumeration 메소드 Iterator와 Enumeration의 메서드를 표로 알아보겠습니다. 메서드명으로 직관적으로 해석이 되므로 따로 설명을 넣지 않았습니다. Iterator Enumeration hasNext() hasMoreElements() next() nextElement() remove() - 과연 어떤 인터페이스를 사용하는 것이..
Fail-Fast vs Fail-Safe 개요 자바에서는 Fail-Fast라는 용어가 있습니다. 말 그대로 빠르게 실패한다는 의미로, 자바 컬렉션을 사용할 때 언제 어떻게 사용한는지 알아보겠습니다. Fail-Fast vs Fail-Safe Iterator 자바 컬렉션은 fail-safe와 fail-fast 2가지 Iterator 타입이 있습니다. fail-safe는 컬렉션이 순환 도중에 변경이 가능한 경우이고, fail-fast는 컬렉션이 순환 도중에 변경이 불가능한 경우입니다. 즉, 비동기적인 작업 중에 동시적인 변경을 보장하지 못합니다. fail-fast를 해결하기 위해서는, 복사본을 사용하거나, 동기화를 보장하거나, Iterator 대신에 Enumeration을 사용하면 됩니다. 예를 들어, ArrayList의 경우, 순환을 할 때, 다른..
ArrayList & Vector 차이점 개요 ArrayList와 Vector는 배열을 이용해 구현되어 있습니다. 공통점과 차이점을 알아보겠습니다. 공통점 - 내부가 배열로 구현되어 있으며 동적으로 사이즈가 늘어난다. - 사용하는 메소드가 똑같다.(add, remove, get 등등) Vector의 특징 - 초기 JDK의 첫번째 버전으로서 java.util.Vector에 속해 있습니다. 1.2버전부터 vector는 List를 구현하고 컬렉션 프레임워크에 포함됩니다. - Vector의 모든 메소드는 동기화되어있습다.(syncrhonized) - 사이즈 변경시 현재의 2배로 늘어납니다. - Iterator 뿐만 아니라 Enumeration을 통해서도 조회할 수 있습니다. ArrayList의 특징 - 자바 1.2버젼에서 등장하였고 java.util...
Compile vs Interpretation 개요 자바는 Interpreter를 사용하는 언어라고 합니다. 또한 C는 Compile을 하는 언어라고 합니다. 이 둘의 차이점이 뭔지 알아보겠습니다. Compile 컴파일은 바로 실행가능한 기계어로 변환합니다. 따라서 인터프리터보다 더 빠르고 효율적입니다. 메모리관리나 CPU 사용 등 하드웨어 측면에서도 개발자가 더 많은 관리가 가능합니다 컴파일 언어는 컴파일이 되고나면 빌드가 필요합니다. 만약에 코드에 변경이 필요하면 재빌드를 해야 합니다. Interpretation 인터프리터는 프로그램을 통해 한줄씩 동작하며 각 명령어를 실행합니다. 하지만 중간에 목적코드를 만들지 않기 때문에 메모리 관리는 훨씬 효율적입니다. 인터프리터 언어는 컴파일 언어보다 확연히 느렸지만, JIT 컴파일러 덕분에 그 차이가 많..
다형성 / Up-casting & Down-casting 목차 다형성이란? 다형성의 예제 그림 참조변수의 형변환 예제 다형성이란? 다형성이란 하나의 객체가 여러가지 타입을 가질 수 있는 것입니다. 부모 클래스의 참조변수로 자식 클래스의 인스턴스를 참조하는 방식으로 많이 사용합니다. 다형성, 업캐스팅, 다운캐스팅 부모-자식 관계의 클래스에서 어떻게 다형성을 활용하는지 아래 그림과 함께 보겠습니다. 부모가 Parent 클래스이고 자식이 Child 클래스입니다. 부모클래스 참조변수 Parent p 는 자식 클래스의 인스턴스 new Child()를 참조합니다. 이를, 업캐스팅(Upcasting) 이라고 합니다. 자동으로 형 변환을 합니다. Parent p = new Child(); 반대로 자식 클래스 참조변수 Child c가 부모 클래스의 인스턴스 new Parent..
Wrapper class / Integer cache pool 기본타입 래퍼 클래스 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean Wrapper class란 자바의 기본 데이터 타입(primitive)을 객체 형태의 참조타입으로 만든 것이다. primitive를 객체로 감싼다는 의미로 "wrap"을 사용한다. 모든 기본 데이터 타입은 그와 관련된 클래스를 가지는 것이다. int와 char형태만 달라지는 것에 유의하며, 참고로 이 8가지의 기본타입 때문에 자바를 100% 객체지향언어라고 할 수 없다. 박싱(Boxing)과 언박싱(UnBxoing) 박싱(Boxing) : 기본타입 -> 래퍼클래스로 변환 언박싱(UnBoxing) : 래퍼클..
Override vs Overload 차이점 Override와 Overload는 이름이 비슷하지만 다륵 특성을 가지고 있습니다. 특히, Overload의 경우에는 매개변수와 타입이 달라도 됩니다. Override Overload 메소드 이름 동일 동일 매개변수, 타입 동일 다름 반환형 동일 상관없음 Overide는 메소드 이름, 매개변수, 타입, 반환형이 같기 때문에, 내부 구현만 바뀐다고 생각하면 됩니다. Overload는 메소드이름과 반환형은 동일하지만, 매개변수와 타입의 구성 및 갯수가 다를 수 있습니다. 위 사진을 보면, Override는 보통 extends 등 상속을 할 때 메서드를 Override 한다고 표현합니다 Overload는메서드 이름은 같지만, 매개변수가 int와 long으로 서로 다를 수 있습니다. Override pu..

반응형