전체 글 37

[Spring MVC] DispatcherServlet과 Interceptor 연결 문제 해결

📝 상황실무 개발 중에 Spring MVC 프로젝트에서 인터셉터(SessionInterceptor.java)가 정상적으로 동작하지 않는 현상이 발생했습니다.원인을 살펴보니, 기존 프로젝트의 web.xml에서 DispatcherServlet 설정이 dispatcher-servlet.xml만 참조하고 있었고, context-interceptor.xml은 로드되지 않는 상태였습니다.즉, 를 선언한 context-interceptor.xml이 DispatcherServlet 컨텍스트에 포함되지 않아 Spring MVC가 SessionInterceptor를 인식하지 못했던 상황입니다.*** web.xml ***DispatcherServlet 설정이 dispatcher-servlet.xml만 되어있음 dis..

개발 2025.11.26

[Spring Boot] Eclipse Run Configurations의 Profile이란?

📝 상황이클립스 상단 Run Configurations > Spring Boot App에서 실행하려는데, Profile을 비워두면 서버가 뜨지 않고(사내 Nexus/외부 자원을 못 본다는 에러), local 을 넣으면 로컬 환경에서 정상 기동되는 현상 발생. 원인을 Spring Profile 기준으로 정리했다. ✅ 1. Run Configurations란?이클립스에서 자주 쓰는 실행/빌드 옵션을 저장해두는 실행 레시피.Spring Boot App 항목에서는 다음을 기억한다:Project / Main type(무슨 앱을 띄울지)Profile(= spring.profiles.active)기타 인자(Arguments), JRE, Classpath, 환경변수 등터미널의 mvn spring-boot:run -D..

개발 2025.10.19

[백준 3079] 입국심사 Python

📘 문제 정보https://www.acmicpc.net/problem/3079 📝 문제 해석입국심사대가 여러 개 있으며, 각 심사대는 한 명의 사람을 처리하는 데 걸리는 시간이 서로 다르다.총 M명의 사람이 심사를 받기 위해 줄을 서 있으며, 각 사람은 빈 심사대에 들어가게 된다.사람 수 M: 최대 1,000,000,000명심사대 수 N: 최대 100,000개각 심사대 시간 T: 최대 1,000,000,000→ 시간 범위가 매우 크기 때문에 단순 탐색이 아닌 이분 탐색을 사용해야 한다. 💡 풀이 아이디어🔑 핵심 접근: 이분 탐색 대상은 '시간'최소 시간 start = 0, 최대 시간 end = 10^18로 설정 (심사 시간 최대가 10^9, 사람 수도 10^9라서 최대는 10^9 * 10^9 = ..

알고리즘 2025.08.25

[Spring] Spring vs Spring Boot

현업에서 “Spring이랑 Spring Boot가 뭐가 다른가요?”라는 질문을 자주 받는다. 팀 내에서도 신규 웹 서비스는 Spring Boot로 시작하지만, 유지보수 등 대부분 프로젝트는 레거시/특수 환경에서 순수 Spring Framework만 쓰는 경우도 많이 남아 있다. 이 글은 내가 실제로 구분·선택하는 기준을 정리한 것이다. ✅ 1. 한 줄 정의Spring Framework: DI/AOP 등 핵심 인프라를 제공하는 애플리케이션 프레임워크(기반). 세밀 설정과 조립을 개발자가 주도.Spring Boot: Spring을 빠르게 쓰도록 자동설정(Auto-configuration), 스타터(Starter), 내장 서버 등을 제공하는 실행 편의 프레임워크 ✅ 2. 핵심 차이 구분 Spring Frame..

개발 2025.08.24

[백준 11967] 불켜기 Python

📘 문제 정보https://www.acmicpc.net/problem/11967 📝 문제 해석N × N 크기의 방이 있고, 각 방은 벽으로 막혀 있으며 상하좌우 인접한 방으로만 이동할 수 있다. (0, 0)에서 시작하여 이동 가능한 범위 내에서 불을 켤 수 있는 방을 최대한 켠 뒤, 전체 불이 켜진 방의 개수를 구하는 것이 목표다.특정 방에는 스위치가 있어서 다른 방의 불을 켤 수 있다. 불이 꺼져 있는 방은 방문할 수 없고, 불이 켜진 방이라도 인접한 방문한 방이 있어야 실제로 방문이 가능하다. 💡 풀이 아이디어이 문제는 다음 두 가지 조건을 동시에 고려해야 한다:불이 켜져 있어야 방문할 수 있다인접한 방문한 방이 있어야 실제로 이동(진입)할 수 있다이를 해결하기 위해 다음 두 개의 상태를 구분하..

알고리즘 2025.08.24

[백준 2170] 선 긋기 Python

