본문 바로가기

분류 전체보기89

2. InputStream&OutputStream&Socket 1. InputStream read(byte b[]) 혹은 read(byte b[], int off, int len) 메소드는 결국 추상메소드인 read() 를 호출한다. read() 메소드는 다음 바이트를 읽어들이며, 0~255 사이의 int 값을 리턴한다. 더 읽을 값이 없다면 -1을 리턴하도록 구현하면 된다. public abstract class InputStream implements Closeable { private static final int MAX_SKIP_BUFFER_SIZE = 2048; public abstract int read() throws IOException; public int read(byte b[]) throws IOException { return read(b, 0.. 2021. 3. 19.
1. Closeable & Flushable public abstract class InputStream implements Closeable {} public abstract class OutputStream implements Closeable, Flushable {} 두 클래스모두 Closeable 을 구현하고있다. Closeable은 무엇일까? 1. Closeable Object 의 관련된 모든 데이터스트림을 닫고, 자원을 release 하는 역할을 한다. public interface Closeable extends AutoCloseable {} ※ 데이터스트림 : 어느 한쪽에서 다른 쪽으로 데이터를 전송하기위한 통로 간단하게 FIFO 형태의 큐라고 생각하면 된다. 2. AutoCloseable try-with-resources block.. 2021. 3. 18.
10. Mono & Flux 1. Mono Mono로 감싸놓은것이 어떤의미인가? 아래의 코드는 중, mono 부분은 Subscriber가 subscribe 하는 순간에 실행됨 @GetMapping("/") Mono hello() { log.info("pos1"); Mono m = Mono.just("Hello WebFlux").log(); log.info("pos2"); return m; } 더보기 결과 출력 pos1 pos2 onSubscribe() request(unbounded) => backPressure onNext(Hello WebFlux) onComplete() Mono.just() 는 준비된 결과를 필요로 하므로 아래의 순서로 수행 @GetMapping("/") Mono hello() { log.info("pos1").. 2021. 3. 15.
9. Webflux 1. WebClient 비동기 nonblocking 방식으로 호출이 가능하다. Mono / Flux 를 리턴한다. Mono 는 Publisher 의 구현체이므로, Subscriber가 subscribe를 해야 실행된다. 해당 작업은 함수의 리턴타입이 Mono 인 경우, WebFlux가 subscribe를 호출해주므로, 우리는 Mono 타입으로 리턴하면 된다. 타입을 변경할 경우에는, map() / flatMap() 을 사용해서 변경해보자 @RestController public static class MyController { @Autowired MyService myService; WebClient client = WebClient.create(); @GetMapping("/rest") public M.. 2021. 3. 11.