Redis는 무엇이며 장점은?레디스는 키-값 구조의 비정형 데이터를 저장하고 관리하는 비관계형 DB입니다. 인메모리에 모든 데이터를 저장하여 데이터의 처리 속도가 매우 빠른 장점이 있습니다. 디스크 보다 메모리가 데이터 처리 속도가 빠른데 RDBMS는 대부분 디스크에 데이터를 저장하고 레디스는 메모리(RAM)에 데이터를 저장합니다.Redis 주요 사용 사례캐싱, 세션관리, 메시지 큐, 실시간 채팅 및 메시징 등 내장된 기능이 많아서 사용하는 용도가 많습니다. 레디스 설명은 이 정도만 하고 레디스에서 제일 많이 사용되는 캐시 적용 및 레디스의 클러스터 구성에 대해서 설명하겠습니다.캐시, 캐싱이란?원본 저장소 보다 빠르게 가져올 수 있는 임시 데이터 저장소를 의미를 캐시라고 하고 임시 저장소에 접근해서 데이..
JPA 프로젝트에서 update는 어떤 방식으로 하는 게 좋을까?JPA 프로젝트를 하면서 가장 많이 쓰게 되는 기능 중 하나가 update입니다. 개발을 하다 "어떤 방식이 더 좋은 걸까" 하는 고민이 생겼습니다. 이글에서는 그 부분을 정리해보려고 합니다. 제가 고민하는 두 가지 방식1. JPA의 장점인 Dirty Checking(변경 감지) 활용해서 엔티티의 필드를 직접 수정하는 방법2. 새로운 객체를 만들어 교체하는 방법 두 가지 방법 모두 장단점이 있다고 GPT가 대답해 줍니다. 이번 글에서는 각각 어떤 특징이 있는지 그리고 실제로 언제 쓰면 좋을지 제 생각을 정리해 보겠습니다. 먼저 변경 감지를 활용해 필드를 직접 수정하는 방법입니다.@Transactionalpublic void updateDep..

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에 과도한 부하가 발생합니다. 적절한 인덱스가 없거나 기존 인덱스가 비효율적으로 설계된 ..
- Total
- Today
- Yesterday
- permutations
- Lower
- operators
- bool
- Upper
- function
- Method
- index
- Python
- isalpha
- If
- find
- for
- Lambda
- zip
- isdigit
- Built-in Functions
- counter
- combinations
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |