목록분류 전체보기 (157)
Rootable의 개발일기
📌 정의 ✅ 직렬화(Serialization) 데이터를 디스크에 저장하거나, 네트워크 통신에 사용하기 위한 형식으로 변환하는 것 ✅ 역직렬화(Deserialization) 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 변환하는 것 ❓ 직렬화가 필요한 이유 자바에는 원시타입(Primitive Type)과 주소값을 갖는 참조형 타입이 있다. 원시 타입은 스택에 저장되며, 값 자체가 그대로 저장되기 때문에 값을 일정한 형식의 raw byte 형태로 변경하여 외부로 전달할 수 있다. 반면, 객체 데이터는 Heap 영역에 존재하고 스택에는 Heap 영역에 존재하는 객체의 주소(메모리 주소)를 갖는 식으로 저장된다. 그렇다면 외부로 전달하는 데이터는 객체의 주소가 된다...
📌 Thread란? 프로세스를 구성하는 세부 실행단위 자바는 JVM을 통해 멀티스레드를 구성하여 Concurrent 하게 동작하여 동시에 여러 작업을 수행할 수 있다. 하지만 동시에 실행하는 Thread의 수행 순서는 보장되지 않는다. Concurrent vs Parallel (동시성 vs 병렬성)두 성질 모두 여러 작업을 동시에 처리하는 멀티스레드 동작을 말한다.Concurrent는 여러 Thread가 물리적으로 동시에 실행되는 것이 아닌, 실제 동작은 여러 Thread의 수행 시간을 쪼개어 동작한다. 즉, 번갈아 수행한다는 의미다.Parallel은 Concurrent와 달리 물리적으로 동시에 여러 Thread를 병렬적으로 수행한다. 즉, 동시에 수행한다는 의미다. JVM이 가장 먼저 수행하는 Thr..
🚴♂️ 기본 키 할당 전략 JPA가 제공하는 기본 키 할당 방법은 직접 할당 방식과 자동 생성 방식이 있다. 직접 할당 방식은 애플리케이션에서 기본 키를 직접 할당하는 방식이고, 자동 생성 방식은 DB에 할당을 위임하거나 기본 키를 생성해 주는 별도의 수단을 통해 할당하는 것이다. 본 글에서는 직접 할당 방식과 RDBMS에서 많이 사용하는 자동 생성 방식에 대해 다뤄보고자 한다. 📌 직접 할당 방식 Entity를 생성할 때, Key Column에 @Id를 사용하면 된다. @Getter@Entity@NoArgsConstructorpublic class Member { @Id private Long id; ... } 해당..
📌 Overview Spring Security와 JWT를 이용하여 토큰 기반 인증 구조를 구현하면서 GenericFilterBean과 OncePerRequestFilter로 구현한 코드를 보게 되었다. 그래서 두 방식의 차이점을 아래에서 비교해 보고자 한다. 🧾 Filter 위 그림은 Spring MVC에서 요청의 lifecycle을 나타낸 그림이다. javax.servlet-api나 tomcat-embed-core를 사용하면 제공되는 Servlet Filter Interface로서 클라이언트의 서블릿 요청을 가장 먼저 받는다. ✅ Filter interface package jakarta.servlet;import java.io.IOException;publ..