분류 전체보기

JAVA

JAVA Annotation

1. @Annotation : 메타데이터 자바 소스코드를 읽거나 쓰면 "@" 표시가 붙은 단어와 떨어질 수 없다. @Override, @Bean, @Getter, @Component ... 자바 어노테이션이란, 자바 소스코드의 메타데이터이다. 메타데이터란 데이터 자체에 대한 설명으로, 자바 어노테이션의 경우 자바 소스코드 대한 설명을 담고있다고 이해할 수 있다. 프로그램의 주요 비즈니스 코드와는 큰 관련이 없지만, 코드 자체에 대한 설명이나 횡단 관심사의 기능을 추가하고 싶을때 어노테이션을 이용한다. 2. Annotation 사용하는 이유 1) 코드 가독성 향상 어노테이션은 코드 정보 자체를 담고있다는 특징 때문에 코드의 가독성을 높여준다. 상위 인터페이스나 클래스를 상속 / 구현할 때, 오버라이드 하는..

JAVA

Java immutable 객체

1. Immutable 해야하는 이유 CS에서 말하는 Immutable은 "바뀌지 않음"이다. Immutable 객체란, 생성된 인스턴스의 내부 값이 변하지 않는 클래스를 말한다. 특별한 이유가 없는 한, 프로그래밍에서 객체는 최대한 불변으로 만드는 것이 좋다. 몇 가지 장점이 있기 때문이다. 1) 객체에 대한 신뢰성이 높아짐 객체에 저장된 상태값이 바뀔 가능성이 있는 프로그램에선 객체를 믿지 못한다. 객체를 생성할 때 설정했던 필드값이 바뀔 수도 있다면, 혹시 모를 사고를 피하기 위해 필드 값이 유효한지 검사하는 과정이 필요하다. 혹은 객체 데이터의 무결성을 확인하기 위해 불안에 떨며 프로젝트의 코드를 여기저기 뜯어봐야 할지도 모른다. 이는 생산성의 저하를 불러온다. '한 번 생성된 객체의 값은 변하지..

JAVA

Java volatile

1. Volatile : 휘발성 있는 물질 CS에서 말하는 '휘발성 있는' 이란 메인 메모리를 말한다. 파일 정보를 담는 하드디스크와 다르게, 메인 메모리는 전원을 끄면 사라지는 휘발성 정보를 담고 있기 때문이다. 컴퓨터 동작 과정에서, 하드웨어 메모리는 프로세스가 사용하는 메모리가 적재된다. 프로세스의 메모리에는 코드, 데이터 정보 등이 들어있다. 폰 노이만 구조의 컴퓨터는 메모리에서 명령어를 가져와 명령어 코드의 데이터 및 메모리 주소를 참고하여 일련의 프로그램을 수행하게 된다. 메모리는 강조하건데 컴퓨터 동작 과정에서 없어선 안되는 중요한 것이다. 이렇게 중요한 메모리와 관련된 volatile은 어떤 키워드이며, 언제 사용하는 것일까? 2. 가시성(Visible) visible 문제라는 것이 있다...

JAVA

Java ThreadLocal

1. 간단한 JVM의 메모리 프로세스와 스레드는 모두 CPU의 실행 단위이다. 각각의 메모리 공간과 실행의 흐름(조금 더 하드웨어적인 관점으로는 instruction, 프로그래밍 적으로는 메소드)을 가지고 프로그램의 로직을 수행한다. 프로세스는 프로그램 실행을 위해 필요한 일련의 모든 것들 즉, 힙과 스택 공간, 독립적인 파일 정보 등을 가진다. 그러나 스레드는 프로세스 내의 작은 실행 흐름(조금 더 자바적으로는 메소드)을 처리하기 위해 고유의 스택 영역과 pc를 가질 뿐이다. JVM이 가진 메모리는 크게 스태틱 영역(메소드 영역이라고 부르는 곳도 있는듯), 힙 영역, 스택 영역으로 구분된다. 스태틱 영역엔 기본적으로 사용되는 자바랭 패키지 이외에 프로세스 진행 중 로드되는 클래스 정보, static이 ..

김부추
'분류 전체보기' 카테고리의 글 목록 (12 Page)