1. Spring Boot 프로젝트에 Redis 셋팅 추가하기Redis 의존성 추가하기build.gradle에 아래 코드를 추가하고 gradle 새로고침 버튼을 눌러야 갱신한 의존성이 반영된다.dependencies { ... implementation 'org.springframework.boot:spring-boot-starter-data-redis'} application.yml 수정하기# local 환경spring: profiles: default: local datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: password driver-class-name: com.mysql.cj..
1. 캐시(Cache), 캐싱(Caching)이란?캐시(Cache)원본 저장소보다 빠르게 가져올 수 있는 임시 데이터 저장소를 의미한다. 원본 데이터베이스에 접근해 데이터를 가져오는 건 시간이 오래 걸린다. 보통 최근 접근한 페이지 등이 다시 접근될 확률이 높기 때문에 속도가 빠르거나 사용자와 거리가 가까운 임시 저장소를 두고, 최근에 접근한 이미지나 파일 등의 데이터를 빨리 가져올 수 있게끔 하는 게 좋다. 예를 들어 크롬 같은 검색 도구에서도 방문한 페이지에 있던 이미지나 파일 등을 캐시(저장)해놓고 해당 페이지 재방문 시 캐시된 이미지 및 파일을 불러와 빠르게 페이지가 뜰 수 있도록 한다. 캐싱(Caching)캐시(임시 데이터 저장소)에 접근해 데이터를 빠르게 가져오는 방식을 의미한다. 예를 들어 ..
1. 로컬(Windows)에서 Redis 설치하기 아래 링크로 들어가 확장자가 msi인 설치 프로그램을 다운로드하여야 한다.https://github.com/microsoftarchive/redis/releases Releases · microsoftarchive/redisRedis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redisgithub.com 설치 과정에서 딱히 따로 설정할 것은 없다.Redis의 기본 포..
1. RedisRedis란?Redis 공식 홈페이지 문서를 살펴보면 아래와 같은 설명이 적혀 있다.Redis is an in-memory data store used by millions of developers as a cache, vector database, document database, streaming engine, and message broker. Redis has built-in replication and different levels of on-disk persistence. It supports complex data types (for example, strings, hashes, lists, sets, sorted sets, and JSON), with atomic operat..
스프링이 제공하는 빈이 존재할 수 있는 범위에 대한 섹션! 1. 빈 스코프란?빈 스코프는 빈이 존재할 수 있는 범위를 말함스프링 빈은 기본적으로 싱글톤 스코프로 생성되기 때문에 스프링 컨테이너의 시작과 함께 생성돼서 스프링 컨테이너가 종료될 때까지 유지됨아래와 같이 지정할 수 있음// 컴포넌트 스캔 자동 등록@Scope("prototype")@Componentpublic class HelloBean() {}// 수동 등록@Scope("prototype")@BeanPrototypeBean HelloBean() { return new HelloBean();} 스프링이 지원하는 다양한 스코프a. 싱글톤 스코프(default)기본값으로, 스프링 컨테이너의 시작과 종료까지 유지되는 가장 넓은 범위의 스코프 b. ..
https://www.acmicpc.net/problem/2110각각의 집의 좌표가 x1, ..., xN인 집 N개가 수직선 위에 있다. 집에 공유기 C개를 설치하려고 하는데, 한 집에는 공유기를 하나만 설치할 수 있고 가장 인접한 두 공유기 사이의 거리를 가능한 크게 해 설치하려고 한다. 이때 가장 인접한 두 공유기 사이 거리의 최댓값을 구하는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지 고민해 가는 과정ex. 가능한 시간 복잡도, 알고리즘 선택입출력 제한2 ≤ N ≤ 200,0002 ≤ C ≤ N0 ≤ xi ≤ 1,000,000,000 ..
https://www.acmicpc.net/problem/25116Cookie Run 게임은 N개의 스테이지로 이루어진 맵을 달리는 게임이다. 맵을 디자인하는 데엔 아래와 같은 규칙이 있다.각 스테이지는 A0, A1, ..., A(N-1)의 난이도가 주어진다.연속적인 스테이지의 난이도 합이 M보다 크거나 같다면, 그 구역을 interesting section으로 부른다.Ai + ... + Aj ≥ M & 0 ≤ i ≤ j ≤ N-1, section (i, j) = interesting section맵에는 적어도 K개의 interesting section이 있어야 한다. 게임이 너무 쉽다는 문제를 해결하기 위해 모든 스테이지의 난이도를 X만큼 올릴 수 있다고 할 때, 위의 조건을 만족하는 음이 아닌 정수..
https://www.acmicpc.net/problem/4803그래프는 정점과 간선으로 이루어져 있다. 두 정점 사이에 경로(간선)가 있다면, 두 정점은 연결돼 있다고 한다. 연결 요소는 모든 정점이 서로 연결돼 있는 정점의 부분집합이다. 그래프는 하나 이상의 연결 요소로 이루어져 있다. 트리는 사이클이 없는 연결 요소이다. 트리에는 여러 성질이 있다. 예를 들어, 트리는 정점이 n개, 간선이 n-1개 있다. 또, 임의의 두 정점에 대해 경로가 유일하다. 그래프가 주어질 때, 트리의 개수를 세는 문제다. 문제 탐색하기- 문제에서 구해야 하는 최종 정답은 무엇인지 탐색한 과정- 그 정답을 구하기 위해 어떻게 코드를 구현해야 할지 고민한 과정- 문제에 들어오는 범위를 파악하며 어떤 알고리즘을 쓸 수 있을지..