본문 바로가기

전체 글

(215)
대규모 쿼리 최적화 1차 시도 (IN 방지..) (24.05.21) Trace와 Span 상황효율적 탐색 질의 :Trace와 Span 데이터가 존재. Trace의 PK를 Span이 FK로 가지는 1:N 매핑 관계'다수'의 Trace를 조회하고, 이와 연관된 '다수'의 Span을 매핑하여 가져와야 함.이를 위해 Trace를 IO를 통해 한번 조회하고, 이것의 Id Set을 통해 IN 연산을 사용하여 Span들을 가져오려고 했음.하지만 3번의 경우 대용량 데이터라 상당히 많은 시간이 소요될 것 같음. 이를 극복하기 위해 다음 방법이 유효한지?: '다른 조건'을 통해 Span의 모집단을 먼저 줄이고, 이후 Join이나 In 연산을 사용.ex)Trace id set (1, 2, 3 .. N) Spans in (traceId)를 바로 사용함 (많은 시간) Spans where t..
QueryProjection (24.05.03) 보호되어 있는 글입니다.
Record Pattern (24.05.03) 보호되어 있는 글입니다.
작업 중 발생한 Redis 동시성 문제 발생과 처리 Collector 모듈 동작 중 동시성 문제가 발생했다.원인은 꽤 명확한 것인데, Redis 객체 insert에 해당하는 Collection 객체가 Synchronized하지 않기 때문.   ... //스케줄러 동작 여하에 따라 데이터 임시 보관용 List private final List keepedMetricDtos = new ArrayList(); //Metric Table private final List keepedEtcDtos = new ArrayList(); //예외 체크용 //Redis Saver private final MetricRedisSaver metricRedisSaver = new MetricRedisSaver(); //Psql pri..
[소프티어] 나무 섭지 LV.3 문제https://softeer.ai/practice/7726 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai  자세한 내용은 원문 코드를 참조할 것. 풀이유령이 과연 남우를 잡을 수 있을까? 에 대한 풀이는 간단하다.BFS를 사용하여, '벽을 뚫을 수 있는' 유령의 최단거리보다 남우의 '최단거리' 가 짧으면 된다. 따라서, BFS를 유령 / 남우, 두 번씩 비교하여 최소값을 비교하면 된다. 여기서 시간 초과가 발생할 수 있는데, BFS의 범위 스코프를 '유령' 값의 스코프를 통해 비교해주면 된다.전체 탐색의 경우 2.08초(처음에 시간 초과가 발생했다)였으나, 풀이 이후 0.1초 이내로 풀 수 있었다. 하위 코드에서는 'ghostDist'를 통해 스코프를 제한했다.아래 코드에서 해..
[소프티어] 함께하는 효도 LV.3 문제https://softeer.ai/practice/7727 Softeer - 현대자동차그룹 SW인재확보플랫폼 softeer.ai  자세한 내용은 원문 코드를 참조할 것. 풀이 처음에는 dp[Idx][R][C]를 통해, 각 친구(idx)별 경로를 추적하여 dp를 사용하고자 했으나,백트래킹으로 각 위치별 수집량을 점유한 뒤, 이를 다음 친구로 적용하는 로직으로 풀이를 변경하였다. 풀이는 다음과 같다. 1. 0번째 인덱스(첫번째 친구)를 먼저 탐색한다.2. if 기저조건 : time = 3초일 경우 해당 값을 저장한 채로, idx를 증가한 뒤 재귀 함수를 시행한다(다음 친구 호출)3. 최종 조회 시 최대값을 비교한다.4. 백트래킹을 통해 가지치기를 수행한다. 자세한 내용은 코드를 참조할 것 코드 impor..
1520 - 내리막길[G3] 문제문제여행을 떠난 세준이는 지도를 하나 구하였다. 이 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 한 칸은 한 지점을 나타내는데 각 칸에는 그 지점의 높이가 쓰여 있으며, 각 지점 사이의 이동은 지도에서 상하좌우 이웃한 곳끼리만 가능하다. 현재 제일 왼쪽 위 칸이 나타내는 지점에 있는 세준이는 제일 오른쪽 아래 칸이 나타내는 지점으로 가려고 한다. 그런데 가능한 힘을 적게 들이고 싶어 항상 높이가 더 낮은 지점으로만 이동하여 목표 지점까지 가고자 한다. 위와 같은 지도에서는 다음과 같은 세 가지 경로가 가능하다.  지도가 주어질 때 이와 같이 제일 왼쪽 위 지점에서 출발하여 제일 오른쪽 아래 지점까지 항상 내리막길로만 이동하는 경로의 개수를 구하는 프로그램을 작성하시오.입력첫..
간단하게 Node와 bootStrap으로 정적 FE 웹 사이트 만들기 사전 설정 https://nodejs.org/en/download/current Node.js — Download Node.js®Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.nodejs.org Express 설치 : Express는 Node.js를 위한 가벼운 웹 프레임워크다. 이를 설치하기 위해 다음 명령을 실행한다.npm install express server.js는 다음과 같이 설정했다.const express = require('express');const app = express();app.get('/', (req, res) => { res.send('Hello World!');});const PORT = p..