분류 전체보기 275

스프링과 싱글톤: 효율성과 안정성의 조화

I. 들어가며스프링은 스프링 컨테이너에 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록한다(유일하게 하나만 등록해서 공유한다) 따라서 같은 스프링 빈이면 모두 같은 인스턴스다. 설정으로 싱글톤이 아니게 설정할 수 있지만, 특별한 경우를 제외하면 대부분 싱글톤을 사용한다.  스프링 기본기를 공부하던 중 다음 문장을 보고 왜 스프링 빈을 등록할 때, 기본으로 싱글톤으로 등록하는지 의문이 있었다. 스프링과 싱글톤의 관계를 탐색하고, 웹 어플리케이션 관점에서 특히 싱글톤이 왜 필요한지 그리고 싱글톤 패턴 그 자체와 주의사항에 대해서 알아보겠다. 아울러 시작 전 질문을 한다. 웹 애플리케이션은 수많은 요청을 처리하기 위해 다수의 객체를 필요로 한다. 하지만 매 요청마다 객체를 새로이 생성한다면 어떤 문제가 발생..

N+1 문제와 Fetch 전략을 모르면 JPA를 잘못 쓰고 있을수도...

I. 들어가며JPA 를 이용하기 위해서는 기존에 사용하는 mybatis 이용보다 이점이 필요하다. JPA는 객체 중심 설계와 데이터베이스의 매핑을 손쉽게 처리하는 기능을 제공한다. 하지만 잘못된 설정이나 사용으로 예상치 못한 문제가 발생할 가능성이 상존한다. 이러한 문제를 사전에 이해하고 대비하기 위해 준비하게 되었다.JPA에서 중요한 성능 최적화 이슈인 Fetch전략과 N + 1 문제를 중심으로 살펴보고 이를 해결하는 방법을 살펴보겠다II. 성능 저하를 일으키는 3대 문제와 최적화 방법1. Fetch 전략1) Fetch 전략이란Entity의 연관 데이터를 Eager Loading할지, Lazy Loading할지 결정하는 방식이다.Eager Loading 은 항상 즉시 load해서 연관 데이터가 항상 필..

[Sort]99클럽 코테 스터디 32일차 TIL + 프로그래머스/2/42747. H-Index

H-Index - 문제 42747문제 링크성능 요약메모리: 10.1 MB, 시간: 0.18 ms구분코딩테스트 연습 > 정렬채점 결과정확성: 100.0합계: 100.0 / 100.0제출 일자2024년 11월 29일 09:47:54문제 설명H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다.어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다.어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 ..

[Sort]99클럽 코테 스터디 31일차 TIL + 백준/Silver/1755. 숫자놀이

숫자놀이문제79를 영어로 읽되 숫자 단위로 하나씩 읽는다면 "seven nine"이 된다. 80은 마찬가지로 "eight zero"라고 읽는다. 79는 80보다 작지만, 영어로 숫자 하나씩 읽는다면 "eight zero"가 "seven nine"보다 사전순으로 먼저 온다.문제는 정수 M, N(1 ≤ M ≤ N ≤ 99)이 주어지면 M 이상 N 이하의 정수를 숫자 하나씩 읽었을 때를 기준으로 사전순으로 정렬하여 출력하는 것이다.입력첫째 줄에 M과 N이 주어진다.출력M 이상 N 이하의 정수를 문제 조건에 맞게 정렬하여 한 줄에 10개씩 출력한다.예제 입력 18 28예제 출력 18 9 18 15 14 19 11 17 16 1312 10 28 25 24 21 27 26 23 2220  import sys# 1...

[Sort]99클럽 코테 스터디 30일차 TIL + 백준/Bronze/1524. 세준세비

