profile
야인처럼
태그 목록
전체보기 (35)Sort(6)elasticsearch(6)정렬(6)엘라스틱서치(6)스프링(6)클라우드(5)Spring(5)cloud(4)netflix(4)넷플릭스(4)검색(3)자바(3)msa(2)filter(2)주울(2)search(2)Index(2)heap(2)서비스(2)Java(2)스냅샷(2)Nori(2)마이크로서비스(2)stream(2)snapshot(2)wiki(2)데이터(2)위키(2)service(2)서버(2)stack(2)zuul(2)backup(2)필터(2)백업(2)스트림(2)data(2)server(2)스키마리스(1)역정규화(1)쿼리(1)유레카(1)KMP(1)plugin(1)junit(1)자동완성(1)동적매핑(1)오타교정(1)mda(1)discovery(1)quick(1)컬렉션(1)인덱스(1)analyzer(1)람다(1)WSL2(1)xlaunch(1)lambda(1)kowiki(1)한글(1)알고리즘(1)라우팅(1)client(1)schemaless(1)선택(1)스프링부트(1)분석기(1)포크조인(1)mapping(1)병합(1)Springboot(1)gradle(1)노리(1)플러그인(1)네트워크(1)slm(1)linkedlist(1)회로차단기(1)bubble(1)계산(1)컨피그(1)vcxsrv(1)method(1)query(1)병렬(1)모델링(1)형태소(1)보이어(1)문자열(1)테스트(1)람다식(1)구성정보(1)오타(1)insertion(1)restore(1)dynamic mapping(1)복구(1)컨테이너(1)hystrix(1)아키텍처(1)auto(1)build(1)빌드(1)Collection(1)moore(1)String(1)config(1)연결리스트(1)시스템(1)denormalization(1)초성검색(1)횡단관심사(1)무어(1)퀵정렬(1)모두의(1)버블(1)영역(1)폴백(1)memory(1)max_map_count(1)익명객체(1)dynamic(1)스택(1)버크헤드(1)array(1)boyer(1)selection(1)modeling(1)자동(1)nosql(1)디스커버리(1)fork/Join(1)그레이들(1)bulkhead(1)EDA(1)(1)토큰(1)Token(1)초성(1)(1)코딩(1)삽입(1)(1)회복성(1)패턴(1)algorithm(1)fallback(1)이벤트(1)area(1)gui(1)Parallel(1)container(1)WSL(1)test(1)클라이언트(1)최적화(1)event driven architecture(1)routing(1)메모리(1)가상메모리(1)SpringCloud(1)tuning(1)xserver(1)배열(1)IntelliJ(1)공작소(1)색인(1)히스트릭스(1)circuitbreaker(1)Funtional Interface(1)merge(1)eureka(1)ubuntu(1)mmap(1)queue(1)
post-thumbnail

자바 병렬 스트림의 내부 구조? 포크-조인(Fork-Join) 프레임워크

Java의 스트림(Stream)이 병렬 처리를 할 때 내부적으로 사용하는 포크-조인 프레임워크에 대해 알아본다.포크-조인 프레임워크는 Java7에서 추가되었다.포크-조인 프레임워크는 태스크(Task)를 재귀적으로 여러 개의 작은 작업 단위로 분할(fork)하여 처리한다

2021년 10월 30일
·
0개의 댓글
post-thumbnail

Java8의 스트림(Stream)으로 컬렉션 연산을 더 효율적으로 하자!

아래와 같은 학생 클래스가 있다.학생 리스트를 만들고 성별과 나이로 필터링 해보자.고전적인 방식에서는 컬렉션을 순회하면서 직접 빈 리스트를 만들고 조건을 검사하고 만족하는 요소들만 추가해줬다.위 예제를 스트림을 사용하면 아래와 같이 작성할 수 있다.간단한 예제라 극적으

2021년 10월 28일
·
0개의 댓글
post-thumbnail

람다(lambda)의 진정한 의미: 동작의 파라미터화(Feat. 함수형 인터페이스)

어느 학교에서 학생 관리 프로그램 개발을 요구했다. 프로그램 기능 중 학생을 나이별로 필터링해서 보여주는 기능이 있다.먼저 Student 클래스는 이렇게 생겼다.학교에서는 15살 이하 학생들만 봐야 할 때가 있으니 필터링 기능이 필요하다고 한다. 그래서 util 클래스

