본문 바로가기

분류 전체보기

(135)
Redis 알아보기 본 게시글은 인프런에서 학습한 내용을 정리한 글입니다. Redis 소개 Remote Dictionary Server 다수의 서버를 사용하는 분산 환경의 서버가 공통으로 사용할 수 있는 해시테이블 Remote : Redis는 각각의 서버에 로컬하게 존재하지 않고 다수의 서버가 공통적으로 사용할 수 있도록 원격에 존재 -> 다수가 서버와 공유하는 해시테이블 Dictionary : 해시맵과 같이 키 밸류 형태로 상수 시간 복잡도로 사용이 가능 Redis 특징 특징 설명 In-Memory 백업과 스냅샷에 디스크를 일부 사용하긴 하지만 필수는 아니다. 실제로 레디스가 활용하는 데이터는 모두 RAM에 저장 싱글 스레드(단일스레드) 기반으로 동작 Single Threaded 단일 thread에서 모든 task 처리 ..
[Spring] DI와 IoC DI와 IoC에 대해 아는 만큼 설명해주실 수 있을까요? DI(Dependency Injection) DI란 스프링이 다른 프레임워크와 차별화되어 제공하는 의존 관계 주입기능으로 객체를 직접 생성하는게 아니라 외부에서 생성한 후 주입시켜주는 방식이다. DI(의존성 주입)을 통해서 모듈 간의 결합도가 낮아지고 유연성이 높아집니다. IoC(Inversion of Control) IoC(Inversion of Control)란 "제어의 역전"이라는 의미로, 말 그대로 메소드나 객체의 호출작업을 개발자가 결정하는 것이 아니라 외부에서 결정되는것을 의미한다. 객체의 의존성을 역전시켜 객체 간의 결합도를 줄이고 유연한 코드를 작성할 수 있게 하여 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있게 한다. IoC..
[Python] 백준 12015번. 가장 긴 증가하는 부분 수열2 https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 문제 설명: 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 풀이설계 리스트에서 val을 하나씩 꺼내온다. dp[-1]는 보다 val이 크다면 뒤에 바로 추가해준다. 그렇지 않다면 이..
[Python] 백준 2108번. 통계학 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 문제설명 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 풀이설계 산술형은 sum / 반올림은 round 중앙값은 배열의 중앙값 // 2 최빈값 배열의 길이가 1 이하인 경우 0번째 값 출력 배열의 길이가 1 초과인 경우 Counter ..
[Python] 백준 11651번. 좌표 정렬하기 2 https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 문제설명 x,y 가 주어졌을때 y를 기준으로 정렬하는 문제이다. 풀이설계 2차원 배열을 활용한다. x,y 값을 처음에 y,x로 저장한다. 그 다음 리스트를 sort 한다. 출력 시 y,x -> x,y로 바꿔 출력한다. import sys input = sys.stdin.readline n = int(input()) lst = [] for i..
[Java] Java Map의 내부 구현 파악 Java Map의 내부 구현은 어떻게 이루어져 있을지 추측해보실 수 있을까요? Java에서 Map 인터페이스 도구가 있으며 대표적으로 Map, HashMap, TreeMap, LinkedHashMap이 있다. Map Map은 key-value 구조로 구성되어 데이터를 저장할 수 있다. key를 가지고 저장된 value를 찾을 수 있다. key를 이용하여 데이터 검색에 최적화되어있으나, 동일한 key에 다른 데이터 value가 저장되어 있을 경우 기존에 저장된 데이터는 덮어씌워져 사라진다. 따라서 중복된 key는 존재할 수 없다. HashMap HashMap은 Hash Table 을 이용하여 만들어졌다. HashMap의 핵심은 배열이며, 배열의 각 슬롯은 연결리스트 또는 트리로 이루어져있다. Hash Ta..
[Docker] Docker 부터 docker compose 설치 실행환경 cat /etc/*-release | uniq DISTRIB_ID=Ubuntu DISTRIB_RELEASE=22.04 Docker 설치 sudo apt-get update 필요한 패키지 설치 sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common Docker의 공식 GPG키를 추가 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - Docker의 공식 apt 저장소를 추가 sudo add-apt-repository "deb [arch=amd64] https://download.docker..
[Spring] EC2에 Docker에 Redis SpringBoot 프로젝트 연동 티켓 예매 프로젝트에 진행하게 되면서 ec2에 redis 및 springboot 배포해야 할 일이 생겼다. 그 중 Spring과 Redis 연결이 잘되지 않아 하루넘게 시간이 걸려서 해결했다. 이 오류만 정말 수십번의 커밋과 푸시 배포과정을 진행했고 결론적으론 해결했다. 현재 redissonLockTicketFacade 클래스에 redis를 이용한 로직이 구현되어있고 마지막 오류메시지를 보면 계속 로컬로 연결되는 문제였다. Error creating bean with name 'redissonLockTicketFacade' defined in URL [jar:nested:/app.jar/!BOOT-INF/classes/!/com/example/yetiproject/facade/RedissonLockTic..