세준세비문제세준이와 세비는 온라인 게임을 즐겨한다. 이 온라인 게임에서는 군대를 서로 키울 수 있다. 세준이는 N명의 병사를 키웠고, 세비는 M명의 병사를 키웠다.이제 서로 전쟁을 하려고 한다.전쟁은 여러 번의 전투로 이루어진다. 각 전투에서 살아있는 병사 중 제일 약한 병사가 죽는다. 만약 제일 약한 병사가 여러 명이고, 제일 약한 병사가 모두 같은 편에 있다면, 그 중에 한 명이 임의로 선택되어 죽는다. 하지만, 제일 약한 병사가 여러 명이고, 양 편에 모두 있다면, 세비의 제일 약한 병사 중 한 명이 임의로 선택되어 죽는다.전쟁은 한 명의 병사를 제외하고 모두 죽었을 때 끝난다. 전쟁의 승자를 출력하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. T는 100보다 작거나 ..

[Sort]99클럽 코테 스터디 29일차 TIL + 2327-largest-number-after-digit-swaps-by-parity

2327. Largest Number After Digit Swaps by ParityEasyYou are given a positive integer num. You may swap any two digits of num that have the same parity (i.e. both odd digits or both even digits).Return the largest possible value of num after any number of swaps. Example 1:Input: num = 1234Output: 3412Explanation: Swap the digit 3 with the digit 1, this results in the number 3214.Swap the digit 2 ..

[Sort]99클럽 코테 스터디 28일차 TIL + python_Algorithm/0506-relative-ranks

506. Relative RanksEasyYou are given an integer array score of size n, where score[i] is the score of the ith athlete in a competition. All the scores are guaranteed to be unique.The athletes are placed based on their scores, where the 1st place athlete has the highest score, the 2nd place athlete has the 2nd highest score, and so on. The placement of each athlete determines their rank:The 1st p..

[Sort]99클럽 코테 스터디 27일차 TIL + 백준/Bronze/11557. Yangjojang of The Year

Yangjojang of The Year문제입학 OT때 누구보다도 남다르게 놀았던 당신은 자연스럽게 1학년 과대를 역임하게 되었다.타교와의 조인트 엠티를 기획하려는 당신은 근처에 있는 학교 중 어느 학교가 술을 가장 많이 먹는지 궁금해졌다.학교별로 한 해 동안 술 소비량이 주어질 때, 가장 술 소비가 많은 학교 이름을 출력하여라.입력입력의 첫 줄에는 테스트 케이스의 숫자 T가 주어진다.매 입력의 첫 줄에는 학교의 숫자 정수 N(1 ≤ N ≤ 100)이 주어진다.이어서 N줄에 걸쳐 학교 이름 S(1 ≤ |S| ≤ 20, S는 공백없는 대소문자 알파벳 문자열)와 해당 학교가 지난 한 해 동안 소비한 술의 양 L(0 ≤ L ≤ 10,000,000)이 공백으로 구분되어 정수로 주어진다.같은 테스트 케이스 안에서..

[Sort]99클럽 코테 스터디 26일차 TIL + 백준/Silver/11004. K번째 수

K번째 수 - 문제 11004문제 링크성능 요약메모리: 623196 KB, 시간: 3732 ms분류정렬제출 일자2024년 11월 23일 10:48:19문제 설명수 N개 A1, A2, ..., AN이 주어진다. A를 오름차순 정렬했을 때, 앞에서부터 K번째 있는 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 N(1 ≤ N ≤ 5,000,000)과 K (1 ≤ K ≤ N)이 주어진다.둘째 줄에는 A1, A2, ..., AN이 주어진다. (-109 ≤ Ai ≤ 109)출력A를 정렬했을 때, 앞에서부터 K번째 있는 수를 출력한다.예제 입력 15 24 1 2 3 5예제 출력 12   import sysN, K = map(int,(sys.stdin.readline().split()))A = list(map(int..

[Priority Queue]25일차 TIL + 프로그래머스/2/42626. 더 맵게

더 맵게 - 문제 42626문제 링크성능 요약메모리: 51.7 MB, 시간: 1748.42 ms구분코딩테스트 연습 > 힙(Heap)채점 결과정확성: 83.9효율성: 16.1합계: 100.0 / 100.0제출 일자2024년 11월 22일 08:55:30문제 설명매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만듭니다.섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수 * 2)Leo는 모든 음식의 스코빌 지수가 K 이상이 될 때까지 반복하여 섞습니다.Leo가 가진 ..