[Java] 24. 직렬화(Serializable)
우선 직렬화에 앞서 스트림에 자바에서 말하는 스트림에 대해서 알고 가자. 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림
이라 한다. 즉, 스트림이란 데이터를 운반하는 통로이다.
우선 직렬화에 앞서 스트림에 자바에서 말하는 스트림에 대해서 알고 가자. 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이것을 스트림
이라 한다. 즉, 스트림이란 데이터를 운반하는 통로이다.
스트림의 최종연산
에 대한 포스팅과 스트림 최종연산 중 하나인 collect() 메서드
와 Collector 인터페이스
를 통한 통계
및 그룹화(Grouping)
와 분할(partitioning)
연산에 대한 포스팅이다.
Optional을 사용하면 값이 없는 상황에 대해 명시적으로 다룰 수 있습니다. Null 체크를 직접 하지 않고도 코드 안전성을 높일 수 있다. 내일은 쉬어야 곘다. 12월 부터는 내 개인프로젝트를 위해 포스팅을 줄여야 곘다.
스트림의 중간연산에 대해서 포스팅이다.
일반적으로 List 데이터 구조를 Collection이나 Iterator와 같은 인터페이스를 이용해서 컬렉션을 다룬다. Map이나 Array 데이터 구조도 그에 맞는 인터페이스를 이용헤 컬렉션을 다룬다. Stream은 데이터구조 어떠한 간에 같은 방식으로 다룰 수 있게 된다.
람다식을 더욱 간결하게 표현할 수 있는 방법이 있다. 람다식이 하나의 메서드만 호출하는 경우에는 메서드 참조(method reference)
로 람다식을 더 간결하게 할 수 있다. 해당 포스팅은 메서드참조의 예제이다.
java.util.function 패키지 내에 일반적으로 많이 쓰이는 메서드를 함수형 인터페이스로 정의헤서 제공해주고 있다.
람다식이란 함수(메서드)를 간단한 식(expression)으로 표현하는 방법을 의미한다. 함수형언어에서부터 나온 것이다.
쓰레드의 동기화 처리시에 특정 쓰레드가 프로세스 자원을 너무 오랜 시간동안 점유할 경우 발생하는 문제에 대한 포스팅이다.
멀티쓰레드는 한개의 같은 프로세스 내에서 자원을 공유해서 작업하기 때문에 서로의 작업을 영향을 주게 된다. 공유되는 데이터를 동시에 쓰레드들이 처리하면 의도하지 않는 데이터가 나올 수가 있다.
Thread 실행제어 및 상태 설명에 대한 포스팅이다.
데몬쓰레드(Daemon Thread)에 대한 포스팅이다.
이전 쓰레드 포스팅에 이어서 멀티쓰레드에 대해서 부가 설명 및 예제코드 포스팅이다.
쓰레드에 대한 포스팅이다.
애너테이션은 인터페이스
Enum에 대한 깊은 내용은 아니고 단순 사용하는 방법 예제에 대한 포스팅이다.
제네릭 포스팅의 연장선으로 Comparable<T>
와 Comparator<T>
인터페이스를 구현하여 java 정렬 방법으로 java.util.Collections 클래스의 sort()를 이용한 정렬 포스팅이다.
제네릭에 와이드카드를 코드에 따른 주석으로 설명한 포스팅이다.
제한 된 제네릭에 대한 포스팅이다.
제네릭(Generic) 개념에 대한 설명 포스팅이다.
Exception 기본적인 설명 예제이다,
Checked Exception(일반예외)와 Unchecked Exception(실행예외) 개념에 대한 포스팅이다.
Exception(예외) 처리와 종류 및 구조
내부클래스(Inner class)와 익명 클래스(Anonymous class)에 대한 설명이다.