JAVA 웹 개발 패키지 - 패스트캠퍼스 53

직렬화 (serialization)

직렬화 (serialization) Data - Input Output - Stream 은 데이터 형에 따른 메서드를 호출해서 저장하고 복원하는 일 직렬화는 오브젝트 자체 인스턴스 자체를 저장하고 이를 다시 복원하는 방식 파일에 하는 경우도 있고, 네트웍으로 전송할 때, serialization 이란? 인스턴스의 상태를 그대로 파일 저장하거나 네트웍으로 전송하고 (serialization) 이를 다시 복원(deserializatio) 하는 방식 자바에서는 보조 스트림을 활용하여 직렬화를 제공함 ObjectInputStream과 ObjectOutputStream 생성자 설명 ObjectInputStream(InputStream in) InputStream을 생성자의 매개변수로 받아 ObjectInputSt..

여러가지 보조 스트림 클래스들( InputStreamReader, BufferedInputStream, DataInputStream )

여러 가지 보조 스트림 클래스들 InputStreamReader, OutputStreamReader BufferedInputStream, BufferedOutputStream DataInputStream, DataOutputStream 보조 스트림 실제 읽고 쓰는 스트림이 아닌 보조 기능을 제공하는 스트림 FilterInputStream과 FilterOutputStream이 보조 스트림의 상위 클래스들 생성자의 매개변수로 또 다른 스트림(기반 스트림이나 다른 보조 스트림)을 가짐 - 매개변수로 받는 스트림의 기능은 제공하면서 +@ 의 기능을 제공하는 것 - Decorator Pattern으로 구현 됨 상속을 받아서 구현하는 방식으로 하면 hierarchy 가 복잡해짐 - 여러 개의 다양한 기능 조합 제공..

문자 단위 입출력 스트림 ( Reader , Writer )

문자 단위 입출력 스트림 Reader 문자 단위 입력 스트림 최상위 추상 클래스 많은 추상 메서드가 선언되어 있고 이를 하위 스트림이 상속받아 구현함 주요 하위 클래스 클래스 설명 FileReader 파일에서 문자 단위로 읽는 스트림 클래스입니다. InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해주는 보조 스트림 클래스 입니다. BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공하는 보조 스트림입니다. 주요 메서드 메서드 설명 int read() 파일로부터 한 문자를 읽습니다. 읽은 문자를 반환합니다. int read(char[] buf) 파일로부터 buf 배열에 문자를 읽습니다. int read(char[] buf, int off, in..

I/O 스트림의 구분 , 표준 입출력 스트림

자바의 입출력을 위한 I/O 스트림 앞에서 사용해본 자료 연산을 위한 stream 과는 다른 여기서 말하는 스트림은 자바가 입출력하기 위해서 사용하는 스트림 - 입출력을 왜 스트림이라고 하느냐? 자료가 흘러가는 게 물의 흐름과 같다는 네트워크 용어에서 따와서 사용 입출력이라는 게 디바이스에 의존한다. ( 키보드, 마우스, 화면 출력, 네트워크 출력 등등) 입력받는 대상이나 출력하는 대상에 따라서 코딩이 다양해지는데 - 그 경로를 추상화해서 사용 I/O 스트림을 어려워하는 이유 다 Exception 처리를 해줘야 된다 - 코드가 점점 더 복잡해진다. - 어떨 때 어떤 클래스를 써야 하는지 혼란스럽기도. 입출력 스트림 네트워크에서 자료의 흐름이 물의 흐름과 같다는 비유에서 유래됨 자바는 다양한 입출력 장치에..

사용자 정의 예외 클래스, 로그 남기기

사용자 정의 예외 클래스와 그 활용 사용자 정의 예외 클래스 구현하기 자바에서 제공되는 예외 클래스 외에 프로그래머가 직접 만들어야 하는 예외가 있을 수 있음 기존 예외 클래스중 가장 유사한 예외 클래스에서 상속받아 사용자 정의 예외 클래스를 만든다. 기본적으로 Exception 클래스를 상속해서 만들 수 있음 실습 예제 ) 패스워드에 대한 예외 처리 하기 패스워드를 입력할 때 다음과 같은 경우 오류처리를 합니다. 비밀번호의 길이는 5 이상입니다. 비밀번호는 문자로만 이루어져서는 안 됩니다.(하나이상의 숫자나 특수문자를 포함) 비밀번호는 null일 수 없습니다. 사용자 정의 예외 클래스 구현하기 Exception을 상속받아서 내가 정의한 PassWordException 클래스 만들기 Exception 어..

예외 처리는 왜 해야 하나? - 예외처리, 예외클래스, 예외처리미루기

예외 처리는 왜 해야 하나? 자바에서 제공되는 클래스들 프로그램에서의 오류 컴파일 오류(compile error) 프로그램 코드 작성 중 발생하는 문법적 오류 최근에는 개발 환경(eclipse)에서 대부분의 컴파일 오류는 detection 됨 실행 오류(runtime error) 실행 중인 프로그램이 의도하지 않은 동작(bug)을 하거나 프로그램이 중지되는 오류 실행 오류는 비정상 종료가 되는 경우 시스템의 심각한 장애를 발생할 수 있음 예외 처리의 중요성 프로그램의 비정상 종료를 피하여 시스템이 원할이 실행되도록 함 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘들다 오류가 발생한 경우 log를 남겨서 추후 log 분석을 통해 그 원인을 파악하여 bug를 수정하는 것이 중요 오류와 ..

예제) 스트림을 활용하여 패키지 여행 비용 계산하기

스트림을 활용하여 패키지여행 비용 계산하기 문제 정의 여행사에 패키지 여행 상품이 있습니다. 여행 비용은 15세 이상은 100만원, 그 미만은 50만원 입니다. 고객 세 명이 패키지 여행을 떠난다고 했을 때 비용 계산과 고객 명단 검색등에 대한 연산을 스트림을 활용하여 구현해 봅니다. 고객에 대한 클래스를 만들고 ArrayList로 고객을 관리 합니다. 고객 정보는 다음과 같습니다. CustomerLee 이름 : 이순신 나이 : 40 비용 : 100 CustomerKim 이름 : 김유신 나이 : 20 비용 : 100 CustomerHong 이름 : 홍길동 나이 :13 비용 : 50 스트림을 활용한 연산 수행 고객의 명단을 출력합니다. 여행의 총 비용을 계산합니다. 고객 중 20세 이상인 사람의 이름을 정..

스트림(Stream) , reduce() 연산

스트림 이란? 자료의 대상과 관계없이 동일한 연산을 수행 배열, 컬렉션을 대상으로 연산을 수행함 일관성 있는 연산으로 자료의 처리를 쉽고 간단하게 함 자료 처리에 대한 추상화가 구현되었다고 함 한번 생성하고 사용한 스트림은 재사용할 수 없음 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨(최종 연산이 이루어질 때 소모됨) 다른 연산을 수행하기 위해서는 스트림을 다시 생성해야 함 스트림 연산은 기존 자료를 변경하지 않음 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행돼도 기존 자료에 대한 변경은 발생하지 않음 스트림 연산은 중간 연산과 최종 연산으로 구분됨 스트림에 대해 중간 연산은 여러 개의 연산이 적용될 수 있지만 최종 연산은 마지막에 한 번만..

람다식(Lambda expression)

함수형 프로그래밍과 람다식 자바는 객체 지향 프로그래밍 : 기능을 수행하긴 위해서는 객체(class)를 만들고 그 객체 내부에 멤버 변수를 선언하고 기능을 수행하는 메서드를 구현 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라 함 함수형 프로그래밍 : 함수의 구현과 호출만으로 프로그래밍이 수행되는 방식 함수형 프로그래밍(Functional Programming: FP) 함수를 기반으로 하는 프로그래밍이고 입력받는 자료(매개변수) 이외에 외부 자료를 사용하지 않아 여려 자료가 동시에 수행되는 병렬 처리가 가능합니다. 함수형 프로그래밍은 함수의 기능이 자료에 독립적임을 보장합니다. 이는 동일한 자료에 대해 동일한 결과를 보장하고, 다양한 자료에 대해 같은 기능을 수행할 수 있습니다. 함수형 프..