
개념 자바 시스템 내부에서 사용되는 객체 또는 데이터를 외부의 자바 시스템에서도 사용할 수 있도록 Byte 형태로 데이터를 변환하는 기술과 Byte로 변환된 데이터를 다시 객체로 변환하는 기술(역직렬화)를 아울러서 이야기 합니다. 직렬화 하여 파일에 저장하기 직렬화 할 객체 Person public class Person implements Serializable{ String id; String pw; String name; transient String ignore = "ignore"; public Person(){ this("none","1234","Gosuljo"); } public Person(String id, String password, String name){ this.id = id; t..
개념 실제 FilterStream에서 할 수 있는일은 없으며, FilterStream을 상속받고 있는 BufferedStream 가 있습니다. 하위 클래스 BufferedInputStream는 input stream을 도와주는 역할을 합니다. 문제점 input stream으로 데이터를 읽어오게 되면 기본단위인 byte로 데이터를 읽어옵니다. 데이터를 읽어오는 대상이 무엇이 되었든 input을 하는 과정은 큰 오버헤드를 가져옵니다. BufferedStream을 사용해서 한번 읽어들일 때 많은양의 데이터를 가져오면 오버헤드를 줄일 수 있습니다. Buffer에 가득 차게되면 한꺼번에 불러오는 스트림 = BufferedInputStream. 그 반대역할을 하는것 = BufferedOutputStream. Buf..

개념 Pipe는 사전적으로 연결 이라는 의미가 있습니다. 이름에서 알 수 있듯이 파이프와 파이프 사이에 연결을해서 사용하는것이 PipeIOStream의 특징입니다. connect 메소드를 이용하면 서로다른 stream class 로 데이터 전달을 할 수 있습니다. 표준스트림은 노드스트림 이라고도 하며, 데이터와 직접 맞닿는 스트림을 노드스트림 이라고합니다. Pipe는 노드스트림과 직접 연결해서 사용 할 수 있습니다. 예제 import java.io.*; public class Main3 { public static void main(String[] args) { PipedInputStream pin = new PipedInputStream(); PipedOutputStream po = new PipedO..
개념 ByteArrayOutputStream 은 메모리에 존재하는 byte 배열에 대해서 읽고 쓰기위한 클래스입니다. 특징 내부적으로 저장공간이 있어 write 메소드를 이용해서 출력하면 내부 공간에 쌓이게 됩니다. toByteArray()메소드로 새로운 배열에 Byte값을 반환해 줍니다. 코드 import java.io.*; import java.util.Arrays; public class Main { public static void main(String[] args) throws IOException { byte[] input = {1,2,3,4,5,6,7,8,9}; byte[] output = {}; byte[] buf = new byte[3]; ByteArrayInputStream ins = ..

Socket이란? socket은 영어사전에서는 콘센트, 플러그를 꽂는 곳 이라고 정의됩니다. 당연히 인터넷에서 말하는 소켓과는 용도가 다르지만 완전히 별개의 이야기는 아닙니다. 국가별로 콘센트마다 규격이 다르듯이 인터넷도 소켓을 사용하려면 정해진 규격을 사용해야 합니다. 여기서 설명하려고 하는 소켓은 엄밀히 말하면 TCP/IP소켓입니다. 소켓은 네트워크 상에서 수행되는 두 프로그램 간의 양방향 통신 링크의 한쪽 끝 단을 의미합니다. 콘센트와 전자제품과 비슷하다고 할 수 있습니다. 콘센트에 플러그를 연결함으로써 전기를 공급 받을 수 있으니까요. 클라이언트와 서버 소켓 서버 소켓은 클라이언트 소켓이 접속하기를 기다리고 있는 서버에서 구현된 소켓입니다. 전자제품과 콘센트가 있다면 콘센트의 위치라고 할 수 있습..

URLConnection 클래스 응용 프로그램과 URL간의 통신 링크를 만드는 추상클래스입니다. 이 클래스는 URL에서 참조하는 리소스를 읽고 쓰는 데 모두 사용할 수 있습니다. GET 방식 POST 방식 GET 방식과 POST (외에도 여러 방법(method)이 있습니다.) 방식을 이용해서 URL로 데이터를 읽기, 쓰기를 할 수 있습니다. 데이터를 읽어올 때 GET 방식을 통해서 데이터를 읽어오는 경우가 많습니다. 반대로 데이터를 보낼때 POST 방식을 이용하기 때문에 두 방식에 대해서 알아보겠습니다. GET 방식 URL의 ? 뒤에 인자를 추가해서 데이터를 넘겨줍니다. ?뒤에 인자값이 노출이 되기때문에 POST에 비해 보안이 부족합니다. 길이가 제한되어 많은 양의 데이터를 보내기가 힘듭니다. GET은 ..
상황 A 파일의 내용을 복사해서 B 파일에 붙혀넣는 JAVA 프로그램이 있습니다. 이 때 A파일의 내용을 FileInputStream 으로 불러와 B 파일에 FileOutputStream으로 입력해 주어야 합니다. 문제점 가장 기본부터 생각하면 A파일에서 1byte를 읽어와 B파일에 1byte를 입력하는 작업을 A파일의 마지막 byte까지 반복작업 하면 됩니다. 문제는 파일에 Access 하는데 필요한 비용이 크다는 점입니다. 그래서 JAVA 프로그램 내에 버퍼라는 데이터를 임시로 저장되는 공간을 만들어 오버헤드를 줄이는 방법을 사용합니다. 해결책 및 예제 byte buf[] = new byte[128] 128byte를 가지는 버퍼. import java.io.File; import java.io.Fil..

개념 JAVA 프로그램에서 데이터를 읽고 쓰는 작업을 할 때 스트림이 필요합니다. 스트림은 단방향으로만 작동하며 마우스, 키보드, 파일 등 입력장치에서 읽어들이는것을 input stream 모니터, 파일 등 출력할때는 output stream을 이용합니다. JAVA IO stream은 크게 Byte 스트림 클래스와 Character(문자) 스트림 클래스로 나뉩니다. ByteIOStream의 특징 ByteIOStream의 기본 단위는 Byte 단방향 구조를 가지고 있음 FIFO 구조 inputStream : 입력장치로부터 자바 프로그램으로 데이터를 전달하는 software module outputStream : 자바프로그램에서 출력장치로 데이터를 전달하는 software moduel Byte IO stre..