전체 글 159

[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]); /..

[MYSQL] 프로그래머스 SQL 문제풀이 - Level 1 (14~18번 문제풀이)

14. 조건에 맞는 회원수 구하기 SELECT COUNT(*) FROM USER_INFO WHERE JOINED LIKE '2021%' AND AGE BETWEEN 20 AND 29 USER_INFO 테이블에서 조건에 맞는 정보의 개수를 구하도록 했다. 조건은 JOINED 칼럼에서 데이터가 2021로 시작하고 AGE가 20과 29 사이에 있는 값만 가져오도록 조건을 걸었다. 15. 가장 비싼 상품 구하기 SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT PRODUCT 테이블에서 MAX를 사용하여 PRICE값중 가장 큰 값을 구해오도록 했다. 별칭은 MAX_PRICE로 지정했다. 16. 12세 이하인 여자 환자 목록 출력하기 SELECT PT_NAME, PT_NO, GEND_C..

[MYSQL] 프로그래머스 SQL 문제풀이 - Level 1 (1~13번 문제풀이)

1. 모든 레코드 조회하기 SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID ANIMAL_INS 테이블의 모든 정보를 조회하도록 했고 ORDER BY를 사용해서 ANIMAL_ID 순으로 정렬하였다. 2. 역순 정렬하기 SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC ANIMAL_INS 테이블에서 NAME, DATETIME을 조회했고 정렬은 ANIMAL_ID를 기준으로 내림차순으로 정렬하였다. 3. 아픈 동물 찾기 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION = 'Sick' ANIMAL_INS 테이블에서 ANIMAL_ID, NAME을 조회했고 조건은 ..

[Java] 자바 계산기 알고리즘

개인 프로젝트를 진행 중 계산기 기능을 추가하려고 로직을 구현 중이었는데 생각보다 생각할게 많았다. 나는 중위 표기법으로 표현된 수식을 후위 표기법으로 변환시켜 계산하였다. 중위표기법이란 흔히 아는 연산자가 피연산자들의 가운데 위치하는 형태이다. 예 ) 3 + 5 * 4 진행 중인 웹프로젝트의 계산기 기능이다. 간략하게 기능을 설명하자면 C버튼은 Clear를 뜻하고 누르면 입력했던 숫자들이 초기화된다. 계산할 식을 입력 후 "=" 버튼을 누르면 계산된 값을 반환받는 방식으로 제작하였다. 계산기 하단에는 계산했던 기록이 남아있도록 했다. 코드 설명 public double calculator(CalculatorRequestDto calculatorRequestDto) { String calContents ..

프로필사진

남건욱's 공부기록

반응형