분류 전체보기 390

[V3] 캐싱을 통한 쿼리 줄이기

로그를 살펴 보던 중, 글을 등록, 수정, 삭제 할때 마다 Principal을 통해 인증 정보를 가져오기 위해 query가 발생하는 것을 확인할 수 있었다.수정 빈도가 매우 적은 user 정보를 매번 db에 요청하는 것은 불필요한 부하라는 생각이 들어 user 정보를 캐싱하고 성능 개선이 어느정도 되었는지를 부하 테스트 해보기로 하였다. 캐싱 전 테스트테스트 종류:1) Smoke 테스트 VUser: 1 ~ 2 최소의 부하로 시나리오를 검증한다. 2) Load 테스트 평소 트래픽과 최대 트래픽일 때 VUser를 계산 후 시나리오를 검증한다. 3) Stress 테스트 최대 사용자 혹은 최대 처리량인 경우의 한계점을 확인하는 테스트이다. 점진적으로 부하를 증가시켜본다.테스트 이후 시스템이 수동 개입 없이 자동..

부트모아 2024.09.28

[파이썬] Pro 수식 최대화

문제 https://school.programmers.co.kr/learn/courses/30/lessons/67257?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from copy import deepcopy def operation(num1, num2, op): if op == '+': return str(int(num1) + int(num2)) if op == '-': return str(int(num1) - int(num2)) if op == '*': return str(int(num1) * int(num2))..

문제풀이/기타 2024.01.12

[파이썬] Pro 삼각 달팽이

문제 https://school.programmers.co.kr/learn/courses/30/lessons/68645?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 direction={0:(1,0), 1:(0,1), 2:(-1,-1)} def solution(n): answer = [] arr=[[0]*i for i in range(1,n+1)] x,y=-1,0 num=1 for i in range(n): for j in range(i,n): dx,dy=direction[i%3] x+=dx y+=dy arr[x][y]..

문제풀이/기타 2024.01.11

[파이썬] Pro 줄 서는 방법

문제 https://school.programmers.co.kr/learn/courses/30/lessons/12936 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from collections import deque def fac(n): if n==1: return 1 return n*fac(n-1) def solution(n, k): answer = [] queue=deque(i for i in range(1,n+1)) while n>1: f=fac(n-1) # 배열은 0부터 시작하므로 ans=queue[(k-1)//f] answer.appen..

문제풀이/기타 2023.12.22

[파이썬] Pro 택배상자

문제 https://school.programmers.co.kr/learn/courses/30/lessons/131704# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 def solution(order): answer = 1 cont=[] for i in range(1,order[0]): cont.append(i) cur=order[0] for i in range(1,len(order)): cur=max(cur,order[i-1]) if order[i-1]>order[i]: if cont[-1]!=order[i]: break else: answer..

문제풀이/기타 2023.12.21

[파이썬] Pro 과제 진행하기

문제 https://school.programmers.co.kr/learn/courses/30/lessons/176962?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 코드 from collections import deque def convert(s): h,m = map(int, s.split(":")) return h*60+m def solution(plans): answer = [] plans=[(name, convert(start), int(playtime)) for name, start, playtime in pla..

문제풀이/기타 2023.12.20

Process Synchronization 3 & 4

Bounded-Buffer-Problem (Producer-Consumer Problem) 공유 데이터 buffer 자체 및 buffer 조작 변수 (empty / full buffer의 시작 위치) Producer (생산자) Empty 버퍼가 있는지 확인한다. (없으면 기다림) 공유 데이터에 lock을 건다. Empty 버퍼에 데이터를 입력하고 버퍼를 조작한다. lock을 푼다. Full 버퍼가 하나 증가한다. Consumer (소비자) Full 버퍼가 있는지 확인한다. (없으면 기다림) 공유 데이터에 lock을 건다. Full 버퍼에서 데이터를 꺼내고 버퍼를 조작한다. lock을 푼다. Empty 버퍼가 하나 증가한다. 발생 가능한 동기화 문제 공유 버퍼이기 때문에 생산자 여러 명이 동시에 한 버퍼에..

OS 2023.12.02

Process Synchronization 1

임계 구역 문제를 해결하기 위한 충족 조건 상호 배제 (Mutual Exclusion) 어떤 프로세스가 임계 구역 부분을 수행 중이면 다른 모든 프로세스는 그의 임계 구역에 들어가면 안 된다. 진행 (Progress) 아무도 임계 구역에 있지 않은 상태에서 임계 구역에 들어가고자 하는 프로세스가 있으면 임계 구역에 들어가게 해 주어야 한다. 유한 대기 (Bounded Waiting) 프로세스가 임계 구역에 들어가려고 요청한 후부터 그 요청이 허용될 때까지 다른 프로세스들이 임계 구역에 들어가는 횟수에 한계가 있어야 한다. ex) 세 개의 프로세스가 있을 때 두 개의 프로세스만 번갈아가며 임계 구역에 들어가는 것은 유한 대기 조건을 만족하지 못한 것이다. 임계 구역 문제 해결 알고리즘 Algorithm 1..

OS 2023.11.27

CPU Scheduling 2 & Process Synchronization

멀티 레벨 큐 (Multi-Level Queue) Ready Queue를 우선 순위에 따라 여러 개로 분할한다. 빠른 응답을 필요로 하는 대화형 작업은 전위 큐에 넣는다. 전위 큐에서는 주로 라운드 로빈 스케줄링 기법을 사용한다. 계산 위주의 작업은 후위 큐에 넣는다. 후위 큐에서는 주로 FCFS 스케줄링 기법을 사용한다. 멀티 레벨 큐 자체에 대한 스케줄링이 필요하다. 고정 우선 순위 방식 (Fixed Priority Scheduling) 전위 큐에 있는 프로세스에게 우선적으로 CPU가 할당되고, 전위 큐가 비어 있는 경우에만 후위 큐에 있는 프로세스에게 CPU가 할당된다. Starvation 가능성이 존재한다. 타임 슬라이스 방식 (Time Slice) 각 큐에 CPU time을 적절한 비율로 할당한..

OS 2023.11.26