분류 전체보기78 [Spring] Spring Security란? Spring Security Spring Security는 강력하고 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크입니다. Spring 기반 애플리케이션 보안을 위한 사실상 표준 프레임워크며 사용자 인증, 권한 부여, 세션 관리, CSRF(Cross-Site Request Forgery) 및 XSS(Cross-Site Scripting) 방어, 보안 헤더 설정, 사용자 로그인 및 로그아웃 관리, 접근 제어, 그리고 다양한 인증 및 인가 메커니즘을 제공하여 웹 애플리케이션의 보안을 강화할 수 있습니다. 또한 Spring Web MVC와 선택적 통합을 제공하여 웹 애플리케이션의 보안 구현을 간편하게 설정 할 수 있습니다. Spring Security의 필터 체인(Filter Chain)을 사용하요 HT.. 2023. 9. 14. [Data] 우선순위 큐(Priority Queue) Priority Queue 우선순위 큐는 데이터를 저장하는 자료구조 중 하나로 각 요소에 우선순위를 할당하고 그 우선순위에 따라 요소들을 정렬하는 자료구조입니다. 우선순위가 가장 높은 요소가 항상 첫번째 인덱스에 위치해 있으며 삽입 시점에 상관없이 가장 먼저 제거됩니다. 또한 두 요소의 우선순위가 동일한 경우 순서에 따라 제거됩니다. Heap 힙이란 각 노드의 값이 특정한 우선순위 규칙을 따르는 자료구조입니다. 힙은 이진 트리로 구성되며 각 노드는 최대 두개의 자식 노드를 가질 수 있습니다. 일반적으로 힙은 보통 완전 이진 트리의 형태를 가지며 왼쪽부터 차례대로 노드가 채워집니다. 최소 힙 출처 각 노드의 값은 그 자식 노드의 값보다 작거나 같은 힙으로 루트 노드가 가장 작은 값을 가집니다. 최대 힙 출.. 2023. 9. 7. [Java] Enumeration Enumeration 출처 Enum은 고유한 값의 집합을 나타내는 자료형으로 클래스와 비슷한 구조로 선언되며 상수를 정의하고 관리하는데 사용됩니다. 즉 Enum은 변수를 미리 정의하여 상수 집합이 될 수 있도록 해주는 특별한 데이터 유형입니다. Enum이 도입된 Java 5 버전 이전에는 상수를 관리하기 위해 final static 변수를 사용하는 것이 일반적이었습니다. Enum은 이러한 상수 관리를 보다 쉽고 효율적으로 사용할 수 있도록 기능을 제공합니다. 등장 배경 Enum이 등장하기 이전에는 상수를 정의할 때 주로 다음과 같은 방법을 사용했습니다. interface Day { int MONDAY = 1; int TUESDAY = 2; int WEDNESDAY = 3; int THURSDAY = 4;.. 2023. 9. 4. [Web] 로드밸런서(Load Balancer) Load Balancer 출처 로드 밸런서(Load Balancer)란 트래픽을 분산시켜주는 컴퓨터 네트워크 기법 중 하나로 서버에 가해지는 부하(로드)를 분산(밸런싱)해주는 장치 또는 기술을 통칭합니다. 로드 밸런싱이란 들어오는 네트워크 트래픽을 서버 팜 또는 서버 풀이 라고도 하는 백엔드 서버 그룹에 효율적으로 분산시키는 것을 의미합니다. 로드 밸런스의 주요 역활은 다음과 같습니다. 트랙픽 분산: 들어오는 네트워크 트래픽을 여러 대의 서버로 균등하게 분산시켜 서버 간의 부하를 분산시킵니다. 가용성 및 안정성 향상: 서버가 다운되거나 장애가 발생해도 여러 대의 서버에 트래픽을 분산시킴으로써 온라인 상태인 서버에만 요청을 보내 다른 서버가 트래픽을 처리하기 때문에 고가용성과 안정성을 보장합니다. 성능 개.. 2023. 8. 31. [Spring] Spring AOP 동작 방식 @EnableAspectJAutoProxy 기본적으로 ProxyFactory 클래스를 사용하여 AOP 프록시를 생성하고 관리할 수 있지만 이는 수동적이며 번거로운 작업입니다. 그렇기 때문에 Spring은 프록시 생성과 관리의 작업을 자동화하고 추상화한 org.springframework.context.annotation.EnableAspectJAutoProxy 어노테이션을 제공합니다. @EnableAspectJAutoProxy는 IoC 컨테이너가 org.aspectj.lang.annotation.Aspect가 적용된 클래스를 스캔하고 필요한 프록시를 자동으로 생성하여 AOP를 적용할 수 있게끔 설정합니다. @Target(ElementType.TYPE) @Retention(RetentionPolicy.RU.. 2023. 8. 30. [Spring] Spring AOP JDK Dynamic & CGLIB Proxy 생성 방식 ProxyFactory org.springframework.aop.framework.ProxyFactory 설명하기 앞서 Spring에서 AopProxy를 어떤 식으로 관리하는지 살펴 보겠습니다. public interface AopProxy { Object getProxy(); Object getProxy(@Nullable ClassLoader classLoader); Class getProxyClass(@Nullable ClassLoader classLoader); } 스프링은 org.springframework.aop.framework.AopProxy를 통해 AOP Proxy 객체를 추상화했습니다. 그 중 제공하는 구현체로는 인터페이스 기반의 JDK Dynamic Proxy와 클래스 기반의 CGLI.. 2023. 8. 28. [Spring] Spring AOP란? AOP AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍을 뜻합니다. AOP는 시스템을 구성하고 모듈화하는 새로운 방법을 제공하는 프로그래밍 방법론으로 OOP(Object Oriented Programming)의 보완적인 개념으로 등장했습니다. OOP는 주로 주요 비즈니스 로직을 객체로 추상화하여 모델링하는데 중점을 두기 때문에 중복되는 관심사(Concerns) 문제를 해결하기에는 제한적입니다. AOP는 이러한 OOP의 한계를 극복하기 위해 등장한 개념으로 Cross-cutting Concerns와 Core Concerns를 분리하여 모듈화하는 것을 목표로 합니다. 관심사를 Aspect 라는 모듈로 모델링하여 주요 비즈니스 로직과는 별개로 존재하면서도 여러 모듈에 .. 2023. 8. 27. [Web] HTTP(Hyper Text Transfer Protocol) HTTP 출처 HTTP(Hyper Text Transfer Protocol)은 웹에서 데이터를 전송하기 위한 프로토콜 중 하나로 클라이언트와 서버 간의 통신을 위해 사용합니다. HTTP는 TCP/IP 프로토콜 위에서 동작하며 요청과 응답으로 구성됩니다(HTTP/3은 UDP 기반). 클라이언트가 웹 사이트의 URL에 액세스하거나 입력하면 브라우저는 웹에서 HTTP 요청을 생성하고 URL에 표시된 IP 주소로 보냅니다. 서버는 이 요청을 받고 관련 파일을 보냅니다. 또한 HTTP는 아래와 같은 거의 모든 형태의 데이터가 전송 가능합니다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 특징 Client-Server Architecture 출처 클라이언트-서버 아키택처는 컴퓨터.. 2023. 8. 24. [Java] 가비지 컬렉션(Garbage Collection) Garbage Collection GC는 자바의 메모리 관리를 자동화하는 메커니즘으로 명시적으로 메모리를 할당하거나 해제하지 않아도 동적으로 사용하지 않는 객체들을 인식하고 제거하는 프로세스입니다. GC의 자동 메모리 관리로 인해 프로그래머들은 메모리 누수 문제, 메모리 관리 등과 같은 문제에서 벗어나 오로지 개발에만 집중 할 수 있게 되었습니다. 하지만 GC는 일시적으로 메모리에 대한 가비지를 수집할 때까지 GC 스레드를 제외한 모든 스레드를 중지하는 Stop the world 이벤트를 진행하는데 이는 오버헤드가 발생돼 프로그램의 응답성이 떨어지는 문제점이 있습니다. GC가 오히려 자주 실행되면 프로그램의 실행 시간이 증가되어 성능상의 이슈가 발생합니다. 따라서 실시간으로 제어하는 것이 중요한 프로그램.. 2023. 8. 21. 이전 1 2 3 4 5 6 7 8 9 다음