싱글톤 패턴이란대표적인 디자인 패턴 중 하나로 한 클래스에 한 인스턴스를 가지는 패턴이다. 소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. - 출처 : 위키백과 - 싱글턴 패턴 생성된 인스턴스를 기반으로 다른 모듈에서 공유, 접근하여 사용할 수 있다. 주로 공통된 객체를 여러개 생성해서 사용하는 경우에 쓰이며 대표적으로 데이터베이스 연결 모듈 (DBCP) 가 있다. 싱글톤 패턴의 장점이미 완성된 인스턴스를 기반으로 로직을 짜는 것이기 때문에 비용이 줄어든다. static으로 별도로 고정 메모리 영역을 만든 뒤 인스턴스를 공..
큐(QUEUE) 란? 사전적인 의미로 '대기줄' 이라는 의미를 가지고 있다. 큐는 스택과 다르게 포인터가 두군데가 있는데 삽입 연산만 수행되는 rear 와 삭제 연산만 수행되는 front 가 있다. 제일 먼저 들어온 데이터가 가장 먼저 나가는 구조로 FIFO (First In First Out) 이다. 사용예시 은행창구 번호표 대기 프린터 출력 컴퓨터 운영체제의 테스크 스케쥴링 너비 우선 탐색 선언방법 Queue queue = new LinkedList(); queue는 인터페이스만 존재하고 별도의 클래스가 없기 때문에 LinkedList 를 이용한다. 메소드 add(E) 값 추가 성공 시 true, 실패 시 false 반환 저장공간이 부족하면 IllegalStateException 반환 offer(E)..
1. Stack 이란? 2. Stack 사용 예시 3. 선언 방법 3-1 메서드 | Stack 이란? 스택은 '쌓아놓은 더미' 라는 뜻으로 데이터를 차례대로 쌓아두는 모양이다. 스택은 한쪽 끝에서 push() 해서 밀어넣고, 끝에서 부터 pop() 하여 꺼내는 LIFO(후입선출, Last In First Out)이다. 즉, 마지막에 넣은 데이터가 가장 먼저 나오는 형태이다. | Stack 사용 예시 웹 브라우저 방문기록(뒤로가기) 실행 취소(undo) 역순 문자열 만들기 후위 표기법 계산 깊이우선탐색 | 선언 방법 Stack stack = new Stack(); | 메서드 push(E) 값 추가 peek() 가장 상단 값 반환 pop() 가장 상단 값 반환 & 제거 clear() 전체 값 제거 (반환x)..
1. '에라토스테네스의 체'란 2. 장점 3. 알고리즘 4. JAVA로 구현 | '에라토스테네스의 체'란 고대 그리스의 수학자인 에라토스테레스가 만들어 낸 소수를 찾는 방법으로, 마치 체로 치듯이 수를 걸러낸다고 하여 '에라토스테네스의 체' 라고 불린다. | 장점 임의의 자연수 n에 대해 그 이하의 소수를 모두 찾는 간단하고 빠른 방법이다. 즉, 특정 범위 내의 소수를 찾을 때는 에라토스테네스의 체가 가장 빠르다. | 알고리즘 에라토스테네스의 체의 알고리즘은 다음과 같다. 2부터 소수를 구하고자 하는 구간의 모든 수를 나열한다. 그림에서 회색 사각형으로 두른 수들이 여기에 해당한다.2는 소수이므로 오른쪽에 2를 쓴다. (빨간색)자기 자신을 제외한 2의 배수를 모두 지운다.남아있는 수 가운데 3은 소수이므..
1. 컬렉션 프레임워크란? 2. List 컬렉션 3. Set 컬렉션 4. Map 컬렉션 | 컬렉션 프레임워크란? 객체들을 효율적으로 추가, 삭제, 검색 할 수 있도록 인터페이스와 구현 클래스를 java.utill 패키지에서 제공하는데 이것을 컬렉션 프레임워크(Collection Framework) 라고 한다. 객체 저장소로서 배열을 사용할 수도 있지만 배열은 선언 시 크기를 정해야하고, 또 정한 크기를 변경할 수 없을 뿐만 아니라 항목을 저장, 삭제, 추가하는 메소드가 없기 대문에 인덱스를 사용해야 하는 번거로움이 있다. 이를 대신해 컬렉션 프레임워크를 사용한다. 컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. | List 컬렉션 List 컬렉션은 배열과 비슷하게 인덱스를 관리..
1. 얕은복사 (Shallow Copy) 2. 깊은복사 (Deep Copy) | 얕은복사 (Shallow Copy) 얕은 복사는 쉽게 말해 '주소 값'을 복사한다는 의미이다. 복사한 객체 B가 원본 객체 A의 주소값을 복사하여 그 안에 있는 힙 영역을 참조한다. 만약 객체 A의 메모리 값을 변경 한다면, 객체 B도 같은 메모리 값을 공유하고 있기 때문에 함께 변경이 된다. 예를들어, A와 B는 201호 집 열쇠를 각자 가진 채로 같은 집에 살고있다고 생각하면 쉽다. 장점 : 같은 힙영역을 공유하고 있기 때문에 메모리를 절약하고 빠르다. 단점 : A를 변경 시 B도 같이 변경되기 때문에 주의가 필요하다. 문법 : int[] A = {1,2,3,4,5}; int[] B = A; B[0] = 6; A = [6..
1. 브루트 포스 (Brute_force) 란? 2. 선형구조와 비선형구조 - 순차탐색, 깊이 우선 탐색, 깊이 우선 탐색 3. 브루트 포스의 문제점 | 브루트 포스 (Brute_force) 란? 브루트 포스는 암호 해독법 중 하나로, Brute : 난폭한, 짐승같은 + Force : 힘 의 합성어로 난폭한 힘 으로 해석이 되는데, 무식할 정도로 1부터 100까지 정확하게 해독한다는 뜻이다. 다시말해, 모든 경우의 수를 전체탐색하는 암호 해독법이다. 전체 탐색하는 방법으로는 두가지로 나눌 수 있다. | 선형구조와 비선형구조 전체 탐색에는 크게 선형구조(Linear) 와 비선형구조(Non Linear) 가 있다. 선형 구조는 데이터가 연속적으로 연결되어 있는 모양으로 전체적으로 탐색하는 순차 탐색이 있다...
1. parseInt() 2. valueOf() valueOf() 와 parseInt() 둘 다 문자열을 숫자로 바꿔주는 메소드입니다. String a = "1111"; int parse = 0; int value = 0; parse = Integer.parseInt(a); value = Integer.valueOf(a); System.out.println(parse); System.out.println(value); 1111 1111 같은 결과가 출력되는 걸 볼 수 있는데, 코드를 짜다보면 무슨 차이인지 잘 모르는 채로 사용하는 때가 있습니다. parseInt() 기본 자료형에는 byte, short, int, long, float, double, boolean, char 로 총 8가지가 있는데 par..