묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
웹 스코프와 프로토타입 스코프
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]제가 이해한 것이 맞는지 궁금합니다웹 스코프와 프로토타입 스코프의 공통점은 클라이언트가 요청할 때마다 새로운 인스턴스가 생성된다.하지만 웹 스코프는 컨테이너가 생명 주기를 모두 관리하고 웹 환경에서만 사용되며프로토타입 스코프는 컨테이너가 생성과 의존 관계 주입 이후 관리하지 않고 웹 환경에 국한되지 않는다. 이렇게 이해하였습니다.
-
미해결김영한의 실전 자바 - 중급 2편
implement iterator 주석처리 해도 myArray는 배열 아닌가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]순회 2 -향상된 for문 1;18초에서 implememt를 주석 처리 하고 향상된 for문을 돌렸을 때 배열이거나 iterable이여야한다고 에러가 떴습니다 .근데 MyAraayMain에서 이미 myarray 는 new int [] {1.2.3.4}로 배열로 선언한거 아닌가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
q를 입력하면 예외가 발생하는데 그 이유를 모르겠습니다.
안녕하세요. 항상 강의 잘 듣고 있습니다 🙂public static void main(String[] args) throws InterruptedException { Printer printer = new Printer(); Thread printerThread = new Thread(printer, "printer"); printerThread.start(); Scanner sc = new Scanner(System.in); while (true) { log("프린터할 문서를 입력하세요. 종료 (q): "); String str = sc.nextLine(); if (str.equals("q")) { printerThread.interrupt(); break; } printer.addJob(str); } } static class Printer implements Runnable { Queue<String> jobQueue = new ConcurrentLinkedQueue<>(); @Override public void run() { log("outer 상태 : " + Thread.currentThread().isInterrupted()); while(!Thread.interrupted()) { try { if (jobQueue.isEmpty()) { continue; } String job = jobQueue.poll(); log("출력 시작: " + job + ", 대기 문서: " + jobQueue); log("inner 상태 : " + Thread.currentThread().isInterrupted()); Thread.sleep(3000); log("출력 완료"); } catch (InterruptedException e) { e.printStackTrace(); log("인터럽트!"); System.out.println(e.getMessage()); break; } } log("프린터 종료"); } public void addJob(String str) { jobQueue.offer(str); } }저는 q를 입력하면 인터럽트 상태가 false로 바뀌게 되고, 프린터 종료 로그가 남을 거라고 생각했습니다.실행하고 바로 q를 입력하면 제가 예상한 대로 동작하지만, 값을 입력 후 q를 입력하면Thread.sleep(3000);이 부분에서 InterruptedException 예외가 발생했습니다.저는 이 부분에서 의문점이 들었습니다.while(!Thread.interrupted()1. 인터럽트 상태가 바뀌었을 텐데 왜 예외가 발생하지?2. 상태가 안 바뀌었나?라는 생각을 하고 로그를 확인해봤는데07:21:21.366 [ printer] outer 상태 : false 07:21:21.366 [ main] 프린터할 문서를 입력하세요. 종료 (q): 123 07:21:22.790 [ main] 프린터할 문서를 입력하세요. 종료 (q): 07:21:22.796 [ printer] 출력 시작: 123, 대기 문서: [] 07:21:22.796 [ printer] inner 상태 : false q java.lang.InterruptedException: sleep interrupted at java.base/java.lang.Thread.sleepNanos0(Native Method) at java.base/java.lang.Thread.sleepNanos(Thread.java:491) at java.base/java.lang.Thread.sleep(Thread.java:522) at thread.control.printer.MyPrinterV3$Printer.run(MyPrinterV3.java:46) at java.base/java.lang.Thread.run(Thread.java:1570) 07:21:22.980 [ printer] 인터럽트! sleep interrupted 07:21:22.980 [ printer] 프린터 종료q를 입력하면 바로 예외가 발생해서 상태가 바뀌었는지는 잘 모르겠습니다.만약 상태가 안 변했다고 해도 결국 sleep 부분에서 예외가 발생할 텐데, 로그가 안 찍힌 이유도 모르겠습니다.그래서 여러 번 실행해본 결과 값 입력하고 3초 후 q를 입력하면 예외가 발생하지 않는다는 걸 알게 되었습니다.잠자고 있는 스레드를 깨워서 문제가 발생하는 것 같은데 제 지식으로는 여기까지인 것 같습니다.질문 1. while(!Thread.interrupted()) 이 부분에서 인터럽트 상태가 false로 변경되었을 것 같은데 예외가 발생한 이유를 모르겠습니다. 제가 다시 생각해보니 프린터 스레드는 sleep() 때문에 3초 기다리고 있는 상태에서 깨우니 sleep() 부분에서 예외가 발생하고 로그도 안 찍혔을 것 같다는 생각이 들었습니다.
-
해결됨C개발자를 위한 최소한의 C++
쓸데없지만 질문드리고싶습니다
안녕하세요. 항상 양질의 강의 감사합니다.link 오류시, 컴파일러가 맹글링 해놓은 함수의 진짜 이름이 출력되고, 이러한 오류를 dll 을 사용함에 있어서 자주 볼 수 있다고 말씀하셨는데 리눅스에서 라이브러리든 실행파일이든 용량을 조금이나마 줄이기위해 stip??? 명령어를 사용해 디버깅 심볼을 없앨 수 있었던 것으로 기억합니다.근데, 디버깅 심볼에는 변수, 함수이름, 소스코드 줄 번호등 다양한 정보가 들어가 있다고 배웠었는데, 해당 명령어로 디버깅 심볼을 없애버린 라이브러리 파일을 사용하여 만든 소스파일을 빌드하는 경우에서, 링크 오류가 나게되면 어떠한 현상이 이뤄지는지 궁금합니다
-
미해결스프링 핵심 원리 - 기본편
진짜 객체를 찾는다는 표현에 대해
프록시 타겟 클래스를 스코프에 설정하면 가짜 프록시 객체가 생성되고 MyLogger 의 로직 호출 시점에서 진짜 빈을 요청하는 위임 로직이 작동한다고 이해했는데 이 진짜 빈을 요청한다는 시점에 request 빈이 생성된다고 보면 될까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 제보합니다
사소한 부분이긴 하지만 오타 제보합니다.synchronized vs ReentrantLock 대기 파트의 ReentrantLock 의 대기2: await() 대기 부분에서 WAITING 상대로 대기 -> WAITING 상태로 대기로 수정이 필요할 것 같습니다.감사합니다.
-
미해결스프링 핵심 원리 - 기본편
테스트 코드 실행 시 로그 출력
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]이번편 뿐만 아니고 강의를 보다보면 테스트 코드를 똑같이 작성을 해도 영상에서는 로깅 내용이 출력이 되는데 제가 똑같은 환경에서, 똑같은 코드로 테스트를 진행하면 로그가 보이지를 않는데 혹시 로그를 출력하는 방법이 따로 있을까요?
-
미해결김영한의 실전 자바 - 중급 2편
커리큘럼 목록체크
영상 볼때 옆에 툴바에 커리큘럼 누르면 동영상 목록뜨고 수업 들으면 자동으로 체크 되자나요. 이거 체크 해제 어떻게 하나요. 만약 체크해제 기능이 없으면 유저들을 위해서 만들어 주시면 좋을거 같아요
-
해결됨Readable Code: 읽기 좋은 코드를 작성하는 사고법
getter 질문드립니다
안녕하세요!예시에서 person.get지갑().get신분증().findAge() >= 19를 person.isAgeGreaterThanOrEqualTo(19) 메서드로 만들면person 내부에서 다시 지갑.get신분증().findAge() 형태가 되는데, 이 경우 지갑.isAge..(19) 같은 메서드를 계속 만드는지 끊어내는 기준이 있는지 궁금합니다.
-
해결됨오브젝트 - 기초편
수업 자료 압축파일
안녕하세요 강사님, 강의 잘 듣고 있습니다.수업자료를 매 강의마다 따로 받아야 하는데요. 혹시 수업자료를 다 모아서 압축파일로 한번에 내려받게 해주시면 수강생들이 좀 더 편하지 않을까 요청드립니다. 태블릿에 한번에 넣어서 보기 편하도록 말이죠. 강의 잘 보겠습니다. 감사합니다!!
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
InGame 씬 배경 화면이 나오지 않아요
안녕하세요InGame 씬 진입 및 페이드 처리는 잘 진행되었는데,Fade처리 이후 배경 화면이 검게 나옵니다.혹시 강사님 화면처럼 푸른색 배경이 나오게 하려면 어떻게 해야 할까요?
-
해결됨김영한의 실전 자바 - 기본편
다형성 - 역활과 구현예제1 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]코드를 package poly.car0; public class Driver { //private K3Car k3Car; K3Car k3Car = new K3Car(); // public void setK3Car(K3Car k3Car) { // this.k3Car = k3Car; // } public void drive() { System.out.println("자동차를 운전합니다."); k3Car.startEngine(); k3Car.pressAccelerator(); k3Car.offEngine(); } }이렇게 작성해도 정상 작동 되는데 왜 아래처럼 코딩한 거에요? 이유를 알려 주세요.package poly.car0; public class Driver { private K3Car k3Car; //K3Car k3Car = new K3Car(); public void setK3Car(K3Car k3Car) { this.k3Car = k3Car; } public void drive() { System.out.println("자동차를 운전합니다."); k3Car.startEngine(); k3Car.pressAccelerator(); k3Car.offEngine(); } }
-
미해결김영한의 실전 자바 - 중급 1편
static class 와 new 키워드
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1.정적 중첩 클래스를 사용하기 위해 다음과 같은 코드를 강의에서 사용했는데요. NestedOuter.Nested nested = new NestedOuter.Nested(); static 클래스라면 인스턴스화가 되지 않은 클래스라고 생각하는데, new 생성자를 통해 생성하는 이유가 궁금합니다. NestedOuter.Nested.print(); 다음과 같이 사용해야하지 않을까? 생각도 했습니다만 직접해보았을 때, print() 메서드는 static 메서드가 아니기 때문에 다음과 같이 사용할 수 없었습니다. 2. 그래서 다음과 같은 실험도 해보았습니다. public static void main(String[] args) { NestedOuter outer = new NestedOuter(); NestedOuter.Nested nested1 = new NestedOuter.Nested(); NestedOuter.Nested nested2 = new NestedOuter.Nested(); nested1.print(); nested2.nestedInstanceValue = 2; nested1.print(); nested2.print(); }print() 메서드는 정적 중첩 클래스의 필드인 nestedInstanceValue 를 출력하고, 초기값으로 1을 넣어두었습니다. 결과는112가 나왔습니다. nested2 에서 필드를 2로 수정을 한 후 nested1 과 nested2 에서 print() 를 호출했는데,122를 예상했지만 1 / 1 / 2 가 나왔습니다.그렇다면 클래스에 static이 들어간다는 것이 의미하는 것이 무엇인지 궁금합니다.
-
미해결김영한의 실전 자바 - 중급 1편
14분쯤에 검증로직 정상로직 김영한 선생님 말씀대로 하시면
개발자가 까먹거나 상상하지 못한 오류가 발생할 때 오류가 안 뜨고 바로 정상로직으로 진행되서 문제가 일어날 가능성이 크지 않나요?? if else로 하면 해당 조건 정상로직이 아니면 오류라서 문제가 덜 발생하지 않을까요?? 그거보다 가독성이 중요하거나 제가 생각 못 하는 다른 이유가 있을까요?
-
해결됨스프링 핵심 원리 - 기본편
CompenentScan을 사용하여 빈을 컨테이너에 등록하는 과정
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]컨테이너가 appconfig를 빈에 등록 appconfig는 @ComponentScan이 있어서 Component로 등록된 클래스마다 beanDefinition 생성을 한다.이후에 BeanFactory가 빈 객체를 생성하여 컨테이너에 저장된다.이렇게 이해했는데 맞는지 궁금합니다
-
미해결스프링 핵심 원리 - 기본편
SpringBootApplcation에 관한 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.SpringBootApplication에 @ComponentScan이 있다고 하셨는데 그럼 AutoAppConfig의 역할을 포함하는 건가요? AutoAppConfig는 필터를 위한 예제를 보여주기 위해 만든 건지 궁금합니다. AutoAppConfig에 Configuration이 있는데 Configuration은 @Bean으로 등록된 메서드를 싱글톤으로 보장하기 위해 쓰는 것으로 알고 있습니다. 그런데 AutoAppConfig는 어차피 ComponentScan으로 싱글톤이 보장될텐데 @Configuration을 사용하는 이유는 관례상 설정 클래스라는 것을 보여주기 위함인가요?
-
미해결스프링 핵심 원리 - 기본편
6분쯤 MemberRepository 관련 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 6분쯤 OrderServiceImpl 클래스 작성할 때 memberId로 Member를 찾기 위해서 MemberRepository 객체를 생성해서 findById()를 호출하셨는데 MemberService 객체를 만들어서 findMember()를 호출하는 것과 같은 것은 알지만 객체 지향의 관점이나 SOLID 원칙 이런 것들을 생각했을 때 저 부분에서 Service와 Repository 어떤 것을 호출하는 것이 더 좋은 코드인가요?
-
해결됨스프링 핵심 원리 - 기본편
beanDefinition 생성 과정 질문입니다
컨테이너에 있는 Reader를 통해서 설정 정보(appConfig.class)를 읽고 @Bean이라고 적혀 있는 메서드들을 읽은 후 BeanDefiniton이라는 메타데이터를 생성해서 컨테이너에 있는 빈 저장소에 넣는다라고 이해 했는데 맞을까요??
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
인텔리제이 콘솔창 한글입력 오류
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]인텔리제이 콘솔창에서 한글입력이 안돼서 그런데 혹시 해결방법 아시는분 있을까요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
모든 스레드가 wait 상태
강의 4분대 그림에서 c0가 queue 가 비어서 wait 상태로 들어가면 notify를 호출하지 않기때문에 모든 스레드가 wait 상태에 들어가지 않나요? while문을 벗어나야 notify를 호출할 수 있잖아요. 어떻게 되는지 궁금합니다.