본문 바로가기

이것이자바다6

이것이 자바다 - NIO 기반 입출력 및 네트워킹 이것이 자바다 - NIO 기반 입출력 및 네트워킹 NIO 자바4에서부터 java.nio 패키지에 포함됨 자바7에서 비동기 채널 등의 네트워크 지원을 대폭 강화하면서 NIO.2 API를 추가함 NIO는 채널 기반이다. 스트림과 달리 채널은 양방향으로 입출력이 가능하다. NIO는 기본적으로 버퍼를 사용해서 IO보다는 입출력 성능이 좋다. IO는 블록킹 된다면 NIO는 블로킹과 논블로킹 둘다 지원. 블로킹은 인터럽트가 지원됨. 대용량 데이터를 전송하는 경우는 IO, 연결 클라이언트가 많고 입출력 처리가 작은것은 NIO을 권장 파일과 디렉토리 Paths.get() : 파일의 경로 반환 FileSystems.getDefault() : 파일 시스템 정보 반환 Files : 파일 속성 읽기, 파일 및 디렉토리 생성/.. 2020. 2. 22.
이것이 자바다 - IO 기반 입출력 및 네트워킹 이것이 자바다 - IO 기반 입출력 및 네트워킹 자바에서 데이터는 스트림(Stream)을 통해 입출력되므로 스트립의 특징을 잘 이해해야 한다. 프로그램이 데이터를 입력 받을 때 입력 스트림(Input Stream)이라고 부르고 프로그램이 데이터를 내 보낼때에는 출력 스트림(Output Stream)이라고 부른다. InputStream 바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스다. read 바이트를 읽을 수 없을때 -1를 반환 OutputStream 바이트 기반 출력 스트림의 최상위 클래스로 추상 클래스다. Write Reader 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스다. read() : 입력 스트림으로부터 한개의 문자(2바이트)씩 읽는다. Writer 문자 기반 출력 스트림의 .. 2020. 2. 22.
이것이 자바다 - 스트림과 병렬처리 스트림 - 자바8에 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있게 해주는 반복자 스트림 특징 람다식으로 요소 처리 코드를 제공한다, 내부 반복자를 사용하므로 병렬 처리가 쉽다. 스트림은 중간 처리와 최종 처리를 할 수 있다. 병렬(parallel) 처리란 한 가지 작업을 서브 작업을 나누고, 서브 작업들을 분리된 스레드에서 병렬적으로 처리하는 것을 말한다. 스트림의 종류 Stream, IntStream, LongStream, DoubleStream 스트림 파이프라인 리덕션(Reduction) 대량의 데이터를 가공해서 축소하는 것 리덕션의 결과물로 바로 집계할 수 없을 경우 필터, 매핑, 정렬, 그룹핑 등의 중간 처리를 통해 결과물을 처리 할 수 있다. 리턴 타입이 스트림이라면 중.. 2020. 2. 22.
이것이 자바다 - 컬렉션 프레임워크 컬렉션 프레임워크 - 객체를 수집하고 저장하는 역할을 미리 정해 놓은 라이브러리 대표적으로는 List, Set, Map이 있다. List - 순서를 유지하고 저장, 중복 저장 가능 Set - 순서를 유지하지 않고 저장, 중복 저장 불가 Map - 키와 값의 쌍으로 저장, 키는 중복 저장 불가 List Collection ArrayList 인덱스로 객체를 관리하는 면으로 배열과 비슷 저장 용량을 초과한 객체들이 들어오면 자동적으로 저장 용량이 늘어난다. 객체의 삽입 삭제가 자주 일어나는 경우에는 LinkedList 사용을 권장 검색이나 객체를 마지막에 추가하는 경우에는 ArrayList가 더 좋은 성능을 발휘한다. Vector 동기화된 메소드로 구성이 되어있음 멀티 스레드 환경에서 안전하게 객체를 추가, .. 2020. 2. 22.
이것이 자바다 - 제네릭 & 람다 타입변환이 빈번해지면 프로그램 성능에 좋지 않다. 이를 위해 제네릭을 사용한다. 제네릭의 장점 컴파일 시 강한 타입 체크를 할 수 있다. 타입 변환을 제거한다. 제네릭의 특징 제네릭 타입은 두가지 class, interface 두 개 이상의 멀티 타입 파라미터를 사용할 수 있고, 각 타입 파라미터를 콤마로 구분 제네릭 메소드 : 매개 타입과 리턴 타입으로 타입 파타미터를 갖는 메소드 Public 리턴타입 메소드명(매개변수…){ } public Box boxing(T t) { … } Box box = boxing(100); Box box = boxing(100); 제한된 타입 파라미터 : extends 상위타입 와일드카드 타입 제네릭 타입의 상속과 구현 람다 자바8부터 람다식을 지원 람다식은 익명 함수를 .. 2020. 2. 22.
이것이 자바다 - 멀티 스레드 이것이 자바다- 멀티 스레드 프로세스- 운영체제에서 실행되는 하나의 어플리케이션 스레드 - 하나의 코드 실행 흐름 멀티 스레드- 두가지 이상의 스레드가 동작하는 것 작업 스레드 생성과 실행 Thread 클래스로부터 직접 생성 Runnable 매개값으로 갖는 생성자를 호출 Thread 하위 클래스로부터 생성 Thread를 상속한 후 run 메소드를 재정의 스레드의 이름 setName, getName을 통해 이름을 정의할 수 있음 기본적으로 생성되는 스레드의 이름은 “Thread-n” 스레드 우선순위 우선순위 방식과 순환 할당 방식 두가지가 있다 우선순위 방식은 우선순위가 높은 스레드 실행 상태를 더 많이 가지도록 스케줄링하는 것이고 개발자가 우선순위를 매겨 코드로 제어할 수 있다. 순환 할당 방식은 시간 .. 2020. 2. 22.
반응형