전체 글 134

[SSE] 알림기능에 SSE (Sever-Sent Events)를 사용한 이유?

개요프로젝트에서 SSE를 사용해 실시간 알림 기능을 구현하였다. 가볍게 스쳐 지나갔지만 다시 보니 조금 더 공부해보고 싶어서 찾아봤다. SSE의 장단점, WebSocket의 장단점을 비교하여 SSE를 사용이 적합했던 이유를 작성. 1. SSE서버로부터 보낸 메시지를 클라이언트 측에서 받을 수 있는, 단방향 메시지를 지원하기 위한 웹 기술이다. 주로 웹 애플리케이션에서 실시간 업데이트를 제공하는 데 사용되며 서버에서 클라이언트로 데이터를 전송할 수 있게 해 주며, 클라이언트는 이를 수신하여 웹 페이지의 동적 업데이트나 실시간 정보 표시에 활용할 수 있다. 이벤트 스트림(Event Stream) 형태로 데이터를 보내므로, 연결이 한 번 만들어진 후 서버에서 주기적으로 데이터를 전송할 수 있다. 1.1 SSE..

[SpringBoot + Redis] Refresh Token은 왜 Redis를 사용할까?

Redis 오픈 소스 기반의 인 메모리 데이터 저장소. 키-값 형태의 DB로 주로 메모리 내에서 데이터를 저장하고 액세스 하는 데 사용된다. Redis의 주요 특징 1. 주로 메모리에 데이터를 저장하고 조회하기 때문에 빠른 응답시간을 기대할 수 있다. 2. 데이터 만료일을 지정할 수 있다. Redis의 특징이 Refresh Token에 적합한 이유 1. RDB와 다르게 Redis는 만료될 날짜를 정해서 토큰을 자동으로 삭제할 수 있다. 토큰의 만료일과 Redis에서 토큰이 삭제되는 날을 일치시키면 데이터를 더 효율적으로 관리할 수 있다. 2. Refresh Token을 사용하는 이유는 JWT Access Token을 새롭게 갱신하기 위해 사용한다. Access 토큰은 Refresh 토큰에 비해 유효기간이..

[MYSQL] 프로그래머스 SQL 문제풀이 - Level 2 (1~7번 문제풀이) / level 1 (24/24)

1. 최솟값 구하기 SELECT MIN(DATETIME) AS 시간 FROM ANIMAL_INS ANIMAL_INS 테이블에서 MIN옵션을 주고 DATETIME을 조회하였다. 가장 작은 값을 조회하고 별칭은 시간으로 주었다. 2. 고양이와 개는 몇 마리 있을까 SELECT ANIMAL_TYPE, COUNT(*) AS count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE HAVING ANIMAL_TYPE IN ('cat', 'dog') ORDER BY ANIMAL_TYPE ANIMAL_INS 테이블에서 ANIMAL_TYPE과 개수를 조회하였다. 별칭은 count로 줬다. 그룹은 ANIMAL_TYPE으로 그룹핑해 주고 조건은 ANIMAL_TYPE이 cat, dog에 포함되는 것만 선택..

[MYSQL] 프로그래머스 SQL 문제풀이 - Level 1 (19~24번 문제풀이) - 1단계 모든 문제풀이 완료

19. 과일로 만든 아이스크림 고르기 SELECT FIRST_HALF.FLAVOR FROM FIRST_HALF JOIN ICECREAM_INFO ON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVOR WHERE FIRST_HALF.TOTAL_ORDER >= 3000 AND ICECREAM_INFO.INGREDIENT_TYPE = 'fruit_based' ORDER BY FIRST_HALF.TOTAL_ORDER DESC FIRST_HALF 테이블에서 FLAVOR 칼럼을 조회했다. ICECREAM_INFO 테이블과 조인을 해줬고 조건은 두 개의 FLAVOR가 일치한다는 조건이다. 추가로 FIRST_HALF의 TOTAL_ORDER칼럼이 3000 이상이고 ICECREAM_INFO의 ING..

[JAVA] 프로그래머스 알고리즘 문제풀이 - Level 1 (69~71번 문제풀이) / Level 0 (224/224)

69. 개인정보 수집 유효기간 import java.util.*; class Solution { public int[] solution(String today, String[] terms, String[] privacies) { Map map = new HashMap(); List list = new ArrayList(); // 주어진 날짜를 . 기준으로 나눠서 저장 후 year, month, day에 맞는 정수형으로 저장 String[] todays = today.split("\\."); int year = Integer.parseInt(todays[0]); int month = Integer.parseInt(todays[1]); int day = Integer.parseInt(todays[2]); /..

프로필사진

남건욱's 공부기록

반응형