본문 바로가기

분류 전체보기

(71)
Spring 성능 부하 테스트 Thread Pool 저번에 쓴 글에 이어서 이번에는좀 더 성능 오류와 서버가 죽는 문제를 해결해보려고 합니다.  저번 글에서는 서바가 일정 수치를 넘어서게 되면 계속 죽는 것을 그래프를 통해서 확인할 수 있었습니다.그리하여 해당 로직을 처리하는 과정에 Thread Pool 을 추가하여 좀 더 요청에 대해 비동기적으로 처리하여 서버가 죽는 형태를 방지해보려고 합니다. 서버의 오류를 줄이는 대신에 TPS,Executed Tests의 값은 내려갔지만, 서버가 죽지 않고 계속 처리를 할 수 있게 되었습니다.Thread Pool  보통 각 요청 마다 처리할 수 있는 Thread를 생성하여 요청을 처리하게 되는데 이때 발생하는 문제로는 생성하는데 생각보다 많은 시간이 걸리게 됩니다.처리속도 보다 더 빠르게 요청이 늘어난다면 스레드를 ..
[Programmer] 전화번호 목록 https://school.programmers.co.kr/learn/courses/30/lessons/42577# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제는 해당 주어진 문자열 안에 중복되는 문자가 있는지를 검사하는 문제이다.검사 했을 때 중복되지 않는다면 True, 아니면 False 를 출력 해야 되는 문제이다. def solution(phone_book): phone_dict = {} for number in phone_book: phone_dict[number] = True for number in phone_book: pre..
nGrinder 부하 테스트 오늘은 제가 진행했던 프로젝트의 성능을 측정하기 위해 네이버에서 개발한 오픈소스를 사용 해보도록 하겠습니다.nGrinder는 Java기반 성능 테스트 도구입니다. 우선 nGrinder를 사용하기 위해서는 docker가 필요합니다.docker pull ngrinder/controller 그 다음에 도커를 실행 하기 위해 다음과 같은 명령어를 입력합니다. docker run -d \ --platform linux/amd64 \ -v ~/ngrinder-controller:/opt/ngrinder-controller \ --name controller \ -p 8081:80 \ -p 16001:16001 \ -p 12000-12009:12000-12009 \ ngrinder/controller A..
[Programmers] 폰켓몬 https://school.programmers.co.kr/learn/courses/30/lessons/1845# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이 문제는 폰켓몬의 리스트가 주어지고, 그 리스트의 /2의 개수 만큼 폰켓몬을 뽑을 수 있습니다.그 수의 최대를 출력하면 되는 문제 입니다.여기서 저는 순열이라고 생각을 하여 combinations 가져와서 문제를 풀었는데시간초과가 나버렸습니다. from itertools import combinationsdef solution(nums): answer = 0 set_list = set(nums) flag = False f..
Q-learning Q-learning의 핵심은 정책(Policy) 없이도 환경을 탐색하며 최적의 행동을 학습할 수 있는 모델-프리 강화 학습(Model-Free Reinforcement Learning) 알고리즘 이다.  아래와 같은 테이블이 있다고 치자 4x4 테이블에서 한 칸을 4개의 칸으로 나누게 된다. Q-learning의 시작을 (0,0) 라고 설정 하고 어딘가 있는 목적지 까지 최적의 스텝을 밟아가면서 학습을 진행 한다.이렇게 모든 테이블에 0을 집어 넣으며 업데이트를 진행 한다첫 번째 에피소드에서 목적지 근처에 도달하게 되면 해당 방향을 1로 업데이트 한다. Q의 값을 계속해서 업데이트 하는 형식으로 진행하게 되는데 이런식으로는 최적의 결과가 나오지 않을 것 이다. 그래서 Exploit & Exploratio..
[Programmer] 괄호 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 괄호들이 알맞게 짝 지어져 있는지 푸는 문제이다.def is_valid(s): stack = [] pair = {')': '(', ']': '[', '}': '{'} for char in s: if char in "({[": stack.append(char) elif char in ")}]": if not stack or stack[-1] != pair[ch..
옵티마이저 Optimizer 모델 학습에 사용되는 옵티마이저에 대해 알아보자 기울기를 기반으로 최적의 값을 발견하는 것이 애네가 하는 일이다. Gradient Descent (GD)데이터 전체를 사용해 기울기를 계산하고 최적화 방향을 결정한다모든 데이터 샘플에 대해 계산하므로 연산 비용이 크고 느리다수렴 속도가 느릴 수 있지만 최적화 경로가 안정적이다Stochastic Gradient Descent (SGD)한 번의 업데이트에 전체 데이터를 사용하는 대신 무작위 샘플(배치)을 사용.연산량이 감소해 속도가 향상되지만, 경로가 흔들릴 수 있음. 여기서부터 스탭의 사이즈와 스탭방향에 따라 옵티마이저가 구분이 됩니다. 스텝 방향으로 최적화Momentum이전 스텝의 관성을 추가로 고려하여 더 빠르게 최적점을 찾는다관성 계수를 추가하여 속도와..
[programmers] [PCCP 기출문제] 2번 / 석유 시추 https://school.programmers.co.kr/learn/courses/30/lessons/250136 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제는 위에 링크를 클릭하면 된다. 해당 문제는 NxM 배열에서 얼마나 많은 석유를 시추 할 수 있는지 최대값을 출력하는 문제 이다. 저는 이 문제는 DFS 형식으로 방문 처리를 진행 했습니다.여기서 제일 핵심은 해당 좌표의 값이 1 이고, 1과 같이 붙어있는 석유들을 하나의 그룹으로 지정하는 것이 핵심 입니다. 그 후 마지막에 시추 하는 형식으로 for문으로 탐색 하며 각 인덱스의 그룹의 값을 더해주어 max를 비교하면 되는 문제입니다. d..
[GPT] 모델의 구조 https://levelup.gitconnected.com/lets-build-our-own-gpt-model-from-scratch-with-pytorch-236a65a1fb54 Let’s Build our own GPT Model from Scratch with PyTorchToday, we will step away from our Vision Transformer series and discuss building a basic variant of a Generative Pre-trained Transformer…levelup.gitconnected.com이 블로그를 기반으로 GPT 모델이 어떻게 동작하고 어떤 코드로 되어 있는지 공부한 내용을 정리해 보았습니다 1. GPT의 정의와 구조GPT(Ge..
Git Branch 종류 개발을 하다 보니 내가 개발을 하는 방식과 다른 사람들의 방식은 얼마나 다른지 궁금했다.나에 경우 개발 인력에 따라서 개발 브런치를 main과 해당 인원들의 이름으로 branch를 따는 형식으로 진행을 했었다. 실제 개발 회사에서는 git branch를 5가지의 branch를 만들어서 진행을 한다.그 들었던 내용과 내가 검색해서 알게된 내용을 적어 본다.master,hotfix,feature,Develop,Release 이렇게 총 5개의 branch를 가진다.- Main,Master Branch배포(Release) 이력을 관리하기 위해 사용. 즉, 배포 가능한 상태만을 관리한다.Release 단계의 프로젝트 파일을 master에 담어 기록한다.  - Develop Branch기능 개발 하는 브런치 이다...