DI (Dependency Injection) 객체를 사용하는 두 가지 방법 A객체가 B/C객체를 직접 생성한다. B/C의 기능에 의존한다. 직접 생성하는 경우 생성부터 메모리관리까지 해당 객체의 라이프사이클을 개발자가 모두 관리해야 하므로 강한 결합이 됨 B/C객체가 외부에 생성되어 A객체에 주입된다. B/C의 기능이 필요해 B/C를 가지고 있는 외부의 누군가에게 요청한다. 이미 누군가가 생성한 객체를 주입받으면 사용만하면 되므로 약한 결합이 됨 개발자가 관리할 것이 적음 public class UnderstandDI { public static void main(String[] args) { Date date = new Date(); System.out.println(date); } public st..
디자인 패턴 효율적인 프로그래밍 기준 중복된 코드가 없다. 변경된 요구사항을 잘 받아들일 수 있어야 한다. 디자인패턴을 적용하여 프로그램을 만드는 중요한 이유 다양한 추가 요구사항에 대해 좀 더 쉽게 대응하기 위한 것 과거 경험에 의해 어떤 상황에서 요구사항에 대해 코드 수정을 하기 좋았던 것들을 정리 같은 상황에 하나의 패턴만이 정답은 아니다. 가성이나 여러 상황에 따라 적절한 패턴을 적용 디자인패턴의 종류 썬의 J2EE 패턴 JSP 패턴 아키텍쳐 패턴 게임 디자인패턴 등 오리지널 파운데이션 패턴(GoF패턴) 싱글턴 패턴 플라이웨이트 패턴 빌더 패턴 옵저버 패턴 어댑터 패턴 파사드 패턴 데코레이션 패턴 브릿지 패턴 스트래티지 패턴 디자인패턴과 클래스의 다형성 클래스의 특성을 이용한 디자인패턴의 시작 밸..
Iterator 란? Java의 컬렉션 프레임워크에서 컬렉션에 저장되어 있는 요소들을 읽어오는 방법을 표준화 한 것 Collection Framework 란? 데이터를 저장하는 클래스들을 표준화 한 설계 Collections Framework 에는 Set, List, Map 등이 포함 Set, List 는 Collection 인터페이스를 상속받고 Map 은 그렇지 않음 Collection Interface SubInterface 대표적으로 Set과 List 등이있으며 이들을 구현한 클래스는 아래와 같음 HashSet, TreeSet, ArrayList, LinkedList, Vector 등 Iterator Interface method Iterator 사용법 Set이나 List같은 경우에는 인터페이스에 ..
Map key와 value로 이루어져 있음 key는 중복허용되지 않으나 value는 중복 허용 Map에서 Iterator 사용하기 Map에 있는 entrySet() 메소드는 Set을 반환 for을 사용 while을 사용 Set에 있는 iterator()메소드는 Iterator를 반환하여 while문을 통해 iterator를 사용할 수 있음 Map.Entry에 있는 메소드 getKey(), getValue()로 값 가져오기 Reference https://opentutorials.org/module/516/6446
Collection 만약 Collection 인터페이스만으로 구현이 가능한 경우 collection 인터페이스를 사용하는 것이 맞음, 만약 List 인터페이스에서 제공하는 다른 메소드가 필요한 경우 List인터페이스를 상속받아 사용 가급적이면 상위클래스를 사용하는 것이 좋음 Set 중복을 허용하지 않음(집합의 성격), 각각의 값들은 고유 순서가 보장되지 않음 Collection interface와 동일한 구조 List 중복을 허용 순서대로 저장 Object get(int index), void add(int index, Object element) 순서가 있는 구조이므로 index가 필요한 메소드들이 존재함 Iterator method Reference https://opentutorials.org/mo..
memo head의 역할 가장 첫 번째의 주소값을 가리킨다. add 메소드에서 if로 인덱스를 검사하는 경우 추가되지 않은 상태에서 size+1이 되었다고 생각하는 것이 맞는지 궁금궁금 int indexOf(T item) 찾고있는 데이터와 같은 데이터를 가진 노드의 인덱스를 반환 연결 리스트의 노드들을 처음부터 순서대로 방문하는 것을 순회(traverse)한다고 말한다. indexOf 메소드는 입력된 데이터 ite과 동일한 데이터를 저장한 노드를 찾아 그 노드번호(index)를 반환한다. 그 반환과정을 위해 연결리스트를 순회한다. public int indexOf(T item) {// search Node p = head; int index = 0;// index값을 초기화 while(p != null)..
addAfter(Node before, T item) 만들고자 하는 구조 before노드 > new 노드 > 다음 노드 순서 new 노드를 만들고 데이터를 저장 new 노드의 next필드가 다음 노드를 가르키도록 함 before 노드의 next필드가 new노드를 가르키도록 함 public void addAfter(Node before, T item) { Node temp = new Node(item); temp.next = before.next; before.next = temp; size++; } addBefore(Node p, T item) 만들고자 하는 구조 new 노드 > p 노드 > 다음 노드 이 경우 간단하지 않다. 이유는 LinkedList 의 노드들은 자신의 다음 노드의 주소값을 가지고 있..
memo 내가 작성한 코드가 일반적인 경우뿐만 아니라 특수한 혹은 극단적인 경우에도 문제 없이 작동하는지 철저하게 확인하여야 한다. 추가시키는 노드의 다음 노드가 없는경우 삭제하려는 노드의 다음 노드가 없는경우 등등 Node 구성 데이터 필드 링크 필드 다음 node의 주소를 참조함 첫 번째 node의 주소는 따로 저장하여야 함 LinkedList에 새 노드 추가시키기(처음 노드로) addFirst("Ann") 새 노드 만들고 추가할 데이터를 저장 새 노드의 next 필드가 현재의 head노드를 가리키도록 함 newNode.next = head 새 노드를 새 head 노드로 함 head = newNode 순서가 중요 추가하기전의 head의 값은 기존에 있던 가장 처음 노드의 주소값과 같으므로 새로운 노드..
- Total
- Today
- Yesterday
- stackframe
- C++
- client side rendering
- 입출력장치
- 운영체제
- 최단경로
- 스텍
- 재귀함수
- 이진탐색
- 세마포어
- 퀵정렬
- 동적프로그래밍
- 인접리스트
- 구조체
- react
- 배열
- Java
- 인접행렬
- BFS
- javascript
- 자료구조
- 병행프로세스
- 클래스
- 소프트웨어
- server side rendering
- C
- 알고리즘
- 교착상태
- dfs
- Stack
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |