전체 글 40

[Spring Boot] @Transactional이 안 먹는다고요?

이전에 봤던 기술 면접에서 간단한 코드 리뷰를 가졌는데 자바로 작성된 간단한 구조의 코드였다. 자세히 기억은 안나지만 @Transactional 에 관한 내용이었던걸로 기억한다. 대충 큰 서비스 클래스에 각각 트랜잭셔널 어노테이션이 붙어 있는 두 메서드가 있었고, 한 메서드에서 다른 메서드를 호출하는 코드 였던 것 같다. 해당 코드를 보고 잘못된 점을 말해달라고 했었는데... 면접관분이 굉장히 친절하셔서 충분히 생각할 시간을 주셨지만, 단 한마디도 하지 못했다 ㅎㅎ.. 그 당시 난 '트랜잭션' 이라는 개념에 무지했던 것 같다. 면접은 광탈했다. 당연한 결과 .. 트랜잭션 개념에 대해서 한마디도 못하는 신입을 누가 뽑아줄까?이 면접 뒤로 트랜잭션에 대해서 많이 찾아보고, 영상도 보고 이해가 안되는 부분도..

SpringBoot 2025.10.28

[JAVA] JVM 구성 요소와 역할

JVM JVM 은 Java Virtual Machine 의 약자로 자바 가상 머신이라고 불리운다.자바와 운영체제 (OS) 사이에서 중계자 역할을 하며, 자바가 운영체제 종류에 영향받지 않고 어디서든 실행될 수 있도록 해주는 소프트웨어이다.( = Write Once, Run Anywhere(한 번 작성하면, 어디서든 실행된다)) Java 코드는 컴퓨터가 바로 이해하지 못하는 고급 언어이다. 때문에 컴퓨터가 이해할 수 있도록 컴파일을 해주어야하는데, Java는 기계어로 바로 컴파일 되는게 아니라 먼저 자바 컴파일러에 의해 (javac) JVM 이 이해할 수 있는 언어인 자바 바이트코드 (.class) 로 변환된다. 💡 여기서 Java compiler는 JDK를 설치하면 bin 에 존재하는 javac.exe..

JAVA 2025.09.22

[Nest Js] NestJs 에서의 Validation 방식과 예외 처리

1. Validation웹 애플리케이션으로 전송되는 모든 데이터들을 검증하는 것은 매우 중요한 일이다.Nest 는 이러한 요청 데이터를 자동으로 검증하기 위한 몇가지 기본 내장 기능을 제공하는데, 바로 Pipe 이다.해당 파이프들의 종류는 대략 아래와 같다. ValidationPipeParseIntPipeParseBoolPipeParseArrayPipeParseUUIDPipe 여기서 ValidationPipe 는 클래스 유효성 검사 패키지와 선언적인 유효성 검사 데코레이터를 사용한다.파이프는 컨트롤러 라우트 핸들러가 처리하는 라우트에 대해서 작동하는데, 컨트롤러 단에서 해당 메서드로 전송되는 인수를 받아 처리한다.모든 변환과 유효성 검사가 이 때 수행되며, 컨트롤러는 이 변환과 검증이 수행된 값을 사용하..

NestJs 2025.09.19

[JAVA] 백준 11724 연결 요소 개수 - DFS

DFS ( 깊이 우선 탐색 )그래프 완전 탐색 방식 중 하나이다. 시작 노드에서 출발하여 탐색할 한 쪽 분기를 정하여 최대 깊이까지 탐색을 마친 후 다른 쪽 분기로 이동하여 다시 탐색을 수행하는 알고리즘이다.깊이 우선 탐색은 실제 구현 시 재귀함수를 통해 구현하므로 스택 자료구조를 이용한다. https://www.acmicpc.net/problem/11724 문제방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v)..

CS/Algorithm 2025.08.21

[JAVA] 백준 11268 절댓값 힙 - 우선순위 큐

https://www.acmicpc.net/problem/11286 문제절댓값 힙은 다음과 같은 연산을 지원하는 자료구조이다.배열에 정수 x (x ≠ 0)를 넣는다.배열에서 절댓값이 가장 작은 값을 출력하고, 그 값을 배열에서 제거한다. 절댓값이 가장 작은 값이 여러개일 때는, 가장 작은 수를 출력하고, 그 값을 배열에서 제거한다.프로그램은 처음에 비어있는 배열에서 시작하게 된다.입력첫째 줄에 연산의 개수 N(1≤N≤100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 0이 아니라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0이라면 배열에서 절댓값이 가장 작은 값을 출력하고 그 값을 배열에서 제거하는 경우이다. 입력되는 정수는 -231보다..

CS/Algorithm 2025.08.20