[JAVA 8] 1. 동작을 파라미터로 전달하기 메소드 내부에서 실행되는 동작이 유동적인 경우가 있다. 이러한 경우 오버로딩을 사용하여 해결할 수 있지만, 전달되는 파라미터가 동일한 경우 그럴 수 없다. 때문에 메소드 내부에서 if 문을 통해 해당하는 동작에 따라 실행되도록 해야 한다. 이것에는 실제 수행되어야 하는 비즈니스 로직과 상관없는 코드들을 생성하고, 실행해야 한다는 문제점이 있다. 더욱이 가독성은 지극히 떨어지며 그 메소드는 더이상 한 가지 일만 수행하지 않게 된다. 코드를 살펴보자. private List filter(List list) { List result = new ArrayList(); for (Apple apple : list) { if (apple.getColor().equals..
#2. 빌더 패턴(Builder pattern)인스턴스를 생성할 때, 생성자(Constructor)만을 통해서 생성하는데는 어려움이 있다. 빌더 패턴은 이 문제를 기반으로 고안된 패턴 중 하나이다. 예를 들면, 생성자 인자로 너무 많은 인자가 넘겨지는 경우 어떠한 인자가 어떠한 값을 나타내는지 확인하기 힘들다. 또 어떠한 인스턴스의 경우에는 특정 인자만으로 생성해야 하는 경우가 발생한다. 이럴 경우, 특정 인자에 해당하는 값을 null로 전달해줘야 하는데, 이는 코드의 가독성 측면에서 매우 좋지 않다는 것을 직감적으로 알 수 있다.코드를 통해 확인해보자.public Student(long id, String name, String major, int age, String address) { this.id..
blocking, non-blocking and AsyncBlocking I/O Model일단 I/O작업은 User Level(application)에서 직접 수행할 수 없다. 실제 I/O작업은 Kernel Level(OS)에서 일어나는 과정이다. 따라서 유저 프로세스(applicatioin)는 커널(OS)에게 I/O 작업에 대한 요청을 해야 한다. I/O 작업을 처리하기 위해 User Level에 있던 Application이 시스템 함수를 호출한다.(system call) 이 때 context-switching 이 발생한다. 그리고 Kernel Level에서 해당 I/O 작업이 끝나고 데이터를 반환하게 되면 그 때가 되서야 애플리케이션 단의 스레드에 걸렸던 block이 풀린다. 애플리케이션 관점에서 보..
Blocking I/O, ServerSocket, Socket 그리고 Thread Pool성능에 영향을 미치는 결정적인 요인으로서의 I/O에는 크게 두 가지 I/O가 존재한다. 디스크에서 데이터를 읽어오는 I/O와 네트워크 통신에서 발생하는 I/O이다. 이 두 I/O 작업이 처리되는 속도는 CPU의 작업 처리 속도에 비해 매우 느리다. 그렇기 때문에 애플리케이션의 성능은 이 I/O 작업을 어떻게 처리하느냐에 달려있다고 할 수 있다. 그 중 네트워크 통신에 사용하는 Socket을 중심으로 I/O 방식을 알아보자. Socket소켓(Socket)의 정의를 다시 한 번 짚고 가자면, 소켓이란 데이터 송수신을 위한 네트워크 추상화 단위로 IP주소와 포트를 가지고 있으며 양방향 네트워크 통신이 가능한 객체다. 이 ..
자바 네트워크 프로그래밍 / O'REILLY기본적인 네트워크 프로그래밍을 학습하는데 적합한 책이다. 조금 더 심화된 네트워크 프로그래밍 내용을 학습하기에는 이 책은 적합하지 않다. 책의 구성은 다음과 같다. 1장 기본 네트워크 개념 네트워크 / 네트워크 계층 / IP, TCP 그리고 UDP / 인터넷 / 클라이언트/서버 모델 / 인터넷 표준 2장 스트림 출력 스트림 / 입력 스트림 / 필터 스트림 / reader와 writer 3장 스레드 스레드 실행하기 / 스레드에서 데이터 반환하기 / 동기화 / 데드락 / 스레드 스케줄링 / 스레드 풀과 익스큐터 4장 인터넷 주소 InetAddress 클래스 / Inet4Address 클래스와 Inet6Address 클래스 / NetworkInterface 클래스 /..
- Total
- 1,403,609
- Today
- 61
- Yesterday
- 685