[Spring] RuntimeException(UncheckExcpetion) 활용하기
·
스프링
해당 포스트에서는 CheckedException 발생 시 다른 계층에서 이에 대한 의존관계를 억지로 참조해야하며, 코드의 가독성 및 기술 변경시에 대한 파급효과를 최소화 하고, 예외처리를 한곳에서 관리할 수 있는 다양한 이점이 있는데 이에 대한 내용을 담고 있다. 기본적으로 자바에서 제공하는 예외는 CheckedExcpetion, UncheckedException이 있다.  Thorwable : 최상위 예외 그 밑에 Excpetion, Error가 존재하는데, Error의 OutOfMemoryError는 메모리 부족이나 심각한 시스템 오류와 같은 애플리케이션에서 복구 불가능한 시스템 예외이다. 개발자는 해당 예외를 처리하거나 잡을 수 없다. 그리고 Throwable을 catch할 수 없다.Throwabl..
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의 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 와 같은 다양한 하위 인터페이스와 함..
[Collection] Java의 Node, LinkedList
·
Java/Collection
Node의 특징Node란 서로의 메모리 주소를 참조하는 형태로 이루어진 자료구조이다.Node는 인덱스를 통해 추가 및 삭제 시 위치를 O(n)으로 찾지만, 찾은 이후에는 일부 Node의 참조값만 변경하면 되므로 해당 부분이 O(1)로 빠르다.앞에 추가하는 경우 : 연결리스트는 배열리스트 처럼 추가한 항목의 오른쪽에 있는데이터를 밀지 않고 참조값만 변경하면 되므로 데이터를 앞쪽에서 추가하는 경우 연결리스트가 보통 더 좋은 성능을 제공한다마지막에 데이터를 추가하는 경우 : 노드를 마지막까지 순회해야 마지막 노드를 찾을 수 있다. 따라서 마지막 노드를 찾는데 O(n)의 시간걸린다, 데이터를 추가하는 경우 일부 노드의 참조만 변경하면 된다. O(1), 따라서 O(n)의 성능을 제공한다.ArrayList와의 차이..
cheolhyeon
'Java' 태그의 글 목록