전체 글

· Java
기존 Proxy를 읊어보자.저번에 사용했던 Internet 관련 자바 코드를 한번 보자.public interface IInternet { void connectTo(String host);}public class Internet implements IInternet { void connectTo(String host) { System.out.println("Connecting to " + host); }}public class BlockedInternet implements IInternet { private final Internet internet = new Internet(); void connectTo(String host) { if (host..
· Java
Proxy란?지금 당장 구글에 "Proxy"라고 검색을 한다면, Proxy Server에 대해서 볼 수 있을 것이다.이건 프로그램에서의 Proxy가 아닌 통신에서의 Proxy인데, 사실 비슷한 구면이 있다.Proxy Server는 클라이언트와 서버 사이에 존재하여, 요청들을 가로채어 다시 보내주는 구조인데, 프로그램에서의 Proxy 또한 메서드의 요청을 가로채어 다시 리턴해주는 구조를 띄고 있다.Proxy는 어떨 때 쓸까?아래와 같이 인터넷을 구현하기 위한 인터페이스와 고체 클래스가 있다고 해보자.public interface IInternet { void connectTo(String host);}public class Internet implements IInternet { void con..
· Java
Virtual Thread 도입 이전기존 자바의 Thread는 OS와 1:1로 매핑되는 플랫폼 스레드를 사용한다.따라서 자바에서 Thread를 생성하고 사용하는 데는 아래와 같은 단점들이 존재한다.Thread의 개수가 제한적이다.Thread의 생성과 유지 비용이 매우 비싸다.Thread가 IO작업을 하는 동안 사용되는 동안 다른 작업을 할 수 없다, (Blocking이 일어난다.)위와 같은 단점을 조금이나마 해결해 보고자 스레드를 효율적으로 사용할 수 있는 Thread Pool을 만들어서 사용하곤 했다. 예를 들어, Spring Boot 같은 경우에 하나의 요청을 처리하기 위해 하나의 Thread를 만들어 관리하는데, 많은 요청이 들어오면 뒤에 응답은 앞에 요청이 모두 끝난 후에야 처리될 수 있다. (물..
· Other
개요클라이언트가 실시간으로 서버로부터 데이터를 받아오는 경우는 매우 흔한 기법이다. 당장 우리가 사용하는 백준 온라인 저지 사이트를 생각해 보자.우리가 코드를 작성하고 이를 제출하면 실시간으로 한 페이지 안에서 채점 상황이 업데이트된다. 이는 우리가 일반적으로 웹 통신에 사용되는 HTTP로 구현할 수 있을까?HTTP로 구현해보자HTTP는 클라이언트(브라우저)가 서버에게 요청을 날린 후, 응답이 오면 자동적으로 연결이 끝난다.(물론, 연결을 지속시켜 Server-Sent-Events라는 기법을 사용하면 비슷한 기능을 구현할 수 있지만, 이는 추후에 알아보자.)따라서 연결이 끝난 후, 서버는 클라이언트에게 더 이상 어떠한 신호도 보낼 수 없다. Polling그렇다면 방법은 하나!주기적으로 클라이언트가 서버에..
Daehyeon
[Tech] Daehyeon