
바이트 기반에 입력 스트림을 활용해서 파일에 있는 데이터를 읽을 수 있다. 코드 예시) 기반 스트림 (Base Stream)이란 뭘까?기반 스트림은 데이터 소스와 직접 연결되는 스트림으로, 실제 데이터 읽기나 쓰기 작업을 수행합니다. 이 스트림들은 데이터의 실제 입력 소스(파일, 메모리, 네트워크 연결 등)에 직접 연결되어 데이터를 바이트 단위로 읽거나 쓰는 기본적인 기능을 제공합니다.바이트 기반 스트림: FileInputStream, FileOutputStream, SocketInputStream, SocketOutputStream 등이 있으며, 이들은 바이트 데이터를 처리합니다.문자 기반 스트림: FileReader, FileWriter 등이 있으며, 이들은 문자 데이터를 처리합니다.보조 스트림 (..

자바 I/O(입출력)는 데이터를 읽고 쓰는 기능을 말합니다.파일, 네트워크, 다른 프로그램 등 다양한 소스와 대상으로부터 데이터를 주고받는 데 사용됩니다. 자바의 I/O 시스템(4가지): 바이트 기반 스트림, 문자 기반 스트림, 버퍼링 스트림, 고수준의 스트림 스트림(stream)이란데이터를 순차적으로 처리하는 일련의 연속된 데이터 요소들이다.데이터의 흐름을 읽고 쓰는 데 사용되는 추상적인 개념이다.입출력 작업을 수행할 때 데이터를 한 곳에서 다른 곳으로 이동시키는 매개체 역할을 한다. java.io 패키지자바 I/O의 스트림 API에는 실제로 여러 인터페이스와 추상 클래스가 정의되어 있습니다.자바에서 "Stream"이라는 용어는 두 가지 맥락에서 사용됩니다. 하나는 I/O에 관련된 데이터 흐름을 처리..
스레드 동기화: synchronized 블록을 사용하여 여러 스레드가 공유 자원에 동시에 액세스하지 않도록 관리합니다. 이는 데이터 일관성과 스레드 안전을 유지하는 핵심 개념입니다.wait()와 notify() 메소드의 사용: 이 두 메소드를 사용하여 스레드 간의 통신을 구현합니다. wait()를 호출하는 스레드는 특정 조건이 충족될 때까지 대기하고, notify()를 사용하여 조건 충족 시 다른 스레드를 깨워 작업을 계속하도록 합니다.프로듀서-컨슈머 패턴: 이 패턴은 멀티스레딩 디자인에서 흔히 사용되는 패턴으로, 한 스레드(프로듀서)가 데이터를 생성하고 다른 스레드(컨슈머)가 이를 소비합니다. 코드 예시

큐 Queue는 데이터를 저장하는 선형 자료구조로, 차례를 기다리는 줄이라는 의미를 가지고 있는 단어처럼 먼저 들어온 자료부터 순서대로 처리하는 방식을 말한다.한 쪽 끝에서는 자료의 삽입 연산만 가능하고 반대쪽 끝에서는 삭제만 가능한 구조로서 선입선출(FIFO : First In First Out)의 특징을 가진다. Queue의 특징맨 앞(front) 에서 자료를 꺼내거나 삭제하고, 맨 뒤(rear)에서 자료를 추가 함Fist In First Out (선입선출) 구조일상 생활에서 일렬로 줄 서 있는 모양순차적으로 입력된 자료를 순서대로 처리하는데 많이 사용 되는 자료구조콜센터에 들어온 문의 전화, 메세지 큐 등에 활용됨jdk 클래스 : ArrayList 자바에서 큐는 Queue 인터페이스로 정의되며,..

Map은 키(key)와 값(value)을 연관시키는 자료구조입니다. 이는 사전과 유사한 구조로, 각 키는 고유한 값을 가집니다. Java에서 Map은 인터페이스로 정의되어 있으며, 이를 구현한 여러 가지 클래스가 있습니다.Map 주요 특징키-값 저장: Map은 키(key)와 값(value)의 쌍으로 데이터를 저장합니다. 각 키는 고유해야 하며, 하나의 값에만 매핑됩니다.중복 키 불가: Map은 각 키가 고유해야 합니다. 따라서 동일한 키를 두 번 이상 추가할 수 없습니다. 키의 유일성은 Map 내에서 보장됩니다.순서 보장하지 않음: Map은 키-값 쌍을 저장하는데 순서를 유지하지 않습니다. 따라서 Map에 저장된 순서와 데이터를 순회할 때의 순서는 일치하지 않을 수 있습니다. Map 주요 기능 및 메서드..

Java에서 Set 인터페이스는 java.util 패키지의 일부로, 중복을 허용하지 않는 유일한 요소들을 저장하는데 사용됩니다. 이 인터페이스는 컬렉션 프레임워크의 일부이며, 순서에 의존하지 않는 데이터 집합을 관리하기 위해 설계되었습니다.주요 특징중복 허용 불가: Set에 같은 요소를 추가하려고 하면, 추가가 되지 않습니다. 즉, 모든 요소가 고유해야 하며, 이미 존재하는 요소를 추가할 경우 무시됩니다.순서 보장하지 않음: Set은 요소들의 순서를 유지하지 않습니다. 요소들이 내부적으로 어떻게 저장되고 관리되는지는 Set을 구현하는 클래스에 따라 다릅니다. 따라서 요소들이 추가된 순서와 Set에서 요소를 순회할 때의 순서가 다를 수 있습니다.값의 유일성: Set은 각 요소의 유일성을 보장합니다. 이는 ..

List 인터페이스자바에서 객체를 순서대로 저장하고 관리할 수 있도록 설계된 인터페이스java.util 패키지에 속하며, 배열이나 연결 리스트 등의 순차적 자료 구조의 구현체를 위한 메서드를 정의한다. List 인터페이스의 주요 특징순서 유지: List 인터페이스를 구현하는 자료 구조는 원소들이 삽입된 순서를 유지한다. 이는 원소들이 리스트 내에서 특정 위치(index)를 가지며, 이 인텍스를 통해 접근할 수 있다는 것을 의미한다. 중복 허용: List 는 같은 값을 가진 원소의 중복 저장을 허용한다. 예) 같은 값을 여러 번 리스트에 추가할 수 있으며, 이는 리스트의 크기를 증가시키고 각각의 원소는 별도의 인덱스를 갖게 된다.가변 크기 : List의 구현체들은 동적으로 크기가 조절된다. 즉, 원소를..

