2025/02 21

Spring에서 HTTP 요청이 들어오면 처리되는 전체적인 흐름

들어가며Spring 어플리케이션 서버에서 HTTP 요청을 어떻게 처리하는지 흐름을 알고 계신가요? 이 글은 전체적인 작동 구조에 대해 공부하여 작성해보았습니다. 요청 처리 과정1) 요청이 웹 어플리케이션 서버에 도착 (Tomcat)클라이언트(브라우저, 모바일 앱 등)가 HTTP 요청을 보낼 때, Spring Boot 애플리케이션이 실행 중이라면 Tomcat 내장 웹 어플리케이션 서버가 요청을 받아줍니다.  📝  요청 예제GET /api/user/1 HTTP/1.1Host: example.comAuthorization: Bearer some_token  ✏️  웹 어플리케이션 서버의 역할요청을 받을 준비 (포트 8080 등)Servlet Container에게 요청 전달2) FilterChain이 요청을 ..

Spring 2025.02.24

[백준]13549 - 숨바꼭질 3 문제 풀이(Java,자바)

문제13549번: 숨바꼭질 3 들어가며최소 비용인데 겉으로 볼 때 뭔가 bfs, 다익스트라를 써야할 것 같지 않아서 여기저기 헤매다가 결국 못 풀었습니다.근데 bfs, 다익스트라더라고여. 풀이import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.PriorityQueue;import java.util.StringTokenizer;public class Main { static int n, k; static boolean[] visited; static int MAX = 100000; public static void main(String[] args..

Algorithm/백준 2025.02.16

[백준]1629 - 곱셈 문제 풀이(Java,자바)

문제1629번: 곱셈들어가며이 문제를 처음 봤을 때, dp로 하면 될 것 같아 했다가 바로 메모리 초과가 떴습니다.그렇습니다.이 문제는 바로 수학과 분할정복에 관한 문제입니다.풀이package solved.ac.class4;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.StringTokenizer;public class 백준1629_곱셈 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamR..

Algorithm/백준 2025.02.14

[SQL]가격이 제일 비싼 식품의 정보 출력하기 - SQL 고득점 Kit

문제코딩테스트 연습 - 가격이 제일 비싼 식품의 정보 출력하기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, PRICEFROM FOOD_PRODUCTWHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT);서브 쿼리를 사용하면 쉽게 풀 수 있는 문제입니다. WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT)먼저 MAX 함수를 이용해 최대값을 찾아둡니다.WHERE 절에서 그 값과 ..

DB/SQL 2025.02.13

[SQL]재구매가 일어난 상품과 회원 리스트 구하기 - SQL 고득점 Kit

문제코딩테스트 연습 - 재구매가 일어난 상품과 회원 리스트 구하기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이SELECT USER_ID, PRODUCT_IDFROM ONLINE_SALEGROUP BY USER_ID, PRODUCT_IDHAVING COUNT(*) > 1ORDER BY USER_ID ASC, PRODUCT_ID DESC;이 문제에선 가장 중요한 건 HAVING 과 COUNT(*)입니다. HAVING이란?그룹핑 후 그룹 결과에서 조건에 따라 필터링 그러면 WHERE이랑 차이점이 뭘까요?WHERE 은 그룹핑을 하기 전에 조건에 따라 먼저 필터링을 합니다..

DB/SQL 2025.02.13

[Spring+MongoDB]한 컬렉션에서 중복된 필드값 검증하기(feat. 고유 인덱스)

들어가며안녕하세요. 현재 "모아동"이라는 부경대학교 소속 동아리를 안내해 주는 서비스를 개발하고 있습니다.Spring + MongoDB 기반으로 동아리 담당자 쪽 회원 가입 기능 개발에서 "한 컬렉션에서 중복된 필드값이 들어가는 문제"에 막혀 헤매다가 해결하게 되어 글을 쓰게 되었습니다.문제 상황public class User implements UserDetails { ... @NotNull @Email @Size(min = 5, max = 50) private String email; ...}  이메일 필드는 같은 컬렉션 내에서 중복이 되지 않기를 원했습니다. 해결 과정단순히 구현한다면 find로 컬렉션 내에 이메일이 존재하는지 파악을 하고나서 있으면 save..

Spring 2025.02.13

[Spring+MongoDB]엔티티의 기본값이 DB에 저장되지 않은 문제

들어가며안녕하세요. 현재 "모아동"이라는 부경대학교 소속 동아리를 안내해주는 서비스를 개발하고 있습니다.Spring + MongoDB 기반으로 동아리 담당자 쪽 회원 가입 기능 개발에서 "엔티티의 기본 값이 DB에 저장되지 않은 문제"가 발생했습니다.문제 상황User (Entity)@Entity@Builder@Getter@AllArgsConstructor@NoArgsConstructor@Document(collection = "user")public class User implements UserDetails { @Id private String id; @NotNull @Email @Indexed(unique = true) @Size(min = 5, max = 50) ..

Spring 2025.02.13

[SQL]특정 세대의 대장균 찾기 - SQL 고득점 Kit

문제코딩테스트 연습 - 특정 세대의 대장균 찾기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 - 단순하게 푸는 방식WITH FIRST_CTE AS ( SELECT ID FROM ECOLI_DATA WHERE PARENT_ID IS NULL),SECOND_CTE AS ( SELECT ID FROM ECOLI_DATA WHERE PARENT_ID IN (SELECT * FROM FIRST_CTE))SELECT ID FROM ECOLI_DATAWHERE PARENT_ID IN (SELECT * FROM SECOND_CTE)ORDER BY ID이 ..

DB/SQL 2025.02.12

[SQL]서울에 위치한 식당 목록 출력하기 - SQL 고득점 Kit

문제코딩테스트 연습 - 서울에 위치한 식당 목록 출력하기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이SELECT INFO.REST_ID, INFO.REST_NAME, INFO.FOOD_TYPE, INFO.FAVORITES, INFO.ADDRESS, ROUND(AVG(REVIEW.REVIEW_SCORE), 2) AS SCOREFROM REST_INFO AS INFOJOIN REST_REVIEW AS REVIEWON INFO.REST_ID = REVIEW.REST_IDWHERE INFO.ADDRESS LIKE '서울%'GROUP BY INFO.R..

DB/SQL 2025.02.12

[SQL]3월에 태어난 여성 회원 목록 출력하기 - SQL 고득점 Kit

문제코딩테스트 연습 - 3월에 태어난 여성 회원 목록 출력하기 | 프로그래머스 스쿨 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH, '%Y-%m-%d') AS DATE_OF_BIRTHFROM MEMBER_PROFILEWHERE TLNO IS NOT NULL AND DATE_OF_BIRTH LIKE '%-03-%' AND GENDER = 'W'ORDER BY MEMBER_ID; 이 문제에서 포인트는 NULL 체크와 DATE에서 월을 뽑아내는 것과 ..

DB/SQL 2025.02.11