Dorothy_YANG
With Dorothy
Dorothy_YANG
전체 방문자
오늘
어제
  • 분류 전체보기 (279)
    • Hi, I'm Dorothy 🕵️‍♂️ (21)
      • Slowly but Surely (18)
      • IT certifications (3)
    • 🤯TIL (80)
      • HTML & CSS (2)
      • Javascript & jQuery (13)
      • React (13)
      • C언어 (1)
      • JAVA (22)
      • Python (2)
      • Oracle SQL (10)
      • My SQL (5)
      • Spring (12)
    • 💻Programmers (17)
    • 🏫 Open API_JAVA (101)
    • 🌎 Project (10)
      • Shopping (10)
    • 💥 Error (24)
    • ⚙ Setting (23)

블로그 메뉴

  • 홈
  • 방명록

공지사항

인기 글

태그

  • 시작일종료일
  • googlecolaboratory
  • 콜라보레이토리
  • 이것이자바다
  • 코딩앙마
  • SQLD합격
  • AllArgsConstructor
  • Javascript
  • 오류해결
  • 파이썬온라인
  • colaboratory
  • 기간쿼리
  • 창초기화
  • sql기간
  • 기간설정
  • 서버등록
  • 백준
  • oracle
  • java
  • 비쥬얼스튜디오코드
  • SQLD합격후기
  • HTML
  • Database
  • SQL
  • spring
  • 독학후기
  • Eclipse
  • 노마드코더
  • 연습문제
  • CSS

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Dorothy_YANG

With Dorothy

🏫 Open API_JAVA

[52일차] 보조 스트림 / 네트워크 기초

2022. 10. 8. 16:00
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
    '🏫 Open API_JAVA' 카테고리의 다른 글
    • [56일차] SQL, PS/SQL / 테이블스페이스 생성
    • [55일차] 데이터 베이스 설정 및 샘플 스키마 설치
    • [51일차] InputStream / OutputStream / Reader / Writer / 콘솔 입출력
    • [50일차] andThen()과 compose() 디폴트 메소드 / 메소드 참조 / 입력 스트림과 출력 스트림
    Dorothy_YANG
    Dorothy_YANG
    Slowly but Surely, 비전공 문과생의 개발공부

    티스토리툴바