싱글톤 패턴(Singleton Pattern)이란? 하나의 클래스에 오직 하나의 객체 인스턴스만 가지는 패턴. 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 어디에서든 공유하며 접근, 사용할 수 있다. 데이터베이스 연결모듈(DBCP, DataBase Connection Pool)에 많이 쓰인다. 싱글톤 패턴의 장점 인스턴스 생성에 있어 최초 생성 이후에 호출될 때에는 최초의 생성자가 생성한 객체를 보내며, 한 번의 new 연산자로 인스턴스를 사용하기 때문에 메모리 낭비를 방지할 수 있다. 싱글톤 패턴의 단점 싱글톤 인스턴스를 여러 곳에서 많이 사용하게 되면 다른 클래스의 인스턴스 간 의존성이 높아진다 (개방-폐쇄 원칙 위배) 멀티스레드 환경에서 객체가 1개 이상 생성되어 오류 발생의 여지가..
Computer Science
Google BigQuery로 진행 (조회 기능에 대해서 배울 것이기 때문) SELECT, FROM SELECT : DB 데이터 조회 FROM : 어디서 정보를 가져올 것인지 지정 SELECT의 경우 여러 개의 Column을 선택할 수 있다. -- thelook_ecommerce.users의 모든 정보를 출력 select * from `thelook_ecommerce.users`; -- thelook_ecommerce.users에서 first_name이라는 column 선택해 출력 select first_name from `thelook_ecommerce.users`; -- thelook_ecommerce.users에서 first_name과 last_name이라는 column 선택해 출력 select i..
연결리스트(Linked List)란? 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료구조 노드에 있는 포인터는 이전이나 다음 노드를 연결하는 역할이다. 늘어선 노드의 중간지점에도 추가 및 삭제가 O(1)의 시간이 걸린다는 장점이 있으나 중간지점의 데이터를 검색하려면 처음부터 탐색을 해야 하기 때문에 O(n)의 시간이 걸리는 단점이 있다. 연결리스트의 구조 연결리스트의 노드는 데이터와 포인터로 구성되어있다. 포인터는 이전이나 다음 노드의 주소를 값으로 가지고 있다. 노드의 시작점을 Head, 끝점을 Tail이라 부른다. 연결리스트의 종류 1. 단일 연결리스트(Singly LinkedList) : 각 노드에 자료 공간과 한 개의 포인터 공간이 있고, 각 노드의 포인..
배열(Array)이란? 연속된 메모리 공간에 순차적으로 저장된 데이터 모음 배열은 배열을 구성하는 요소(element)와 위치를 가리키는 인덱스(index)로 이루어져 있다. 배열의 데이터 타입은 동일해야하며, index라는 데이터의 순서가 있어 접근이 빠르다. 배열의 형태 1차원 배열의 길이를 알고 있을 경우에는 타입[] 변수명 = new 타입[배열의 길이]; 위처럼 작성하고 만약 배열의 요소들을 알고 있을 경우에는 타입[] 변수명 = {김OO, 이OO, 박OO, 최OO}; 위와 같이 지어준다. 다차원 배열의 경우 (2차원) 타입[][] arr3 = new 타입[x][y]; 1차원 배열의 선언에서 대괄호([ ]) 를 n개씩 추가하여 선언한다. 배열의 인덱스에서의 값을 알고 싶다면 변수명[index] 로..
큐(Queue)란? 가장 먼저 입력된 요소를 처리하는 자료구조 - FIFO(First In First Out) 큐의 동작과정 큐를 사용하는 이유 입력된 시간에 따라 순서대로 처리해야 할 때 사용한다. 예를 들어, 우리가 놀이공원에서 줄 선 사람들이 놀이기구를 타고 한 명씩 빠질 때마다 명단에서 지우는 작업을 하고 싶다고 하자. String[] line1 = {"장OO", "임OO", "김OO", "이OO", "박OO", "최OO", ... , "ABC"}; String[] line2 = {"임OO", "김OO", "이OO", "박OO", "최OO", ... , "ABC"}; "장 OO"라는 사람이 놀이기구를 타면 자동으로 앞에서 명단이 지워지고 뒤에 사람부터 앞으로 옮겨져야 한다. 그런데 새치기를 해서 ..