School/Java Programming
Java Programming - Socket
TCP/IP 소개 두 시스템 간에 데이터가 손상없이 안전하게 전송되도록 하는 통신 프로토콜입니다. TCP에서 동작하는 응용프로그램의 사례로는 email, FTP, 웹(HTTP)등이 있습니다. 이는 연결형 통신이라는 특징이 있습니다. 한 번 연결 후 계속 데이터가 전송가능합니다. 마치 친구와 전화를 걸고 받을 때처럼 말이죠. 그리고 보낸 순서대로 받아 응용프로그램에게 전달합니다. 소켓 (socket) TCP/IP 네트워크를 이용하여 쉽게 통신 프로그램을 작성하도록 지원하는 기술입니다. 소켓ㅇ리란 두 응용프로그램 간의 양방향 통신 링크의 한쪽 끝 단입니다. 소켓끼리 데이터를 주고받을 수 있으며, 소켓은 특정 IP 포트 번호와 결합합니다. 소켓에는 서버 소켓과 클라이언트 소켓이 존재하게 됩니다. 서버 소켓과 ..
[ Java Programming ] IOStream && FileStream
자바의 입출력 스트림 입력 스트림 : 입력 장치로부터 자바 프로그램으로 데이터를 전달하는 객체 출력 스트림 : 자바 프로그램에서 출력 장치로 데이터를 보내는 객체 입출력 스트림의 기본 단위는 바이트이며, 단방향 스트림이고, 선입선출(FIFO)구조 입니다. 자바 프로그램 개발자는 직접 입력 장치에서 읽지 않고 입력 스트림을 통해 읽으며, 스크린 등 출력 장치에 직접 출력하지 않고 출력 스트림에 출력하면 됩니다. 또한 문자 스트림이란 문자만 입출력하는 스트림으로서 문자가 아닌 바이너리 데이터는 스트림에서 처리하지 못합니다. 문자가 아닌 데이터를 문자 스트림으로 출력하면 깨진 기호가 출력됩니다. JDK의 스트림 계층 구조 스트림 연결 이러한 스트림은 연결될 수 있다는 특징이 있습니다. 파일 입출력 /FileR..
Java Programming - Thread notify-wait()
다시 자바의 동기화 초리 방법에 대해 간단히 다시 짚고 넘어가도록 하겠습니다. 동기화 처리 방법 synchronized 메서드 자체에 동기화 처리 public synchronized void add() { ~ } 여러개의 Thread들이 공유객체의 메소드를 사용할 떄 메소드에 synchronized가 붙어있을 경우 먼저 호출한 메소드가 객체의 사용권(Monitoring Lock)을 얻습니다. 메소드 앞에 synchronized를 붙혀서 실행해 보면, 메소드 하나가 모두 실행된 후에 다음 메소드가 실행됩니다. 해당 모니터링 락은 메소드 실행이 종료되거나, wait()와 같은 메소드를 만나기 전까지 유지됩니다. 다른 쓰레드들은 모니터링 락을 놓을때까지 대기합니다. 동기화 블럭 synchornized(thi..
Java Programming - Thread basic
멀티 프로세싱 하나의 응용프로그램이 여러 개의 프로세스를 생성하고, 각 프로세스가 하나의 작업을 처리하는 기법입니다. 각 프로세스는 독립된 메모리 영역을 보유하고 실행합니다. 프로세스들 사이의 변수를 공유할 순 없습니다. 프로세스 사이의 문맥 교환에 따른 과도한 오버헤드와 시간 소모의 문제점이 있습니다. ( 브라우저의 중복 실행 ) 멀티 스레딩 하나의 응용프로그램이 여러 개의 스레드를 생성하고, 각 스레드가 하나의 작업을 처리하는 기법입니다. 모든 스레드가 응용프로그램 내의 자원과 메모리를 공유하므로 통신 오버헤드가 크지 않고, 문맥 교환이 빠릅니다. 현재 대부분의 운영체제가 멀티스레딩을 기본으로 하고 있습니다. 이와 같이 웹 서버시스템에서 멀티 스레드를 사용할 수 있습니다. 자바 스레드와 JVM JVM..