Java 102

Stream API

스트림 패키지의 구분자바 I/O 스트림은 데이터를 읽고 쓰는 목적으로 사용된다. 파일, 네트워크, 메모리 등 다양한 소스에서 바이트나 문자 데이터를 읽거나 쓰기 위한 스트림이다. InputStream과 OutputStream이 대표적인 I/O 스트림이다. Stream API와 자바 I/O 스트림은 이름은 비슷하나, 완전히 다른 개념이다. Stream API는 자바 8에서 도입된 중요한 기능 중 하나로, 데이터 컬렉션(자료구조)을 처리할 때 사용되는 강력한 도구이다. 스트림(Stream)은 데이터를 선언적으로 처리할 수 있게 하며, 특히 대용량 데이터 처리 및 데이터 흐름 제어에 매우 유용하다. Stream API자바 I/O 스트림데이터 컬렉션(List, Set, Map, 배열)을 처리파일, 네트워크 등 ..

Java 2024.10.01

래퍼 클래스

프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있다. 이럴 때에 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스들을 래퍼 클래스(wrapper class)라고 한다.package ch01;public class MainTest1 { public static void main(String[] args) { // 박싱, 언박싱 이라는 용어를 이해하자. int num1 = 3; // ---> Integer Integer num2 = new Integer(3); // 박싱 int num3 = num2.intValue(); // 언박싱 System.out.println(num2); System.out.println(num3);..

Java 2024.10.01

GET 방식과 URL 주소 설계

멱등성(Idempotency)이란 같은 작업을 여러 번 수행해도 결과가 달라지지 않는 성질을 의미한다. 이 개념은 특히 HTTP 메서드나 데이터베이스 연산에서 자주 사용된다.멱등성을 가짐 (GET, PUT, DELETE)비 멱등성을 가짐 (POST)멱등성의 의미- 안정성 : 멱등성을 가진 연산은 중복 요청에 대해 안전하다. 네트워크 문제로 인해 동일한 요청이 여러 번 전달되더라도, 최종 결과는 변하지 않으므로 안전하게 처리할 수 있다.- 데이터 일관성 : 멱등성은 시스템이 일관된 상태를 유지하도록 도와준다. 특히, 분산 시스템에서 동일한 작업이 여러 번 실행될 가능성이 있을 때, 멱등성은 데이터 무결성을 보장한다. 쿼리 스트링(Query String)과 경로 매개변수(Path parameter)는 모두 ..

Java 2024.09.27

전략 패턴

사전 기반 지식인터페이스와 다형성 : 인터페이스를 사용하여 서로 다른 구현체를 동일하게 처리하는 개념을 이해해야 한다.메서드 오버라이딩 : 상위 클래스나 인터페이스에서 정의된 메서드를 하위 클래스에서 재정의하여 사용하는 방법을 알고 있어야 한다.전략 패턴(Strategy Pattern)동작 방식을 캡슐화하여, 동적으로 전략을 변경할 수 있도록 하는 디자인 패턴.특정 기능을 수행할 여러 방법이 있을 때, 그 방법들을 전략(클래스)으로 정의하고, 필요에 따라 적절한 전략을 선택하여 사용할 수 있다.package strategy;import java.util.Base64;public class StrategyTest { public static void main(String[] args) { ..

Java 2024.09.27

싱글 톤 패턴

사전 기반 지식클래스와 객체 : 자바에서 클래스는 객체를 생성하기 위한 틀이다. 일반적으로 하나의 클래스에서 여러 객체를 생성할 수 있지만, 싱글톤 패턴은 단 하나의 객체만을 보장한다.생성자(Constructor) : 객체가 생성될 때 호출되는 메서드로, 싱글톤 패턴에서는 생성자를 외부에서 호출하지 못하도록 제한한다.정적 변수와 메서드 : 싱글톤 패턴에서 주로 사용되는 정적(static) 멤버에 대한 이해가 필요하다. 싱글톤 패턴싱글톤 패턴은 특정 클래스의 인스턴스를 하나만 생성하고, 이를 전역적으로 접근할 수 있도록 하는 디자인 패턴이다.주요 목적은 시스템 전체에서 공통된 리소스를 공유하거나, 객체 생성을 제한하여 메모리 낭비를 줄이기 위함이다. package singleton;// 1. 정적 변수를 ..

Java 2024.09.26

콜백 메서드 만들어 보기

사전 기반 지식인터페이스 : Java 인터페이스의 개념을 이해하고, 메서드를 선언하고 구현하는 방법을 알고 있어야 한다.익명 클래스 : 클래스 정의 없이 인터페이스를 바로 구현하는 익명 클래스의 사용법을 알고 있어야 한다.콜백 메서드콜백 메서드는 특정한 작업이 완료되었을 때 또는 특정 이벤트가 발생했을 때 호출되는 메서드이다.콜백 메서드는 주로 비동기 작업이나 이벤트 기반 시스템에서 사용된다. 콜백 메서드를 활용하면 동작을 정의하고 나중에 실행할 수 있기 때문에, 프로그램이 더 유연해지고 모듈화 될 수 있다. 시나리오 코드 1 - 버튼 클릭 이벤트 처리우리는 컴퓨터나 스마트폰에서 버튼을 누를 때 마다 어떠한 이벤트가 발생한다. 이 이벤트는 버튼이 눌렸을 때 동작할 콜백 메서드를 통해 처리된다. 예를 들어..

Java 2024.09.26

어댑터 패턴

사전 기반 지식객체 지향 프로그래밍(OOP) : 클래스와 객체의 개념, 상속과 인터페이스에 대한 기본적인 이해.다형성 : 상위 클래스나 인터페이스를 통해 다양한 하위 클래스를 처리하는 능력.호환성 문제 : 서로 다른 인터페이스를 가진 클래스 간의 호환성 문제 해결을 위해 어댑터 패턴을 사용하는 상황을 이해해야 한다.어댑터 패턴어댑터 패턴은 호환되지 않는 인터페이스를 가진 클래스들을 함께 동작할 수 있도록 변환해주는 디자인 패턴이다. 즉, 기존 클래스의 인터페이스가 요구사항과 맞지 않을 때, 새로운 인터페이스를 기존 클래스에 맞추어 주는 역할을 한다. 이를 통해 호환성 문제를 해결하고, 기존 코드를 수정하지 않고도 새로운 코드와 결합할 수 있다. 시나리오 코드 1package adapter;public c..

Java 2024.09.26

팩토리 패턴

사전 기반 지식객체 지향 프로그래밍 : 클래스와 객체 생성에 대한 기본 개념.추상화 : 구현과 인터페이스를 분리하는 개념.다형성 : 상위 클래스나 인터페이스를 통해 다양한 하위 클래스를 처리하는 능력팩토리 패턴팩토리 패턴은 객체 생성 로직을 감추고, 클라이언트(사용자)가 어떤 객체를 생성할지 결정만 하면 내부적으로 그 객체를 생성하는 패턴이다. 예를 들어 자판기는 다양한 음료를 제공하는데, 사용자가 음료를 선택하면 자판기가 내부에서 해당 음료를 준비해준다. 사용자는 음료가 준비되는 과정을 신경 쓸 필요 없이, 자판기에 요청만 하면 음료가 나오는 형태이다.이것이 팩토리 패턴의 핵심이다. 팩토리 패턴을 사용하면 객체 생성 과정이 클라이언트 코드로부터 분리되어, 클라이언트는 필요한 객체만 요청하고, 생성 과정..

Java 2024.09.26

빌더 패턴

빌더 패턴빌더 패턴은 복잡한 객체를 단계적으로 생성할 수 있도록 도와주는 디자인 패턴이다. 특히 많은 옵션이나 매개변수를 가진 객체를 만들 때 유용하다. 일반적인 생성자는 매개변수가 많아지면 복잡해지기 때문에, 빌더 패턴은 각 단계에서 선택적인 매개변수를 추가할 수 있게 해준다. 햄버거 예제와 빌더 패턴햄버거를 주문할 때, 특정 업체에서는 다양한 재료 중에서 자신만의 햄버거를 만들 수 있다. 먼저 빵과 패티같은 필수 재료를 선택하고, 그 다음으로 치즈나 양상추, 토마토 같은 선택적인 재료를 추가한다. 이 과정은 빌더 패턴과 매우 유사하다. 필수 요소와 선택 요소필수 요소 : 햄버거를 만들기 위해선 반드시 있어야 하는 재료가 있다. 예를 들어, 빵과 패티는 꼭 필요한 요소이다. 빌더 패턴에서는 객체를 만들..

Java 2024.09.26

디자인 패턴의 활용

디자인 패턴(Design Patterns)은 소프트웨어 개발에서 자주 반복되는 문제들을 해결하기 위해 만들어진 재사용 가능한 코드 설계 방법이다. 즉, 소프트웨어 설계 시 발생할 수 있는 문제를 효율적으로 해결하기 위한 설계의 모범 사례라고 할 수 있다. 장점개발자 간의 원활한 소통 소프트웨어 구조 파악이 용이 재사용을 통한 개발 시간 단축 설계 변경 요청에 대한 유연한 대처 단점 객체지향 설계에 대한 깊은 이해도가 필요 간단한 문제에 대해 디자인 패턴을 적용하는 것이 오히려 더 복잡하고 비효율적일 수 있다. 모든 문제에 대해 디자인 패턴을 적용하는 것은 적절하지 않다.디자인 패턴은 크게 생성(Creational), 구조(Structural), 행동(Behabioral)으로 구분할 수 있다.  생성 ..

Java 2024.09.26