Java/Java Language (37) 썸네일형 리스트형 [Java] 문자 기반 스트림과 보조 스트림 문자 데이터를 다루는데 사용한다는 것만 빼면, 바이트 기반 스트림과 문자 기반 스트림의 사용법은 방법이 거의 같다. 아래는 문자기반 스트림의 의존성을 표현한것이며, 바이트기반 스트림과 유사한것을 알수있다. Reader/Writer 클래스는 InputStream/OutputStream고 마찬가지로 추상 클래스이며, BufferedReader/BufferedWriter와 InputStreamReader/OutputStreamReader는 Reader/Writer의 자손이면서 기반 스트림(Base Stream)을 참조하는 보조스트림(Auxiliary Stream)이다. 보조스트림은 자체적으로 입출력을 수행할 수 없기 때문에 기반 스트림(Base Stream)이 필요하다.문자 기반의 스트림Reader와 Wri.. [Java] 바이트 기반의 보조 스트림 Filter I/O StreamFilterInputStream/FilterOutputStream은 InputStream/OutputStream의 자손이면서 모든 보조스트림의 조상이다. 보조스트림(Auxiliary Stream은 자체적으로 입출력을 수행할 수 없기 때문에 기반 스트림(Base Stream)이 필요하다. FilterInputStream/FilterOutputStream의 모든 메서드는 단순히 기반스트림의 메서드를 그대로 호출할뿐이며, FilterInputStream/FilterOutputStream 자체로는 아무런 일도 수행하지 않는다. FilterInputStream/FilterOutputStream은 상속을 통해 원하는 작업을 수행하도록 읽고 쓰는 메서드를 오버라이딩 해야한다. 다음 Fi.. [Java] Byte Stream의 사용법 프로그램이 종료될때, 사용하고 닫지 않는 스트림을 JVM이 자동적으로 닫아 주기는 하지만, 스트림을 사용해서 모든 작업을 마치고 난 후에는 close()을 호출해서 스트림을 반드시 닫아서 사용하던 I/O 자원을 반환해야한다. Java 7 이후로는 try-with-resources 문법이 도입되어, 스트림을 명시적으로 닫지 않아도 자동으로 자원이 해제되도록 할 수 있다. 이 문법은 AutoCloseable 인터페이스를 구현하는 클래스(예: 모든 스트림 클래스)에서 지원된다. 자세한 내용은 예외 처리 (Exception Handling)에 설명되어있다.InputStream과 OutputStream의 메서드mark()와 reset() 사용법스트림의 종류에 따라서 mark()와 reset()를 사용해서 이미 읽.. [Java] I/O Stream (Byte Stream, Character Stream) I/O란?I/O(Input/Output)는 컴퓨터 내부 또는 외부 장치와 프로그램간의 데이터를 주고 받는 것을 말한다. 예를 들어, 프로그램에서 메모리나 디스크에 있는 데이터를 읽고 쓰기, System.out.prinln()도 호출하여 화면(콘솔)에 출력하는 것이 입출력 작업이다. 그리고 네트워크를 통해서 외부의 장치와 데이터를 송수신 하는것도 마찬가지이다.I/O StreamJava에서 입출력(I/O)을 수행할려면, 어느 한쪽에서 다른 쪽으로 데이터를 전달하기 위해서 두 대상을 연결하고 데이터를 전송할 수 있는 통로가 필요하다. 이를 스트림(stream)이라고 하며, 데이터를 운반하는 연결 통로이다. 왜 이렇게 Java Application에서 입출력(I/O)을 수행하기 위해서 Java API인 I/O.. [Java] Single Thread와 Multi Thread Multi Threading 개념Multi Threading란Multi Threading은 하나의 프로세스 내에서 여러 스레드가 동시에 작업을 수행하는 것이다. 그러나 Multi Threading에서 스레드들은 번갈아가면서 실행되는 경우가 더 일반적이다. 보통 스레드의 수는 언제나 코어의 개수보다 훨씬 많은 환경이기 때문이다. 그래서 프로세스의 성능이 단순히 스레드의 개수에 비례하는 것이 아니다. 경우에 따라 하나의 스레드를 가진 프로세스 보다 두 개의 스레드를 가진 프로세스가 오히려 더 낮을 성능을 보일수도 있다. 물론, CPU 코어의 개수에 따라 Multi Threading은 병렬로 처리될수 있다. CPU 코어 개수가 실행되는 스레드 개수 이하일떄는 말이다. 실제로 CPU의 코어에서는 한번에 하나의 .. [Java] Thread 구현과 실행 Thread 구현Thread 구현스레드를 구현하는 방법은 Thread 클래스를 상속받는 방법과 Runnable 인터페이스를 구현하는 방법 두가지가 있다. Thread 클래스를 상속받으면 다른 클래스를 상속받지 못하기 때문에 Runnable 인터페이스를 구현하는 방법이 일반적이다. Runnable 인터페이스를 구현한 다른 클래스의 인스턴스를 참조할수 있기 때문에 변경에 용이하기도 하다. Runnable 인터페이스는 오로지 run()만 정의되어 있는 간단한 인터페이스이다. run() 메서드의 구현부만 작성해주면 되는것이다. 위의 두 가지 방법 중에서 어떤 것을 선택할지라도, 스레드를 구현한다는 것은 run() 메서드의 구현부의 로직만 작성하면된다. 그러나 Thread 클래스를 상속받은 경우와 Runnable.. [Java] Process와 Thread Process프로세스란?프로세스를 간단히 말하면 프로그램이 실행된것이다. 프로그램은 실행하기전에는 단순히 파일에 불과하다. 그러나 프로그램을 실행하면 OS로부터 실행에 필요한 자원(메모리)을 할당받아서 프로세스가 된다. 운영체제의 각 프로세스는 독립적인 메모리 공간을 갖고 있다. 이렇게 운영체제에 의해 프로세스들은 각기 격리되어 관리되기 때문에 하나의 프로세스가 충돌해도 다른 프로세스에 영향을 끼치지 않는다. 프로세스의 메모리 영역code: 실행할 프로그램의 코드가 저장되는 영역data: static 변수와 global 변수가 저장되는 영역heap: 동적으로 할당되는 영역stack: 메서드 호출시 생성되는 지역변수, 매개변수와 반환주소가 저장되는 영역프로세스의 역할프로세스는 메모리 공간, 파일 핸들, .. [Java] CLI와 IntelliJ 소스코드 실행 비교 Java 소스코드를 작성하고 실행하기 위해서는 특정 경로에 컴파일된 클래스 파일을 저장하고, 클래스 파일을 올바르게 참조하여 실행하도록 클래스 경로(CLASSPATH)를 설정한다. 이 글에서는 CLI(Command Line Interface) 환경에서 소스코드를 컴파일하고 실행하는 방법과 IntelliJ IDEA와 같은 통합 개발 환경(IDE)에서 소스코드 실행 버튼만 누르면, 어떻게 자동으로 실행되는지에 대해 설명한다. CLI 소스코드 실행 환경 설정 및 실행소스코드 컴파일 후 특정 경로에 저장작성한 소스코드를 실행하기 위하여, 특정 디렉터리 경로에 컴파일한 클래스 파일(.class)로 저장해야한다.package com.shop.bookclass Test { public static void ma.. 이전 1 2 3 4 5 다음