Study

Spring 웹 애플리케이션을 개발할 때 특정 객체를 Spring 컨테이너가 관리하는 Bean으로 등록하고 싶은 경우에는 @Bean 어노테이션 또는 @Component 어노테이션을 사용합니다. @Bean과 @Component 둘 다 Component Scan을 통해 Spring Bean으로 등록되고 Life Cycle이 관리되지만, 사용 방법과 용도에 따라 차이가 있습니다. 이번 포스팅에서는 이 두가지 방식이 어떤 차이를 가지는 지 알아보고자 합니다. @Bean 먼저 @Bean 어노테이션은 메서드 레벨에 선언하는 어노테이션으로, 생성자 메서드를 통해 Spring Bean을 등록합니다. 해당 어노테이션은 독립적으로 사용할 수 없고, 클래스 레벨에 @Component를 포함하고 있는 어노테이션을 함께 선언해..
이진 탐색 트리 (Binary Search Tree) 의 개념 이진 탐색 트리란 ? Binary Search Tree (이하, BST)는 모든 노드의 왼쪽 서브 트리가 해당 노드 보다 작은 값을 가지고, 오른쪽 서브 트리가 해당 노드 보다 큰 값을 가지는 구조의 Binary Tree 입니다. 위의 그림에서는 노드 20의 왼쪽 서브 트리는 모두 20보다 작은 값을 가지고, 오른쪽 서브 트리의 모든 값은 20보다 큰 값을 가지고 있습니다. 그런데 만약 자식 노드 중 이러한 조건을 하나라도 만족하지 않는 노드가 존재한다면 BST가 아니게 됩니다. 예를 들어 5의 자식 노드 중 오른쪽 자식 노드가 1의 값을 가진다면, 해당 트리는 더이상 BST가 아닙니다. 이러한 특징을 가지는 BST는 항상 작은 값은 왼쪽, ..
이진 트리란 ? 이진 트리는 트리 형태의 자료 구조 중 가장 많이 사용하는 트리로, 각 노드의 자녀 노드 수가 최대 두개인 트리를 이진 트리(Binary Tree)라고 합니다. 형태에 따른 이진 트리 종류 1. Full Binary Tree (정 이진 트리) Full Binary Tree란 모든 노드가 자녀 노드가 없거나 또는 두 개의 자녀 노드를 가지는 이진 트리입니다. (즉, 자녀 노드를 1개를 가지는 노드가 없어야 합니다) 2. complete binary tree (완전 이진 트리) complete binary tree는 마지막 레벨을 제외한 모든 레벨의 노드가 두 개씩 노드를 가지고, 마지막 레벨은 왼쪽 부터 빠짐없이 노드가 채워지는 이진 트리입니다. 3. perfect binary tree (..
Tree의 개념 트리(Tree) 란 노드(Node)들의 집합으로, 노드는 값(value)과 다른 노드들을 가리키는 레퍼런스(Reference)들로 구성되어 있습니다. Tree의 주요 용어 간선 간선 (Edge)란 노드와 노드를 연결하는 선을 의미하고, 구현 관점에서는 노드 간의 주소 값 레퍼런스(참조)를 의미합니다. 역할 별 노드 트리의 노드는 역할에 따라 자녀 노드 , 부모 노드, 형제 노드, 조상 노드, 자손 노드, 내부 노드, 외부 노드 가 있습니다. 각 노드들이 무엇이고 어떤 역할을 하는지 그림을 통해 알아보겠습니다. 1. 루트 노드 (Root Node) 모든 노드의 최상위 노드 위 그림에서 P에 해당합니다. 2. 자녀 노드 (Child Node) 특정 노드의 바로 아래에 연결된 노드 부모 노드..
· Study/Java
Garbage Collection 이란 ? Garbage Collection (이하 GC)는 자바의 메모리 관리 기법 중 하나로, Heap 영역에서 제거 대상(Garbage)를 찾아내고 제거해서 힙 메모리를 회수하는 기능을 한다. 일반적으로 C, C++ 와 같은 언어에서는 이와 같은 GC가 없기 때문에 개발자가 직접 메모리 할당과 해제를 직접 관리해야 한다. 그러나 Java는 JVM내에 GC가 내장되어 있어 개발자는 메모리 관리에 신경쓰지 않고 개발에만 집중할 수 있다는 장점이 있다. 하지만 이런 GC에는 몇가지 단점이 존재하는데, GC가 메모리를 언제 해제하는지 개발자는 정확하게 알 수 없어서 제어하기 힘들다는 점이 있다. 또한 GC가 발생하는 동안에는 다른 스레드들이 일을 멈추게 되는 Stop-Th..
· Study/Java
NullPointException 자바 애플리케이션에서 흔히 발생하는 오류로 NulPointerException(이하 NPE) 이 있다. NPE 에러가 발생하는 이유는 보통 객체 참조 값이 Null인 상태에서 메서드나 필드에 접근하려고 할 때 발생하게 되는데, 런타임에 발생하는 에러이기 때문에 조심해서 처리해야 한다. String str = null; int length = str.length(); // NullPointerException 에러 발생 !! System.out.println("문자열 길이 : " + length); NPE는 JDK 8 이전에는 Null 값을 메서드 내에서 예외 처리하거나 또는 Null값을 리턴한 다음 클라이언트 코드에서 Null 체크를 하는 식으로 처리해왔는데 이 방법들..
jonghne
'Study' 카테고리의 글 목록