반응형

Knowledge 109

Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument

❓문제 상황 테스트 실행 시 에러가 발생했다. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jpaAuditingHandler': Cannot resolve reference to bean 'jpaMappingContext' while setting constructor argument JpaAuditingHandler 빈이 생성될 때 발생하는 에러이다. - 참고자료: https://velog.io/@suujeen/Error-creating-bean-with-name-jpaAuditingHandler EnableJpaAuditing -> JPA 관련 빈으로 @WebMvcTest 어노테이션을 붙인..

@AuthenticationPrincipal 에 null 값이 들어오는 에러

❓문제 상황 자꾸 @AuthenticationPrincipal 어노테이션에 null 값이 들어와 NullPointerException 에러가 발생하는 것이였다. 💡 디버깅 과정  위의 과정에서 jwtTokenProvider.getAuthentication(token); 을 통해 생성된 authentication 객체에정상적으로 값이 생성되는 것을 볼 수 있다. 따라서SecurityContextHolder.getContext().setAuthentication(authentication);메서드도 정상적으로 실행되었다.  AuthenticationPrincipal 어노테이션을 통해 얻은 객체 User이 null이 되었다.따라서 @AuthenticationPrincipal 어노테이션을 천천히 따라가 보았다..

유니온 파인드 알고리즘 (Union-find)

유니온 파인드 알고리즘이란?💡 상호 배타적 집합, Disjoin-set(서로소 집합) 이라고도 부른다. 여러 노드가 존재할 때 어떤 두 개의 노드를 같은 집합으로 묶어 주고, 어떤 두 노드가 같은 집합에 있는지 확인하는 알고리즘이다. 왜 이름이 유니온 파인드 인가?유니온 파인드 알고리즘은 두 가지의 연산을 진행한다. 이 연산 과정을 Union, Find 라고 한다.Union : 여러 노드가 있을 때 특정 2개의 노드를 연결해 1개의 집합으로 묶는 연산이다, 즉 서로 다른 두 개의 집합을 하나의 집합으로 병합하는 연산을 말한다. 이 연산은 합집합 연산과 같다.Find : 두 노드가 같은 집합에 속해 있는지를 확인하는 find 연산이다.크루스칼 알고리즘과 프림 알고리즘을 알기 위해서는 유니온 파인드 알고리..

JWT 토큰 사용 시 인증이 되지 않았다는 문제 발생

🚨 문제로그인은 정상적으로 작동하여 JWT accessToken까지 정상적으로 생성되었다.하지만 생성된 AccessToken을 사용하려고 할 때 문제가 발생했다.console창에도 어떠한 로그가 나타나지 않았고 filter에서 걸러진다는 것을 짐작했다. Debug를 하면서 천천히 다시 과정을 따라가 보았다.  더보기UsernamePasswordAuthenticationToken [Principal= eyJhbGciOiJIUzM4NCJ9.eyJzdWIiOiJ0ZXN0MSIsImF1dGgiOiJVU0VSIiwiaWF0IjoxNzE5NTYwMjIzLCJleHAiOjE3MTk1NjM4MjN9.ZyzX9XetqAteu81p2K3N5vYTWHmuBorxODTZ_piHYJreGKseNk096O5hRUGKP9jm, ..

최단 경로 알고리즘

최단 경로 알고리즘정점으로부터 정점까지의 모든 경로 중에서 가장 비용이 작은 경로 (1) Dijkstra(정점을 고르는 정점 중심)출발 정점으로부터 다른 모든 정점까지의 거리를 선택된 정점을 지나서 가는 경우와 직접 가는 경우 중 최솟값을 갱신해가면서 가장 가까운 정점을 하나씩 선택된 정점에 편입시켜가며 최단 경로를 갱신음의 가중치를 허용하지 않음기능특징시간 복잡도(노드 수 : V, 에지 수 : E)출발 노드와 모든 노드간의 최단 거리 탐색에지는 모두 양수O(ElogV)public class Dijkstra_Test { static class Edge implements Comparable { int v, weight; public Edge(int v, int weigh..

유클리드 호제법

유클리드 호제법은 두 수의 최대 공약수를 구하는 알고리즘 입니다.  유클리드 호제법의 핵심 이론유클리드 호제법을 수행하려면 먼저 MOD 연산을 이해하고 있어야 한다. MOD 연산이 최대 공약수를 구하는데 사용되는 핵심 연산이기 때문이다.연산기능예제MOD두 값을 나눈 나머지를 구하는 연산10 MOD 4 = 2 // 10 % 4 = 2 MOD 연산으로 구현하는 유클리드 호제법큰 수를 작은 수로 나누는 MOD 연산을 수행한다.앞 단계에서 작은 수와 MOD 연산 결괏값(나머지)으로 MOD 연산을 수행한다.2단계를 반복하다가 나머지가 0이 되는 순간의 작은 수를 최대 공약수로 선택한다.

JWT (Json Web Token) 이란

JWT 토큰이란?JWT(Json Web Token)이란 Json 객체에 인증이 필요한 정보들을 담은 후 비밀키로 서명한 토큰으로, 인터넷 표준 인증 방식이다. 공식적으로 인증(Authentication) & 권한부여(인가, Authorization) 방식으로 사용된다. JWT 프로세스[로그인 전 과정(before)]사용자가 아이디와 비밀번호 혹은 소셜 로그인을 사용하여 서버에 로그인 요청을 보낸다.서버는 비밀키를 사용해 JSON 객체를 암호화한 JWT 토큰을 발급한다.JWT를 Header에 담아 클라이언트에 보낸다.[로그인 이후 과정]클라이언트는 JWT를 로컬에 저장해놓는다.API 호출을 할 때마다 Header에 JWT를 담아 보낸다.서버는 헤더를 매번 확인하여 사용자를 인증하고 API에 대한 응답을 보..

Knowledge/이론 2024.06.30

오일러 피

오일러 피 함수 P[N]의 정의는 1부터 N까지 범위에서 N과 서로소인 자연수의 개수를 뜻한다. 오일러 피의 핵심 이론구하고자 하는 오일러 피의 범위만큼 자기 자신의 인덱스값으로 초기화한다.2부터 시작해 현재 배열의 값과 인덱스가 같으면(= 소수일 때) 현재 선택된 숫자(K)의 배수에 해당하는 수를 배열에 끝까지 탐색하며 P[i] = P[i] - P[i] / K 연산을 수행한다. (i는 K의 배수)배열의 끝까지 2번 과정을 반복하여 오일러 피 함수를 완성한다.서로소란?두 수 사이의 관계에서 공통되는 약수가 최대 1이며 1밖에 없는 수를 뜻한다.

소프트웨어 아키텍처

모놀리틱 아키텍처모놀리틱 아키텍처는 전통적인 소프트웨어 개발 모델로, 전체 애플리케이션을 하나의 통합된 패키지로 개발, 배포하는 방식이다. 모든 시스템은 하나로 연결돼 관리된다.  장점손쉬운 배포실행 파일 또는 디렉터리가 하나여서 배포가 더 쉽다.개발하나의 코드 베이스로 애플리케이션을 구축하여 개발이 더 쉽다.성능중앙 집중식 코드 베이스 및 레포지토리에서는 대부분 하나의 API만으로 마이크로서비스에서 여러 API가 수행하는 것과 동일한 기능을 수행할 수 있다.테스트 간소화하나의 중앙 집중식 장치이므로 분산된 애플리케이션보다 end-to-end 테스트를 더 빠르게 수행할 수 있다.간편한 디버깅모든 코드가 한 곳에 있으므로 요청을 따라가서 문제를 찾기가 더 쉽다.단점느린 개발 속도대규모 모놀리식 애플리케이션..

Knowledge/이론 2024.06.27

너비 우선 탐색 (BFS : Breadth-First Search)

너비 우선 탐색 BFS는 그래프를 완전 탐색하는 방법 중 하나로, 시작 노드에서 출발해 시작 노드를 기준으로 가까운 노드를 먼저 방문하면서 탐색하는 알고리즘이다. 기능특징시간 복잡도 (노드 수 : V, 에지 수: E)그래프 완전 탐색FIFO 탐색Queue 자료구조 이용O(V+E)  너비 우선 탐색의 핵심 이론1. BFS를 시작할 노드를 정한 후 사용할 자료 구조 초기화하기2. 큐에서 노드를 꺼낸 후 꺼낸 노드의 인접 노드를 다시 큐에 삽입하기3. 큐 자료구조에 값이 없을 때까지 반복하기

반응형