목록패스트캠퍼스 (34)
개발자는 기록이 답이다

Java AIO Java 1.7부터 NIO2를 지원 AsynchronousChannel을 지원 AsynchronousSocketChannel AsynchronousServerSocketChannel AsynchronousFileChannel 등 callback과 future 지원 내부적으로 Thread pool과 epoll, kqueue 등의 이벤트 알림 system call을 이용해서 IO를 비동기 적으로 처리 I/O가 준비되었을때, Future 혹은 callback으로 비동기적인 로직 처리 가능 read나 write처럼 IO관련된 요청이 들어오면 비동기 채널은 바로 반환한다. Future을 반환하거나 아무것도 반환하지 않고 즉시 제어권은 caller한테 돌려준다. caller는 본인의 일을 하면 되기..

1. Java NIO java New Input/Output (non-blocking x) Java 1.4에서 처음 도입 파일과 네트워크에 데이터를 읽고 쓸 수 있는 API 제공 buffer 기반 (객체) non-blocking 지원 논블로킹이 아니게도 할 수 있고, 논블로킹을 쓰지 못하는는 API도 있다. selector, channel 도입으로 높은 성능 보장 2. Java NIO vs Java IO Java NIO Java IO 데이터 흐름 양방향 단방향 종류 Channel InputStream, OutputStream 데이터의 단위 buffer byte 혹은 character blocking 여부 non-blocking지원 (blocking 한 API도 존재) blocking 만 가능 특이사항 S..

1. 함수 호출 모델(함수를 호출하는 관점) 동기 비동기 Blocking Java IO x Non-Blocking Java NIO (File IO는 non-blocking 불가능) Java AIO(Java NIO2) Java IO는 동기 블로킹만 지원한다. caller가 IO요청을 하는 동안 아무것도 하지못하고, 응답이 돌아왔을때 caller가 직접 처리하는 구조 Java NIO는 동기 논블로킹에 해당한다. 대신 File IO는 non-blocking이 불가능하고 동기블로킹으로 동작한다 2. I/O모델(내부적으로 어플리케이션이 커널을 호출하는 IO관점) 동기 비동기 Blocking Java IO x Non-Blocking Java NIO, Java AIO x 3. Java IO Java 1.0에서 처음 ..

함수형 인터페이스 함수형 프로그래밍을 지원하기 위해 java8부터 도입 1개의 추상 메서드를 갖고 있는 인터페이스 함수를 1급 객체로 사용할 수 있다 함수를 변수에 할당하거나 인자로 전달하고 반환값으로 사용 가능 Funtion, Consumer, Supplier, Runnable 등 @FunctionalInterface public interface Function { R apply(T t); } @FunctionalInterface public interface Consumer { void accpet(T t); } @FunctionalInterface public interface Supplier { T get(); } @FunctionalInterface public interface Runnabl..