일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 자바예외
- DDD
- 인프런백기선
- 자바
- SQL쿡북
- 인덱스
- 클린코드
- 알고리즘
- AWS
- 기술면접
- AWS RDS
- 스프링부트와AWS로혼자구현하는웹서비스
- 자바스터디
- MariaDB
- 알고리즘분석
- 이팩티브 자바
- java
- mysql
- vue.js
- 혼공SQL
- 자료구조
- 인프런김영한
- 이펙티브 자바
- 도메인 주도 개발 시작하기
- 네트워크
- CleanCode
- jpa
- aop
- 이펙티브자바
- react
- Today
- Total
목록JAVA/자료구조와 알고리즘 (13)
기록이 힘이다.

-접근 제어 권한에 따른 접근 차단 캐싱 지연 로딩 -부가기능 추가 원래 서버가 제공하는 기능에 더해서 부가 기능을 수행한다. 예) 요청 값이나, 응답 값을 중간에 변형한다. 예) 실행 시간을 측정해서 추가 로그를 남긴다. 둘다 프록시를 사용하는 방법이지만 GOF 디자인 패턴에서는 이 둘을 의도(intent)에 따라서 프록시 패턴과 데코레이터 패턴으로 구분한다. 프록시 패턴: 접근 제어가 목적 데코레이터 패턴: 새로운 기능 추가가 목적, 체이닝이 가능하다
이진 탐색 트리 이진 탐색 트리는 각 노드가 키를 포함하며 모든 노드는 다음과 같은 속성이 있습니다. 1. 노드 왼쪽에 자식이 있다면 왼쪽 하위 트리의 모든 키는 노드에 있는 키보다 작습니다. 2. 노드 오른쪽에 자식이 있다면 오른쪽 하위 트리의 모든 키는 노드에 있는 키보다 큽니다. 트리 전체를 검색할 필요가 없어서 이진 탐색 트리에 있는 키의 검색 속도는 빠릅니다. 루트에서 시작하여 다음과 같은 알고리즘을 사용할 수 있습니다. 1. 찾는 키인 target을 현재 노드의 키와 비교합니다. 같다면 검색이 완료됩니다. 2. target이 현재 키보다 작으면 왼쪽 트리를 검색합니다. 왼쪽 트리에 없다면 target은 트리에 없습니다. 3. target이 현재 키보다 크면 오른쪽 트리를 검색합니다. 오른쪽 트..

public class MyBetterMap implements Map { // MyBetterMap uses a collection of MyLinearMap protected List maps; /** * Initialize the map with 2 sub-maps. * */ public MyBetterMap(int k) { makeMaps(k); } /** * Makes a collection of `k` MyLinearMap * * @param k */ protected void makeMaps(int k) { maps = new ArrayList(k); for (int i=0; i

해시 테이블은 지금까지 발명된 자료구조 중 단연 으뜸입니다. TreeMap 클래스와 비슷한 다른 하나는 마법까지는 아니지만, 요소를 순서대로 반복할 수 있는 추가 기능을 제공합니다. public class MyLinearMap implements Map { private List entries = new ArrayList(); Entry 객체는 키-값 쌍을 포함합니다. Entry 클래스는 단지 키와 값의 컨테이너입니다. 이 정의는 MyLiearMap 클래스에 중첩되어 있으므로 같은 타입 파라미터인 K와 V를 사용합니다. equals 메서드의 실행시간은 target과 키의 크기에 의존하지만, 엔트리 개수에 해당하는 n에는 의존하지 않습니다. 따라서 equals는 상수 시간입니다. findEntry 메서드에..
웹 검색에서 인덱스는 검색어를 바탕으로 관련 페이지를 찾을 수 있게 하는 자료구조입니다. 자료구조 선택 인덱스의 가장 기본 연산은 조회입니다. 특히 검색어를 조회하여 검색어를 포함한 모든 페이지를 찾는 능력이 필요합니다. 가장 단순한 구현은 페이지의 컬렉션입니다. 검색어가 주어지면 페이지 내용을 반복 조사하여 검색어를 포함한 페이지를 선택합니다. 하지만 실행시간은 모든 페이지의 전체 단어 수에 비례하며 매우 느립니다. 이보다 좀 더 나은 대안은 맵입니다. 이 자료구조는 키-값 쌍의 컬렉션을 나타내며, 키와 키에 해당하는 값를 찾는 빠른 방법을 제공합니다. Map 인터페이스에서 가장 중요한 메서드는 다음과 같습니다. HashMap/ TreeMap 클래스 -get(key) 이 메서드는 키를 조사하여 관련된 ..

재귀적 DFS와 비교하였을 때 반복적 DFS의 이점은 Iterator 객체로 래핑하기가 좀 더 쉽다는 것입니다. 1. 생성자는 루트 노드에 대한 참조를 인자로 받아 저장합니다. 2. iterator 메서드는 Iterator 객체를 생성하여 반환합니다. private class WikiNodeIterator implements Iterator { // this stack keeps track of the Nodes waiting to be visited Deque stack; /** * Initializes the Iterator with the root Node on the stack. * * @param node */ public WikiNodeIterator(Node node) { stack = ne..

웹 검색 엔진을 소개 검색 엔진의 요소를 설명하고, 위키피디아에서 페이지를 다운로드하고 파싱하는 웹 크롤러라는 첫 번째 응용 프로그램을 소개. 또한, 깊이 우선 탐색의 재귀적 구현과 후입선출 스택 구현을 위해 자바 Deque 인터페이스를 사용하는 반복적 구현을 제공. Search engine - Wikipedia Search engine - Wikipedia From Wikipedia, the free encyclopedia Jump to navigation Jump to search Software system that is designed to search for information on the World Wide Web The results of a search for the term "lunar..
시작에 요소를 추가하는 연산은 LinkedList 클래스가 ArrayList 클래스보다 빠릅니다. 하지만 요소를 끝에 더하는 것은 LinkedList가 더 느립니다. 이중 연결 리스트 -각 노드는 다음 노드와 이전 노드에 대한 참조를 포함합니다. -LinkedList 객체는 첫 번째와 마지막 요소에 대한 참조를 포함합니다. 따라서 리스트의 어느 한쪽 끝에서 시작하여 어느 방향으로든 순회할 수 있습니다. 이중 연결 리스트 구현은 ArrayList 클래스보다 시작에 요소를 추가하고 삭제하는 연산이 좋습니다. 끝에 요소를 추가하고 제거하는 연산은 ArrayList 클래스와 동일합니다. 따라서 ArrayList 클래스의 유일한 이점은 get과 set 메서드입니다. 연결 리스트는 심지어 이중 연결 리스트일 때도 ..