[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. Future 의 cancel 기능에 대해 실험하면서 해결하기 어려운 부분을 만나 질문드립니다. 📋 실험 내용 Callable 의 call 메서드 내부에서 I/O 와 같은 블로킹 작업 진행(or Interrupt 가 되지 않는 작업) Future 의 cancel 진행 스레드 호출 대상은 CancellationException 예외 발생 후 진행 ※ 스레드 풀 의 스레드는 계속 실행 중임을 확인 💥 문제 사항 이런 방식으로 로직이 지속 실행되면 스레드 풀의 스레드는 종료되지 않으면서 고갈되어 가고 결국엔 작업이 쌓이다가 에러를 뱉어내고 오작동 하게 될 것이라 추측됩니다. ❓ 질문 내용 Q. cancel 기능은 Interrupt 를 발생해주면서 작업을 중단합니다. 만약 I/O 작업 처럼 Interrupt 가 먹히지 않는 로직에서는 어떻게 스레드의 실행을 종료하고 스레드 풀로 반납할 수 있을까요? 💻 코드 public class FutureCancelMain { private static boolean mayInterrupIfRunning = true; public static void main(String[] args) { ExecutorService es = Executors.newFixedThreadPool(1); Future<String> future = es.submit(new MyTask()); log("Future.state: " + future.state()); sleep(3000); log("future.cancel(" + mayInterrupIfRunning + ") 호출"); boolean cancelResult = future.cancel(mayInterrupIfRunning); log("cancel(" + mayInterrupIfRunning + ") result: " + cancelResult); try { log("Future result: " + future.get()); } catch (CancellationException e) { log("Future는 이미 취소되었습니다."); } catch (ExecutionException | InterruptedException e) { e.printStackTrace(); } es.close(); } static class MyTask implements Callable<String> { @Override public String call(){ boolean flag = true; // Scanner scanner = new Scanner(System.in); while(flag) { log("무한 작업 중..."); } return "Completed"; } }
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 스트림 강의를 보다가 질문 드립니다 웹 어플리케이션 기준으로 스트림은 보통 데이터를 처리하는데 쓰일 것 같은데요 많은양의 데이터라면 보통 디비단에서 최대한 필터링하고 걸러서 가져오는게 네트워크호출랴도 그렇고 이점이 많을것 같은데 그럼 스트림은 보통 언제쓰이나요? 데이터를 필터링하고 정렬하고 가공하는건 디비단에서 해서 가져오는게 더 효율이 좋다 했을 때 스트림으로 가공하는 데이터 수준은 디비단에서 다 할 수 있을 것 같아서요 같은 데이터를 가공하단 는게 필요하다고 해도 기존 sql 재사용 하고 스트림으로 재가공 하는것보다는 새로 sql문 날려서 가져오는게 더 낫지 않나요? 보통 웹 어플리케이션에서 어떤 상황에 쓰이는지 궁금합니다!
public int[] solution1(int[] weights) { int[] answer = new int[weights.length]; ArrayDeque<int[]> stack = new ArrayDeque<>(); for (int i = 0; i < weights.length; i++) { int weight = weights[i]; while (!stack.isEmpty() && stack.peek()[1] < weight) { var popped = stack.pop(); int poppedIndex = popped[0]; answer[poppedIndex] = i - poppedIndex; } stack.push(new int[] {i, weight}); } return answer; } 위와 같이 답변을 작성하였고, 강의에서 나오는 답과 변수명 정도 외에는 차이가 없어 보이는데, 시간 초과 오류가 발생합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 뭐가 문제일까요,,
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 봉우리 문제에서 쌤과 동일하게 작성하였는데 채점해보니 오답으로 나옵니다. 인텔리제이에서도 정답 올바르게 나오는것 확인하였는데 왜 오답일까요?? import java.util.Scanner; public class Main { int[] dx = {-1, 0, 1, 0}; int[] dy = {0, 1, 0, -1}; public int solution(int n, int[][] arr) { int answer = 0; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++){ boolean flag = true; for(int k = 0; k < 4; k++) { int nx = i + dx[k]; int ny = j + dy[k]; if(nx >= 0 && nx < n && ny >= 0 && ny < n && arr[nx][ny] > arr[i][j]) { flag = false; break; } } if(flag) answer++; } } return answer; } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int[][] arr = new int[n][n]; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { arr[i][j] = kb.nextInt(); } } System.out.println(T.solution(n, arr)); } }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) MemberRepositoryTest가 실행이 안됩니다. 실행 시 Execution failed for task ':test'. > There were failing tests. See the report at: file:///C:/%EC%9D%B8%ED%94%84%EB%9F%B0_%EC%8A%A4%ED%94%84%EB%A7%81JPA_%EC%8B%A4%EC%A0%841/jpashop/build/reports/tests/test/index.html * Try: > Run with --scan to get full insights. BUILD FAILED in 2s 4 actionable tasks: 1 executed, 3 up-to-date 라는 오류가 계속 뜹니다. https://drive.google.com/file/d/1LNpdY4Fqk9nXDHT11tj0hEyGf_zKRgVr/view?usp=sharing
책 99페이지에서 만든 ProductController는 src/test/java 하위에 만들어져있는데, 이곳에 파일을 그대로 둔 채로 책 107페이지 스프링 빈 실습을 진행하면 제대로 진행이 되지 않았습니다. 혹시나 하여 test가 아닌 src/main/java 하위로 옮기고 진행하니 책의 결과와 같은 결과가 나왔습니다. 책 어디에도 ProductController의 파일 위치를 옮긴다는 말이 작성되어있지 않은데 옮기고 진행하는 것이 맞는지 궁금합니다!
같은 방식으로 작성 후 백준에 직접 제출했으나, 계속 틀렸습니다로 나옵니다.. 이유가 뭘까요? 제출한 소스 입니다. import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc=new Scanner( System.in ); int T = sc.nextInt(); for(int i=1;i<=T;i++){ int A=sc.nextInt(); int B=sc.nextInt(); int sum = A+B; System.out.print("Case #"+i+": "+sum); } } }
질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요 선생님 수업 감사히 잘 듣고 있습니다. 선생님께서 정리해주신 커리큘럼 모두 읽어봤고, 늦더라도 모두 따라갈 생각입니다. 다름이 아니라 시간관계상 그 전에 제가 코딩테스트를 준비해야돼서 역량을 키울 겸 자바 진도와 병행하고 싶은데 자바 로드맵 기준으로 최소한 어디까지 수강하고 코딩 테스트를 준비해보는게 좋을까요??
[질문 내용] 상속관계에서 자식클래스의 멤버 변수에 부모 클래스와 같은 이름으로 정의를 하게 되면 자식 클래스의 멤버 변수를 먼저 찾는것으로 보여지는데 @Override 어노테이션은 붙히는게 불가능한것 처럼 보입니다 상속관계에서 멤버 변수에는 오버라이딩의 개념이 없는건가요?
아직 강의를 하나도 듣지는 않았습니다. 커리큘럼을 쭉 보는데 수업자료를 pdf로 다운받을 수 있는 버튼이 있는 강의가 있고, 그냥 '수업자료'라고만 나와 있어서 다운은 받지 못하고 웹에서 읽기만 할 수 있는 것 같습니다. 혹시 제가 잘 본 것이 맞나요?? 아니면 모두 pdf에 제공이 되는 것인가요??
선생님. #10부터 1까지 2씩 감소하는 숫자를 출력 이라고 하셨는데, 당연 시험에는 나오지 않겠죠 저런 말이.. 그럼 10부터 -6까지지 2씩 감소하는 숫자를 출력 이라는게 성립 되려면 for i in range(10 : -7 : -2): print(i) 이렇게 되면 10 8 6 4 2 0 -2 -4 -6 결과값이 이렇게 나오는걸까요?