묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
38줄 자동완성 어떻게 하나요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]07:29 38번째 줄 어떻게 자동완성 하나요 안되는데
-
미해결스프링 핵심 원리 - 기본편
롬복과 최신 트렌드 build.gradle
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]build.gradle 에 롬복 디펜던시 복사해서 붙여넣기 하고싶은데 어디서 복사할수있는지 강의자료가 안보여서요... 어디서 복사할수있을까요???
-
미해결김영한의 실전 자바 - 기본편
OCP원리 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]12. 다형성과 설계 강의 자료에서 OCP원리를 보면 코드 수정은 닫혀 있다는 의미에서 "새로운 차를 추가하게 되면 기능이 추가되기 때문에 기존 코드의 수정은 불가피하다. 당연히 어딘가의 코드는 수정해야 한다."라고 되어 있습니다. 기존 코드의 수정이 불가피하다고 하는데 왜 코드 수정은 닫혀 있다고 표현하는 건가요?
-
미해결김영한의 실전 자바 - 기본편
접근제어자, 클래스 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.class의 접근제어자를 private으로 설정시 외부 호출을 막는 것은 이해를 합니다.class의 volume 변수에 대해 실제 수정 해야 상황일 경우 (volume 200이 가능하게 되었을 때) privat로 설정된 volume 변수 수정 권한을 setting하는 것은 어떤 조직 구성과 방법으로 하는지 실제 경험을 사례로 설명을 요망합니다.
-
해결됨얄코의 떠먹여주는 객체지향 디자인 패턴
안녕하세요.
"구독자들에게 메시지를 보내는 발행 메소드는 발행자 인터페이스를 적용한 클래스로부터 호출 받습니다." 라고 설명해주셨는데요코드상에서는 Broker 클래스가 따로 Publisher 인터페이스를 적용하지 않은 상태인 것 같아서요.궁금하여 질문 남깁니다.
-
미해결스프링 핵심 원리 - 기본편
특정 타입 모두 조회expected: 2 but was: 1 Expected :2 Actual :1
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]특정 타입을 모두 조회하기 할때expected: 2 but was: 1에러가 뜨고, ac.getBeansOfType 자동완성이 안되는 것도 있습니다. 왜그러죠package hello.core.beanfind; import hello.core.discount.DiscountPolicy; import hello.core.member.MemberRepository; import hello.core.member.MemoryMemberRepository; import hello.core.order.AppConfig; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoUniqueBeanDefinitionException; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.Map; import static org.assertj.core.api.Assertions.assertThat; import static org.junit.jupiter.api.Assertions.assertThrows; public class ApplicationContextSameBeanFindTest { AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); @Test @DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면 중복 오류가 발생한다.") void findBeanTypeDuplicate() { // 이렇게 해서 돌려보면 멤버 리포지터리를 조회하면 두개가 튀어나오면서 예외가 ㅓ지게 된다. No Unique에러 assertThrows(NoUniqueBeanDefinitionException.class, () -> ac.getBean(MemberRepository.class)); // assertThrows + 람다식 예외가 터져야 테스트 통과 되게 } @Test @DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면, 빈 이름을 지정하면 된다") void findBeanByName() { MemberRepository memberRepository = ac.getBean("memberRepository1", MemberRepository.class); assertThat(memberRepository).isInstanceOf(MemberRepository.class); } @Test @DisplayName("타입으로 조회시 같은 타입이 둘 이상 있으면, 빈 이름을 저장한다.") void findAllBeanType() {// ctrl + shift + enter 바로 코드 컴플리션으로 넘어 감 Map<String, MemberRepository> beansOfType = ac.getBeansOfType(MemberRepository.class); for (String key : beansOfType.keySet()) { System.out.println("key = " + key + " value = " + beansOfType.get(key)); } System.out.println("beansOfType = " + beansOfType); assertThat(beansOfType.size()).isEqualTo(2); } // 그냥 이 클래스 안에다가 메서드 생성 // static 쓰면 장점 클래스안에서만 쓰겠다는 뜻 이안에다가 컨피그 만듦 @Configuration static class SameBeanConfig { // 다른 파라미터로 빈 생성 가능 // 빈의 이름이 다를 수 있고 클래스, 객체 타입이 같을수 있다 @Bean public MemberRepository memberRepository1(){ return new MemoryMemberRepository(); } @Bean public MemberRepository memberRepository2(){ return new MemoryMemberRepository(); } } }
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
ReentrantLock과 비관적락
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.실무에서 DB 관련 데이터에 대해 동시성 이유가 있으면 비관적락을 쓰는것으로 알고 있습니다. JPA의 비관적락은 DB 계층에서 동기화 기술이고 ReentrantLock은 어플리케이션 계층의 동기화 라는데...실무에서 ReentrantLock은 언제 사용이 되나요?? ReentrantLock을 사용하면 DB 접근 동기화가 되지 않나요?? 둘의 명확한 차이점이 궁금합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
파이썬처럼 int a 선언 없이 a=10으로 해놓고 그때그때 int(a)처럼 쓰면 안되나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
해결됨얄코의 떠먹여주는 객체지향 디자인 패턴
질문이있습니다.
현재 예시 코드에서는 state 상태에 따라서 생성자를 매번 호출하는데이거는 메모리 오버플로우 가능성이 있는 코드라고 볼 수 있을까요?
-
해결됨얄코의 떠먹여주는 객체지향 디자인 패턴
DIP 질문
DIP 예제 코드에서 질문이 있습니다.Switchable 이라는 interface를 객체로 Switch가 갖게되는데요.구조가 이렇게 바뀌어도Fan의 turnOn 함수에 예를 들어 매개변수가 들어가게 되면 (Overloading)Switch 클래스에도 영향이 가지 않나요?switch class의 tunrOn함수의 device.turnOn() 함수도 바뀌어야 하니까요..?
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
wait notify 락 획득 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. notify 로부터 깨어난 스레드와 synchronized 메서드를 호출한 스레드 중 누가 락을 획득한다에 대한 우선권이 있나요?만약 모든 스레드가 wait 을 하고 있는 상태라면 누군가가 notify를 호출해줘야만 하는 건가요
-
해결됨김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
Executorservice 궁금한게 많습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요?예[질문 내용]실무 웹앱의 특정 api 의 연산속도가 너무 느려ExecutorService 를 활용하여 멀티스레드기법으로 연산속도를 올려볼 계획입니다.ExecutorService executor = Executors.newFixedThreadPool(5);위와 같이 스레드풀의 스레드갯수를 5로 설정하려고합니다. 근데 이때 특정 api 에 동시에 5개의 요청이 들어왔다면 executor 객체가 메모리상에 5개가 생성되면서 스레드풀도 자동으로 5개 생성돼 총 25개의 스레드가 생성될것으로 보이는데 이게 서버에 부하를 주지는 않을지 궁금합니다.아니면 실무에서는 ExecutorService 를 static 싱글톤으로 선언해서 더이상 인스턴스가 생성되지 않게 하고 캐시풀 전략을 사용해야하는건지 궁금하네요. 그리고 ExecutorService 같은건 요청이 몰리는 api 같은데서 사용하는게 아니라 배치작업같은데서 사용해야하는건지도 궁금합니다.. 궁금한게 많은 주니어 개발자입니다. 영한님의 답변을 듣고싶네요 ㅠㅠ ai 말고 ㅠㅠ
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
clone() 메서드를 재정의함으로써 Deep copy로 구현한다로 이해하면 될까요?
안녕하세요!한가지 아리송한 부분이 있어 질문 드립니다:)20:30 정도에 clone()이 등장하는데 clone()을 그냥 사용하는 것이 아니라 '재정의 하여 사용함으로써 Deep copy가 된다'는 의미로 이해하면 될까요?
-
해결됨김영한의 실전 자바 - 기본편
캐스팅 질문 있습니다
기본형, 참조형 모두 대입을 할 땐 타입을 일치시켜야된다는 걸로 알고 있습니다.기본형에서 대입을 할 때 타입이 다를 경우 자동으로든 수동으로든 값 자체 변환해서 타입을 일치시켜야하고,참조형에서 대입을 할 때 타입이 다를 경우, 업 캐스팅(자동)이든 다운 캐스팅(수동)이든 실제 객체의 타입이 아닌 정적 타입을 일치시켜야 되는 걸로 압니다.Child child = new Child(); Parent parent = (Parent)child; // 정적타입을 Child에서 Parent로 변환해서 정적타입을 일치시켰다. Child child2 = (Parent) parent;//정적타입을 Parent에서 Child로 변환해서 정적타입을 일치시켰다 Parent parent = (Parent)new Child();//실제 객체 타입인 Child는 정적타입이 없는 상황에서 Parent로 정적타입을 설정해서 정적타입을 일치시켰다..?질문1.업캐스팅은 정적타입을 부모타입으로 설정하는것,ex)(Parent)new Child();(Parent)child(); <- child변수는 정적타입이 Child로 가정다운캐스팅은 정적타입을 부모타입에서 다시 자식타입으로 변경하는 것으로 이해했는데 맞을까요?ex)(Child)parent; <-parent변수는 정적타입이 Parent로 가정질문2.위에 코드에서Parent parent = (Parent)new Child();이 부분은 실제 객체 타입인 Child는 정적타입이 없는 상황에서 Parent로 정적타입을 설정해서 정적타입을 일치시킨건가요..?이 부분이 전혀 이해가 되지 않습니다.물론 업캐스팅이 생략되는 건 알고 있고 이해되지 않는 부분을 설명하고자 업캐스팅을 생략하지 않고 작성했습니다.질문3.강의에서 말한 부모는 자식을 담을 수 있다는 정확한 의미는 정적타입(변수의 타입)이 부모타입이고 실제 객체의 타입이 자식일 때라고 이해했는데 맞을까요?Parent parent = child;이 경우는 Parent parent = (Parent)child;이렇게 내부에서 타입이 일치되도록 변환을 해주기 때문에 정적타입은 결국 일치되어 부모타입의 변수에 실제 객체 타입이 자식타입으로 대입이 가능하다고 생각했습니다.
-
미해결스프링 핵심 원리 - 기본편
스프링빈중복등록을 막기위해 이름을 바꿔주어도 해결이 안됩니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.FixDiscountPolicy,RateDiscountPolicy 클래스 앞에 둘다 @Component를 붙여서 OrderServiceImpl을 구현할때 생성자파라미터에 DiscountPolicy discountPolicy에서 이름을 DiscountPolicy rateDiscountPolicy로 바꾸어 주었고 아래도this.discountPolicy = rateDiscountPolicy;로 바꾸어주었는데도 위와 같이 에러가 나옵니다.
-
미해결김영한의 실전 자바 - 기본편
접근제어자 2번문제
calculateTotalPrice 를 따로 만드신 이유가 있는지 궁금해서 질문드립니다.
-
미해결김영한의 실전 자바 - 기본편
수정 제안
1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]문제풀이 2번 쇼핑 카트 문제를 다음과 같이 수정하면 출제의도가 더 명확해질 것 같습니다.장바구니에는 상품을 최대 10개만 담을 수 있다. => 장바구니에는 상품을 최대 10가지만 담을 수 있다.
-
해결됨오브젝트 - 기초편
객체의 생성책임을 객체의 개념 자체에 부여하는 경우에 대한 의견이 궁금합니다.
안녕하세요. 코드레벨에서의 관점이 될수도 있겠지만, 객체의 생성책임을 자신의 클래스객체에 부여하는 선택지에 대한 고견이 궁금합니다.저의 경우 기존처럼 설계없이 습관적으로 코드를 짰다면, ReservationService에서 Reservation.with(screening, user, amount)로 생성하고 저장하는 형태로 작성했을것 같다는 생각이 들었고, 이게 수업에서 말씀하신 설계관점에서 생성책임부여 대상으로 괜찮은 것인지 고민이 들었습니다.제가 고려해보았을때, class객체를 예매 개념 이라고 명명하고 예매 개념이 객체의 생성책임을 부여하기 적절한 객체인지 판단해보자면,예매를 생성과 관련하여 가장 잘 알고있을것으로 생각되는 정보전문가로 보입니다.기록하거나 긴밀하게 사용하는 창조자패턴에 가장 부합하는 대상으로 보입니다.식별된 도메인모델을 기준으로 했을때는 '개념'이라는 객체가 새로 등장하게 되니 표현적차이는 상영보다는 다소 거리가 있어보이지만, 코드레벨에서 예매를 생성하라는 문맥에서 예매 class를 찾으면 되니 표현적차이를 줄임으로써 얻는 변경용이성은 해결되는것이 아닌가 생각했습니다.협력의 문맥을 책임으로 옮기고 적절한 객체를 식별한다고 할때 예매 개념 을 떠올리는건 뭔가 자연스럽지 않아보이긴 합니다.이런 판단으로 저는 예매 개념에 생성책임을 부여할것으로 판단했습니다.여기서 간과한 부분이 있거나 안티패턴은 아닌지 궁금합니다.설계가 정해진 답이있지 않고, 고차원적인 부분이다보니 판단에 대한 피드백을 받아보고싶었습니다.
-
미해결김영한의 실전 자바 - 기본편
접근제어자 문제 풀이 질문드립니다.
안녕하세요.접근제어자 문제풀이 강의 듣다가 궁금한 점이 있습니다.MaxCounter 클래스에서int count=0을 private 으로 제한하였는데요.Main클래스를 보면, int count = counter.getCount();와 같이 int count를 또 선언하고 있습니다.이 두가지는 다른 변수인가요?그렇다면, MaxCounter에서 public으로 설정하는 것이 더 나은 방법 아닐까 생각들어 질문드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
정적 중첩 클래스 문의
정적 중첩 클래스같은경우일반 클래스와 마찬가지로클래스 정보는 메서드영역에 저장되고인스턴스 생성시 인스턴스는 힙영역에 저장되잖아요?그럼 정적 중첩 클래스를 많이 써도 어차피 인스턴스는 gc의 대상이니 대량의 데이터를 사용하지않는 한 메모리 부하를 주지는 않죠?궁금하네요~!