Java 네트워크 프로그램
강의 : 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션 6. 네트워크 프로그램 클라이언트가 문자를 서버에 전달하면 서버는 클라이언트의 요청에 “ World”라는 단어를 더해서 응답하는 채팅 프로그램을 만든다. 서버는 한 번에 여러 클라이언트와 연결할 수 있고 클라이언트와 서버가 종료될 때 자원이 잘 정리될 수 있도록 개발한다. ...
강의 : 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션 6. 네트워크 프로그램 클라이언트가 문자를 서버에 전달하면 서버는 클라이언트의 요청에 “ World”라는 단어를 더해서 응답하는 채팅 프로그램을 만든다. 서버는 한 번에 여러 클라이언트와 연결할 수 있고 클라이언트와 서버가 종료될 때 자원이 잘 정리될 수 있도록 개발한다. ...
강의 : 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션 5. File, Files 자바에서 파일 또는 디렉토리를 다룰 때는 File, Files, Path 클래스를 사용한다. 자바 1.0에서 File 클래스가 등장하고 자바 1.7에서 File 클래스를 대체할 Files와 Path가 등장했다. Files는 성능과 편의성이 모두 ...
강의 : 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션 4. I/O 활용 I/O를 사용해서 회원 데이터를 관리하는 예제 4-1. 요구사항 1.회원 등록 | 2.회원 목록 조회 | 3.종료 선택: 1 ID 입력: id1 Name 입력: name1 Age 입력: 20 회원이 성공적으로 등록되었습니다. 1.회원 등록 | 2.회원 목...
강의 : 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션 3. I/O 기본 2 3-1. 문자 다루기1 스트림의 모든 데이터는 byte 단위를 사용한다. byte가 아닌 문자를 스트림에 직접 전달할 수 없기 때문에, byte로 변환한 다음에 전달해야 한다. String을 byte로 변환할 때는 String.getBytes(C...
강의 : 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션 2. I/O 기본 1 자바 프로세스가 메모리에 가진 데이터를 hello.dat 라는 디스크에 있는 파일에 저장하려면, 출력 스트림을 사용해 hello.dat파일로 메모리에 있는 데이터를 보내고 반대로 프로세스 외부에 있는 데이터를 자바 프로세스 안으로 가져오려면 입력 스...
강의 : 김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션 1.문자 인코딩 1-1. 컴퓨터와 데이터 개발자가 개발하며 다루는 데이터는 주로 “ABC”와 같은 문자 이지만, 컴퓨터는 데이터를 “010101”로 되어 있는 바이너리로 저장한다. 바이너리 데이터로 문자를 표현하기 위해 “A:65, B:66, a:97…” 같은 문자 집합을 ...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 14. 스레드 풀과 Executor 프레임워크3 14-1. Executor 전략 - 고정 풀 전략 Executor 스레드 풀 관리 - 다양한 전략 ThreadPoolExecutor를 사용하면 스레드 풀에 사용되는 숫자와 블로킹 큐 등 다양한 속성을 조절할 수 있다. coreP...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 13. 스레드 풀과 Executor 프레임워크2 13-1. ExecutorService 우아한 종료 - 소개 고객의 주문을 처리하는 서버를 운영 중이라고 가정한다. 만약 서버 기능을 업데이트하기 위해 서버를 재시작해야 한다면, 서버가 고객의 주문을 처리하고 있는 도중에 갑자기 ...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 12. 스레드 풀과 Executor 프레임워크1 12-1. 스레드를 직접 사용할 때의 문제점 스레드를 직접 생성해서 사용하면 다음과 같은 3가지 문제가 있다. 스레드 생성 시간으로 인한 성능 문제 스레드 관리 문제 Runnable 인터페이스의 불편함 12-1-1. 스...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 11. 동시성 컬렉션 우리가 일반적으로 자주 사용하는 ArrayList, LinkedList, HashSet, HashMap 등 많은 자료 구조 대부분은 스레드 세이프 하지 않다. 그리고 자료 구조들이 제공하는 add() 와 같은 연산은 원자적으로 보이지만 그렇지 않다. 연산 ...