DB JOIN과 서브 쿼리 성능 차이
내용 추가하기
2025.04.06
no image
JAR vs WAR 배포 차이
JAR와 WAR 모두 Java 애플리케이션을 패키징하는 방식JAR (Java ARchive)독립적인 java 애플리케이션 패키징 -> 실행 가능한 jar 파일로 만들어져서 쉽게 실행 가능 클래스, 리소스, 라이브러리를 포함해서 배포와 전달 용이main 메서드를 포함해서 jvm에서 직접 실행 -> 별도의 웹 컨테이너나 서버 필요 X스프링 부트는 내장 서버를 포함해서 jar 파일로 패키징  동적인 웹 컨텐츠 생성 및 관리 제한적WAR (Web ARchive)java 웹 애플리케이션 패키징에 최적화웹 구성 요소 (jsp, html)와 웹 애플리케이션 실행을 위한 서블릿 컨테이너에 필요한 설정 파일, 라이브러리 포함 -> 한번에 배포 및 실행 가능 웹 컨테이너(서블릿 컨테이너)를 통해 애플리케이션 실행 -> 다..
2025.03.19
no image
IntelliJ Debugging 방법
지금까지 기능 단위로 개발하면서 바로 확인하는 과정을 거쳐서 그런지 console.log 또는 System.out.println으로도 에러를 잡을 수 있었다. 디버깅에 대해 배우게 되면서 더 효율적으로 에러를 해결할 수 있겠다라는 생각이 들었다.인텔리제이에서 사용해보긴 했지만, 다시 한번 정리해보려고 한다.디버깅소스 코드의 오류 또는 버그를 찾아서 수정하는 과정 디버깅 유래 : 컴퓨터 작동을 방해하는 나방을 발견하자, ‘시스템을 디버깅하고 있구나’라고 말했습니다.https://aws.amazon.com/ko/what-is/debugging/ 디버깅이란 무엇인가요? - 디버깅 설명 - AWS컴퓨터 프로그래밍은 추상적이고 개념적인 활동인 만큼, 버그와 오류가 발생하기 마련입니다. 컴퓨터는 전자 신호의 형태로..
2025.03.17
no image
Git 폴더 옮기기
https://steadi1y.tistory.com/302 Git 여러 개의 repository 하나로 합치기기존의 만들었던 repo들을 하나의 레포지토리로 합치려고 한다.처음 해봐서 열심히 정리해야지방법새로운 repo 생성 후 git 주소 복사하기 터미널에서 주소를 git clone 하기git initgit clone https://githubsteadi1y.tistory.com작업하고 있던 레포지토리에 기존 레포를 합쳤는데 폴더 구조가 마음에 들지 않아서, 변경하려고 한다.  study-record 안에 htmlcssjs 폴더가 들어가게 바꿀 예정!방법git mv [a 폴더 이름] [b 폴더 이름]git mv htmlcssjs study-record 만약 깃허브에서 바뀌지 않았다면 commit pus..
2025.03.14
no image
Java 보안적으로 Random보다 SecureRandom을 사용하자
프로젝트 리팩토링하면서 문자 인증을 위해 난수를 생성하려고 찾아보다가, SecureRandom을 알게 되었다.Random만 사용해봤는데, 차이점이 무엇인지 정리해보려고 한다.Random무작위로 생성되는 것이 아니라 의사 난수가 생성된다.의사 난수 : 난수처럼 보이게 하기 위해 알고리즘을 사용해서 규칙적인 난수를 생성 초기 시드(seed) 를 기반으로 정해진 알고리즘을 통해 난수를 생성하기 때문에 예측 가능초기 시드 : 난수 생성기의 시작값 -> 초기값(Seed)을 설정하면 같은 시드 값에서 동일한 난수들이 나오게 됩니다. 공식 문서에 적혀있다.Instances of java.util.Random are not cryptographically secure. Consider instead using Secu..
2025.03.12
no image
Git 여러 개의 repository 하나로 합치기
기존의 만들었던 repo들을 하나의 레포지토리로 합치려고 한다.처음 해봐서 열심히 정리해야지방법새로운 repo 생성 후 git 주소 복사하기 터미널에서 주소를 git clone 하기git initgit clone https://github.com/name/reponame.git 해당 폴더로 이동cd reponame 지금 레포들을 합치면 새로 만든 레포에서 커밋 또는 푸시가 없어서 에러가 발생working tree has modifications. cannot add. 테스트 커밋 푸시하기git add .git commit -m "test commit"git push origin main 기존 레포지토리 합치기git subtree add --prefix=기존레포지토리이름 기존레포지토리주소 기존레포의브랜치이..
2025.03.09
no image
ResponseEntity 사용하는 이유와 @ResponseBody
개념Spring에서 HTTP 응답을 표현하는 클래스응답의 상태 코드 (status code), 헤더 (headers), 바디 (body) 모두 사용 가능해서, 이를 통해 클라이언트에게 세밀한 http 응답 제어 가능사용 이유http 상태 코드 제어 : 단순히 데이터를 반환하는 것이 아니라, 200 OK, 400 Bad Request, 404 Not Found 같은 상태 코드를 명확하게 설정 가능HTTP 헤더를 설정 가능예시생성자 사용  @GetMapping("/hello") public ResponseEntity getHelloMessage() { return new ResponseEntity("Hello, World!", HttpStatus.OK); } 정적 팩토리 메서드 ..
2025.03.06
no image
VSCODE 한글 두 번 입력 오류 해결하기
문제VSCODE에서 COMMIT 한글로 작성하면 마지막 글자가 2번 입력되는 오류가 계속 발생했다.해결 방법윈도우 설정 -> 시간 및 언어 -> 언어 및 지역 -> 옵션 -> Microsoft 입력기 -> 호환성 켬 이제 제대로 커밋된다.참고https://velog.io/@nuyhes/%EB%AC%B8%EC%A0%9C%ED%95%B4%EA%B2%B0-%ED%95%9C%EA%B8%80-%EC%9E%85%EB%A0%A5-%EC%8B%9C-%EB%A7%88%EC%A7%80%EB%A7%89-%EA%B8%80%EC%9E%90%EA%B0%80-2%EB%B2%88-%EC%83%9D%EA%B8%B0%EB%8A%94-%EC%98%A4%EB%A5%98
2025.03.02
no image
전화번호 문자 인증 구현하기 CoolSMS
리팩토링하고 있는 사이트에서 회원가입 시 현재는 중복 확인 기능만 있다.그래서 문자 인증 기능을 추가해보려고 한다. 문자 인증 api에는 coolsms, naver cloud platform의 simple & easy notification service 등이 있다.가격 비교를 했을 때 네이버에서 매달 50건 이하까지는 무료라서, ncp를 사용하기로 결정했는데, 인증이 계속 실패해서 coolsms를 사용하기로 결정개발 환경spring boot, java, mavenCoolSMS 설정개발/연동 -> api key 관리 -> api key 생성하기 ip 제한을 통해 다른 사람이 api key를 사용하지 못하게 한다.ip 주소 확인하는 사이트 maven 의존성 추가 net.nurigo sdk ..
2025.02.27