분류 전체보기

요구사항사내 고용 메세지 큐를 Kafka로 사용해야 한다현재 RabbitMQ 기반으로 작동 중지연이체 서비스는 유지되어야 한다(은행 점검 시간 종료 후, 자동으로 송금해주기다양한 은행, 다양한 점검 시간핵심 기능 설계지연이체 등록 API 개발지연이체 실행 구현스케줄러를 통해 DB의 데이터를 읽어와 송금 API에 전송데이터가 많아지면 5분 안에 모든 데이터의 송금을 완료 할 수 없음문제 해결 방법1. 스케줄러 늘리기=> 겹치지 않게 Read 해야하는 이슈가 발생, 복잡한 분기가 만들어짐=> 여러개의 스케줄러가 한번에 송금 요청 시 송금 요청 API server 부담 2. 메세지 큐 두기(Kafka) 이슈 사항토픽에 같은 송금 건이 쌓일 수 있다. (delay 상태가 만들어 짐)상태 체킹 로직 추가 컨슈머 ..
1. 플랫폼docker 이미지를 build시 기본적으로 Host 시스템 아키텍처에 맞는 플랫폼으로 빌드ex) mac북의 arm64platform 옵션으로 아키텍처를 설정해 build시 원하는 아키텍처를 가진 이미지를 빌드 가능docker build --platform linux/amd64 멀티 플랫폼 빌드(buildx 설치)docker buildx create --name container-builder -- driver docker-container --use -- bootstrap 여러 플랫폼에서 실행할 수 있는 단일 이미지를 만들 수 있음(,로 구분하여 진행)docker buildx build --platform linux/amd64,linux/arm64 --push ... pull시 Host 아키..
https://www.acmicpc.net/problem/1294  코드import sysfrom heapq import heappush, heappopinput = sys.stdin.readlinedef solution(): N = int(input()) heap = [] M = 0 for i in range(N): word = input().rstrip() heappush(heap, word+'_') M += len(word) res = '' for _ in range(M): word = heappop(heap) res += word[0] heappush(heap, word[1:]) pri..
· Python
compare to key의 약자로 커스터마이징 된 비교 함수를 정렬에 사용할 수 있게 해주는 도구입니다. Python에서는 기본적으로 sorted() 함수와 list.sort() 메서드에 key 인자를 사용하여 정렬 기준을 지정할 수 있는데, cmp_to_key를 사용하면 이 정렬 기준을 비교 함수 기반으로 정의할 수 있습니다. from functools import cmp_to_key 사용법from functools import cmp_to_key# 문자열 길이를 비교하는 함수def compare_len(s1, s2): return len(s1) - len(s2)# 비교 함수를 key로 변환key_func = cmp_to_key(compare_len)# 문자열 리스트 정렬words = ["app..
· CS지식
톰캣 이란was의 역활 jakarta EE 표준 스펙을 완벽하게 구현하고 있지는 않음 완벽한 was는 x서블릿 컨테이너이지만 was도 가능 스피링 부트가 톰 캣을 내장한 이유최소한의 설정으로 스프링 기반의 애플리케이션을 독립 실행할 수 있또록 톰캣을 내장spring-boot-starter-web에 내장되있음 이전 톰캣 설치 방법 스프링 부트의 톰캣 실행 과정createApplicationContext() => ConfigureableWebServerApllication인스턴스 생성 => 컨텍스트 메서드 생성 => ServletWebServerApplicationContext => createWebServer()=> TomcatServletWebServerFactory => getWebServer() 톰 ..
키워드 정리실행 단위: cpu core에 실행하는 하나의 단위로 프로세스와 스레드를 포괄하는 개념프로세스: 하나의 스레드만 가지고 있는 단일 스레드 프로세스동시성: 한 순간에 여러가지 일이 아니라, 짧은 전환으로 여러가지 일을 동시에 처리하는 것 처럼 보이는 것 메모리:code: 실행 명령을 포함하는 코드들Data: Static 변수 혹은 Global 변수Heap: 동적 메모리 영역Stack: 지역 변수, 매개변수, 반환 값 등 일시적인 데이터 Context Switching: 짧은 시분할로 프로세스 들을 바꿔치기Thread의 Context Swtich은: 공유 되는 자원이 있음 Multi-process & Multi-Thread: 한 어플리 케이션에 대한 처리 방식Multi-process로그인을 예시로..
· CS지식
동시성 제어데이터 무결성을 침해하지 않고 동시에 트랜잭션을 처리할 때 이를 제어하는 방법을 총칭 LOCK동시성 제어의 한 방법으로, 데이터에 잠금을 걸어 읽기/변경/삭제 등을 제한하는 수단 낙관적인 락: 락을 사용하지 않는 락 방법충돌이 발생하지 않는다고 가정Version Column을 추가(number, hash, timestamp 등)DB에서 처음 읽어온 version 기억update 시 현재 db의 version과 다르면 롤백속도 빠름 비관적인 락: 충돌이 자주 발생할 것이라고 가정TABLE or ROW에 LOCK 걸고 트랜잭션 작업다른 트랜잭션은 LOCK 획득까지 대기해당 작업 완료 시 LOCK 해제속도 느림 실전 적용:콘서트 티케팅: SECOND LOST UPDATES 일어 날 수 있음 => 비..
· CS지식
InnoDB란MySQL이 5.5 버전부터 기본적으로 사용하는 스토리지 엔진※ 원래는 MyISAM이 기본 엔진이였다. InnoDB의 특징외래 키 지원 => 데이터 베이스에서 참조 무결성 보장※ MyISAM은 외래키를 지원하지 않음(애플리케이션 레벨에서, 직접 수정해야함) 레코드 수준의 잠금(Row-level Locking) 지원 [record = row] (레코드 자체를 잠그는 거시 아니라, 인덱스의 레코드를 잠금)UPDATE crew SET 좋아하는 크루 = '레모네' WHERE 분야 = 'BE' (분야가 BE인 레코드 모드 잠김)만약 설정하지 않고 full scan 시 모두 잠김 => index를 잘 설계해야 한다.※ MyISAM은 테이블 수준의 잠금을 지원(동시성, 병목 현상 발생 가능성 높음)  A..
두잇 두두
'분류 전체보기' 카테고리의 글 목록 (3 Page)