JWT (Json Web Token)- 웹 애플리케이션에서 사용자 인증 및 정보 교환을 위해 널리 사용되는 표준이다.JWT (Json Web Token)의 기본 구조Header (헤더)- 토큰의 타입 (일반적으로 "JWT")- 사용할 서명 암호화 알고리즘Payload (페이로드)- 실제 전달하고자 하는 데이터(사용자 ID, 역할, 만료시간 등)를 포함하며, 이를 클레임(Claim)이라고 한다.- 로그인 사용자 정보, 토큰 만료 시간 등이 포함된다.- JWT 토큰은 한번 생성 후 서버에서 관리하지 않으므로, 필히 토큰 만료 시간을 설정해야한다.- 생성된 토큰 정보가 유출되면 Decompile을 통해 정보를 볼 수 있으므로 개인 정보나 패스워드와 같은 정보는 담기지 않도록 유의해야한다.Signature (서..
Spring Scheduler란?- Spring Framework에서 제공하는 기능이다.- 일정에 따라 작업을 자동으로 실행할 수 있게 도와준다.- 주기적인 작업이나 정해진 시간에 수행해야할 작업을 처리하는 데 주로 사용된다.Spring Scheduler 특징다양한 스케줄링 옵션고정 주기(Fixed Rate)- 지정된 시간 간격으로 작업을 반복 실행한다.- 작업에 소요되는 시간이 지정된 시간보다 길어진다면 두 수행이 겹쳐서 발생할 수 있으므로, 이 작업을 고려하여 적용해야한다.고정 지연(Fixed Delay)- 이전 작업이 완료된 후 지정된 시간 간격으로 작업을 실행한다.Cron 표현식- 복잡한 주기를 설정할 수 있어 특정 시간, 날짜, 요일 등에 따라 작업을 실행할 수 있다.- 스케줄러 정규 표현식을 ..
Trie(트라이)란?- 트리형 자료구조이다.- 문자열 검색을 효율적으로 저장하고 탐색하기 위해 사용된다.- 중복해서 단어를 저장할 필요가 없다.Trie의 구조루트 노드- 트리의 최상위 노드이며, 보통 빈 값을 가진다.노드- 문자 : 노트가 나타내는 문자- 자식 노드 : 해당 문자의 다음 문자를 나타내는 자식 노트의 리스트- 종료 플래그 : 해당 노드가 문자열의 끝인지 여부를 나타내는 플래그Trie의 주요 연산삽입 (Insert)- 삽입하고자 하는 문자열의 한 글자씩 가져온다.- 트리의 루트부터 적합한 노드 위치를 찾아가면서 저장한다. 이 때, 없으면 새 노드를 생성한다.- 마지막 글자까지 삽입이 되면 isEnd 플래그로 단어의 끝을 표시한다.검색 (Search)- 입력받은 문자열을 한글자씩 파싱(Pars..
임베디드 레디스 (Embedded Redis)- Redis의 임베디드 버전이다.- 어플리케이션 내에 직접 통합하여 사용할 수 있는 형태이다.- 어플리케이션과 함께 배포 및 실행할 수 있어, 외부 서버에 의존하지 않고도 빠르게 데이터 저장 및 조회기능을 사용할 수 있다.- 테스트 환경을 구성하거나, 작으 규모의 프로젝트에서 Redis를 간편하게 할 수 있도록 해준다.- 실제 운영 환경에서의 경우, 별도의 서버에 Redis 서버를 구축하여 사용하는 것이 대중적이다.사용 목적- SpinLock을 활용하여 동시성 제어를 수행할 수 있다.* SpinLock (스핀락) : 임계 구역(critical section)에 진입이 불가능할 때 진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락- 동시성 제..
H2 Database란?자바 기반의 경량형 관계형 데이터베이스이다.H2 Database의 특징경량성H2 Database는 매우 가볍고 빠르다.메모리 내에서 실행할 수 있어 테스트 및 개발 환경에 적합하다.내장형 DBJava 애플리케이션에 쉽게 통합할 수 있는 내장형 데이터베이스입니다.별도의 서버 설치가 필요 없습니다.SQL 호환성표준 SQL을 지원하며, 다양한 데이터베이스와 유사한 문법을 사용한다.메모리 모드데이터를 메모리에 저장하여 빠른 성능을 제공하며, 테스트 용도로 자주 사용된다.웹 콘솔H2 Database는 웹 기반의 관리 콘솔을 제공하여 데이터베이스를 쉽게 관리할 수 있습니다.예제import java.sql.Connection;import java.sql.DriverManager;import j..
Lombok이란?- 자바 프로그래밍 언어에서 반복되는 코드의 양을 줄이고 생산성을 높이기 위해 사용되는 라이브러리이다.Lombok의 기능ㆍ@Setter, @Getter : Java Bean 규약에 있는 setter, getter를 자동으로 생성해준다.ㆍ@ToString : Object에 기본 구현된 ToString 대신 객체의 데이터를 보여주는 ToString을 자동으로 생성해준다.ㆍ@NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor : 객체 생성자를 자동으로 생성해준다.ㆍ@Data : Getter, Setter, ToString, Equals, hashCode 등 다양한 기능을 모두 제공해준다.ㆍ@Builder : 빌더 패턴을 자동 생성..