개요우리가 사진을 찍을 때 특정 순간을 포착하여 저장하듯이, 소프트웨어 개발에서도 '스냅샷'이라는 개념으로 특정 시점의 상태를 포착하여 저장합니다. Git에서는 commit으로, Maven/Gradle에서는 버전 관리로 이 개념이 구현되어 있습니다. 이번 글에서는 이 "SNAPSHOT"의 개념에 대해서 정리하고자 합니다. SNAPSHOT이란 ❓Snapshot은 특정 시점의 데이터 상태나 시스템 상태를 캡처한 것을 말합니다. 주로 다음과 같은 맥락에서 사용됩니다. Maven/Gradle에서의 SNAPSHOTversion = '1.0.0-SNAPSHOT' 개발 중인 버전을 의미매 빌드마다 새로운 버전으로 간주항상 최신 버전을 가져옴로컬 캐시를 무시하고 원격 저장소에서 확인데이터베이스 측면 특정 시점의 DB..
til
개요Docker를 사용하면서 가장 혼동되는 부분 중 하나가 RUN, CMD, ENTRYPOINT 명령어의 차이점입니다. 이 세 명령어는 모두 컨테이너와 관련된 명령을 실행하지만, 각각의 용도와 실행 시점이 다릅니다. 이번 글에서는 각 명령어의 특징과 사용 사례를 자세히 알아보겠습니다. RUN RUN ./gradlew :payment:clean :payment:build -x test --no-daemon이미지 빌드 단계에서 실행되는 명령어새로운 레이어를 생성하여 이미지에 포함됨패키지 설치, 파일 복사 등 이미지 생성을 위한 준비 작업에 사용CMD# JAR 파일 실행CMD ["java", "-jar", "/app.jar"]컨테이너 시작 시 실행되는 기본 명령어docker run 실행 시 덮어쓸 수 있음S..
자바의 실행 속도에 대한 의문점자바의 성능에 대해 궁금한 점이 있습니다. 자바는 JVM 위에서 동작하기 때문에 네이티브 언어에 비해 실행속도가 느리다고 알고 있습니다. 하지만 JVM은 JIT 컴파일러를 통해 실행 중에 바이트 코드를 네이티브 코드로 컴파일하여 성능을 향상시킨다고 합니다. 어떻게 실행 속도가 느리다는 단점을 극복하고 성능을 향상시키는 지 궁금했습니다. JIT 컴파일러를 통한 성능 최적화자바는 실제로 두 가지 과정을 거칩니다.초기에는 바이트코드를 인터프리터 방식으로 실행하기 때문에 네이티브 언어보다 느립니다.하지만 JIT(Just-In-Time) 컴파일러가 실행 중에자주 실행되는 코드(Hot Spot)를 감지하여해당 부분을 네이티브 코드로 컴파일이후에는 컴파일된 네이티브 코드를 직접 실행따라..
개요코딩 테스트를 준비할 때 입력을 받을 때 Scanner와 BufferedReader를 사용해서 입력을 받습니다. BufferedReader는 Scanner보다 속도가 빠르고 안전하다는 장점이 있지만, 문자열로만 입력을 받기 때문에 정수 사용 시 형변환이 필요하고 반드시 예외처리를 해야 합니다. 이번 글에서는 BufferedReader를 사용할 때 왜 예외처리가 필요한지, 그리고 어떻게 처리해야 하는지 알아보겠습니다. IOException이란 ❓IOException이란 입출력 작업 중 발생할 수 있는 예외를 의미합니다.발생하는 경우 파일을 읽거나 쓸 때네트워크를 통해 데이터를 주고받을 때키보드 입력을 받을 때BufferedReader에서 IOException가 필요한 이유 ❓ BufferedReade..