요약의존성 주입을 통해 객체 간의 결합도를 낮춥니다.싱글톤 패턴을 사용하여 인스턴스를 공유합니다.관심사 분리를 통해 설정과 비즈니스 로직을 분리하여 코드의 유지보수성을 높입니다.AppConfig를 통해 필요한 객체를 주입 받습니다.오늘은 객체 지향 설계를 할 수 있도록 연습해보는 코드를 작성해보겠습니다. 회원 가입 시스템 설계 package member;public enum Grade { BASIC, VIP}package member;public class Member { private Long id; private String name; private Grade grade; public Member(Long id, String name, Grade grade) { this.id = id; this...
Optional: Java에서 Null 처리를 위한 안전한 선택Java 프로그래밍에서 null 처리는 언제나 큰 도전 과제가 됩니다. NullPointerException(NPE)은 많은 개발자들이 가장 두려워하는 오류 중 하나이며, 이를 예방하기 위한 방법으로 Java 8에서 도입된 것이 바로 Optional입니다. 이번 포스트에서는 Optional의 필요성과 사용 방법, 장점 및 단점에 대해 자세히 알아보겠습니다. 1. Null의 문제null은 Java에서 흔히 발생하는 문제 중 하나로, 코드의 오류를 유발할 수 있습니다. 다음과 같은 상황을 생각해 보세요:String value = getValue(); // getValue()가 null을 반환할 수 있음System.out.println(value...
💡 학습 목표자바 I/O 에서의 스트림( java.io.)과 java.util.stream 패키지에 있는 Stream 구분해서 이야기할 수 있다. 스트림 패키지의 구분자바 I/O 스트림은 데이터를 읽고 쓰는 목적으로 사용됩니다. 파일, 네트워크, 메모리 등 다양한 소스에서 바이트나 문자 데이터를 읽거나 쓰기 위한 스트림입니다. InputStream과 OutputStream이 대표적인 I/O 스트림입니다. Stream API와 자바 I/O 스트림은 이름은 비슷하지만, 완전히 다른 개념입니다. Stream API는 자바 8에서 도입된 중요한 기능 중 하나로, 데이터 컬렉션(자료구조)을 처리할 때 사용되는 강력한 도구입니다. 스트림(Stream)은 데이터를 선언적으로 처리할 수 있게 하며, 특히 대용량 데이..
💡 학습 목표람다식의 기본 개념과 문법을 직접 말할 수 있다.기존에 자바 코드를 람다식 표현법을 사용해서 작업할 수 있다.함수형 인터페이스(Functional Interface)가 무엇인지 간단하기 말할 수 있다.자바8 버전부터 제공해주는 interface Function 을 활용할 수 있다. 자바에서 람다식(Lambda expression)은 함수형 프로그래밍 개념을 도입한 것으로, 익명 함수(이름이 없는 함수)를 간결하게 표현할 수 있게 해 줍니다, 람다식은 자바 버전 8(2014년 출시)부터 사용할 수 있습니다. 추가로 자바 8은 함수형 프로그래밍을 지원하기 위한 여러 기능을 함께 도입했습니다즉, 람다식을 사용하면 코드가 간결해지고, 특히 컬렉션이나 스트림 API 을 처리할 때 매우 유용합니다.람..
프로그래밍을 하다 보면 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 있습니다. 이럴 때에 기본 자료타입(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(n..
💡 JSON Object와 JSON Array의 타입을 반드시 구분하자.JSON Object (JSON 객체):JSON 객체는 { } 로 둘러싸인 키-값 쌍의 집합입니다.키는 항상 문자열이고, 값은 문자열, 숫자, 객체, 배열, 불리언, 또는 null일 수 있습니다.{ "name": "홍길동", "age": 21, "subjects": ["수학", "물리", "컴퓨터 과학"]}JSON Array (JSON 배열):JSON 배열은 **[ ]**로 둘러싸인 값의 순서 있는 목록입니다.배열의 각 값은 모든 JSON 데이터 타입이 될 수 있습니다[ { "name": "홍길동", "age": 21, "subjects": ["수학", "물리", "컴퓨터 과학"] }, { "nam..
Parshing💡 파싱(Parsing)이란 컴퓨터 과학에서 입력된 데이터를 해석하고 구조화하는 과정을 의미합니다. 일반적으로 파싱은 텍스트 데이터를 특정 형식으로 변환하거나, 텍스트 데이터에서 유용한 정보를 추출하는 데 사용됩니다. 파싱을 통해 원시 데이터를 컴퓨터가 이해하고 처리할 수 있는 구조로 변환할 수 있습니다. 파싱의 주요 개념구문 분석(Syntax Analysis):텍스트 데이터를 구문 규칙에 따라 해석하는 과정입니다.주로 프로그래밍 언어의 컴파일러나 인터프리터에서 소스 코드를 구문 트리(Syntax Tree)로 변환할 때 사용됩니다.데이터 형식 변환:텍스트 데이터를 특정 형식(예: JSON, XML)으로 변환하여 구조화된 데이터를 생성합니다.예를 들어, JSON 형식의 문자열을 자바 객체로..
공공데이터 포털국가에서 보유하고 있는 다양한 데이터를『공공데이터의 제공 및 이용 활성화에 관한 법률(제11956호)』에 따라 개방하여 국민들이 보다 쉽고 용이하게 공유•활용할 수 있도록 공공데이터(Datasewww.data.go.kr 공공 데이터 포탈 사이트에서 API 키 발급회원 가입 및 로그인: 공공 데이터 포탈 사이트에 회원 가입 후 로그인합니다.API 키 발급: 원하는 API를 선택하고 사용 신청을 통해 API 키를 발급받습니다. 한국환경공단_에어코리아_미세먼지 경보 발령 현황미세먼지(PM10, PM2.5)에 대한 주의보, 경보 발령을 조회하기 위한 서비스 ※ 운영계정으로 사용하고자 할 경우 "한국환경공단 에어코리아 OpenAPI 기술문서" 내 신청 가이드 참고www.data.go.kr pack..
package ch01;import java.io.IOException;import java.net.InetSocketAddress;import com.sun.net.httpserver.*;public class SimpleHttpServer { public static void main(String[] args) { try { HttpServer.create(new InetSocketAddress(8080), 0); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }} package ch01;import java.io.IOException;import java.io.Out..
💡 소켓을 활용한 HTTP 통신 HTTP 통신은 소켓 통신 개념을 활용하여 데이터 전송을 수행합니다. HTTP는 TCP 소켓을 통해 클라이언트와 서버 간의 데이터를 주고받습니다. HTTP 통신 개념HTTP(HyperText Transfer Protocol)는 웹 브라우저와 웹 서버 간의 데이터 전송을 위한 프로토콜입니다. HTTP는 요청-응답(request-response) 모델을 기반으로 하며, 클라이언트가 요청을 보내면 서버가 응답을 반환합니다. HTTP는 주로 텍스트 기반의 프로토콜로, 클라이언트와 서버 간에 데이터를 주고받는 형식을 명확하게 정의합니다. 주요 HTTP 메서드GET: 서버에서 데이터를 요청합니다. 주로 데이터를 조회할 때 사용됩니다.POST: 서버에 데이터를 전송합니다. 주로 데이..