Java 19

[Java의 정석] 13-2. 스레드: 우선순위, 그룹, 데몬 스레드

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 5. 우선순위 Thread 클래스는 우선순위라는 속성을 가지고 있습니다. 이 우선순위 값에 따라 스레드의 실행시간이 달라집니다. 시각적인 부분이나 사용자에게 빠르게 반응해야 하는 작업이 우선순위가 높습니다. 우선순위 지정하기 1~10이며 숫자가 높을수록 우선순위가 높습니다. 우선순위는 부모 스레드로부터 상속받습니다. 6. 그룹 서로 관련된 스레드를 그룹으로 다루기 위한 것입니다. 보안상의 이유로 도입된 개념입니다. 모든 스레드는 반드시 스레드 그룹에 포함되어 있어야 합니다. 스레드 그룹에 다른 스레드 그룹을 포함시킬 수 있습니다. main main 스레드 사용자 스레드 system Finalizer 스레드 : GC 수행 7. 데몬 스레드 다른..

Java 2023.11.27

[Java의 정석] 13-1. 스레드: 프로세스와 스레드

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 1. 프로세스와 스레드 프로세스 실행중인 프로그램을 의미합니다. 구성 자원 OS로부터 실행에 필요한 자원을 할당받아 프로세스가 됩니다. 스레드 모든 프로세스에는 하나 이상의 스레드가 존재합니다. 작업을 수행하는데 필요한 개별적인 호출스택이 필요합니다. 스레드 자원을 이용하여 실제 작업을 수행하는 실행 단위입니다. 멀티태스킹 여러 프로세스가 동시에 실행될 수 있습니다. 프로세스 생성비용과 컨텍스트 스위칭 비용이 스레드보다 많이 들어 많은 수의 사용자 요청을 서비스하기 어렵습니다. 멀티스레딩 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 것입니다. 짧은 시간동안 여러 작업을 번갈아 수행하면서 동시에 수행하는 것처럼 보이게 합니다. C..

Java 2023.11.27

[Java] Stream

1. Stream이란? Stream은 집계연산을 지원하는 일련의 데이터 소스 객체입니다. 데이터를 저장하는 용도가 아닌 계산하는 용도로 사용됩니다. 데이터의 변환과 계산을 위한 중간 연산과 최종 연산을 제공합니다. 컬렉션과 다르게 내부적으로 연산이 수행됩니다. 병렬화하여 다중 코어 아키텍처를 활용하는데 유용합니다. 2. 선언형 프로그래밍과 Stream Stream 객체를 사용하여 데이터 처리를 섬세하게 표현할 수 있습니다. 데이터 처리 패턴이 선언적인 연산인 SQL과 유사합니다. 함수형 프로그래밍과 선언형 연산을 지원하여 구현을 감추고 기능을 명시적으로 표현할 수 있습니다. 3. 파이프라인 및 연산 체이닝 Stream은 더 큰 파이프라인 체이닝을 형성하기 위해 자기 자신을 리턴합니다. 연산의 효율성을 위..

Java 2023.10.22

[Java][Tutorial] 3-3. Collections: Aggregate Operations

1. Pipeline 일련의 데이터 처리 연산들의 연속입니다. source collection, array, generator function, I/O channel 2. stream 데이터의 일련의 연속된 요소들을 가리킵니다. 데이터를 직접 저장하지 않고 파이프라인을 통해 소스로부터 요소들을 나릅니다. double average = roster .stream() .filter(p -> p.getGender() == Person.Sex.MALE) .mapToInt(Person::getAge) .average() .getAsDouble(); mapToInt() : IntStream 타입의 새로운 Stream을 리턴하는 연산입니다. average() : IntStream의 요소들에 대한 평균값을 계산하는 연..

Java 2023.10.20

[Java][Tutorial] 3-2. Collections: Queue, Deque, Map

