전체 글 784

[Lv.4 / 프로그래머스 / SQL] 주문량이 많은 아이스크림들 조회하기

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   풀이(MySQL) FIRST_HALF는 FLAVOR가 중복된 행이 없지만, JULY 테이블에는 같은 FLAVOR가 존재할 수 있다.  따라서 JULY 테이블 기준으로 FLAVOR를 그룹화하여 TOTAL_ORDER를 SUM 집계 함수로 다시 계산한 다음, FIRST_HALF와 조인하여 구하면 된다. SELECT JULY.FLAVORFROM JULYLEFT JOIN FIRST_HALFON FIRST_HALF.FLAVOR = JULY.FLAVORGROUP BY FLAVORORDER BY FIRST_HALF.TOTAL_ORDER..

[Lv.2 / 프로그래머스 / SQL] 성분으로 구분한 아이스크림 총 주문량

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이(MySQL) JOIN을 통해 각 FLAVOR의 INGREDIENT_TYPE을 구한 뒤, 그 타입별로 TOTAL_ORDER의 합계를 구해야 한다.  타입별로 묶어야 하므로 GROUP BY를 통해 그룹화해서 문제를 해결할 수 있다. SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDERFROM FIRST_HALFINNER JOIN ICECREAM_INFOON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVORGROUP BY INGREDIENT_TYPEORD..

[Lv.1 / 프로그래머스 / SQL] 과일로 만든 아이스크림 고르기

프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  풀이(MySQL) FIRST_HALF 테이블의 TOTAL_ORDER가 3000을 초과하면서 FLAVOR의 INGREDIENT_TYPE이 fruit_based 인 아이스크림의 FLAVOR를 조회해야 한다. JOIN을 통해 각 FLAVOR의 INGREDIENT_TYPE을 구할 수 있다. SELECT FIRST_HALF.FLAVORFROM FIRST_HALFINNER JOIN ICECREAM_INFOON FIRST_HALF.FLAVOR = ICECREAM_INFO.FLAVORWHERE TOTAL_ORDER > 3000 AND I..

[Git / IntelliJ] 마이크로서비스 구성 시 서브모듈의 형상 관리 통합하기

개요 마이크로서비스를 공부하면서 예제 프로젝트를 진행하였는데, 부모 프로젝트에서 모듈을 생성하면 아래와 같이 형상 관리가 모듈별로 이루어지는 문제가 있었다.    심지어 둘 이상의 모듈을 수정한 다음 push하면 각각의 모듈에서 형상 관리가 이루어지므로 다음과 같이 더욱 지저분하게 보였다.   아직 모듈이 하나이고 브랜치들의 Merge 작업이 없기 때문에 이정도이지, 나중으로 가면 더 심각해질 문제였다. 필자는 IntelliJ에 내장된 Git GUI를 애용하기 때문에 더 용납할 수 없었다.물론 서브모듈별로 Git이 관리되는 것 자체가 문제라고 할 수는 없지만, 단순한 학습용 프로젝트이기 때문에 이렇게 관리되는 것을 원치 않았다.  해결 방법 원인은 어찌보면 당연하게도 모듈이 별도의 Git 저장소로 관리되..

Dev 2024.10.16

[Java / Spring] 재고시스템으로 알아보는 동시성이슈 해결방법

개요  재고시스템으로 알아보는 동시성이슈 해결방법 강의 | 최상용 - 인프런최상용 | 동시성 이슈란 무엇인지 알아보고 처리하는 방법들을 학습합니다., 동시성 이슈 처리도 자신있게! 간단한 재고 시스템으로 차근차근 배워보세요. 백엔드 개발자라면 꼭 알아야 할 동www.inflearn.com 해당 게시글은 위 인프런 강의를 수강한 내용을 바탕으로 작성되었습니다. 개발 환경Java 17SpringBoot 3.3.4GradleMySQL, JPA 목표예제 프로젝트를 통해 멀티스레드 환경에서 발생할 수 있는 동시성 이슈를 효과적으로 예방/해결할 수 있는 방법을 학습한다. 선수 과목Spring, JPA  동시성 이슈 발생 우선 동시성 이슈가 발생하는 것을 확인할 수 있는 예제 코드를 작성해 보자. Entity@Ent..

Dev/Java 2024.10.08

[Gradle] Lombok 사용 시 'cannot find symbol' 에러 해결

