[Spring] 리프래쉬 토큰 vs 블랙리스트 방식
·
Project/WhiteMonday
리프레시 토큰 삭제 방식 로그아웃 시 서버에서 사용자의 리프레시 토큰을 삭제하여 더 이상 새로운 액세스 토큰(access token)을 발급받을 수 없게 만드는 방식을 말합니다.클라이언트 측에서 리프레시 토큰을 폐기하고 서버에서도 이를 무효화 처리합니다.리프레시 토큰의 장점간단한 구현:서버에서 토큰을 단순히 삭제하면 되므로 구현이 상대적으로 쉽습니다.효율성:별도의 추가 데이터베이스(블랙리스트)를 유지할 필요가 없습니다.빠른 무효화:토큰이 삭제되면 즉시 무효화되어 추가적인 보안 우려가 적습니다. 리프레시 토큰의 단점 세션 관리 필요:서버에서 세션과 연계된 리프레시 토큰을 관리해야 합니다. 따라서 서버 부담이 증가할 수 있습니다.토큰 분실 문제:리프레시 토큰을 클라이언트가 잃어버리면 서버는 이를 즉시 알 수..
[Python] 선형 탐색(Linear Search) 이진 탐색 (Binary Search)
·
BackEnd/Python
선형 탐색 (Linear Search)  선형 탐색은 배열 또는 리스트의 처음부터 끝까지 차례대로 요소를 비교하여 원하는 값을 찾는 방법입니다.시간 복잡도는 O(n)입니다. 선형 탐색은 정렬되지 않은 데이터나 작은 데이터 셋에 간단히 적용 가능합니다. 예시 코드 def linear_search(arr, target): for i in range(len(arr)): if arr[i] == target: return i # 찾은 경우 인덱스 반환 return -1 # 찾지 못한 경우 -1 반환# 사용 예제arr = [4, 2, 7, 1, 9, 3]target = 7result = linear_search(arr, target)  이진 탐색 (Binary Sear..
[Python] 깊이 우선 탐색(DFS)와 너비 우선 탐색(BFS)
·
BackEnd/Python
DFS (Depth-First Search)깊이 우선 탐색은 한 경로를 끝까지 탐색한 후 다시 돌아와 다른 경로를 탐색하는 방식입니다. 스택 자료구조나 재귀를 사용하여 구현됩니다.  DFS는 모든 경로를 탐색하므로 그래프의 깊이가 깊을 경우 적합합니다. 예시 코드 def dfs(graph, start): visited = set() # 방문한 노드 집합 route = [] # 탐색 경로 stack = [start] # 스택에 시작 노드 추가 while stack: vertex = stack.pop() # 스택의 맨 위 노드를 꺼냄 if vertex not in visited: route.append(vertex) # 경로에 추가 ..
[GIT] 이전 커밋 삭제 - reset, revert 사용 (커밋 롤백)
·
Infra & DevOps/Git
프로젝트를 하다가 잘못 커밋이 되었습니다.이때, 커밋 롤백이 필요합니다. 이 경우 두 가지로 나뉘는데, reset과 revert가 있습니다. git revert revert은 기존 커밋을 되돌리는 새로운 커밋을 생성합니다.이전 기록은 유지되고, 새 커밋이 추가되므로 협업 환경에서 안전합니다.보통 특정 커밋을 되돌리고 싶지만, 전체 기록은 그대로 유지하고 싶은 경우 사용합니다. 사용 방법 우선, 아래 명령어로 log의 커밋 해시 값을 찾습니다.git log --oneline 되돌리고자 하는 커밋 해시 값을 입력합니다. git revert    git reset reset은 특정 시점으로 커밋 이력을 이동하거나 파일 상태를 되돌립니다.주로 커밋 이력을 수정하거나, 특정 변경 사항을 삭제하고 싶은 경우 사용합..
[Python] 해시 테이블 (Hash Table)
·
BackEnd/Python
Hash Table 해시 테이블(Hash Table)은 데이터를 빠르게 저장하고 검색할 수 있는 자료구조입니다.기본적인 아이디어는 데이터를 배열의 인덱스에 매핑하여 검색 시간을 최소화하는 것입니다.이 구조는 특히 데이터가 많을 때 매우 효율적입니다. 해시 테이블은 키(Key)를 값(Value)에 매핑할 수 있는 구조로 구성되어 있습니다. 키(Key) : 데이터를 구분하는 고유한 값값(Value) : 키에 해당하는 실제 데이터    키를 해시 함수를 통해 인덱스로 변환하고, 그 인덱스에 해당하는 위치에 값을 저장합니다. 해시 함수 (Hash Function) 해시 함수란 입력된 키를 해시 테이블의 인덱스로 변환하는 함수입니다.해시 함수는 다음과 같은 특성을 가져야 합니다. 충돌 최소화 : 서로 다른 키가 ..