묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결실전! 코틀린과 스프링 부트로 도서관리 애플리케이션 개발하기 (Java 프로젝트 리팩토링)
N + 1 문제 해결 fetch join 관련해서 질문드릴 것이 있습니다!
안녕하세요. 38강의 N + 1 문제를 해결하기 위한 fetch join 문제 해결과 관련해서 제가 발견(?)한 것을 질문드리고자 합니다!수업 내용 중 N + 1 문제를 querydsl을 사용해서 해결하는 것을 보여주셨는데요. 코드가 다음과 같았습니다.class UserRepositoryCustomImpl( private val queryFactory: JPAQueryFactory ) : UserRepositoryCustom { override fun findAllWithHistories(): List<User> { return queryFactory .select(user) .distinct() .from(user) .leftJoin(userLoanHistory).on(userLoanHistory.user.id.eq(user.id)).fetchJoin() .fetch() } }그러고 테스트를 돌렸을 때 쿼리가 찍히는 걸 보면 다음과 같습니다.N + 1 문제가 아직 발생하고 있는 것 같습니다.조금 이상해서 구글링을 해보니 querydsl에서 on 절을 사용하면 두 엔티티가 연관관계라는 것을 인식하지 못 한다고 하네요! 그래서 코드를 다음과 같이 좀 바꿔봤습니다.class UserRepositoryCustomImpl( private val queryFactory: JPAQueryFactory ) : UserRepositoryCustom { override fun findAllWithHistories(): List<User> { return queryFactory .select(user) .distinct() .from(user) .leftJoin(user.userLoanHistories, userLoanHistory).fetchJoin() .fetch() } }이렇게 바꾸고 쿼리를 찍히는 것을 확인하니까한 번에 fetch join 되면서 가져오는 것 같습니다! 한 번 확인해주시면 감사하겠습니다!
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
스타일 깃허브에서 코드 가져가라고 하셨는데요
강의에서는 깃허브 참고하라 하시고 깃허브 링크를 안 올려놓으셔서개인적으로 이메일도 보냈으나 묵묵부답이십니다코드 좀 보고싶은데 제발 회신 좀 해주세요~~~~!~!~!~
-
해결됨[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스
오버라이딩 질문
class 공중부품 { run = () => { console.log("날라서 도망가자"); }; } class 지상부품 { run = () => { console.log("뛰어서 도망가자"); }; } class Monster { power = 10; 부품; constructor(부품, power) { this.부품 = 부품; this.power = power; } attack = () => { console.log("공격하자!"); console.log("내 공격력은 " + this.power + "야!"); }; run = () => { console.log("도망가자!"); }; }run 메소드를 this.부품.run();으로 바꿔주지 않아도 뛰어서 or 날아서 도망가자고 바뀌던데요..상속관계면 오버라이딩으로 생각하고 알아서 바뀌는 것은 이해했는데이렇게 객체를 집어넣었을 때도 자동을 바꿔주는건 왜 그런건가요?
-
미해결스프링부트 시큐리티 & JWT 강의
스프링 부트 시큐리티 6강-구글 로그인 준비
6강을 시작하면서 구글 클라우드 api 화면에서 새 프로젝트를 만들려고 여러 번 시도를 하였으나 만들어지지 않습니다.왜 그런 걸까요
-
미해결스프링 MVC 2편 - 백엔드 웹 개발 활용 기술
thymeleaf 에서 스프링 부트3.0 이상일때 request 꺼내기
@GetMapping("/basic-objects") public String basicObjects(HttpSession session) { ... }위 컨트롤러 작성하는 부분입니다.관련된 html 파일은 basic-objects.html 인데, ${#session} 으로 세션을 꺼내고 ${session} 으로도 세션을 꺼내네요.컨트롤러에서 파라미터로 호출하면 자동으로 모델에 담아서 뷰단으로 넘겨주기 때문에 기본으로 제공하는 #session 과 파라미터로 호출한 session 둘다 꺼낼 수 있는걸로 보입니다.그런데 강의문서에 "스프링 부트 3.0 이상이라면 다음과 같이 작성하자." 라고 써있고 컨트롤러에서 HttpServletRequest.. 리퀘스트와 리스폰스 그리고 서블릿 컨테이너를 Model 에 addAttribute 로 넣어 뷰단에 넘겨줍니다.// 스프링 부트 3.0 이상 @GetMapping("/basic-objects") public String basicObjects(Model model, HttpServletRequest request, HttpServletResponse response, HttpSession session) { session.setAttribute("sessionData", "Hello Session"); model.addAttribute("request", request); model.addAttribute("response", response); model.addAttribute("servletContext", request.getServletContext()); return "basic/basic-objects"; }리퀘스트와 리스폰스는 컨트롤러 메서드에서 파라미터로 호출했으니 Model 에 넣어서 넘겨줄 필요 없는거 아닌가요?
-
해결됨삼각형의 실전! CMake 초급
CMake CLI 사용법 강의에서 빌드 명령어를 입력해도 빌드가 안되네요..
현재 CMake CLI 사용법 강의 수강 중입니다. 4분 12초부터 나오는 Cmake 명령어를 입력해서 빌드하는 부분에서 막히고 있습니다. 1.입력한 명령어moonhyung@DESKTOP-Q9M8J51:/mnt/c/ClionProjects/Practice-cmake.git/hello-cmake$ cmake -B build .2.에러 메세지CMake Deprecation Warning at CMakeLists.txt:2 (cmake_minimum_required):Compatibility with CMake < 3.5 will be removed from a future version ofCMake.Update the VERSION argument <min> value or use a ...<max> suffix to tellCMake that the project does not need compatibility with older versions.CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.CMake Error: CMAKE_C_COMPILER not set, after EnableLanguageCMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage-- Configuring incomplete, errors occurred! 3.원인으로 예상하는 부분 & 확인한 부분- C컴파일러를 Cmake가 찾지 못해서 발생하는 에러라고 생각해서 아래 사항들을 확인해 보았습니다.3-1) gcc 컴파일러 버전 확인 & Cmake 버전Gcc 컴파일러 버전Cmake 버전 3-2)환경변수 경로 확인 및 추가CC=/usr/bin/gccCXX=/usr/bin/g++
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - J 풀이방법
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.3 - J 주난의 난 문제를 다음과 같은 방법으로 풀었습니다2차원 arr 에 입력을 저장하고 상하좌우 bfs 로 탐색을 진행하면서 만약 '1' 이 나올 경우 이를 q2에 저장만약 '0' 이 나올 경우 계속 bfs 탐색을 진행하고목표에 도달하지 못하고 탐색을 다 마친경우q2 에 저장된 '1' 을 전부 '0' 으로 바꿔주고 BFS 탐색을 다시 처음부터 진행위의 같은 방법으로 진행하였는데 큰돌의 해설을 보니'0' 이 아닌 경우 '0' 으로 바로 바꾸고 탐색을 마친 후temp 큐에 있던 좌표를 기반으로 다시 탐색을 진행하게 되는데저는 '1' 을 마주친 경우 바로 바꾸지 않고 나중에 바꾸고탐색을 처음부터 다시 진행큰돌님의 코드는 '1' 을 마주친 경우 바로 바꾸고 탐색을 이어서 진행으로 해석할 수 있는 걸까요??코드의 로직은 동일하나 변경 시점과 탐색 시점이 다른 거다 라고 보면 될까요??큐를 2개 써야된다는 큰돌님의 조언만 듣고 바로 문제를풀어서 정답을 맞았지만 정확히 이해가 됐는지 확인하고자 질문드립니다!!제 전체 코드는 https://www.acmicpc.net/source/66428450입니다!그리고 저는 BFS 를 처음부터 탐색하여 visited 를 계속 초기화 해주었는데fill(&visited[0][0], &visited[0][0] + N * M, 0); 으로 문제에서 주어지는 N 과 M 크기 만큼만 초기화 하려고 하니 무한루프를 벗어나지 못하는 일이 생겨fill(&visited[0][0], &visited[0][0] + 301 * 301, 0); 결국 visited 배열의 크기 만큼 초기화를 하는 것으로 바꾸니 정상 동작하였습니다!저는 처음 코드가 사용한 만큼의 영역에 대해서만 초기화 한다고 생각했지만 그렇지 않은 걸까요??
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
for문 어셈블리
int count부분 제가 할때는 [rbp+4] 라고 나왔는데rbp+4도 스택의 주소일까요?
-
해결됨[웹 개발 풀스택 코스] HTML&CSS 기초
HTML 요소의 위치 정의 질문있어요!
강좌 잘 듣고 있습니다!듣다가 문득 오른쪽에 플로팅 되게끔 position: sticky; right: 0; 로 해도 될 줄 알았는데 전혀 안되더라고요! 스크롤 시 오른쪽에 붙여 놓으려면 어떤 방법을 사용해야 하는 건가요???
-
미해결장고 설계철학으로 시작하는 파이썬 장고 입문
UnicodeDecodeError: 'utf-8' codec can't decode byte
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc0 in position 93: invalid start byte거의 끝까지 다 작성하고 runserver 동작시키는데 갑자기 안되는데 왜이런걸까요?ㅠㅠ 잘되다가 갑자기 안되네요ㅠㅠ
-
미해결ESXi 가상 인프라 구축과 보안 솔루션을 활용한 이상징후 탐지 모니터링
vyos 구동하고 비번을 입력해야 하는데, 타이핑이 안되요
재부팅, 새로 설치 다른 가상머신은 키보드 입력이 되는데vyos만 키보드 입력이 안됩니다
-
미해결
FreeRTOS 프로그래밍 > 실습 HW 구매 문의
안녕하세요 FreeRTOS 프로그래밍 강의를 신청 했습니다. 본격적으로 강의 듣기 전에 실습 HW 구매를 하고 싶습니다. 자료 회신 주시면 좋겠습니다. 감사합니다.
-
미해결일잘스쿨 : 일을 잘하고 생산성을 높이는 법
일잘러 필수 업무템플릿 10종 문의
수업 내용 복습용 강의 PDF는 섹션 0. 오리엔테이션에서 강의자료 PDF를 확인했는데요. 일잘러 필수 업무템플릿 10종은 어디서 확인할 수 있나요? 현재 섹션 2까지만 수강했는데, 뒤 쪽에 나오나요?
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
문자열 수업에서 다룬 strCpy함수와 관련해 궁금한게 있어 질문드립니다!
(1)인자로 받은 dest값이 예제처럼 비워져 있는게 아니라 이미 문자 데이터가 채워져 있는 상황이고,(2)dest에 채워져 있는 문자의 길이가 복사하려는 src의 길이보다 더 길다면,해당 함수로 원하는 결과를 얻지 못하게 될 것 같다는 생각이 들었습니다. 함수가 호출되었을 때 인자로 받은 dest를 초기화하려면 어떻게 처리하는 방법이 있을 수 있을까요? dest의 공간에 모두 0문자를 입력해버리는 건 그다지 좋은 방법이 아닐 것 같아 질문 남겨봅니다.
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
오류가 뜨는데 해결 방법이 있을까요?
(사진)
-
해결됨파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
증가수열 만들기
from collections import deque N = int(input()) N_list = list(map(int, input().split())) dq = deque(N_list) current = 0 res = "" left = dq.popleft() right = dq.pop() while len(dq) >= 0: if current > left and current > right: break if len(dq) == 0: if current < left and current < right: if left < right: res = res + 'L' # current = left break elif left > right: res = res + 'R' # current = right break elif left > current > right: res = res + 'L' # current = left break elif right > current > left: res = res + 'R' # current = right break else: if current < left and current < right: if left < right: res = res + 'L' current = left left = dq.popleft() elif left > right: res = res + 'R' current = right right = dq.pop() elif left > current > right: res = res + 'L' current = left left = dq.popleft() elif right > current > left: res = res + 'R' current = right right = dq.pop() print(len(res)) print(res)deque 이용하여 pop(), popleft() 로 left, right 설정하여 분기하면서 찾았는데 실제 코딩테스트에서 이러한 코드도 시간 초과 문제가 발생하지 않을 지 궁금합니다.강사님 풀이의 경우 while 문 안에 sort()가 계속 돌아가서 시간 이 더 오래 걸릴거 같다고 생각해서 질문드립니다!
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
4 bit가 되는 이유
3:332 진법 계산에서 2 bit가 아니라 4 bit가 나오는지 이해가 잘 안 갑니다. 설명해주시면 감사드리겠습니다.
-
미해결요즘 뜨는 프로덕트 디자이너 실무 가이드
강의자료
안녕하세요. 강의 자료는 어디서 받을 수 있을까요?
-
해결됨타입스크립트 입문 - 기초부터 실전까지
전화번호부 타입선언
안녕하세요!전화번호부 실습 내용 중에서 질문이 있습니다!함수의 파라미터 타입과 반환 타입 선언 해주는 부분에서 캡틴판교님께서는 name: string으로 주고 address: string으로 주고 phoneNumber: number 이렇게 선언해주셨는데 저는 배운 제네릭을 사용해보고 싶어서 선언을 다른식으로 했는데 이렇게 작성했을때 오류는 생기지 않았는데 잘못된 부분이 있을까요?
-
해결됨막막한 이직준비 : 현실적인 A부터Z까지 프로이직러 개발자 가이드 전자책
25-26페이지 내용이 겹치는것 같습니다.
경력, 역량 부분 내용이 겹치는것 같습니다.