묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
fetch join VS fetch join 페이징 궁금증
강의 영상 24분쯤 fetch join은 페이징 처리가 불가능하다고 말씀해주셨는데(사용하게 될 시 메모리에 임시로 모든 데이터 적재 후 페이징 처리로 설명), 페이징을 하지 않을 경우에도 Order rows가 1만건 이라면 1만건 모두 조회되는 것 아닌가요?이럴 때도 메모리에 대한 문제가 있을 것 같은데 제가 잘못 이해한 것인지 설명 부탁드리겠습니다!
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
33분 대 출력값 작성 자바 문제
안녕하세요 선생님.33분 대 자바 문제에서제가 이해한 바가 맞는지 궁금해 질문 드립니다.------------------------------------업캐스팅 되지 않은 상태로 obj가 태어났고child() 생성자를 찾으러 올라갔고,업캐스팅 여부와 상관 없이 새로 객체가 태어나게 되면 child()를 실행하기 전에 -> 자동으로 parent()로 올라가게 됩니다.parent() 안에 있는 this(500)으로 인해 parent(500)을 실행하게 되고,parent의 int x가 100에서 500으로 바뀝니다.그리고 다시 child()로 돌아와서 this(5000) -> child(5000) -> child.x는 4000에서 5000으로 바뀌게 됩니다.다시 메인으로 내려와서 system.out.println(obj.getX())를 실행하게 되고child 클래스에는 getX가 없기 때문에 parent 클래스로 올라가서 getX()를 찾습니다.그래서 return x로 인해 parent의 500을 답으로 돌려주게 됩니다. ---------------------------------[질문]1. 제가 위에 적어놓은 풀이과정이 맞나요?2. 업캐스팅 여부와 상관 없이, 업캐스팅 됐든 되지 않았든 새로 객체가 태어나게 되면 child()를 실행하기 전에 -> 자동으로 parent()로 올라가게 되나요? 3. 만약 Child obj2 = new Child(300) 이렇게 태어나게 되면 Child(int x)로 올라갔다가 -> 자동으로 Parent(int x)로 올라가게 되나요? 아니면 이 경우는 기본생성자 형태가 아니기 때문에 super로 부모를 명시해야 하나요?4. system.out.println(obj.getX())를 실행할 때, child 클래스에 getX가 있었다면 메서드 오버라이딩으로 인해 parent 클래스로 올라가지 않나요? 질문이 너무 많은 거 같은데 죄송합니다..다시 한 번 개념을 정립하고 싶어 길게 질문드렸습니다. 답변 주시면 감사하겠습니다..
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
19:38 빈칸 채우기 (정렬 문제)
안녕하세요 선생님.항상 강의 잘 듣고 있습니다!다름이 아니고빈칸 채우기 정렬 문제에서 2번에 nx가 아니고 5라고 써도 정답 처리가 될까요??문제에서는 a[]의 길이가 5이고 해당 문제에서는 이미 문제가 명시되었기 때문에 다른 배열이 올 수가 없는 상태이니5라고 적어도 되지않을까 궁금합니다!
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
그라파나 대시보드 오타가 있는 거 같아요
그대로 복붙 해봤는데 p95가 두개있어서 p50를 측정 안하고 있었슴미다그래서 json 살펴보니 [0.95]"expr": "max by(http_method, path, query_type) (app_query_per_request{quantile=\"0.95\"})", "fullMetaSearch": false, "includeNullMetadata": true, "instant": false,"legendFormat": "P95 - {{http_method}} {{path}} - {{query_type}}", [0.50]"expr": "max by(http_method, path, query_type) (app_query_per_request{quantile=\"0.95\"})","hide": false, "instant": false,"legendFormat": "P50 - {{http_method}} {{path}} - {{query_type}}", 아래 0.50에 0.95의 값을 대입하고 있떠라구요잘 작성된 건가요 오타인건가요
-
해결됨토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
도메인 로직에 대해서 궁금한 것이 있습니다.
현재 Member 도메인 모델 확장 까지의 수업을 듣고 궁금한 것이 있습니다! 저희가 이번 수업을 포함하여 지금까지 요구사항(도메인) -> 도메인 모델(회원) -> 비밀번호 해시라는 일련의 과정을 통해 비밀번호 암호화와 관련한 도메인 모델의 규칙, 속성, 행위 등을 뽑아냈기 때문에 비밀번호 암호화까지 도메인 로직에 포함된다고 이해했습니다. <인터페이스 위치를 결정하는 기준에 대해> 해당 답변에서도 PasswordEncoder를 어디에 둘지 결정할 때 사용한 기준은 도메인 모델을 이야기할 때 이게 등장하는가 라고 말씀해주시기도 했고요! 그렇다면 개발은 결국 요구사항을 토대로 진행되는 것이기에 모든 코드가 도메인 로직으로 분류되어야 하는 것 아닌가? 하는 의문점이 생겼습니다! 토비의 생각을 듣고 싶습니다!
-
해결됨스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판
Entity 생성 시 access 레벨 지정해주는 이유
강의를 듣다가 한가지 궁금한 부분이 있어서 질문남깁니다. Entity 객체 생성 시NoArgConstructor 선언 시access를 항상 AccessLevel.PROTECTED로 설정하시는데 이유가 있으실까요?
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
기출) 2023년 2회 코드해석 문제 25:58 질문있습니다.
안녕하세요 c언어 정렬 문제 관련해서요 >=가 안 되는 건 왜 그런 건가요? 두 값이 같을 때 swap하는 건 메모리나 실행 시간 에서 비효율적인 건 알겠는데 결론적으로는 같은 아웃풋을 내지 않나요? 심지어 예시로는 같은 숫자도 없었고요.. 감사합니다!
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
실행흐름에 대한 설명이 좀 이상합니다.
생성자 호출 실행흐름을 따라가다가, 중간에 설명이 틀려서 수정을 해주긴 하셨는데 결국 최종 실행흐름에 대한 설명은 나와있지 않습니다. 정확한 실행흐름에 대한 설명을 부탁드립니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
양방향 연관관계 알아보는 법?
안녕하세요. 8분쯤 양방향 연관관계 시 @JsonIgnore 어노테이션을 통해 순환 참조가 되는 것을 방지해야 한다고 알려주셨는데, 엔티티 하나하나 들어가서 직접 확인해야 하나요?ERD나 관계가 복잡해서 까먹을 경우 이렇게 하나씩 확인을 해야 하는지, 아니면 IDE 같은 걸로 도움을 받을 수 있는지 궁금합니다.
-
해결됨RabbitMQ를 이용한 비동기 아키텍처 한방에 해결하기
안녕하세요 섹션2. 12번 강의에서 질문 있습니다.
안녕하세요 강의 잘 듣고 있습니다. 섹션2 12번 강의에서 (관심사기반의뉴스레터발행/구독모델) 에서 질문 있습니다.fanout exchange는 바인딩된 모든 큐에 메시지를 보내는 방식이므로 모든 큐에 메시지가 가는 것으로 알고 있습니다.예를 들어 제가 java 라는 특정 topic을 구독하면 java queue 에 있는 메시지만 계속 소비할텐데, 그러면 나머지 spring queue나 vue queue 에는 메시지가 계속 쌓여 문제가 되는 것 아닌가요 ?발행/구독 모델을 왜 fanout exchange로 구현하신 건지 궁금합니다.
-
해결됨기초 탄탄! 독하게 시작하는 Java Part 3(상) : 멀티스레드와 동기화
44강, 45강을 듣고 궁금한 점이 있어 질문드립니다.
안녕하세요:)강의를 듣고 궁금한 점이 있어 질문드립니다. 44강과 45강에서 List에 대해 설명해 주시면서 일반적인 상황에서는 ArrayList나 LinkedList를, 동시성 문제가 고려되어야 하는 상황에서는 Vector를 사용하라고 말씀해 주셨습니다. 그런데 Vector는 JDK 1.x 시절에 도입된 레거시 클래스로 모든 public 메서드에 synchronized 키워드가 적용되어 있어 성능 저하와 불필요한 락 경쟁, 캐시 무효화 등의 문제가 발생할 수 있는 것으로 알고 있습니다. 그래서 현재는 java.util.concurrent 패키지에서 제공하는 동시성 컬렉션이나, Collections.synchronizedList, CopyOnWriteArrayList와 같은 대안들을 상황에 맞게 사용하는 것이 더 적절하다고 알고 있습니다. 이러한 이유로 단순히 동시성 문제를 고려해야 하는 상황에서 Vector를 권장한다라는 접근은 현재 시점에서 어울리지 않는다고 생각됩니다. 그럼에도 강의에서 Vector를 언급하신 특별한 의도나 배경이 있으셨는지 궁금하여 질문드립니다 :)
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
AI 퀴즈에 관한 질문입니다.
사진과 같은 문제에서 답은 부모 클래스라고 하는데, 함수 호출과 인스턴스 생성을 구분해서 질문하지 않은 질문 같아서 글을 올려봅니다. 콜 스택에서 자식 클래스 생성자 -> 부모 클래스 생성자 함수 순으로 콜이 쌓이고, 먼저 쌓인 부모 클래스의 생성자 함수가 실행이 되면서 부모 인스턴스가 생성 -> 자식 인스턴스가 생성이 되는거라고 생각합니다. 즉, 제가 생각하는 답은 자식 클래스인데 제가 옳게 판단한건지 확인차 문의드려봅니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
16강 17강 간단 정리 이게 맞을까요 ?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 좋은 강의 잘 수강하고 있습니다. 16강과 17강 강의가 저에게는 이해하기 어려워서 다음과 같이 정리해보았습니다. 맞게 잘 적은건지 피드백 부탁드리겠습니다 ! 엔티티의 XxxToOne 관계는 모두 패치조인 한다.row 수를 증가시키지 않기 때문이다. XxxToMany(컬렉션)는 페이징을 하지 않고 조회되는 데이터가 적을 시에는 패치조인을 해도 된다. 단, N 쪽에 수 많은 데이터가 있다면 성능 최적화를 고려해야 하기 때문에 페이징 기법을 사용할 수 있으니 패치조인은 사용하지 말자 왜냐하면 모든 데이터를 DB에서 읽어오고, Hibernate는 1:N 조인 결과를 모두 메모리에 가져온 다음 1을 기준으로 페이징을 메모리에서 다시 수행해야 한다.이때, 수백만개의 데이터라면 애플리케이션은 메모리 부족으로 OOM이 발생할 수 있다. 컬렉션은 지연 로딩으로 조회하는데 성능 최적화를 위해 hibernate.default_batch_fetch_size, @BatchSize를 적용한다. IN 쿼리를 통해 한꺼번에 설정한 size 만큼 조회할 수 있다. 장점 : row 수가 많아지는 단점을 가진 패치 조인보다 DB 데이터 양이 최적화 된다.
-
미해결토비의 클린 스프링 - 도메인 모델 패턴과 헥사고날 아키텍처 Part 1
Auto Increment 질문
안녕하세요 토비님. 강의 정말 잘 보고 있습니다.다름이 아니라 Auto Increment 전략을 현업에서도 자주 사용하시는지 궁금해서 문의드립니다. Mysql에서 Auto Increment를 사용하니 bluk insert가 안되는 구조던데 문제가 있으셨던 적은 없는지 궁금합니다. bluk insert를 jdbc template으로 구현했더니 갈레라 3중화 구조라 ID가 3씩 증가하는 문제가 있어서 곤란한 경험이 있습니다. 이럴 경우 ID 전략을 UUID나 Snowflake 이런식으로 가져가야 하는지 궁금합니다.아니면 다른 해결 방법이 있으시다면 알려주시면 감사하겠습니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
tryLock 이후 InterruptedException 발생
락을 얻고 그 후에 InterruptedException이 발생 한다면 finally 에 unlock 을 작성 해 주어야 하나요 ?
-
해결됨6주 완성! 백엔드 이력서 차별화 전략 4가지 - 똑같은 이력서 속에서 돋보이는 법
이력서 작성 시 궁금한 점
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3챕터 인덱스 파트 수강 중 질문 1. "기존 API 응답 시간에서 **를 개선하여 **ms까지 빨라졌다." 이런 식으로 문구를 작성하라고 하셨는데, 기존 API 시간이 너무 크면 어떻게 해야할까요? API 성능 측정을 하려면 데이터를 넣어야하니까 각 테이블마다 백만 건을 넣어놓고 테스트를 했는데, 개선 전 응답 시간이 너무 오래 걸려서 그걸 그대로 써도 될지 모르겠어요. 강의 중 index파트에서 통계 테이블을 만들어서 @scheduled로 개선하는 부분을 제 프로젝트에 적용했는데, 데이터를 넣을 때 다른 API 성능을 측정하면서 각 테이블 당 백만개, 1:N관계일 때는 1개당 10개씩으로 해서 총 천만개 넣어놓은 상태입니다. 데이터가 너무 많아서 통계 테이블 만들기 전인 상태에서 COUNT 쿼리를 할 때 JOIN하는 테이블은 3개로 각 백만개, 이백만개, 천만개 데이터가 들어가있어서 약 20-30초 가량 쿼리가 실행이 됩니다. 근데 이력서에 "23초 걸리는 통계 데이터 조회 API를 통계 테이블을 만들고 @scheduled를 활용해 5분마다 갱신하고, 갱신된 데이터를 가져오도록 개선하여 **ms로 개선되었다." 라는 문구를 쓰려니까 23초라는 수치가 "인위적으로 드라마틱한 개선을 위하여 만들어낸 수치 아닌가?" 라는 의문이 들 수 있을 것 같아서 어떻게 하면 좋을까요? 물론!! 23초가 나온 근거라고 해야할지... 그 퍼포먼스 테스트 결과는 있고, 일부러 조작하지 않고 데이터가 많아서 그렇다! 라고 설명은 할 수 있겠지만, 이력서에 들어가는 수치를 보면 위에서 얘기한 것 같은 의심이 먼저 들 것 같아서 질문 드립니다. ㅠㅠㅠㅠ
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
Java 언어 기출문제의 변형 25:29
String subStr1 = str1.substring(1, 4) 은str1 = Hello 입니다.인덱스 1,4 는 ello 아닌가요 ? 강의에선 ell 로나옵니다.
-
미해결실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화
데이터 초기화 시 CASCADE 옵션 궁금증
안녕하세요. PostConstruct 어노테이션을 사용해 Spring이 초기화될 때 DB에 데이터를 초기화 해주셨는데요. Order, OrderItem 클래스 필드에 cascade 옵션이 있어서 order나 orderItem만 em.persist() 하면 다른 엔티티도(delivery, orderItems 등) 다 같이 persist 되지 않나요? 왜 엔티티별로 따로 하나씩 persist 하셨는지 궁금합니다. 제가 잘못 이해한 거라면 설명 한번 부탁드리겠습니다!
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
Java언어 기출문제의 변형 간단한재귀함수 21:33
Add 5 출력 후 return super.sum(n) 을 하면 n=5 가 부모 클래스 SUM으로 호출되서 if문 false로 인해 else 실행하며 5 + sum(n-1) 은 알겠어 근데 왜 ADD4 가 출력되는지 정확하게 이해하지 못하겠습니다. 5+Sum(4)4+Sum(3)3+Sum(2)2+Sum(1)1+Sum(0)n <=0 -> returm 0으로 제가 풀이된 답은ADD 5Sum : 15 로 되는데요 무슨 차이 이길래 다시 자식에게 ADD 4를 호출시키느거죠
-
해결됨(2025) 일주일만에 합격하는 정보처리기사 실기
정적메서드+문자열
Java언어 기출문제의 변형 13:48for (int i = 0; i < maxL; i++) { if (i < a.length() && i % 2 == 0) { c.append(a.charAt(i)); } if (i < b.length() && i % 2 != 0) { c.append(b.charAt(i)) }}에서 왜 1번 if문 출력 후 2번 if문이 실행되는건가요1번 if문 실행이 종료 후 2번 실행이 되어야하는거 아닌가요?