인기 글

[Springboot] JavaMailSender에서 NoSuchProviderException: smtp 에러 해결
·
트러블 슈팅
이번에 교내 개발 동아리의 해커톤에 서버 파트로 참가를 하였는데 학교 서비스를 만드는 기획을 했기 때문에 재학생 이메일 인증 로직을 구현해야 했다. 따라서, 스프링 프레임워크에서 지원하는 JavaMailSender를 사용하여 구현해보았다.그 과정에서 NoSuchProverException: smtp 라는 오류가 발생해서 이를 정리해보고자 이렇게 글을 쓰게 되었다.원인 분석기본적으로 NoSuchProverException: smtp는 JavaMailSender를 이용하여 이메일 서비스를 구현할 때, JavaMail 라이브러리가 SMTP 프로토콜 제공자(Provider)를 찾지 못했을 때 발생한다.보통 라이브러리에서 문제가 발생하는 부분은 Configuration 파일 또는 dependency 문제일 가능성..
프로세스보다 스레드의 컨텍스트 스위칭이 더 빠른 이유
·
OS
1. Context Switching의 정의 및 개념컨텍스트 스위칭(Context Switching)이란 CPU나 코어에서 실행 중이던 프로세스나 스레드가 다른 프로세스나 스레드로 교체되는 과정을 말합니다.컨텍스트(Context): 프로세스나 스레드의 현재 상태 정보를 의미합니다. 여기에는 CPU 레지스터 상태(Program Counter, Stack Pointer 등)와 메모리 상태가 포함됩니다.주체: 운영체제의 커널(Kernel) 내 스케줄러가 이 과정을 관리하고 실행합니다.필수성: 멀티태스킹 시스템에서 여러 작업이 동시에 실행되는 것처럼 보이게 하여 사용자 응답성을 높이고 자원을 효율적으로 사용하기 위해 필수적입니다.2. Context Switching의 발생 원인컨텍스트 스위칭은 주로 다음과 같은..
Stack vs ArrayDeque 동기화 & 성능 비교
·
JAVA
1. 권장되지 않는 자료구조, Stack출처: https://icandooit.tistory.com/63알고리즘 문제에서 스택이 필요할 때 Stack을 쓰면 되지만, Java에서는 보통 ArrayDeque가 더 빠릅니다. 이는 Stack이 내부적으로 Vector의 동기화(synchronized) 설계를 그대로 물려받았기 때문입니다. 알고리즘 풀이는 대부분 단일 스레드에서 돌기 때문에 이 동기화 비용은 굳이 안 써도 되는 비용이고, 누적되면 성능 차이가 체감되기 시작합니다.실제로 Java 공식문서나 Stack의 내부 코드를 들어가보면 LIFO stack을 위해 ArrayDeque를 사용하는 것을 권장하고 있는 것을 볼 수 있습니다.그 이유는 무엇일까요? 이는 Stack이 가진 한계인 Vector 상속과 그..
[백준] 14916번: 거스름돈 자바(Java)
·
그리디
문제 14916번: 거스름돈N원을 최소 개수의 5원과 2원으로 거슬러 주는 프로그램을 작성하시오.www.acmicpc.net"> 14916번: 거스름돈N원을 최소 개수의 5원과 2원으로 거슬러 주는 프로그램을 작성하시오.www.acmicpc.net 접근법첫 접근 (잘못된 접근)처음 접근을 n이 홀수일 때와 짝수일 때를 나눠서 했다.n이 짝수일때는 5를 최대로 나눠도 나눈 나머지가 2로 항상 나누어 떨어지기 때문에 상관이 없다.하지만, n이 홀수일 때는 5로 나누는 순간 2로 나누어 떨어질수 없기 때문에, 5를 한번 덜 나누어 줬다. 무슨 말이냐면, 예를 들어 n=13일 때, 5로 나누게 되면 몫이 2이고, 나머지가 3이다. 3은 2로 나누어 떨어질 수 없기 때문에 5로 나눈 몫을 1로 바꾸고 나..