본문 바로가기
728x90

Programming30

[Spring] AOP란? AOP(Aspect-Oriented Programming)은 객체 지향 프로그래밍에서 공통적으로 발생하는 부가 기능(로깅, 보안, 트랜잭션 관리 등)을 모듈화하는 프로그래밍 기법입니다. AOP는 프로그램의 모듈성, 유지 보수성, 재사용성 등을 높이기 위해 개발되었습니다. 기존의 객체 지향 프로그래밍에서는 공통적인 기능을 모든 객체에서 반복적으로 구현해야 했으나, AOP는 이러한 반복적인 작업을 해결하기 위해 공통 기능을 모듈화하여, 각각의 객체에 적용하는 방식으로 개발됩니다. AOP는 대표적으로 다음과 같은 용어를 사용합니다. Aspect : 공통적으로 수행되는 부가 기능입니다. 예를 들어, 로깅, 보안, 트랜잭션 관리 등이 Aspect의 예입니다. Join point : Aspect가 적용될 수 있는 .. 2023. 2. 24.
Spring 특징 요약 Spring은 Java 언어로 구현된 오픈 소스 프레임워크로서, 다음과 같은 특징을 가지고 있습니다. 경량 컨테이너: 스프링은 객체의 생명주기와 설정, 관리 등을 담당하는 컨테이너입니다. 이 컨테이너는 EJB와 같은 무겁고 복잡한 컨테이너와는 달리, 가볍고 간단한 구조를 가지고 있습니다. Inversion of Control(IoC): 객체 간의 의존성을 낮추기 위해, 객체가 직접 자신이 필요로 하는 의존 객체를 생성하지 않고, 외부에서 생성하여 주입하는 방식을 IoC라고 합니다. 의존성 주입(Dependency Injection, DI): 객체가 직접 의존하는 객체를 생성하지 않고, 외부에서 의존 객체를 주입하는 방식을 의존성 주입이라고 합니다. 스프링은 이를 지원하기 위해 다양한 방법을 제공합니다. .. 2023. 2. 24.
[Java] 팩토리얼 계산하는 코드 만들기 5!은 5 * 4 * 3 * 2 * 1로 계산됩니다. 이를 자바 코드로 구현하면 다음과 같습니다. public class Main { public static void main(String[] args) { int num = 5; int result = 1; for (int i = num; i > 0; i--) { result *= i; } System.out.println(num + "! = " + result); } } 위 코드에서는 변수 num에 계산할 팩토리얼의 수를 지정하고, result 변수에 초기값 1을 할당합니다. 그리고 for 반복문을 사용하여 num부터 1까지의 숫자를 차례대로 곱해가며 result 변수에 저장합니다. 마지막으로 결과를 출력합니다. 2023. 2. 23.
[Java] 버전 크기를 비교하는 코드 만들기 (Semantic version) 1.5.1, 1.5.7과 같이 Semantic version으로 구성된 버전의 크기 비교하는 자바 코드 입니다. public class VersionComparisonExample { public static void main(String[] args) { String v1 = "1.5.1"; String v2 = "1.5.7"; String[] arr1 = v1.split("\\."); String[] arr2 = v2.split("\\."); int i = 0; while (i < arr1.length || i < arr2.length) { if (i < arr1.length && i < arr2.length) { if (Integer.parseInt(arr1[i]) < Integer.parseInt.. 2023. 2. 23.
map과 list 중 검색 속도가 빠른 것은? map은 검색 속도가 빠른 데이터 구조입니다. map은 키-값 쌍으로 데이터를 저장하기 때문에, 키를 이용하여 값을 검색할 수 있습니다. 이 때, map은 해시 테이블을 이용해 데이터를 저장하기 때문에, 평균적으로 O(1)의 시간 복잡도로 데이터를 검색할 수 있습니다. 반면, list는 순차적으로 데이터를 저장하며, 인덱스를 이용해 값을 검색할 수 있습니다. 이 때, list는 평균적으로 O(n)의 시간 복잡도로 데이터를 검색합니다. 하지만, 이러한 성능적인 차이는 데이터 크기, 검색 방법, 데이터 형식 등 다양한 요인에 따라 영향을 받기 때문에 일반적인 상황에서도 매번 map이 list보다 빠르다는 것은 아닙니다. 때에 따라서는 list가 map보다 빠를 수도 있습니다. 2023. 2. 23.
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor Spring Boot에서 @NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor는 Lombok 프로젝트에서 제공하는 애노테이션입니다. 이들 애노테이션은 자동으로 생성자를 생성하도록 지정하는 데 사용됩니다. @NoArgsConstructor: 파라미터가 없는 기본 생성자를 자동으로 생성합니다. 이 애노테이션을 사용하면, 생성자가 하나도 없는 클래스에 대해 자동으로 디폴트 생성자를 생성할 수 있습니다. @AllArgsConstructor: 모든 필드를 파라미터로 갖는 생성자를 자동으로 생성합니다. 이 애노테이션을 사용하면, 클래스의 모든 필드에 대한 생성자를 자동으로 생성할 수 있습니다. @RequiredArgsConstructor: final .. 2023. 2. 23.
728x90