본문 바로가기

전체 글

(215)
메이즈 러너[G3] https://www.codetree.ai/training-field/frequent-problems/problems/maze-runner/description?page=1&pageSize=20&statuses=Passed 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai 풀이 핵심은 먼저 배열 돌리기 시 '상대좌표'를 사용해서 돌리는 것.두번째로 브루트 포스를 사용하여 가장 작은 사각형 위치를 찾는 것 두가지다.모험가 이동 패턴은 전반적으로 무난했는데, 이게 왜 G3인지 이해하기 쉽지 않다..import java.io.*;import java.util.*..
[DB]psql 하드웨어 성능 튜닝 (24.07.10) PostgreSQL을 처음 설치하면 기본 설정으로 작동한다. 하지만 하드웨어 사양에 맞춰 설정을 조정하면 성능을 크게 향상시킬 수 있다.메모리 설정shared_buffers를 늘리면 데이터 캐시가 증가하여 쿼리 성능이 향상된다.work_mem을 조정하면 복잡한 쿼리나 정렬 작업이 빨라진다.CPU 활용max_parallel_workers와 max_worker_processes를 통해 여러 CPU 코어를 효율적으로 사용할 수 있다. 이는 대용량 데이터 처리를 빠르게 해준다.디스크 I/O 최적화effective_io_concurrency를 통해 디스크 작업의 동시성을 최적화하면, 디스크 읽기/쓰기 속도가 향상된다.wal_buffers를 적절히 설정하면 쓰기 작업 성능이 개선된다.이러한 설정 조정을 통해 Pos..
Transaction : Out of shared memory, DeadLock (24.07.01) Out of shared memory 자체적으로 개발 중인 Collector 로직에서, 시간에 따른 노후화된 시간 파티션을 제거하는 로직이 있다.이것은 Scheduler와 엮여 매 설정된 시간마다 Drop 및 새로운 시간 파티션 테이블을 Create 하는데 문제가 발생했다.   에러를 보아하니,1. 조건에 맞는 오래된 파티션 테이블이 다수이며 (로깅을 확인해 본 결과 약 200개 이상의 테이블로 사료된다. 이는 파티션 생성 로직만 냅두고 오랜만에 Drop을 하기 때문.. )2. 이것을 삭제 실패하는 경고문을 확인할 수 있었다. 원인 : 메모리 부족늘 그렇듯 트랜잭션을 통해 민감한 작업 실행 시 이를 묶어서 격리해야 하는데, 이것의 용량이 부족하다는 의미이다.아마 새로운 테이블을 생성하는 작업은 상대적으로..
포탑 부수기[G1] https://www.codetree.ai/training-field/frequent-problems/problems/destroy-the-turret/description?page=1&pageSize=20 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.www.codetree.ai 2트만에 성공주요 쟁점은 배열 대신 Tower 객체를 사용하는 것.그리고 Compable과 핸디캡 쪽 순서 처리.  import java.util.*;import java.io.*;class Main { static int N, M, K; static Tower[][] map; static List to..
JVM 영역의 기본 개념과 GC (24.06.19) JVM 영역 정리JVM은 크게 여러 메모리 영역으로 나눌 수 있다. 각 영역은 특정 목적을 가지고 있으며, 효율적인 메모리 관리를 위해 사용된다. 주요 메모리 영역은 다음과 같다  HeapYoung GenerationEden Space: 객체가 처음 생성되는 공간이다.Survivor Space: Eden에서 살아남은 객체들이 이동하는 공간이다. S0(Survivor 0)와 S1(Survivor 1) 두 개의 영역으로 나뉜다.Old Generation: Young Generation을 거쳐 오래 살아남은 객체들이 이동하는 공간이다.Metaspace클래스 메타데이터를 저장하는 공간이다. JVM 8부터 PermGen이 제거되고 Metaspace로 대체되었다.Stack각 스레드마다 별도로 존재하며, 메서드 호출..
[인덱스] 순차 증가 값은 항상 효율적인가? (24.06.12) 궁금증b-tree 기반의 인덱스에서, '삽입' 연산에서 일반적으로 순차적으로 증가하는 값이 성능상 이점이 있다고 알고 있다.그런데, 이는 Auto-increment같은 옵티마이저가 메타데이터를 통해 예측한 값들이 중점이 되는 이유를 들을 수 있었다. (이는 데이터가 증가할 것을 예상할 수 있기 때문에, 노드에 값을 삽입할 때 빠르게 넣을 수 있게 '예측'할 수 있다.)만약 데이터가 '아무런 메타데이터가 없지만', 실제로는 외부 로직에 의해 항상 순차적으로 증가하는 값이라고 할 때(즉, 옵티마이저는 값을 예상할 수 없지만 실제로는 항상 순차적으로 증가하는 값일때) 이것은 완전한 '랜덤 난수' 에 비해 삽입 측면에서 이점이 있을까?순차적으로 증가하는 값의 장점 : 리프 노드 분할 감소B-tree 인덱스는 데..
GC - Major, Minor 가비지 컬렉션에 대한 정리 (24.06.05) 개념Minor GC와 Major GC는 JVM의 가비지 컬렉션에서 중요한 역할을 하는 두 가지 유형의 가비지 컬렉션 이벤트이다. 이 두 가지 GC의 차이점과 동작 방식을 자세히 설명하겠다.Minor GC개요:Minor GC는 Young Generation에서 발생하는 가비지 컬렉션이다. Young Generation은 Eden 영역과 두 개의 Survivor 영역(S0, S1)으로 구성된다.동작 방식:Eden 영역이 가득 찰 때 발생:새로운 객체가 주로 Eden 영역에 할당된다. Eden 영역이 가득 차면 Minor GC가 발생한다.생존 객체 이동:Minor GC 동안, Eden 영역의 모든 객체가 검사된다. 살아남은 객체는 Survivor 영역(S0 또는 S1)으로 이동한다.하나의 Survivor 영역..
Opentelemetry 대표적 수집 metric 정리 (24.05.28) Heap Memory (jvm.memory.used)요약PS Old Gen (Permanent Space Old Generation)역할: 오래된 객체를 저장하는 공간이다.상세 설명:Old Gen 또는 **Tenured Gen**으로도 불린다.대부분의 객체는 생성 후 곧바로 소멸되지만, 오랫동안 참조되는 객체는 **Old Gen**으로 이동한다.Old Gen 영역에서 객체가 차지하는 메모리가 많아지면 Full Garbage Collection(Full GC)이 발생하여 오래된 객체들을 정리한다.Full GC는 응답 시간이 길어질 수 있기 때문에, **Old Gen**의 메모리 사용량을 모니터링하는 것이 중요하다.PS Survivor Space역할: 새롭게 생성된 객체들이 일시적으로 머무르는 공간이다.상세..