본문 바로가기

전체 글177

AOP(Aspect-Oriented Programming)의 중요한 세 가지 기술 AOP(Aspect-Oriented Programming)의 세 가지 주요 기술인 다이나믹 프록시, CGLib, 그리고 AspectJ 1. 다이나믹 프록시 (Dynamic Proxy)개념:다이나믹 프록시는 자바 표준 라이브러리에서 제공하는 java.lang.reflect.Proxy 클래스를 이용하여 인터페이스 기반의 프록시 객체를 런타임에 동적으로 생성하는 기술입니다. 이 프록시 객체는 실제 객체의 대리자 역할을 하며, 메서드 호출을 가로채서 특정 로직(예: 로깅, 트랜잭션 관리 등)을 추가할 수 있습니다.동작 방식:인터페이스 필요: 다이나믹 프록시는 반드시 인터페이스를 기반으로 동작합니다. 즉, 프록시 객체를 생성하려면 원본 클래스가 구현한 인터페이스가 있어야 합니다.InvocationHandler: .. 2024. 8. 19.
2024.08.16(금) { 와일드카드 캡쳐, transient } 와일드카드 캡쳐와일드카드 캡처(Capture of Wildcards)는 제네릭 타입을 사용할 때 발생하는 문제를 해결하기 위한 기법입니다. 와일드카드는 ?를 사용하여 제네릭 타입의 유연성을 높이는 데 사용되지만, 때로는 와일드카드를 특정 타입으로 "캡처"하여 더 명확하게 사용할 필요가 있습니다. 특히 제네릭 메서드나 클래스에서 와일드카드를 사용하면서 타입 매개변수로 명확히 지정해야 하는 경우에 유용합니다.  ? 놔두면 아무거나 다 될 수 있어서 혼란이 올 수 있지만 T로 하면 예를 들어 String로 하면 다 String로 고정되기 때문에 와일드카드 캡처  와일드카드 캡처 문제예를 들어, 다음과 같은 코드가 있을 때:public void addToList(List list, Object value) { .. 2024. 8. 16.
List와 ArrayList 1. List 인터페이스정의: List는 Java의 컬렉션 프레임워크에 속하는 인터페이스입니다. List는 순서가 있는 요소의 컬렉션을 나타내며, 중복된 요소를 허용합니다. List 인터페이스는 컬렉션에서의 위치를 기반으로 요소에 접근하고 조작할 수 있는 다양한 메서드를 정의합니다.주요 특징:순서 유지: List는 요소들이 삽입된 순서를 유지합니다. 예를 들어, 리스트에 요소가 [A, B, C] 순서로 삽입되었다면, 이 순서는 유지됩니다.중복 허용: List는 동일한 요소가 여러 번 포함될 수 있습니다.인덱스 기반 접근: List 인터페이스는 인덱스를 사용하여 특정 위치의 요소를 빠르게 접근할 수 있는 메서드(get(int index))를 제공합니다.구현체: List 인터페이스를 구현하는 여러 클래스가 .. 2024. 8. 16.
뮤텍스(Mutex)와 세마포어(Semaphore) **뮤텍스(Mutex)**와 **세마포어(Semaphore)**는 모두 동시성 프로그래밍에서 **상호 배제(Mutual Exclusion)**를 구현하기 위해 사용되는 동기화 기법입니다. 이들은 멀티스레드 환경에서 공유 자원에 대한 접근을 제어하는 데 사용되며, 서로 다른 스레드가 자원을 동시에 수정하지 못하게 방지합니다. 이 두 개념은 비슷하지만, 동작 방식과 사용 목적에서 차이가 있습니다.1. 뮤텍스(Mutex, Mutual Exclusion)뮤텍스는 "Mutual Exclusion"의 줄임말로, 하나의 스레드만 자원에 접근할 수 있도록 보장하는 락입니다.주요 특징:단일 접근: 한 번에 오직 하나의 스레드만 락을 획득하고, 자원에 접근할 수 있습니다. 다른 스레드들은 락이 해제될 때까지 대기해야 합니.. 2024. 8. 16.
2024.08.15(목) { ( @component,@Bean,@Autowired ), 커밋, Thread Context } @Component와 @Bean의 차이점등록 방식:@Component: Spring의 컴포넌트 스캔에 의해 자동으로 빈이 등록됩니다. 즉, @Component 어노테이션이 붙은 클래스는 Spring이 자동으로 인스턴스를 생성하고, 이를 컨테이너에 등록합니다.@Bean: 개발자가 직접 빈을 등록하기 위해 사용하는 어노테이션입니다. @Bean은 주로 @Configuration클래스 내의 메서드에 사용되며, 해당 메서드가 반환하는 객체를 Spring 컨테이너에 빈으로 등록합니다.사용 위치:@Component: 클래스 레벨에서 사용됩니다.@Bean: 메서드 레벨에서 사용됩니다.유연성:@Component: 기본적으로 설정 없이 자동으로 빈을 등록하는데 유리합니다. 특정 패키지 내의 클래스를 자동으로 스캔하고 빈으.. 2024. 8. 15.
2024.08.14(수) { 스레드 동기화, Lock 과 Lock의 종류 스레드 동기화(Thread Synchronization)스레드 동기화는 멀티스레드 환경에서 여러 스레드가 공유 자원(예: 변수, 객체, 파일 등)에 동시에 접근할 때 발생할 수 있는 문제를 방지하기 위해 사용됩니다. 동기화를 통해 한 번에 하나의 스레드만 공유 자원에 접근할 수 있도록 제어할 수 있습니다. 이렇게 하지 않으면 데이터 불일치, 데이터 손상 등의 문제가 발생할 수 있습니다.락(Lock)의 개념**락(Lock)**은 스레드 동기화의 핵심 개념 중 하나로, 공유 자원에 대한 접근을 제어하는 메커니즘입니다. 락을 사용하면 한 스레드가 자원을 사용하는 동안 다른 스레드가 그 자원에 접근하지 못하도록 막을 수 있습니다.락의 동작 원리락 획득(Take a Lock): 스레드가 공유 자원에 접근하기 전에.. 2024. 8. 15.