Reflection API 학습후, DI 프레임워크 만들기
·
Java
JVM 구조를 이해하고 파악한 뒤에 할 수 있는 것들 중 자바의 프레임워크인 Spring에서 사용하는 DependencyInjection의 기능중에서 필드를 통한 의존성 주입(@Autowired)이 어떻게 이뤄지는지 살펴보도록 하겠다. Reflection API의 특징Reflection API는 Class 객체를 통해 클래스의 메타데이터(필드, 메서드, 생성자 등)에 접근할 수 있다.Class 객체는 JVM 내에서 해당 클래스의 메모리 정보를 나타내며, 클래스 로딩 후에 생성 된다.Reflection API를 사용하여 Class 타입의 객체를 통해 메모리에 로드된 클래스의 정보를 불러와서 해당 객체를 조작할 수 있다.Reflection을 이용하면 런타임 시에 클래스의 구조를 탐색하고, 동적으로 객체를 생..
JVM이란? Java Virtual Machine 이해하기
·
Java
학습 목표JVM,JDK,JRE - 뭐가 다른지 이해하기JVM 구조 파악하기클래스로더 구조 파악하기메모리 구조 파악하기실행엔진 구조 파악하기자바를 배움에 앞서서 먼저 코딩으로 쳐보면서 파악하시는 분도 있고, 자바라는 언어의 특징이 다른 언어들과 뭐가 다른지, 자바 언어 프로그램은 어떻게 돌아가는지 궁금해 하는 사람들이 있을거 같아 해당 글을 정리합니다. 먼저 들어가기에 앞서서 JVM과 JRE, JDK 가 무엇인지 간략하게 특징을 파악해보겠습니다.JVMJava Virtual Machine자바 가상 머신으로 자바 바이트코드인 .class 파일을(어떻게 실행 시킬지에 대한 스펙) OS에 특화된 코드로 변환한다. (인터프리터와 JIT 컴파일러)를 통해 실행한다.구현체는 다양하다특정 플랫폼에 종속적이다.왜냐면 네이..
[Collection] Comparable, Comparator 알아보기
·
Java/Collection
순수 자바 프로젝트로 카드게임을 프로그래밍 하던 중, 카드 출력 시 출력 순서에 대한 정렬 방식을 구현해야하는 기능구현 목록이 있었는데, 그 중 학습한 Comparable과 Comparator에 대해서 정리한 내용이다. 먼저 Comparator와, Comparable이 어떤건지 간단하게 먼저 알아보겠다. ComparatorComparator(비교자)는 정렬을 할 때 비교할 기준을 직접 제공하는 인터페이스이다. Comparator는 @FunctionalInterface이다. 그러므로 람다식이나 메서드 레퍼런스 방식으로 사용이 가능하며, String,Integer와 같은 기본 타입 같은 경우 그냥 호출해서 사용할 수 있다.@FunctionalInterface public interface Comparator..
[Collection] Iterator와 Iterable
·
Java/Collection
자바의 여러가지 컬렉션 프레임워크에 대해서 공부하면서 궁금한 점이 생겨서 배운점들을 토대로 글을 정리해보려고 한다. 자바에서 지원하는 여러 자료구조들이 존재하는데, 각각의 자료구조마다 데이터를 접근하여 순회하는 방법이 달랐다. 크게 List, Set, Map에 대해서 살펴보자.Listpublic class Main { public static void main(String[] args) { List list = new ArrayList(); //list.add() 생략 for (Integer integer : list) { System.out.println(integer); } for (int i = 0; i List..
[Collection] Java의 Map
·
Java/Collection
Map의 특징Map은 키-값 쌍을 저장하는 자료구조이다.Key는 Map내에서 유일해야 한다.Key는 중복될 수 없지만 값은 중복될 수 있다.Key를 통해 원하는 값을 빠르게 검색할 수 있다.Map은 순서를 유지하지 않는다.자바의 Map은 HashMap, TreeMap, LinkedHashMap등 다양한 Map 구현체를 제공한다. 이들은 Map 인터페이스의 메서드를 구현하며, 각기 다른 특성과 성능 특징을 가지고 있다.  Map에서 같은 키를 가지고 데이터를 저장할 경우package collection.map; import java.util.HashMap; import java.util.Map; public class MapMain3 { public static void main(String..
[Collection] Java의 Set과 hashCode()
·
Java/Collection
SetSet란 유일한 요소들의 컬렉션이다.중복된 요소를 허용하지 않으며, 요소를 추가할 때 이미 존재하는 요소는 무시된다.그리고 순서를 보장하지 않기 때문에 출력시 입력 순서와 다를 수 있다.셋은 요소의 유무를 빠르게 확인할 수 있도록 최적화 되어있다. 이는 데이터의 중복을 방지하고 빠른 조회를 가능케한다.add()로 데이터를 추가할 때 Set에 중복되어있는 데이터가 있는지 항상 확인해야한다. 따라서 처음에 데이터를 추가할 때는 O(1)이지만 그 이후로는 중복된 데이터가 있는지 찾기 때문에 O(n)이다.  중복 데이터 검색 O(n) + 데이터 입력 O(1)= O(n).contains() 로 데이터를 찾을 때는 배열에 있는 모든 데이터를 찾고 비교해야 하므로 평균 O(n)이 걸린다. 즉 데이터를 추가할 때..
[Collection] Java의 TreeSet의 특징 및 구조
·
Java/Collection
TreeSetTreeSet은 이진 탐색 트리를 개선한 레드 - 블랙 트리를 내부에서 사용한다. TreeSet의 특징순서 : 요소들은 정렬된 순서로 지정된다. 순서의 기준은 Comparator로 변경할 수 있다.시간 복잡도: 주요 연산들은 O(log n) 의 시간 복잡도를 가진다. 따라서 HashSet 보다는 느리다.용도: 데이터들을 정렬된 순서로 유지하면서 집합의 특성을 유지해야 할 때 사용한다.예를 들어, 범위 검색이나 정렬된 데이터가 필요한 경우에 유용하다. 참고로 입력된 순서가 아니라 데이터 값의 크고 낮음으로 정렬이 된다. 예를 들어 3, 1, 2를 순서대로 입력해도 1,2,3, 순서로 출력된다.트리의 구조TreeSet은 내부적으로 트리 구조(정확히는 이진 탐색 트리의 일종인 레드-블랙 트리)를 ..
[Collection] 자바의List 그리고 ArrayList,LinkedList 실제 성능 테스트
·
Java/Collection
List데이터의 순서를 보장하고, 중복을 허용하는 자료구조를 List라고 한다. List 는 객체들의 순서가 있는 컬렉션을 나타내며, 같은 객체의 중복 저장을 허용한다. 이 리스트는 배열과 비슷하지만, 크기가 동적으로 변화하는 컬렉션을 다룰 때 유연하게 사용할 수 있다. 자바의 컬렉션 프레임워크가 제공하는 가장 대표적인 자료 구조가 바로 리스트이다. 리스트와 관련된 컬렉션 프레임워크는 다음 구조를 가진다. Collection 인터페이스는 java.util 패키지의 컬렉션 프레임워크의 핵심 인터페이스 중 하나이다. 이 인터페이스는 자바에서 다양한 컬렉션, 즉 데이터 그룹을 다루기 위한 메서드를 정의한다. Collection 인터페이스는 List , Set , Queue 와 같은 다양한 하위 인터페이스와 함..
cheolhyeon
'Java' 카테고리의 글 목록