분류 전체보기 2527

[Elasticsearch] 데이터 모델링 기초

인덱스인덱스는 도큐먼트를 저장하는 논리적 단위관계형 데이터베이스의 테이블과 유사한 개념인덱스에 다수의 도큐먼트가 포함되는 구조인데, 동일한 인덱스에 있는 도큐먼트는 동일한 스키마를 가짐기본적으로 인덱스는 용량이나 숫자 제한 없이 무한대의 도큐먼트를 포함할 수 있기 때문에 이론적으로는 하나의 인덱스에 수백만, 수억 개의 도큐먼트가 저장될 수 있음하지만 인덱스 크기가 커질 경우 검색 시 많은 도큐먼트를 참조해야하기 때문에 성능 저하 유발 가능따라서 운영 환경에서는 인덱스 용량 제한을 두는 것을 권장기본적으로 특정 도큐먼트 개수에 도달하거나 특정 용량을 넘어서면 인덱스를 분리혹은 일/주/월/년 단위 같은 날짜/시간 단위로 인덱스를 분리하기도 하며 이 경우 특정 날짜의 데이터를 쉽게 처리 가능 인덱스 생성 (S..

Elastic Search 2024.06.06

[Programmers] 조건에 맞는 사원 정보 조회하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/284527 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr MySQL을 이용하여 풀었습니다.우선, 2022년 기준 사원의 연간 점수 합산을 담은 테이블 FULL_SCORE를 생성한 뒤 HR_EMPLOYEES 테이블과 INNER JOIN 하여 답을 구했습니다.  개발환경: Programmers IDE   지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Elasticsearch] 개념과 용어 정리

Elasticsearch 개요오픈 소스 분산 검색 엔진이자 분석 엔진으로, Apache Lucene 기반으로 만들어짐대용량 데이터를 실시간으로 처리하고 분석하는데 유용다양한 형태의 데이터를 색인할 수 있으며 복잡한 검색 쿼리에 대해서도 빠르고 정확한 응답 제공특히 로그 및 이벤트 데이터, 텍스트 기반 데이터, 시계열 데이터 등을 처리하는 데 유용 OpensearchAWS가 주도하여 개발한 오픈 소스 검색 및 분석 엔진Elasticsearch와 Kibana의 오픈 소스 분기를 기반으로 하며, 검색, 로그 분석, 시각화 및 모니터링을 위한 다양한 기능을 제공하기 때문에 기본적으로 Elasticsearch에 대한 개념을 알아야 쉽게 사용할 수 있음사용자가 자유롭게 사용할 수 있고 개설할 수 있는 환경 제공맞춤..

Elastic Search 2024.06.02

[Programmers] 에어컨

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/214289 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 바텀업 DP로 풀었습니다.cache[분][온도] 이차원 배열은 현재 분에 온도를 유지하기 위해 소모된 최소 전력을 표현하며 반복문을 통해 cache 배열을 업데이트했습니다.  개발환경: Programmers IDE   지적, 조언, 질문 환영합니다! 질문 남겨주세요~

백준 27989번 가장 큰 증가하는 부분 수열 2

문제 링크입니다: https://www.acmicpc.net/problem/27989 맥스 펜윅 트리를 활용하는 문제였습니다. 알고리즘은 다음과 같습니다.1. cache는 수열 A를 오름차순으로 정렬한 배열입니다.2. 수열 A를 순회하며 이분탐색을 통해 현재 A[i]가 cache에 위치한 인덱스를 찾습니다.2.1 +1을 하는 이유는 A는 0-인덱스인 반면 펜윅 트리는 1-인덱스이기 때문입니다.3. A[i]보다 작은 모든 값들에 대해 현재까지 계산된 최대 부분합을 구합니다.4. 3번에서 구한 값과 A[i]를 합치면 현재 인덱스까지의 최대 부분합을 구할 수 있습니다. 해당 값을 펜윅 트리의 idx 위치에 업데이트합니다.5. 2 ~ 4번 과정을 반복한 뒤 N번째 인덱스에 대해 쿼리를 수행하면 답을 구할 수 있..

알고리즘/BOJ 2024.05.29

