묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석
nbformat>=4.2.0 해결법
ValueError: Mime type rendering requires nbformat>=4.2.0 but it is not installed오류가 나오는 경우,pip install ipykernel pip install --upgrade nbformat코드를 돌리고Visual Studio Code 윗쪽에 Restart 버튼을 눌려 Kernel 재시작하면 작동합니다.
-
미해결김영한의 실전 자바 - 중급 2편
강의 중 이중연결리스트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 이중연결리스트는 안다루나요?
-
해결됨기초 탄탄! 독하게 시작하는 Java - Part 2 : OOP와 JVM
Metaspace에 대한 질문
안녕하세요 널널한개발자님 수업들으면서 많은 것을 배우고 있습니다! 다름이 아니고 Method Area 수업에서는 Method Area가 Java 8부터는 PermGen에서 Metaspace에 속하게 되고, JVM Heap 영역이 아니라 Native Memory에서 관리한다고 배웠는데 JVM Heap 영역 수업에서 영구 세대(Metaspace)가 같은 것을 지칭하는 것일까요? 제가 보기에는 같은 것을 지칭하는 것 같다고 생각합니다. 그러면 Meataspace는 더 이상 Heap 영역에서 관리하지 않기 때문에 GC로 제거가 되지 않는 것이 맞을까요? 또한 저는 처음에 PermanentGen = Method Area라고 생각했는데 그게 아니라 Permanent 영역이 Method Area 영역을 포괄하는 큰 영역이기 때문에Java 8 이전: PermentGen에 포함된 MethodArea까지 GC가 관리(full시)Java 8 이후: MethodArea가 PermGen인 Heap 영역에서 분리되었으니 더이상 GC 관리 X 다만 다른 PermGen 영역만 full gc때 관리라고 생각하면 될까요?
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
채팅 프로그램 관련 질문 (join 관련)
안녕하세요 강사님 좋은 강의 매번 잘 듣고 있습니다.채팅 프로그램 직접 먼저 구현해보라고 하셔서 코드를 짜봤는데요, 이후 강사님이 짜신 채팅 프로그램 코드를 보며 많이 부족하다는 것을 다시 느꼈습니다. 두 코드를 비교하며 제가 짠 클라이언트 코드 중에 잘 이해가 되지 않는 부분이 있는데요,,우선 코드는 다음과 같습니다.package network.tcp.chat; //... import static util.MyLogger.log; public class ChatClient { private static final int PORT = 12345; public static void main(String[] args) throws IOException, InterruptedException { try (Socket socket = new Socket("localhost", PORT); DataInputStream input = new DataInputStream(socket.getInputStream()); DataOutputStream output = new DataOutputStream(socket.getOutputStream())) { log("채팅 소켓 연결: " + socket); // 채팅 메시지 송.수신 분리 ReadHandler readHandler = new ReadHandler(input); WriterHandler writerHandler = new WriterHandler(output); Thread clientReadThread = new Thread(readHandler, "clientReadHandler"); Thread clientWriteThread = new Thread(writerHandler, "clientWriteHandler"); clientWriteThread.start(); clientReadThread.start(); clientWriteThread.join(); clientReadThread.join(); } } }package network.tcp.chat; //.. import static util.MyLogger.log; public class ReadHandler implements Runnable { private final DataInputStream input; public ReadHandler(DataInputStream input) { this.input = input; } @Override public void run() { while(true) { // 서버로부터 문자 받기 String received = null; try { received = input.readUTF(); } catch (IOException e) { throw new RuntimeException(e); } log("server -> client: " + received); } } }package network.tcp.chat; //.. import static util.MyLogger.log; public class WriterHandler implements Runnable { private final DataOutputStream output; public WriterHandler(DataOutputStream output) { this.output = output; } @Override public void run() { Scanner scanner = new Scanner(System.in); while(true) { System.out.print("전송 문자: "); // 서버에 문자 보내기 String toSend = scanner.nextLine(); try { output.writeUTF(toSend); } catch (IOException e) { throw new RuntimeException(e); } log("client -> server: " + toSend); if (toSend.equals("exit")) { break; } } } }물론 제 코드를 작동시켜보면 1) EOFException도 발생하고 2) 자원 정리 코드도 따로 없습니다다만 궁금한 것은 main 에 다음의 두 코드를 넣어야 채팅 프로그램이 동작한다는 것입니다.clientWriteThread.join(); clientReadThread.join();앞서 보여주신 간단한 server-client 예제, 강사님이 짜신 채팅 프로그램 코드 모두 Thread.join() 메소드를 전혀 사용하지 않았는데 왜 제 코드에서는 두 코드를 넣어야 채팅 프로그램이 끊기지 않고 동작하는 것인지 자문을 구해도 될까요?ㅠ감사합니다..!
-
해결됨코틀린 함수형 프로그래밍 - 입문편
문제집 4 퀴즈 4번 질문입니다.
안녕하세요. 문제를 풀다가 애매하다고 생각되는 부분이 있어서 질문드립니다.퀴즈 4에서 b 를 보면, b. push 메서드는 Any 타입의 값도 받을 수 있다.라고 적혀있고, Stack 클래스는 런타임 시 T의 타입이 결정되기 때문에 Any가 들어올 수 없다고 설명주셨습니다.다만 궁금한 부분은 Stack<Any>와 같이 런타임 시 T가 Any 타입으로 설정된다면 push 메서드도 Any 타입 값을 받을 수 있다고 봐야 할 꺼 같은데, 문제 의도가 "push 메서드는 T 타입의 값을 받아야한다" 이기 때문에 b 가 틀린 설명인지 궁금합니다. 결국 런타임 시점에 Stack에 어떤 타입이 적용되냐에 따라 Any 타입의 값을 받을 수도 있고, 안될 수도 있는 것 아닌가 해서요.
-
미해결스프링 핵심 원리 - 기본편
CoreApplication 실행 안 됨
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]여기에 질문 내용을 남겨주세요.jdk도 다 맞게 설정한 거 같은데 왜 실행이 안 될까요?
-
미해결김영한의 실전 자바 - 중급 1편
Exception과 명시적인 체크예외의 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]강사님께서 설명해주신 것처럼 다른 예외가 발생시 disconnect();의 호출이 불가피하게 되었을때 finally라는 문구를 사용하여 해결방법이 있겠지만 catch의 예외타입을 Exception (= 실질적인 최상위 예외)로 지정하면 다른 에러가 발생하여도 해결할수 있을것 같은데 통합적으로 Exception으로 잡지 않는 이유가 궁금합니다!
-
미해결김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성
[오타 제보] pdf 10, 11 챕터
안녕하세요. 오타 제보입니다.자바 고급1편 11.동시성 컬렉션 pdf 4페이지add(): 컬렉션에 데이터를 추가한다sleep(100): 잠시 기대한다. 자바 고급1편 10. CAS-동기화와 원자적 연산 pdf 7페이지 6번째 줄 이 문제는 연산 자체가 나누어져 있기 때문에 발생한다. volatile 은 연산 차제를 원자적으로 묶어주는 기능이 아니다. 강의 감사히 듣고 있습니다!! 감사합니다.
-
미해결김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음
콘솔창
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]콘솔창이 가로로 나와야 할 게 세로로 나와요..예를 들면 123 이렇게 나와야 되는데123이렇게 나와요.
-
미해결김영한의 실전 자바 - 중급 1편
기존 풀이와 다른 예외에 의한 탈출 기저 조건
안녕하세요 강사님! 문제와 풀이2 의 문제에 있어서 저는 이렇게 풀었습니다.영한선생님도 if else 보다 탈출 조건을 통해서 하신다고 하셔서 같은 접근을 했음에 기뻤는데 풀이 중 for (Book book : books) 의 foreach 문 사용에 있어서 count 를 따로 빼시고 일반 for 문을 사용하셨는데 2가지 질문이 있습니다. Book 객체 배열을 n의 크기로 생성자에서 입력받아 배열을 생성한다면 cnt++을 통해 배열의 인덱스를 초과할경우도 고려해야 되지 않나요?Book b : books 의 foreach 문은 당연히 n 개로 구성되어있기에 foreach문을 사용할 수 있을거라고 생각했습니다. 강사님은 사용할 시 주의하라하셨는데 ArraryList도 아닌 일반 배열을 생성했을 때 값이 추가해서 들어갈 수 없지 않나요?
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
생성자 탐색과 객체 생성 - ConstructV1 코드질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 또 이해가 안되서 질문 을 올립니다.영한님 ConstructV1코드를 보면 declaredMethods()를 쓰면 모든 메서드 들을 보여주신다고 하였는데.. 다시 확인해보니 디폴트 메서드 및 프로텍티트 메서드가 출력이 안된것을 확인을 할 수가 있었습니다. 그래서 전에 학습했던 코드 MethodV1 코드를 돌려본 결과 여기에서는 프로텍티드 및 디폴트 메서드도 보여주는것을 확인을 햇습니다. getConstructors()는 부모꺼 뺀 public 메서드만 호출 가능, getDeclaredConstructors()는 모든 메서드를 호출하다고 했는데 디폴트및 프로텍트 메서드가 안나오니 의문점이 생기네요.이것도 알려주시면 감사하겠습니다.답변 부탁 드립니다.
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
필드 탐색과 값 변경 - 리플렉션 코드 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요.세션13 - '필드 탐색과 값 변경' 복습을 하다가 의문점이 생겨서 질문을 드립니다.영한 님이 리플렉션을 이용해서 name의 filed 값을 변경 하는 것을 보고 'final로 변경하면 안되겠지.'라는 생각을 하게 되었습니다. 그래서 userTest를 만들어서 name을 final로 변경해 보고 실험해보았습니다.(당연히 예외 터질 것을 예상 하고요)근데 왠걸? 저의 예상과는 다르게 결과가 나오는 것을 보고, "......" 밖에 말이 안나 옵니다. 이게 코드 결과입니다.왜 이렇게 나오는지 설명해 주실 수 있으신가요?(내용 수정)답변 부탁 드립니다.
-
미해결파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석
어떻게 로컬머신과 가상머신을 한 화면에서 같이 사용하시나요?
2:10 보면 가상머신 화면 위에 로컬머신 폴더를 띄우셨는데, 어떻게 하셨나요?저는 가상머신을 minimize해야 로컬 머신이 보여서요.그렇다고 가상머신 화면을 축소하면, 글자가 너무 작아지거나 전체 화면이 안 보여서 다루기 힘듭니다.왼쪽에 강의영상, 오른쪽에 코드프로그램을 둬서 보면서 코딩하고 싶은데, 방법이 궁금합니다.
-
미해결Java/Spring 주니어 개발자를 위한 오답노트
패키지 구조에 대한 질문
요즘 가장 많이 쓰는 패키지 구조가 있죠. 아래와 같이 레이어끼리만 모아둔과연 이것이 좋은 패키지 구조일까요? 더 좋은 코드를 위해 추천하는 패키지 구조나 레퍼런스가 있는지 여쭤보고 싶습니다.
-
미해결스프링 핵심 원리 - 기본편
spring 3.x 버전 오버라이딩 로그 변화
안녕하세요. 정말 궁금한 부분이 있어서, 질문 글을 올리게 되었습니다. 결론부터 말하면 오버라이딩 로그가 최신 버전에서는 다르게 출력되고 앞으로 이런 변하는 어떡해 알아가야 하나요? 강의에서는 스프링부트 2.x 버전으로 되어있어 오버라이딩 메시지가 명확합니다. ㄴ 빈에서 오버라이딩이 발생하면 메시지로 명확하게 알려줌하지만 개인 프로젝트에서는 스프링부트 버전은 3.x로 되어 있어서 오버라이딩 메시지가 명확하지 않습니다. ㄴ 명확하게 오버라이딩 메시지가 나타나지 않고, 다른 메시지로 표기됨 스프링 부트를 다운그레이드 하여 2.x로 하면 명확한 오버라이딩 메시지를 확인가능 하지만 업그레이드를 3.x로 진행하면 명확한 오버라이딩 메시지를 확인할 수 없습니다. 아주 사소한 변화라고 생각할 수 있지만, 이러한 변환된 정보는 어떡해 얻을 수 있을까요?spring 공식문서를 뒤적 거려봤지만 해당 내용을 쉽게 찾을 수 없습니다. 학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결파이썬 알고리즘 트레이딩 파트1: 알고리즘 트레이딩을 위한 파이썬 데이터 분석
Region을 왜 Korea Central로 하셨나요?
가장 빠르게 미국 주식 주문하기 위해선, East US가 가장 좋지 않나 싶어서 질문드립니다.
-
미해결김영한의 실전 자바 - 중급 1편
접근제어자 여부
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]package nested.test; public class OuterClass3 { public void myMethod(){ class LocalClass{ void hello(){ System.out.println("LocalClass.hello"); } } new LocalClass().hello(); } } hello() 메서드가 내부에서만 사용될 때도 public으로 선언하는 경우가 많은데, private이나 default로 선언하는 것이 더 나은 선택일까요? 어떤 기준으로 접근 제어자를 선택하는 게 좋을까요?class OuterClass3와 myMethod가 public이기 때문에 통일해준걸까요?우선 저는 지역클래스 안에서만 사용하기 때문에 defalut로 선언해서 문제를 풀었습니다만 의문이 생겨 질문남깁니다.
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
네트워크에 관련되서 질문 드려봅니다 선생님!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예[질문 내용]언제나 강의를 잘 듣고 있습니다 감사합니다! 다름이 아니라 제가 개념이 좀 흔들려서 이렇게 문의 드려봅니다..! 네트워크를 통해 TCP/IP로 통신을 하는 상황에서 MAC주소가 없어도 IP의 주소만 가지고 통신을 할 수 있는게 ARP를 사용해서 서버의 MAC 주소를 찾아낼 수 있어서라는데 이게 맞는건가요? 확실하게 알고자 질문드려봅니다!
-
미해결김영한의 실전 자바 - 중급 1편
바깥 클래스의 인스턴스의 멤버에 접근
1. 강의 내용과 관련된 질문인가요?예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]안녕하세요, 강의 수강 중 궁금한 것이 생겨 여쭤보게 되었습니다. 내부 클래스가 바깥 클래스의 인스턴스의 멤버에 접근, 지역 변수는 내부 클래스 특징 + 지역 변수에 접근 이라는 것에 대해 여쭤보고 싶습니다. 강의 자료 중 '바깥 클래스의 인스턴스의 멤버에 접근' 이라는 것이 바깥 클래스에 있는 '바깥 클래스 자기 자신'에 대한 객체나 '다른 클래스 타입으로 선언한 객체'를 사용할 수 있다는 말일까요 ? 그리고 지역변수 접근이라는 말도 여쭤보고 싶은데, 예시 코드 void process()를 보면 메서드 내부에 지금 지역 클래스가 있습니다. 지역 변수 접근이라는 말은 바깥 클래스의 메서드 내부에서 존재한다는 말일까요 ?
-
해결됨김영한의 실전 자바 - 기본편
final int value를 생성자를 통해 초기화하는 경우
[질문 내용]final이 붙은 int value를 생성자를 통해 초기화하는 법을 배웠습니다. 그런데, final이 변수 앞에 붙은 경우, 생성자를 통해서 한번만 초기화 될 수 있다고 했는데, 아래 ConstructInit 메서드를 두 번 사용하여 초기화를 두 번 진행한 것을 볼 수 있습니다. 한번만 초기화 할 수 있다고 했는데, 왜 객체를 두개나 생성해서 final int value를 두번 초기화한 것일까요?final int value; public ConstructInit(int value) { this.value = value; } package final1; public class FinalFieldMain { public static void main(String[] args) { //final 필드 - 생성자 초기화 System.out.println("생성자 초기화"); ConstructInit constructInit1 = new ConstructInit(10); ConstructInit constructInit2 = new ConstructInit(20); //한번만 초기화 된다며 System.out.println(constructInit1.value); System.out.println(constructInit2.value); } }