[Database/TIL] Flyway 파일명 컨벤션 (템플릿화)
·
Database/TIL
오늘의 추천 곡 "> 소스 코드와 마찬가지로 DB의 형상 관리도 중요한 화두다. CI/CD를 준비하는 과정에서 DB로 인해 EC2가 뻗지 않게끔 하기 위한 방법을 공부해보다가 알게된 기술인 Flyway에 대해서 설명해보고자 한다. 아니 사실은 Flyway에 대한 설명이라기 보다는 일종의 세팅 방법을 공유해보고자 한다. Flyway를 사용할 때 생길 수 있는 문제보통 처음 Flyway를 쓰면 순차적인 숫자를 사용한다.V1__init.sqlV2__add_user.sql혼자 개발할 땐 문제가 없지만, 여러 팀원들이 각자의 기능을 개발한다면? 팀원 A: "회원 기능 때문에 V3__add_member.sql 만들어서 푸시했어요!"팀원 B: "어? 저도 게시판 때문에 V3__add_post.sql 만들었는데요?..
[Spring/TIL] 전역 예외 처리(@RestControllerAdvice) vs try-catch, 개념 확실히 잡기
·
Spring/TIL
오늘의 추천 곡"> 백엔드 개발을 하다보면 느끼는 게 있는데, 항상 최적화라던가 중복을 피한다거나 효율적인 로직을 짜는 게 중요하다고 생각은 한다. 물론 모든 걸 완벽하게 지키기란 쉽지 않지만 하나씩 하나씩 알아가고 배워가는 과정에서 성장하고 있음을 느끼는 것 같다. 아무튼 오늘은 예외처리에 관한 이야기를 해보고자 한다.처음에는 컨트롤러단에서 try-catch로 처리하는 게 당연한 줄 알았다. 그도 그럴게 대학교 4년간 많은 서적과 각종 AI가 그렇게 써왔기 때문에 그게 당연한 건줄 알았는데 ResponseEntity에 대해서 찾아보다가 스프링의 @RestControllerAdvice에 대해서 알게되었고, 전공자이지만 이런 걸 몰랐다는 나를 자책하면서 글을 작성한다.....@PostMapping("/l..
[Spring/TIL] @RequestParam, @ModelAttribute, @RequestBody 차이
·
Spring/TIL
사실 이 내용을 어렴풋이 알고는 있었지만, 남들에게 술술 설명할 수 있는 정도로 잘 아냐고 물어봤을 땐 그닥... 이라고 할 게 분명해서 글로 한 번 정리해보고자 했다. Spring MVC에서 요청을 받을 때 사용하는 어노테이션은 여러 개가 있지만, 이 차이를 이해하는 데 필요한 개념은 되게 단순하다. 서버는 요청을 받으면 먼저 ‘종이 한 장’을 만든다 이 종이 한 장으로 @RequestParam, @ModelAttribute, @RequestBody를 한 번 설명해보겠다. 미리보기 흐름 설명클라이언트가 요청을 보낸다. 쿼리 파라미터 방식GET /login?email=a@test.com&password=1234 Form Data 방식POST /loginContent-Type: application/x..
[JAVA-TIL] JWT, JJWT 구현
·
Java/TIL
JWT, JJWT란?JWT는 Json Web Token의 약자로, Json 형식의 데이터로 이루어진 인증 티켓 같은 거라고 생각해볼 수 있다. 위 사진과 같이 JWT는 Header, Payload, Signature로 이루어져 있다. 각 부분에는 위 사진과 같은 내용(키-값 쌍)들이 포함되어있다. [Header]alg서명(Signature)에 사용할 암호화 알고리즘 (예: HS256, RS256 등)typ토큰의 타입 (대부분 "JWT")이 객체는 Base64URL 방식으로 인코딩되어 JWT의 첫 번째 부분을 이룬다. [Payload]sub토큰의 주제(Subject, 주로 사용자 ID)name사용자 이름role권한(Role)iat토큰 발급 시각 (issued at)exp토큰 만료 시각 (expiration..
[JAVA] 최단 거리 알고리즘 - 다익스트라 <Dijkstra>
·
Algorithm
최단 거리 알고리즘 - 다익스트라 다익스트라 알고리즘은 흔히 알고있듯, 최단 거리를 구하는 데 초점이 맞춰진 알고리즘이다.우리가 아는 유명한 최단 거리 알고리즘이 무엇이 있을까? 아마 BFS가 떠오를 것인데, BFS와의 차이점은 거리(가중치)가 1이 아니라는 점이다.즉, BFS는 현재 칸에서 다음 칸으로 이동하면 거리(가중치)가 1이 증가하는데 반해 다익스트라는 임의의 가중치가 존재한다. 학문적으로는 가중치가 있는 그래프에서 하나의 시작 정점으로부터 모든 정점들까지의 최단 거리를 구하는 알고리즘이라고 설명할 수 있겠다. 또 다른 이야기를 해보자면, 이전에 업로드했었던 Prim 알고리즘과도 다소 유사한 모습을 보인다.프림 알고리즘와 다익스트라 알고리즘 모두 PriorityQueue를 사용하고 다소 그리디하..
[JAVA] 최소 신장 트리 - Prim 알고리즘 <Minimum Spanning Tree - Prim>
·
Algorithm
최소 신장 트리 - MST(Minimum Spanning Tree) 최소 신장 트리의 개념은 아래 글의 초입에 서술되어 있다.2025.09.11 - [Algorithm] - [JAVA] 최소 신장 트리 - Kruskal 알고리즘 " data-og-description="최소 신장 트리 - MST(Minimum Spanning Tree)최소 신장 트리란, 여러 스패닝 트리 중 간선들의 가중치의 총합이 가장 작은 트리를 이야기한다. 그렇다면 최소 신장 트리를 알려면 신장 트리(Spanning Tree)" data-og-host="bitbard-dongni.tistory.com" data-og-source-url="https://bitbard-dongni.tistory.com/47" data-og-url="h..
[HTTP] sendRedirect() vs forward() 차이점 간단 비교
·
HTTP/TIL
sendRedirect() vs forward()웹 개발을 하다보면 특정 페이지로 이동시키는 기능을 구현해야 하는데, 그 중 대표적으로 이 두가지 함수들이 존재한다. 사실 이정도는 개발 입문 일주일차쯤에 알게되는 내용이겠지만.. 개발 블로그를 시작했음에도 아직 뭔가 거창한 걸 올리기에는 실력이 부족하기 때문에.. 밑바닥부터 쌓아 올라가는 느낌으로 한 번 업로드해보려고 한다. 아 근데 물론 리다이렉션 되는거 vs 안되는 거 처럼 막 너무 간단하고 추상적인 비교 말고 좀 더 깊게 비교해보려고 한다. 현재 서블릿을 학습 중이므로 서블릿을 기준으로 코드를 작성했지만, HTTP 웹 개발 전반에 해당되는 개념임을 명심하자. sendRedirect() @Override protected void doGet(Http..
[Docker] Virtualization support not detectedDocker Desktop requires virtualization support to run. Contact your IT admin to enable virtualization or check system requirements. 오류 해결
·
Docker/TIL
도커 실습을 위해 docker desktop 프로그램을 실행해보았는데 아래와 같은 오류가 발생했다. 내용을 해석해보면, PC에서 하드웨어 가상화(virtualization)가 꺼져 있어서 Docker Desktop이 아예 실행되지 않는 상태이다. 이를 해결하기 위해서는 일단 PC의 가상화 기능을 켜주어야 하는데, 우선 가상화가 켜져있는지를 확인하려면 Windows PowerShell에서 다음과 같은 명령어를 입력해보면 된다. systeminfo 출력 결과를 살펴보면,Virtualization Enabled In Firmware: Yes → BIOS에서 가상화(VT-x/AMD-V) 켜져 있음VM Monitor Mode Extensions: Yes → CPU가 가상화 기능 지원Second Level Add..
[JAVA] 최소 신장 트리 - Kruskal 알고리즘 <Minimum Spanning Tree - Kruskal>
·
Algorithm
최소 신장 트리 - MST(Minimum Spanning Tree)최소 신장 트리란, 여러 스패닝 트리 중 간선들의 가중치의 총합이 가장 작은 트리를 이야기한다. 그렇다면 최소 신장 트리를 알려면 신장 트리(Spanning Tree)를 알아야 하는데, 스패닝 트리(신장 트리)란 모든 정점을 연결했을 때 간선의 수가 V - 1개이고 사이클이 존재 하지 않는 무방향 그래프를 의미한다. 모든 정점이 연결되었고, 5개의 정점에 대해서 4개의 간선만을 가지고 있으며, 사이클이 존재하지 않는 무방향 그래프임을 볼 수 있다.간선에 적혀있는 숫자들은 간선의 가중치를 의미한다. 위 그림의 경우, 기존에 1번 정점과 3번 정점을 연결하는 가중치 3의 간선대신 2번 정점과 3번 정점을 연결하는 가중치 2의 간선을 선택해서 ..