열심히 살아나갈 사람
article thumbnail
Java Compile 순서
Java 2023. 12. 10. 20:31

소스코드 작성 먼저, 사용자는 자바 언어로 프로그램을 작성하며, 이를 소스코드라고 부릅니다. 이 소스코드는 '.java'라는 확장자를 가진 파일에 저장됩니다. 컴파일 작성된 소스코드는 자바 컴파일러(javac)에 의해 바이트코드로 변환됩니다. 이 때, 컴파일러는 소스코드에 문법적인 에러가 없는지 검사하며, 에러가 없다면 '.class' 확장자를 가진 바이트코드 파일을 생성합니다. 로드 바이트코드는 클래스 로더에 의해 JVM(Java Virtual Machine)의 런타임 데이터 영역으로 로드됩니다. 클래스 로더는 파일 시스템에서 이러한 .class 파일들을 찾아서 바이트코드로 된 클래스나 인터페이스의 정의를 JVM에게 제공합니다. 링크 로드된 바이트코드는 링크 과정을 거칩니다. 링크 과정에서는 검증, 준..

Spring이란?
Java/Spring 2023. 12. 9. 23:09

Spring이란? Spring 프레임워크는 Java 언어로 개발된 엔터프라이즈 애플리케이션 개발을 위한 오픈 소스 프레임워크입니다. Spring은 IoC(Inversion of Control), DI(Dependency Injection), AOP(Aspect Oriented Programming), POJO(Plain Old Java Object)와 같은 개념을 통해 개발자가 더 효율적이고 편리하게 애플리케이션을 개발할 수 있도록 지원합니다. Framework란? 프레임워크는 특정 문제를 해결하기 위한 기본적인 구조와 패턴을 제공하는 도구입니다. 이는 반복적인 코드 작성을 줄이고, 표준화된 방식으로 소프트웨어를 개발할 수 있도록 돕습니다. 프레임워크는 '제어의 역전(ioc, Inversion of Co..

가비지 컬렉션(Garbage Collection)
Java 2023. 12. 7. 13:36

가비지 컬렉션(Garbage Collection)이란? 자바의 가비지 컬렉션(Garbage Collection)은 자바의 메모리 관리 방법 중 하나로, 더 이상 사용되지 않는 메모리를 자동으로 회수하는 역할을 합니다. 이런 메모리 관리 방법은 프로그래머가 직접 메모리를 할당하거나 해제하는 일을 하지 않아도 되므로 메모리 누수나 해제되지 않은 메모리로 인한 문제를 방지할 수 있습니다. 가비지 컬렉션의 과정 자바의 가비지 컬렉션은 크게 4가지 단계로 이루어집니다. Marking: 가비지 컬렉터는 어떤 객체가 사용 가능한지(즉, 참조되고 있는지) 아닌지를 판별합니다. 더 이상 참조되지 않는 객체는 "가비지"로 표시됩니다. Normal Deletion: 표시된 가비지들은 메모리에서 제거됩니다. 이 과정에서 'S..

Java에서의 그래프(Graph) 활용
Java/Data Structure(Java) 2023. 12. 7. 02:21

Java에서 그래프를 활용하는 방법은 그래프의 특성과 필요한 연산에 따라 다양합니다. 그래프는 노드(Vertex)와 간선(Edge)로 이루어진 자료구조로, 노드 간의 관계를 나타낼 때 사용됩니다. 네트워크, 소셜 네트워크, 웹 페이지 등 다양한 곳에서 활용됩니다. 자바에서 그래프를 표현하는 방법은 주로 두 가지입니다: 인접 행렬: 인접 행렬은 2차원 배열을 사용하여 그래프를 표현하는 방법입니다. 각각의 셀이 노드 간의 관계를 나타냅니다. int[][] graph = new int[numOfNodes][numOfNodes]; 인접 리스트: 인접 리스트는 각 노드에 연결된 노드의 리스트를 저장하는 방법입니다. 각 노드는 자신과 연결된 노드의 정보를 리스트 형태로 가지고 있습니다. List[] graph = ..

