java(22)
-
Multi Thread와 Multi Process란 무엇일까?
멀티스레드(mulit Thread) - 멀티스레드란 2개 이상의 스레드가 동시에 실행되는 것을 말합니다. - 프로세스의 Code, Data, Heap 영역을 공유하지만 Stack영역은 공유하지 않습니다. 장점 - 프로그램의 응답 시간이 줄어듭니다. - 시스템의 자원 소모가 감소합니다 (자원의 효율성 증대) - 시스템 처리량 증가 (처리 비용 감소) 단점 - 멀티 스레드를 사용할 경우 동기화 처리를 하지 않으면 데이터 손실 및 오류 발생 - 프로그램 디버깅이 어렵습니다. - 하나의 스레드에서 문제가 발생하면 전체 프로세스가 영향을 받습니다. - 단일 프로세스 시스템의 경우 효과를 기대하기 어렵습니다. 예시 (스타크래프트의 테란을 예로 들어보겠습니다..) 커멘드센터가 하나의 프로세스라고 한다면 SCV 4마리..
2020.09.03 -
Memory Leak이란 무엇일까?
Memory Leak (메모리 누수) 위키백과에 Memory Leak을 검색해보면 메모리 누수현상은 프로그램이 필요하지 않은 메모리를 계속 점유하고 있는 현상을 말합니다. 할당된 메모리를 사용한 다음 반환하지 않고 누적이 되기때문에 메모리가 누수가 발생합니다. 자바에서 메모리 누수는 더 이상 사용되지 않는 객체가 Garbage Collection에 의해서 회수되지 않고 계속 누적되는 현상입니다. Old 영역에 누적된 객체로 인해서 Major Garbage Collection이 계속 발생하게 되고, 프로그램의 응답속도가 늦어지다가 결국 OOM(OutOfMemory) 오류가 발생되어 프로그램이 종료됩니다. 주로 빈번한 전역변수의 선언, 리스트, 해쉬맵 같은 콜렉션에 해당하는 객체를 해제하지 않고 계속 유지하..
2020.08.09 -
JVM(Java Virtual Machine)이란 무엇일까?
특징 - Java가 OS에 종속되지 않고 프로그램을 실행할 수 있도록 합니다. (JVM은 OS에 종속됩니다.) - JVM은 JRE(Java Runtime Environment)에 포함되어 있습니다. - JVM은 스택을 기반으로 하는 가상머신입니다. 역할 - Java와 OS 사이에서 중계자 역할을합니다. - Java Application을 Class Loader를 통해서 읽어 들이고 Java API와 함께 실행합니다. - 메모리와 Garbage Collector를 관리합니다. JAVA 프로그램 실행 과정과 JVM의 메모리 구조 프로그램 실행 -> JVM이 OS에게 메모리 할당 요청 -> JVM은 할당 받은 메모리를 용도에 따라 나누어 관리합니다. - JAVA source : 개발자가 작성한 Java cod..
2020.08.03 -
Boiler plate란 무엇일까?
Boiler plate 보일러를 찍어내는 통이라는 뜻을 가지고 있습니다. - 최소한의 변경으로 재사용할 수 있는 것 - 적은 수정만으로 여러 곳에 활용 가능한 코드, 문구 - 각종 문서에서 반복적으로 인용되는 문서의 한 부분 ex)getter, setter Java의 경우 Lombok Lib를 사용하면 자동화가 가능합니다.
2020.05.07 -
IoC와 DI란 무엇일까?
IoC (Inversion of Control) IoC는 제어의역전이란 뜻을 가집니다. 쉽게 말해 제어가 반대로 간다는 개념입니다. IoC는 객체 생명 관리, 흐름 제어를 제 3자에게 위임하는 프로그래밍 모델입니다. 아래는 IoC 프로그래밍 패턴으로 AnimalFactory 추상 클래스에게 권한을 위임한 예제입니다. ex) public abstract class AnimalFactory { private Animal animal; public Animal getAnimal () { return make(); } private Animal make() { return animal; } protected abstract void tiger(); protected abstract void horse(); } ..
2020.05.06