Set이란?중복을 허용하지 않는 데이터 모음 Set은 순서를 보장하지 않고, 중복을 허용하지 않는 컬렉션입니다.대표 구현체는 HashSet, LinkedHashSet, TreeSet이 있습니다. 예를 들어,회원 ID가 같은 ID가 있으면 안 되겠죠?주민번호도 중복으로 존재하면 안 됩니다!이런 상황일 때 Set을 사용합니다.Set ids = new HashSet();ids.add("wooZzing");ids.add("test");ids.add("wooZzing"); // ID 중복!! ❌ 안 들어감!System.out.println(ids); // [wooZzing, test]✔️ 결과: 중복된 "wooZzing"은 한 번만 저장됨 Set을 사용하는 이유상황 예시Set이 적합한 이유출석부, 회원 ID, 이..
안녕하세요 여러분! 우징입니다🤗이전 글에서 시스템 아키텍초 및 ERD 설계를 마쳤습니다. 이제 본격적인 개발을 시작하기 위해, 이번 글에서는 IntelliJ에서 Spring Boot 프로젝트를 직접 생성하고, 실행 테스트까지 완료해보겠습니다. 우선 사전에 IntelliJ와 Java 17버전을 설치해야합니다! 👇 아래 글에서 설치방법을 안내하고있으니 참고해주세요~ Java 17 개발 환경 셋팅 - JDK 17 & 인텔리제이 설치 (With.MacOS M1) — Hello Development World ! Java 17 개발 환경 셋팅 - JDK 17 & 인텔리제이 설치 (With.MacOS M1)설치하기 전에 간단하게 JDK와 인텔리제이가 무엇인지 알아보겠습니다. JDK란?Java 프로그램을 개발할 ..
안녕하세요 여러분! 우징입니다🤗 이번 시간에는 전자결제 프로젝트의 시스템 아키텍처와 ERD 설계에 대해 알아보겠습니다.실제 전자결제 시스템처럼 각 서버를 어떻게 분리하고, 어떤 데이터 흐름으로 연결되는지,그리고 테이블은 어떻게 구성되어야 하는지 차근차근 정리해볼게요! 프로젝트 흐름 고객이 가맹점 서버에서 상품을 주문가맹점 서버는 PG 서버에 결제 요청PG 서버는 고유 거래번호(TID) 생성 및 카드사에 승인 요청카드사는 승인 결과를 PG 서버에 응답PG 서버는 가맹점 서버로 콜백(Webhook) 전송가맹점 서버는 결제 결과를 고객에게 전달 서버 별 기능 요약 가맹점 서버 👉 쇼핑몰 역할사용자와의 인터페이스고객 주문 처리PG에 결제 요청Webhook 수신주문 상태 업데이트 및 고객 안내 PG ..
안녕하세요 여러분! 우징입니다🤗 앞으로 함께 만들어갈 전자결제 시뮬레이터 프로젝트에 대해 간단하게 소개하는 시간을 가져보려 합니다!이 글에서는 프로젝트의 전체 흐름, 목표, 시리즈 순서, 사용 기술 스택까지 살펴보겠습니다. 프로젝트 소개전자결제 시스템은 단순한 결제 기능이 아닙니다.고객, 가맹점, PG, 카드사/은행까지 복수의 주체가 참여하고,API 호출, 승인 처리, 보안, 콜백 등 다양한 요소가 얽힌 복잡한 시나리오입니다. ✅ 이 시리즈는 실제 서비스처럼 동작하는 전자결제 흐름 전체를 백엔드 시스템으로 구현해보는 프로젝트입니다.Spring Boot 기반으로 가맹점 서버, PG 서버, 카드사 서버를 분리해 구현하며, 실전 감각을 익히는 데 중점을 둡니다. 항목설명프로젝트명결제 프로세스 만들기대상 독자..
안녕하세요 여러분! 우징입니다🤗 저는 아직 전자결제 시스템을 직접 연동하거나 실무에서 경험해본 적은 없습니다. 하지만 여러 회사의 공식 문서(NHN KCP, KG이니시스,Toss Payments 등)를 바탕으로 결제 프로세스를 조사하고 학습한 내용을 기반으로, 이번 프로젝트에서는 실제 전자결제 회사처럼 작동하는 결제 시뮬레이터를 Spring Boot로 구현해보려고 합니다. 하지만, 그 전에 전자결제가 무엇인지, 어떤식으로 결제가 진행되는건지 알아보겠습니다! 전자결제란?✅ 온라인에서 상품이나 서비스를 결제할 수 있도록 중개해주는 시스템! 오프라인에서는 우리가 현금이나 카드를 내밀면서 결제를 하죠.하지만 온라인 쇼핑몰, 앱, 서비스에서는 그런 직접 결제가 불가능하니,전자적으로 결제 정보를 주고받고 처리..
이 객체, 하나만 있으면 되지 않을까? 소프트웨어를 만들다 보면, 객체를 하나만 생성해서 공유해야 하는 상황이 자주 발생합니다.예를 들어,DB 연결을 관리하는 클래스로그를 남기는 클래스설정 값을 읽어오는 클래스이런 경우, 싱글톤 패턴(Singleton Pattern)을 적용하면 효율적입니다. 싱글톤 패턴이란?프로그램 전체에서 딱 하나만 만들어서, 모두가 공유해서 쓰는 객체를 만드는 방법이에요. 예를 들어,회사에 하나뿐인 복사기를 직원들이 같이 쓰는 느낌!콘서트장 1개 좌석표 시스템을 모두가 쓰는 상황! 왜 싱글톤이 필요할까요?이유설명메모리 절약인스턴스를 하나만 생성하므로 불필요한 리소스 낭비 방지일관된 접근동일한 객체를 여러 곳에서 공유하므로 상태가 일치전역 접근프로그램 전체에서 동일한 인스턴..
List란? 순서를 지키고, 중복도 OK! 데이터를 줄 세워서 관리하는 컬렉션 List는 순서가 있는 데이터 집합입니다.데이터를 입력한 순서대로 저장하고, 중복된 값도 허용해요. 즉, "철수", "영희", "민수"이렇게 넣으면, 순서대로 [철수, 영희, 민수] 로 저장되고,같은 값이 들어가도 괜찮아요.List names = new ArrayList();names.add("철수");names.add("영희");names.add("철수"); // 중복 허용! 언제 List를 사용할까요?학생 출석부처럼 순서가 중요한 경우쇼핑몰 장바구니처럼 중복 상품이 들어올 수 있는 경우음악 재생목록처럼 앞뒤 순서대로 처리해야 하는 경우 특징항목설명순서 유지⭕중복 허용⭕인덱스로 접근⭕ (0번부터 시작)대표 구현체Arra..
배열만으로 데이터를 관리하기엔 부족하다면?자바는 이를 위해 강력한 컬렉션 프레임워크(Collection Framework) 를 제공합니다. 컬렉션 프레임워크란? ✅ 여러 데이터를 쉽게 저장하고 꺼낼 수 있도록 만든 자바의 도구 모음입니다.쉽게 말하면, 자료 보관함이에요!순서를 유지하는 리스트형 보관함중복을 허용하지 않는 집합형 보관함이름표 붙여서 찾는 사전형 보관함➡ 자바는 List, Set, Map 등 다양한 인터페이스와 그 구현체를 통해중복 제거, 정렬, 키-값 저장, 순서 유지 같은 다양한 요구를 충족시켜줍니다. 왜 배열이 아닌 컬렉션을 써야 할까요?프로그래밍을 하다 보면,학생 명단, 상품 목록, 게시글 리스트처럼 여러 개의 데이터를 한꺼번에 저장해야 할 일이 정말 많아요.그럴 땐 가장 ..
throw 와 throws 는 뭐가 다를까요? 구분throwthrows의미예외를 직접 발생시킴예외가 발생할 수 있다고 선언위치메서드 내부메서드 선언부 (괄호 뒤)역할예외를 명시적으로 발생시킴호출한 곳에 예외 처리를 넘김함께 쓰는 대상예외 객체 (new Exception)예외 클래스 이름 (Exception) 간단하게 말하면?✅ throw➡ "예외를 직접 던질 때 사용하는 키워드!"예: 특정 조건에서 강제로 예외를 발생시킬 때throw new IllegalArgumentException("잘못된 입력입니다"); ✅ throws➡ "이 메서드는 예외를 던질 수도 있어~" 라고 알리는 키워드!예: 호출한 쪽에서 예외 처리를 하라고 넘길 때public void readFile() throws IOExceptio..
사용자 정의 예외란? 자바에서 기본으로 제공하는 예외 클래스(NullPointerException, IOException 등) 외에개발자가 직접 만드는 예외 클래스를 말합니다. 왜 사용자 예외가 필요할까요? 자바가 제공하는 예외들은 일반적인 상황에는 충분하지만,우리 서비스만의 특수한 예외 상황에는 부족할 수 있어요. 예시 상황로그인 시도 5회 초과 → LoginAttemptExceededException잔액 부족 → InsufficientBalanceExceptionVIP 전용 페이지 접근 → UnauthorizedVipAccessException👉 이럴 때 의미 있는 이름을 가진 예외 클래스를 만들어 상황을 더 명확하게 표현할 수 있습니다. 사용자 정의 예외 만드는 방법방법상속 대상예외 종류Ex..