📘 문제 정보https://www.acmicpc.net/problem/2170 📝 문제 해석N개의 선분이 주어진다. 각 선분은 좌표축 위에서 시작점과 끝점으로 정의되며, 여러 선분들이 겹칠 수 있다. 이 선분들을 모두 그었을 때, 실제로 그어진 총 길이를 구하는 것이 문제의 목표이다. 선분의 개수 N ≤ 1,000,000시작점과 끝점은 -10⁸ ~ 10⁸ 사이 정수→ O(N log N) 이하의 알고리즘이 요구됨 (완전탐색은 불가) 💡 풀이 아이디어이 문제는 선분을 정렬하고, 겹치는 구간을 제거하는 전형적인 그리디 문제이다. 선분들을 정렬한 뒤, 이전에 그어둔 선분과 겹치는 부분을 건너뛰면서 계산하면 된다. ✅ 핵심 전략입력된 선분들을 시작점을 기준으로 정렬하되, 시작점이 같으면 끝점을 기준으로 정렬..

알고리즘 2025.08.17

[Spring MVC] @RequestParam vs @RequestMapping

📝 상황프론트에서 URL과 파라미터를 맞춰 백엔드로 전송했는데, 서버에서 값을 못 받는 에러가 발생하였다. 코드를 보니 컨트롤러 메서드에 어노테이션이 빠져있었다. 이때, “@RequestParam과 @RequestMapping 중 무엇을 써야 할지 헷갈려 정리해 보았다.” ✅ 1. 어노테이션이란?소스 코드에 메타정보(설명) 를 붙여 프레임워크가 동작을 이해하도록 하는 표식.ex) @GetMapping(이 메서드는 GET 요청 처리), @RequestParam(이 파라미터는 쿼리스트링에서 받아라) 같은 역할 지정을 함. ✅ 2. @RequestMapping vs @RequestParam@RequestMappingURL(경로) + HTTP 메서드 를 어떤 컨트롤러 메서드가 처리할지 “매핑”실제 파라미터 값..

개발 2025.08.16

[백준 1707] 이분 그래프 Python

📘 문제 정보https://www.acmicpc.net/problem/1707 📝 문제 해석하나의 무방향 그래프에서 모든 정점을 두 개의 집합으로 나누되, 같은 집합 내의 정점들 사이에는 간선이 없어야 하는 조건을 만족하면 이 그래프를 이분 그래프(Bipartite Graph) 라고 한다.입력으로 주어지는 여러 개의 무방향 그래프 각각에 대해 이 조건을 만족하는지를 판별해야 한다. 💡 풀이 아이디어그래프를 두 가지 수(예: 1, 2)로 방문처리하며, 인접한 노드끼리는 다른 수가 되도록 만든다. 이 과정을 BFS로 수행하되, 이미 수가 정해진 정점과 인접한 정점을 다시 방문할 때, 수가 같다면 이분 그래프가 아님을 판별한다. ✅ 핵심 전략방문처리를 위해 visited 배열을 0(미방문), 1 또는 2..

알고리즘 2025.08.16

[Spring/Web] 400 에러, GET vs POST

📝 상황현업에서 게시글 작성 화면에서 내용을 길게 입력한 뒤 호출했더니 400 Bad Request 가 발생하였다. 디버깅 결과, 조회(SELECT)는 GET으로 호출해야 하는데 파라미터 VO에 content(긴 본문)가 포함되어 GET 요청의 주소(QueryString)가 비정상적으로 길어져 실패한 것이 원인이었다.→ content 파라미터를 제거하자 바로 정상 동작. ✅ 1. 400 에러란?클라이언트가 보낸 요청 형식이 서버가 이해할 수 없을 때 반환되는 상태 코드. 대표 원인:요청 문법/포맷 오류(깨진 인코딩, 잘못된 문자)비정상적으로 긴 URL/헤더(서버·프록시 제한 초과)필수 파라미터 누락, 타입 바인딩 실패 등포인트: 400은 “서버가 고장”이 아니라 “ 요청이 이상함”을 뜻함. ✅ 2. G..

개발 2025.08.12

[Maven] Maven, clean install, clean package 이란

업무 중 Git으로 협업하다 보면, 동료가 새 패키지/클래스를 올린 뒤 내가 pull 했을 때 프로젝트가 바로 실행되지 않거나 오류가 나는 일이 잦다. 이때 Run Configurations > Maven Build에서 빌드를 다시 돌리면 해결되곤 한다. 특히 clean package 와 clean install 중 무엇을 써야 하는지 헷갈리기 쉬워, 실제 현업 흐름에 맞춰 핵심만 정리했다. ✅ 1. “Maven/패키지/클래스”가 무엇이길래 빌드가 필요할까?메이븐(Maven): POM(XML) 기반의 빌드/의존성 관리 도구 패키지(package): 코드가 들어있는 폴더 구조/이름공간 (예: com.example.app).클래스 파일(.class): *.java를 컴파일해서 생기는 실행 파일(바이트코드)..

개발 2025.08.05