카테고리 (36) 썸네일형 리스트형 나만의 Amazon S3 만들기 객체 저장소란 캐시를 이용한 안정적인 결제 상태 서버 이 글은 안정적인 서비스를 위해 결제 상태 서버에 캐시를 적용한 과정을 다룹니다. 다음과 같이 서버의 사용량을 가정하였습니다. 평균 TPS10,000최대 TPS20,000 결제 시스템에서는 하루에도 수백 번의 결제 상태 조회가 발생하고 있으며, 다양한 기능과 웹훅 알림들이 빠르게 확장되고 있어요. 이렇게 많은 조회를 기반으로 결제 서비스가 성장하면서, 사용자와 내부 시각화 대시보드, 웹훅 리스너까지 포함해 TPS가 평균 1만, 최대 2만까지 늘어났습니다. Database: 더 이상 버틸 수 없다!결제 상태 서비스는 사용자의 결제 건별 상태(PENDING, COMPLETED, FAILED)를 기록하고 조회할 수 있는 서비스입니다. 결제 상태 변경은 결제 승인 또는 실패 시점에 한 번 발생하지만, U.. [Baekjoon Online Judge] 1629. 곱셈 // 해설 (Java) https://www.acmicpc.net/problem/1629문제 핵심결론부터 말하면 재귀 함수를 이용한 분할 정복으로 풀었습니다.이 둘에 대해 잘 모른다면 먼저 학습한 후에 풀어보는 것도 좋을 것 같습니다. 거듭제곱을 단순 반복문으로 계산하면 O(B)의 시간복잡도를 가지게 됩니다.B는 최대 2,147,483,647이므로 시간 초과 결국 시간 복잡도를 줄이라는 문제인데 분할 정복을 사용하면 O(logB)의 시간 복잡도를 가집니다.a*a*a*a*a*a = (a*a*a) * (a*a*a) 라는 성질을 이용해서중복되는 계산을 반으로 줄이면 이렇게 log 시간 복잡도를 가지게 됩니다.구현코드 (Java)import java.io.BufferedReader;import java.io.IOException;im.. [Baekjoon Online Judge] 1043. 거짓말 // 해설 (Java) https://www.acmicpc.net/problem/1043 문제 해설파티에 진실을 아는 사람이 있다면 반드시 진실을 말해야 하고 그 파티에 함께 있는 사람도 진실을 아는 사람이 되는 아주 현실적인 상황이라 문제를 해석하는 것은 어렵지 않습니다. 다만 주의할 점은 파티에서 거짓말을 한 뒤에 참여자가 진실을 아는 사람이 되는 상황도 있어서는 안 된다는 것입니다. 따라서 핵심은 모든 파티가 끝났을 때를 기준으로 진실을 아는 사람을 골라내고, 진실을 아는 사람이 포함되지 않은 파티의 수를 세면 된다는 것 입력의 크기가 워낙 작아서 Brute-force를 포함해 아마 다양한 방법으로 풀 수 있을 것 같습니다. (귀찮아서 풀어보지는 않음) 하지만 그러면 시뮬레이션 유형에 가까워지고 구현이 더 복잡해질 것 같.. [Baekjoon Online Judge] 4195. 친구 네트워크 // 해설 (Java) https://www.acmicpc.net/problem/4195 문제해설이 문제는 Union-Find 응용 문제입니다.따라서 Union-Find에 대한 기본적인 지식이 있다고 가정하고 설명하겠습니다. 이 문제에서는 단순히 같은 집합에 속하는지를 확인하는 것뿐만 아니라, 집합의 크기도 알아야 하기 때문에 약간의 응용이 필요합니다. 구현 자체는 어렵지 않기 때문에 한 번만 익혀두면 이후에는 쉽게 구현할 수 있습니다. 기존에는 루트 노드가 부모를 자기 자신으로 설정하여 자신이 루트임을 표시했습니다.집합의 크기가 필요한 경우에는 루트의 부모 값에 집합의 크기를 음수로 저장합니다.그러면 루트 노드의 조건은 부모가 음수인 것이며, 집합의 크기는 루트 노드의 부모 값의 부호를 반대로 바꾼 값이 됩니다.여기서 음수로.. 내 컴퓨터를 서버로 사용해보자 여는 글 개발자는 컴퓨터가 필요하다. 프로그램을 구동할 컴퓨터. 사실 대중적인 클라우드 서비스를 사용하는 것이 가장 합리적이지만 직접 환경을 구축해 보는 것도 좋은 경험이 될 것 같아서 시작하게 되었다. 계획목표집에 있는 PC를 서버로 전환하여 원격 접속, 웹 서비스 배포, 데이터베이스 운영, 모니터링·백업 기능을 직접 구성• 이점• 클라우드 요금 절감 (장기 운영 시 유리)• 서버 구성·운영 전반을 직접 경험하며 실무 감각 습득• 네트워크, 보안, 자동화 등 다양한 분야 스킬 강화⸻2. 준비 단계2.1 하드웨어 스펙• CPU: Intel Core i5 이상 (6코어·12스레드 권장)• RAM: 최소 16GB DDR4• 스토리지: 500GB NVMe SSD (OS 및 서비스 컨테이너용)• 네트워크: 유선.. 오늘도 QA가 안된다고 말했다 문제는 발생한다 "이거 안되는데요?" 사실 이는 굉장히 다행스러운 일이다. 가슴을 쓸어내려야 하는 상황이다. 배포되기 전에 문제를 조기에 발견한 것이다. 환호까지는 하지 않더라도, 나쁜 기분이 들어서는 안된다. 나도 잘 알고있다. 그럼에도 왜이리 공포스러운 것일까? 아마 문제가 도저히 해결이 안되는 상황을 경험해봤기 때문일 것이다. 감도 안잡히는 문제를 만나면 마치 늪에 빠진 기분을 느끼게 된다. 심지어 그런 일이 반복된다면? 이제 다가오는 발자국 소리만 들어도 심장이 두근대는 지경에 이르게 된다. (파블로프의 개발자) 그래서 우리는 이러한 상황을 예방하기 위해서 테스트 코드를 열심히 작성한다. 이는 큰 도움이 되지만, 그럼에도 문제는 발생하기 마련이다. 아무리 철저히 대비해도 예측하기 어려운 문제가 있.. [SW Expert Academy] 10726. 이진수 표현 (Java) 문제 설명핵심대놓고 비트 연산을 다룰 수 있는지 묻는 문제예시 입력 중 하나로 "4 47"이 있다.47은 이진법으로 101111이므로 첫 4개의 비트가 1이 된다. 이를 계산식으로 확인하는 방법해당 수가 15(이진수 1111)와 AND 연산(두 수의 같은 위치의 비트가 모두 1이면 1)을 했을 때, 15가 나오면 첫 4개의 비트가 모두 1임을 알 수 있다. 앞 N개의 비트가 1인 이진수를 구하는 방법먼저 쉬프트 연산에 대해 알아야한다. 0001을 왼쪽 쉬프트 연산하면 0010이다. (자바에서) a 1. 1을 n만큼 좌측 쉬프트 연산한다. // 1 2. 1을 뺀다. // 이진수10000 - 1 = 01111 AND 연산하는 법& 연산자를 통해 각 비트에 대한 논리 연산을 수행할 수 있다.구현Code (J.. 이전 1 2 3 4 5 다음