JWT 토큰이란? - 구조부터 리프레시 토큰까지
JWT 토큰은 Json Web Token의 약자로, 웹 통신 시 클라이언트의 인증에 사용되는 JSON 형태의 토큰 값입니다. 최근 서버 측에서 토큰 인증 방식으로 요청을 보낸 클라이언트의 신원을 확인할 때 JWT 토큰을 많이 사용합니다. Session 기반 인증과는 다르게, JWT 토큰을 사용한 인증 시 서버 측에서 별도의 DB 조회가 필요 없어 효율적이라는 장점이 있습니다.
JWT 토큰은 Json Web Token의 약자로, 웹 통신 시 클라이언트의 인증에 사용되는 JSON 형태의 토큰 값입니다. 최근 서버 측에서 토큰 인증 방식으로 요청을 보낸 클라이언트의 신원을 확인할 때 JWT 토큰을 많이 사용합니다. Session 기반 인증과는 다르게, JWT 토큰을 사용한 인증 시 서버 측에서 별도의 DB 조회가 필요 없어 효율적이라는 장점이 있습니다.
Java 프로그래밍을 하다 보면 Object 클래스의 equals()와 hashCode() 메서드를 종종 보게 됩니다. 이 두 메서드는 단순해 보이지만, 올바르게 이해하고 사용하지 않으면 예상치 못한 버그를 유발할 수도 있습니다. 오늘은 이 두 메서드의 목적과 관계에 대해 알아보겠습니다.
두 실수 사이에는 무수히 많은 실수가 존재한다는 특성상, 이를 유한한 비트로 나타내려면 정수의 변환과는 다른 복잡한 규칙이 필요합니다. 이를 위해 개발된 대표적인 두 가지 방법인 고정소수점(Fixed-point) 과 부동소수점(Floating-point) 방식을 살펴보겠습니다.
전화번호 목록에서 어떤 번호가 다른 번호의 접두어인 경우가 있으면 `false`를, 그렇지 않으면 `true`를 반환하는 문제입니다. 완전탐색으로 모든 쌍을 비교하면 시간복잡도가 `O(n²)`이므로, 원소 개수가 최대 `100만 개`인 이 문제의 조건에서는 시간 초과가 발생합니다. 이를 해결하기 위해 사전순 정렬을 활용합니다.
전화번호 목록에서 어떤 번호가 다른 번호의 접두어인 경우가 있으면 `false`를, 그렇지 않으면 `true`를 반환하는 문제입니다. 완전탐색으로 모든 쌍을 비교하면 시간복잡도가 `O(n²)`이므로, 원소 개수가 최대 `100만 개`인 이 문제의 조건에서는 시간 초과가 발생합니다. 이를 해결하기 위해 사전순 정렬을 활용합니다.
종류가 중복되는 `N`마리의 폰켓몬 중에서 `N/2`마리를 골라, 가장 많은 종류 수를 반환하는 문제입니다. 종류 수의 최댓값을 구해야 하므로 먼저 중복을 제거할 필요가 있습니다. 단일값 저장만 필요하고, 순서 유지가 필요 없으므로 `HashSet`을 사용합니다.
참가자 명단과 완주자 명단을 비교하여, 딱 한 명 **완주하지 못한 사람**을 찾는 문제입니다. 두 명단 다 배열로 주어지는데, 완주자 명단을 순회하며 해당 완주자와 동일한 이름의 사람을 참가자 명단에서 지운다면 참가자 명단에 **마지막으로 남는 한 사람**이 완주하지 못한 사람이 됩니다.