[SpringBoot] Springdoc Swagger 적용

서론현재 진행 중인 프로젝트에 Spring Rest Docs를 적용하려 했으나, 팀원들이 각 API마다 테스트 코드를 작성하는 데 부담을 느끼는 것 같아 우선 Swagger를 적용하기로 했습니다.프로젝트에는 Spring Security가 적용되어 있고, 멀티 테넌시를 위해 커스텀 헤더를 전달해야 했기 때문에 Swagger 적용이 쉽지 않았습니다.비슷한 환경에 계신 분들께 도움이 되길 바라며, 부족하지만 Springdoc Swagger 적용기를 공유합니다. 개발 환경SpringBoot 2.6.3java 1.8springdoc-openapi-ui 1.6.11 빨리 SpringBoot 3.2.X 버전 + JDK 21로 넘어가서 Virtual Thread 다루어 보고 싶다.... Springfox vs Spri..

리서치 2024.05.28

[Programmers] 분기별 분화된 대장균의 개체 수 구하기

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/299308 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr MySQL을 이용하여 풀었습니다.   개발환경: Programmers IDE   지적, 조언, 질문 환영합니다! 질문 남겨주세요~

[Cloud] AWS Cloud 기초 part 2

서론사내 온라인 강의 내용을 정리한 글입니다.틀린 내용이 있을 수 있으니, 발견되면 댓글로 지적해 주시기 바랍니다! AWS Cloud 기초 part 1은 다음 링크를 참고하시면 됩니다.https://jaimemin.tistory.com/2506 [Cloud] AWS Cloud 기초서론사내 온라인 강의 내용을 정리한 글입니다. 틀린 내용이 있을 수 있으니, 발견되면 댓글로 지적해 주시기 바랍니다! 1. AWS(Amazon Web Services)컴퓨팅, 스토리지, 데이터베이스, 분석 등등 광범위jaimemin.tistory.com 1. EBS 1.1 스토리지 개념데이터를 일시적으로 또는 지속적으로 저장하기 위한 공간저장된 데이터는 나중에 필요할 때 검색, 수정, 삭제 등의 작업을 수행스토리지는 주로 컴퓨터..

Cloud 2024.05.20

[아이템 90] 직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라

앞서 아이템 87, 아이템 88, 그리고 아이템 89에서 언급했던 것처럼 Serializable을 구현하기로 결정한 순간 언어의 생성자 이외의 방법으로도 인스턴스를 생성할 수 있게 됨에 따라 버그 및 보안 문제가 발생할 가능성이 커집니다.위 문제를 해결하기 위해 커스텀 직렬화, readObject() 또는 readResolve()를 직접 구현하여 위험성을 낮출 수 있지만, 직렬화 프록시 패턴(Serialization Proxy Pattern)을 사용하여 위험을 낮출 수도 있습니다.직렬화 프록시 패턴은 일반적으로 아이템 88에서 다룬 readObject()의 방어적 복사보다 강력함 직렬화 프록시 패턴바깥 클래스의 논리적 상태를 정밀하게 표현하는 중첩 클래스를 설계해 private static으로 선언해당 ..

JAVA/Effective Java 2024.05.19

[아이템 89] 인스턴스 수를 통제해야 한다면 readResolve보다는 열거 타입을 사용하라

싱글턴이란?클래스의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴 싱글턴 객체를 직렬화할 때 발생하는 문제점클래스에 마커 인터페이스인 Serializable을 구현하는 순간 더 이상 싱글턴 객체가 아님아이템 87에서 언급한 커스텀 직렬화를 사용하더라도, 아이템 88에서 언급한 커스텀 readObject() 메서드를 사용하더라도 소용없음어떤 readObject() 메서드를 선언하든 해당 클래스가 초기화될 때 만들어진 인스턴스와는 별개인 인스턴스를 반환 readResolve() 기능을 이용할 때readObject()가 생성한 인스턴스를 다른 것으로 대체 가능역직렬화한 객체의 클래스가 readResolve() 메서드를 적절히 구현했다면 역직렬화 후 새로 생성된 객체를 인수로 해당 메서드가 호출되고..

JAVA/Effective Java 2024.05.18