2021년 10월 26일
·
0개의 댓글
post-thumbnail

자바 실행 구조와 JVM 메모리 영역

.java 확장자의 소스코드를 컴파일하면 .class 확장자로 된 바이트 코드가 나온다.JVM이 프로그램을 실행하면 클래스로더(Class Loader)가 바이트 코드를 읽어들이고 JVM 메모리의 메소드 영역(Method Area)에 저장된다.이후 인터프리터(InterP

2021년 10월 25일
·
0개의 댓글
post-thumbnail

보이어 무어(Boyer-Moore) 문자열 검색 알고리즘

검색 문자열의 오른쪽 끝 부터 왼쪽으로 진행하며 비교한다. 일치하지 않는 문자가 나타나면 정해진 규칙에 따라 오른쪽으로 skip해서 다시 진행한다.브루트 포스처럼 모든 문자 지점을 시작으로 전체를 계속 비교하는 방식이 아니라 효율적인 알고리즘이다.보이어 무어 알고리즘은

2021년 10월 24일
·
0개의 댓글
post-thumbnail

모두의 네트워크

비전공자로 IT에 입문하고 네트워크를 제대로 공부한 적은 없었다. 간간히 인터넷 서칭으로 필요한 지식들을 그때그때 찾고 공부했기 때문에 전체적인 정리가 되지 않았다는 느낌이 있었다.내용이 깊고 많은 책보다는 출퇴근길 버스에서 짬짬히 읽기 좋은 책 중에서 ebook을 지

2021년 10월 24일
·
0개의 댓글
post-thumbnail

효율적인 문자열 검색을 위한 KMP 알고리즘

텍스트에서 특정 문자열이 있는지 검색하고 있다면 해당 문자열의 시작 지점을 돌려주는 알고리즘을 만들고 싶다.가장 쉽게 생각할 수 있는 간단한 방법은 브루트포스(brute-force) 검색이다.말 첫 글자에서 시작해서 문자열 길이만큼 문자들을 비교해 일치하는지 확인하고

2021년 10월 24일
·
0개의 댓글
post-thumbnail

힙(Heap)과 힙 정렬

힙은 완전 이진트리의 형태를 가지는 자료구조이다. 루트(root) 노드는 항상 가장 큰 값(최대 힙-max heap) 또는 가장 작은 값을 가진다.(최소 힙-mean heap)여기서는 최대 힙(max heap)을 가정한다.힙은 항상 아래 조건을 만족해야한다.부모 노드의

2021년 10월 23일
·
0개의 댓글
post-thumbnail

병합 정렬(Merge Sort)

병합 정렬은 분할 정복(Divide & Conquer) 방식으로 원소들을 정렬한다.분할 정복을 알아보기 전 이미 정렬되어 있는 두 배열을 하나의 배열로 정렬하려면 어떻게 해야할까?두 배열을 합친 길이만큼의 새로운 배열을 생성한 후 각 배열을 앞에서 훑으면서 작은것 부터

2021년 10월 23일
·
0개의 댓글
post-thumbnail

퀵 정렬(Quick Sort)

퀵 정렬은 분할 정복(Divide & Conquer)을 사용한다.시간복잡도가 O(NlogN)이다. O(N^2)인 버블 정렬, 선택 정렬, 삽입 정렬에 비해 속도가 빠르다.시간 복잡도에 대해서는 코드부터 작성 후 다시 정리한다.실제 동작 모습부터 보자.0번 index를

2021년 10월 22일
·
0개의 댓글
post-thumbnail

삽입 정렬(Insertion Sort)

오름차순 정렬을 가정한다.삽입 정렬은 가장 처음 시작에 기본적으로 0번째 인덱스 원소는 정렬된 것으로 간주하고 1번째 요소부터 선택하여 진행한다.1번째 인덱스 요소를 이미 정렬된 부분(0번 원소만 존재)의 알맞은 곳에 끼워넣는다. 만약 0번 원소가 더 크면 0 -> 1

2021년 10월 21일
·
0개의 댓글
post-thumbnail

선택 정렬(Selection Sort)

선택 정렬은 아래와 같은 과정을 통해 진행된다.배열을 index 0부터 끝까지 훑으면서 가장 작은 값의 index를 찾는다. 0번째 값과 찾은 index의 값을 서로 바꾼다.배열을 index 1부터 끝까지 훑으면서 가장 작은 값의 index를 찾는다. 1번째 값과 찾은

2021년 10월 21일
·
0개의 댓글
post-thumbnail

버블 정렬(Bubble Sort)

버블 정렬은 한 쪽에서부터 반대쪽 끝으로 이동하면서 2개씩 비교한다. 비교시에 필요할 경우 위치를 바꾼다. 끝에 도달했을 때 도달한 끝에 위치하는 값은 정렬이 끝난다. 다시 시작위치로 이동해서 이 과정을 반복하는데, 방금 전에 한 개는 정렬이 끝났으므로 이동해야 하는

2021년 10월 21일
·
0개의 댓글
post-thumbnail

배열 vs 연결리스트

배열배열의 가장 큰 특징은 인덱스(index)를 통한 랜덤 액세스(Random Access)이다. index를 가지고 메모리의 특정 번지수를 곧바로 접근 가능하다. 따라서 인덱스를 통해 원소(element)를 가져오는 작업의 시간 복잡도는 빅오표기법상 O(1), 즉 상

2021년 10월 19일
·
0개의 댓글
post-thumbnail

큐(Queue)

큐(Queue)는 선형 자료구조의 일종으로 FIFO(First In First Out)으로 동작한다. 먼저 들어온 원소가 먼저 나가는 구조다. OS가 리소스를 할당해주기를 기다리는 프로세스 대기열도 큐를 사용한다. 먼저 온 프로세스에게 먼저 순서가 돌아간다.큐에 자료를

2021년 10월 18일
·
0개의 댓글
post-thumbnail

스택(Stack)

1. 스택의 개념 스택은 선형 자료구조의 일종으로 LIFO(Last In First Out)으로 동작한다. 스택의 대표적인 활용은 함수의 콜스택이다. 함수가 호출될 때 로컬 변수, 전달 인자, 반환값 주소 등(프로세서 아키텍처에 따라 조금씩은 다르지만)이 스택에 쌓이

2021년 10월 18일
·
0개의 댓글
post-thumbnail

엘라스틱서치 시스템 튜닝

엘라스틱서치는 속도향상을 위해 검색에 필요한 인덱스 파일들의 내용을 가상 메모리에 캐시해서 사용한다. 이 때 루씬 내부의 MMapDirectory 클래스를 활용해서 인덱스를 관리하는데, MMapDirectory은 유닉스 시스템 콜인 mmap을 사용해서 메모리 맵 파일을

2021년 9월 29일
·
0개의 댓글
post-thumbnail

엘라스틱서치 커스텀 플러그인을 작성하고 빌드하는 방법(with. gradle)

엘라스틱서치는 영어권 언어를 중심으로 만들어진 검색엔진이라 한글 검색을 제대로 하기 위해서는 다양한 커스텀 플러그인을 직접 작성하고 만들어서 사용해야한다. 한글은 유니코드 특성상 자음과 모음의 조합이 새로운 하나의 문자가 된다. 이러한 특성으로 인해 오타교정, 자동완

2021년 9월 12일
·
0개의 댓글
post-thumbnail

엘라스틱서치의 주요 검색 쿼리 정리

여기서는 엘라스틱서치 검색 API가 제공하는 쿼리 종류들 중 가장 자주 사용되는 쿼리들을 정리해보았다.모든 문서 검색text 타입의 필드로 검색할 때 사용하는 쿼리. 분석기를 통해 분리된 term들을 사용해 검색을 수행한다. 이 때 별도의 operator가 지정되지 않

2021년 9월 1일
·
0개의 댓글
post-thumbnail

SLM API를 사용한 백업 자동화

여기서는 기본적인 스냅샷 생성 및 스냅샷을 통한 인덱스 복구, 스냅샷 삭제에 대한 내용은 다루지 않는다. 해당 내용은 이미 아래 링크의 포스팅에 정리되어 있다.https://velog.io/@yaincoding/스냅샷-생성으로-인덱스-백업하고-복구하기엘라스틱서

2021년 9월 1일
·
0개의 댓글