The Queue Interface Queue는 처리를 위해 요소를 보관하는 컬렉션입니다. 기본적인 Collection 연산 외에도 추가적인 삽입, 삭제, 검사 연산을 제공합니다. Key Features 기본연산 add(e), offer(e) : 요소를 추가합니다. remove(), poll() : 큐의 앞쪽 요소를 제거하고 반환합니다. element(), peek(): 큐의 앞쪽 요소를 확인하되 제거하지 않습니다. 특징 큐는 대개 FIFO(First-In-First-Out) 방식으로 요소를 정렬하지만, 항상 그런 것은 아닙니다. 우선순위 큐는 요소의 값을 기준으로 요소를 정렬합니다. add 메서드는 큐의 용량 제한을 위반할 경우 IllegalStateException을 던집니다. offer 메서드는 용..

Java 2023.10.15

[Java][Tutorial] 3-1. Collections: Collection, Set, List

1. Introduction 여러 오브젝트를 하나의 단위로 그룹화하는 컨테이너 What Is a Collections Framework? Collection을 표현하고 조작하기 위한 통합된 아키텍쳐입니다. Interface 컬렉션을 대표하는 추상 데이터 타입입니다. 다양한 구현체들을 같은 방식으로 처리할 공통의 규약을 정의할 수 있습니다. Implementations 컬렉션 인터페이스의 실제 구현입니다. 재사용 가능한 데이터 구조입니다. Algorithms 컬렉션 인터페이스를 구현한 객체의 메서드입니다. (검색, 정렬) 모든 컬렉션 구현체에서 가지고 있습니다. (다형성) Benefits of the Java Collections Framework 프로그래밍 노력 감소 유용한 데이터 구조와 알고리즘을 제공..

Java 2023.10.15

[Java][Tutorial] 2-1. Essential Java Classes: Exceptions

1. Exceptions What Is an Exception? 프로그램이 정상 흐름에서 벗어나 중단된 상황을 뜻합니다. Java는 예외적인 이벤트나 에러를 핸들링하기 위해 Exception 클래스를 사용합니다. Exception 예외 상황에 대한 정보를 가집니다. Exception 인스턴스를 생성해서 JVM에게 전달합니다. Exception Handling 메서드 내에서 에러가 발생 시, JVM으로부터 처리됩니다. call stack을 하나씩 내려가면서 처리될 catch 블록을 탐색합니다. call stack을 하나씩 내려가면서, 던져진 예외타입에 매칭되는 catch 블록을 순차적으로 탐색합니다. 별도로 작성된 서브타입에 대한 예외처리 핸들러를 먼저 작성하여 처리되도록 해야 합니다. catch 블록을..

Java 2023.10.15

[Java][Tutorial] 1-4. Learning the Java Language: Annotation

The Java Tutorials have been written for JDK 8 4. Annotation 프로그램에 메타데이터 정보를 제공하는 주석입니다. 코드에 직접적인 영향을 주지 않습니다. ElementType public enum ElementType { TYPE, /** Class, interface, enum, or record declaration */ FIELD, /** Field declaration */ METHOD, /** Method declaration */ PARAMETER, /** Formal parameter declaration */ CONSTRUCTOR, /** Constructor declaration */ LOCAL_VARIABLE, /** Local variabl..

Java 2023.10.15

[Java][Tutorial] 1-1. Learning the Java Language: Object-Oriented Programming Concepts

The Java Tutorials have been written for JDK 8 1. Object-Oriented Programming Concepts What Is an Object? 모델이 가진 상태와 행동의 번들입니다. 현실세계의 물체를 소프트웨어 세계의 물체로 모델링해서 사용합니다. 현실세계의 물체도 상태와 행동을 가집니다. state 객체가 가지고 있는 내부 상태값을 의미합니다. method 객체의 행동을 메서드라 부릅니다. 내부 상태의 조작을 기반으로 동작합니다. 오브젝트 간 커뮤니케이션 매커니즘 다른 오브젝트로부터 노출시키므로써 인터렉션이 가능합니다. 캡슐화 바깥에서 직접적으로 내부 상태를 접근하지 못하게 하는 기능 묵시적 형변환 결과를 받을 때 파라미터로 전달할 때 variable ar..

Java 2023.10.15