학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 9:12초 정도에 블록 내부에서 외부는 접근 가능하다고 했는데 블록 외부에서 생성된 변수가 블록 내부에 접근 가능한 게 아닌가요?
NetworkClientException 클래스의 하위 클래스인 Send,Connect 예외클래스들을 별도 파일로 각각 만들지 않고, NetworkClientException 클래스 내부에 정적 중첩 클래스로 선언하는건 안좋나요? 상황에따라 다양한 종류의 예외들을 만들텐데, 그런것들 마다 별로의 파일로 만드는게 저는 디렉토리가 복잡해 보이기도 하고, 논리적으로 어떤게 부모클래스이고 어떤게 자식클래스인지 한눈에 들어오지 않을거같다는 생각이 문득 들어 질문드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 질문을 드립니다. 정리에서 에노테이션으로 서블릿을 만들라고 해서 만들었습니다. 근데 복사 붙여 넣기 한 코드들이라서 이렇게 해도 되는지 알고 싶어서 올립니다. 이용한 코드는 영한님의 심플맵핑, 리플렉션 서블릿을 복사 붙여놓기 한다음 수정해서 하였습니다. 이렇게 해도 되나요? 답변 부탁 드립니다.
해당 내용 중 Parent parent = new Child(3); // 6 이 실행되면 이후 3 -> 1 순서로 진행된다고 설명해주셨는데, 만일 아래코드와 같이 super를 명시적으로 호출하지 않고, 파라미터도 동일하다면 순서가 1 -> 3의 순서로 진행되는 것일까요?? class Parent { int x; Parent(int x) { // 1 this.x = x; } ... } class Child extends Parent { int x; Child(int x) { // 3 this.x = x; } ... } ... 만일 위 내용이 맞다면, 아래와 같이, 같은 파라미터의 생성자이면서 super를 명시적으로 작성했을 경우에는 순서가 어떻게 되는지도 궁금합니다. (child의 생성자 내부 코드라인에 super가 존재해서 child의 생성자 호출이 우선인 것인지, 혹은 super가 명시적으로 없어도 child의 생성자 호출이 우선인것인지가 헷깔립니다ㅜ) class Parent { int x; Parent(int x) { // 1 this.x = x; } ... } class Child extends Parent { int x; Child(int x) { // 3 super(x + 1); this.x = x; } ... } ...
"It is 8"; 여기서 8도 결국 문자인데 아스키코드로 변환하면 몇 번인지 알아야 하지 않나요 ??? 계산식에서 isdigit 매서드로 숫자로 변경이 되어도 (p[i] - '0' + 3)%10 + '0' 이렇게 문자가 섞여서 계산을 해야 답을 구할 수 있지 않나요 ?
해당 문제의 해설을 보기 전에 i==4 ? n[0] : n[i+1] 과 같은 형태로 답을 작성했는데, 실제 시험에서 이렇게 작성한 경우 답으로 인정될까요?? 혹시 알려주신 답처럼 n[(i+1)%5] 과 같은, 시험에서 답으로 인정되는 형태가 있는지 아니면 출력값만 맞으면 답으로 인정되는지 궁금합니다!
선생님 강의 잘 보고있습니다. 감사합니다. 기출문제 강의는 2022년 3회~2024 3회 까지 있던데 , 2022년 3회 이전에는 기출 유형이 바뀌었다던가하는.. 특별한 이유가 있을까요? 기출문제를 다 풀고난뒤 이론공부를 할까 2022년 3회 이전의 기출문제 더 풀어볼까 고민입니다..
평소 같으면 그냥 업무할 때의 개발 환경과 동일하게 설정해서 할텐데... 무슨 바람인지.. 이번엔 그냥 영한쌤 강의 보면서 그대로 따라해야지 하고 별생각 없이 강의를 듣던 중... ddl-auto create, create-drop까지 무난했음.. ddl update로 하고 id , name 컬럼 생성 create문 정상 여기까지도 무난...ㅎ 그러나 대망의 age 컬럼 추가하려고 하니 ?? alter문 왜 안 날라감? 했습니다... 이것 저것하다가 해결되서 공유합니다..ㅎ 영한 쌤이 실제 사용중인 H2 버전이랑 의존성 추가할 때 버전 맞추라고 하셨는데 Hibernate 버전은 말씀이 없으셨습니다.. 그래서 H2 버전이 2.3.232 사용중이기 때문에 pom.xml 설정 중 hibernate 버전 6.4.4.Final 로 변경하고 모든 import jakarta로 변경하니 잘되네요 (JDK21 사용) ``` <!-- pom.xml --> <!-- hibernate --> <dependency> <groupId>org.hibernate.orm</groupId> <artifactId>hibernate-core</artifactId> <version> 6.4.4.Final </version> </dependency> <!-- Jakarta Persistence API --> <dependency> <groupId>jakarta.persistence</groupId> <artifactId>jakarta.persistence-api</artifactId> <version>3.1.0</version> </dependency> ``` 이후 모든 import문 jakarta로 변경 Maven Refresh
안녕하세요. 궁금한 게 있어서 질문 남깁니다. 구조체를 선언하는 방식에서 변수명을 함께 선언할 때는 구조체 명이 필요가 없는건가요? 강의 설명에는 struct 구조체명 { 내용 } 변수명; 이라고 나와있지만 예시에서는 sturct 만 작성했습니다. 구조체명을 써도 상관이 없는 선택사항인건지, 아니면 아예 필요가 없는건지가 궁금합니다. 만약에 사용해도 된다면, person1.age에 접근할 때 어떤식으로 접근해야 하는지가 궁금합니다. 답변 기다리겠습니다. 감사합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] ExecutorService 우아한 종료 - 구현 01:07 close() 메소드 설명 부분에 " shutdown() 을 호출하고, 하루를 기다려도 작업이 완료되지 않으면 shutdownNow() 를 호출한다." 에 오류가 있어 보입니다. [내용 정정] " shutdown() 을 호출하고, 작업이 완료될 때까지 무한정 반복대기 한다. 인터럽트가 발생하면 shutdownNow() 를 호출한다." 로 변경해야 하지 않나요? [근거] Eclipse Temurin-21.0.4+7 (JDK 21) 버전 코드 원문 public interface ExecutorService implements Executor, AutoClosable { // .. @Override default void close() { boolean terminated = isTerminated(); if (!terminated) { shutdown(); boolean interrupted = false; // 작업 미완료시 재시도 while (!terminated) { try { // 하루간 작업 종료 대기, 작업 미완료시 `false` 반환 terminated = awaitTermination(1L, TimeUnit.DAYS); } catch (InterruptedException e) { if (!interrupted) { shutdownNow(); interrupted = true; } } } if (interrupted) { Thread.currentThread().interrupt(); } } } } 1일이 지났다고 해서 interrupt() 를 호출하지 않고 재시도 하는 것으로 보입니다. [증명 코드] MyExecutor 로 close() 메소드 대기 시간을 1일 -> 1초로 조정하여 오버라이드합니다. 10초간 대기하는 Task 를 실행시킵니다. class ShutdownTest { record CallableSleepTask( String name, long sleepMs ) implements Callable<Long> { @Override public Long call() throws Exception { sleep(this.sleepMs); return this.sleepMs; } } static class MyExecutor extends ThreadPoolExecutor { public MyExecutor() { super(1, 1, 0, TimeUnit.SECONDS, new LinkedBlockingQueue<>()); } @Override public void close() { boolean terminated = isTerminated(); if (!terminated) { shutdown(); boolean interrupted = false; while (!terminated) { try { // 종료 대기 시간 1초로 조정 terminated = awaitTermination(1L, TimeUnit.SECONDS); } catch (InterruptedException e) { if (!interrupted) { shutdownNow(); interrupted = true; } } } if (interrupted) { Thread.currentThread().interrupt(); } } } } @DisplayName("Should wait infinitely when .close()") @Test void executorServiceCloseTest() { // given try (ExecutorService myExecutor = new MyExecutor()) { log("작업 시작"); CallableSleepTask sleepTask = new CallableSleepTask("test", 10_000L); myExecutor.submit(sleepTask); // 10 초간 테스크 실행 log("작업 진행중.. close 대기"); // 기다리지 않고 .close() 자동 호출 } } } 실행 결과 18:38:39.524 [ main] 작업 시작 18:38:39.527 [ main] 작업 진행중.. close 대기 (약 10초 대기 후 종료) Process finished with exit code 0 테스크 종료를 위해 10초 대기가 이뤄졌습니다. close 가 조정된 대기시간인 1초 뒤에 인터럽트를 발생시켰다면 인터럽트 로그가 남았을 것이고, shutdownNow()가 호출됐다면 10초 대기없이 즉시 종료되었을 것입니다. 따라서 정정이 필요해보여요. close 메소드는 " shutdown() 을 호출하고, 작업 완료시까지 무한정 반복대기 한다. 인터럽트가 발생하면 shutdownNow() 를 호출한다."
안녕하세요! 강사님 늘 강의 잘 듣고 있습니다. 다름이 아니고 아래 사항에 대해 궁금한 부분이 있는데요. (아래 강의 20:16 시점입니다) https://inf.run/1668e secondary index -> clustered index로 limit 개수만큼 접근해주신다고 설명해주셨는데요 ! where board_id = 1만 조건이 있어서 이미 어떤 row인지 세컨더리 인덱스에서 판단이 가능할 것 같은데, 클러스터 인덱스로 접근하게 되는 이유가 어떻게 되는걸까요? 만약 where board_id = 1 AND writer_id = 1 이 있다면 writer도 검증이 필요하기 때문에, 클러스터 인덱스 까지 가는 부분은 이해되기는 합니다만 board_id만 조건이 걸린 상태에서 클러스터 인덱스도 간다는 부분을 보고 이해가 잘 안되어서 문의드립니다 .. !
쿠케님 안녕하세요! 그간 안녕하셨는지요. 몇 주 놀다가 다시 반성하고 각성 모드로 강의 시청 하고 있습니다. Redis에 24시간 이내의 최신글을 저장하는거 까지는 이해했습니다! 그렇다면 레디스에 저장한 최신글은 프론트에서 어떻게 활용할수 있는 걸까요? 제가 생각한 아래 흐름이 맞는지 검토 부탁드립니다! 서버 게시판 종류마다 24시간 이내의 최신글을 레디스에 저장 게시판 종류와 데이터 개수를 request로 받는 최신글 API를 별도로 만듬 프론트 사이트의 메인 페이지 일부 화면에 특정 게시판의 최신글을 뿌려주는 요구사항이 존재 서버의 최신글 API를 호출하여 각 게시판 종류마다 최신글을 뿌려줌 감사합니다~!