'2016/02/05'에 해당되는 글 2건

  1. 2016.02.05 스트림(Stream)이란
  2. 2016.02.05 Auto Increment란

http://chaoxifer.tistory.com/82


저도 스트림에 대해 그다지 알고 있다는 생각은 들지 않지만 그래도 전혀 모르는 미로인을 위해 약간 적어 보려고 합니다.

프로그램을 실행 할때 키보드를 통해서 입력을 하고, 모니터를 통해서 출력을 하고 있죠? 우리는 별다른 무리 없이 간단하게 입출력을 합니다. 생각을 해보면 키보드에서 입력을 받고, 하드웨어적인 부분을 처리하여야 입력이 되고 화면으로 출력이 되겠죠? 예로 A라는 문자를 눌렀다고 가정해 봅시다. 그러면 키보드에서 신호가 나갈것이고, 그것을 컴퓨터에서 처리하여, 출력 장치인 모니터로 신호를 보내 결과적으로 화면에 A라는 문자가 찍힐것입니다.


그러나, 우리는 이렇게 하드웨어적인 세세한 부분까지 신경을 쓰지는 않습니다. 입출력을 도와주는 스트림( Stream )이란 녀석이 있기 때문이죠.


스트림을 사용하는 입출력 장치( Input/Output Device )는 많죠. 조금 전 예로든 키보드나 모니터 뿐만 아니라 파일, 프린터, 마우스, 네트워크, 메모리 등등 많은 입출력 장치에서 쓰입니다. 물론 스트림의 종류도 입출력 장치의 종류만큼 다양합니다. 파일에 데이터를 쓰고 싶다고 한다면 파일관련 스트림을 찾아서 목표지점으로 삼을 것입니다. 목표지점이란 입력 스트림의 경우 입력받을 데이터가 위치 하는 곳을 말하고, 출력 스트림의 경우 데이터가 저장될 곳을 말합니다.

입출력 장치에 데이터를 입력하거나 출력하는 처리를 하기 위해 스트림이 존재 한다고 했었습니다. 스트림은 방향에 따라 2가지로 나눌수 있는데, 사용자의 입장에서 데이터가 들어오면 입력 스트림( input Stream )이고, 데이터가 나가면 출력 스트림( Output Stream )이 됩니다.


입력 스트림은 데이터를 스트림으로 읽어 들입니다. 그리고 스트림에 존재하는 데이터를 하나하나 읽어들입니다. 예를 들어봅시다. 음료수가 있고, 거기에 빨대가 꽂혀 있네요. 빨대에 입을 갖다대고 쭉 빨아 당기면 음료수가 빨대에 모이게 되고, 계속 빨아 당기면 입안으로 음료수가 들어오게 됩니다.


출력 스트림은 출력될 데이터를 스트림으로 보냅니다. 그리고 스트림에 있는 데이터를 비워 버립니다. 비워진 데이터는 모두 목표지점에 저장이 되는 것 입니다. 위와 같은 예를 들자면, 입안에 들어 있던 음료수를 빨대로 보냅니다. 빨대로 가겠죠? 빨대에 있던 음료수를 불어 버립니다. (fflush) 음료수가 다시 음료수 통으로 들어 갑니다.


정리를 해보자면, 스트림은 데이터의 입출력 처리의 중간자 역할을 합니다. 데이터의 목표지점은 중요치 않습니다. 네트워크건 메모리건 프린터건 전혀 상관이 없습니다. 그저 해당되는 데이터를 스트림으로 읽어 들이거나 스트림으로 내보내면 끝인 것 입니다. 하드웨어적인 복잡한 작업은 스트림이 알아서 해주고 사용자는 편하게 사용만 하면 되는 것입니다

.



출처

http://www.ktword.co.kr/abbr_view.php?m_temp1=1311




