입출력 스트림(I/O Stream) : 네트워크에서 자료의 흐름 자바는 다양한 입출력 장치에 독립적으로 일관성 있는 입출력을 스트림을 통해 제공 입출력이 구현 되는 곳 : 디스크, 키보드, 마우스, 네트워크, 메모리 등 모든 자료가 입력되고 출력되는 곳 추상적인 공간 (추상적인 경로) Java Application >>>>>경로(출력)>>>>>>>> Input source or Output destination
전체 글
개발자. Java, Springlogging : 시스템 운영에 대한 기록 - 기록을 남겨 디버깅을 용이하게 함 - 에러추적, 성능, 문제점 향샹을 위해 사용 java.util.logging - 자바에서 기본적으로 제공되는 Log package - jre/lib/logging.properties 파일을 편집하여 로그의 출력방식 로그 레벨을 변경할 수 있음 - 로그레벨은 severe, warning, info, config, fine, finer, fines 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56..
사용자 정의 예외 클래스 구현하기 - 자바에서 제공되는 예외 클래스외에 프로그래머가 직접 만들어야 하는 예외가 발생 - 기존 예외 클래스 중 가장 유사한 예외 클래스에서 상속 받아 사용자 정의 예외클래스를 만든다. - 기본적으로 Exception 클래스를 상속하여 만듬 1 2 3 4 5 6 7 8 9 10 11 12 // 기존 IllegalArgumentException 상속 //public class PassWordException extends IllegalArgumentException{ public class PassWordException extends Exception{ public PassWordException(String message) { // 상위 호출 super(message); }..
1. 프로그램의 비정상 종료를 방지 2. 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 힘들고 오류가 발생한 경우 log를 남겨서 분석을 통해 원인을 파악하여 bug를 수정하는 것이 중요( log4j와 자바에서 logging을 사용 ) 프로그램에서 오류 1. 컴파일오류 문법적오류 개발환경에서의 컴파일 오류 2. 실행오류 (Runtime) 비정상 종료가 되는 경우 실행 중인 프로그램이 의도하지 않은 동작을 하거나 프로그램이 중지되는 경우 오류 | 시스템 오류 : 가상 머신에서 발생, 프로그래머가 처리 할 수 없는 오류(ex 동적메모리가 없는 경우, 스택메모리 오버플로우 등) 예외(Exception) : 프로그램에서 제어 할 수 있는 오류(ex 파일IO, 네트워크연결, DB연결이 안되는 경우) 예외 ..
reduce() 연산 : 정의된 연산이 아닌 프로그래머가 직접 구현한 연산을 적용 최종 연산으로 스트림의 요소를 소모하여 연산을 수행 T reduce( T identify, BinaryOperator accumulator) - identify는 기본값 - BinaryOperator 라는 인터페이스를 구현한 부분(람다식으로 대체 가능) ex) 배열의 모든 요소의 합을 구하는 reduce() 연산 구현 Arrays.stream(arr).reduce(0,(a,b)->a+b)); 초기 0 값 : sum을 위한 값 a,b의 매개변수 값 자료를 소모할 때까지 두개의 요소를 더해라~ reduce() 메소드의 두번째 요소로 전달되는 람다식에 따라 다양한 기능을 수행할 수 있음 결론 : 람다식을 직접 구현하거나 람다식이..
자료의 대상과 관계없이 동일한 연산을 수행 (배열, 컬렉션) -> 일관성 있는 연산으로 자료의 처리를 쉽고 간단 -> 자료 처리에 대한 추상화가 구현 주의할 점 1. 한번 생성하고 사용한 스트림은 재사용 할 수 없음 2. 자료에 대한 스트림을 생성하여 연산을 수행하면 스트림은 소모됨 ex) 배열의 정수를 더하는 스트림을 구하고 평균을 구해야 될 경우 다시 생성하여 사용해야 한다. 3. 스트림 연산은 기존 자료를 변경하지 않음 -> 자료에 대한 스트림을 생성하면 스트림이 사용하는 메모리 공간은 별도로 생성되므로 연산이 수행되도 기존 자료에 대한 변경은 발생하지 않음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 public class ..
1 2 3 4 5 @FunctionalInterface public interface StringConcat { public void makeString(String s1, String s2); } Colored by Color Scripter cs 문자를 연결하는 인터페이스 생성. 1 2 3 4 5 6 7 8 9 public class StringConcatImpl implements StringConcat{ @Override public void makeString(String s1, String s2) { System.out.println(s1+","+s2); } } Colored by Color Scripter cs 인터페이스를 구현한 클래스 생성. 여기까지 기존의 객체지향 프로그래밍 방식이다. ..
자바 8부터 함수형 프로그래밍을 지원하고 있다. 함수형 프로그래밍(Functional Programming)이란? : 순수함수(pure function)를 구현하고 호출함으로써 외부 자료에 부수적인 영향(side effect)를 주지 않도록 구현하는 방식 ex) 자바스크립트 기반으로 수행이 되고 있다. 순수 함수(pure function)란? : 매개변수만을 사용하여 만드는 함수. 즉, 함수 내부에서 함수 외부에 있는 변수를 사용하지 않아 함수가 수행되더라도 외부에 영향을 주지 않음. 장점 : 1. 함수 내부의 변수만을 사용함으로 동시에 여러 함수가 호출되더라도 문제가 되지않음(병렬처리 가능). 2. 함수의 기능이 자료에 독립적임을 보장. 3. 동일한 자료에 대해 동일한 결과를 보장하고, 다양한 자료에 ..