728x90
반응형
SMALL

전체 글 75

5_2.페이징 처리 및 최적화 사례

학습 내용페이징 처리 개념페이징의 한계페이징 최적화 전략학습정리1. 페이징 처리 개념OFFSET 과 LIMITOFFSET : 데이터베이스에서 결과의 집합의 시작위치OFFSET 10 -> 11번째 행부터 결과를 반환LIMIT : 결과 집합에서 최대 행 수를 지정LIMIT 10 -> 10개의 결과를 반환# ORDER BY로 데이터 정렬 OFFSET 20으로 21번째부터 LIMIT 10 10개의 데이터를 반환# ORDER BY시동일한 레코드를 가진 경우가 있을 때 셔플현상이 일어남# id도 추가해서 방지SELECT * FROM products ORDER BY id LIMIT 10 OFFSET 20;2. 페이징의 한계OFFSET이 큰 경우 성능 저하 발생데이터베이스는 OFFSET에 지정 된 값 만큼 데이터를 건..

TIL 2025.01.21

5_1.인덱스 설계 및 활용

인덱스 설계 및 활용학습 내용인덱스 개념 이해인덱스 유형인덱스 설계 전략학습정리1. 인덱스 개념 이해인덱스란?테이블에서 특정 데이터를 빠르게 찾기 위해 사용되는 데이터 구조테이블 내의 데이터를 효율적으로 정렬하여 조회 성능을 높임인덱스의 동작원리B-Tree 구조 (Self-balancing Tree: 자기 균형 트리)RDB에 사용되는 기본적인 인덱스 구조균형잡힌 트리 구조로 데이터를 관리노드 키 : 노드가 관리하는 데이터 값 또는 범위포인터 : 자식 노드 또는 데이터 레코드 위치장점 범위검색, 정렬 작업에 빠르다.인덱스명 관습 : idx__인덱스 추가 방법 (MySQL)CREATE INDEX 명령어 사용CREATE INDEX 인덱스명 ON 테이블명 (컬럼1, 컬럼2, ...);테이블 생성시 인덱스 추가..

TIL 2025.01.20

4_5.리더보드와 Sorted Set 실습

학습내용리더보드 구현 Sorted Set리더보드 최적화Redis Pub/Sub학습정리1. 리더보드 구현 Sorted Set//사용자추가public void addPlayerScore(String player, Double score) { jedis.zadd(LEADERBOARD_KEY, score, player); log.info("Player {} updated wtih score : {}", player, score);}//사용자 조회public void getTopPlayer(Integer topN) { List topPlayers = jedis.zrangeWithScores(LEADERBOARD_KEY, 0, topN - 1); int rank = 1; for (Tuple topPlaye..

TIL 2025.01.17

4_4.Redis와 캐싱 전략, 최적화 실습

