[개발 일기] 2025.01.19 - JWT(JWS, JWE)
·
개발 일기
개요 난 프로젝트에서 사용자의 인증・인가 기능에 대부분 JWT를 사용했다.  그 이유는 JWT의 간편함에 있다. 서버 입장에선 사용자의 정보를 따로 보관할 필요 없고(Refresh Token 예외), 토큰 내부엔 만료 일자와 사용자의 정보가 모두 포함되어 있기 때문이다.  하지만 JWT의 보안적인 단점도 존재하는데, 이 단점을 극복할 수 있는 기술이 JWE이다. (실제 현업에서 JWE가 사용되는 경우는 드뭄)  이처럼 인증・인가에 사용할 수 있는 토큰이 다양하다. 오늘은 그러한 토큰들에 대해 정리해 보자.   JWT 단점 JWE는 JWT의 암호화 기능을 추가한 기술이다. 이와 같이 따로 암호화된 토큰 기술이 있는 이유는 JWT에 암호화 기능은 없기 때문이다.  보통 JWT 토큰은 아래와 같은 문자열처럼 ..
[개발 일기] 2025.01.18 - Collectors
·
개발 일기
개요 요즘 자바 Stream 문법을 공부하고 있다.  그런데 Stream을 사용해 List 나 List , List 를 리턴할 때, 꼭 마지막에. collect(Collectors.toList()); 을 붙인다. 아래는 예시 코드이다. List streamList = list.stream() ... .collect(Collectors.toList()); 여기서 궁금한 점은 저 Collectors는 무엇인가이다.  그래서 오늘 Collectors 에 대해 정리해 봤다.   Collectors  위의 이미지는 Collectors 클래스에 달린 주석이다.  저 문장을 해석하면 다음과 같다. Collectors의 구현체들은 Collection에 요소를 축..
[개발 일기] 2025.01.17 - SSL
·
개발 일기
개요 위의 이미지를 처음으로 마주한 순간은 SSAFY에서 서버를 배포했을 때였다.  ‘이 사이트에 대한 연결은 안전하지 않습니다.’와 같은 경고창이 뜨는 이유는 위의 연결이 http 연결이기 때문이다.  웹 브라우저 입장에선 현재 클라이언트와 서버의 통신에 보안 계층이 추가되지 않았기 때문에 탈취의 위험이 있다고 판단한 것이다.  그렇다면 왜 기본 http 연결은 안전하지 않은지, 이 문제 해결 방법은 무엇인지 한번 정리해 보자.  참고로 현업에서 사용되는 대부분의 SSL은 TLS을 의미한다. 하지만 많은 분들이 TLS를 SSL이라고 표현해 나도 자연스럽게 SSL이라는 표현을 많이 사용하게 되었다.. 이 일기에서 나오는 SSL은 다 TSL이라고 생각하고 봐도 무방하다.   SSL (Secure Socke..
[개발 일기] 2025.01.16 - B+Tree
·
개발 일기
개요 어젠 B-Tree에 대한 일기를 썼다.  오늘은 B-Tree의 단점을 보완한 자료구조인 B+Tree에 대해 정리해 보자.   B+Tree B+Tree는 현업에선 데이터베이스의 인덱스에 주로 사용된다.  대부분의 대부 구조는 B-Tree와 유사하다.  하지만 크게 두 가지 다른 점이 있다.내부 노드는 키만 저장하고, 데이터는 리프 노드에만 저장리프 노드는 데이터를 저장하는 곳으로, 리프 노드들은 연결 리스트 형태로 서로 연결  내부 노드는 키만 저장하고, 데이터는 리프 노드에만 저장 아래의 B+Tree 구조를 보면 리프노드에만 데이터가 저장되어 있는 것을 볼 수 있다.  이러한 구조의 장점은 크게 세 가지이다.리프 노드에만 데이터가 저장되고, 나머지 내부 노드는 키만 저장하기 때문에 기존의 B-Tre..
[개발 일기] 2025.01.15 - B-Tree
·
개발 일기
개요 어젠 이진 탐색 트리에 대한 일기를 썼다.  오늘은 이진 탐색 트리의 단점을 보완한 자료구조인 B-Tree에 대해 정리해 보자.   B-Tree B-Tree는 데이터베이스 및 파일 시스템과 같은 대규모 데이터 구조에서 데이터를 효율적으로 관리하기 위해 설계된 트리형태의 자료구조이다.  B-Tree의 탄생 이유는 위에서 언급했었던 것처럼 이진 탐색 트리의 단점을 생각하면 된다.  이진 탐색 트리의 단점은 어제 일기에서 작성한 것을 조금 언급하자면 균형 잡힌 데이터가 삽입된다면 아래의 이미지처럼 트리가 한쪽으로 치우친 선형 구조(일종의 연결 리스트)로 변형된다. 하지만 이진트리의 경우 데이터의 삽입, 삭제 시 트리 구조를 재조정하여 항상 균형 잡힌 상태를 유지한다.  그 방법은 아래에서 더 자세히 설명..
[개발 일기] 2025.01.14 - 이진 탐색 트리 (BST)
·
개발 일기
개요 데이터베이스에 대한 기술 면접 준비를 하다가 B-Tree, B+Tree가 이진 탐색 트리의 단점을 보완하기 위해 개발되었다는 걸 봤다.  B-Tree, B+Tree를 이해하기 위해선 우선 이진 탐색 트리를 알고 있어야 더 쉽게 이해할 수 있을 것 같아서 정리하게 되었다.   이진 탐색 트리 이진 탐색 트리는 각 노드가 최대 두 개의 자식을 가지며, 왼쪽 자식에는 부모 노드보다 작은 값이, 오른쪽 자식에는 부모 노드보다 큰 값이 저장되는 트리 구조이다.  이러한 구조가 모든 노드에 적용되기 때문에 항상 정렬된 상태를 유지할 수 있다.  이렇게 정렬된 트리에서 찾고자 하는 노드를 탐색할 땐 Up-Down을 진행하며, 노드들의 수를 줄여가며 찾을 수 있다.  만약 이진 탐색 트리에 100개의 노드가 있다..