전체 글
-
[linked list] swap nodes in pairsAlgorithm/LeetCode 2025. 5. 4. 11:45
✅ Problemhttps://leetcode.com/problems/swap-nodes-in-pairs/description/ ✅ Approach & Solution방식)더보기아래 작업을 하나의 사이클로 수행ex) dummy -> 노드1 -> 노드2 -> 노드3 -> 노드4 패턴화 시키기 위해 dummy 노드 추가노드1과 노드2 swapdummy가 노드2를 가리키도록 업데이트/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int ..
-
[Spring] 스프링 핵심 원리 - 스프링 AOPStudy/Spring 2025. 4. 23. 21:45
AOP 소개 - 핵심 기능과 부가 기능어플리케이션 로직은 크게 핵심 기능과 부가 기능으로 나눌 수 있음핵심 기능 : 해당 객체가 제공하는 고유의 기능부가 기능 : 핵심 기능을 보조하기 위해 제공되는 기능 ex) 로그 추적 로직, 트랜잭션 기능단독으로 사용되지 않고, 핵심 기능과 함께 사용됨부가 기능 적용 문제보통 부가 기능은 여러 클래스에 걸쳐서 함께 사용됨. 따라서 이러한 부가 기능은 횡단 관심사(cross-cutting concerns)가 됨즉, 하나의 부가 기능이 여러 곳에 동일하게 사용되다는 뜻아래와 같은 문제 발생함부가 기능이 여러 곳에 퍼져 중복 코드를 만들어냄중복으로 인해 부가 기능을 변경하거나 부가 기능의 적용 대상을 변경할 때 많은 수정이 필요함 AOP 소개 - Aspect위와 같은 부가..
-
[Spring] 스프링 핵심 원리 - @Aspect AOPStudy/Spring 2025. 4. 22. 23:33
@Aspect 프록시 - 적용스프링은 @Aspect 어노테이션으로 Pointcut과 Advice로 구성되어 있는 Advisor 생성 기능을 지원함 예시)더보기import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;@Slf4j@Aspectpublic class LogTraceAspect { private final LogTrace logTrace; public LogTraceAspect(LogTrace logTrace) { this.logTrace = l..
-
[Spring] 스프링 핵심 원리 - 빈 후처리기Study/Spring 2025. 4. 21. 23:54
빈 후처리기 (BeanPostProcessor)@Bean이나 컴포넌트 스캔에 의해 스프링이 빈 저장소에 등록할 목적으로 생성한 객체를 빈 저장소에 등록하기 직전에 조작하고 싶다면 BeanPostProcessor를 사용하면 됨빈 객체를 프록시로 교체하는 것도 가능함 BeanPostProcessor에 의한 스프링 빈 등록 과정생성 : 스프링 빈 대상이 되는 객체를 생성한다. (@Bean, 컴포넌트 스캔 모두 포함)전달 : 생성된 객체를 빈 저장소에 등록하기 직전에 BeanPostProcessor에 전달한다.후 처리 작업 : BeanPostProcessor는 전달받은 스프링 빈 객체를 조작하거나 다른 객체로 바꿔치기 할 수 있다.등록 : BeanPostProcessor는 빈을 반환한다. 전달된 빈을 그대로 반..