분류 전체보기 278

멀티모듈 아키텍처 설계 및 적용

I. 들어가며최근 이직을 했는데, 이직한 곳의 프로젝트 구조가 종래의 단일 모듈 멀티 프로젝가 아닌 멀티 모듈 단일 프로젝트이다낯선 방식인데, 어떤점에서 이 방식을 이용했는지 멀티모듈 아키텍처의 개념과 구조 그리고 실패사례 등을 살펴본다. II. 멀티모듈 아키텍처란?1. 모놀리식 아키텍처하나의 서비스에서 API, Admin, Batch, WEB, DB등이 관리되는 구조이다.이 경우 단일 모듈 멀티 프로젝트 VS 멀티 모듈 단일 프로젝트로 구분이 된다 2. 단일 모듈 멀티 프로젝트이전 직장의 아키텍처 방식이다.각각의 프로젝트 단위로 IDE를 각각 띄우면서 이용을 한다.특히 모듈간 공통된 domain(ex: Member)이 중복이 된다. 이 경우 변경이 있으면 여러 모듈간 반복되는 복사 붙여넣기가 수반된다...

StreamAPI 의 실행순서와 병렬처리

I. Stream API의 이해1. 관점 변화명령형 프로그래밍 (C, JAVA)What을 할 것인지 나타내기 보다 How할 건지를 설명하는 방식이다선언형 프로그래밍How를 나타내기보다 What을 할건지 설명하는 방식2. Stream API의 이해JAVA는 OOP이므로 함수형 프로그래밍 불가JDK8 부터 Stream API 로 데이터 추상화하고 처리하는데 자주 사용되는 함수 정리데이터를 추상화 했다는 것은 데이터의 종류와 관계없이 같은 방식으로 처리재사용성 높일 수 있음특징원본 데이터 변경 X원본 데이터 조회 후 Stream을 생성함Stream 은 일회용한번 사용 끝나면 Stream을 재생성해야함닫힌 Stream은 IllegalStateException 발생내부 반복으로 작업 처리간결해 지는 이유임반복 문..

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

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)이 공백으로 구분되어 정수로 주어진다.같은 테스트 케이스 안에서..