학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 세션13 - '필드 탐색과 값 변경' 복습을 하다가 의문점이 생겨서 질문을 드립니다. 영한 님이 리플렉션을 이용해서 name의 filed 값을 변경 하는 것을 보고 'final로 변경하면 안되겠지.'라는 생각을 하게 되었습니다. 그래서 userTest를 만들어서 name을 final로 변경해 보고 실험해보았습니다.(당연히 예외 터질 것을 예상 하고요) 근데 왠걸? 저의 예상과는 다르게 결과가 나오는 것을 보고, "......" 밖에 말이 안나 옵니다. 이게 코드 결과입니다. 왜 이렇게 나오는지 설명해 주실 수 있으신가요? (내용 수정) 답변 부탁 드립니다.
2:10 보면 가상머신 화면 위에 로컬머신 폴더를 띄우셨는데, 어떻게 하셨나요? 저는 가상머신을 minimize해야 로컬 머신이 보여서요. 그렇다고 가상머신 화면을 축소하면, 글자가 너무 작아지거나 전체 화면이 안 보여서 다루기 힘듭니다. 왼쪽에 강의영상, 오른쪽에 코드프로그램을 둬서 보면서 코딩하고 싶은데, 방법이 궁금합니다.
안녕하세요. 정말 궁금한 부분이 있어서, 질문 글을 올리게 되었습니다. 결론부터 말하면 오버라이딩 로그가 최신 버전에서는 다르게 출력되고 앞으로 이런 변하는 어떡해 알아가야 하나요? 강의에서는 스프링부트 2.x 버전으로 되어있어 오버라이딩 메시지가 명확합니다. ㄴ 빈에서 오버라이딩이 발생하면 메시지로 명확하게 알려줌 하지만 개인 프로젝트에서는 스프링부트 버전은 3.x로 되어 있어서 오버라이딩 메시지가 명확하지 않습니다. ㄴ 명확하게 오버라이딩 메시지가 나타나지 않고, 다른 메시지로 표기됨 스프링 부트를 다운그레이드 하여 2.x로 하면 명확한 오버라이딩 메시지를 확인가능 하지만 업그레이드를 3.x로 진행하면 명확한 오버라이딩 메시지를 확인할 수 없습니다. 아주 사소한 변화라고 생각할 수 있지만, 이러한 변환된 정보는 어떡해 얻을 수 있을까요? spring 공식문서를 뒤적 거려봤지만 해당 내용을 쉽게 찾을 수 없습니다. 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] package nested.test; public class OuterClass3 { public void myMethod(){ class LocalClass{ void hello(){ System.out.println("LocalClass.hello"); } } new LocalClass().hello(); } } hello() 메서드가 내부에서만 사용될 때도 public 으로 선언하는 경우가 많은데, private 이나 default로 선언하는 것이 더 나은 선택일까요? 어떤 기준으로 접근 제어자를 선택하는 게 좋을까요? class OuterClass3와 myMethod가 public이기 때문에 통일해준걸까요? 우선 저는 지역클래스 안에서만 사용하기 때문에 defalut로 선언해서 문제를 풀었습니다만 의문이 생겨 질문남깁니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 [질문 내용] 언제나 강의를 잘 듣고 있습니다 감사합니다! 다름이 아니라 제가 개념이 좀 흔들려서 이렇게 문의 드려봅니다..! 네트워크를 통해 TCP/IP로 통신을 하는 상황에서 MAC주소가 없어도 IP의 주소만 가지고 통신을 할 수 있는게 ARP를 사용해서 서버의 MAC 주소를 찾아낼 수 있어서라는데 이게 맞는건가요? 확실하게 알고자 질문드려봅니다!
1. 강의 내용과 관련된 질문인가요?예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 안녕하세요, 강의 수강 중 궁금한 것이 생겨 여쭤보게 되었습니다. 내부 클래스가 바깥 클래스의 인스턴스의 멤버에 접근, 지역 변수는 내부 클래스 특징 + 지역 변수에 접근 이라는 것에 대해 여쭤보고 싶습니다. 강의 자료 중 '바깥 클래스의 인스턴스의 멤버에 접근' 이라는 것이 바깥 클래스에 있는 '바깥 클래스 자기 자신'에 대한 객체나 '다른 클래스 타입으로 선언한 객체'를 사용할 수 있다는 말일까요 ? 그리고 지역변수 접근이라는 말도 여쭤보고 싶은데, 예시 코드 void process()를 보면 메서드 내부에 지금 지역 클래스가 있습니다. 지역 변수 접근이라는 말은 바깥 클래스의 메서드 내부에서 존재한다는 말일까요 ?
[질문 내용] final이 붙은 int value를 생성자를 통해 초기화하는 법을 배웠습니다. 그런데, final이 변수 앞에 붙은 경우, 생성자를 통해서 한번만 초기화 될 수 있다고 했는데, 아래 ConstructInit 메서드를 두 번 사용하여 초기화를 두 번 진행한 것을 볼 수 있습니다. 한번만 초기화 할 수 있다고 했는데, 왜 객체를 두개나 생성해서 final int value를 두번 초기화한 것일까요? final int value; public ConstructInit(int value) { this.value = value; } package final1; public class FinalFieldMain { public static void main(String[] args) { //final 필드 - 생성자 초기화 System.out.println("생성자 초기화"); ConstructInit constructInit1 = new ConstructInit(10); ConstructInit constructInit2 = new ConstructInit(20); //한번만 초기화 된다며 System.out.println(constructInit1.value); System.out.println(constructInit2.value); } }
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. 인텔리제이 설치하고 설치옵션이 뜨는데 뭘 선택해야되나요?
안녕하세요 강의를 보고 javac에 대해서 궁금한 점이 있어서 질문 드립니다. .class로 컴파일 된 파일을 각각 os에 맞는 자바가 각자의 os에 맞게 바꿔서 실행을 한다고 하셨는데 javac도 java이지 않나요?. 정확한지 모르겠지만 linux에서 컴파일한 .class와 window에서 컴파일한 .class의 값이 다르다면 window에서 컴파일한 .class 파일이 linux에서 실행이 되는 건가요? 모든 os에서 실행이 되려면 .class 파일의 내용은 같아야 될 것 같은데 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 Future 관련 공부를 하다가 궁금증이 생겨 질문 남겼습니다. ThreadPoolExecutor 객체 안에 FutureTask 객체를 만들고 그 안에 task(Callable 구현 객체)를 보관한다고 알고 있습니다. 그러면 스레드풀에 있는 스레드가 해당 Future 작업을 완료한 후에 main 스레드에서 future.get()으로 값을 반환 받고 난 후에 해당 future 객체는 GC가 알아서 처리해주는건가요?
본 강의 약 10분 쯤에 나오는 코드 private static boolean contains(LinkedList<Integer>[] buckets, int searchValue) { int hashIndex = hashIndex(searchValue); LinkedList<Integer> bucket = buckets[hashIndex]; for (Integer integer : bucket) { if (integer == searchValue) { return true; } } return false; } 이 부분에서 배열은 각 인덱스의 요소를 하나씩 꺼내는데 LinkedList는 어떤식으로 for-each문을 사용하는지 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 아니오 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 중급2편 수강 전 문의 한번만 확인 부탁드려요 ㅠㅠ [질문 내용] 여기에 질문 내용을 남겨주세요.
강의를 꾸준히 보고 따라하면서 여기까지 왔는데요 아직 제대로 된 복습보다는 이해가 잘 안되는 부분은 나중에 한번 더 보고 일단 한 바퀴 돌아보자 생각 하며 왔습니다. 반복문에서 도저히 응용이 안돼서 여기까지 넘어왔는데요.. 일단 다 보고 나서 다시 복습 해보는 것이 나을까요? 아니면 반복문으로 돌아가서 이해할 때 까지 복습을 하고 다시 오는 방법이 좋을까요? 자바 공부 하면서 꼭 이해하고 넘어가고 싶었는데 도저히 진도가 안나가다 보니까 방법을 여쭙고 싶습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] package hello.core.scope; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import lombok.Getter; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import static org.assertj.core.api.Assertions.*; public class SingletonWithPrototypeTest { @Test void SingletonClientUsePrototype() { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class, PrototypeBean.class); ClientBean ClientBean1 = ac.getBean(ClientBean.class); int count1 = ClientBean1.logic(); assertThat(count1).isEqualTo(1); ClientBean ClientBean2 = ac.getBean(ClientBean.class); int count2 = ClientBean2.logic(); assertThat(count2).isEqualTo(1); } @Scope("singleton") static class ClientBean { @Autowired private ObjectProvider<PrototypeBean> prototypeBeanProvider; public int logic() { PrototypeBean prototypeBean = prototypeBeanProvider.getObject(); prototypeBean.addCount(); return prototypeBean.getCount(); } } @Getter @Scope("prototype") @Component static class PrototypeBean { private int count = 0; public void addCount() { count++; } @PostConstruct public void init() { System.out.println("PrototypeBean.init" + this); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy"); } } } 강의에서는 AnnotationConfigApplicaionContext를 new로 생성하면서 파라미터로 ClientBean클래스를 넘겨주면서 빈에 등록한 후에 아래 ClientBean 클래스에 Provider를 사용하면서 @Autowired 를 사용 하시더군요 마찬가지로 Provider사용하기 전에 생성자 주입을 할때도 Autowired를 사용하시길래 저도 코드에 Autowired를 추가했는데, 저는 오류가 나더라구요 제가 궁금한점은 @Component어노테이션을 ClientBean클래스에 붙여주면 해결되긴 했는데 강의에선 @Component 어노테이션을 사용하지 않아도 오류가 나지 않길래 저랑 뭐가 다른건지 모르겠어서 질문 합니다. 이미 파라미터로 넘기면서 빈에 등록이 되서 다시 등록하려는거때문에 충돌이나서 그런건가요? 그렇다면 강사님 강의에서 보인 코드는 왜 오류가 나지 않는건가요? 궁금합니다 ㅠㅠ 정리하자면 강사님 강의에선 ClientBean클래스에 @Componenet를 사용하지 않고도 @Autowired를 사용했을때 오류가 나지 않지만 저는 @Autowired만 사용하면 오류가 뜹니다. 어떤 차이가 있는건지 궁금합니다.
각각의 CPU 코어에는 각각의 캐시 메모리가 있고 여기에 임의의 쓰레드가 할당되어 실행된다고 하셨습니다. RAM에서 캐시 메모리를 가져올 때 primitive type은 직접 값을 가져오므로 메모리 가시성 문제가 발생할 수 있지만 참조값을 가져오는 경우에는 캐시 메모리에서도 참조를 하게되므로 가시성 문제가 존재할 수 없는 구조인가요? synchronized 메서드 안에서 사용된 멤버 변수의 경우 자동적으로 volatile 로 처리된다고 이해하면 될까요? 항상 감사합니다!