02-05 학습! 😎
I/O 와 Stream
데이터는 한쪽에서 주고 한쪽에서 받는 구조로 되어있음
입력과 출력의 끝단: 노드(Node)
두 노드를 연결하고 데이터를 전송할 수 있는 개념: 스트림(Stream)
스트림은 단방향으로만 통신이 가능하며 하나의 스트림으로 입력과 출력을 같이 처리할 수 없음
데이터 타입에 따라
XXStream - byte
XXer - char
절대경로 - home부터
상대경로 - 자기부터 -> 소스의 위치가 아닌
nextline - 개행문자 전까지
보조 스트림을 더 많이 사용함 중요!
Filter Stream, Processing Stream
byte 스트림을 char 스트림으로 변환
버퍼링을 통한 속도 향상
객체 전송
스트림 결정 과정
노드가 무엇인가? -> 타입은 문자열인가? 바이트인가? -> 방향이 무엇인가? -> 추가 기능이 필요한가?
키보드는 언제나 바이트!!
객체 직렬화
객체를 파일들에 저장하거나 네트워크로 전송하기 위해 연속적인 데이터로 변환하는 것
반대는 역 직렬화
마크업 인터페이스
implements Serializable
🔔 Heap에 올라가는 instance
🔔 c++은 structure 로 보낼 수 있음
🔔 이걸 흉내내려고 만든게 Serializable
🔔 직렬화 표시만 해주면 JVM이 해줌
🔔 표시만 해주면되는 걸 마크업인터페이스 라고 함
🔔 보내주면 껍질 준비됐니
🔔 id 가 있어서 이걸 맞춰주던가 해야한다.
🔔 오브젝트 그래프 바깥것을 직렬화 하려면 안에 것도 직렬화 시켜라
🔔 직렬화 된 객체 ArrayList 락 없는거 vector는 락이 있음 그래서 네트워크에는 vector 권장 멀티스레드 병렬 처리 때도 좋음
🔔 안에 있는 메서드도 implements Serializable 해줘야 한다는 의미
🔔 Stream 한방향, 섞이지 않음, packet(Byte의 묶음),
🔔 IO 특징 빨대 두개인데 오렌지 주스가 줄지 않음
🔔 3대 관점
🔔 1)input output (내기준)
🔔 2) Node냐 Filter냐
🔔 node는 수도꼭지 꼭 있어야 하고 하나
🔔 기본 단위 B - C - S - F => byte가 모여서 char
🔔 기본 장치 System, uml, 이것들이 Node 아니면 다 Filter
🔔 수도꼭지에 연결된 호스가 Filter - 기능 겁나 좋아짐
🔔 호스를 연결해주는게 Channing
🔔 3) ~stream ~er
시험치느라 고생했고 오늘은 숙제 없이 집가서 밥먹고 환경정비 합시당 😁