묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
테스트 할 때 왜 다른 파일의 오류에 영향을 받는건가요??
[질문 내용]RateDiscountPolicyTest를 할 때 10퍼센트로 할인율이 변경되었으니 Order.java 파일의 calculatePrice도 변경되어야 할 줄 알고 주석처리를 했는데 관련 없는 파일에서 오류가 나서 테스트 실행이 안 됩니다. calculatePrice를 주석 처리하고, 저 코드를 쓰는 모든 코드들을 주석처리 하니 오류가 안나고 테스트가 잘 돌아갑니다. 원래 테스트를 할 때 테스트와 관련 없는 파일의 오류가 있으면 테스트가 작동되지 않는 건가요?
-
미해결스프링 핵심 원리 - 기본편
프로젝트 빌드가 안되는 이유가 뭘까요??
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]현재 맥 OS를 사용하고 있습니다. 강의를 듣는 도중 인터페이스로 변경하면서 테스트를 진행했을때, 객체 주입이 안된 상태이기 때문에 NullpointException이 발생해야하는데 변경사항이 아닌 이전 버전으로 실행되가주고 테스트 성공으로 뜹니다. 이걸 해결하기 위해서는 변경사항이 있을때마다 프로젝트를 재빌드해야하는데 데스크톱에서는 바로 반영되가주고 빌드를 매번 할필요가 없는데 해결방안이 있을까요?
-
해결됨김영한의 실전 자바 - 중급 1편
또 다른 풀이 공유합니다.
질문은 아니고, 수강하시는 분들에게 도움이 되고자 제가 풀이한 또 다른 방식 공유합니다. package time.test; import java.util.Scanner; import java.time.LocalDate; import java.time.DayOfWeek; public class TestCalendarPrinter { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("년도를 입력하세요: "); int year = sc.nextInt(); sc.nextLine(); System.out.print("월을 입력하세요: "); int month = sc.nextInt(); sc.nextLine(); printCalendar(year, month); } private static void printCalendar(int year, int month) { // 사용자 입력에 따른 LocalDate 객체 생성 LocalDate ld = LocalDate.of(year, month, 1); // 요일 표지 출력 System.out.println("Su Mo Tu We Th Fr Sa"); for (int i = 0; i < ld.lengthOfMonth(); i++) { // 해당 월의 1일에 해당하는 요일을 감지하고, 이에 따라 출력 시작 위치를 지정 // ld.getDayOfWeek().getValue()는 해당 날짜의 요일 값을 int로 리턴 Sunday(0), Monday(1) if (i == 0) { for (int j = 0; j < ld.getDayOfWeek().getValue(); j++) { System.out.print(" "); } } // 다음 일을 출력. startPosition은 위에서 맞췄으므로 단순 포맷팅 출력만 하면 됨 LocalDate currentLd = ld.plusDays(i); System.out.printf("%2d ", currentLd.getDayOfMonth()); // Saturday 출력 후에는 다음 줄로 이동 if (currentLd.getDayOfWeek() == DayOfWeek.SATURDAY) { System.out.println(); } } } }
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
모니터에 한 줄로 출력
C에서는 모니터의 값을 출력할 때 printf("a = %d, b = %d",a,b) 이런식으로 적어서 한줄로 표현 할 문장을 연달아 쓸수 있는데 JAVA에서는 중간에 변수를 출력하고 싶으면 무조건 끊어야하나요?
-
미해결스프링 핵심 원리 - 기본편
인터페이스와 구현체 생성 순서
[질문 내용]안녕하세요. 이미 로드맵 1회독을 마치고 TDD관련 공부를 하다가 객체지향과 DI,IoC의 개념에 대해 복기하기 위해서 강의를 듣던중 궁금한 부분이 생겨 질문을 남깁니다. 아직 개발 경력이 짧은 대학생임을 감안해주시면 감사하겠습니다. 인터페이스와 구현체를 분리하는 것의 중요성에 대해서는 잘 인지하였지만, 구현체를 작성하기 전 인터페이스를 먼저 작성하는 것에 대해서 의문이 생깁니다. 실제 몇몇 프로젝트 진행 경험 상으로, 파라미터나 메서드의 설계에 있어서 구현을 하면서 그 스펙이 변하는 경우가 매우 많았습니다. 그래서 구현을 먼저 하고 인터페이스를 그에 맞추어 생성하는 경우가 잦게 있었는데, 이런 경우에는 기능 설계가 충분하게 되지 않은 채로 개발에 시작한 잘못의 결과인가요? 실무 개발이나 프로젝트에서 인터페이스 개발 -> 구현체 개발 의 순서가 일반적인 경우일까요? TDD관련한 개념에서도 인터페이스를 먼저 작성한 후 해당 메서드를 이용하여 TDD를 작성 -> 메서드의 기능이 검증 된 후에 구현을 하는 것으로 배웠습니다. 하지만 아무리 고민하여도 구현체를 먼저 작성하는 것이 개발 과정을 최적화하는 방법이라는 생각이 들어 질문 남깁니다. 정리하자면, 구현체 개발 후 인터페이스를 구현체에 맞게 작성하여 사용하는 방법이 잘못된 순서인지 여쭤보고 싶습니다.
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
상속과 오지랖의 콜라보 예제에서 clone() 메서드에 대한 문의드립니다.
해당 예제(22:17)의 setString(String param)에서string 필드 변수의 값을 수정하고자 아래 구문을 사용하셨는데요,string = param.getBytes().clone(); clone() 메서드를 사용하지 않아도(아래 구문) string 필드 변수의 수정이 가능한데, clone() 메서드를 사용한 이유를 알 수 있을까요?string = param.getBytes(); 해당 의문에 대해서 얇은/깊은 복사와 관련이 있는지 확인해보기 위해 디버깅을 해본 결과,두 변수는 값은 같으나, 다른 메모리 위치를 갖는 것으로 확인을 했습니다.-> clone() 메서드가 있는 코드/없는 코드 모두 위와 동일하게 동작하는 것을 확인했습니다.그래서 다른 이유로 clone() 메서드를 사용하신 거 같은데, 어떤 이유인지 문의 드립니다.
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
MyAtomic 성능 테스트 결과 상이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]MyAtomicInteger 와 다른 구현체 들의 성능을 테스트 하는 코드에서 강의에 결과와 다른 결과가 나옵니다...package thread.cas.increment; import java.util.concurrent.atomic.AtomicInteger; public class MyAtomicInteger implements IncrementInteger{ AtomicInteger atomicInteger = new AtomicInteger(0); // 이미 동시성 문제가 다 해결되어 있는 클래스이다. @Override public synchronized void increment() { atomicInteger.incrementAndGet(); } @Override public int get() { return atomicInteger.get(); } }package thread.cas.increment; import static util.MyLog.log; public class IncrementPerformanceMain { public static final long COUNT = 100_000_000; public static void main(String[] args) { test(new BasicInteger()); //가장 빠르다 CPU 캐시를 가장 적극 사용한다. 멀티스레드 환경에서는 사용할 수 없다. 단일 스레드일 경우 가장 효율적 test(new VolatileInteger()); // 메인메모리를 직접 사용한다. 안전한 임계영역은 없기 때문에 멀티스레드 환경에는 사용할수 없다. test(new SyncInteger()); test(new MyAtomicInteger()); } private static void test(IncrementInteger incrementInteger) { long startMs = System.currentTimeMillis(); for (long i = 0; i < COUNT; i++) { incrementInteger.increment(); } long endMs = System.currentTimeMillis(); log(incrementInteger.getClass().getSimpleName() + ": ms=" + (endMs - startMs)); } }아토믹이 그냥 synchronized보다 더 느린 결과가나오는데 제가 놓친 부분이 있을까요?
-
미해결김영한의 실전 자바 - 기본편
오디오만 나오고 화면이 안나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]오디오만 나오고 화면이 안나옵니다.캐쉬도 날려보고 브라우저도 바꿔봤는데 동일하게 안나옵니다.
-
미해결김영한의 실전 자바 - 중급 1편
toString()강의부터 화면이 안보입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. toString()강의부터 소리만 나오고 검은색 화면만 보이는데 인프런측의 문제일까요..?
-
미해결김영한의 실전 자바 - 중급 2편
9강 해쉬맵 회원관리기능 연습문제 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]연습문제 회원 관리 기능을 만드는중 findByName에서 헷갈려서 질문을 남김니다. 다음은 제가 작성한 소스코드입니다/** * get 메서드는 key값을 통해서 value를 반환한다 * key-> id, value ->memeber * value의 구조는 STRING: ID, STRING NAME이므로 * value를 하나로 펼쳐서 순회한 다음, 이름에 맞는 member를 반환 * */ public Member findByName(String name) { Boolean findMember = memberMap.containsValue(name); if(findMember!=null){ for(Map.Entry<String, Member> entry: memberMap.entrySet() ){ String key =entry.getValue().getId(); String parameterName = entry.getValue().getName(); if(parameterName==name) { return memberMap.get(key); } } } return null; }다행히 결과는 문제 없이 돌아가가나 String key = entry.getValue().getId()에 디버그를 찍으면Boolean findMember = memberMap.containsValue(name);//findMember:false, name: 회원3다음과 같이 표기 되는데 분명 회원3의 값을 저장 했는데 왜 findMember가 false로 나오는 걸까요?이유가 궁금합니다. 그리고 제가 작성한 findByMember 로직이 맞을까요 ? 많은 피드백 부탁드립니다!
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
보이지 않는 임시 객체의 자막 수정 요청
수업 내용을 스크립트로 볼 수 있어서 매우 큰 도움을 받고 있습니다.듣는 도중 자잘한 오타는 건의를 하는 편인데, 이번 건은 3줄이 모두 이상한 말로 등록되어 있어서 인프런측에 제보합니다.7:33, 7:36, 7:42 의 자막이 강사님 말과는 전혀 다른 엉뚱한 자막이 삽입되어 있습니다.확인 후 수정 요청합니다.
-
해결됨스프링 핵심 원리 - 기본편
스프링 빈 등록
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.강사님과 같이 기존에 AppConfig를 놔두고, AutoAppConfig를 만들어서 excludeFilters를 해주었는데요. coreApplicationTests-contextLoads()를 돌릴때에 이런 오류가 뜹니다. (1). 저는 이 오류가 AppConfig에서 빈을 수동으로 넣어줄떄에 첫번쨰 메소드인 MemberService에서 MemberServiceImpl을 생성하면서 반환할떄에 memberRepository를 빈중에서 무엇을 넣어줄지 모르겠다에 대한 오류로 이해했는데요 잘 이해한게 맞나요?(2) 잘 이해했다면 저도 강의에서와같이 MemoryMemberRepository클래스에 @component해줘서 빈이 자동으로 등록되고, autowired로 의존관계도 자동으로 주입된거 같은데. 그렇다면 memberrepository에 사용할 빈을 고를떄에 수동으로 등록된 빈 memberRepository와 자동으로 등록된 memorymemberrepository중에 무엇을 고를지 몰라서 이런 오류가 생기는건가요?? Appconfig에서 memberRepository에서 @Bean없애주면 오류안나서 이렇게 이해했습니다.강사님은 오류가 안뜨는데 전 왜뜰까요ㅜ
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
스레드를 조작하는 실제 상황 예시가 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 제가 큰 규모의 작업은 다루지 못했다보니 이런 개념들이 사용되는 실제 상황의 예시가 있을까요? 보통 스프링에서 제공하는 component를 사용해서 stateless하게만 만들어두다 보니 실제로 적용해보려 한다면 어디에 해야하지? 하는 생각이 그려지지 않습니다. 혹시 몇가지 실제 예시를 들어주실 수 있나요?
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
유저 인벤토리 Pt.3.
InventroyUI의 Scroll View하단의 Content에 아이템 슬롯들이 인스턴스화가 안 되네ㅔ요화인해야할 게 있을까요?
-
미해결김영한의 실전 자바 - 기본편
메서드 영역
[질문 내용]여기에 질문 내용을 남겨주세요. 강의를 보면, 인스턴스 메서드가 메서드 영역에 정보가 담긴다는데, 인스턴스 변수의 값은 담기지 않지만 인스턴스 메서드의 정보만 담기는 이유가 인스턴스 메서드는 객체 생성마다 인스턴스 변수처럼 각각 다른 값을 가지는 것이 아닌 동일한 메서드 내용을 계속해서 가져, 메모리 낭비때문에 메서드 영역에 담기는 건가요? 다만 인스턴스 멤버이기때문에 객체 생성후 접근해야 하는것이고요. 맞게 이해했을까용?/
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
unpark() 메서드 질문드립니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요. LockSupprot의 unpark()메서드는 park()와 parkNanos()로 WAITING상태이거나 TIME_WAITING상태에 빠진 스레드를 RUNNABLE상태로 깨우는 데 사용되는거면sleep(ms)로 TIME_WAITING상태에 빠진 스레드를 unpark()로 깨울 수 없는건가요?내용을 좀 더 찾아보니, LockSupport에서 스레드의 상태를 확인하기 위해 자체적으로 permit이라는 플래그값을 사용한다고 하는데, 그럼 결국 unpark는 LockSupport내의 메서드를 사용해서 대기 상태로 만든 스레드에 대해서만 작용하는 것인지 궁금합니다.
-
미해결남박사의 파이썬으로 봇 만들기 with ChatGPT
네이버 지도 api 호출 문제
InlineQuery와 스마트폰 위치 정보를 활요(용)한 주변 맛집 검색 파트에 6분8초에서 네이버 지도를 통해 네트워크에 해당 구간을 가져오는건데 여기서 새 탭에서 열기를 해야 가져올 수 있는데 지금 403 Forbiddennginx으로 못받아서 해당 내용을 못하게 되는데 다른 방법을 이용한 방법이 어떤것인지 정확히 모르겠습니다
-
미해결김영한의 실전 자바 - 중급 2편
성능 비교 비동기 처리돼요 이상해요
비동기 처리돼요
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 제보합니다!
안녕하세요 영한님! 오타 제보합니다!강의자료 pdf13. 스레드 풀과 Executor 프레임워크2.pdf39페이지AS-IS거절된 작업을 버리지만, 대신에 경로 로그를 남겨서 개발자가 문제를 인지할 수 있도록 해보자.TO-BE거절된 작업을 버리지만, 대신에 경고 로그를 남겨서 개발자가 문제를 인지할 수 있도록 해보자.감사합니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
오타 제보합니다!
안녕하세요 영한님! 오타 제보합니다!강의자료 pdf13. 스레드 풀과 Executor 프레임워크2.pdf23페이지AS-IS자바는 Executors 클래스를 통해 3가지 기본 전력을 제공한다.newSingleThreadPool(): 단일 스레드 풀 전략newFixedThreadPool(nThreads): 고정 스레드 풀 전략newCachedThreadPool(): 캐시 스레드 풀 전략TO-BE자바는 Executors 클래스를 통해 3가지 기본 전략을 제공한다.newSingleThreadPool(): 단일 스레드 풀 전략newFixedThreadPool(nThreads): 고정 스레드 풀 전략newCachedThreadPool(): 캐시 스레드 풀 전략새해 복 많이받으세요!