자바 리플렉션
리플렉션이란? 사전적 의미로는 ‘반사’라는 뜻을 가지고 있으며, 자바에서는 런타임 단계에서 클래스, 메서드 등의 정보를 얻어오는 기술을 뜻한다. 연못에 형상이 반사되어 비치듯이, 투영된 클래스의 정보를 얻어온다는 의미로 이러한 이름이 붙은게 아닌가 싶다. 리플렉션을 활용하는 대표적인 사례로는 Jackson과 같이 객체를 매핑해주는 라이브러리가 있...
리플렉션이란? 사전적 의미로는 ‘반사’라는 뜻을 가지고 있으며, 자바에서는 런타임 단계에서 클래스, 메서드 등의 정보를 얻어오는 기술을 뜻한다. 연못에 형상이 반사되어 비치듯이, 투영된 클래스의 정보를 얻어온다는 의미로 이러한 이름이 붙은게 아닌가 싶다. 리플렉션을 활용하는 대표적인 사례로는 Jackson과 같이 객체를 매핑해주는 라이브러리가 있...
static 이란? static은 정적으로 할당되는 변수, 함수, 클래스 등에 사용되는 키워드이다. 전역으로 공유되는 고정된 변수나 메서드를 정의할 때 사용되며, 프로그램의 생성과 동시에 static 영역에 할당되고 프로그램이 종료될 때 까지 유지된다. 사용 예시 static 키워드 사용 시 개발자가 별도의 객채 생성 과정을 거치지 않고 변수...
try with resources 란? try with resources는 자원 반납 코드를 자동으로 실행되도록 지원해주는 문법이다. 파이썬에서는 with, C#에서는 using과 같은 유사한 문법이 존재한다. 기존 방식 (try-catch-finally) 문제점 public static void main(String args[]) { ...
해시 함수란? private void hash(int x){ return x % 5; } hash(7); // 2 hash(8); // 3 hash(9); // 4 해시 함수는 입력값을 고정된 길이의 특정 값으로 출력하는 함수이다. 출력 데이터인 해시값은 동일한 입력에는 항상 동일한 값을 리턴한다. 모듈러 연산(나머지 계산...
서론 병렬 처리란 CPU의 멀티 코어를 활용, 작업의 요소를 분할해서 각각의 코어가 처리하는 것을 말한다. Java 8부터 Stream API가 도입되었고, 해당 기능을 이용해 손쉽게 병렬 처리를 구현 가능하다. 병렬 처리가 더 많은 코어를 활용하기 때문에 항상 빠르다고 생각할 수도 있으나 그렇지는 않다. 병럴성 데이터 병렬성 데이터를 분할해서...
데이터 타입 원시 타입 byte 8비트의 정수 자료형, 기본값은 0이며 -128 ~ 127의 범위를 가진다. short 16비트의 정수, 기본값은 0이며 -32768 ~ 32767의 범위를 가진다. int 32비트의 정수, 기본값은 0이며 -2147483648 ~ 2147483647의 범위를 가진다. long 64비트의 정수, 기본값은 0...
개론 어딘가에 갔을 때 그곳의 문화, 풍습에 맞게 행동하라는 말을 비유적으로 할 때 ‘로마에 가면 로마법을 따르라’ 라는 글귀를 언급하곤 한다. 그렇다면 우리는 객체지향의 세계에 입문했다면, 무조건 객체지향의 원칙들을 지켜야 하는 것일까? 물론 반드시 지킬 필요는 없다. 범법행위도 아니라서 잡혀갈 일도 없다. 그런데 왜 우리는 객체지향의 원칙들을...
개론 자바의 가비지 컬렉션 알고리즘은 기본적으로 Stop The World 이벤트를 전제하에 구성된다. Stop The World 이벤트 발생 시 모든 스레드가 일시 정지되고, 성능에 치명적이기 때문에 이를 개선하기 위해 다양한 방식의 GC가 개발되고 있다. 자바에는 어떤 GC가 존재하는지, 종류별 특징은 무엇인지 알아보자 GC의 종류 Ser...
개론 대부분의 고수준 프로그래밍 언어들은 개발자가 메모리를 직접 해제하지 않는다. 별도의 프로그램이 동적으로 할당된 메모리의 여유분을 관리하는데 이를 가비지 컬렉터라고 한다. 그에 반해 c, c++과 같이 기계에 조금 더 가까운 언어들은 메모리 관리에 대한 책임이 전적으로 개발자에게 있다. 그렇다면 가비지 컬렉터는 어떤 방식으로 작동하는지 자바의...
컴퓨터의 진법 우리는 컴퓨터가 2진수로 숫자를 처리한다고 많이 접했다. 어찌보면 당연한 선택이기도 하다. 메모리 셀, 플립플롭 등에 데이터를 저장하는 컴퓨터는 전하가 일정치를 넘어서 존재하느냐(1), 존재하지 않느냐(0) 외에 추가적인 선택지를 고안하기는 쉽지 않기 때문이다. 3진법으로 컴퓨터를 구성하는 개념과 시도 또한 있는 것으로 알고 ...