본문 바로가기

분류 전체보기74

[Java] JPMS(Java 9 Platform Module System) JPMS(Java 9 Platform Module System) 출처 JPMS는 Java 애플리케이션의 구조화와 관리를 개선하기 위해 Java 9부터 도입된 시스템입니다. 모듈 시스템은 기존의 패키지 시스템을 보완하고 애플리케이션의 더 나은 모듈화를 가능하게 합니다. 즉 모듈 시스템은 패키지보다 높은 레벨의 집계를 추가할 수 있으며 서로 관련된 패키지 및 리소스(이미지, XML 파일 등)를 한 곳에 묶어 지칭하기 위한 재사용 가능한 고유 명칭을 의미합니다. JDK는 모놀리틱(Monolithic) 라이브러리 대신 약 90개의 플랫폼 모듈로 구성됩니다. 또한 모듈에는 이름이 있으며 관련 코드 및 기타 리소스를 그룹화하고 모듈 디스크립터(module descriptor)로 설명됩니다. 모듈 디스크립터는 mod.. 2023. 10. 23.
[Algorithm] 삽입 정렬(Insertion Sort) 삽입 정렬(Insertion Sort) 삽입 정렬은 자료 배열의 모든 요소를 앞에서부터 차례대로 이미 정렬된 배열 부분과 비교하여 자신의 위치를 찾아 삽입함으로써 정렬을 완성하는 알고리즘입니다. 정렬되지 않은 목록(리스트, 배열)을 정렬된 부분과 정렬되지 않은 부분으로 나누며 정렬되지 않은 부분의 원소를 하나씩 선택하여 정렬된 부분의 적절한 위치에 삽입하는 방식으로 동작합니다. 출처 예제 먼저 다음과 같이 정렬되지 않은 배열이 있다고 가정하겠습니다. 위 배열을 오름차순으로 정렬하기 위한 삽입 정렬 알고리즘은 다음과 같이 동작합니다. 0 번째 인덱스 요소인 5는 정렬된 상태로 가정을하고 그 외 나머지 1... n-1 인덱스 요소는 정렬되지 않은 배열이라고 가정합니다. 첫 번쨰 요소를 정렬된 하위 배열의 요.. 2023. 10. 22.
[Dev] 도커(Docker) Docker 출처 도커는 애플리케이션을 컨테이너로 패키징해주는 툴로 Go언어로 작성된 리눅스 컨테이너 기반으로 하는 오픈소스 가상화 플랫폼입니다. 컨테이너를 이용해 애플리케이션 소스 코드를 임의의 환경에서 해당 코드의 실행에 필요한 운영체제(OS) 라이브러리 및 종속 항목과 결합하는 실행 가능한 표준으로 컴포터넌트화 합니다. 도커를 사용하지 않고도 컨테이너를 구축할 수 있지만 도커 플랫폼을 사용함으로서 보다 손쉽고 간편하고 보다 안전하게 컨테이너를 빌드, 배치 및 관리 할 수 있습니다. 즉 도커는 기본적으로 개발자가 단일 API를 통한 업무 절감 자동화와 간단한 명령어를 사용하여 컨테이너를 빌드, 배치, 실행, 업데이트 및 중지할 수 있도록 해주는 툴킷(toolkit)입니다. Docker Containe.. 2023. 10. 19.
[Algorithm] 버블 정렬(Bubble Sort) 버블 정렬(Bubble Sort) 두 개의 인접한 요소를 비교하고 필요한 경우 위치를 교환(Swap)하여 리스트를 정렬합니다. 버블 정렬은 모든 요소를 탐색하며 정렬 조건(오름차순, 내림차순 등)에 해당하는 요소가 가장 뒤로 이동할 때까지 반복됩니다. 정렬 시 거품이 올라오는 것처럼 보여 버블 정렬이라고 이름이 지어졌습니다. 출처 예제 먼저 다음과 같이 정렬되지 않은 배열이 있다고 가정하겠습니다. 위 배열을 오름차순으로 정렬하기 위한 버블 정렬 알고리즘은 다음과 같이 동작합니다. 첫 번째 인덱스부터 시작하여 첫 번째 요소와 두 번째 요소를 비교합니다. 첫 번째 요소가 두 번째 요소보다 크면 교체됩니다. 마지막 요소에 도달할 때까지 이전 절차가 반복됩니다. 첫 번째 인덱스부터 시작하여 첫 번째 요소와 두 .. 2023. 10. 17.
[Spring] Spring Security 구성 요소 설정 @EnableWebSecurity WebSecurityConfigurer 또는 SecurityFilterChain을 사용하기 위해서는 @EnableWebSecurity 어노테이션을 선언해야합니다. 또한 @EnableWebSecurity 어노테이션을 명시함으로써 Spring Security 를 활성화하고 설정되어 있는 기본 설정을 비활성화한 후 필요한 보안 규칙을 정의하고 구성할 수 있습니다. 즉 EnableWebSecurity 는 Spring Security 자동 구성(Auto Configuration)을 사용함을 나타내는 어노테이션으로 Spring Security 5.7.0-M2부터 Deprecated 된 WebSecurityConfigurer 또는 SecurityFilterChain의 설정 파일.. 2023. 9. 20.
[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.