본문 바로가기

프로그래밍(TA, AA)/JVM 언어

(117)
[JAVA] 개선된 동시성(3) - 리액티브 프로그래밍 보호되어 있는 글입니다.
[JAVA] 개선된 동시성(2) - CompletableFuture 프로그래밍 보호되어 있는 글입니다.
[JAVA] 개선된 동시성(1) - CompletableFuture & Reactive Concept 최근 소프트웨어 개발 방법 추세 1. 애플리케이션을 실행하는 하드웨어 관련. 애플리케이션을 어떻게 구성하는가 (상호 작용 관점에서) 2. 인터넷 서비스에서 사용하는 애플리케이션의 증가 멀티코어 프로세서가 발전하면서 애플리케이션의 속도는 멀티 코어 프로세서를 얼마나 잘 활용할 수 있도록 소프트웨어를 개발하는가에 따라 달라질 수가 있게 되었다. 한 개의 큰 태스크를 병렬로 실행할 수 있는 개별 하위 태스크로 분리할 수도 있다. 자바7부터는 포크/조인 프레임워크가 존재하며, 자바8에 추가된 병렬 스트림으로 스레드에 비해 단순하고 효과적인 방법으로 병렬 실행을 달성할 수도 있다. 마이크로서비스 아키텍처 선택이 지난 몇년간 증가했다. 하나의 거대한 애플리케이션 대신 작은 서비스로 애플리케이션을 나누는 것이다. 서..
[자바] 자바8 Optional 클래스 자바에서 null 레퍼런스를 사용하면서 발생할수 있는 이론적/실용적 문제를 확인하자. NullPointerException은 자바에서 가장 흔히 발생하는 에러다. 때로는 중첩된 null 확인 코드를 추가해야 하므로 null 때문에 코드 가독성이 떨어진다. null은 아무 의미도 표현하지 않는다. 특히 정적 형식 언어에서 값이 없음을 포현하는 방법으로는 적절하지 ㅇ낳다. 자바는 개발자로부터 모든 포인터를 숨겼다. 하지만 예외가 있는데 그것이 바로 null 포인터이다. null은 무형식이며 정보를 포함하고 있지 않으므로 모든 레퍼런스 형식에 null을 할당할 수 있다. 이런 식으로 null이 할당되기 시작하면서 시스템의 다른 부분으로 null이 퍼졌을때 애초에 null이 어떤 의미로 사용되었는지 알 수 없다..
[자바] 자바8 스트림으로 데이터 수집 (Collector) 자바의 스트림 긴으을 사용하면 데이터베이스 같은 연산을 할 수 있다. 데이터 집합을 유연하게 처리할 수 있는 lazy iterator의 개념으로 이해해도 좋다. 스트림 연산은 중간연산/최종연산으로 구분되는데 중간 연산은 한 스트림을 다른 스트림으로 변환하는 연산으로서, 여러 연산을 연결할 수 있다. (파이프의 역할)중간 연산은 스트림 파이프라인을 구성하며, 스트림의 요소를 consume하지는 않는다. 반면 최종 연산은 스트림의 요소를 소비해서 최종 결과를 도출한다. 최종 연산은 스트림 파이프라인을 최적화하면서 계산 과정을 짧게 생략하기도 한다. 스트림의 최종 연산중 collect가 존재하는데, 다양한 요소 누적 방식을 인수로 받아서 스트림을 최종 결과로 도출하는 리듀싱 연산을 수행할 수 있다. 다양한 요..