목록분류 전체보기 (155)
Rootable의 개발일기
세션 방식으로 구현했던 SSR 서버에 JWT를 적용하면서 느낀 점을 정리하고자 한다. 💥 문제점 🚨 Stateless 하지 않다. SSR 서버는 매 요청마다 비즈니스 로직을 수행하고 컨트롤러를 통해 렌더링 한다. 이것은 매 요청마다 인증 토큰을 생성한다고 해석할 수 있다. Stateless 특징을 가지는 JWT를 사용할 때 서버의 발급은 1회고, 그 이후에는 검증만 수행한다. 결과적으로 Stateless 하지 않다고 볼 수 있다. JWT 방식은 클라이언트 스토리지에 저장되기 때문에 쿠키를 통해 구현할 수 있다. 아래 코드는 세션 방식과 쿠키를 통해 JWT를 구현한 코드이다. @PostMapping("/login") public String login(@Valid @ModelAttribut..
📌 허프만 알고리즘이란? 압축 단위마다 문자의 출현 빈도를 조사하여 빈도가 높은 순서대로 비트 수가 적은 부호를 부여함으로써 데이터를 압축하는 방식 즉, 많이 사용된 문자는 더 적은 비트로 나타내고, 적게 사용된 문자는 더 많은 비트를 사용하여 효율적으로 문자열을 나타내는 방식을 말한다. 🧩 문자 압축 예제 AAAAAABBBBCDD => 'A' 6개, 'B' 4개, 'C' 1개, 'D' 2개 🏃♂️ 항 합치기 가장 적은 사용 빈도를 가진 두 항을 묶고 그 합을 적어준다. 이와 같이 한번 더 묶는다. 마지막 남은 A까지 묶어주면 다음과 같은 그림이 나온다. 🏃♂️ 비트 부여하기 루트 노드를 기준으로 왼쪽으로 한번 가면 0, 오른쪽으로 가면 1이라고 하겠다. A ➡ 0B ➡ 10C ➡ 110..
❓ 람다식이란? 메서드를 하나의 식(expression)으로 표현한 것 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 '익명 함수(anonymous function)'라고도 한다. int method() { return (int) (Math.random() * 5) + 1);} 위의 메서드를 람다식으로 바꾸면 다음과 같다. int[] arr = new int[5];Arrays.setAll(arr, (i) -> (int) (Math.random() * 5) + 1); 🎯 람다식의 장점 ✔ 간결한 코드 모든 메서드는 클래스에 포함되어야 하므로 클래스를 새로 만들어야 하고, 객체도 생성해야만 비로소 메서드를 호출할 수 있다. 그러나 람다식은 이러한 과정 없이 오직 람다식 자..
❓ static 이란? 모든 인스턴스에서 공유되는 static 변수 자바에서 static 키워드는 클래스 레벨의 변수나 메서드, 블록을 정의할 때 사용된다. 이는 인스턴스 생성 없이도 접근 가능하며, 모든 인스턴스에서 공유된다. static 변수는 클래스가 로드될 때 Method 영역에 할당되기 때문에 프로그램 시작부터 종료까지 메모리에 유지된다. 이러한 특성으로 인해 모든 인스턴스가 공유하여 사용할 수 있는 변수가 필요할 때 유용하다. 🔎 static 변수 static 변수는 클래스 레벨에서 선언되며, 모든 인스턴스에 의해 공유된다. 그래서 특정 데이터를 모든 인스턴스가 공유해야 할 때 유용하다. 다음은 static 변수 사용 예시다. public class Calculator { public ..