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 알고리즘에서 주로 사용되는 원자적 연산으로 멀티 스레드 환경에서 동시성 문제를 ..
유료 버전 쓰다가 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불변 객체로, 문자열 변경 시 새로운 객체가 생성되어 기..
우선순위 큐우선순위 큐 (Priority Queue)는 요소들이 우선순위에 따라 처리되는 자료구조입니다. 기본적으로 큐와 비슷하게 동작하지만, 큐는 FIFO 방식으로 작동하는 반면, 우선순위 큐는 요소들이 삽입된 순서와 상관없이 우선순위가 높은 요소가 먼저 처리됩니다. Java에서 우선순위 큐는 PriorityQueue 클래스를 통해 제공됩니다. 이 클래스는 내부적으로 최소 힙을 사용하여 요소들을 정렬하며, 기본적으로 요소들의 자연 순서(예: 숫자는 오름차순, 문자열은 알파벳 순)로 정렬됩니다. 커스텀 우선순위가 필요하면 Comparator를 사용하여 정의할 수 있습니다.우선순위 큐 특징1. 요소를 삽입할 때 우선순위에 따라 자동 정렬됩니다.2. 기본적으로 최솟값을 먼저 반환합니다.3. O(1)로 우선순..
탐욕법은 문제를 해결할 때 현재 단계에서 가장 최선의 선택을 반복적으로 수행하여, 전체 최적해(Optimal solution)에 도달하려고 하는 알고리즘입니다.탐욕법의 핵심 개념1. 탐욕 선택 속성현재 단계에서 가장 최선의 선택을 함으로써 최적해를 구할 수 있는 속성.탐욕적 선택이 전체 문제에 영향을 미치지 않고 독립적이어야 함.2. 최적 부분 구조문제의 최적해가 부문 문제의 최적해로 구성되어야 함.동적 계획법(DP)에서도 사용되는 개념으로, 탐욕범의 필수 조건 중 하나.탐욕법의 장단점장점단순성과 효율성: 구현이 쉽고, 문제를 빠르게 해결할 수 있음.속도: 동적 계획법이나 완전 탐색 보다 일반적으로 더 빠름.단점최적해 보장 불가: 모든 경우에서 최적해를 보장하지 않음.문제에 대한 제약 조건 필요: 탐욕 ..
- Total
- Today
- Yesterday
- If
- find
- isalpha
- permutations
- isdigit
- operators
- counter
- Upper
- function
- Lower
- zip
- bool
- combinations
- Method
- Lambda
- Python
- for
- Built-in Functions
- index
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
