[Java] Garbage Collector
·
Language/Java
GC란?C/C++ 언어에서는 개발자가 mallc/free 또는 new/delete로 직접 메모리를 관리해야 한다.하지마 Java는 JRE 구성요소 중 하나인 Garbage Collertor(GC)가 존재하여,개발자가 명시적으로 객체를 해제 하지 않아도 사용하지 않는 객체를 자동으로 메모리에서 제거한다.그럼 사용하지 않는 객체는 어떻게 판단하냐면1. 객체가 NULL인 경우2. 블럭 실행 종료 후, 블록에서 생성된 객체3. 부모 객체가 NULL인 경우, 포함하는 자식 객체일 경우에 해당 객체들은 GC의 대상이 된다. GC는 JVM의 힙(Heap) 영역에서 동작하며, 참조가 끊어진 객체를 찾아 제거한다.이때 GC를 수행하기 위해 JVM이 애플리케이션 실행을 일시 중지하는 현상을 Stop-The-World(..
[Spring] Ioc, DI
·
Language/Spring
소프트웨어 설계의 핵심은 변화에 유연하게 대응할 수 있는 구조를 만드는 것이다.그중에서도 객체 지향 설계 원칙인 SOLID는 스프링(Spring) 철학의 기반이 된다.이번 글에서는 그중에서도 IoC(Inversion of Control, 제어의 역전)과 DI(Dependency Injection, 의존관계 주입)를 중심으로 살펴본다. 좋은 객체 지향 설계의 5가지 원칙 (SOLID)SRP (단일 책임 원칙)한 클래스는 하나의 책임만 가져야 한다.OCP (개방-폐쇄 원칙)확장에는 열려 있고, 변경에는 닫혀 있어야 한다.LSP (리스코프 치환 원칙)부모 타입의 객체를 자식 타입으로 대체해도 정상 작동해야 한다.ISP (인터페이스 분리 원칙)클라이언트에 맞는 여러 개의 구체적 인터페이스를 만들어야 한다.D..
[Java] BufferedReader vs scanner
·
Language/Java
도입본격적으로 알고리즘 문풀에 들어간 김마루..scanner로 쓰다가 무수한 시간초과 실패를 겪어버렸다.이유가 뭔지 찾아보니 scanner는 내부적으로 입력한 데이터를 파싱하는게 복잡해서BufferReader에 비해 시간이 더 오래 걸리는 것이였다.!! 그런 김에 둘의 사용법 비교도 하고 앞으로 BufferReader 사용법을익숙해지기 위해 ㄱㄱ혓! scannerscanner는 자바에서 기본적으로 제공하는 클래스이다.scanner도 기본적으로 버퍼를 사용하는데 사용하는 메소드에 따라서 다양하게 존재한다.nextInt() / next() / nextline() 등등..nextInt()의 경우 공백문자를 구분자로 사용하여 정수 형태의 토큰으로 구별한다.즉, 구분자는 숫자를 구별해주는 역할이고 실제로는 ..
[Java] ArrayList를 인터페이스로 업캐스팅 하는 이유
·
Language/Java
의문점코테를 하다보면 Array의 경우 크기가 고정되어 있기 때문에 가끔씩 쓰기 불편할 때가 있다그래서 Array를 -> ArrayList로 변환하여 가변적인 ArrayList를 자주 사용한다 // List 인스턴스 사용List list = new ArrayList();// ArrayList 인스턴스 사용ArrayList list = new ArrayList();문제는 ArrayList를 사용할 때 필연적으로 1번 방법을 사용하는데지금까지 무지성으로 써왔다는 점이고 마침 인터페이스 업, 다운 캐스팅을 공부하다보니 의문점이 들어서 포스팅을 하려고 한다 인터페이스란class A { void run() { System.out.println("뜁니다"); } }class B { void jump() { Sy..