Redis,Docker 설치하기와 수많은 에러
·
Spring/대용량 트래픽
도커 컨테이너 기반으로 Redis를 설치해보겠다. https://hub.docker.com/_/redis redis - Official Image | Docker Hub Quick reference Supported tags and respective Dockerfile links 7.2.4, 7.2, 7, latest, 7.2.4-bookworm, 7.2-bookworm, 7-bookworm, bookworm 7.2.4-alpine, 7.2-alpine, 7-alpine, alpine, 7.2.4-alpine3.19, 7.2-alpine3.19, 7-alpine3.19, alpine3.19 7.0.15, 7.0, 7.0 hub.docker.com 도커 허브는 모든 사용자들이 public하게 업로드 가능..
[BAEKJOON] 3114번 사과와 바나나
·
Algorithm/Dynamic Programming
https://www.acmicpc.net/problem/3114 3114번: 사과와 바나나 첫 번째 예제의 경우 불도저가 오른쪽-아래, 오른쪽-아래, 아래로 이동하면 된다. 경로의 아래에 있는 사과 나무의 개수는 3+2+4=9개이고, 위에 있는 바나나 나무의 개수는 3+5=8개이다. www.acmicpc.net 문제조건 아래(↓), 오른쪽(→), 오른쪽아래(↘)로 갈수 있는 불도저가있고, 오른쪽 맨 아래칸까지 이동한다. A(불도저 아래쪽, 사과), B(불도저 위쪽, 바나나) 사과와 바나나의 합의 최댓값의 경우는? 처음 문제를 봤을땐, 탐색을 진행하는 경우의 수인것같아서 BFS로 접근했다. 하지만 이 접근방법은 최소일때 구하기 용이한 방법으로 생각을 좀더 했다. 우선 Brute Force를 떠올렸는데, ..
[BAEKJOON] 11501번 주식
·
Algorithm/Greedy
https://www.acmicpc.net/problem/11501 11501번: 주식 입력의 첫 줄에는 테스트케이스 수를 나타내는 자연수 T가 주어진다. 각 테스트케이스 별로 첫 줄에는 날의 수를 나타내는 자연수 N(2 ≤ N ≤ 1,000,000)이 주어지고, 둘째 줄에는 날 별 주가를 나타 www.acmicpc.net 문제조건 주식하나 사고, 팔고, 아무것도 안하는 것중 하나만 할 수 있다. 각 날마다의 주가가 주어지고, 조건 1 을 반복하면서 최대이익을 구한다. 이 문제는 예시로 시작하는 것이 편할거 같다고 생각한다. ex) 날 별로 주가가 3, 5, 9일 때 : 3, 5 두 날 전부 주식을 사고, 9일때 주식을 팔면된다 산금액 : 8(3x1 + 5x1) 판금액 : 18(9 x 2) 최대이익 : ..
Redis를 알아보자!
·
Spring/대용량 트래픽
2024.03.31 - [Spring/대용량 트래픽] - Spring에서 대용량 트래픽 처리 Spring에서 대용량 트래픽 처리 간단하게 클라이언트가 있고, Web Application Server가 있고, DB가 있다고 가정하자. 이 어플리케이션은 단순히 게시글을 조회하는 기능을 해주는 어플리케이션이라고 가정하자. 이때 다수의 사용자 lsdiary.tistory.com 이전글에서는 전반적으로 Spring에서 대용량 트래픽은 어떻게 처리하는지에 대해서 알아봤다. 이제 Redis가 뭔지 자세하게 알아보는 글이 되겠다. in-memory database in-memory : 컴퓨터의 메인 메모리 database : 컴퓨터에 데이터를 저장할수 있는 시스템 메모리에 데이터를 적재하여 활용하는 DB 시스템을 의미..
[BAEKJOON] 20006번 랭킹전 대기열
·
Algorithm/구현, 시뮬레이션
https://www.acmicpc.net/problem/20006 20006번: 랭킹전 대기열 모든 생성된 방에 대해서 게임의 시작 유무와 방에 들어있는 플레이어들의 레벨과 아이디를 출력한다. 시작 유무와 플레이어의 정보들은 줄 바꿈으로 구분되며 레벨과 아이디는 한 줄에서 공백 www.acmicpc.net 문제조건 플레이어가 입장을 신청하였을 때 매칭이 가능한 방이 없다면 새로운 방을 생성하고 입장시킨다. 이떄 해당 방에는 처음 입장한 플레이어의 레벨을 기준으로 -10부터 +10까지 입장 가능하다. 입장 가능한 방이 있다면 입장시킨 후 방의 정원이 모두 찰 때까지 대기시킨다. 이때 입장이 가능한 방이 여러 개라면 먼저 생성된 방에 입장한다. 방의 정원이 모두 차면 게임을 시작시킨다. 먼저 입력을 받으면..
Spring에서 대용량 트래픽 처리
·
Spring/대용량 트래픽
간단하게 클라이언트가 있고, Web Application Server가 있고, DB가 있다고 가정하자. 이 어플리케이션은 단순히 게시글을 조회하는 기능을 해주는 어플리케이션이라고 가정하자. 이때 다수의 사용자가 게시글을 조회하게 되면 생기는 문제점은? 정적파일(이미지, 비디오)이 문제가된다. 정적자원을 WAS(Web Application Server)가 직접관리하게 되면, CPU자원이나 네트워크 트래픽 , 대역폭 같은 문제가 발생한다. 이를 위해서 파일들을 관리하는 서버를 따로 분리한다. 그리고 이에 따라 CDN서버를 따로 둔다. CDN이란? Content Delivery Network의 약자로, 정적파일들에 대한 캐시 서버 역할을 한다. 이를 통해 빠른 응답속도, 네트워크 대역폭, 컴퓨팅 리소스 부하를..
Spring으로 결제서비스 만들기(4)
·
Spring/결제
2024.03.28 - [Spring/결제] - Spring으로 결제서비스 만들기(3) Spring으로 결제서비스 만들기 준비(3) 2024.03.27 - [Spring/결제] - Spring으로 결제서비스 만들기 준비(2) Spring으로 결제서비스 만들기 준비(2) 2024.03.27 - [Spring/결제] - Spring으로 결제서비스 만들기 준비(1) Spring으로 결제서비스 만들기 준비(1 lsdiary.tistory.com 이전까지 일일 정산 배치에 대해서 알아보았다. 이번에는 마지막으로 주간정산 배치를 만들어보겠다. 이제까지 구현했던 코드에 주간정산하는 날이면 주간정산을 실행시켜줘라는 조건을 추가로 걸어줘야한다. 이전에 배웠던 FlowJob을 활용할 수도있지만, JobExecutionDe..
[BAEKJOON] 2568번 전깃줄 - 2
·
Algorithm/Binary Search
https://www.acmicpc.net/problem/2568 2568번: 전깃줄 - 2 첫째 줄에는 두 전봇대 사이의 전깃줄의 개수가 주어진다. 전깃줄의 개수는 100,000 이하의 자연수이다. 둘째 줄부터 한 줄에 하나씩 전깃줄이 A전봇대와 연결되는 위치의 번호와 B전봇대와 연결 www.acmicpc.net 문제조건 두개의 전봇대가 있고, 서로 교차하지않게 전깃줄이 이어지도록 하는 경우일때의 제거해야할 전깃줄 개수와 A전봇대에서의 제거되는 번호 같은 위치에 두개이상의 전깃줄이 연결될 수는 없다. 완전탐색으로 풀려고 시도하면 전깃줄으 개수가 10만개이므로, n^2는 시간초과가 날 것이다. 따라서 어떤 접근법으로 가면 시간을 단축시킬수 있을까 생각해봤다. 이진탐색으로 접근하는 방법인데 다행히도, al..
[BAEKJOON] 9252번 LCS 2
·
Algorithm/Dynamic Programming
https://www.acmicpc.net/problem/9252 9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 문제조건 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제. 입력으로 주어진 두 문자열의 LCS의 길이를, 둘째 줄에 LCS를 출력한다. 첫번째로 구해야할것은 LCS의 길이이다. 나는 완전탐색으로 두 문자열을 돌면서 dynamic ..
[BAEKJOON] 1509번 팰린드롬 분할
·
Algorithm/Dynamic Programming
https://www.acmicpc.net/problem/1509 1509번: 팰린드롬 분할 세준이는 어떤 문자열을 팰린드롬으로 분할하려고 한다. 예를 들어, ABACABA를 팰린드롬으로 분할하면, {A, B, A, C, A, B, A}, {A, BACAB, A}, {ABA, C, ABA}, {ABACABA}등이 있다. 분할의 개수의 최솟값을 출력하 www.acmicpc.net 문제조건 어떤 문자열을 팰린드롬으로 분할한다. 분할된 수의 최솟값을 출력 팰린드롬이란? 어떤 문자가 있을때, 거꾸로 뒤집어서 읽어도 똑같은 문자를 의미한다. ex) 기러기 ☞ 기러기(O) cf) 거북이 ☞ 이북거(X) 이 문제에서 핵심은 문자가 입력으로 들어왔을때, 문자열안에서의 모든 경우의수를 탐색해서 팰린드롬인지 각각 파악해야..