본문 바로가기

728x90

전체 글

(400)
[Spring Boot] @Configuration @Bean 사용법 스프링에서의 @Configuration과 @Bean 어노테이션@Configuration과 @Bean 어노테이션은 자바 기반 설정을 통해 스프링 빈을 등록하고 관리할 수 있게 하는 주요 어노테이션입니다. 이 두 어노테이션은 XML 기반 설정을 대체하여, 애플리케이션 구성을 더욱 명확하고 간결하게 만들어 코드 가독성과 유지보수성을 높입니다.@Configuration클래스 레벨에서 사용되며, 스프링이 해당 클래스를 설정 클래스로 인식하게 합니다.클래스 내부의 @Bean 메서드가 반환하는 객체들은 싱글턴 빈으로 관리됩니다.스프링은 @Configuration이 선언된 클래스를 프록시 객체로 관리하여, 동일한 빈을 여러 번 요청하더라도 동일한 인스턴스를 반환합니다.만약 @Configuration이 없는 클래스에서 ..
[네트워크] 쿠키와 세션 HTTP 프로토콜의 특징과 쿠키 및 세션의 역할웹 애플리케이션을 개발할 때, HTTP 프로토콜은 우리가 가장 많이 사용하는 프로토콜입니다. 하지만 HTTP 프로토콜에는 몇 가지 문제점이 존재하는데, 그 중에서 가장 큰 두 가지가 바로 ConnectionLess와 StateLess입니다. 이러한 문제들을 해결하기 위해 등장한 것이 쿠키(Cookie)와 세션(Session)입니다. HTTP 프로토콜의 특징ConnectionLess (연결 지향적이지 않음)HTTP는 ConnectionLess 프로토콜입니다. 즉, 클라이언트가 서버에 요청을 보낼 때마다 새로운 연결을 맺고, 요청이 끝나면 연결을 끊습니다. 이 말은, 서버는 클라이언트와의 연결을 지속적으로 유지하지 않으며, 각 요청이 독립적이라는 뜻입니다. 예를..
[컴퓨터 구조] 데이터 부동 소수점 소수란?소수(decimal)는 1보다 큰 정수 중에서 1과 자기 자신만을 약수로 가지는 자연수를 뜻합니다. 예를 들어, 2, 3, 5, 7과 같은 숫자가 소수입니다.프로그래밍에서 소수 연산을 다룰 때 일반적인 개념과 달리 컴퓨터의 소수점 표현 방식의 한계로 인해 일부 오차가 발생할 수 있습니다. 소수 표현일부 실수 계산에서 우리가 흔히 예상하는 결과와 컴퓨터가 계산하는 결과가 달라질 수 있습니다. 예를 들어 0.1 + 0.2의 계산 결과는 이론적으로 0.3이지만, 컴퓨터는 이 결과를 정확히 표현하지 못할 때가 있습니다:System.out.println(0.1 + 0.2 == 0.3); // 결과는 false이와 같은 현상은 컴퓨터가 소수를 표현하는 방식인 "부동 소수점" 표현 방식의 한계로 인해 발생합니..
[Spring Boot] Snake Case JSON 변환 전체 설정하기 Spring에서는 Java 클래스 필드가 기본적으로 camelCase로 지정되어 있으며, 이는 프론트엔드에서 주로 사용하는 snake_case와 다른 형식입니다.예를 들어, 아래와 같은 필드가 있다고 가정해 봅시다:// Java (Back-end)String userName;// JavaScript (Front-end)let user_name; 이와 같은 형식 차이는 Spring으로 클라이언트 데이터를 주고받을 때 자동으로 매핑되지 않아, 프론트엔드와 백엔드 간에 불필요한 변환 작업을 발생시킵니다.1. @JsonNaming을 이용한 수동 매핑특정 클래스에서만 snake_case 변환을 적용하려면 @JsonNaming 애노테이션을 사용할 수 있습니다:import com.fasterxml.jackson.da..
[백준] 1, 2, 3 더하기 문제 흐름문제 목표숫자 n이 주어졌을 때, 숫자 1, 2, 3을 사용해 그 합이 n이 되는 모든 경우의 수를 계산합니다.입력 및 출력 설명여러 테스트 케이스에 대해 각각의 숫자 n을 입력받고, 각 경우에 대해 결과를 출력합니다. 핵심 아이디어동적 프로그래밍(DP)현재 숫자 i를 만들기 위해 마지막에 추가하는 숫자가 1, 2, 또는 3일 때의 경우를 합산합니다.점화식: arr[i] = arr[i-1] + arr[i-2] + arr[i-3]여기서 arr[i]는 숫자 i를 만드는 경우의 수를 나타냅니다.이 문제는 미리 계산된 DP 배열에서 결과를 빠르게 조회하는 방식으로 해결할 수 있습니다. 알고리즘 흐름DP 배열 초기화arr[0]=1로 초기화합니다.배열을 통해 1부터 10까지의 결과를 미리 계산합니다.DP ..
[Spring Boot] 멀티 모듈 설정하기 Spring Boot에서 멀티 모듈 설정을 구성하는 것은 대규모 애플리케이션을 모듈화하여 코드 관리와 재사용성을 높이는 데 유리합니다. 멀티 모듈 구조를 활용하면 프로젝트를 독립적인 하위 모듈로 분리할 수 있어 유지보수와 협업이 수월해집니다. 다음은 Spring Boot에서 멀티 모듈 설정하는 방법과 추가 설명입니다.  멀티 모듈이란?멀티 모듈은 하나의 루트 프로젝트 내에 여러 하위 모듈(서브 모듈)을 포함하는 프로젝트 구조입니다. 루트 프로젝트의 build.gradle 파일에서 전체 프로젝트 설정을 관리하고, 하위 모듈은 각각의 독립적인 빌드 설정을 가지면서도 상위 모듈과 연계할 수 있습니다. 각 모듈은 독립적으로 개발 및 테스트가 가능하며, 필요에 따라 상호 참조할 수 있습니다.멀티 모듈의 장/단점장..
[백준] 연속합 (1912번) 문제 흐름문제 목표주어진 배열에서 연속된 부분 수열의 최대 합을 구하는 문제입니다.이 문제는 동적 프로그래밍을 이용하여 해결할 수 있습니다.입력 설명첫 줄에 정수 N (배열의 크기)를 입력받습니다.다음 줄에 N개의 정수 (각 원소의 값)를 입력받습니다.출력 설명연속된 부분 수열의 최대 합을 출력합니다. 핵심 아이디어동적 프로그래밍(DP):현재 원소까지의 최대 합을 계산하면서 최댓값을 갱신합니다.배열의 각 원소를 순회하면서, 이전 원소와 현재 원소를 합치는 것이 더 큰 경우에 업데이트합니다.위 알고리즘을 카데인 알고리즘이라고 합니다.점화식:dp[i]는 dp[i-1] + arr[i] (현재 원소를 포함한 최대 합)과 arr[i] (현재 원소만) 중 큰 값을 선택합니다. 알고리즘 흐름입력 처리배열의 크기 N과..
[자료구조] 여러가지 배열 종류 1. 기본 배열 (Array)정의: 동일한 타입의 요소가 고정된 크기로 연속된 메모리 공간에 저장된 자료구조입니다.특징:고정 크기: 배열의 크기는 선언 시 고정되며 변경할 수 없습니다.빠른 접근: 인덱스 값으로 각 요소에 O(1) 시간 복잡도로 접근 가능.메모리 효율성: 연속적인 메모리 공간을 사용하여 메모리 접근이 빠릅니다.용도: 크기가 변하지 않는 데이터 집합을 저장할 때 유용합니다.int[] numbers = {1, 2, 3, 4, 5};System.out.println("첫 번째 요소: " + numbers[0]); // 1System.out.println("세 번째 요소: " + numbers[2]); // 3  2. 동적 배열 (Dynamic Array)정의: 크기를 동적으로 조정할 수 있는 ..

728x90