Dev68 『MVC』 Bean Validation RESTful API를 개발할 때 클라이언트로부터 전달받은 데이터의 유효성 검증은 필수적인데 Spring Framework에서는 Bean Validation이란 기능을 지원한다. Bean Validation은 어노테이션을 활용하여 객체의 프로퍼티 값이 특정 조건을 만족하는지 검증하는 프레임워크다. Spring Boot에서는 기본으로 지원한다.@Valid, Java에서 지원하는 어노테이션@Validated, Spring에서 지원하는 어노테이션 -> 내부에 groups 기능을 포함하고 있다. 내부 구조Bean Validation은 Java 표준 스펙(JSR 380)으로 다음과 같은 주요 구성 요소로 이루어져 있다. Constraint Annotations @NotNull, @Size 등과 같이 필드에 .. 2024. 12. 3. 『Java』 Priority Queue 우선순위 큐 일반적인 큐(Queue)는 먼저 들어간 데이터가 먼저 나오는 FIFO(First In First Out) 구조다. 반면에 우선순위 큐(Priority Queue)는 들어가는 순서와 상관없이 우선순위가 높은 데이터가 먼저 나오는 자료구조다. 우선순위 큐 내부의 엘리먼트들은 새로운 요소가 추가되거나 기존 요소가 제거될 때마다 정렬된다. 우선순위 큐는 힙(Heap) 자료구조를 통해 구현되며 다른 자료구조를 통해서도 구현될 수 있다. 선언 방법Java에서 PriorityQueue는 기본적으로 최소 힙(min-heap) 구조로 작은 숫자가 먼저 나오도록 설계되어 있다. 높은 숫자(큰 숫자)가 먼저 나오도록 하려면 Collections.reverseOrder()를 사용하여 최대 힙(max-heap).. 2024. 12. 2. 『Network』 HTTP Only 쿠키 웹 애플리케이션 개발에서 쿠키는 클라이언트와 서버 간의 상태 정보를 유지하는 역할을 한다. 위와 같은 특성 때문에 쿠키에 대한 관리를 고려하지 않는다면 크로스 사이트 스크립팅(XSS) 공격에 노출될 수 있다. 이러한 보안 위협을 최소화하기 위해 HTTP Only 쿠키를 사용하는 것이 권장된다. 일반 쿠키와 HTTP Only 쿠키의 간단한 차이점을 알아보고 Spring Framework에서 HTTP Only 쿠키를 어떻게 사용하는지 예제 코드를 통해 살펴보자. 쿠키란?쿠키는 클라이언트의 브라우저에 저장하는 작은 데이터 조각으로 이후의 HTTP 요청에서 해당 정보를 활용하여 상태를 유지하는 데 사용된다.일반 쿠키HTTP Only 쿠키 클라이언트 측에서 JavaScript와 같은 스크립트를 통해 접근, 수정.. 2024. 12. 1. 『Java』 배열과 리스트의 차이점 List와 Array 타입 모두 표면적으로는 비슷한 기능을 제공하지만 내부적으로 메모리에 접근하는 방식의 차이로 인해 사용 용도가 다르다. 결론적으로 Array 타입은 메모리에 연속적으로 저장되며 정적인 데이터 처리 어울리고, List 타입은 메모리에 비연속적으로 저장되며 동적인 데이터 처리에 어울린다. 배열고정된 길이: 배열은 초기 선언 시 길이가 고정되며 이후에는 크기를 변경할 수 없다.런타임 수정의 어려움: 실행 중에 크기를 변경하거나 요소를 삽입/삭제하는 것이 어렵기 때문에 정해진 데이터를 다룰 때 적합하다.연속적인 메모리 저장: 메모리에 연속적으로 저장되므로 탐색 속도가 빠르다.정적인 데이터에 적합: 삽입/삭제가 거의 없는 정적인 데이터 처리에 어울린다. 시간 복잡도연산시간 복잡도설명접근 (A.. 2024. 11. 29. 『Network』 쿠키, 세션 쿠키쿠키는 클라이언트(브라우저)의 로컬에 저장되는 작은 데이터 파일로 키와 값의 쌍으로 이루어져 있다. 서버에서 생성되어 클라이언트로 전송되며 클라이언트는 이를 저장하고 필요시 다시 서버로 전송한다. 만료 시간을 지정할 수 있어 브라우저가 종료되어도 쿠키가 유지될 수 있다. 사용자가 별도의 요청을 하지 않아도 브라우저가 자동으로 서버에 쿠키를 전송한다. 동작 원리클라이언트 요청: 클라이언트가 서버에 페이지를 요청한다.쿠키 생성 및 전달: 서버는 필요한 경우 쿠키를 생성하여 HTTP 응답 헤더에 포함시켜 클라이언트로 전송한다.쿠키 저장: 클라이언트는 수신한 쿠키를 로컬에 저장한다.쿠키 자동 전송: 이후 동일한 도메인에 대한 요청 시 브라우저는 자동으로 쿠키를 HTTP 요청 헤더에 포함하여 서버로 전송한.. 2024. 11. 29. 『Network』 HTTP(HyperText Transfer Protocol) HTTP(HyperText Transfer Protocol)는 월드 와이드 웹(WWW)에서 하이퍼텍스트 문서를 전송하기 위한 표준 프로토콜이다. 현대의 HTTP 프로토콜은 단순히 하이퍼텍스트(HTML) 문서를 전송하는 데 그치지 않고 JSON(JavaScript Object Notation), XML(eXtensible Markup Language), HTML, 파일 전송 등의 데이터 전송에 활용되고 있다. 클라이언트(웹 브라우저)와 서버 간의 통신을 담당하며 OSI 7 계층 중 응용 계층에 속한다. 하이퍼텍스트란? 하이퍼텍스트는 문서 내에서 다른 텍스트나 리소스로의 참조(링크)를 포함하는 텍스트를 의미한다. HTTP 특징 클라이언트-서버 모델클라이언트가 요청을 보내면 서버가 응답을 반환하는 구조.. 2024. 11. 28. 『Java』 Map, Stack, Queue, Deque Map Map은 키-값의 쌍을 저장하는 자료 구조다. 키는 맵 내에서 유일해야 한다. 그리고 키를 통해 값을 빠르게 검색할 수 있다. 키는 중복될 수 없지만, 값은 중복될 수 있다. Map은 순서를 유지하지 않는다. 자바는 HashMap, TreeMap, LinkedHashMap 등 다양한 Map 구현체를 제공한다.이들은 Map 인터페이스의 메서드를 구현하며 각기 다른 특성을 가지고 있다. HashMap구조해시를 사용해서 요소를 지정한다. Key 값은 해시 함수를 통해 해시 코드로 변환되고 해시 코드는 데이터를 저장하고 검색하는 데 사용된다. 특징삽입, 삭제, 검색 작업은 해시 자료 구조를 사용하므로 일반적으로 상수 시간 O(1)의 복잡도를 가진다. 순서순서를 보장하지 않는다. LinkedHashMa.. 2024. 11. 28. 『Network』 www.google.com을 주소 창에 쳤을 때 일어나는 과정 웹 동작 방식브라우저에서 www.google.com(URL)을 입력하면, DNS lookup을 통해 해당 도메인의 서버 IP 주소를 알아낸 후 서버와 TCP 연결을 설정한다.IP 주소로 HTTP 요청 메시지(request message) 전송 요청을 한다.생성된 HTTP 요청 메시지를 TCP/IP층에 전달한다.HTTP 요청 메시지에 헤더를 추가해서 TCP/IP 패킷을 생성한다.해당 패킷은 전기 신호로 랜선을 통해 네트워크로 전송되고 목적지 IP에 도달한다.server에 도착한 패킷은 unpacking을 통해 message를 복원하고 server의 process로 보낸다.server의 process는 HTTP 요청 메시지에 대한 response data를 가지고 HTTP response message를 생.. 2024. 11. 27. 『Spring MVC』 필터, 인터셉터 공통 업무에 관련된 코드를 각 페이지마다 작성한다면 중복 코드가 많아지고 프로젝트 규모가 커질수록 유지 보수가 어려워진다. 그래서 Spring Framework에서는 다음과 같은 기능들을 제공한다.Filter (필터)Interceptor (인터셉터)AOP (Aspect-Oriented Programming, 관점 지향 프로그래밍)위의 세 가지 기능은 모두 특정 작업을 실행하기 전에 선처리하거나 실행한 후에 후처리 하는 데 사용된다. 이번 글에서는 필터와 인터셉터가 무엇인지 그리고 그 차이점에 대해 알아보자. 필터란?필터는 클라이언트의 요청과 응답을 거르는 역할을 한다. DispatcherServlet에 요청이 전달되기 전에 실행되며 URL 패턴에 맞는 모든 요청에 대해 부가 작업을 처리할 수 있는 기.. 2024. 11. 26. 이전 1 2 3 4 5 ··· 8 다음