Java 92

[Java의 정석] 15-3. 입출력: 보조 스트림

"Java의 정석" 책을 정리한 포스팅 입니다. 4. 보조 스트림// 기반스트림 생성FileInputStream fis = new FileInputStream("text.txt"); // 보조스트림 생성BufferedInputStream bis = new BufferedInputStream(fis); // 보조스트림을 이용해서 데이터를 읽기bis.read();스트림의 기능 보완스트림을 먼저 생성한 다음, 이를 이용해서 보조 스트림을 생성합니다.기능 향상새로운 기능 추가 실제 데이터 통신 X데이터를 입출력할 수 있는 기능은 없습니다. 바이트 기반FilterInputStream & FilterOutputStream모든 바이트 기반 보조스트림의 부모 클래스 입니다. (데코레이터 패턴) BufferedInput..

Java 2023.11.29

[Java의 정석] 15-2. 입출력: 문자 기반 스트림

남궁성님의 "Java의 정석" 책을 정리한 포스팅 입니다. 3. 문자 기반 스트림문자를 처리하는 데 바이트 기반 스트림으로는 어려움이 있습니다.한 문자를 의미하는 char 형의 크기가 2byte 입니다.바이트 기반 스트림의 단위는 1byte 입니다.이 점을 보완하기 위해 문자 기반의 스트림이 제공됩니다. encoding읽기: utf-8로 인코딩하여 읽기쓰기: utf-8로 인코딩하여 작성 Reader문자 기반의 InputStream 입니다. read()스트림 소스에서 문자를 읽습니다.byte 배열대신 char 배열을 사용합니다. Writerwrite()문자를 스트림 소스에 씁니다.

Java 2023.11.29

[Java의 정석] 15-1. 입출력: 바이트 기반 스트림

"Java의 정석" 책을 정리한 포스팅 입니다. 1. 자바에서의 입출력입출력컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 말합니다. 스트림자바에서 입출력을 수행할 때, 두 대상을 연결하고 데이터를 전송할 수 있는 객체를 말합니다.데이터를 운반하는데 사용되는 연결통로 역할을 합니다. only 단방향 통신입력과 출력을 동시에 처리할 수 없습니다.각각 입력스트림과 출력스트림이 필요합니다. FIFO 구조먼저 보낸 데이터를 먼저 받습니다. 2. 바이트기반 스트림바이트 단위출력의 단위가 모두 1 byte 입니다. 구현체ByteArray: 메모리File: 파일Piped: 프로세스Audio: 오디오 장치 InputStreamread()데이터를 읽어옵니다. 구현체ByteArrayInputStrea..

Java 2023.11.29

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

남궁성 님의 "Java의 정석" 책을 정리한 포스팅 입니다. 5. 우선순위Thread 클래스는 우선순위라는 속성을 가지고 있습니다.우선순위 값에 따라 스레드의 실행순서가 달라집니다.사용자에게 빠르게 반응해야 하는 작업에 우선순위를 높게 부여합니다. 우선순위 지정하기1~10이며, 숫자가 높을수록 우선순위가 높습니다.부모 스레드로부터 상속받습니다. 6. 스레드 그룹// 스레드 그룹 생성ThreadGroup group = new ThreadGroup("CustomGroup");// 그룹에 속한 스레드 생성Thread t1 = new Thread(group, () -> { System.out.println("Thread 1 is running");});Thread t2 = new Thread(group, ..

Java 2023.11.27

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

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

Java 2023.11.27

[Java] Stream

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

Java 2023.10.22

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

1. Queue InterfaceQueue는 처리를 위해 요소를 보관하는 컬렉션입니다.기본적인 Collection 연산 외에도 추가적인 삽입, 삭제, 검사 연산을 제공합니다. 기본 연산요소 추가add(e)큐의 용량 제한을 위반할 경우 IllegalStateException을 던집니다.offer(e)용량 제한이 있는 큐에서만 사용하기 위한 것요소를 삽입하지 못했을 때 false를 반환합니다.  요소 반환remove(), poll()큐의 앞쪽 요소를 제거하고 반환합니다. 요소 확인element(), peek()요소를 제거하지 않습니다. 특징정렬대개 FIFO(First-In-First-Out) 방식으로 요소를 정렬우선순위 큐는 요소의 값을 기준으로 요소를 정렬합니다. LinkedListQueue를 구현하는 ..

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

Java 2023.10.15