I/O

    🔋 버퍼(buffer)의 필요성을 느껴보자

    버퍼는 왜 사용하는 것인가? 버퍼(buffer) = 데이터 임시 저장 공간 📌 데이터 읽기 데이터 읽기 시간 = average seek time + data transfer time ex) 1000 바이트를 읽는다고 가정한다면? 1바이트씩 1000번 읽기 1000바이트씩 1번 읽기 1바이트를 여러 번 읽을 경우 매번 바이트의 위치를 찾아야 하기 때문에 평균 탐색시간이 누적되어 한 번에 1000 바이트를 읽는 것 보다 시간이 오래 걸린다. Q. 그러면 한 번에 다 읽으면 되지 않나요? 메모리를 읽을 때 왕창 읽지 왜 깨작깨작 여러번에 걸쳐 읽냐? 하필 8192바이트씩말이지.. 다쓰면 또 다시 읽고 A. PC 처럼 소수의 프로그램이 동시에 실행될 때는 상관없지만, 서버처럼 데이터를 읽는 코드가 동시에 수천개..

    📁 자바에서는 어떻게 파일 입출력을 할까?

    📌 Streaming API 유래와 파일 I/O 과거에는 장비를 사용할 때 각각의 장비에 맞는 I/O API를 사용해야 했다. 각 디바이스에 따라 데이터 I/O를 할 수 있는 함수가 달랐다. 그래서 개발자는 각 장비별로 데이터 I/O의 사용법을 학습하고 물어봐야하는 문제가 있었다. 이를 해결하기 위해서 나온것이 있었으니.. 장비제어를 하기위해 Device Driver(장비 드라이브 : H/W 제조사에서 제공 / 자기네 장비 제어할 때 호출할 function이 들어있는 app 제공 (.dll)) 설치해서 제어한다. [drive(이끌다) - 장비 진단 통제 제어하기 위함] 덕분에 개발자는 장비에 상관없이 일관된 방법으로 데이터 I/O를 할 수 있게 되었다. 📌 Binary file vs Text file 이..