2017. 8. 24-25 - 자습, honux

2017. 8. 24. 카페 엔젤리너스에서 자습

체스게임 구현 - 4단계 (클래스 메소드와 필드)

2017. 8. 25. 호눅스 강의 - I/O 강의

프로그램은 secondary storage에 저장되고
프로그램은 실행되면 memory에 올라가서 실행되고
CPU에서 처리 된다.
모든 프로그램은 input/ output이 있다.(기본적은 input은 키보드, output은 모니터)

운영체제 32비트 4기가 64비트는 알아봐라

프로세스를 구성하는 것. 메모리 공간, 입력(스탠다드 인풋), 출력(스탠다드 아웃(표준출력), 표준에러 - 우선순위가 조금더 높다.), 열려있는 파일들
프로세스는 자기가 열은 파일 목록을 따로 가지고 있다.
열려있다는 작업중이다.

16기가 메모리에 제일 위쪽에 커널영역(Os)가 올라간다. 데몬(관리용 프로그램), 서버, 그외 남은 공간에 사용자가 실행한 프로그램 들이 올라간다. 메모리에 90%정도가 사용되면 프로그램들의 가상메모리에 메모리 swap 과정에 무리가와서 컴퓨터가 느려진다.
서버에서 스왑이 일어나는 상황이 발생하면 안된다.(서버에 부담이 가고있다는 신호!)

HDD의 원리

카세트 테이프와 동작원리는 같다.
하드디스크 내부의 동그란 원통형을 플래터라고한다.
하나의 원은 트랙이다.
원기둥의 반지름면을 실린더라고 부른다.

ACCESS TIME = seek + Rotation delay + transfer Time

SATA 프로토콜 - 하드디스크에 저장되는 통신방식
사타프로토콜로 명령어를 날리면 하드디스크에서 자동으로 읽는다.

CD는 용량이 중요하기때문에 속도가 느린대신 트랙에 데이터를 꽊꽊채웟다. 하드디스크는 속도를 위해서 원의 중심부와 외곽의 크기를 시간단위로 읽는다. 읽는속도를 위해서 외곽의 공간을 희생
LBA로 파일을 읽고쓸수있는데 최소 단위는 블록이다.(4KB, 8, 16) 디스크는 항상 블록단위로 액세스한다.
OS는 사용자에서 FILE을 제공해주는데 사용자는 파일을 열어서(open) read, write를 할 수 있고 일이 끝나면 close한다.
추상화를 한다. (블록 -> 파일)

파일을 실행하면 파일에 포인터라는 것이 생성되서 읽는것을 진행한다. 파일을 연다 플레이 읽기 쓰기 -> 파일포인터를 제어 해서 기능을 한다.
이것은 스트림을 대상으로 제어된다.
파일을 열면 포인터가 스트림의 처음을 가리켜 하나씩 읽는다. 쓰기 기능을 사용하면 2가지 모드가 있다. (덮어쓰기, 추가하기) 덮어쓰기는 포인터가 스트림을 첫부분에 둔다. 추가하기는 포인터가 스트림의 끝부분에 위치한다.

왜 파일을 사용할까?

  • 직접 하드웨어를 제어하기 어려워서
  • 보안상 안전하게 사용하기 위해서

##구글 검색을 할때 최우선으로 공식문서부터 확인하자.

마크다운 전용 프로그램

Marp - 마크다운으로 피피티 제작 Typora - 마크다운 에디터

프로그램을 만들기전에

  • 요구사항 정리하기
  • 정리한 요구사항을 토대로 UML(클래스다이어그람, 시퀸스다이어그램) 까지는 작성 해보기

PrintWriter

  • 프로그램에서는 Byte단위가 아닌 Charactor 단위로 문자를 저장한다.(케릭터는 얼마인지 몰라도 된다.)

FILE 객체

  • 파일을 직접 제어하기 위해 만든 클래스
  • 파일을 읽기 / 쓰기 용도로 열기 위해서 필요

표준 입력

파일번호 0 - stdin
= System.in

표준 출력

파일번호 1 - stdout
= System.out

표준 에러

파일번호 2 - stderr
= System.err

윤성우 시리즈가 기초 공부하기에 굉장히 좋다.(하지만 오류도 있다. 그러나 초보자 입장에서 신경쓸필요 없다.)

  • 윤성우의 C 프로그래밍
  • 윤성우의 TCP/IP 프로그래밍
  • 윤성우의 자료구조/알고리즘
  • 윤성우의 윈도우프로그래밍(운영체제의 전반을 이해하기 좋다.)

조금 더 복잡한 파일 IO

스트림

  • 시냇물
  • 파일 읽기 및 쓰기 추상화
  • 단방향
  • 읽기 스트림, 쓰기 스트림
  • 되돌리기, 빨리 가기 기능도 있음

실제로 스트림 기능은 굉장히 추상화되어있어서 많은 기능을 가지고있다.

  • FileInputStream이 제일 많이 사용된다.

메소드

int read() -> 1바이트를 읽는데 int형이 리턴타입인 이유는 실패했을때 -1을 리턴하기 위해서. 성공시 읽은 데이터를 리턴.

매개 인자에 final을 붙이는 것은 참조값을 못바꾸게 막는 것이다.

메소드 매개인자로 참조값을 받았을때 메소드 내부에서 새로 생성자를 생성하면 매소드 외부에서는 값이 바뀌지 않는다

터미널에서 유용한 프로그램

  • node
  • javarepl

람다의 스트림과 IO스트림은 완전 별개의 것

FileReader

메소드

이번주 회고

  • 주위의 소리에 반응하는 내속의 수많은 내가 있다.
  • 지금 나는 자바 백엔드 강의를 듣고있다.
  • 지금의 나는 자바스크립트나 취업보다 현재 듣고있는 자바 프로그래밍, 자바 백엔드에 집중 할 필요가 있다.
  • 한가지 언어를 2년이상 꾸준히 해서 깊이가 생기면 다른 언어를 배우는 것은 첫번째 언어보다 빨리 배울 수 있다.
  • 조급해 하지말자. 현재에 집중하고 지금 내가 무엇을 할지 1가지만 정해서 그 1가지를 마무리하자.

Comments