묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
인테리제이 기능 질문 exception 클래스 색깔 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 영한님 강의 영상을 보다가exception 클래스 색깔이 노란색 인것을 보고 괘찮은 기능이라고 생각해서 여쭈어 봅니다.이것은 어떻게 설정해야 이렇게 바꿀수 있나요?답변 부탁드립니다.
-
미해결스프링 핵심 원리 - 기본편
"@Autowired 필드명"과 "@Primary" 우선순위
문득 @Autowired 필드명 과 @Primary 의 우선순위가 궁금해서 아래와 같은 테스트를 진행해봤습니다. OrderServiceImpl 클래스의 생성자 파라미터 중에서 DiscountPolicy 타입의 변수명을 fixDiscountPolicy 로 변경하고RateDiscountPolicy 클래스에 @Primary 를 주고 테스트를 돌려봤습니다.@Test void test2() { // 강의에서 사용하던 AutoAppConfig.class ApplicationContext ac = new AnnotationConfigApplicationContext(AutoAppConfig.class); OrderServiceImpl orderService = ac.getBean(OrderServiceImpl.class); // OrderServiceImpl 클래스에 getDiscountPolicy 따로 정의 assertThat(orderService.getDiscountPolicy()).isInstanceOf(RateDiscountPolicy.class); } 위 테스트의 결과는 통과하였습니다.즉, @Primary 가 @Autowired 필드명 보다 우선순위가 높다는 얘기인데 몇가지 궁금한 점이 있습니다.제가 궁금한 내용을 확인하기 위해서 위처럼 테스트를 하는 것이 맞나요?(여기서 OrderServiceImpl 클래스의 멤버변수인 discountPolicy 변수명은 안 건드려도 되죠?)테스트가 통과하는 게 맞는 결과인가요?이와 같은 흐름으로 이해하는 게 맞나요?1) 생성자 주입이 이루어질 때 DiscountPolicy 타입으로 등록된 빈 2개 발견2) @Primary 가 있는 RateDiscountPolicy 타입의 빈이 주입3) 만약 @Primary 가 없었다면 @Autowired 필드명 에 의해 FixDiscountPolicy 타입의 빈이 등록 됨그럼 @Qualifier , @Primary , @Autowired 필드명 순서로 우선순위가 높은 게 맞죠?위 내용과는 별개의 질문인데요 특정 클래스에 @Primary 를 붙여주면 해당 클래스의 인스턴스가 빈으로 등록될 때 BeanDefinition 에 @Primary 관련된 정보도 같이 들어가는건가요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
시분할과 스케줄링
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]얼마만큼 실행될지는 운영체제가 결정하는것을 스케줄링인데 그럼 스케줄링이 실행되고나서 시분할이 적용되는 방식인가요?
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[오타 제보] 11. 동시성 컬렉션.pdf 14페이지
[오타 내용]대상 강의록: 11. 동시성 컬렉션.pdf 대상 페이지: p.14 첫 번째 그림에 대한 설명 중 마지막 부분내용기존: 클라이언트인 test() 입장에서 ... (중략) ... BasicList의 어떤 구현체든지 다 받아들일 수 있다.변경: 클라이언트인 test() 입장에서 ... (중략) ... SimpleList의 어떤 구현체든지 다 받아들일 수 있다.강의 잘 듣고 있습니다!
-
미해결스프링 핵심 원리 - 기본편
autowired 해결이 안돼요..
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]Autowired members must be defined in valid Spring bean (@Component|@Service|...) 라는 에러가 나왔습니다 코드 진행은 강의와 동일한 것 같아요.. package halo.core.scope; import jakarta.annotation.PostConstruct; import jakarta.annotation.PreDestroy; import lombok.RequiredArgsConstructor; import org.assertj.core.api.Assertions; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Scope; import org.springframework.scheduling.annotation.Scheduled; public class SingletonWithPrototypeTest1 { @Test void prototypeFind(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(PrototypeBean.class); PrototypeBean prototypeBean1 = ac.getBean(PrototypeBean.class); prototypeBean1.addCount(); Assertions.assertThat(prototypeBean1.getCount()).isEqualTo(1); PrototypeBean prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2 = ac.getBean(PrototypeBean.class); prototypeBean2.addCount(); Assertions.assertThat(prototypeBean2.getCount()).isEqualTo(1); } @Test void singletonClientUserPrototype(){ AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ClientBean.class,PrototypeBean.class); ClientBean clientBean1 = ac.getBean(ClientBean.class); int count1= clientBean1.logic(); Assertions.assertThat(count1).isEqualTo(1); ClientBean clientBean2 = ac.getBean(ClientBean.class); int count2= clientBean2.logic(); Assertions.assertThat(count2).isEqualTo(2); } @Scope("singleton") static class ClientBean{ private final PrototypeBean prototypeBean; @Autowired public ClientBean(PrototypeBean prototypeBean) { this.prototypeBean = prototypeBean; } public int logic(){ prototypeBean.addCount(); int count = prototypeBean.getCount(); return count; } } @Scope("prototype") static class PrototypeBean{ private int count =0; public void addCount(){ count++; } public int getCount(){ return count; } @PostConstruct public void init() { System.out.println("PrototypeBean.init" + this); } @PreDestroy public void destroy() { System.out.println("PrototypeBean.destroy" + this); } } }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
ForEx3 질문있습니다
public class ForEx3 { public static void main(String[] args) { for (int sum = 0, max = 100, i = 1; i <= max; sum += i, i++) { System.out.println(sum); } } }이렇게 ForEx2에서 for문 괄호 안에서 여러개 선언이 가능하다고 하셨어서 한번 여러개 선언해서 해봤습니다. 근데 결과값이 왜100까지 더한값이 안나오고 99까지 더한값밖에 안나오는건지 잘 이해가 안됩니다!
-
미해결김영한의 실전 자바 - 중급 1편
외부 클래스에서 내부 클래스의 private 필드 접근
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 아니오3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]여기에 질문 내용을 남겨주세요.영한님께서 내부 클래스에서 외부 클래스의 private 필드에 접근할 수 있다고 말씀해주셨는데.외부 클래스의 메소드의 경우도, 중첩 클래스의 private 필드나 private 생성자에 접근할 수 있나요?
-
미해결김영한의 실전 자바 - 중급 2편
오타 문의드립니다.
안녕하세요?항상 재미있는 수업 감사드리며 수업을 너무 잘 듣고 있는 와중 오타로 의심되는 단어가 있어 문의를 드립니다섹션10 강의에 사용되는 PDF 파일인 9.컬렉션 프레임워크- Map 파일 5페이지 키와 값 목록 조회 부분에Entry 는 키-값의 쌍으로 이루어진 간단한 객체이다. Entiry 는 Map 내부에서 키와 값을 함께 묶어서 저장할 때 사용한다.에서 초록색으로 칠이 된 단어가 오타라고 생각 되어 문의 드립니다감사합니다.
-
미해결스프링 핵심 원리 - 기본편
memberRepository 3개다 같은 참조값으로 나와야하는데 다른 참조값
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 다른 코드들 다 똑같이 작성했는데 memberRepository, 1, 2 모두다 다른 참조값으로 출력이 됩니다. 이렇게 되면 어디쪽에서 문제가 발생한걸까요?
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
파일 input,output 말하는 스트림의 뜻을 모르겠습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. File로 문자 파일 읽기를 복습하다가 I/o스트림 의 '스트림'의 뜻를 몰라서 질문을 드립니다.9:30 초 부분에서 "I/O 스트림이 아니라 람다와 스트림에서 사용하는 스트림이다"라고 하였는데 , 람다와 스트림에서 사용하는 스트림은 아직 배우지를 않아서 모른다 치더라도, I/O 스트림은 저의 생각으로는 여기까지 공부했다면 알아야 하는것 아닌가 라는 생각에 갑자기 멍해지더라고요. 혹시 I/O스트림의 정확한 정의와 뜻을 알켜주실수있으신가요? 아니면 어느 부분을 복습 해야지 I/O스트림에 대해서 정확히 알 수 있을까요?답변 부탁드립니다.
-
미해결스프링 핵심 원리 - 기본편
갑자기 생각한 질문입니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 로컬에서 인텔리제이로 스프링부트를 작동하는 것도 JVM 위에서 작동하고 있다고 생각하면 될까요?
-
미해결김영한의 실전 자바 - 기본편
상품 주문 시스템 개발 문제 질문입니다
여기서 sum에 +=가 아니라 =만 했을 때 마지막 인덱스의 총 결제 금액인 3000을 반환하던데 왜 그런 건지 모르겠습니다. 루프를 돌다 맨 마지막 인덱스의 값이 대입되어 그런 건가요?
-
미해결나도코딩의 자바 기본편 - 풀코스 (20시간)
BlackBox 파일 내에서 메소드 정의
BlackBox 내에서 메소드 정의 할때public static 생략하고 void 나 int만 쓴 이유나 차이점이 있나요?
-
미해결스프링 핵심 원리 - 기본편
test code 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]관심사의 분리 강의에서 test 코드를 한번에 돌렸는데 WARNING: A Java agent has been loaded dynamically (/Users/songhyunsoo/.gradle/caches/modules-2/files-2.1/net.bytebuddy/byte-buddy-agent/1.15.11/a38b16385e867f59a641330f0362ebe742788ed8/byte-buddy-agent-1.15.11.jar)WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warningWARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more informationWARNING: Dynamic loading of agents will be disallowed by default in a future releaseOpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended위와 같은 오류가 발생하였습니다. CoreApplicationTests 코드를 실행했을 때 생기는 오류인것같습니다. 분명 그 전까지는 문제없이 test 코드가 잘 돌아갔었는데 어떤 문제인지 구글링으로 잘 해결되지 않아 질문 올립니다.openjdk 21.0.5Gradle 8.12.1현재 위와 같은 버전 사용 중 입니다. mac os 사용중입니다.
-
미해결스프링 핵심 원리 - 기본편
OCP 원칙
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.좋은 객체 지향 설계의 5가지 원칙(SOLID)에서 7:39초 부분인데요, MemberService에 MemberRepository m;으로 변수를 선언해놓고 setMemberRepository(m) 메서드를 만들어서 main 메서드 등 외부에서 구현클래스를 할당해주면 MemberService 즉, 클라이언트 코드를 변경하지 않아도 되기 때문에 OCP 원칙을 지킬 수 있는 것 아닌가요? 지킬 수 없다는 것이 잘 이해가 안됩니다.질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
문제와 풀이2번 궁금증
영한님 안녕하세요. 문제와 풀이 2번을 풀고 고민하고 강의를 학습해도 약간의 의문점이 생겨서 질문드립니다. Thread t1 = new Thread(new MyTask(), "t1"); Thread t2 = new Thread(new MyTask(), "t2"); Thread t3 = new Thread(new MyTask(), "t3"); t1.start(); t2.start(); t3.start(); // 1초 t1.join(); t2.join(); t3.join(); // 대기현재 위와 같은 코드에서 main 쓰레드가 t1, t2, t3에게 작업을 시킵니다. 그리고 t1의 join을 만나니까 t1이 작업이 완전히 끝날때까지 대기상태에 빠집니다. 그리고 t1이 작업이 완료되면 t2.join()이 실행된다면 결과가 아래와 같이 나와야 하는데 왜 이렇게 안 되는지 의문입니다. ㅠㅠt1: 1t1: 2t1: 3t2: 1t2: 2t2: 3...
-
해결됨김영한의 실전 자바 - 중급 1편
불변 객체가 되기 위한 조건
불변 객체가 되기 위해서는 해당 객체의 상태가 변경될 수 없는 형태여야하는데, 상태(필드, 멤버 변수) 중 변경 가능한 상태와 변경 불가능한 상태가 모두 존재하는 경우는 불변 객체로 보나요?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 있습니다
강의 자료 : 8. 생산자 소비자 문제1.pdf43페이지큐가 가득 찾을 때 -> 큐가 가득 찼을 때
-
미해결TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기
[공유] State 패턴 강의 최종본 커밋에서 누락된 부분이 존재
git commit 으로 공유된 State 패턴 완성본 커밋 에서 강의 마지막 부분 (23:50) 과 달라서 해당 부분을 사용하시는 분들은 정상으로 동작하지 않을 수 있습니다.그래서 해당 공유합니다.강의 시작 부분 23:50코드 export class ChromeGrimpanMenu extends GrimpanMenu { onClickPen() { const command = new PenSelectCommand(this.grimpan); this.executeCommand(command); // { name: 'pen' }; // this.grimpan.setMode('pen'); // 변경, 해당 부분은 강의에도 나와있지는 않지만 pen 모드일때 변경이안되어서 자체적으로 추가함 this.grimpan.history.stack.push(command); } onClickEraser() { // this.executeCommand(new EraserSelectCommand(this.grimpan)); // { name: 'eraser' }; // 기존 this.grimpan.setMode('eraser'); // 변경 } onClickCircle() { // this.executeCommand(new CircleSelectCommand(this.grimpan)); // { name: 'eraser' }; this.grimpan.setMode('circle'); // 변경 } onClickRectangle() { // this.executeCommand(new RectangleSelectCommand(this.grimpan)); // { name: 'eraser' }; this.grimpan.setMode('rectangle'); // 변경 } onClickPipette() { // this.executeCommand(new PipetteSelectCommand(this.grimpan)); // { name: 'eraser' }; this.grimpan.setMode('pipette'); // 변경 }
-
미해결스프링 핵심 원리 - 기본편
회원 도메인 실행과 테스트 강의를 듣고 질문드립니다~
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요."회원 도메인 실행과 테스트" 강의를 따라가면서 위와같이 테스트 코드를 짠 걸 보니, Assertions 클래스의 isEqualTo 메서드가 서로 다른 객체를 어떤 기준으로 같다고 판단하는지 소스 코드로 확인해보고 싶다는 생각에, command + B로 계속 따라가봤습니다.그래서 결국에는 대충 제가 파악하기로는, ComparisonStrategy 인터페이스에 정의된 areEqual 메서드에 따라서 진행되는 것 같은데, 그러면 테스트 코드에서 isEqualTo 메서드가 호출될 때, 위에 있는 5가지 중 하나의 구현체가 진행된다고 생각하면 되려나요? 위의 5개 중에서 어떤 게 구현되는건지는 알 수가 없는지도 궁금합니다~