Java I/O 활용
강의 : 김영한의 실전 자바 - 고급 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, 네트워크, 리플렉션 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() 와 같은 연산은 원자적으로 보이지만 그렇지 않다. 연산 ...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 10. CAS - 동기화와 원자적 연산 원자적 연산은 연산이 CPU에서 더 이상 나눌 수 없는 단위로 수행되는 것을 의미한다. 따라서 멀티스레드 상황에서 다른 스레드의 간섭 없이 안전하게 처리될 수 있다. 1씩 값을 증가하는 연산을 멀티스레드 환경에서 실행하면 여러 스레드가 동시...
강의 : 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 9. 생산자 소비자 문제 생산자가 생산자를 깨우고, 소비자가 소비자를 꺠우는 비효율 문제를 어떻게 해결할 수 있을까? 생산자 스레드는 데이터를 생성하고 스레드 대기 집합에서 대기 중인 소비자 스레드를 깨워야 한다. 반대로 소비자 스레드는 데이터를 소비하고 스레드 대기 집합에서 대...