1. 스트림(Stream) 이란? 일반적으로 데이터,패킷,비트 등의 일련의 연속성을 갖는 흐름을 의미 - 음성,영상,데이터 등의 작은 조각들이 하나의 줄기를 이루며 전송되는 데이터 열(列) . 호스트 상호간 또는 동일 호스트프로세스 상호간 통신에서 에 의한 메세지 전달방식을 이용한 가상 연결 통로를 의미하기도 함 2. 멀티미디어 스트리밍 기술전송 방식 구분 - 다운로드 방식 : 재생(Play) 전에 데이타를 완전히 다운로드 받는 방식 . (웹 서버)/HTTP/TCP/IP 상에서 동작 - 스트리밍 방식 : 데이타 수신과 동시에 재생. 사용자에게 동시성 제공. 실시간 전송기술 . (미디어 서버)/RTP/UDP/IP 상에서 동작 * [참고] . 비디오 파일 포멧 : 디지털 비디오 데이터를 저장,복원하기 위한 파일 포멧 .. 例) AVI, MKV, MP4, ASF, MOV, WMV 등 . 스트리밍 미디어 : 즉시 재생 가능 미디어 .. 전체 다운로드 없이도, 실시간 실행이 가능한 미디어를 말함 ㅇ 스트리밍 종류 - [RTP 스트림] 인터넷 스트리밍 프로토콜 . RTP/UDP/IP 패킷에 실릴 수 있도록 한 스트리밍 프로토콜 . 오디오,비디오 등의 정보를 담은 일련의 패킷화된 정보 앞에 RTP 헤더를 붙힌 스트림 - [MPEG 스트림] 주로, 디지털 방송용 스트리밍 프로토콜 . MPEG 다중화 방식에 의해 패킷 스트림화된 것 .. 인터넷 상에서는 MPEG 다중화 스트림이 RTP 스트림 위에 또한 실릴 수 있음 . MPEG 스트림 종류 .. PS(Program Stream), TS(Transport Stream), ES(Elementary Stream), PES(Packetized Elementary Stream) 등 ㅇ 스트리밍 관련 프로토콜 - 인터넷 실시간 미디어 흐름 및 제어 관련 프로토콜 . 물리적 정보의 빠른 흐름 및 제어 : RTP(빠른 수송) / RTSP(수송 제어) . 스트리밍 재생 제어 : RTSP(RTP 스트림 전반에 대한 제어) - 디지털 방송용 . 비디오 압축 전송프로토콜 : MPEG-2, H.264 등 . 음성 압축 전송용 프로토콜 : MPEG-2 오디오, AC-3 등 ㅇ 멀티미디어 스트림 재생 Player 例) - RealNetworks社의 RealPlayer, MS社의 Windows Media Player, Apple社의 QuickTime 등 3. 프로그래밍 언어상의 스트림C 언어에서 스트림 - 연속된 문자 또는 데이터 . 크게 텍스트(바이트) 스트림 및 바이너리(이진) 스트림으로 구분 - `ANSI C` 의 표준 파일 스트림 例 : stdin, stdout, stderr 등 ㅇ 스트림 사용 이유 - 물리 디스크상의 파일,장치들을 통일된 방식으로 다루기 위한 가상적인 개념 . 따라서, 스트림은 어디서 나왔는지 어디로 가는지 신경을 쓸 필요없이 자유롭게 어떤 장치 및 프로세스, 화일들과 연결될 수 있어 프로그래머에게 많은 편리성 줌

http://blog.lifeis.gift/101


입/출력은 소스를 제공하는 입력이나 목적지로의 출력을 의미합니다. 스트림은 디스크 파일이나, 장치, 다른 프로그램들, 그리고 메모리 배열들과 같은 많은 종류의 소스들과 목적지들을 표시 할 수 있습니다. 

스트림은 간단한 바이트나 primitive 데이터 타입, 글자들의 모음과 객체들과 같은 많은 종류의 다른 데이터를 지합니다. 어떤 스트림들은 단순히 데이터를 넘겨주는 역할만 합니다. 또 다른 스트림들은 유용한 방법들로 데이터를 변형하고 가공합니다.