학습내용Redis를 활용한 캐싱전략Redis 성능 최적화데이터 일관성 문제 해결학습정리1. Redis를 활용한 캐싱전략@Slf4j@Service@RequiredArgsConstructorpublic class CategoryService { //상수로 redis키 설정 //전역으로 쓰는 상수값은 constants 패키지에서 관리 private static final String CACHE_KEY_CATEGORY_STRUCT = "category_struct"; private static final String CACHE_KEY_PRODUCT_COUNT = "product_count"; private final RedisService redisService; private final Catego..

TIL 2025.01.16

4_3.Redis 데이터 타입 활용

학습내용Redis 주요 데이터 타입Redis 데이터 타입 활용 예제Redis CLI 기본명령어 (간단)학습정리1. Redis 주요 데이터 타입public void redisTypeExample() { log.info("RedisTypeExample"); //===String========== //하나의 키에 하나의 문자열, 숫자 데이터 저장 //숫자를 문자로 저장해도 숫자로 인식을 해서 더하기 빼기가 가능 jedis.set("username", "꿀승"); jedis.set("userAge", "30"); String name = jedis.get("username"); String age = jedis.get("userAge"); log.info("[redisTypeExample] n..

TIL 2025.01.16

BigDecimal 기본 사용법

BigDeimal개념Java에서 고정 소수점 또는 부동 소수점 연산의 정밀도를 유지하기 위해 사용되는 클래스로, 특히 금액 계산에서 많이 사용된다.생성방법팩토리 메서드 사용 : 안전하고 가독성이 좋음 해당방식으로 사용BigDecimal value = BigDecimal.valueOf(123.45); 연산덧셈 : A.add(B)BigDecimal a = BigDecimal.valueOf("10.5"); BigDecimal b = BigDecimal.valueOf("2.3"); BigDecimal result = a.add(b); // 결과: 12.8뺄셈 : A.subtract(B)BigDecimal result = a.subtract(b); /곱셈 : A.multiply(B)BigDecimal result..

Java 2025.01.15

4_2.인메모리 저장소 및 캐싱 전략 개요

학습내용인메모리 저장소캐싱캐싱의 전략Redis 기본 설치 및 Spring 설정학습정리1. 인메모리 저장소개념데이터 디스크를 대신해서 메모리(RAM)에 저장하여 빠른 데이터 엑세스 가능하게 하는 장소데이터가 메모리에 존재하므로 읽기/쓰기가 빠름활용사례캐싱 : 반복적으로 조회 되는 데이터를 메모리에 저장해 응답시간 단축세션관리실시간 데이터 처리주요 인메모리 시스템Redis : Key-Value 기반의 오픈 소스 인메머로 데이터 저장소특징다양한 데이터 유형데이터 영속성 옵션 : 백업하여 영속성 유지하거나 복구 가능분산 환경 지원 : Redis Cluster 사용TTL : 데이터 유효기간 설정하여 자동삭제 가능Redis vs Memcached특성RedisMemcached데이터 유형문자열, 리스트, 해시, 집합 ..

TIL 2025.01.14

4_1.HTTP Session과 Session Clustering

학습내용HTTP와 StatelessSessionSession 관리 방식Session Clustering학습정리1. HTTP 와 StatelessHTTP (HyperTextTransferProtocol)클라이언와 서버 간의 데이터 통신을 위한 프로토콜요청과 응답방식으로 동작애플리케이션 계층 프로토콜TCP/IP 위에서 동작 / 추후 UDP 위에서동작(HTTP3.0?)기본포트는 80 / HTTPS는 443 기본포트Stateless 특성프로토콜 레벨에서 상태 공유를 못함서버 입장에서는 클라이언트 상태(이전 요청)를 모름2. Session의 개념과 작동원리SessionHTTP의 Stateless 특성을 보완하기 위해 사용되는 기술클라이언트와 서버간 상태정보를 서버 측에 저장세션동작원리클라이언트가 서버에 처음 요청..

TIL 2025.01.13

3_5.단위 테스트 작성 연습

학습내용단위테스트JUnit을 활용한 단위테스트SpringBootTest 단위테스트테스트 케이스 작성학습정리단위 테스트 (TDD)정의애플리케이션의 특전 단일 기능을 독립적으로 검증하는 테스트단위 테스트와 통합 테스트 차이구분단위 테스트통합 테스트테스트 범위개별 클래스, 메서드여러 모듈 간의 상호작용의존성외부 시스템에 의존하지 않음 (Mock 사용)데이터베이스, 외부 API 등 실제 의존성 포함실행 속도빠름상대적으로 느림목적특정 기능의 정확성 검증모듈 간 데이터 흐름과 연동 검증JUnit을 활용한 단위 테스트기법AAA(Arragne-Act-Assert) : input/output으로 데이터만 검증class UserTestAAA {@Testvoid shouldIncrementAge() { // Arran..

TIL 2025.01.13

3_4.API테스트 작성 연습

학습내용API 테스트포스트맨 실습JUnit 설정 및 MockMVC를 활용한 API 테스트학습정리1. API 테스트필요성정확성 검증안정성 확보효율적인 디버깅단위 테스트(Unit Test)와 API 테스트의 차이점구분단위 테스트API 테스트테스트 대상메서드, 클래스와 같은 작은 코드 단위애플리케이션의 비즈니스 로직과 데이터 통신의존성다른 컴포넌트나 데이터베이스와의 의존성을 최소화(주로 Mock 객체 사용)데이터베이스, 외부 API 등과의 통합된 환경에서 실행목적내부 로직의 정확성과 코드 품질 확인클라이언트와 서버 간의 인터페이스가 올바르게 동작하는지 확인속도일반적으로 빠름상대적으로 느림 (네트워크 요청/응답 처리 포함)실행 도구JUnit, Mockito 등Postman, Rest Assured, MockMV..

TIL 2025.01.13
728x90
반응형
LIST