최근 포스트

[Effective Java] 13. 접근 권한의 최소화

1 분 소요

잘 설계된 모듈은 구현 세부사항을 API 뒤에 잘 숨긴다. 즉, 정보 은닉(information hiding). 다른말로 캡슐화(encapsulation)가 잘 된 것이다. 1. 캡슐화의 중요성 모듈간의 캡슐화가 잘 된 경우 모듈사이 의존성을 낮춰서 개별적인 개발, 테스트, ...

[Effective Java] 1. Static Factory Method

2 분 소요

객체를 생성하는 방법으로 생성자 외 정적 팩토리 메서드(Static Factory Method)를 사용하는 방법이 있다. 일반적인 생성자보다 장점이 많으니 무조건 생성자를 만들것이 아니라 static factory method를 만드는것을 고려해봐야 한다. singleto...

조건문과 반복문의 속도

1 분 소요

1. if문 개수에 따른 속도차이 결론적으로 if문의 개수에 따른 실행속도의 차이는 무시해도 될 만큼 작다. if문 자체보다 if문에 들어가는 조건을 비교하는 구문이 얼마나 빠르냐가 성능을 좌우한다. 2. switch-case 문에서의 String 비교 JDK 6까지 swit...

자바의 Reference 형태와 GC

6 분 소요

1. 자바의 GC(Garbage Collector) GC는 프로세스의 힙 영역에 할당된 메모리 중 더 이상 사용되지 않는 메모리를 주기적으로 회수함으로써 프로세스 메모리를 관리한다. 자바에서 GC는 다양한 형태가 있지만 공통적으로 다음과 같은 작업을 한다. 힙(heap...

성능 체크를 위한 Sytem.nanoTime()

최대 1 분 소요

시간 관련 메서드에 대표적으로 System.currentTimeMills() 가 있다. 이 메서드는 UTC 시간 표준을 따르면서 현재 시간을 ms로 리턴한다. System.nanoTime() 은 JDK 5.0에 추가된 메서드로 시간을 ns 로 리턴한다. 1. System....

변수, 상수, 리터럴

최대 1 분 소요

변수는 메모리 공간에 할당된 이후 값이 변화될 수 있는 값이다.

기본 자료형과 Wrapper class

2 분 소요

자바는 Primitive type에 상응하는 각각의 Wrapper class를 가지고 있다. 이를 통해 기본 데이터 타입도 객체 단위로 처리할 수 있도록 하고, 기본 데이터를 다루는 여러 유용한 메서드를 사용할 수 있도록 한다. 1. Autoboxing, Auto-unboxi...

volatile 키워드

3 분 소요

1. volatile 키워드란? volatile 역시 synchronized와 마찬가지로 동기화를 위한 키워드이다. volatile은 instance의 멤버 필드를 동기화하기 위한 키워드로 JDK 1.4까지 제대로 지원이 안되다가 1.5부터 다시 주목받게 되었다.