Quiz 조회 최적화 과정 사용자(user_id)별로 정답을 맞히지 못한 퀴즈(correct = false)를 무작위로 10개 조회하는 기능을 구현했다. 처음에는 간단한 방법을 선택했지만 성능 문제로 인해 최적화 과정을 거쳤고 이를 작성했다. *study_id, user_id, correct 컬럼을 활용했다. 1. 초기 구현 : ORDE...
Gutter
Editor gutter 어느 순간 pr을 열어 둔 상태에서 코드 변경 시 Editor gutter(코드 라인 옆 여백)에 변경된 부분이 핑크색으로 표시되어 불편했다. 코드를 변경 하면 초록색으로 눈에 띄어야 하는데 핑크색과 겹치면서 눈에 잘 띄지 않았다. File Status Colors 구글링 결과 File Status Color...
Quiz 저장하기
Quiz 저장하기 Quiz 기능을 구현하기 위해 데이터를 저장하고 조회하는 과정을 진행했다. 이 글에서는 저장 과정을 중점적으로 다루며 조회 기능은 다음 글에서 확인 할 수 있다. Quiz 저장 Quiz는 사용자가 학습한 단어를 기반으로 생성된다. 저장 방식 설계 시 두 가지 방안을 검토했다. 1. Quiz 테이블의 status 활용...
단어 학습 기능 개선
단어 학습 기능 개선 학습해야 할 단어를 효과적으로 관리하기 위해 Redis를 활용해 캐싱 기능을 도입하고 학습 데이터를 조회 및 저장하는 방식을 개선했다. 이번 글에서는 문제 해결 과정과 주요 구현 내용을 정리했다. 전체 코드는 여기에서 확인 할 수 있다. 문제점 발견 사용자가 하루에 학습해야 할 10개의 단어 중 일부(예: 8...
Redis cache를 활용한 학습 데이터
Redis Cache 적용 : Redis Cache를 활용한 학습 데이터 TTL 관리 단어 학습 기능을 구현하며 오늘 학습할 단어는 반복 조회가 가능해야하고 이전(yesterday) 또는 이후 학습할 단어(tomorrow)와 명확히 구분되도록 해야 했다. 이를 해결하기 위해 Redis Cache를 도입했다. 캐시를 활용하며 발생할 수 있는 ...
성능 최적화 요약
성능 최적화 요약 Chat Project Chat Project를 진행하면서 성능 개선을 위해 여러 가지 최적화 작업을 진행했다. 이를 통해 로딩 시간, 조회 속도 및 응답 시간을 크게 개선했다. 아래는 각 주요 최적화 작업과 성능 테스트 결과의 요약이다. 더 자세한 내용은 관련 링크에서 확인할 수 있다. 1. 채팅 기록 파일 조회 속도 개...
단어 학습하기
단어 학습하기 이 전에는 엑셀을 통해 db를 저장했다면 이제는 해당 db를 활용해 단어를 학습하는 기능을 구현했다. 전체코드는 eng에서 확인할 수 있다. 구현 동작 예시 주요 기능 구현 사항 1. 사용자가 학습하지 않은 단어 조회 2. 사용자가 학습한 단어 저장 DB 설계 단어 학습 기능을 구현하기 위해 user_id...
Db 저장하기
New Project 새로운 프로젝트를 시작했다. 영어 공부에 대한 필요성이 느껴져 코딩 연습과 함께 영어 공부 사이트를 만들어 보려고 했다. 전체코드는 eng에서 확인할 수 있다. IDEA 아이디어는 별도의 노션에서 계속 정리하고 있으며, 중간에 추가 및 수정이 많아 현재까지 완료한 작업들을 정리하기로 했다. 현재 기본적인 구조는 ...
마지막 글 조회
마지막 글 조회 최적화 기존 파일의 마지막 글을 조회할 때 while문을 없애면 시간이 더 줄어질 수 있을 것 같아 코드를 수정 했다. 기존 코드는 아래와 같다. try (RandomAccessFile randomAccessFile = new RandomAccessFile(file, "r")) { long fileLength = file.l...
로그인 사용자 대비 채팅 사용자 비율 계산
로그인 사용자 대비 채팅 사용자 비율 계산 하루 동안 로그인 한 사용자와 채팅을 한 사용자 수를 저장 한 후 하루가 지나면 데이터를 기반으로 비율을 계산하여 db에 저장 한다. Code applicaton.properties spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimez...