[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 네트워크 프로그램 자원종료 관련 이해가 안되는 부분이 있어서 문의드립니다. [SessionManagerV6] public synchronized void closeAll() { for (SessionV6 session : sessions) { session.close(); } sessions.clear(); } [SessionV6] // 세션 종료시, 서버 종료시 동시에 호출될 수 있다. public synchronized void close() { System.out.println("closed : " + closed); System.out.println(Thread.currentThread().getName()); if (closed) { return; } closeAll(socket, input, output); // shutdown closed = true; log("연결 종료: " + socket); } 서버에서 ShutdownHook이 발생했을 때 2개의 Client에 Socket이 연결되어 있었다고하면 첫번째 Clinet의 Socket이 정리되고 난 후 2번째 Clinet의 Socket이 정리되는 시점에서는 closed 변수가 true이기 때문에 정리가 안되고 return되는거 아닌가요? 제가 잘 못 이해하고 있는걸까요? 추가적으로 로그를 찍어서 상태값을 확인해 봤는데 이해가 잘 되지 않아서 문의드립니다. 아래는 로그 정보입니다. 17:34:32.806 [ shutdown] shutdownHook 실행 closed : false shutdown 17:34:32.806 [ shutdown] 연결 종료: Socket[addr=/127.0.0.1,port=58474,localport=12345] closed : false shutdown 17:34:32.806 [ shutdown] 연결 종료: Socket[addr=/127.0.0.1,port=58480,localport=12345] 17:34:32.807 [ Thread-2] java.net.SocketException: Socket closed closed : true Thread-2 17:34:32.807 [ Thread-3] java.net.SocketException: Socket closed closed : true Thread-3 17:34:32.807 [ main] 서버 소켓 종료: java.net.SocketException: Socket closed 종료 코드 130 (interrupted by signal 2:SIGINT)(으)로 완료된 프로세스
강의 감사합니다. 강의자님의 포트폴리오를 보면서 얼마나 많이 노력하셨는지가 보입니다 -- 공유해주신 포트폴리오를 제 상황에 맞게 하려고 하는데요 ! 질문이 있습니다. 저는 대회를 나간 경력이없고 신입이라 그런지 공유해주신 포폴에 무엇을 쓰면 좋을지 조언듣고 싶습니다. 음 제 지금 상황은 비전공자이고,, react.js 블로그 포폴 하나 혼자 강의 보면서 만들었는데 어떻게 어필하면 좋을까요 .. 자기소개서는 포트폴리오에 올리지 않는게 좋을까요 ? 방향잡기가 쉽지가 않네요
학습 관련 질문을 최대한 상세히 남겨주세요! 고민 과정도 같이 나열해주셔도 좋습니다. 먼저 유사한 질문이 있었는지 검색해보세요. 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. @Query("select c from CommentV2 c where c.commentPath.path = :path") Optional<CommentV2> findByPath(@Param("path") String path); 위와 같은 방식으로 조회를 하면 인덱스 서치가 되지 않는 것 아닌가요? 아래와 같은 방법으로 해야 할 것 같은데.. @Query("select c from CommentV2 c where c.articleId = :articleId and c.commentPath.path = :path") Optional<CommentV2> findByPath( @Param("articleId") Long articleId, @Param("path") String path); 답변 부탁 드립니다.
강의 제작해주셨을 때는 gemini flash 기본 모델 버전이 2.0 이었던거 같은데 2.5로 최근에 업데이트가 된 거 같네요. webClient 요청 uri에서도 버전을 2.5로 명시를 해줘야 정상적으로 요청 응답이 오는데 다른 분들 참고하시면 좋을 거 같아 올려봅니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] FileInputStream의 transferTo를 사용할 경우 buffer는 어떻게 설정되는 건가요? 웹 검색을 해보니 개발자가 직접 버퍼를 설정할 필요가 없다고 하는데 기본적인 버퍼의 크기가 정해져 있는건지? 만약 정해져 있다면 어떤 기준을 따라가는지 궁금합니다. 파일처리 시 자바의 메모리를 사용해야하고 이 부분을 잘 처리하지 못할 경우 OOM으로 이어지는 경우가 많아서 정확히 이해하고 싶어서 문의드립니다.
강의 막바지에 쿼리 로그를 한눈에 볼 수 있게하기 위한 라이브러리를 추가하고 실행하시는데요. 저는 pdf 내용대로 implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 위 라이브러리를 추가하고 실행해보아도 쿼리 실행 로그가 보이지 않아요ㅠ
영상에서는 이제 junit5를 의존관계로 가져간다고 나와있고 build.gradle에 있는 exclude가 junit4버전에 대한걸 exclude한다고 하시는데요.. 그럼 강의가 junit5버전 쓰시는거 아닌가요? pdf는 강의 영상이 junit4 버전을 기준으로 하신다는데 이것 때문에 헷갈려요
위는 강의 pdf 파일에서 캡쳐한 build.gradle 설정 내용입니다. 아래는 제가 프로젝트 생성후 캡쳐한 build.gradle의 의존성 사진입니다. pdf 설명대로 JUnit4를 추가했습니다. 그런데 pdf 파일에 testImplementation(‘org.springframework.boot:spring-boot-starter-test’) { exclude group: ‘org.junit.vintage’, module: ‘junit-vintage-engine’ } 가 있던데 이것도 추가해줘야하는 부분인가요? 없으면 추후 강의를 진행하는데 문제가 될까요? 현재 pdf 파일에 있는 build.gradle 내용과 제가 방금 프로젝트 생성 후의 build.gradle 내용과 조금 다른 것 같아 질문드립니다
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] 안녕하세요. 컬렉션 조회 최적화 부분에서 페이징 + 검색 조건 관련해서 궁금한 점이 있어서 질문드립니다. 질문) Order 리스트 페이징을 하고 싶은데@BatchSize는 안쓰고 5번처럼 QueryDto직접 쿼리 2번 + map O(0) 방식으로 처리하려고 합니다. 이 때 만약 검색 조건이 toMany 로 맺어진 테이블 (orderItem.quantity, orderItem.item.name 등) 에 있다면 toOne 방향 루트 join fetch 쿼리 할 때 이 조건을 함께 포함시켜면 되는걸까요 (join orderItem .. where .. 같이) 예를들어 item.name이 "tesla"인 item을 포함하고 있는 모든 order를 페이징 적용해서 보여주고 싶은 경우에 어떻게 하면 좋을지 궁금합니다.
3.0.2 버전의 경우 readValue가 JacksonException을 throw하는 것으로 타입이 선언되어 있는데요. (unchecked Exception 타입) public <T> T readValue(String content, Class<T> valueType) throws JacksonException Unchecked Exception(상위 에러 타입이 RuntimeException)이지만 강의처럼 try catch 이용하여 JacksonException을 catch 하면 될까요? 아님 RuntimeException 이니 별도로 catch 없이 코드를 작성하는게 좋을까요?