[Spring] Spring Boot Redis 사용하기 / 이메일 인증 유효시간
·
Framework & Library/Spring
Redis는 key-value 구조로 데이터를 저장하는 In-memory 기반의 데이터베이스 시스템입니다. Spring boot 에선 어떻게 구현하는지 알아봅시다. 1. 먼저 Redis란? 먼저 Redis가 어떤건지는 블로그 다른 게시글에 작성해놨습니다. [CS / DataBase] 인메모리 데이터 저장소 Redis, 왜 사용할까? 개발을 하면서 트랜잭션의 속도를 어떻게 하면 줄일 수 있을까? 고민하면서 찾아보면 Redis라는 시스템을 접하게 된다. 그럼 이 Redis는 무엇일까? 1. 레디스(Redis) 란? Redis의 풀네임에서 할 수 있듯 repeater2487.tistory.com 2. Spring Boot에서 Redis 사용하기 2 - 1. 기본 설정 [ 의존성추가 ] 저는 대게 gradle를..
[CS / DataBase] 인메모리 데이터 저장소 Redis, 왜 사용할까?
·
Computer Science
개발을 하면서 트랜잭션의 속도를 어떻게 하면 줄일 수 있을까? 고민하면서 찾아보면 Redis라는 시스템을 접하게 된다. 그럼 이 Redis는 무엇일까? 1. 레디스(Redis) 란? Redis의 풀네임에서 할 수 있듯이 Java의 HashMap과 같은 key-value 형태의 Dictionary 비정형 데이터를 저장하고 관리하는 원격 서버를 말합니다. 1-1. 레디스의 핵심 기능 https://redis.io/ 공식 홈페이지에서는 Redis의 핵심기능을 다음과 같이 말하고 있습니다. Redis는 데이터베이스,캐시, 메시지 브로커 및 스트리밍 엔진으로 사용되는 오픈 소스(BSD 라이선스), 인메모리 데이터 구조 저장소 입니다. Redis는 문자열 , 해시 , 목록 , 집합 , 범위 쿼리가 있는 정렬된 집합..
[Java / 코딩테스트] 겹쳐진 압축 해제
·
CodingTest/Java로 푼 코딩 테스트
1. 생각 전형적인 스택 문제 ")"까지 보고 반복문 2. 코드 import java.util.*; class Solution { public String solution(String s){ String answer = ""; Stack st = new Stack(); for (char c : s.toCharArray()) { if(c == ')') { String tmp = ""; while (!st.empty()) { String t = st.pop(); if(t.equals("(")) { String num = ""; while (!st.empty() && Character.isDigit(st.peek().charAt(0))) { num = st.pop() + num; } String res = "..
[Java / 코딩테스트] 최대 길이 연속수열
·
CodingTest/Java로 푼 코딩 테스트
1. 생각 중복을 제거해야 하므로 Set을 쓰면 될거같은데 정렬을 해야하나? nums의 길이가 300,000 이므로 시간복잡도를 최대한 적게 써야한다. 정렬 없는 HashSet으로 해결 2. 코드 import java.util.*; class Solution { public int solution(int[] nums){ int answer = 0; HashSet numSet = new HashSet(); for (int num : nums) { numSet.add(num); } for (Integer i : numSet) { if(numSet.contains(i-1)) continue; int cnt = 0; while (numSet.contains(i)) { cnt++; i++; } answer = M..
[Java / 알고리즘] 탐욕 알고리즘(그리드 알고리즘)
·
CodingTest/Algorithm
### 1. 탐욕 알고리즘 이란? - Greedy algorithm 또는 탐욕 알고리즘 이라고 불리움 - 최적의 해에 가까운 값을 구하기 위해 사용됨 - 여러 경우 중 하나를 결정해야할 때마다, **매순간 최적이라고 생각되는 경우를 선택**하는 방식으로 진행해서, 최종적인 값을 구하는 방식 1. 탐욕 알고리즘(Greedy Algorithm) 각 단계에서 지금 당장 가장 좋은 선택을 하는 알고리즘 이 선택은 그 순간에 대해 최적일지라도, 이후의 선택에 대해서는 고려하지 않는다 여러 가능성 중 하나를 선택할 때 마다 현재의 선택이 문제의 최적 해에 얼마나 가까워지는지를 고려하여 선택을 진행한다 2. 대표적인 문제 1) 거스름돈 문제 import java.util.HashMap; import java.util..
[Java / 알고리즘] 그래프 알고리즘 BFS와 DFS
·
CodingTest/Algorithm
대표적인 그래프 탐색 알고리즘으로는 너비 우선 탐색(BFS, Breadth First Search)과 깊이 우선 탐색(DFS, Depth First Search)가 있다. 1. 너비 우선 탐색 (BFS, Breadth First Search) 정점들과 같은 레벨에 있는 노드들(형제 노드들)을 먼저 탐색하는 방식이다 위 그림에서는, A - B - C - D - G - H - I - E - F - J 순으로 탐색한다 BFS는 재귀적으로 동작하지 않고 방문한 노드들을 차례로 저장한 후 꺼낼 수 있는 큐(Queue)를 사용한다 즉, 선입선출(FIFO) 원칙을 탐색한다 시작 정점으로부터 가까운 정점을 먼저 방문하고 멀리 떨어져 있는 정점을 나중에 방문하기 때문에 두 노드 사이의 최단 경로를 찾을 때 주로 사용한다..
[Java / 알고리즘] 탐색 알고리즘. 순차 탐색(선형 탐색), 이진 탐색
·
CodingTest/Algorithm
탐색이란 여러 데이터 중에서 원하는 데이터를 찾아내는 것을 말한다. 1. 순차 탐색(Sequential Search), 선형 탐색(Linear Search) 순차 탐색 또는 선형 탐색이라고 한다. 데이터가 담겨있는 리스트를 앞에서부터 하나씩 비교해서 원하는 데이터를 찾는 방법이다. [ 코드 ] public class main { public static void main(String[] args) { int[] array = {23, 45, 12, 67, 89, 34, 56, 72}; int target = 34; // 선형 탐색을 수행하고 결과를 출력 int result = linearSearch(array, target); if (result == -1) { System.out.println("Ele..
[Java / 알고리즘] 대표적인 정렬 알고리즘. 버블 정렬, 삽입 정렬, 선택 정렬
·
CodingTest/Algorithm
정렬 알고리즘은 n개의 숫자가 입력으로 주어졌을 때, 이를 사용자가 지정한 기준에 맞게 정렬하여 출력하는 알고리즘이다. 예를 들어 n개의 숫자가 저장되어있는 배열을, 오름차순의 조건으로 작성하여 입력하면 오름차순으로 정렬된 배열을 출력으로 구할 수 있다. 정렬 알고리즘은 정말 다양한데, 이에 따라 각각의 수행시간도 천차 만별이다. 1. 버블 정렬(Bubble Sort) 두 인접한 데이터를 비교해서, 앞에 있는 데이터가 뒤에 있는 데이터보다 크면, 자리를 바꾸는 방식이다. [ 코드 ] static void bubbleSort(int[] arr) { int n = arr.length; for (int i = 0; i < n - 1; i++) { boolean swap = false; for (int j = ..
[LOATODO] 코드 리팩토링 SELECT 리팩토링
·
Project/LOATODO
1. 서론연관관계 테이블이 늘어나면서캐릭터 데이터를 호출할 때 SQL문이 여러번 실행된다. 1 - 1. 기존코드@Query(value = "SELECT c FROM Character c WHERE c.member = :member AND c.serverName = :serverName")List findCharacterListServerName(@Param("member") Member member, @Param("serverName") String serverName); JPA로 Member Entity를 불러와서 Controller에서 DTO로 변경할 때필요한 데이터들을 LAZY 형식으로 불러온다. 1 - 2. 기존코드 결과2023-11-24 17:32:29.777 DEBUG 39633 --- [ni..