728x90
20221006(목)
- 목차
- 보조 스트림
- 네트워크 기초
< 보조 스트림 >
- 보조 스트림
다른 스트림과 연결되어 여러 가지 편리한 기능을 제공해주는 스트림
문자 변환, 입출력 성능 향상, 기본 데이터 타입 입출력, 객체 입출력 등의 기능을 제공 - 보조 스트림 생성
보조스트림 변수 = new 보조스트림(연결스트림) - 보조 스트림 체인 : 다른 보조 스트림과 연결되어 역할 수행
(1) 문자 변환 보조 스트림 | |
InputStreamReader | 소스 스트림이 바이트 기반 스트림이지만 데이터가 문자일 경우 사용 Reader와 Writer는 문자 단위로 입출력 - 바이트 기반 스트림보다 편리 문자셋의 종류를 지정할 수 있기 때문에 다양한 문자 입출력 가능 |
OutputStreamWriter | |
(2) 성능 향상 보조 스트림 | |
입출력 성능에 영향을 미치는 입출력 소스 - 하드 디스크 , 느린 네트워크 버퍼를 이용한 해결 - 입출력 소스와 직접 작업하지 않고 버퍼(buffer)와 작업 실행 ➡ 성능 향상 - 프로그램은 쓰기 속도 향상 - 버퍼 차게 되면 데이터를 한꺼번에 하드 디스크로 보내 출력 횟수를 줄여줌 |
|
BufferedInputStream과 BufferedReader | 입력 소스 ➡ 미리 버퍼에 데이터를 채워둠 ➡ 고속 읽기 |
BufferedOutputStream과 BufferedWriter | 고속 전송 ➡ 한번에 버퍼 내용 모두를 전송 ➡ 목적지 |
(3) 기본 타입 입출력 보조 스트림 | 입출력 순서를 맞추어 사용 |
(4) 프린터 보조 스트림 | println()은 데이터 끝에 개행문자 추가, printf는 format string 출력 printf() 메소드 사용 방법 %d : 정수대입 / %f : 실수대입 / 1$ : 삽입 시 변수 하나로 대입 가능 |
(5) 객체 입출력 보조 스트림 | |
ObjectInputStream, ObjectOutputStream | 데이타의 특징에 맞게 관리하는 방법, 저장소가 다를 수 밖에 없다. ➡ 저장소와 기법이 각각 설계가 되어있다. ex) 농구공 가방에 탁구공 보관? 좀 힘들지.. 한 케이스에 모든 공을 때려넣으면,,구조가 엉망이 되지 않을까? |
직렬화가 가능한 클래스(Serializable) | < 객체 직렬화 > 객체는 문자가 아니므로 바이트 기반 스트림으로 데이터 변경 필요 |
serialVersionUID 필드 | serialVersionUID 필드 - 같은 클래스임을 알려주는 식별자 역할 Serializable 인터페이스 구현 컴파일 시 자동적으로 serialVersionUID 정적 필드 추가 재컴파일하면 serialVersionUID의 값 변경 * 불가피한 수정 있을 경우 |
writeObject()와 readObject() 메소드 | writeObject(ObjectOutputStream out) - 직렬화 직전 자동 호출 - 추가 직렬화할 내용 작성 가능 readObject(ObjectInputStream in) - 역직렬화 직전 자동 호출 - 추가 역직렬화 내용 작성 가능 |
< 네트워크 기초 > - 챗봇 개념 알려면 알고 있기!
(1) 서버와 클라이언트
- 서버 : 서비스를 제공하는 프로그램(24H) : 항상 미리 준비한다.
(웹 서버, FTP 서버, DBMS, 메신저 서버) - 클라이언트 : 서비스를 받는 프로그램
(웹 브라우저, FTP 클라이언트, 메신저) - 클라이언트와 서버 간의 작동 순서
클라이언트 ➡ 서버에 연결 요청하면 서버에서 연결(TCP 포트 정보가 있어야 함) 수락함
클라이언트 ➡ 서버에 처리 요청하면 서버에서 처리한 후
클라이언트에 응답(처리결과) 보냄
(2) IP 주소와 포트(port)
- IP(Internet Protocol) 주소 : 마치 컴퓨터의 주민번호와 같음
네트워크상에서 컴퓨터를 식별하는 번호
XXX. ➡ 옥텟 하나 - 포트(port)
같은 컴퓨터 내에서 프로그램을 식별하는 번호.
클라이언트는 서버 연결 요청 시 IP주소와 Port 같이 제공. 0~65535 범위의 값을 가짐
포트 관리하는 프로그램 : 방화벽
더보기
ex) 회사 : 단말기 / 대표전화 : ip / 각 부서(응용프로그램) : TCP 포트
하나의 단말기 안에선 자기 자신을 식별하기 위해 IP 번호를 부여한다.
네트워크 망에서 다른 단말기와 통신하기 위해 설정된 것 IP
단말기의 동작하는 운영 프로그램들을 컴퓨터 내부에서 번호를 부여함
응용프로그램을 식별하기 위한 번호를 포트라고 한다.
그 내부에서 동작중인 하나하나의 응용프로그램을 관리하기 위해 부여된 번호 : TCP 포트
응용프로그램에 번호를 부여했다~라고 가볍게 보면 된다.
➡ IP와 PORT라는 것이 쌍으로 존재해야 통신이 이루어진다!
(3) TCP(Transmission Control Protocol)
- 프로토콜 (=규칙)
ex) 한국어 패치가 되어있으니 대화 가능. 나라마다 언어가 다른 것처럼 규칙들이 굉장히 많음.
컴퓨터와 컴퓨터가 데이터를 통신하기 위해 일련의 약속된 규칙.
프로토콜은 종류가 많다. 다양한 형태의 프로토콜이 존재한다. 그중 tcp가 잇다.
- 소켓(Socket)
소켓을 갖고 있어야 함
ex) 종이컵 전화기 할 때 그 실과 종이컵 연결 부분 작업을 말함 있어야지 시작함.
➡ 쌍방 간의 통신을 하려면 소켓이 있어야 한다❗
728x90
'🏫 Open API_JAVA' 카테고리의 다른 글
[56일차] SQL, PS/SQL / 테이블스페이스 생성 (0) | 2022.10.16 |
---|---|
[55일차] 데이터 베이스 설정 및 샘플 스키마 설치 (0) | 2022.10.14 |
[51일차] InputStream / OutputStream / Reader / Writer / 콘솔 입출력 (0) | 2022.10.07 |
[50일차] andThen()과 compose() 디폴트 메소드 / 메소드 참조 / 입력 스트림과 출력 스트림 (0) | 2022.10.05 |
[49일차] 람다식 기본 문법 / 타겟 타입과 함수적 인터페이스 / 표준 API의 함수적 인터페이스 (0) | 2022.10.03 |