본문 바로가기
728x90

Java2

Java 스트림 (Stream)의 특징 안녕하세요! 오늘은 Java8에 추가된 Stream에서 중요한 키워드 몇가지를 살펴보려고 합니다. 먼저 스트림이란 무엇일까요? 스트림이란 선언형으로 컬렉션 데이터를 처리할 수 있는 기능입니다. 소스에서 추출되는 연속된 요소를 가지고 스트림API가 제공해주는 많은 빌딩 블록 연산을 연결해서 복잡한 데이터 처리 파이프라인을 만들 수 있습니다. 또한 스트림을 사용하면 멀티스레드 코드를 구현하지 않아도 데이터를 tranperant하게 병렬로 처리할 수 있습니다. (Transparency, 투명성 : 어떤 시스템이나 기능을 사용할 때 사용 방법이 내부 복잡성을 숨기고 명확하게 제공되는 경우) 정리하면, 스트림 API의 특징은 선언형(declarative) : 간결하고 가독성이 좋아집니다. 조립할 수 있음(pipe.. 2023. 12. 8.
Java NIO (New IO) 안녕하세요! 오늘은 java NIO의 개념을 간단하게 정리해보려고 합니다. 자바 1.4이전의 IO(Old IO로 OIO라고 함)는 운영체제 수준의 시스템콜을 직접 사용할 수 없었습니다. 왜 OIO는 느렸을까요? 운영체제 시간에 배운 것처럼 모든 IO는 반드시 커널 영역을 직간접적으로 거쳐야 합니다. 커널 영역에 저장된 데이터는 JVM의 버퍼로 다시 복사를 해야 합니다. 디스크에서 커널 영역의 버퍼로 데이터를 저장하는 것은 디스크 컨트롤러가 DMA라는 기술을 사용하여 CPU의 도움 없이 처리하지만, 커널 영역의 버퍼에서 프로세스 영역의 버퍼로 데이터를 전달하는 것은 CPU를 사용합니다. 또한 디스크에서 커널 영역의 버퍼로 데이터를 복사하는 동안 프로세스는 블록킹됩니다. 이런 문제점으로 시스템콜을 직접 사용.. 2023. 11. 29.
728x90