33,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
ChatRoom에서 synchronized 사용 이유
당장에는 문제가 발생하지 않아도 나중에 많은 쓰레드의 공유 자원에 대해서는 동기화 처리가 필요하기 때문에 synchronized method로 선언한걸까요?해당 예제에서는 모종의 이유로 연결이 해제되어 ChatRoom에서 remove되어야 할 때 해당 쓰레드만이 remove()를 호출하여 동기화 처리가 굳이 필요 없는게 아닌지 궁금합니다.
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
미로찿기 질문드립니다
올려놓으신 코드로 런해봤는데 몇가지 질문이 있어 질문드립니다.출발을 0,0이 아닌 2,2로 하거나 사진에서 미로의 숫자 1을 0으로 바꿔봤는데 길이 있음에도 Exception이 발생하는데 한참을 봤는데 왜 이런 현상이 발생하는지 모르겠어서 질문드립니다.
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
socket 질문드립니다
1. 그림에서 빨간색 부분은 무슨 기능을 하는 건가요? 출력에도 영향이 없는 거 같아서 질문드립니다 그림에서 파란색부분에서 클라이언트가 wirte 할 때까지 대기하고 있는 건가요? 클라이언트 역시 readline을 만나면 서버가 write할 때까지 대기하는 건가요?
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
지역 내부 클래스 질문드립니다.
"메서드 호출 이후에도 사용해야 하는 경우가 있을 수 있으므로 지역 내부 클래스에서 사용하는 메서드의 지역 변수나 매개 변수는 final로 선언됨"라고 말씀하셨는데 final로 선언되면 저장되는 영역이 달라지나요? 왜 final을 사용하는지 궁금해서 여쭤봅니다
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
큐 구현하기 질문드립니다
public String deQueue() { if(isEmpty()){ System.out.println("Queue is Empty"); return null; } String data = front.getData(); front = front.next; if( front == null ){ // 마지막 항목 rear = null; } return data; }강사님께서 올려주신 코드인데 처음에는 head가 null이니까 isEmpty가 true라서 return null이 되는데enQueue 실행하고 deQueue를 2번 실행하면 head가 null이 아니라서 isEmpty가 false가 되면서NullPointerException이 발생합니다. 어떻게 수정하면 좋을까요?
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
수업자료
노트부분에 있다고 하셨는데 해당강의 재생해서 노트 누르니까 아무것도 없는데노트부분이 그림에서 표시한 노트가 아닌 건가요?
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
섹션 1 - 1 equals 재정의 하면 왜 hashcode도 재정의 해야하는지..
섹션 1 - 1 강의 내용.왜 equals 재정의 했다면 왜 hascode 도 재정의 해야하는지 이해가 되지 않습니다.
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
컬렉션 프레임워크에서 get()
ArrayList<String> a = new ArrayList<>(); a.add("1"); a.add("2"); a.add("3"); int[] arr = {1, 2, 3}; arr[0] = 4; // 가능 a.get(0) = "one"; // 불가능위와 같이 배열도 ArrayList 객체도 모두 Reference type입니다. 배열에 대한 인덱스 접근은 r-value, l-value로 모두 기능할 수 있는데 ArrayList에 대한 get()은 r-value(값으로만 사용)로써만 기능하고 있습니다.get()의 반환형이 E로 제네릭(객체)인데 read only로 취급되는건가요...?get()으로 해당 위치를 참조하는게 아닌건가요?해당 메모리가 아닌 메모리의 값을 꺼내오는건가요? HashMap<String, String> h1 = new HashMap<>(); h1.put("1", "one"); h1.get("1") = "하나"; // 불가능다른 컬렉션 프레임워크지만 동일한 문제입니다.put(key, value)를 사용해 값을 저장하고 get(key)를 사용해 value를 가져올 때 get()으로 값을 바꿀 수는 없는 건가요? HashMap<String, ArrayList<String>> hashMap = new HashMap<>(); hashMap.get(date).add(Obj); // 가능이 경우에는 get()으로 참조한 메모리에 대해 다시 참조하여 메서드 사용이 가능했습니다. 이러한 동작이 get()으로 값을 반환하는 것이 아니라 객체 메모리에 접근한다고 생각했습니다. 위에 질문과 함께 조금 더 직관적인 질문 드립니다. public static void main(String[] args) { // Calendar calendar = new Calendar(); // calendar.run(); HashMap<String, String> h = new HashMap<>(); h.put("1", "before"); System.out.println(h.get("1").equals("1")); // 참조하여 메서드 동작 확인 h.get("1") = "after"; // 불가능 => 왜 안되는지? String str = "before"; System.out.println(str.equals("before")); // 참조하여 메서드 동작 확인 System.out.println(str); str = "after"; // 변경 가능 => 왜 되는지? System.out.println(str); }위 코드에서 각각 get()과 참조 변수 자체로 접근하였습니다.get()으로는 메서드까지는 접근이 가능하나 값 변경이 안되었고참조변수는 메서드 접근은 물론 값 변경(엄밀히 말하면 참조 변경)까지 되었습니다.이유가 궁금합니다. 감사합니다.
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
synchronized 과정
public synchronized String lendBook() throws InterruptedException{ while (bookList.size() == 0) { wait(); } String book = bookList.remove(0); System.out.println(Thread.currentThread() + " 학생이 책을 빌렸습니다."); return book; } 위 코드의 경우 synchronized method로 처리하였습니다.이 경우 shared resource(예제의 경우 this 객체)에 접근하는 3개의 thread에 대해서도 하나의 쓰레드가 차지한 경우 lock을 걸고 사용이 끝나면 다음 쓰레드가 사용하는 과정을 거치나요? (이러한 과정이 굉장히 빨라서 동시에 일어나는 것 처럼 보일 뿐)
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
awt 패키지 접근 불가 에러
이클립스 17버전 쓰고 있는데 여기서 java.awt 패키지가 not accessible하다는 에러가 뜹니다! 혹시 업그레이드를 하거나 추가로 확인해봐야 할 사항이 있을까요?
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
iterator 관련 질문입니다.
안녕하세요.iterator관련 해서 간단하게 질문 드립니다.hasNext() 와 next() 함수 모두 다음에 있는 요소에 관한 함수지 않습니까?코드를 작성하다가 문득 든 생각인데 이터레이터가 위치한 인덱스의 다음 인덱스를 뜻한다면 첫번째 원소는 어떻게 다룰 수 있는걸까?라는 의문이 들어서 질문글을 작성하게 되었습니다.1)여기서 다음의 뜻이 이터레이터가 위치한 인덱스를 말하는것인가요?아니면 이터레이터가 위치한 인덱스의 다음 인덱스를 말하는것인가요? 물론 전자여야 모든 뜻이 말이 되고 이해가 가기 때문에 전자겠지만자바 사이트에서 함수 정의를 보면 next라고 적혀 있어서 혹시나 해서 질문드립니다.전자가 맞다면 왜 하필 햇갈리게 next라고 했을까요? 2)그리고 hasNext가 이후에 요소가 있는지를 체크하는 함수라면 이터레이터가 arrayList의 마지막 인덱스에 위치할땐 false값을 리턴해서 마지막번째 원소를 다룰 수 없게 되지 않나요?혹시 arrayList도 마지막 원소에 c의 문자열 처럼 마지막에 null값이 항상 있기 때문에 마지막 원소까지 hasNext함수가 다룰 수 있는건지 궁금합니다. 다음이라는 단어 때문에 간단하던것들이 갑자기 모두 햇갈리네요.
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
수업 중간에 메소드 정의 보시는거 어떻게 하는지 알 수 있을까요?
안녕하세요수업 중간에 선생님께서 헬프를 연다?라고 하시면서메소드에 대고 단축키를 눌렀더니자바 사이트로 이동해서 관련 메소드에 대한 정보를 보시던데 어떤 키를 눌렀는지 궁금합니다.참고로 인텔리제이 쓰고 있습니다.구글에 검색해서 알고 싶은데 뭐라고 검색해야 나오는지 몰라서 그냥 여기다가 질문올려봅니다.
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
예외처리 질문드려요
package exceptions; import java.io.FileInputStream; import java.io.FileNotFoundException; public class ThrowsExceptionTest { public Class loadClass(String fileName, String className) throws FileNotFoundException, ClassNotFoundException { FileInputStream fis = new FileInputStream(fileName); Class c = Class.forName(className); } public static void main(String[] args) { ThrowsExceptionTest test = new ThrowsExceptionTest(); try { test.loadClass("a.txt", "java.lang.Sting"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } } }a.txt는 없고, 클래스도 찾을 수 없게 만들어진 상태인데요.제가 원하는건 콘솔창에서 FileNotFoundException, ClassNotFoundException 을 보는건데두개 조건을 충족함에도 FileNotFoundException만 출력되고 ClassNotFoundException 출력이 되지 않아요. 어떤 문제일까요?
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
멀티 쓰레드 동기화 관련 질문입니다!
ArrayList, HashMap은 동기화가 지원이 안되지만 최적화되어 성능에 유리하고,Vector,.HashTable은 동기화는 지원이 되지만 그만큼 느리다는 점이라는 내용이 제가 이해한 부분이 맞을까요??그리고 추가적인 질문으로는 동기화가 실행속도와 관련이 있다면,멀티 스레드 환경에서는 1. 쓰기 작업에서는 동기화를 적용하여 데이터 영역에 안전보장2. 읽기 작업은 동기화를 적용하지 않아 성능 최적화이런 방식으로 적용하면 될까요?
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
Generic 강의중 궁금한점
GenericPrinter<P> powderPrinter = new GenericPrinter<>();powderPrinter.setMaterial(new Powder());System.out.println(powderPrinter);이렇게 출력하면 "재료는 Powder 입니다" 가 출력되는데(Powder class 안에 public String toString(){return "재료는Powder 입니다"} )문장에 의해서...출력된다고 하는데 왜 그런지 모르겠습니다.System.out.println(powderPrinter); 어떻게 Powder class 안에 public String toString() 호출하는지...모르겠습니다
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
여러 가지 보조 스트림 클래스들
여러가지 보조 스트림 클래스들 강의에서 BufferedInputStream과 BufferedOutputStream 예제에 왜 while( ( i = bis.read()) != -1){ bos.write(i); }-1로 두는지 잘 이해가 되지 않습니다
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
교재내용
안녕하세요올려주신 사이트의 교재내용은 pdf파일로는 받아볼수없나요?
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
힙메모리
힙메모리는 선입선출이 아닌가요?선입선출이라면 부모 클래스가 밑에 먼저 쌓여야 맞는거죠?
- 해결됨자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
미로찾기 문제에 VISIT의 쓰임
이해하는데 시간이 좀 걸려서, 다른 분들도 고민하실까봐 글 남겨요 public static int VISIT = 2;미로찾기 문제에서 나오는 상수 VISIT 의 쓰임새는탐색한 모든 위치를 VISIT 주는 것이 아니라,정답의 길만 VISIT을 주고있어요 따라서 그 위쪽 로직에서newPosition.direction = direction +1;을 주는 겁니다. NOTVISIT 이여도 이미 갔던 path를 다시 안가기 위해서요
- 미해결자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 2(마스터편)
입출력 스트림 질문입니다.
안녕하세요.FileOutputStream 객체 생성시 질문이 있어서 글 남깁니다.FileOutputStream fos = new FileOutputStream("output.txt");이후 try() resource 구문을 쓰는 건 문제가 되지 않는데 처음에 변수 초기화를 시켜주지 않고FileOutputStream fos = null;fos = new FileOutputStream("output.txt"); 위와 같이 작성 후 try resource 구문을 작성하면 에러가 나네요. 해당 원인이 무엇인지 궁금합니다.감사합니다.