일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Kotlin In Action
- spring
- 코틀린
- KotlinInAction
- 스프링 핵심 원리
- 스프링 컨테이너와 스프링 빈
- Kotlin in action 5장
- 자바 ORM 표준 JPA 프로그래밍 7장
- 고급매핑
- 객체 지향 설계와 스프링
- 스프링 핵심 원리 - 기본편
- 스프링 핵심 원리 이해
- 20055 컨베이어 벨트 위의 로봇
- 싱글톤 컨테이너
- 13460 구슬탈출 2
- 백준 20055 컨베이어 벨트 위의 로봇
- Kotlin in action 10장
- 백준 13460 Python
- kotlin in action 정리
- 컨베이어 벨트 위의 로봇 Python
- 백준
- Kotlin in action 6장
- Kotlin
- 코틀린인액션
- 7장 고급매핑
- 코틸린인액션
- 기능개발 python
- Python
- Kotlin in action 3장
- 20055
- Today
- Total
기록하는 습관

** Elasticsearch를 공부하며 정리한 글입니다. ## 들어가며 Elasticsearch에서 제공하는 동의어 기능 synonym token filter : 색인시 사용하는 필터 synonym graph token filter : 검색시 사용하는 필터 동의어는 색인할 때 보다, 검색할 때 처리하는 것이 성능이 더 좋다. 관련 자료: 동의어로 Elasticsearch의 성능 강화 동의어를 수동으로 진행하는 이유 게임 용어 동의어 같은 경우, 줄임말이 가장 흔하다. 하지만 이는 직접 만드는 줄임말이기 때문에 학습을 시키지 않는 이상 사용자가 직접 등록하는 작업이 필요하다. 동의어에 대한 open api를 조사했지만 게임 용어에 대한 api는 제공하고 있지 않다. 결론: 일반 용어: api 사용 게임 ..

** Elasticsearch를 공부하며 정리한 글입니다. Elasticsearch에서는 인덱스 매핑 정보가 바뀌면 업데이트 하는 과정이 어렵다. reindex를 통해 다시 인덱스 생성을 한 후 reindex api 호출을 통해 기존 인덱스를 지우고 다시 만들었다. 하지만 이 과정은 document 수가 10만가지만 넘어가도 서비스 흐름이 끊어지게 된다. 따라서 alias를 이용해reindex를 무중단하게 진행해보려고 한다. # reindex 시 알고 있어야 하는 사항 1. _source 는 enabled 상태인 index만 reindex가 가능하다. 2. reindex는 복사가 아니다. 즉 reindex를 하려는 index의 mapping정보도 똑같이 카피되는 것이 아니라. 데이터만 넣기 때문에 이때 ..

** Elasticsearch를 공부하며 정리한 글입니다. Lucene은 내부적으로 일정 크기의 buffer(In-memory buffer)를 가짐. 만약, 내부 버퍼가 없다면 매번 색인하여 세그먼트를 만들어야 할 것이다. Lucene에 색인 작업이 요청될 때 전달된 데이터는 인메모리 버퍼에 순서대로 쌓임 정책에 따라 내부 버퍼에 일정 크기 이상의 데이터가 쌓이거나, 일정 시간이 흐를 경우 버퍼에 쌓은 데이터를 한번에 처리함. 인메모리 버퍼의 데이터를 처리하기 전 인메모리 버퍼의 데이터를 처리한 후 한 번에 처리된 데이터는 segment 형태로 생성되고 즉시 Disk로 동기화 됨. -> Disk 동기화까지 되어야 검색이 가능해짐!!!! 문제점 Segment 생성될 때마다 물리적 동기화를 진행하면 성능이 ..

** Elasticsearch를 공부하며 정리한 글입니다. [ 색인 이중화 ] 참고 검색 서비스 운영 중에 실수로 색인을 잘못 만들어 검색결과에 일부 데이터가 누락된 일이 있다면? 원본 색인(some-index)의 문제로 인한 장애를 발견한다. 새로운 색인(some-index-new)을 만든다. 스냅샷 또는 원본 데이터 저장소로부터 데이터를 추출하여 새로 만든 색인(some-index-new)에 색인한다. 검색 클라이언트 코드 내에 하드코딩되어 있는 색인명(some-index)을 새로 만든 색인명(some-index-new)으로 변경하고 배포한다. 여기에는 두 가지 문제점이 있다. 첫번째는 위 과정이 완료될 때까지 장애가 서비스에 그대로 노출된다는 점이다. 색인하는 것은 검색 서비스에서 가장 많은 시간이..

