개발/Java

· DEV/Backend
직렬화 (serialization) Java의 직렬화는 객체를 파일에 저장하거나 네트워크를 통해 전송할 수 있는 바이트 스트림으로 변환하는 프로세스입니다. 직렬화된 바이트 스트림을 다시 개체로 변환하는 역과정을 역직렬화라고 합니다. Java에서 직렬화는 클래스가 직렬화될 수 있음을 나타내는 Serializable 인터페이스와 보조 스트림를 사용하여 구현됩니다. 정확히는 Serializable 인터페이스는 클래스를 직렬화 가능으로 표시하는 데 사용되지만 실제 직렬화 프로세스는 개체를 읽고 쓸 때 추가 기능을 제공하는 보조 스트림인 ObjectOutputStream 및 ObjectInputStream 클래스를 통해 수행됩니다. ObjectInputStream과 ObjectOutputStream 생성자 설명 ..
· DEV/Java
Java의 보조 스트림 실제 읽기/쓰기 스트림이 아닌 보조 기능을 제공하는 스트림 FilterInputStream 및 FilterOutputStream은 보조 스트림의 상위 클래스입니다. 다른 스트림(기본 스트림 또는 다른 보조 스트림)을 생성자의 매개변수로 사용 데코레이터 패턴(Decorator Pattern)으로 주로 구현한다 기능을 만들기 위해서는 상속을 주로 쓰지만 이 경우에는 코드가 지저분해지기 때문이다 상위 클래스 생성자 생성자 설명 protected FilterInputStream과(InputStream in) 생성자의 매개변수로 InputStream을 받습니다. public FilterOutputStream(OutputStream out) 생성자의 매개변수로 OutputStream을 받습니..
· DEV/Java
Java의 문자 단위 입출력 Reader Reader는 문자별 입력 스트림에 대한 최상위 추상 클래스입니다. 많은 추상 메서드가 선언되고 하위 스트림이 이를 상속하고 구현합니다. 주요 하위 클래스 클래스 설명 FileReader 파일에서 문자 단위로 읽는 스트림 클래스입니다. InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해주는 보조 스트림 클래스 입니다. BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공하는 보조 스트림입니다. 주요 메서드 메서드 설명 int read() 파일로부터 한 문자를 읽습니다. 읽은 문자를 반환합니다. int read(char[] buf) 파일로부터 buf 배열에 문자를 읽습니다. int read(char[] ..
· DEV/Java
Java의 바이트 단위 입출력 InputStream 바이트 수준 입력 스트림에 대한 최상위 추상 클래스입니다 주요 하위 클래스에는 FileInputStream, ByteArrayInputStream, FilterInputStream이 포함됩니다. 이러한 클래스에는 파일 또는 바이트 배열 메모리에서 바이트 단위로 데이터를 읽고 기본 스트림에서 데이터를 읽을 때 추가 기능을 제공하는 메서드가 있습니다. InputStream은 읽으려는 파일이 없을 경우 Not Found 에러를 발생시킵니다 주요 하위 클래스 스트림 클래스 설명 FileInputStream 파일에서 바이트 단위로 자료를 읽습니다. ByteArrayInputStream byte 배열 메모리에서 바이트 단위로 자료를 읽습니다. FilterInput..
· DEV/Java
Java의 입출력 스트림 Java의 입/출력(I/O) 스트림은 파일, 키보드, 마우스, 네트워크 및 메모리와 같은 다양한 I/O 장치에서 데이터를 읽고 쓰는 일관된 방법을 제공합니다. 스트림은 일종의 추상적인 흐름이며, 관련 클래스가 많다 또한 예외처리를 많이 해야하기 때문에 배우는데 어려움이 있을 수 있다! 입출력 스트림 구분 대상 기준 : 입력 스트림 / 출력 스트림 자료의 종류 : 바이트 스트림 / 문자 스트림 기능 : 기반 스트림 / 보조 스트림 입력 스트림과 출력 스트림 입력 스트림 : 대상으로부터 자료를 읽어 들이는 스트림 출력 스트림 : 대상으로 자료를 출력하는 스트림 바이트 단위 스트림과 문자 단위 스트림 바이트 단위 스트림 : 동영상, 음악 파일, 실행 파일등의 자료를 읽고 쓸 때 사용 ..
· DEV/Java
Java의 로그 남기기 - 🐥 카카오 테크 캠퍼스 Java 로깅은 애플리케이션 런타임 동안 로그 메시지를 기록하고 저장하는 데 사용되는 메커니즘입니다. 로깅의 주요 목적은 개발자가 응용 프로그램에서 발생할 수 있는 문제를 식별할 수 있는 방법을 제공하고 디버깅 및 성능 조정을 지원하는 것입니다. Java는 개발자가 콘솔이나 파일과 같은 다른 대상에 메시지를 기록할 수 있는 java.util.logging이라는 기본 제공 로깅 패키지를 제공합니다. 또한 로깅 패키지는 SEVERE, WARNING, INFO, CONFIG, FINE, FINER 및 FINEST를 비롯한 여러 가지 로깅 수준을 제공합니다. 이러한 수준은 메시지의 심각도를 나타내며 기록되는 메시지를 결정합니다. Logger 생성 Java에서 로..
· DEV/Java
Java의 예외처리 예외 처리의 궁극적인 목적은 런타임 오류를 처리하고 이를 복구하고 애플리케이션의 정상적인 흐름을 유지하기 위한 메커니즘을 제공하는 것입니다 즉 오류를 복구하고 프로그램을 완전히 중단시키는 대신 프로그램 실행을 계속하는 메커니즘을 제공하는 것입니다. 또한, 실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘들기 때문에 에러 발생시 log를 남겨서 추후 log 분석을 통해 그 원인을 파악하여 bug를 수정하는 것이 중요합니다 오류의 종류 : 컴파일 오류 VS 실행 오류 컴파일 오류(compile error) 프로그램 코드 작성 중 발생하는 문법적 오류 최근에는 IDE에서 대부분의 컴파일 오류는 detection 됨 실행 오류(runtime error) 실행 중인 프로그램이..
· DEV/Java
Java의 Reduce() Java의 reduce() 연산은 프로그래머가 정의한 연산을 스트림의 요소에 적용합니다. T reduce(T identity, BinaryOperator accumulator) reduce() 메서드의 두 번째 인수는 람다 식 또는 작업을 지정하는 BinaryOperator 구현 클래스입니다. reduce() 작업은 최종 작업이 호출될 때 수행되며 스트림의 요소를 소비합니다. reduce() 작업의 결과는 두 번째 인수로 전달된 람다 식 또는 BinaryOperator 구현 클래스에 의해 결정됩니다. 예: reduce() 작업을 사용하여 배열에 있는 모든 요소의 합을 찾습니다. Arrays.stream(arr).reduce(0, (a,b)->a+b); reduce() 메서드의 ..
· DEV/Java
Stream - Collection 요소(List,Queue) 등의 데이터 흐름 처리하는데 사용 된다 - 일반적으로 stream - 가공 - 수집 단계를 거친다 스트림(Stream)은 자바 8부터 추가된 기능으로, 데이터의 흐름을 처리하는 데 사용되는 추상화된 기능입니다. Collection 요소(List,Queue)를 람다식으로 처리하도록 지원하는 함수형 프로그래밍 기법이라고 볼 수 있습니다. 스트림을 사용하면 반복자를 사용하지 않고도 원하는 데이터를 필터링하고 맵핑하는 등의 복잡한 연산을 수행할 수 있습니다. 스트림은 원본 데이터를 변경하지 않고, 새로운 결과를 생성합니다. 또한, 스트림은 "지연 연산"을 합니다. 즉, 필요한 최종 결과를 만들기 위해 중간 연산을 실행하지 않고 최종 연산 시점에 한번..
berom
'개발/Java' 태그의 글 목록 (2 Page)