전체 글 37

[Java] 소켓

소켓(socket)이란 프로세스가의 통신에 사용되는 양쪽 끝단(endpoint)를 의미한다. 프로세스간의 통신을 위해서는 그 무언가가 필요한데, 이것이 소켓이다.항목TCPUDP연결방식연결 기반(connection-oriented)- 연결 후 통신(전화기)- 1:1 통신방식비연결 기반(connectionless-oriented)- 연결없이 통신(소포)- 1:1, 1:n, n:n 통신방식특징데이터의 경계를 구분안함(byte-stream)신뢰성 있는 데이터 전송- 데이터의 전송순서가 보장됨- 데이터의 수신여부를 확인함(데이터 손실 시 재전송)- 패킷을 관리할 필요가 없음UDP보다 전송속도가 느림데이터의 경계를 구분함(datagram)신뢰성 없는 데이터 전송- 데이터의 전송순서가 바뀔 수 있음- 데이터의 수신여..

[Java] 입출력/스트림

참고: Java의 정석 3rd Edition - 남궁 성입출력(I/O)란 Input과 Output의 약자로 입력과 출력을 뜻한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 말한다.바이트기반 스트림: 입출력 단위 1byte 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 잇는 무언가가 필요한데 이것을 스트림이라고 부른다. 따라서 스트림이란 데이터를 운반하는데 사용되는 연결통로이다. 스트림은 단방향 통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 동시에 수행하려면 입력을 위한 입력스트림과 출력을 위한 출력스트림, 모두 2개의 스트림이 필요하다.먼저 보낸 데이터를 먼저 ..

[Java] Thread(쓰레드)

참고: Java의 정석 3rd Edition - 남궁 성1. 프로세스와 스레드프로세스(process)1) '실행 중인 프로그램(program)'이다. 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아 프로세스가 된다.2) 프로그램을 수행하는 데 필요한 데이터와 메모리 등의 자원 그리고 스레드로 구성되어 있다.3) 작업 공간(공장)스레드1) 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것이다.2) 모든 프로세스에는 최소한 하나 이상의 스레드가 존재하며, 둘 이상의 스레드를 가진 프로세스를 '멀티스레드 프로세스(multi-threaded process)'라고 한다.3) 싱글스레드 = 자원 + 스레드, 멀티쓰레드 = 자원 + 쓰레드 + 쓰레드 +...4) 일꾼멀티쓰레딩1) 하나의 프로..