JAVA

· JAVA
제네릭은 JDK 1.5에 도입되었습니다. 제네릭이 도입될 당시 JDK5는 기존의 코드를 모두 수용하면서 제네릭을 사용하는 새로운 코드와의 호환성을 보장할 필요성이 있었습니다. 제네릭의 정의 다양한 타입의 객체에 대하여 재사용성을 제공하는 프로그래밍 기법 타입을 파라미터화 해서 컴파일 시 구체적인 타입이 결정되도록 하는 방식 컴파일 시점에 강한 타입 체크를 통해 런타임 시점 에러를 방지 제네릭 타입의 네이밍 컨벤션 자바에서 정한 규칙은 아래와 같습니다. E : 요소(Element, 자바 컬렉션(Collection)에서 주로 사용 K : 키 N : 숫자 T : 타입 V : 값 S, U, V : 두 번째, 세 번째, 내 번째에 선언된 타입 ? : 와일드카드(Wildcard)는 모든 타입을 의미 반공변성(Con..
· JAVA
for-loop vs for-each (향상된 for문) // for-loop for(int i = 0; i { // }); 사실 forE..
· JAVA
오류 vs 예외 오류(Error)는 시스템에 비정상적인 상황을 의미합니다. 이런 오류는 개발자가 미리 예측할 수 없으므로 오류 처리에 대한 신경을 쓰지 않아도 됩니다. 예외(Exception)는 개발자가 구현한 로직에서 발생합니다. 즉, 예외는 발생할 상황을 미리 예측하여 처리할 수 있기 때문에 예외를 구분하고 그에 따른 처리 방법을 명확히 알아야 합니다. 예외 클래스 모든 예외 클래스는 Throwable 클래스를 상속받습니다. 그 중 Exception의 Checked Exception과 RuntimeException의 차이는 뭘까요? Checked Exception과 RuntimeException(Unchecked Exception)의 가장 분명한 차이는 “반드시 처리해야 하느냐”입니다. Checked..
· JAVA
Java NIO(New I/O)의 ServerSocketChannel과 SocketChannel은 블로킹과 논블로킹 방식을 지원합니다. 논블로킹 방식의 특징은 "제어권을 넘기지 않는다"라고 표현할 수 있겠습니다. 논블로킹 방식은 제어권을 넘기지 않기 때문에 함수 실행 흐름이 그대로 유지됩니다. ServerSocketChannel의 accept() 메소드를 예시로 살펴보겠습니다. serverSocketChannel의 accept() 메소드를 실행해도 논블로킹 방식이기 때문에 결과가 바로 리턴됩니다. 따라서 언젠가는 연결 요청이 올 것을 대비해서 무한 루프 내부에서 연결을 기다려야합니다. while(true) { SocketChannel socketChannel = serverSocketChannel.acc..
· JAVA
버퍼는 읽고 쓰기가 가능한 메모리 배열로 NIO에서는 데이터를 입출력하기 위해 항상 사용합니다. NIO의 버퍼는 저장되는 데이터 타입에 따라서 분류할 수 있고, 어떤 메모리를 사용하느냐에 따라서 다이렉트와 넌다이렉트로 분류할 수 있습니다. 데이터 타입에 따른 버퍼 ByteBuffer: byte 데이터가 저장되는 버퍼입니다. MappedByteBuffer: 파일 내용에 랜덤하게 접근하기 위해서 파일의 내용을 메모리와 맵핑시킨 버퍼입니다. CharBuffer ~ DoubleBuffer: 각 데이터 타입이 저장되는 버퍼입니다. 넌다이렉트와 다이렉트 버퍼 버퍼가 사용하는 메모리의 위치에 따라서 넌다이렉트 버퍼와 다이렉트 버퍼로 분류됩니다. 넌다이렉트 버퍼는 JVM이 관리하는 힙 메모리 공간을 이용하고 다이렉트 ..
· JAVA
스레드 상태 주기 스레드의 상태 주기는 다음과 같다. 빨간색 표시는 Deprecated 된 메소드를 의미한다. Thread 클래스에서 getState()가 제공하는 Thread.State 열거 상수는 스레드의 상태를 나타낸다. 상태 열거 상수 설명 객체 생성 NEW 스레드 객체가 생성, 아직 start() 메소드가 호출되지 않은 상태 실행 대기 RUNNABLE 실행 상태로 언제든지 갈 수 있는 상태 일지 정지 WAITING 다른 스레드가 통지할 때까지 기다리는 상태 TIMED_WAITING 주어진 시간 동안 기다리는 상태 BLOCKED 사용하고자 하는 객체의 락이 풀릴 때까지 기다리는 상태 종료 TERMINATED 실행을 마친 상태 간단하게 스레드의 State를 얻어서 출력해보자. 컴퓨터 사양이 좋아서 ..
@xftg77g
'JAVA' 카테고리의 글 목록