synchronized 사용 public synchronized static Database getInstance(String name) { // synchronized 를 사용하여 실행되는 것들을 줄세워 차례대로 실행 -> 첫번째 스레드만 실행 // 비용이 비쌈 if(singleton == null) { singleton = new Database(name); } return singleton; } static 으로 미리 객체생성 public class Database { // static 이므로 프로그램이 시작될 때 동시에 객체 생성 private static Database singleton = new Database("products"); private String name; private Dat..
싱글턴 패턴 최대 N개로 객체 생성을 제한하는 패턴 객체가 너무 많아지는 경우 컴퓨터 자원을 과도하게 사용하게 되며 이는 프로그램 전체의 속도를 느리게 할 수 있다. 개발자는 객체 최대 개수를 제한할 필요가 있음 생성되는 객체의 최대 개수를 제한하는데 있어 객체의 생성을 요청하는 쪽에서는 일일이 신경쓰지 않아도 되도록 만들어 주는 것이 중요 싱글턴 패턴 사용 예 일반 자바 프로그래밍 데이터베이스 커넥션 풀 로그 라이터 등 게임 프로그래밍 사운드 매니저 스코어 매니저 하나의 객체로 데이터를 하나로 유지하고 싶을 때 사용 Database.java public class Database { private static Database singleton; private String name; public Data..
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..
- Total
- Today
- Yesterday
- react
- javascript
- 인접행렬
- 배열
- Stack
- stackframe
- Java
- 소프트웨어
- 세마포어
- 입출력장치
- 최단경로
- 스텍
- 운영체제
- C++
- 재귀함수
- BFS
- dfs
- 인접리스트
- 클래스
- 이진탐색
- client side rendering
- 동적프로그래밍
- 알고리즘
- server side rendering
- 자료구조
- 구조체
- 퀵정렬
- C
- 교착상태
- 병행프로세스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |