예외 처리
예외 처리 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것
예외 클래스의 계층 구조 : 예외는 Throwable을 조상 클래스로 Error와 Exception으로 나뉘어진다.
finally 블록 : 예외 발생 여부와 상관없이 항상 실행되는 블록
예외 되던지기 : 처리한 예외를 호출한 메서드로 전달하는 것
연결된 예외 : 원인예외를 포함한 새로운 예외를 발생시키는 것
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
필수 처리 예외
필수 처리 예외(Exception과 자손들) : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
IOException : 입출력 작업 중 발생하는 예외
SQLException : 데이터베이스 접근 및 쿼리 실행 중 발생하는 예외
FileNotFoundException : 지정된 파일을 찾을 수 없을 때 발생하는 예외
ClassNotFoundException : JVM이 지정된 클래스를 찾을 수 없을 때 발생하는 예외
ParseException : 문자열을 특정 형식으로 파싱할 때 형식이 맞지 않으면 발생하는 예외
TimeoutException : 특정 작업이 지정된 시간 내에 완료되지 않을 때 발생하는 예외
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
선택 처리 예외
선택 처리 예외(RuntimeException과 자손들) : 프로그래머의 실수로 발생하는 예외
NullPointerException : null참조에서 메서드나 필드에 접근하려 할 때 발생하는 예외
IllegalArgumentException : 메서드에 잘못된 인수가 전달되었을 때 발생하는 예외
NumberFormatException : 문자열을 숫자로 변환할 때 형식이 올바르지 않으면 발생하는 예외
IndexOutOfBoundsException : 인덱스가 유효한 범위를 벗어났을 때 발생하는 예외
ArithmeticException : 수학적 연산에서 오류가 발생할 때 일어나는 예외
UnsupportedOprationException : 지원되지 않는 연산을 시도할 때 발생하는 예외
ClassCastException : 객체를 잘못된 타입으로 캐스팅하려 할 때 발생하는 예외
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
java.lang 패키지
String 클래스 : 인스턴스의 내용 변경 불가(불변)
StringBuffer 클래스 : 인스턴스의 내용이 변경 가능한 동기화된 클래스(가변)
StringBuilder 클래스 : 인스턴스의 내용이 변경 가능한 동기화되지 않은 클래스(가변)
Wrapper 클래스 : 기본형 타입을 클래스로 정의한 것
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
컬렉션 프레임워크
컬렉션 프레임워크 : 데이터를 효율적으로 저장하고 처리할 수 있는 표준화된 클래스 제공
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
List
List : 순서가 있고 중복을 허용하는 데이터의 집합
Vector : 동적 배열을 구현한 동기화된 List를 구현한 클래스
Vector의 장점 : 멀티 쓰레드 환경에서 안전하다.
Vector의 단점 : 중간에 데이터를 삽입하거나 삭제할 때 성능이 저하된다.
ArrayList : 동적 배열을 구현한 동기화되지 않은 List를 구현한 클래스
ArrayList의 장점 : 인덱스 접근이 빠르다.
ArrayList의 단점 : 중간에 데이터를 삽입하거나 삭제할 때 성능이 저하된다.
LinkedList : 불연속적으로 존재하는 데이터를 연결한 List를 구현한 클래스
LinkedList의 장점 : 중간에 데이터의 삽입 삭제가 비교적 빠르다.
LinkedList의 단점 : 데이터 접근에 시간이 걸린다.
Stack : LIFO, 마지막에 넣은 데이터가 가장 먼저 나오는 구조
Queue : FIFO, 먼저 넣은 데이터가 가장 먼저 나오는 구조
Deque : Stack과 Queue의 결합으로 양쪽 끝에 삽입 삭제 가능
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Set
Set : 순서가 없고 중복을 허용하지 않는 데이터의 집합
HashSet : 해시테이블을 사용하여 요소를 저장해 빠른 검색,삽입,삭제가 가능한 Set을 구현한 클래스
TreeSet : 데이터를 정렬된 순서대로 저장하는 이진 검색 트리 기반의 집합
HashCode : 객체를 고유하게 식별하기 위한 정수값
Hashing : 데이터를 해시 함수를 사용하여 해시 값으로 변환하는 과정
BinarySearchTree : 범위 검색과 정렬에 유리한 트리 구조
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Map
Map : 순서가 없고 키와 값의 쌍으로 이루어진 데이터의 집합
HashMap : 해시테이블을 사용하여 키-값 쌍을 저장하는 Map을 구현한 클래스
TreeMap : 키를 정렬된 순서대로 저장하는 이진 검색 트리 기반의 집합
HashTable : 동기화된 해시 기반 맵
Properties : 해시테이블을 사용하여 파일 검색에 유리한 클래스
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Collections
Iterator : 컬렉션에 저장된 데이터를 읽어오는 방법을 표준화 한 것
ListIterator : List에서만 사용가능한 양방향 탐색 Iterator
Enumeration : 컬렉션을 순차적으로 탐색하기 위한 인터페이스
Comparator : 기본 정렬기준 외에 다른 정렬기준을 구현할 수 있는 인터페이스
Comparable : 기본 정렬기준을 구현하는 인터페이스
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
지네릭스
지네릭스 : 컴파일 시 타입을 체크해주는 기능
지네릭스의 제한 : 지네릭 배열 선언 불가, static멤버에 타입 변수 사용불가능
와일드 카드 : 여러 타입을 대입 가능하게 해주는 기능
지네릭 타입의 형변환 : 타입 안정성을 보장하기 위한 명시적 형변환
지네릭 타입의 제거 : 컴파일 타임에만 타입 정보를 사용하고, 런타임에 타입 정보를 제거하여 타입 안정성을 보장
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
열거형
열거형 : 상수들을 하나의 타입으로 묶어 관리하는 클래스
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
애너테이션
애너테이션 : 컴파일러에게 추가적인 정보를 제공하는 기능
애너테이션요소의 규칙 : 타입 매개변수 사용 불가, 예외 선언 불가, 괄호 안에 매개변수 선언 불가, 타입 제한(기본형, String, enum, 애너테이션, Class)
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
표준 애너테이션
표준 애너테이션 : 자바가 기본으로 제공하는 애너테이션
@Override : 오버라이딩을 올바르게 했는지 체크해주는 기능
@Deprecated : 앞으로 사용하지 않을 것을 권장
@FunctionalInterface : 함수형 인터페이스를 올바르게 작성했는지 체크해주는 기능
@SuppressWarnings : 컴파일러의 경고메시지가 나타나지 않게 해주는 기능
@SafeVarargs : unchecked경고를 억제
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
매타 애너테이션 : 애너테이션을 위한 애너테이션
@Target : 애너테이션을 적용할 수 있는 대상을 지정
@Retention : 애너테이션이 유지되는 기간 지정
@Documented : javadoc으로 작성한 문서에 포함시키는 기능
@Inherited : 애너테이션을 자손 클래스에 상속하고자 할 때 사용
@Repetable : 반복해서 붙일 수 있는 애너테이션을 정의할 때 사용
@Native : native메서드에 의해 참조되는 상수에 붙이는 애너테이션
Annotation : 모든 애너테이션의 조상, 상속 불가
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
쓰레드
프로세스 : 실행 중인 프로그램
쓰레드 : 프로세스 내에서 실제 작업을 수행하는 작은 실행 단위
동시성(병행) : 여러 작업을 동시에 실행하는 것처럼 보이게 하는 방식
병렬 : 여러 작업이 동시에 실행되는 방식
싱글 쓰레드 : 한 번에 하나의 작업을 수행
멀티 쓰레드 : 동시에 여러 작업을 수행
동기화 : 여러 쓰레드가 공유 자원에 동시에 접근하는 것을 방지
교착 상태 : 두 개 이상의 쓰레드가 서로 자원을 기다리며 무한 대기 상태에 빠지는 상황
데몬 쓰레드 : 일반 쓰레드의 작업을 돕는 보조 쓰레드, 일반 쓰레드 종료시 자동 종료
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
쓰레드의 실행제어
sleep() : 현제 쓰레드를 지정된 시간동안 멈추게 한다.
interrupt() : 대기나 실행 상태인 쓰레드를 실행대기 상태로 만든다.
suspend() : 쓰레드를 일시중지 시킨다.
resume() : 쓰레드의 실행을 재개 한다.
stop() : 쓰레드를 완전정지 시킨다.
yield() : 다음 쓰레드에게 실행을 양보하고, 자신은 실행대기 상태가 된다.
join() : 지정된 시간동안 특정 쓰레드가 작업하는 것을 기다린다.
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
쓰레드의 동기화
synchronized : 객체에 락을 걸어 한번에 한 쓰레드만 접근 가능하게 한다.
wait() : 객체의 락을 풀고 쓰레드 해당 객체의 wating pool에 대기시킨다.
notify() : waiting pool에서 대기중인 쓰레드 중 하나를 깨운다.
notifyAll() : waiting pool에서 대기중인 모든 쓰레드를 깨운다.
기아 현상 : 쓰레드가 통지를 받지 못하고 계속 기다리게 되는 상태
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Condition
ReentrantLock : 재진입이 가능한 Lock
ReentrantReadWriteLock : 읽기 작업은 여러 쓰레드가 동시에 수행 가능하고 쓰기 작업은 하나의 쓰레드만 수행 보장
StampedLock : 낙관적인 Lock, 읽기 작업은 락을 사용하려하지 않고, 쓰기 작업과 충돌이 발생시 락을 획득
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
volatile
volatile : 변수 값을 CPU 캐시가 아닌 메인 메모리에 직접 읽고 쓰게해 가시성을 보장
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
fork & join 프레임워크
fork & join 프레임워크 : 작업을 작은 단위로 나누어 병렬로 처리한 결과를 합쳐 최종 결과를 도출하는 방식
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
람다식
람다식 : 함수를 간단한 식으로 표현하는 방법
함수와 메서드의 차이 : 함수는 클래스에 독립적, 메서드는 클래스에 종속적
함수형 인터페이스 : 단 하나의 추상 메서드만 선언된 인터페이스
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
함수형 인터페이스
Supplier<T> [T get()] : 값을 생성하는 함수형 인터페이스, 입력은 없고 반환값만 있다.
Consumer<T> [void accept(T t)] : 입력값을 처리하는 함수형 인터페이스, 입력값은 있지만 반환값은 없다.
Function<T,R> [R apply(T t)] : 입력값을 받아 처리 후 결과를 반환하는 함수형 인터페이스
Predicate<T> [boolean test(T t)] : 입력값을 받아 boolean값을 반환하는 함수형 인터페이스
BiConsumer<T,U> [void accept(T t, U u)] :두 개의 입력값을 처리하는 함수형 인터페이스, 반환값은 없다.
BiFunction<T,U,R> [R apply(T t, U u)] : 두 개의 입력값을 받아 결과를 반환하는 함수형 인터페이스
BiPredicate<T,U> [boolean test(T t, U u)] : 두 개의 입력값을 받아 boolean값을 반환하는 함수형 인터페이스
UnaryOperator<T> [R apply(T t)] : 입력값을 처리 후 결과를 반환하는 함수형 인터페이스, 입력과 출력의 타입이 동일
BinaryOperator<T> [R apply(T t, T t) : 두개의 입력값을 처리 후 결과를 반환하는 함수형 인터페이스, 입출력 타입동일
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Function
Function의 합성 : 여러 Function을 연결하여 연속적인 작업을 처리
andThen() : 현재 Function의 결과를 다른 Function에 전달
compose() : 다른 Function의 결과를 현재 Function에 전달
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Predicate
Predicate의 결합 : 조건문을 연결하여 복잡한 조건을 처리
and() : 두 개의 Predicate가 모두 참일 때만 true를 반환
or() : 두 개의 Predicate중 하나라도 참이면 true를 반환
negate() : 조건 반전 메서드
isEqual() : 두 객체의 동등성을 비교
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
메서드 참조
메서드 참조(ClassName::methodName) : 람다 표현식을 더 간결하게 작성하기 위한 방법
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
스트림
스트림 : 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
스트림의 중간연산
중간 연산 : 스트림의 데이터를 변형하거나 필터링하는 연산, 지연된 연산, 항상 새로운 스트림을 반환
Stream<T> distince() : 중복제거
Stream<T> filter(Predicate<T> predicate) : 스트림의 요소를 조건으로 필터링하여 참인 요소만 반환
Stream<T> limit(long maxSize) : 스트림의 일부를 잘라낸다.
Stream<T> skip(long n) : 스트림의 일부를 건너뛴다.
Stream<T> peek(Consumer<T> action) : 스트림의 요소에 보조 작업수행
Stream<T> sorted(ComparatorT> comparator) : 스트림의 요소 정렬
Steram<T> map(Function<T,R> mapper) : 스트림의 각 요소를 다른 값으로 변환
Stream<T> flatMap(Function<T, Stream<R>> mapper) : 스트림의 각 요소를 새로운 스트림으로 변환
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
스트림의 최종연산
최종 연산 : 스트림을 소비하고 결과를 반환하는 연산
forEach(Consumer<? super T> action) : 각 요소에 지정된 작업 수행, 병렬 스트림의 순서가 보장 되지 않음
forEachOrdered(Comsumer<? super T> action) : 각 요소에 지정된 작업 수행, 병렬 스트림의 순서가 보장됨
min(Comparator<? super T> comparator) : 스트림의 최소값을 찾는 연산
max(Comparator<? super T> comparator) : 스트림의 최대값을 찾는 연산
count() : 스트림의 요소 개수를 세는 연산
anyMatch(Predicate<? super T> predicate) : 스트림의 어떤 요소라도 조건을 만족하는지 확인하여 boolean값을 반환
allMatch(Predicate<? super T> predicate) : 스트림의 모든 요소가 조건을 만족하는지 확인하여 boolean값을 반환
noneMatch(Predicate<? super T> predicate) : 스트림의 어떤 요소도 만족하지 않는지 확인하여 boolean값을 반환
findFirst() : 스트림의 첫 번째 요소를 반환, 순차 스트림
findAny() : 스트림의 임의의 요소를 반환, 병렬 스트림
reduce(T identity, BinaryOperator<T> accumulator) : 스트림의 요소를 누적하여 하나의 값으로 결합
reduce(BinaryOperator<T> accumulator) : 초기값을 지정하지 않고 스트림의 요소들을 누적
collect(Collector<T,A,R> collector) : 스트림의 요소를 수집하여 다른 형태로 반환한다(List,Set,Map 등)
toArray() : 스트림의 모든 요소를 배열로 반환
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
Optional
Optional<T> : T타입의 객체를 감싸는 래퍼 클래스
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
스트림의 그룹화
groupingBy() : 조건에 따라 요소를 그룹화하여 Map형태로 반환 (n분할)
partitioningBy() : 스트림의 요소를 두 개의 그룹으로 나누는 메서드
'요약' 카테고리의 다른 글
12. 자바 용어 요약 ver.2 (1) - 패스트캠퍼스 백엔드 부트캠프 3기 (2) | 2025.04.09 |
---|---|
11. 데이터 베이스 요약 - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.04.01 |
10. 데이터 모델링 요약(2) - 패스트캠퍼스 백엔드 부트캠프 3기 (1) | 2025.04.01 |
9. SQL튜닝 요약(3) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.04.01 |
8. SQL튜닝 요약(2) - 패스트캠퍼스 백엔드 부트캠프 3기 (0) | 2025.04.01 |