묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
다트 변수 연산 질문
안녕하세요 강의 잘 듣고 있습니다!! 근데 영상 예제 말고 추가적으로 코드를 입력해보고 있는데 이해가 안되는 에러가 발생해서 질문 드립니다void main() { int number = 2; // doble로 변경하면 문제 없이 동작됨 왜? print(number); // 2 print(number = number + 2); // 4 print(number = number - 2); // 2 print(number = number * 2); // 4 print(number = number / 2); // 에러 발생 왜??? 4 / 2면 2가 나와야 하는 거 아닌가? print('-----------여기까지는 기본적인 사칙연산 네 가지-----------'); print(number % 2); // number 나누기 2의 나머지 0 print(number % 3); // number 나누기 2의 나머지 2 print(number); // 많은 연산을 진행했지만 값은 변하지 않았음 }지금 위 코드에서 이해가 안되는 게 print(number = number / 2); 이 부분에서 Error: A value of type 'double' can't be assigned to a variable of type 'int'. print(number = number / 2); //2 위와 같이 double 타입을 int 타입 변수에 저장할 수 없다는 에러가 발생합니다 근데 4 /2의 결과는 2인데 왜 이런 에러가 발생하는지 모르겠습니다 알려주시면 감사하겠습니다!! 강의 잘 듣고 있습니다 항상 감사합니다 좋은 하루 보내세요!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[section7-1강] 출금 예제
안녕하세요, 강의 재밌게 수장중인 수강생입니다. 직전 강의 내용대로라면 공유자원인 balance 도 캐싱되어 항상 1000원이 조회되는 가시성 문제가 발생해야 할것 같은데 출금 예제에서는 발생하지 않는 이유가 궁금합니다. log() 때문에 그럴 수도 있을것 같아서 로그 제거 하고 출력해도 가시성 문제는 발생하지 않는것 같습니다. 제가 뭔가 잘못 이해한 부분이 있는것 같은데, 놓친 부분이 어디인지 잘 모르겠습니다 ㅜㅜ
-
미해결김영한의 실전 자바 - 중급 2편
직접 구현한 리스트의 성능 비교 강의중 질문입니다.
안녕하세요. 강의를 보면서 성능 비교에 중 영상에 나오는 기대값과 실제 나오는 기대값이 달라서 코드중에 문제가 있는지문의드립니다. 조회 부분에서 array리스트 기대값과 linked리스트 기대값의 효율이 영상과는 차이가 있어서 질문드립니다.
-
해결됨김영한의 실전 자바 - 기본편
베스트 프렉티스
[질문 내용]강사님께서 "다음으로" 강의에서 베스트 프랙티스라는 용어를 설명해주셨는데 직역하면 최고의 연습일테지만, 다른 뜻으로 말씀하신건지 궁금합니다.
-
미해결스프링 핵심 원리 - 기본편
MyLogger 의존 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/)[질문 내용]여기에 질문 내용을 남겨주세요.LogDemoController 에서 Logger를 의존하지 않고 logDemo메소드에서 MyLogger logger = new Logger() 로생성하는건 좋지 않은 방식인가요???
-
미해결Readable Code: 읽기 좋은 코드를 작성하는 사고법
JPA 를 사용하면 원래 객체지지향적인 설계를 가져가기 어렵나요?
오랜만에 인사드립니다 강사님. 저는 수강한 강의내용을 토대로 현재 진행하고있는 프로젝트를 리팩토링하고 있습니다. 본론으로 들어가자면, 일단 아래와 같이 특정 비지니스 로직을 검증하는 코드가 있습니다.======== BEFORE =========private void checkCrewInfoIsMatch(Long requestCrewId, Squad squad) { if (!squad.getCrew().getId().equals(requestCrewId)) { throw new SquadBusinessException.NotMatchCrewInfo(NOTMATCH_CREWINFO); } } private void checkDifferenceSquadCreator(Squad squad, CrewMember crewMember) { if (squad.getCrewMember().equals(crewMember)) { throw new SquadBusinessException.OwnerCantParticipant(OWNER_CANT_PARTICIPANT); } } 그리고 위 코드를 리팩토링하고나서 아래와 같은 코드가 나오게 되었습니다. ========== AFTER =========== private void checkCrewInfoIsMatch(Long requestCrewId, Squad squad) { if (squad.hasNotSameCrewId(requestCrewId)) { throw new SquadBusinessException.NotMatchCrewInfo(NOTMATCH_CREWINFO); } } private void checkDifferenceSquadCreator(Squad squad, CrewMember crewMember) { if (squad.isSameOwner(crewMember)) { throw new SquadBusinessException.OwnerCantParticipant(OWNER_CANT_PARTICIPANT); } } 이렇게 Getter 로 값을 꺼내 직접 값을 비교했던 (Before) 에서, 값의 비교를 객체에게 위임하는 형태인 (After) 로 리팩통해보았습니다. 하지만 값의 비교를 객체에게 위임하는 After 방식으로 리팩토링했더니, 엔티티와 연관된 다른 프록시 객체들의 초기화로 인해 불필요한 쿼리가 나가는 문제를 확인하게 되었습니다. 물론 fetchJoin 을 통해 해결하긴 했습니다. 정리하면 아래와 같습니다. 기존에는 Service Layer 에서 직접 특정 엔티티와 연관된 엔티티를 직접 Getter 로 꺼내 값을 비교했었고, N + 1 이 터지지 않았습니다. (Before) 하지만 남용된 Getter 를 개선하기 위해 값의 비교를 엔티티 내부에서 진행하는 방식으로 리팩토링했을때는 N + 1 이 터졌고, 이를 fetchJoin 으로 해결했습니다. (After) 물론 지금은 fetchJoin 으로 N + 1 문제를 해결하였지만, After 와 같은 방식으로 리팩토링을 하려면 "연관된 엔티티를 모두 fetchJoin 미리 땡겨와야하는건가? (column 들을 너무 많이 땡겨오면 성능문제 걱정)" 라는 생각이 들게되었습니다. JPA 를 사용할때, 강사님은 어떠한 방식으로 연관된 엔티티들의 값 비교를 어떤 방식으로 진행하는지 매우 궁금 합니다. 원래 JPA 를 사용하면 객체지향적인 설계를 가져가기 어려운건지도 궁금합니다. (깃헙에서 다른 사람이 한 프로젝트를 분석하다보면, 가끔 연관관계 자체를 맺지 않고, FK 를 Long 으로 가져가버리는 Case 도 본것 같은데 흠.. 나중에 질문)
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 와일드카드질문
오랜만에 햇갈려서 제네릭 다시볼려고 영한님 찾아왔습니다.제네릭메서드랑 와일드카드 언제쓸지 구분할때좀더 명확한 타입이 필요할때 제네릭 타입을 쓰면 될까요 ?좀 햇갈리네요 이부분이강의 예시코드를 보면 Dog dog = WildCardEx.printAndReturnGeneric(dogBox); //Dog 타입 Animal animal = WildCardEx.printAndReturnWildcard(dogBox); // 부모 타입 (Animal ) 이렇게 나와서 특별한 형 변환이 필요없을때 와일드 카드를 쓴다고 생각하면 맞는생각일까요 ?
-
미해결김영한의 실전 자바 - 기본편
문제2 PayService
[질문 내용]김영한 강사님께서 영상 18분 33초쯤에 PayService에 만든 findPay메소드에서 결제 수단을 넣으면 PayService의 코드가 바뀐다는 말이 잘 이해가 안됩니다. 자세하게 설명해주실 수 있을까요?
-
미해결김영한의 실전 자바 - 중급 2편
안녕하세요 질문있습니다.
직접 구현하는 연결 리스트1 강의중 영상과 자료에는 문제가 없는 것 같은데 저의 IDE에서는 캐스팅을 요청하길래 코드를 보니 참조값이 Object인데 반환 값은 Node라 상관이 없는 것을 알고 있지만다운캐스팅을 하는 것이 올바른 것인지 문의드립니다.
-
해결됨김영한의 실전 자바 - 중급 2편
컬렉션프레임워크 문제 풀이2 - 문제7 Cart클래스 add() 및 minus() 코드 방식에 대하여서 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.문제 풀이7번 장바구니를 만들고 나서, 영상 및 pdf 랑 비교해보니, Cart 클래스의 add() 및 minus() 가 비슷하긴 한데, 다릅니다.(정답은 잘 나옵니다.) 이럴 때에는 영한님의 코드 방식을 익히고, 영한님 코드를 쓰는게 나을까요?아니면 그대로 저의 코드로 하는 게 나을까요?(일단 코드도 올릴게요.)추가1 이렇게 코드를 올리는 게 자만 인가요? 다른 분들은 코드를 올리지 않고 잘 진행하는데, 주구장창 식으로 올리는 듯해서요.(저번 글에 답변 해주신 David 님 말이 생각이 나서요.) 답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 기본편
문제2 PayStore의 payStore메소드
[질문 내용]payStore메소드를 정의할 때, 왜 static으로 한 것이고, 메소드 타입으로 왜 Pay 라고 한것인지 궁금합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
java: cannot find symbol 'string' 에러
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)아니오2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용] java: cannot find symbol 'string' 이라는 에러가 발생합니다.. 구글에 검색을 해보니 jdk가 설정이 안된거라고 나오는데 저는 영상에서 나온대로 최신버전인 23을 설치한 상태입니다.. 뭐가 문제인지 알려주시면 감사하겟습니다ㅜㅜ
-
미해결김영한의 실전 자바 - 기본편
문제2 : PayService
[질문 내용]정답을 보기 전에 먼저 제가 스스로 리팩토링 하다가 PayService에 있는 processPay 메소드도 Pay 인터페이스에 넣어서 각각 KakaoPay, NaverPay에서 구현을 했는데 이렇게 해도 OCP 원칙을 따르면서 리팩토링 한건가요?
-
미해결스프링 핵심 원리 - 기본편
스프링 준비물
안녕하세요! 코린이에요 영한 선생님 자바 강의 고급까지 다듣고 스프링을 수강하려하는데 자바강의만 듣고 스프링으로 넘어가도 괜찮은가요? 그리고 항상 질좋은 강의 감사합니다!!
-
미해결김영한의 실전 자바 - 기본편
선생님 혹시 자바스크립트 강의는 만드실 계획이 없나요??
다른질문입니다만,....김영한 선생님께 자바스크립트 배울수있다면 너무 좋을것같아서요..ㅠㅠ
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
저는 왜 EOFException이 아니라 SocketException이 발생할까요 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.강의를 쭉 들으면서 ServerV3, V4를 키고 ClientV3,4 를 강제 종료시키면 영한님은 EOF 오류가 뜨는데 저는 Socket 오류가 발생합니다. 제가 잘못한건지 아니면 상황에 따라 다른건지 궁금합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
EX1번문제
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]영한쌤이랑 다르게 int sum= a + b + c; 을 생각못하고리턴값으로 결과는 똑같이 얻었는데 영한쌤과 과정이 다르니 틀렸다고 봐야겠죠?..가능하다면 쌤이랑 다르게 int sum = a + b + c;를 작성하지 않은 것에 대한 단점도 알고 싶습니다ㅠㅠ 어렵네요..
-
미해결스프링 핵심 원리 - 기본편
2개의 MemoryMemberRepository 인스턴스 생성?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]복습을 하면서 궁금한 점이 생겼습니다. AppConfig에서 memberService메서드와, orderService 메서드에서 동일하게 memberRepository()메서드를 호출하게 되는데요, public class AppConfig { // 생성자 주입(DI) public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } private MemberRepository memberRepository() { return new MemoryMemberRepository(); } // 생성자 주입(DI) public OrderService orderService() { return new OrderServiceImpl(memberRepository(), discountPolicy()); } private DiscountPolicy discountPolicy() { // return new FixDiscountPolicy(); return new RateDiscountPolicy(); } }이렇게 되면 힙 영역에서 각각 다른 참조 주소를 가진 MemoryMemberRepository 인스턴스를 생성하는게 맞나요..? 동일하게 사용이 되는데 같은 인스턴스를 사용하게 하는 방법은 없는지 궁금합니다 !
-
미해결스프링 핵심 원리 - 기본편
AppConfig에서 작성한 메서드의 반환타입을 인터페이스로 정한 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 좋은 강의 감사드립니다 ! AppConfig 클래스에서 만든 메서드를 보면public MemberService memberService() { return new MemberServiceImpl(memberRepository()); } private MemberRepository memberRepository() { return new MemoryMemberRepository(); }memberRepository의 메서드의 반환타입이 MemberRepository로 인터페이스를 반환하고 있습니다. 이때 생각해볼 수 있는 점은MemberServiceImpl의 생성자에서 요구하는 파라미터가 인터페이스이기 때문이다라고 볼 수 있는데요, 만약 인터페이스를 반환하지 않고 구현체(MemberServiceImpl)을 반환한다면 어떤 아쉬움이 남을지 고민해보았는데 답이 나오지 않습니다 ㅠㅠ 혹시 인터페이스로 반환하게 되었을 때의 장점과 구현체를 반환하게 되었을 때의 단점을 알 수 있을까요..!?
-
해결됨오브젝트 - 기초편
도메인 추출 방법
안녕하세요. 먼저, '객체지향의 사실과 오해'와 '오브젝트' 책과 더불어 이 강의까지 수강하게 되었습니다. 정말 좋은 지식을 전달해주셔서 감사합니다! 창피하지만 제가 어려워하고 있는 부분은 요구사항에서 도메인을 추출하는 것입니다. 예를 들어, 영화 예매 시스템같은 경우 제가 혼자 생각했을 때는 단순히 '영화', '할인' 정도로밖에 도메인을 추출을 못했습니다. 책과 강의를 통해 '상영'이라는 도메인을 추출할 수 있다는 사실은 생각지도 못했습니다.혹시, 이렇게 여러 도메인들을 추출하기 위한 기준이라던가 방법이 따로 있을지 궁금하여 질문드립니다. 아니면 역시 많이 생각해보고 구현해보는 방법밖에 없는 걸까요? ㅜㅜ