java 5

[java] 중첩 클래스

내부클래스(Inner class) 일반 클래스의 내부에 생성된다. Non-static nested class라고도 불린다. outer 클래스는 inner 클래스를 멤버변수처럼 사용할 수 있다. 사용하려면 new로 인스턴스 만들면 된다. inner 클래스는 outer에 있는 자원을 직접 사용할 수 있다. class Outer { 변수; 메소드; public class Inner{ } } // 객체 생성 시 Outer 객체1 = new Outer(); Outer.Inner 객체2 = 객체1.new Inner(); 정적 중첩클래스 (Static nested class) 내부 클래스와 비슷하나, static으로 선언한다. 밖에있는 클래스의 변수와 메소드 중, static이 붙은 것을 사용할 수 있다. 내부 클래..

java 2021.05.25

[코어자바9] 입출력 스트림, Reader와 Writer

🔸 입출력 입출력이란 컴퓨터 내부 또는 외부의 장치와 프로그램 간의 데이터를 주고 받는 것으로, java의 모든 입출력은 스트림을 통해 이루어진다. 자바 API에서 바이트를 읽어 올 소스를 입력 스트림(input stream)이라고 한다. 바이트는 파일, 네트워크 커넥션, 메모리에 있는 배열에서 읽어올 수 있다. 🔸 스트림 얻기 파일에서 스트림을 얻는 가장 쉬운 방법은 아래와 같다. Files.newInputStream(path) Files.newOutputStream(path) URL이 있을 떄는 URL 클래스의 openStream 메서드로 얻는 입력 스트림에서 해당 URL의 콘텐츠를 읽을 수 있다. URL url = new URL(""); InputStream in = url.openStream();..

java 2021.05.24

[코어자바9] 동기와 비동기, 블로킹과 논-블로킹

🔸 블로킹 & 논-블로킹 CPU는 명령어를 읽어들이며 수행한다. CPU는 명령을 실행하는 동안 다른 일을 못한다... 명령어가 많아지거나 loop가 있으면 CPU가 점유하는 시간이 길어진다. CPU가 실질적으로 액션을 취하지 않고, 감지만 하고 있어도 CPU가 점유한다고 말한다. 이를 CPU 타임이라고 말할 수 있다. 이 CPU 타임이 길어지는 것을 블로킹이라고 한다. 사실 블로킹과 논-블로킹은 상대적인 개념이다. (사실상 논블로킹이라는 것은 없다‼️) 논-블로킹은 일을 덜 시키는 애를 기준으로 말하면 된다. 예를 들면, mainUI thread를 논-블로킹을 하는게 좋겠다. 많은 일을 시키면 부하가 오기 때문에, 클라이언트 측면에서 부하오는 모습을 확인할 수가 있다. 이를 피하기 위해서는 backgro..

java 2021.05.24