Java/개념 정리
-
[Camel][Java] Lambda Expression - 람다식Java/개념 정리 2020. 7. 16. 21:43
1. Lambda Expression (람다식)이란? 람다식은 간단하게 설명하자면 함수를 변수처럼 사용하는 것입니다. 다른 말로는 식별자 없이 실행가능한 함수라고도 설명할 수 있습니다. 람다식의 경우에는 Java 8에서부터 지원하기 시작했습니다. JDK 8버전 이전에는 메소드 그 자체를 변수로 사용할 수 없었지만, JDK 8버전부터는 람다식을 사용해 함수를 변수처럼 사용할 수 있게된 것입니다. 이러한 람다식을 사용하면 이전보다 문법적으로 간결하게 표현할 수 있습니다. 2. 람다식의 왜 사용하는가? 결론부터 말하자면, 람다식의 주된 사용이유는 인터페이스가 가지고 있는 메소드를 간편하게 구현해서 사용하는 것 때문입니다. 람다식을 사용하기 위해서는 구현하기 위한 Functional 인터페이스(@Function..
-
[Camel][Java] RandomAccessFile & File 클래스Java/개념 정리 2020. 3. 5. 17:52
이전 포스팅에서 다뤘던 입출력 스트림은 순차적인 입출력에 한하여 사용가능한 스트림이었습니다. 2020/03/03 - [Java] - [Camel][Java] InputStream & OutputStream (파일 입출력) 2020/03/04 - [Java] - [Camel][Java] 문자 스트림(Stream) / FileReader, FileWriter, BufferedReader, BufferedWriter 2020/03/05 - [Java] - [Camel][Java] ObjectInputStream & ObjectOutputStream RandomAccessFile 클래스 RandomAccessFile 클래스는 순차적이지 않은 형태의 접근이 필요한 경우 사용하게됩니다. 파일의 중간이나 끝에 저장된..
-
[Camel][Java] ObjectInputStream & ObjectOutputStreamJava/개념 정리 2020. 3. 5. 14:44
ObjectInputStream & ObjectOutputStream ObjectInputStream과 ObjectOutputStream은 인스턴스의 입출력에 사용되는 클래스입니다. 이 클래스들은 사실상 Byte 스트림에 속하지만 오브젝트 스트림으로 구분하여 설명하는 경우가 많습니다. 사용방법은 필터스트림과 매우 흡사하지만 필터스트림으로 구분하지는 않습니다. 그 이유는 필터 스트림이 상속하는 클래스를 상속하지 않기 때문입니다. 인스턴스의 저장과 복원에는 ObjectOutputStream과 ObjectInputStream에 정의되어 있는 아래의 메소드가 사용됩니다. // writeObject 메소드는 ObjectOutputStream 에 정의 되어있다. public final void writeObject..
-
[Camel][Java] 문자 스트림(Stream) / FileReader, FileWriter, BufferedReader, BufferedWriterJava/개념 정리 2020. 3. 4. 21:40
문자 스트림 이전 포스팅에서 다뤘던 입출력 스트림은 Byte 단위로 입출력이 이루어지는 Byte 스트림이었습니다. 하지만 Byte 단위로만 입출력이 가능한 것이 아닙니다. 문자 단위로 입출력이 이루어지는 문자 스트림이 존재하기 때문입니다. Java는 유니코드 기반으로 문자를 인코딩합니다. 하지만 우리가 흔히 일상에서 사용하는 Windows나 Linux의 경우에는 Java와 다른 표준으로 문자를 인코딩합니다. 그렇다면 Windows 운영체제에서 실행되는 Java 프로그램에서 파일에 문자 데이터를 저장하고, 이것을 Windows 응용프로그램으로 읽어내려면 어떤 기준으로 인코딩해 저장해야할까? 정답은 'Windows 기준으로 인코딩해야한다'입니다. 더 나아가, Windows가 아닌 다른 운영체제에서는 또 다른..
-
[Camel][Java] InputStream & OutputStream (파일 입출력)Java/개념 정리 2020. 3. 3. 20:09
파일 입출력 in Java Java에서는 입출력 대상에 상관없이 입출력의 진행방식이 동일하도록 별로의 I/O 모델이 정의되어 있습니다. 이는 Java의 I/O 모델을 기반으로 데이터를 입출력 한다면 입출력 대상에 상관없이 동일한 형태로 데이터를 입출력할 수 있다는 것입니다. 하지만 이것은 입출력의 기본방식이 동일하다는 뜻일뿐, 입출력 대상에 따라 사용해야하는 클래스 및 메소드는 다를 수 있습니다. Stream의 이해 I/O 모델을 이해하기 위해서는 Stream이라는 것을 이해해야합니다. Stream이란 데이터의 흐름을 말하며 데이터의 흐름을 형성하는 통로를 의미하기도 합니다. Java에서는 각종 I/O 장치의 데이터 이동에 사용되는 인스턴스를 의미하는 용도로 사용됩니다. Stream은 크게 프로그램으로 ..
-
[Camel][Java] Synchronization ( 동기화 )Java/개념 정리 2020. 3. 3. 17:23
Synchronization( 동기화 )란? 동기화란, 한 쓰레드가 인스턴스에 접근해서 연산을 완료할 때까지, 다른 쓰레드가 인스턴스에 접근하지 못하도록 막는 것입니다. 우리가 일반적으로 쓰레드를 사용한 쓰레드 프로그래밍을 하다보면 하나의 인스턴스에 여러 개의 쓰레드가 접근하는 형태의 구현이 자주 요구됩니다. 이때 동기화를 해주지 않으면 문제가 발생하게되기 때문에 우리는 하나의 인스턴스에 여러 개의 쓰레드가 접근해야 할 때 동기화를 해줘야 합니다. 다만 예외적으로, StringBuffer와 같은 클래스는 이미 동기화 처리가 되어있기 때문에 여러 개의 쓰레드가 동시에 접근을 해도 문제가 없는 쓰레드에 안전한 클래스입니다. Thread의 동기화 방법 Thread를 동기화 시키는 방법의 하나로 우리는 sync..
-
[Camel][Java] Thread (쓰레드)Java/개념 정리 2020. 3. 2. 14:21
Thread(쓰레드)란? 쓰레드에 대해 설명하기에 앞서 쓰레드를 이해하기 위해 필요한 내용을 설명하겠습니다. 우선 프로그램을 실행하라는 요청을 사용자가 보내면 프로그램을 실행하는 것은 운영체제에 의해 이루어집니다. 사용자가 프로그램의 실행을 요청하면 메모리 공간이 할당되며, 이 메모리 공간을 기반으로 실행 중 에 있는 프로그램을 우리는 '프로세스'라고 합니다. 즉, 쉽게말하면 프로세스는 '실행중인 프로그램'이라고도 할 수 있습니다. 근데 이러한 프로세스 내에서 하나의 프로그램의 흐름만 있을 수 있는 것이 아니라, 둘 이상의 프로그램의 흐름이 있을 수 있습니다. 쓰레드라는 것은 이런 프로세스 내부에서 프로그램의 흐름을 형성하는 것입니다. 즉, 정리해서 말하면 하나의 프로세스 내에는 여러개의 쓰레드가 존재할..
-
[Camel][Java] Collection Framework (컬렉션 프레임워크)Java/개념 정리 2020. 3. 1. 17:57
Collection Framework란? 컬렉션 프레임워크란 쉽게 말해서 약속된 구조나 골격을 말합니다. 여기서 구조나 골격이란 Java에서 클래스를 의미합니다. 약속된, 이미 정의된 클래스라고 할 수 있는 것입니다. 하지만 이러한 특성은 라이브러리와 별반 다를바 없습니다. 그렇다면 왜 프레임워크라고 하는 것일까? 그 이유는 컬렉션과 관련된 클래스들의 정의에 적용되는 설계의 원칙 또는 구조가 존재하기 때문입니다. 컬렉션은 데이터의 저장, 그리고 이것과 관련 있는 알고리즘을 구조화해놓은 프레임워크입니다. 이 말이 어렵다면, 컬렉션은 자료구조와 알고리즘을 클래스로 구현한 것으로 생각하면 좀 더 와닿을 것입니다. 이러한 컬렉션 클래스는 많은 양의 인스턴스를 다양한 형태로 저장하는 기능을 제공하기 때문에 자료구..