일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- join
- 혼공단
- MySQL
- Android
- Kotlin
- select
- Til
- groupby
- java
- 정보처리기사
- 기술면접
- 오블완
- 카카오코테
- SQL
- 코틀린
- doitandroid
- 티스토리챌린지
- 안드로이드스튜디오
- 코테
- 안드로이드
- CS
- 정처기
- 자바
- 혼공파
- 자료구조
- 알고리즘
- 프로그래머스
- 스터디
- 인프런
- 혼공챌린지
- Today
- Total
목록Spring (5)
Welcome! Everything is fine.

문제점이벤트 정원이 10명인데도 200명 신청 시 9명까지만 들어가는 문제가 발생했다.또한 로그에서 “이벤트 정원이 초과되었습니다.”라는 메세지가 떴다.Redis에는 이미 200명이 저장된 상태DB는 한 명이 누락된 상태DB에 존재하지 않는 ID로 다시 신청 → EVENT_ALREADY_JOINED 예외 발생원인Redis와 DB의 정합성이 깨졌는데, 검증 기준은 Redis에만 의존하고 있기 때문이다. Redis는 ID를 이미 참여한 유저로 보고 있지만, 실제 DB에는 들어가지 않았다.하지만 ZSet에 있는 것만 보고 판단하여 중복 신청으로 막아버린 것이다.Zset에는 실패한 유저도 들어있기 때문에 100% 신뢰할 수 없다.왜 지금까지 이런 문제가 한 번도 없었는지는 잘 모르겠다..😓해결 방법valida..

🍽️최종 프로젝트 시작!드디어 최종 프로젝트를 시작했다. 사실 벌써 2주차가 끝났지만 정신없이 달려오다보니 블로그에 기록을 하지 못했다. 한 주가 끝날 때마다 꾸준히 기록하는 습관을 가지자.✍🏻우리 팀은 테이블링 서비스를 주제로 정했다!프로젝트명 : TableNow (테이블나우)주제 : 식당을 예약하고 방문할 수 있는 실시간 예약 관리 시스템📆 1 ~ 2주차 일정S.A 작성 후 피드백 받기기본 기능 개발 완료기본 기능 개발 후 코드리뷰 받기핵심 기능우리 팀의 핵심 기능은 다음과 같이 정리할 수 있다.인증/보안Spring Security + JWTRefresh Token 저장 및 관리(Redis)OAuth2.0 로그인 연동검색/캐싱인기 검색어 캐싱(Redis)Elasticsearch동시성 제어Redi..

Spring Security란?스프링 시큐리티(Spring Security) : 스프링 기반 애플리케이션에 강력한 인증/인가 기능을 제공하는 보안 프레임워크.Spring Security와 JWT를 함께 사용하면 Stateless하게 사용하기 때문에 간단하게 적용할 수 있다.Security 보안을 통과하려면 SecurityContext에 AbstractAuthenticationToken을 set해줘야 한다!SecurityContext : 한 요청 내에서 현재 인증된 사용자와 그 사용자가 가지는 권한을 알려주는 객체.보통 하나의 Authentication 객체를 포함하며, 그 객체는 다음과 같은 것들을 가지고 있다.사용자(Principal)인증 방식인증 상태사용자 권한 목록(GrantedAuthorities..

이번 심화 프로젝트를 진행하다가 튜터님께 피드백 받은 내용이 있다.사실 이 부분은 정신 놓고 코드 짠거 같아서 부끄럽지만..같은 실수를 하지 않기 위해 정리해본다. 🛠️ 변경 전 코드우선 OwnerOrderController는 가게 사장님이 들어온 주문을 수락 및 거절하는 API를 가지고 있다. 수락이 되었다면 음식조리중, 배달중, 배달완료 순으로 흐를 수 있도록 해야한다. 다음 코드를 보면, 각각의 상태에 따라 API가 다 따로 만들어져있다. 처음에는 상태가 되돌아 갈 수 없도록 하는 것에만 집중해서 예외 처리만 하고 끝냈다.@RestController@RequiredArgsConstructor@RequestMapping("/api")public class OwnerOrderController { ..

다음 getTodos() 메서드에서 발생하고 있는 N+1 문제를 @EntityGraph를 사용해 해결해야 한다.public Page getTodos(int page, int size) { Pageable pageable = PageRequest.of(page - 1, size); Page todos = todoRepository.findAllByOrderByModifiedAtDesc(pageable); return todos.map(todo -> new TodoResponse( todo.getId(), todo.getTitle(), todo.getContents(), todo.getWeather(), ..