목록전체 글 (248)
S E P H ' S
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/wU05a/btsnpGlXKcI/jj1fGn6gT6dWXTTfrTh8a0/img.jpg)
Set Interface Set은 말그대로 집합이다. 기본적으로 Set 혹은 Set 계열을 구현하는 클래스들은 다음과 같은 공통점이 있다. 중복 요소(원소)를 허용하지 않는다. 저장 순서를 유지하지 않는다. (LinkedHashSet 만 예외) 가장 중요한 특징은 '중복 요소를 허용하지 않는다'는 점이다. Set의 종류 Set은 크게 HashSet, LinkedHashSet, TreeSet으로 나뉜다. HashSet 가장 기본적인 Set 컬렉션의 클래스이다. 입력 순서를 보장하지 않고 순서도 보장되지 않는다. 가장 쉽게 이해할 수 있는 예시로는 게임에서 닉네임 중복확인을 할때이다. 이는 데이터가 정렬될 필요도 없을뿐더러 빠르게 중복되는 값인지만 찾으면 되므로 유용한 방법이 될 수 있다. hash에 의해 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bjAm2a/btslR5TPblu/f2LY4yPEACiVfYkik32UXK/img.jpg)
2042번: 구간 합 구하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)과 M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 10,000) 가 주어진다. M은 수의 변경이 일어나는 횟수이고, K는 구간의 합을 구하는 횟수이다. 그리고 둘째 줄부터 N+1번째 줄 www.acmicpc.net BOJ 2042 구간 합 구하기 풀이를 하면서 정리를 시작하게 됐다. 이 문제는 세그먼트 트리에 대해 이해하고 있어야 접근이 가능하다. 우선 세그먼트 트리에 대해서 정리하고 문제 풀이를 시작해보겠다. 세그먼트 트리 (Segment Tree) 특정 구간 내 데이터에 대한 연산(쿼리)를 빠르게 구할 수 있는 트리이다. 예를 들어 특정 구간 합, 최소값, 최대값, 평균값 등을 구하는데 용이하다. 시간 복잡도는..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/zFOxJ/btslKebuszI/5OhiKhJGx3CyVd4twArSu0/img.jpg)
JDK 동적 프록시 & CGLIB 동적 프록시 이전 포스트의 내용을 한번 정리하고 프록시 팩토리에 대해서 시작해보자. 동적 프록시를 생성하기 위해 Java의 리플렉션을 활용하여 동적으로 메소드를 뽑아냈다. 그리고 이를 바탕으로 구현된 JDK 동적 프록시 기술로 프록시 객체를 만들어 의존관계 주입을 통해서 처리했다. 그러나 JDK 동적 프록시는 반드시 인터페이스가 있는 환경에서만 사용할 수 있다는 한계가 있다. 인터페이스의 클래스 로더, 클래스 메타 정보 등을 넣어주어 동적으로 메소드를 뽑아오기 때문이었다. 그래서 인터페이스 없이 구체 클래스만 있을 때는 CGLIB라는 라이브러리를 이용하여 대상 객체를 상속받은 동적 프록시 객체를 만들었다. 실무에서는 인터페이스가 있는 경우, 구체 클래스만 있는 경우 등 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bPh9dU/btslagXbFck/EURKKzJotXobixhmUJV4f1/img.jpg)
AOP 포스팅 4. Spring AOP와 디자인 패턴 (1) 5. Spring AOP - 총정리 (2) AOP를 달성하기 위해 사용한 디자인 패턴을 알아보면서 어떤 식으로 개선을 해왔는지 알아봤다. 하지만 5번 포스팅의 마지막 정리 부분에서 말했듯이 프록시 패턴이나 데코레이터 패턴을 사용하더라도 부가 기능을 도입하고자 하는 클래스의 개수만큼 필요한 클래스를 만들어야 한다는 문제점이 있었다. 이를 동적 프록시 적용 (JDK 동적 프록시, CGLIB, ProxyFactory) 으로 해결할 수 있다고 했었다. 동적 프록시(Dynamic Proxy) 앞서 말했듯이 프록시를 적용해야할 클래스가 너무 많다면 프록시 클래스를 그 개수 만큼 일일이 만드는 것은 엄청난 노동이다. 이를 해소하기 위한 기술이 동적 프록시이..