전체 글 67

[Project] 일정 관리 앱 만들기

SchedulerApp ProjectAPI 명세서 작성더보기일정 관리 앱 요구 사항통신 데이터 형태 (request / response)는 JSON 형태 이다.일정 생성 시 포함되어야 할 테이터는식별자(id): 고유 식별자(ID)를 자동으로 생성 관리할 일(task)작성자명(authorName)비밀번호(password)작성일(createdDate) / 수정일(modifiedDate)최초 입력 시 수정일은 작성일과 동일하면 된다.형식: YYYY-MM-DDHTTP API 설계대부분의 API는 CRUD 작업을 수행한다.설계 순서1. HTTP MethodPOST : CREATEGET : READPUT, PATCH : UPDATEDELETE : DELETE2. Restful API → URL Mapping3. 요..

Sparta/Projects 2025.05.14

[Spring] IP / Port / Domain / URL

그럼 클라이언트와 서버 간의 통신을 할 때, 클라이언트가 보낸 요청을 서버는 어디서 받아서 어떻게 처리를 하는 것일까? 이것에 대해 알려면 IP 주소, 포트(Port) 번호, 도메인(Domain) 그리고 URL(Uniform Resource Locator)를 알아야 한다.IP(Internet Protocol) 주소IP 주소는 서버의 고유한 식별자로, 인터넷에서 서버를 찾을 수 있는 유일한 주소 역할을 하기 때문에 이를 통해 서버 간의 통신을 가능하게 한다. (쉽게 말하면 각 기기 간의 통신을 식별할 수 있는 전화번호라고 생각하면 좋을 듯..) 클라이언트가 서버와 연결할 때, 서버의 IP로 요청을 보내고서버는 그 요청을 처리하고 응답을 클라이언트로 보낸다.이와 같은 통신에는 지정한 IP 주소에 데이터를 ..

Dev/Spring 2025.05.13

[Spring] 클라이언트 - 서버 간 통신 흐름

향후 Web Application을 실제 개발하기 위해서는 클라이언트와 서버 간의 통신 흐름을 알아야 한다.왜 알아야 할까?효율적인 API 설계를 위해→ RESTful API 설계와 HTTP 메서드(GET, POST, PUT, DELETE 등)를 올바르게 활용 가능디버깅 / 문제 해결을 위해→ 오류 발생 시 어떤 오류인지 정확히 파악하고 해결 가능보안 / 최적화를 위해→ HTTPS를 사용한 암호화된 통신, 캐싱 전략 구현, 데이터 압축, 비동기 통신 등을 활용하여 응답 속도 개선 가능전체적인 시스템 흐름 파악을 위해 → 백엔드와 프론트엔드의 상호작용 명확히 이해하고, 시스템 구조에 대해 파악 가능클라이언트가 요청을 보내는 과정클라이언트에서 URL을 입력 or 버튼 클릭 → 해당 요청을 서버로 보내기 위한..

Dev/Spring 2025.05.09

[Spring] HTTP 기본 구조

Spring은 주로 Web Application 백엔드를 만들기 위한 프레임 워크이다.Web은 기본적으로 HTTP의 요청과 응답의 흐름으로 동작하고 있는 만큼 HTTP 구조에 대해 알아보도록 하자 HTTP란?HTTP = HyperText Transfer Protocol, 웹의 기반 통신 규약이다.클라이언트(브라우저 등)와 서버가 데이터를 주고받을 때 사용하는 약속된 규칙브라우저에서 http://naver.com 입력하면 > 1. 브라우저는 HTTP 요청을 NAVER에 보내게 되고,2. 보낸 요청에 대해 NAVER의 Web 서버가 응답을 준다 (HTML, CSS, JS 등 리소스)3. 브라우저는 그걸 해석한 후 웹페이지를 그려준다 Spring으로 만드는 서버는 HTTP 요청을 받고 HTTP 응답을 돌려주는..

Dev/Spring 2025.05.07

[Spring] Spring 이란

백엔드 개발을 공부하다보면 Java 이후 자연스레 접하게 되는 것 중 하나가 Spring이다. SpringJava 기반의 프레임워크(Framework) 이다.웹 어플리케이션, 마이크로서비스, 데이터 베이스 연동 등 활용된다.Spring FrameworkSpring은 IoC(Inversion of Control)와 DI(Dependency Injection) 원칙을 기반으로 작동한다.IoC(제어의 역전, Inversion of Control): 프로그램의 실행의 제어 흐름을 외부로 넘기는 설계 원칙객체의 생성과 관리를 개발자가 아닌 Spring 컨테이너에 의해 이루어지는 원칙이다.이를 통해 어플리케이션의 구성 요소들을 더 유연하게 관리할 수 있다.DI(의존성 주입, Dependency Injection):..

