은 무슨 뜻인가요? 그 특징은 무엇입니까?
C ++ 및 C # 모두이 단어 stream를 사용하여 많은 클래스의 이름을 지정합니다.
- C ++ :
iostream,istream,ostream,stringstream,ostream_iterator,istream_iterator... - C 번호 :
Stream,FileStream,MemoryStream,BufferedStream...
그래서 궁금해졌습니다.은 무슨 stream뜻인가요? 의 특징은 무엇입니까 stream? 이 용어를 언제 수업 이름에 사용할 수 있습니까? 파일 I / O 클래스로만 제한됩니까?
흥미롭게도 C 는 내가 아는 한 어디에도이 단어를 사용하지 않습니다.
많은 데이터 구조 (목록, 컬렉션 등)는 컨테이너 역할을하며 개체 집합을 보유합니다. 그러나 스트림은 아닙니다. 목록이 버킷이면 스트림은 호스입니다. 당신은 스트림에 스트림, 또는 푸시 데이터에서 데이터를 뽑을 수 - 일반적으로하지만, 단 한번 만에 한 방향 (물론 예외가 있습니다). 예를 들어, 네트워크를 통한 TCP 데이터는 스트림입니다. 데이터 청크를 전송 (또는 수신) 할 수 있지만 다른 컴퓨터와 연결해서 만, 일반적으로 한 번만-인터넷을 되 감을 수 없습니다.
스트림은 또한 스트림을 통과하는 데이터를 조작 할 수 있습니다. 압축 스트림, 암호화 스트림 등. 그러나 다시 말하지만, 여기서 기본 은유는 데이터 호스입니다. 파일은 일반적으로 스트림으로 (일부 수준에서) 액세스됩니다. 순차 데이터 블록에 액세스 할 수 있습니다. 물론 대부분의 파일 시스템은 랜덤 액세스도 제공하므로 스트림은 Seek, Position, Length 등을 제공하지만 모든 구현이이를 지원하는 것은 아닙니다. 일부 스트림을 찾거나 열린 소켓의 길이를 얻는 것은 의미가 없습니다.
몇 가지 다른 의미가 있습니다. # 1은 아마 의미하는 바이지만 # 2도 살펴보고 싶을 것입니다.
언급 한 것과 같은 라이브러리에서 "스트림"은 임의 액세스 일 수도 있고 아닐 수도있는 "이진 데이터"에 대한 추상화 일뿐입니다 (예 : 스트림을 작성하는 경우와 같이 지속적으로 생성되는 데이터와 반대). 생성 된 임의의 데이터) 또는 어디에나 저장 될 수 있습니다 (RAM, 하드 디스크, 네트워크, 사용자의 두뇌 등). 세부 사항을 피하고 스트림의 특정 소스에 관심이없는 일반 코드를 작성할 수 있기 때문에 유용합니다.
보다 일반적인 컴퓨터 과학 개념으로서 "스트림"은 때때로 "유한 또는 무한한 양의 데이터"로 (느슨하게) 생각됩니다. 이 개념은 예제 없이는 설명하기가 조금 어렵지만, 함수형 프로그래밍 (Scheme과 같은)에서는 객체의 히스토리를 변경의 "스트림"으로 처리하여 상태가있는 객체를 상태 비 저장 객체로 바꿀 수 있습니다. (개념은 객체의 상태가 시간이 지남에 따라 변경 될 수 있지만 객체의 전체 수명을 변경의 "스트림"으로 취급하면 스트림 전체가 절대 변경되지 않고 함수 프로그래밍을 수행 할 수 있다는 것입니다.)
에서 I / O 스트림 (자바하지만, 의미는 C ++ / C #에서 동일)
I / O 스트림은 입력 소스 또는 출력 대상을 나타냅니다. 스트림은 디스크 파일, 장치, 기타 프로그램 및 메모리 배열을 포함하여 다양한 종류의 소스 및 대상을 나타낼 수 있습니다.
스트림은 단순 바이트, 기본 데이터 유형, 지역화 된 문자 및 객체를 포함하여 다양한 종류의 데이터를 지원합니다. 일부 스트림은 단순히 데이터를 전달합니다. 다른 사람들은 유용한 방법으로 데이터를 조작하고 변환합니다.
내부적으로 작동하는 방식에 관계없이 모든 스트림은이를 사용하는 프로그램에 동일한 단순 모델을 제공합니다. 스트림은 일련의 데이터입니다. 프로그램은 입력 스트림을 사용하여 한 번에 한 항목 씩 소스에서 데이터를 읽습니다.
C #에서 언급 한 스트림은 추상 기본 클래스 Stream 에서 파생됩니다 . 이 기본 클래스의 각 구현에는 특정 목적이 있습니다.
예를 들어 FileStream 은 파일에 대한 읽기 / 쓰기 작업을 지원하는 반면 MemoryStream 은 메모리 내 스트림 개체에서 작동합니다. FileStream및 MemoryStream클래스 와 달리 BufferedStream 클래스는 사용자가 I / O를 버퍼링 할 수 있도록합니다.
위의 클래스 외에도 클래스를 구현하는 몇 가지 다른 클래스가 Stream있습니다. 전체 목록 은 수업 에 대한 MSDN 문서 를 참조하십시오 Stream.
공식적인 용어와 설명은 제쳐두고, 스트림 이라는 단어 자체는 "실제" 스트림 에서 가져 왔습니다. 물 대신 데이터가 한 곳에서 다른 곳으로 전송됩니다.
질문했지만 여전히 답변되지 않은 질문과 관련하여 스트림을 포함하는 이름으로 자신의 클래스 이름을 지정할 수 있지만 일종의 새로운 스트림을 구현하는 경우에만 올바른 의미를 갖습니다.
에 정의 된 C 함수 <stdio.h>는 스트림 에서 작동합니다.
제 7.19.2 스트림 에서 C99은 그들이 "문자의 정렬 순서"그렇다, 그들이하지 무엇을하지만, 작동 방법에 대해 설명합니다.
이론적 근거 로 시작하는 해당 부분에서 자세히 컨텍스트를 제공 :
C는 자신이 태어난 UNIX 환경에서 텍스트 스트림 개념을 물려 받았습니다.
그래서 그것이 개념의 유래입니다.
참고 URL : https://stackoverflow.com/questions/5144794/what-does-stream-mean-what-are-its-characteristics
'Program Club' 카테고리의 다른 글
| Django : 도우미 함수를 어디에 넣을까요? (0) | 2020.12.01 |
|---|---|
| JS로 CSS 호버 트리거 (0) | 2020.12.01 |
| 다른 사람의 저장소를 GitHub의 Git 하위 모듈로 사용 (0) | 2020.12.01 |
| CMakeLists.txt에서 LDFLAGS를 설정하는 방법은 무엇입니까? (0) | 2020.12.01 |
| 파이썬 객체를 강제로 삭제하는 방법은 무엇입니까? (0) | 2020.12.01 |