Java에서의 해시(Hash) 활용
Java/Data Structure(Java) 2023. 12. 7. 01:56

Java에서 해시(Hash)는 주로 데이터의 저장 및 검색 속도를 향상시키는 용도로 활용됩니다. 해시 함수를 통해 데이터를 특정 위치에 빠르게 저장하고 검색할 수 있습니다. 해시를 활용하는 대표적인 클래스로는 HashMap, HashSet 등이 있습니다. HashMap: HashMap은 키와 값의 쌍을 저장하는 Map 인터페이스의 구현체입니다. 키는 해시 함수를 통해 특정 위치에 저장되며, 이를 통해 키에 해당하는 값을 빠르게 찾을 수 있습니다. import java.util.HashMap; public class Main { public static void main(String[] args) { HashMap hashMap = new HashMap(); hashMap.put("apple", 3); h..

article thumbnail
Java에서의 트리(Tree) 활용
Java/Data Structure(Java) 2023. 12. 6. 21:41

Java에서는 트리 구조를 활용하는 다양한 방법이 있습니다. 트리는 계층적인 데이터를 표현하는 데 적합한 자료구조로, 파일 시스템, DOM(Document Object Model), 힙(heap) 등 다양한 곳에서 활용됩니다. 자바에서는 트리를 직접 구현할 수도 있지만, 표준 라이브러리에서 제공하는 TreeSet, TreeMap 등의 클래스를 통해 트리를 사용할 수도 있습니다. 이들 클래스는 내부적으로 레드-블랙 트리(Red-Black Tree), 일종의 이진 탐색 트리를 사용하여 데이터를 저장합니다. TreeSet: TreeSet은 정렬된 위치에 원소를 저장하고, 중복된 값을 허용하지 않는 Set 인터페이스의 구현체입니다. 원소의 추가, 삭제, 검색 등의 연산을 로그 시간에 할 수 있습니다. impor..

Java에서의 큐(Queue) 활용
Java/Data Structure(Java) 2023. 12. 6. 20:53

Java에서 큐(Queue)는 주로 java.util 패키지에 있는 Queue 인터페이스를 통해 사용합니다. 큐는 'First In, First Out'(FIFO)의 특성을 가진 자료구조로, 가장 먼저 들어온 요소가 가장 먼저 나가는 구조를 가지고 있습니다. Queue 인터페이스의 주요 메소드들: boolean add(E e): 큐의 끝에 주어진 요소를 추가합니다. 큐의 용량이 꽉 찬 경우에는 IllegalStateException을 발생시킵니다. boolean offer(E e): 큐의 끝에 주어진 요소를 추가합니다. 큐의 용량이 꽉 찬 경우에는 false를 반환합니다. E remove(): 큐의 맨 앞에 있는 요소를 제거하고, 그 요소를 반환합니다. 큐가 비어있는 경우 NoSuchElementExce..

Java에서의 스택(Stack) 활용
Java/Data Structure(Java) 2023. 12. 6. 18:23

자바에서 스택(Stack)은 java.util 패키지에 있는 Stack 클래스를 통해 사용할 수 있습니다. 스택은 'Last In, First Out'(LIFO)의 특성을 가진 자료구조로, 가장 마지막에 들어온 요소가 가장 먼저 나가는 구조를 가지고 있습니다. Stack 클래스의 주요 메소드들: E push(E item): 스택의 맨 위에 요소를 추가하고, 그 요소를 반환합니다. E pop(): 스택의 맨 위에 있는 요소를 제거하고, 그 요소를 반환합니다. 스택이 비어있는 경우 EmptyStackException을 발생시킵니다. E peek(): 스택의 맨 위에 있는 요소를 반환합니다. 스택이 비어있는 경우 EmptyStackException을 발생시킵니다. boolean empty(): 스택이 비어있는..