Stack(스택)데이터를 일시적으로 저장하기 위한 선형 자료구조'후입선출(Last in, First Out ; LIFO) 원칙을 따른다. 가장 마지막에 추가된 요소가 가장 먼저 제거된다는 것을 의미한다.(예를 들어, 식상에서 사용된 접시를 쌓아 두었다가 사용할 때 가장 위에 있는 접시부터 꺼내는 것과 비슷하다.) 스택의 주요 연산 Push: 스택에 요소를 추가하는 연산입니다. 스택의 맨 위에 새로운 요소를 놓습니다.Pop: 스택에서 요소를 제거하는 연산입니다. 스택의 맨 위에 있는 요소를 꺼내며, 그 요소는 스택에서 삭제됩니다.Peek 또는 Top: 스택의 맨 위에 있는 요소를 반환하지만, 제거하지는 않습니다. 스택의 최상위 요소를 확인할 때 사용합니다.IsEmpty: 스택이 비어 있는지 확인합니다...

자료구조데이터를 효율적으로구성하고 조작하기 위한 방법을 제공하는 클래스와 인터페이스의 모음 다양한 요구 사항에 맞게 설계되어 있으며 데이터를 삽입, 삭제, 검색, 정렬 등의 작업을 효율적으로 수행할 수 있도록 지원한다.자바에서 제공하는 자료구조에는 배열, 리스트, 스택, 큐, 집합, 맵 등이 포함된다.프로그램의 성능과 효율성을 향상시킨다.정리프로그램에서 사용할 많은 데이터를 메모리 상에서 관리하는 여러 구현 방법들이다.자료의 효율적인 관리는 프로그램의 수행속도와 밀접한 관련이 있다.여러 자료구조 중에서 구현하려는 프로그램에 맞는 최적의 자료구조를 활용해야 한다 자바 컬렉션 프레임워크(Collection Framework)는 다양한 자료구조를 표준화하여 제공하는 클래스의 집합이다.자바 컬렉션 프레임워크프로..

class OuterClass{ //외부 클래스 ...class NestedClass{ // 중첩 클래스 ... }}외부 클래스: 내부에 클래스를 가지고 있는 클래스중첩 클래스: 클래스 내부에 포함되는 클래스 중첩 클래스 종류 정적 중첩 클래스: 앞에 static 이 붙어서 내장되는 클래스비정적 중첩 클래스: static 이 붙지 않은 일반적인 중첩 클래스- 내부 클래스: 클래스의 멤버처럼 선언되는 중첩 클래스- 지역 클래스: 메서드의 몸체 안에서 선언되는 중첩 클래스- 익명 클래스: 수식의 중간에서 선언되고 바로 객체화되는 클래스 내부 클래스(inner class)클래스 안에 클래스를 선언한다. 외부 클래스의 인스턴스 변수와 메서드를 전부 사용할 수 있다.private 로 선언되어 있어도 접근이..