Dev/Spring 2025.05.02

[Java] 배열 연산

코드 테스트를 하면 기초 단계에서 아래의 문제를 만날 수 있다.정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.배열에 데이터를 넣어서 문제를 주면 큰 문제없이 풀 수 있지만,배열의 값에 될 것을 변수 1개로 제공하고 이것으로 연산해서 푸는 문제, 거기에 배열의 연산 포함된 문제가 나오면 어렵게만 느껴진다. 곰곰히..

Dev/Java 2025.05.01

[Project] 키오스크를 만들어보자

[요구사항] LV1. 기본적인 키오스크를 만들자더보기햄버거 메뉴 출력 및 선택하기✅ `Scanner`를 사용하여 여러 햄버거 메뉴를 출력합니다.✅ 제시된 메뉴 중 입력받은 숫자에 따라 다른 로직을 실행하는 코드를 작성합니다.✅ 반복문을 이용해서 특정 번호가 입력되면 프로그램을 종료합니다.LV2. 객체 지향 설계 적용 > 메뉴를 클래스로 관리해보자더보기메뉴를 List를 통해 관리해보자✅ `MenuItem` 클래스 생성하기 (`이름`, `가격`, `설명` 필드)✅ `main` 함수에서 햄버거 메뉴를 출력하기.✅ 반복문을 활용해 `menuItems`를 탐색하기LV3. 객체 지향 설계 적용 > 순서 제어를 클래스로 관리하기더보기Kiosk 클래스 생성하기✅ `MenuItem`을 리스트(List)로 관리하기✅ `s..

Sparta/Projects 2025.05.01

[Java] 반복문

반복문 (for, while, do-while)컴퓨터에게 일정한 형태의 작업을 반복적으로 수행하도록 할 때 사용한다.for문시작 조건이 종결조건을 불만족할 때까지 반복문 내 작성된 명령을 수행해라단, 1회 수행하고 나면 [조건변화수식]을 반영한 후 재수행해라for (시작조건; 종결조건; 조건변화수식) { ...}// 예시for(int i =1; i break 활용break: 해당 제어문에서 빠져 나오라는 명령어 (탈출 버튼)for 문 외에도 다른 반복문, 제어문에서 사용할 수 있다.더보기int customers = 5;for(int i =1; icontinue 활용continue: 해당 제어문의 조건에 만족하면 기존 명령 코드를 무시하라(스킵 버튼)for 문 외에도 다른 반복문, 제어문에서 사용할 수 ..

Dev/Java 2025.04.30

[Java] HashMap

HashMappublic class HashMap extends AbstractMap implements Map, Cloneable, Serializable Map 인터페이스를 구현한 자료구조키(key) - 값(value) 구조로 데이터를 저장한다.자물쇠가 있는 사물함 느낌 (키가 있어야 값을 꺼낼 수 있다.)내부적으로 해시 테이블(hash table)을 사용한다해시 함수로 “키” → “숫자 인덱스” 계산그 숫자를 배열의 슬롯으로 사용충돌 시 연결 구조로 관리빠른 검색, 삽입, 삭제 성능을 제공한다. (get(), put() )평균 O(1) 성능에 가까운 성능 제공더보기O(1) 성능(시간 복잡도) 데이터 크기가 아무리 커져도(대용량 데이터) 연산이 걸리는 시간이 거의 변하지 않는다는 뜻 시간 복잡..

Dev/Java 2025.04.29

[Java] Stream

Stream이란?컬렉션이나 배열 등의 데이터를 함수형 스타일로 처리할 수 있게 해주는 데이터 파이프라인- 반복문, 제어문 등 대신 Lambda(람다)를 사용해서 데이터 필터링, 변환, 집계 등을 간결하고 명확하게 표현할 수 있는 방법Stream 탄생"컬렉션(List)에 담긴 각 정수 요소 중 3보다 큰 숫자만 고르고, 해당 숫자에 10을 곱한 값을 새 리스트에 담으세요."를 코드로 작성하면 아래와 같다.List arrayList = new ArrayList(List.of(1, 2, 3, 4, 5));List ret1 = new ArrayList();for (Integer num : arrayList) { if(num > 3) { Integer multipliedNum = num * 10..

Dev/Java 2025.04.28