전체 글(52)
-
이진 탐색 (binary-search)
오름차순, 혹은 내림차순으로 이미 정렬이 되어있는 배열에서 특정한 값을 찾아내는 것. 방식은 배열 중간의 임의의 값을 선택하여 찾고자 하는 키 값과 비교하는 것을 반복하는 방식으로 진행되며, 크기가 작고 큰지에 대해 이후 탐색해야할 배열의 영역을 정해 다시 탐색한다. 해당 값을 찾을 때 까지 이러한 과정을 반복하게 되며, 따라서 탐색 배열은 한 번 탐색이 끝날 때 마다 배열의 크기가 절반씩 줄어든다고 볼 수 있다. 가령 N개 크기의 배열을 이진 탐색하면 N은 *1/2, *1/4 식으로 줄어들 것이다. 여기서 몇 번 탐색했느냐가 시간복잡도를 나타내게 된다. 따라서 이를 수식으로 세운다면 시간복잡도는 log2N이 된다고 볼 수 있다(2^X(실행탐색회수)=N) public class BinSearch { //..
2019.05.21 -
POJO 의 개념
Plain Old Java Object, 직역하자면 오래된 방식의 단순 자바 객체를 의미한다. 표현으로 이해하기는 헷갈린 부분이 많기 때문에, POJO의 경우 몇 가지 특징을 가진 자바 객체로 여긴다. 1. 인터페이스 구현을 강제하지 않는다. 2. 어노테이션 사용을 강제하지 않는다. 3. 클래스 상속을 강제하지 않는다. 위와 같은 특징을 가진 객체를 보통 POJO라고 부른다 기본적으로 자주 사용되는 POJO에 해당되는 객체 클래스는 흔히 말하는 DTO, Model, Form과 같은 데이터 클래스가 해당되는 경우가 많다. public class SeqGen{ private int seq; private int no; private String prefix; private String suffix; publ..
2019.05.20 -
보초법 sentinel method
선형검색의 종료조건 두 가지를 검색을 반복할 때 마다 판단하는 것을 효율적으로 줄이기 위한 개선방법. 검색하고자 하는 키 값을 기존 배열의 맨 끝 자리에 추가로 저장하고 이를 보초(sentinel)라고 부른다. 이는 검색할 때 원하는 키 값이 없을 경우 배열의 마지막에 키 값을 보초로 세워두어 선형검색의 종료조건 중 하나인 [검색할 값을 발견하지 못 하고 배열의 끝을 지나가는 경우]를 없애는 것이다. 따라서 보초법을 사용하게 되면 반복문의 종료 판단 횟수를 2회에서 1회로 줄인다. public class SeqSearchSen { static int seqSearchSen(int[] a, int n, int key){ int i = 0; a[n] = key;//보초를 추가 //배열 요소를 순서대로 검색,..
2019.05.20 -
선형검색(순차검색) linear search, sequential search
요소가 직선 모양으로 늘어선 배열에서 처음부터 끝까지 원하는 키 값을 앞에서부터 순서대로 요소를 검색하는 것. 검색의 종료 조건은 검색할 값을 발견하지 못하고 배열의 끝을 지나간 경우나 검색할 값과 같은 요소를 발견한 경우 두 경우이다. 전자는 검색 실패이고 후자는 검색 성공이다. 배열의 요솟수가 n 개일 때, 위 두 가지 결과를 판단하는 횟수는 평균 n/2회 이다. (원하는 값이 배열에 존재하지 않는 경우 전자는 n+1회, 후자는 n회) public class SeqSearch { static int seqSearch(int[] a, int n, int key){ for (int i = 0; i < n; i++){ if (a[i] == key){ return i;//검색 성공(인덱스 리턴) } retu..
2019.05.20 -
[검색엔진 라이브서치 개발과정 정리]ELK stack의 설정 - Elasticsearch
ES, logstash, kibana는 각각 yml 파일을 통해 설정을 각자의 필요에 맞게 바꿀 수 있으며, 각각 jvmoption.yml 을 통해 jvm 관련 환경설정 까지 바꿀 수 있다. 또한 linux의 경우 루트계정을 이용하여 ES에 할당할 파일크기, 권한, 메모리크기 등을 바꿔줘야 하는 부분도 있다. 이러한 부분을 살펴보고자 한다. 먼저 ES와 관련된 설정이다. · max file descriptors 늘려주기 o 설명 Mac OS 및 Linux만 해당 (Windows는 불필요) Elasticsearch를 구동중인 사용자의 open files descriptors를 65536까지 올려야 함 RPM and Debian 패키지의 경우 default로 65536으로 설정되어 있으므로 이 설정이 불필요..
2019.05.20 -
[검색엔진 라이브서치 개발과정 정리]ELK stack의 설치
ES는 독립적으로 활용되기 보다는, 보조 툴과 함께 사용된다. 대표적으로 ELK stack으로 불리는데, Elasticsearch와 logstash, Kibana 라는 세 가지 툴의 조합이다. Logstash는 로그수집툴이라고 볼 수 있다. 필요한 데이터를 ES에 넣는 역할이다. Kibana는 웹에서 ES를 관리하는 모니터링 툴이다. 둘 다 ES를 필요로 하는 서비스이며, 특히 logstash의 경우 JSON파일이나 JDBC 플러그인을 통해 직접 ES와 RDBMS를 연동할 수 있다는 장점이 있다. Kibana의 경우 mySQL의 TODO 처럼 ES에 적용할 명령어에 대한 dev console을 지원하며, 저장된 데이터를 시각적으로 표현하고, ES의 node 상태에 대한 모니터링을 지원한다. 두 가지 다 ..
2019.05.17