본문 바로가기

Java11

DI(Dependency Injection)이 뭘까? 이번 글에서 DI(Dependency Injection) 의존성 주입에 대해 설명하도록 하겠습니다. DI란? DI는 Dependency Injection에 줄임말로 의존성 주입이란 뜻을 가지고 있습니다. 의존성 주입을 알기 전에 의존성이 무엇인지에 대한 개념을 먼저 짚고 넘어가야 합니다. Depencency(의존성) 이란 A 가 B에 의존하면 B 가 변경되었을 때 A에게 영향을 미친다. 예시를 들자면 요리사가 레시피에 의존하고 있을 때 레시피가 변경되면 요리사에게 영향을 끼친다는 것을 생각하면 이해하기 쉬울 것 같습니다. 코드적 관점으로 보면 A 클래스에서 B 클래스를 의존하고 있다면 B 클래스의 기능 혹은 변경사항이 있다면 그 영향이 A 클래스에게 미친다고 이해할 수 있습니다. 코드를 보면서 설명하도록.. 2024. 1. 10.
JVM 메모리 구조에 대해 [JAVA] JVM이란? JAVA Virtual Machine의 약자로 자바와 운영체제 사이에서 중개자 역할을 수행하며, 자바가 운영체제에 구애받지 않고 프로그램을 실행할 수 있도록 도와줍니다. JVM을 간단히 설명했으니 본론으로 넘어가 JVM 메모리 구조에 대해 설명하겠습니다. JVM 메모리 구조 메모리 구조는 크게 Class Loader,Garbage Collector, Execution Engine, Runtime Data Area로 분류할 수 있습니다 클래스 로더가 컴파일러에 의해 바이트코드로 변환된 클래스 파일을 읽어 들이면서 JVM이 수행됩니다. Class Loader 자바 바이트 코드를 읽어서 JVM의 실행 엔진이 사용할 수 있도록 동적으로 Runtime Data Area(JVM Memory)의 메서드 .. 2022. 12. 29.
[Java]#9 개선된 for 문 개선된 for문 JDK 1.5 이상에서만 작동합니다. 배열이나 여러 원소를 포함한 자료형에서 사용됩니다. 장점 1.가독성 좋은 코드를 작성할 수 있습니다. 2.배열 인덱스 문제 해결(ArrayIndexOutOfBoundsException 예외를 피할 수 있습니다.) 단점 1.기존 for문에서 카운트 변수로 사용하던 인덱스를 사용하지 못합니다. 2.배열이나 ArrayList 값을 사용할 순 있지만 수정을 할 수 없습니다. 사용 이유 여러 원소로 이루어진 집합의 모든 원소에 대해 작업을 반복하기 위해 사용됩니다. 문법 for(자료형 변수명:배열 변수){ 사용할 코드 } 예제 String[] area = {"서울","수원","화성","세종","부산"}; for(String a:area) { System.out.. 2022. 5. 31.
#8 예외 처리(Exception) 예외(Exception) 프로그램을 실행하다가 보면 어떠한 원인 때문에 오류를 일으키며 프로그램이 종료되는 현상을 보셨을 텐데요. 이러한 오류를 사전에 예측해 방지하는 것을 예외처리라 합니다. 예를 들어 위 코드에서 정수타입을 입력을 받는다 할 때 문자열이나 실수를 입력하면 어떻게 될까요? 정수 타입만 받는다고 코드를 적었는데 문자열을 입력했으니 오류를 일으키며 프로그램이 종료되는 것을 확인할 수 있습니다. 이럴 때 사용하는 것이 예외 처리라는 것입니다. 예외처리 1.try, catch 오류가 발생했을 때 try, catch,, finally라는 키워드로 예외를 처리할 수 있거나 메서드를 호출한 곳에서 사용할 수 있습니다. 한 가지 아셔야 할 점은 자바에서 모든 예외는 Exception이라는 클래스를 상.. 2022. 4. 17.
#7 스레드(Thread)가 무엇인가? 스레드(Thread)란? 스레드(thread)란 프로세스(Process) 내에서 실제로 작업을 수행하는 주체를 의미합니다. 모든 프로세스에는 한 개 이상의 스레드가 존재하여 작업을 수행합니다. 두 개 이상의 스레드를 가지는 프로세스를 멀티스레드 프로세스(Multi-Threaded process)라고 합니다. 프로세스(Process)란? 프로세스(Process)란 단순히 실행 중인 프로그램(Program)을 뜻합니다. 사용자가 작성한 프로그램이 메모리 공간을 할당받아 실행 중인 것을 말합니다. 이러한 프로세스는 데이터와 메모리 등의 자원 그리고 스레드로 구성됩니다. 스레드 예제 1.Thread 클래스를 Extends(상속)받아 구현하는 방법 2.Runnable 인터페이스를 구현하는 방법 두 방법 모두 ru.. 2022. 4. 17.