내부적으로 어떻게 스트림들이 작동하는지는 중요하지 않습니다, 모든 스트림들은 같은 단순한 모델을 스트림을 사용하는 프로그램으로 표시합니다. 스트림은 데이터들의 연속입니다. 프로그램은 input stream을 사용하여 한개의 데이터를 동시에 소스로 부터 읽어들입니다.



결론적으로 스트림의 메모리가 어떻게 잡히는 지 라던가, 어떤 원리 라던가 같은 내부 구조에 대한 내용은 찾을 수 없었다. 좀 더 찾아봐야할 듯..







'프로그래밍 > 프로그래밍 공부' 카테고리의 다른 글

스레드(Thread)의 기본적인 특성  (0) 2016.02.15
프로세스(Process) , 스케쥴링(Scheduling)  (0) 2016.02.15
스트림(Stream)이란  (0) 2016.02.05
압축  (0) 2016.01.28
statement란?  (1) 2016.01.27
DAO / VO / DTO란?  (2) 2016.01.27
Posted by GENESIS8

댓글을 달아 주세요

http://hellogk.tistory.com/32


MySQL 시퀀스 생성 및 초기화하기

MySQL의 경우 시퀀스 생성이 간단합니다.

테이블 생성 시 auto_increment라는 속성을 시퀀스로 지정해줄 컬럼에 적용만 해주면 됩니다.

예를들어보도록 하겠습니다.


auto_increment를 적용한 임시 테이블생성

CREATE TABLE sequence_table(
   seq int auto_increment primary key,
   title varchar(20)
)

위와같이 임의의 테이블을 생성해보았습니다.



코드를 보시면 seq 컬럼에 auto_increment라는 속성이 지정되어있습니다.

INSERT 문을 통해서 title 컬럼만 데이터 추가를 해주면 알아서 seq 컬럼에는 1씩 자동증가하는 넘버가 부여가 됩니다.



한번 데이터를 삽입해보도록 하겠습니다.


INSERT 데이터

insert into sequence_table(title)
values('제목1');
insert into sequence_table(title)
values('제목2');


실행결과






title 컬럼만 insert함으로써 seq컬럼에 자동으로 1씩증가되어 등록이 되었습니다.

하지만 현재 상태에서 모든 데이터들을 삭제를 한다음에 다시 insert 쿼리를 시도 하게 된다면 

seq컬럼에 insert되는 데이터는 3부터 등록이 되게 됩니다.



하다가 실수로 시퀀스 값을 대입해서 넣어서 이전 자료와 격차가 생겨버렸다던가 할 때

다음의 방법으로 고친다.


http://www.cyberpr.co.kr/community/community.php?act=v&bid=database&seq=1052


MySQL 자동증가, auto increment 값 초기화 하기

 

※ 경고
높이뜬새의 모르는 사람이 없는 팁시리즈 입니다.
이 팁시리즈는 지면낭비라는 항의시에 즉각 중단됩니다.


테이블 생성시에 아래와 같이 auto_increment 라고 지정해주면 그 컬럼(필드)는 
자동 증가 값을 가지게 되는데요..

create table test_table (
idx int NOT NULL auto_increment,
name varchar(255),
... 블라 블라,
... 블라 블라,
... 블라 블라,  
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=euckr;


가끔은 이놈을 초기화 시켜야 할때가 있습니다. 초기화 시키기 위한 꼬라
지는 아래와 같습니다.

ALTER TABLE [테이블명] AUTO_INCREMENT=[시작할려는 순서]


예) test_table의 자동증가를 1부터 시작하게 초기화 
ALTER TABLE test_table AUTO_INCREMENT=1 

'프로그래밍 > MySQL' 카테고리의 다른 글

MySql DB 작성해보기  (1) 2016.03.13
MySQL 저장 프로시져 내에서 발생한 에러 처리 (Error Handling)  (0) 2016.02.23
MySql 설치하기  (0) 2016.02.21
Auto Increment란  (0) 2016.02.05
MySql 주석을 달자  (0) 2016.02.01
MY SQL 데이터 타입  (0) 2016.01.21
Posted by GENESIS8

댓글을 달아 주세요