HTTP 완벽 가이드 10장 10.1 HTTP/2.0의 등장 배경 HTTP/1.0의 메시지 포맷은 구현의 단순성과 접근성에 주안점을 두고 최적화 되었기에, 성능을 희생시킨 면이 있다. 대표적으로 커넥션 하나를 통해 요청 하나를 보내고 응답을 받아야만 다음 요청을 보낼 수 있기 때문에 심각한 회전 지연이 생겼다. 이 문제를 해결하기 위해, 병렬 커넥션, 파이프라인 커넥션이 도입되었지만 근본적인 해결책은 되지 못했다. 성능 개선을 위한 여러 아이디어들이 제시가 됐고, 그 중 구글의 SPDY 프로토콜을 기초로 HTTP/2.0이 설계되었다. SPDY: 비표준 개방형 네트워크 프로토콜로, 기존의 HTTP에 속도를 개선하기 위해 여러 가지 기능을 추가. 헤더를 압축하여 대역폭 절약 하나의 TCP 커넥션에 여러 요청..

[ 컴포넌트 스캔과 의존관계 자동 주입 시작하기 ] 지금까지는 스프링 빈을 등록할 때 자바 코드의 @Bean이나 XML의 등을 통해서 설정 정보에 직 접 등록할 스프링 빈을 나열했다. 만약 등록해야 할 빈이 수백개가 된다면 관리하기 번거로워진다. 따라서, 스프링은 설정 정보가 없어도 자동으로! 스프링 빈을 등록하는 컴포넌트 스캔 기능을 제공한다. 의존 관계도 자동으로 주입해주는 @Autowired 기능도 제공한다. 컴포넌트 스캔(Component Scan) @Component 어노테이션이 붙은 모든 클래스를 스캔해서 스프링 빈으로 등록한다. 이 때, 스프링 빈의 기본 이름은 클래스명을 사용하되 맨 앞글자만 소문자를 사용한다. 빈 이름 기본 전략: MemberServiceImpl 클래스 -> memberS..

[ 싱글톤(Singleton) 패턴 ] 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴이다. 객체 인스턴스를 2개 이상 생성하지 못하도록 private 생성자를 사용해서 외부에서 임의로 new 키워드를 사용하지 못하도록 한다. 싱글톤 미적용 상태 스프링 없는 순수한 DI 컨테이너인 AppConfig는 요청을 할 때 마다 객체를 새로 생성한다. 만약, 고객 트래픽이 초당 100이 나오면 초당 100개 객체가 생성되고 소멸된다.. -> 메모리 낭비가 심함! 싱글톤 적용 상태 이 객체 인스턴스가 필요하면 오직 getInstance() 메서드를 통해서만 조회 할 수 있다. 이 메서드를 호출하면 항상 같은 인스턴스를 반환한다. [ 싱글톤 패턴 문제점 ] 싱글톤 패턴을 구현하는 코드 자체가 많이 ..
2019년부터 해오던 목표 세우기와 회고를 2021년은 절반이 지난 6월말이 되어서야 한다. 2020년 12월부터 '스마일게이트 Dev Camp' 인턴십을 진행해 2021년 2월에 종료된 후 약 2주 정도 휴식을 가진 후에 2021년 3월부터 정규직으로 다니게 되었다. 정규직이 된 후 신입 3개월 프로젝트를 진행하느라 6월까지 2021년은 절반 참 바쁘게 살아왔던거 같다. 문득 내 2021년 목표가 생각나서, 절반이 지났지만 아직 절반이 남았기에..! 목표를 세워보려고 한다. 2021년 목표 1. 회사에서 배운 기술들, 얻게 된 지식들을 기록하는 습관 들이기. (회사 쉐어포인트 사용) 2. Java 마스터가 되기 -> Spring 프로젝트 1개 이상 진행하기 3. 알고리즘 꾸준히 풀어서 감 잃지 않기 (..