개요 Java17, Gradle을 사용하는 SpringBoot 프로젝트를 새로 생성 후, Lombok을 추가하여 코드를 작성했다. 그리고 간단한 테스트 코드를 작성하여 실행하려는데 아래와 같이 cannot find symbol 에러가 발생했다.  분명 Dependency도 잘 추가했고, @Getter 등 Lombok 관련 코드도 클라이언트 코드에서 문제 없이 작성이 가능했는데 말이다. 위 에러는 SpringBootApplication을 실행할 때에도 위 Lombok 관련 코드가 포함된다면 동일하게 발생했다.  원인 두괄식으로 설명하자면, build.gradle에 implementation으로 Lombok의 의존성은 추가했지만, annotationProcessor로는 Lombok을 추가하지 않았기 때문이었..

Dev 2024.10.02

[Reactive Programming] Debugging

개요 동기식 또는 명령형 프로그래밍 방식은 Exception이 발생했을 때, StackTrace를 확인하거나 의심되는 코드에 Breakpoint를 걸어서 문제의 원인을 단계적으로 찾아갈 수 있어 상대적으로 디버깅이 쉽다. 하지만 Reactor 같은 선언형 프로그래밍 방식은 작업의 대부분이 비동기적으로 실행되기 때문에 디버깅이 쉽지 않다. 그래서 Reactor는 디버깅의 어려움을 최소화하기 위해 몇 가지 방법을 제공한다.   Debug Mode를 사용한 디버깅 Reactor에서는 Hooks.onOperatorDebug() 메서드를 사용하여 디버그 모드를 활성화할 수 있다. 우선, 디버그 모드가 아닐 때 에러 메시지가 어떻게 출력되는지 확인해보자. @Slf4jpublic class Example12_1 { ..

[Reactive Programming] Context

Context란? Reactor에서 Context는 Reactor 구성요소(Operator 등) 간에 전파되는 key/value 형태의 저장소이다. ServletContext, SecurityContext 등과 유사한 개념이다. Downstream에서 Upstream으로 Context가 전파되어 Operator 체인상의 각 Operator가 해당 Context 정보를 동일하게 이용할 수 있음ThreadLocal과 유사하지만, Thread와 매핑되는 것이 아닌 Subscriber와 매핑된다. 즉, 구독이 발생할 때마다 구독과 연결된 하나의 Context가 생성된다. 사용 예시@Slf4jpublic class Example11_1 { public static void main(String[] args) th..

[Reactive Programming] Scheduler

스레드(Thread)의 개념 이해 Reactor에서 사용되는 Scheduler는 Reactor Sequence에서 사용되는 스레드를 관리해 주는 관리자 역할을 한다. 이 Scherduler에 대한 설명에 앞서, 스레드에 대한 개념을 간단히 살펴보자면 다음과 같다. 코어(Core)실제 CPU의 코어를 지칭한다. 일반적으로 이 코어의 개수가 많으면 더 많은 수의 명령을 병렬로 빠르게 처리할 수 있다.  물리적 스레드(Physical Thread) / 논리적 코어(Logical Core) 과거에는 한 코어 당 하나의 물리적 스레드가 존재하여 한 코어가 한 번에 하나의 스레드를 처리할 수 있었다. 인텔에서는 코어 하나로 두 스레드를 처리할 수 있는 기술인 하이퍼스레딩 개념을 도입하여 하나의 코어로 두 가지 스레..

[🥇5 / 백준 31423 / 파이썬] 신촌 통폐합 계획

31423번: 신촌 통폐합 계획첫 번째 줄에 대학교의 개수 $N$이 주어진다. $(2 \leq N \leq 500 \, 000)$ 다음 $N$개의 줄의 $i$번째 줄에 대학교 이름을 의미하는 알파벳 소문자로 이루어진 문자열 $s_i$가 주어진다. 주어지는 대학교www.acmicpc.net 문제극단적인 출산율 감소로 인해 신촌 지역 N개 대학교가 하나의 학교로 통합되었다.기나긴 회의 끝에, 통합된 학교의 이름은 N개 대학교의 이름을 이어 붙여서 정해졌다. 회의에서 통합된 학교의 이름을 정한 방법은 다음과 같다. N개 대학교의 이름 s1,s2,⋯,sN을 일렬로 나열한다. 이후 다음의 과정을 N−1번 반복한다. si,sj가 빈 문자열이 아닌 서로 다른 두 정수 i,j를 고른다. si의 뒤쪽에 sj를 이어 붙인..

반응형