묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결스프링 핵심 원리 - 기본편
MemoryMemberRepository에서 오류가 납니다
package hello.core.member; import java.util.HashMap; import java.util.Map; public class MemoryMembereRepository implements MemberRepository{ private static Map<Long, Member> store = new HashMap<>(); @Override public void save(Member member) { store.put(member.getId(), member); } @Override public Member findById(Long memberId) { return store.get(memberId); } }강의를 보며 위 코드를 작성하였는데 Class 'MemoryMembereRepository' must either be declared abstract or implement abstract method 'findBy(Long)' in 'MemberRepository'Method does not override method from its superclass두개 오류가 뜹니다 어떻게 해야할까요?
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 11분17초경에 나오는 while2_3 코드변경문제 질문입니다while문 맨 끝에 i++;를 작성하지 않으면 i <= endNum을 정의해도 무한루프?로 실행이 되던데 왜 그런지 알 수 있을까요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
교안으로만 공부해도 충분할까요?
팬심 또는 언젠간을 위해 강의를 전부 구매했습니다.구매 후 기본편 까지는 강의를 다봤거든요.그런데 교안을 너무 잘만드셔서 교안만 봐도 될꺼같다 라는 생각이 들더라구요.물론, 강의를 진득하게 듣고 이해하여, 그것을 체화하면 자바에 대해 더 깊게 이해할 수 있겠지만,문제는 역시 트레이드오프... 시간이 너무 많이 걸리네요. 자바 고급 2편까지 1달 반에서 2달 내로 끝내고 싶은데 강의를 들으면 도저히 그 시간을 맞출 수 없을꺼같아서 질문해봅니다.제목 그대로 교안만으로도 충분할까요?
-
미해결김영한의 실전 자바 - 중급 2편
Tree
혹시 스택,큐,set, hash등의 강의는 있는데, tree 에 대한 강의는 없는 것 같은데 다른 편에서 Tree 에 대해서 어느정도라도 다루어주시나요 ?
-
미해결스프링 핵심 원리 - 기본편
실행 로그에 스프링로고가 없이 실행되는 이유
안녕하세요. '스프링으로 전환하기' 강의에서 @Configuration 설정파일과ApplicationContext ctx = new AnnotationConfigApplicationContext(AppConfig.class); 를 이용했을 때 실행되는 실행로그에 스프링로고가 보이지 않는 이유가 궁금합니다.보통 스프링웹MVC 를 구동할 때 스프링로고그림이 항상 보였거든요.
-
해결됨유니티 시스템 프로그래밍 Pt.1 - 상용 게임 구현을 위한 핵심 시스템 올인원 패키지
Fade 구현 파트에서 childcount 부분이 헷갈려서요
로비씬 마지막에 Fade 구현 파트에서 UIManager에 CloseUI 함수에서 lastchild 가져오는 부분을 var lastChild = UICanvasTrs.GetChild(UICanvasTrs.childCount - 3); 빼기 숫자를 FadeImg 추가했으니 3으로 수정하는 부분이요. 강의에서도 유니티 창에서 추가 설명해주시긴 했는데 약간 헷갈려서요이 코드 이후에 설명해 주실때 lastChild가 true면 겟 컴포넌트로 BaseUI 컴포넌트 가져오는데 이게 위 코드에서 -3으로 하면 null이 되니까 ... 대략 이런 방식으로 설명 주셨는데 이 부분도 잘 이해가 안돼서요 추가로 더 설명해 주실 수 있을까요
-
해결됨스프링 핵심 원리 - 기본편
컴파일시점, 런타임시점
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]조영호님의 '오브젝트'를 먼저 읽고 강의를 수강하고 있습니다. 책과 매우 유사한 상황에 또 놓여졌는데 책에서 이해하기 어려웠던 개념(컴파일시점, 런타임시점)을 강의에서도 다루고 있어질문드립니다.컴파일시점에 결정되는 클래스다이어그램이 있고런타임시점에 결정되는 객체다이어그램이 있습니다. 컴파일시점에는 인터페이스에 의존하고런타임시점에는 구현클래스에 의존하는 양상을 보이는데요. 질문입니다. AppConfig에서 생성자호출코드가 있는데파라미터로 의존성이 자리를 차지합니다.예를들면) new MemberServiceImpl(new MemoryMemberRepository()); 위 예시 소스코드로 인해서 컴파일시점에 벌써부터MemberServiceImpl객체가 MemeoryMemberRespository객체에 의존적이라는 것이 결정되는거 아닌가?라는 의문이 생겼습니다. 개발자가 작성한 MemberServiceImpl클래스는 컴파일시점이고public static void main(String[] args) 내에서 작성된 실행코드들은 런타임시점이라고 생각할 수 있는건가요?그래서 AppConfig내에서 MemberServiceImpl구현객체를 new하는 코드 및 의존성주입하는 코드들 전부 런타임에 결정되는 것이라고 정리를 해도 좋은지 궁금합니다. {MemberServiceImpl } 와{main메소드 ,AppConfig} 이 둘은 결이 달라보입니다.
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
강의랑 교안이랑 다른 부분이 있습니다.
File, Files의 4페이지밑에서 세 번째 줄Path newFile = Paths.get("temp/newExample.txt");교안에는 위와 같이 나와있는데, 강의 영상에서는 아래와 같이 코드를 작성해주셨습니다.Path newFile = Path.of("temp/newExample.txt"); 두 코드는 같은 역할을 하는 것인가요??
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
버퍼 질문입니다.
1. 1byte 씩 전송하면 당연히 시스템콜이 많이 작동하므로 속도가 느리다2. 8바이트씩 전송하면 시스템 콜에서 어차피 8바이트씩 전송하므로 시스템 콜을 적게 호출 할 수 있다 [질문]한번에 전송해도 시스템콜에서 8kb바이트씩 보낼텐데시스템콜 요청하는 횟수가 2번과 비슷할텐데 왜 버퍼를 쓰는게 더 빠르게 나오는 걸까요?혹시 이게 한번 전송하면 한꺼번에 시스템콜 직전까지 전달하므로 병목현상 뭐 그런걸까요?++강의에서 한번에 써도 os상에서 8kb씩 보내신다고 했던것 같은데 맞나요?메모리에 한번에 올려서 시스템콜에 가져다 주는 것이 부하가 걸려서 8kb씩 버퍼로 하는 것보다 더 느린걸까요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
버퍼 질문입니다!
한번에 쓰는 것과 8kb씩 버퍼를 이용해서 쓰는 것에 대해서어차피 시스템 콜에서 8kb씩 전송하는데한번에 가져다 주는 게 더 빨라야 하는 것이라고 인식되는데어떻게 8kb씩 버퍼로 주는게 더 빠른걸까요?한번에 주든 8kb씩 버퍼로 주든시스템 콜에서 8kb씩 전송하는 거면한번에 주는 게 나은 거 아닌가요!?
-
해결됨iOS Clean Architecture & MVVM: RxSwift 완전 정복
강의 자료는 어디서 받을수 있나요?
강의에 사용되는 자료와 코드들은 어디서 받을 수 있나요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!
안녕하세요, 오랜만에 흥미로운 강의를 알게되어 주말동안 강의를 몰아보다보니 9강까지 듣게 되었네요. 23분 59초 정도에 setter를 지양하기 떄문에 custom setter를 잘 사용하지 않고, update함수를 만들어 사용한다 라는 내용에 예시가 있다면 알 수 있을까요? java 프로젝트를 활용할 때 setter를 커스텀하게 수정해서 쓰는 경우가 아주 간혹 값이 업데이트 될 때 다른 필드를 함께 업데이트 해야하는 케이스들 때문에 사용했던 기억이 있는데, setter를 사용하지 않고 update를 사용한다는게 어떤 말씀이신지 조금 더 상세히 알려주시면 감사하겠습니다!
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
고급 3편은 어떤 내용이 담기나요?
2편 듣고있는데 .. ㅎㅎ 궁금합니다.
-
미해결김영한의 실전 자바 - 기본편
다형성과 메서드 오버라이딩 디스패치 관련 질문입니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요. 다형성1섹션에서 <다형성과 메서드 오버라이딩> 9분 관련 질문입니다. '메소드 상속은 일방통행(자식 → 부모)인데, 어떻게 부모에서 오버라이딩 된 자식함수를 찾아가는가?'가 질문입니다. 다른분들이 질문을 남겨주신 것과 비슷한데, 제가 내린 결론이 맞는지 여쭤보고 싶습니다. 제가 내린 결론은 다음과 같습니다.오버라이딩은 런타임에 호출메서드를 결정하는 동적 디스패치를 수행한다.즉, 메서드 호출 시점에 오버라이딩을 체크해서, 오버라이딩이면 동적 디스패치가 수행된다.동적 디스패치를 수행하면, 참조변수타입이 아닌 실제 객체를 기준으로 메서드가 호출된다. (오버라이딩이 아니면 동적 디스패치는 수행되지 않는다.) poly.method()호출호출 시점에 호출된 메서드가 오버라이딩이면 동적 디스패치 수행동적 디스패치를 수행하면 참조변수타입이 아닌 실제 객체를 기준으로(new Child) 메서드가 호출됨. (오버라이딩이 안된 메서드면 동적 디스패치 수행x)객체 주소 x001로 이동(부모, 자식 다 있음.) → 실제 객체 오버라이딩 된 메서드로 바로 이동.(부모로 갔다 가는게 아님) 이것이 맞는지 여쭤보고 싶습니다.제가 검색한 바에 의하면, 먼저 부모로 가서 자식으로 내려가는게 아니라, 오버라이딩 된 함수의 경우 동적 디스패치 수행으로 바로 오버라이딩된 함수로 (vmt 우선순위 변경) 바로 이동하는 것으로 결론이 되었는데제가 내린 결론은 강의 자료 그림상 부모에서 자식으로 내려가는 화살표와는 다르다 보니 여쭤봅니다. 부모로 갔다가 화살표가 자식으로 내려가는걸까요?처음부터 오버라이딩된 함수의 경우 동적디스패치 수행으로 바로 오버라이딩 된 함수로 가는게 아닌걸까요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다
=====[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]<ResetClose Client> package network.exception.close.reset; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import static util.MyLogger.log; public class ResetCloseClient { public static void main(String[] args) throws IOException, InterruptedException { Socket socket = new Socket("localhost", 12345); log("소캣 연결: " + socket); InputStream input = socket.getInputStream(); OutputStream output = socket.getOutputStream(); // Client <- Server : FIN Thread.sleep(1000); // 서버가 Close() 호출할 때 까지 잠시 대기 // Client -> Server: PUSH[1] output.write(1); // Client <-- Server : RST Thread.sleep(1000); //RST 메시지 전송 대기 try { int read = input.read(); System.out.println("read = " + read); } catch (IOException e) { e.printStackTrace(); } try { output.write(1); } catch (IOException e) { e.printStackTrace(); } } }<ResetCloseServer>package network.exception.close.reset; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import static util.MyLogger.log; public class ResetCloseServer { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(12345); Socket socket = serverSocket.accept(); log("소캣 연결 : " + socket); socket.close(); serverSocket.close(); log("소캣 종료 : " + socket); } }<클라이언트 결과>C:\Users\nevr\.jdks\openjdk-21.0.2\bin\java.exe "-javaagent:E:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.3\lib\idea_rt.jar=49785:E:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2023.3.3\bin" -Dfile.encoding=UTF-8 -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8 -classpath E:\mork\study\java-adv2\out\production\java-adv2 network.exception.close.reset.ResetCloseClient06:06:39.444 [ main] 소캣 연결: Socket[addr=localhost/127.0.0.1,port=12345,localport=49791]java.net.SocketException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다 at java.base/sun.nio.ch.SocketDispatcher.read0(Native Method) at java.base/sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:46) at java.base/sun.nio.ch.NioSocketImpl.tryRead(NioSocketImpl.java:256) at java.base/sun.nio.ch.NioSocketImpl.implRead(NioSocketImpl.java:307) at java.base/sun.nio.ch.NioSocketImpl.read(NioSocketImpl.java:346) at java.base/sun.nio.ch.NioSocketImpl$1.read(NioSocketImpl.java:796) at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1099) at java.base/java.net.Socket$SocketInputStream.read(Socket.java:1093) at network.exception.close.reset.ResetCloseClient.main(ResetCloseClient.java:29)java.net.SocketException: 현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다 at java.base/sun.nio.ch.SocketDispatcher.write0(Native Method) at java.base/sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:54) at java.base/sun.nio.ch.NioSocketImpl.tryWrite(NioSocketImpl.java:394) at java.base/sun.nio.ch.NioSocketImpl.implWrite(NioSocketImpl.java:410) at java.base/sun.nio.ch.NioSocketImpl.write(NioSocketImpl.java:440) at java.base/sun.nio.ch.NioSocketImpl$2.write(NioSocketImpl.java:819) at java.base/java.net.Socket$SocketOutputStream.write(Socket.java:1195) at java.base/java.net.Socket$SocketOutputStream.write(Socket.java:1190) at network.exception.close.reset.ResetCloseClient.main(ResetCloseClient.java:36)Process finished with exit code 0 네트워크 예외4 - 강제종료 중 받은 메시지인데수업에 말씀하신 Connection reset , pipe broken 이 아닌 "현재 연결은 사용자의 호스트 시스템의 소프트웨어의 의해 중단되었습니다" 에러 메시지가 나옵니다위 에러메시지에 대해 궁금합니다! (사용자의 호스트 시스템?? 이게 어떤 시스템인지.., 방화벽 문제인지, 보안소프트웨어를 말하는지) 강의 너무 잘듣고 있습니다!! 영환쌤 늘 감사드립니다.
-
미해결김영한의 실전 자바 - 중급 2편
생성 시 타입추론 질문합니다.
List<Integer> list1 = new ArrayList<>(); List<Integer> list2 = new ArrayList<Integer>();객체의 타입에는 들어갈 데이터의 타입을 명시해 주어야 하지만 인스턴스를 생성할 때는 타입추론으로 인해 다이아몬드에 타입을 입력하지 않아도 되는 부분에서 궁금증이 생겼습니다. 타입추론은 인스턴스 생성 시 개발자의 편의를 위해 몇 자 줄여주는 정도인가요? 아니면 다른 부가적인 장점이 있는지 궁금합니다. 컴파일러가 타입을 추론하기 위한 시간이 추가적으로 소요될 것 같은데(고려할 정도는 아니겠지만...) 오히려 타입추론으로 최적화 적인 방면으로 이점도 있을까요?..
-
해결됨김영한의 실전 자바 - 중급 2편
ArrayList와 LinkedList 질문 있습니다.
ArrayList는 배열을 기반으로 만든 List이며LinkedList는 객체의 참조로 연결된 List로 이해했습니다. 요즘에는 메모리 용량이 많이 크기 때문에 고려하지 않아도 된다고 생각하는데 궁금증이 있어 질문을 남깁니다. LinkedList는 데이터가 추가 될 때 마다 새로운 Node를 만들어서 현재 가지고 있는 데이터의 크기만큼 메모리를 차지하는 반면ArrayList는 들어있는 데이터 크기가 일정 크기를 넘는 경우 더 많은 데이터를 저장할 수 있는 새로운 Array를 생성하여 반환하기 때문에 동일한 개수의 데이터를 저장해도 ArrayList가 메모리 상에서 차지하는 크기가 크다고 생각하면 되나요?
-
미해결자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)
java class의 NotNull 어노테이션 인식
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 2강 코틀린에서 null을 다루는 방법 수강중 궁금한 지점이 생겨 문의드립니다.name이라는 필드에 NotNull 어노테이션을 달아주어서 인스턴스 초기화시 null값은 받을 수 없게 하고싶었는데이런 경우에는 null을 대입해도 에디터상에서 에러를 짚어주지 못하더라구요.회사 프로젝트를 전환하는 과정중에는 이런 문제가 꽤나 발생할 것 같은데 좋은 해결책이 있을까요? package com.lannstark.lec02; import org.jetbrains.annotations.NotNull; public class Person { @NotNull private final String name; public Person(String name) { this.name = name; } public String getName() { return name; } }package com.lannstark.lec02 fun main() { val person = Person(null) startsWithA(person.name) }
-
해결됨김영한의 실전 자바 - 중급 2편
컬렉션 프레임워크9에서 문제와풀이2의 문제6번에 대해 여쭤봅니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오)[질문 내용]여기에 질문 내용을 남겨주세요.컬렉션 프레임워크9에서 문제와풀이2의 문제6번에 대해 여쭤봅니다. memberMap이라는 해시맵에서 첫번째 매개변수로 member.getId 가 들어가고 두번째 매개변수로 member클래스가 들어가는데 첫번째 매개변수가 member클래스의 멤버변수이어야 하는 이유가 있을까요? 문제를 풀던 중에 아직은 잘 모르겠지만 member클래스의 멤버변수 두개를 memberMap이라는 해시맵에 두개를 지정해도 될거같기도 한데(제 극히 초보인 관점에서 본 추측일 뿐입니다.그렇게 풀어볼 능력까진 없어서요.) 굳이 두번째에 클래스를 넣으시고 첫번째에 클래스의 멤버변수 하나를 넣으신 이유가 궁금합니다. 제 짧은 시각으로 보면 중복 같아 보여서요 질문6번의 의도가 파악이 안 돼서 궁금하여 여쭤봅니다.
-
해결됨오브젝트 - 기초편
객체지향 설계 관련하여 궁금한것이 있습니다.
안녕하세요. 우선 저는 제 자신이 자바로 개발을 진행하고 있지만, 객체지향을 완전히 알고있는지에 대해 의문을 가진채 해당 강의를 접하게 되었고, 많은 생각과 깨달음을 얻고 있습니다. 감사합니다.그리고 궁금한것이 있어 글을 쓰게 되었습니다. (사실 완강을 하지 않은 상태이긴합니다 ㅠ) 개발 설계 방식이야 다양할것이라 생각이 드는데, 보통 스프링 기준으로..프레임워크 내에서 패키지 설계를 진행할때 단순 관리 기능 개발 기준으로 보면, 레이어드 아키텍처와 유사한 방식으로 설계를 많이 진행하지 않을까라는 생각이 조심스럽게 듭니다. (물론 아닐수도 있습니다 ㅠㅠ)그리고 보통은 절차지향으로 생각하여 ERD 설계후 이를 스프링 프로젝트 내에 레이어드 아키텍처를 설계하여 (대충 controller-service-repository(JPA 사용시))작업을 진행할것이라 생각이 듭니다. 그리고 service 에는 필요한 repository 들을 왕창 주입받는 형태로 설계될것이라 생각이 듭니다. 저는 여기서 궁금한것이 이러한 상황(레이어드 아키텍처)에서 강의의 오브젝트 개념을 녹이고 싶다면패키지 구조를 어떻게 정의하는것이 마땅할지 문득 궁금해졌습니다. 예를들면 entity 패키지와는 별개의 다른 domain 패키지(책임을 일부 갖는 역할)를 만들어 service 패키지에서 해당 domain 패키지(책임을 일부 갖는 역할)를 주입받아 사용하는 방식으로 설계를 해야하는지 등이 궁금합니다. 질문을 작성하면서도 정답이 없으려나 싶기도 합니다. 무튼 감사합니다. 완강하겠습니다!!