ExecutorService와 ForkJoinPool는 Java에서 멀티 스레드를 관리하는 데 사용되는 두 가지 주요 클래스로 각기 다른 목적과 특성을 가지고 있습니다. 아래에서 두 클래스의 용도를 설명하겠습니다.ExecutorService멀티 쓰레드 작업을 관리하고 실행하는 인터페이스Executor를 상속하여 작업을 실행할 책임까지 담당하고 주로 스레드 풀에서 작업을 처리TheadPoolExecutor가 대표적인 구현체로 이 인터페이스는 여러 가지 기능을 통해 멀티스레드 작업을 효율적으로 처리작업 후 shutdown 호출되기 전까지 계속해서 다음 작업을 대기하기 때문에 반드시 shutdown을 호출비동기 작업 기능submit: Runnable이나 Callable 작업을 제출하고 작업이 완료된 후 Fut..

ConcurrentLinkedQueue와 LinkedBlockingQueue는 모두 큐(Queue) 자료구조로, 멀티스레드 환경에서 사용되는 안전한 큐 구현체입니다. 두 클래스는 각각의 특징에 따라 서로 다른 사용 사례에 적합합니다. 아래에서 각각에 대해 설명드리겠습니다.ConcurrentLinkedQueueNon-blocking Queue, Lock-free, CAS(Compare and Swap) 방식 동작하여 여러 스레드가 동시에 큐에 접근 가능큐에 꺼낼 원소가 없다면 즉시 리턴하여 다른 일을 수행생산자- 소비자 패턴에서 소비자가 많고 생산자가 하나인 경우 적합CAS(Compare and Swap)Non-blocking 알고리즘에서 주로 사용되는 원자적 연산으로 멀티 스레드 환경에서 동시성 문제를 ..
위 내용은 업무에 바로 쓰는 SQL 튜닝 중 2장의 인덱스와 뷰를 정리한 글입니다.인덱스데이터베이스에서 키값으로 실제 데이터 위치를 식별하고 데이터 접근 속도를 높이고자 생성되는, 키 기준은 정렬된 오브젝트이다. 예를 들어, 천만 건의 데이터가 있는 테이블이 있을 때, 원하는 정보를 찾기 위해 첫 행부터 마지막 행까지 순차적으로 검색하는 방법은 데이터 양이 많아질수록 검색 속도가 급격히 느려지고 비효율적이다. 이러한 문제를 해결하기 위해 인덱스를 사용하면 키워드 기반으로 검색이 가능하여 데이터를 빠르게 찾을 수 있다. 인덱스는 책의 목차와 같은 역할을 하며, DBMS이 효율적인 검색을 수행할 수 있도록 돕다.고유 인덱스와 비고유 인덱스고유 인덱스고유 인덱스는 말그래도 열들의 데이터가 유일하다는 의미이다...

유료 버전 쓰다가 IntelliJ IDEA CE(무료 버전)로 변경하면서 발생한 오류입니다. 무료 버전은 Spring Boot를 지원하지 않아, 유료버전에서 작성된 Spring Boot 프로젝트가 Unknown 문자로 표시되었습니다. 무료 버전에서 Edit Configurations 설정을 변경하여 이 오류를 해결해 보겠습니다.1. ▶ 버튼으로 Run 클릭아래와 같은 오류가 발생합니다.아래의 경로로 이동하여 Build and run using과 Run tests using을 IntelliJ IDEA로 변경IntelliJ IDEA → Settings → Build, Execution, Deployment → Build Tools → Gradle2. ▶ 버튼으로 Run 클릭아래와 같은 오류가 발생한다면 Ed..

과거 레거시 시스템을 리팩터링 할 때, 문자열 변경 작업이 빈번하게 발생하면서 성능 문제가 발생했던 적이 있습니다. 당시에는 String 클래스가 사용되고 있었는데, 이 클래스는 불변 객체이기 때문에 문자열이 변경될 때마다 새로운 객체를 생성하는 특성으로 인해 메모리 사용량이 증가하고 처리 속도가 느려지는 문제가 있었습니다. 이를 해결하기 위해 StringBuffer 클래스를 도입하여 기존 객체를 수정하는 방식으로 작업을 처리했고, 이를 통해 성능 문제를 효과적으로 해결할 수 있었습니다. 당시에는 속도 개선이라는 결과에만 초점을 맞췄지만, 지금은 그 원리와 동작 방식에 대해 더 깊이 이해하고자 합니다.문자열 클래스의 특성과 동작 원리1. String불변 객체로, 문자열 변경 시 새로운 객체가 생성되어 기..

1. 개요이 보고서는 콘서트 예약 시스템의 부하 테스트 결과를 기반으로 발생할 수 있는 다양한 장애 상황과 이에 대한 대응 방안을 제시하고, 이를 통해 시스템의 안정적인 운영을 위해 필요한 전략과 개선 방향을 정리합니다.2. 가상 장애 대응 문서인기 콘서트의 좌석 정보 조회상황다수의 사용자가 동시에 인기 있는 콘서트의 좌석 정보를 조회하는 경우장애 발생 시나리오많은 사용자가 동시에 동일한 데이터를 조회하면서 데이터베이스 서버에 과부하가 발생하고, 이로 인해 응답 시간이 급격히 증가하거나 DB가 다운되는 상황이 발생할 수 있습니다.병목 구간인기 콘서트 좌석 정보를 조회하는 쿼리가 동시에 여러 요청을 처리하려 할 때 DB에 과도한 부하가 발생합니다. 적절한 인덱스가 없거나 기존 인덱스가 비효율적으로 설계된 ..

부하테스트시스템, API 또는 애플리케이션이 동시 사용자 수나 요청량 증가에 따라 성능이 어떻게 변화하는지를 측정하는 중요한 과정입니다. 이를 통해 특정 부하 상황에서 시스템의 응답 속도를 확인하고, 초당 처리 가능한 요청 수를 평가하며, 부하 증가 시 시스템이 안정적으로 작동하는지 확인할 수 있습니다. 또한 성능 저하의 원인을 유발하는 코드, DB 설정, 또는 서버 환경을 파악하여 병목현상을 제거하고 성능을 최적화하는 데 활용됩니다. 이러한 테스트의 결과는 시스템 안정성과 성능 개선의 중요한 기준점을 제공합니다.K6JavaScript 기반의 오픈소스 부하 테스트 도구로, API, 웹 서비스, 또는 애플리케이션의 성능 테스트를 목적으로 사용됩니다. 이도구는 Go 언어로 작성되어 경량화되고 빠른 성능을 ..
- Total
- Today
- Yesterday
- Upper
- index
- function
- Python
- If
- bool
- permutations
- Built-in Functions
- counter
- isalpha
- combinations
- isdigit
- find
- Lower
- for
- Method
- Lambda
- zip
- operators
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |