개발 공부 기록

개발 공부 기록

  • 분류 전체보기 (199)
    • spring (41)
      • JPA (19)
      • TEST (4)
      • 비동기 처리 (4)
      • SECURITY (1)
      • BATCH (0)
      • WebFlux (0)
    • 문제풀이 (2)
      • 백준 (2)
      • 프로그래머스 (0)
    • java (43)
      • java (39)
      • servlet_jsp (3)
      • jdbc (1)
    • 프론트 (7)
      • html (6)
      • css (1)
    • DB (12)
      • Oracle-기초 (8)
      • Mysql-기초 (4)
      • Redis (0)
    • CS (4)
      • Network (4)
      • 디자인 패턴 (0)
    • Project (0)
      • e-commerce (0)
    • Book (70)
      • 이펙티브 자바 (55)
      • 클린코드 (0)
      • 모던 자바 인 액션 (15)
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

개발 공부 기록

컨텐츠 검색

태그

단위 테스트 가변인수 DSL Future 비동기 CompletableFuture 리액티브 프로그래밍 리액티브 메서드 참조 이펙티브 자바 통합 테스트 람다 스트림 제네릭 영속성 JPA Collector 람다식 Flow Reactive

최근글

댓글

공지사항

아카이브

전체 글(199)

  • CHAPTER19 - 함수형 프로그래밍 기법(2)

    목차.1. 자바 스트림을 일반화하는 게으른 평가와 게으른 리스트2. 패턴 매칭, 자바에서 패턴 매칭을 흉내 내는 방법3. 참조 투명성과 캐싱 1. 스트림과 게으른 평가 스트림은 데이터 컬렉션을 처리하는 편리한 도구이다. 효율적인 구현 및 여러 이유로 자바 8의 설계자들은 스트림을 조금 특별한 방법으로 자바 8에 추가했다. 그중 하나로 스트림은 단 한 번만 소비할 수 있다는 제약이 있어서 스트림은 재귀적으로 정의할 수 없다. 이와 같은 제약 때문에 어떤 문제가 발생하는지 살펴보자. 1.1 자기 정의 스트림 소수를 생성하는 에재로 재귀 스트림을 보자public static Stream primes(int n) { return Stream.iterate(2, i -> i + 1) ..

    2025.06.07
  • CHAPTER19 - 함수형 프로그래밍 기법(1)

    목차.1. 일급 시민, 고차원 함수, 커링, 부분 적용2. 영속 자료구조 1. 함수는 모든 곳에 존재한다. 함수형 언어 프로그래머는 함수형 프로그래밍이라는 용어를 좀 더 폭 넓게 사용한다. 즉 함수를 마치 일반값처럼 사용해서 인수로 전달하거나, 결과로 반환받거나, 자료 구조에 저장할 수 있음을 의미한다. 일반값처럼 취급할 수 있는 합수를 일급 함수라고 한다. 바로 자바 8이 이전 버전과 구별되는 특징 중 하나가 일급 함수를 지원한다는 점이다. 자바 8에서는 메서드 참조를 만들거나 람다 표현식으로 직접 함숫값을 표현해서 메서드를 함숫값으로 사용할 수 있다. 1.1 고차원 함수 이전 챕터에서 함숫값을 스트림 처리 연산으로 전달하거나 동작 파라미터화를 달성하는 용도로 사용했었다. 뿐만 아니라 함수를 인수로..

    2025.06.06
  • CHAPTER18 - 함수형 관점으로 생각하기

    목차.1. 왜 함수형 프로그래밍을 사용하는가?2. 함수형 프로그래밍은 어떻게 정의하는가?3. 선언형 프로그래밍과 참조 투명성4. 함수형 스타일과 자바 구현 가이드라인5. 반복과 재귀 1. 시스템 구현과 유지보수 많은 프로그래머가 유지보수 중 코드 크래시 디버깅 문제를 겪게된다. 코드 크래시는 예상하지 못한 변숫값 때문에 발생할 수 있다. 함수형 프로그래밍이 제공하는 부작용 없음과 불변성이라는 개념이 이 문제를 해결하는 데 도움을 준다. 1.1 공유된 가변 데이터 변수가 예상하지 못한 값을 갖는 이유는 결국 우리가 유지보수하는 시스템의 여러 메서드에서 공유된 가변 데이터 구조를 읽고 갱신하기 때문이다. 리스트를 참조하는 여러 클래스가 있다고 가정하자. 리스트의 소유자는 어느 클래스일까? 이들 중 하나의..

    2025.06.06
  • CHAPTER17 - 리액티브 프로그래밍(2)

    목차.1. 널리 사용되는 리액티브 라이브러리 RxJava 소개2. 여러 리액티브 스트림을 변환하고 합치는 RxJava 동작 살펴보기3. 리액티브 스트림의 동작을 시각적으로 문서화하는 마블 다이어그램 1 . 리액티브 라이브러리 RxJava 사용하기RxJava는 자바로 리액티브 애플리케이션을 구현하는 데 사용하는 라이브러다. RxJava의 리액티브 스트림의구현을 이용해서 온도 보고 시스템을 정의해보자. RxJava는 Flow.Publisher를 구현하는 두 클래스를 제공한다.io.reactivex.Flowable(역압력 기능 o)io.reactivex.Observable(역압력 기능 x)역압력 기능이 없는 Observable 클래스는 단순한 프로그램, 마우스 움직임 같은 사용자 인터페이스 이벤트에 적합하..

    2025.06.05
  • CHAPTER17 - 리액티브 프로그래밍(1)

    목차.1. 리액티브 프로그래밍을 정의하고 리액티브 매니패스토를 확인함2. 애플리케이션 수준, 시스템 수준의 리액티브 프로그래밍3. 리액티브 스트림, 자바9플로 API를 사용한 예제 코드 수년 전까지 대규모 애플리케이션은 수십 대의 서버, 기가바이트의 데이터, 수초의 응답 시간, 당연히 여겨졌던 몇 시간으 ㅣ유지보수 시간 등의 특징을 가졌다. 오늘날에는 다음과 같은 적오도 세 가지 이유로 상황이 변하고 있다.빅데이터 : 보통 빅데이터는 페타바이트 단위로 구성되며 매일 증가한다.다양한 환경 : 모바일 디바이스에서 수천 개의 멀티 코어 프로세서로 실행되는 클라우드 기반 클러스터에 이르기까지 다야한 환경에 애플리케이션이 배포된다.사용 패턴 : 사용자는 1년 내내 항상 서비스를 이요할 수 있으며 밀리초 단위의 ..

    2025.06.03
  • CHAPTER16 - CompletableFuture : 안정적 비동기 프로그래밍(2)

    1. 두 개 이상의 비동기 연산을 파이프라인으로 만들고 합치기2. 비동기 작업 완료에 대응하기 1. 비동기 작업 파이프라인 만들기 우리와 계약을 맺은 모든 상점이 하나의 할인 서비스를 사용하기로 했다고 가정하자. 할인 서비스에서는 서로 다른 할인율을 제공하는 다섯 가지 코드를 제공한다.public class Discount { public enum Code { NONE(0), SILVER(5), GOLD(10), PLATINUM(15), DIAMOND(20); private final int percent; Code(int percent) { this.percent = percent; } public int getP..

    2025.06.01
  • CHAPTER16 - CompletableFuture : 안정적 비동기 프로그래밍(1)

    목차.1. 비동기 작업을 만들고 결과 얻기2. 비블록 동작으로 생산성 높이기3. 비동기 API 설계와 구현4. 동기 API를 비동기적으로 소비하기 1. Future의 단순 활용Future 인터페이스는 미래의 어느 시점에 결과를 얻는 모델에 활용할 수 있다. 시간이 걸릴 수 있는 작업을 Future 내부로 설정하면 호출자 스레드가 결과를 기다리는 동안 다른 유용한 작업을 수행할 수 있다. Future 는 저수준의 스레드에 비해 직관적으로 이해하기 쉽다는 장점이 있다. Future를 이용하려면 시간이 오래 걸리는 작업을 Callable 객체 내부로 감싼 다음에 ExecutorService 에 제출해야 한다.public static void main(String[] args) { ExecutorServ..

    2025.06.01
  • CHAPTER15 - CompletableFuture 와 리액티브 프로그래밍 기초(2)

    목차.1. 동시 컴퓨팅의 박스와 채널 뷰2. CompletableFuture 콤비네이터로 박스를 동적으로 연결3. 리액티브 프로그래밍용 자바 9 플로 API의 기초를 이루는 발행 구독 픅로토콜4. 리액티브 프로그래밍과 리액티브 시스템 1. 박스와 채널 모델 동시성 모델을 가장 잘 설계하고 개념화하려면 그림이 필요하다. 우리는 이 기법을 박스와 채널 모델이라고 부른다.이전 예제인 f(x) + g(x) 의 계산을 일반화해서 정수와 관련된 간단한 상황이 있다고 가정하자. f나 g를 호출하거나 p 함수에 인수 x 를 이용해 호출하고 그 결과를 q1과 q2에 전달하며 다시 이 두 호출의 결과로 함수 r을 호출한 다음 결과를 출력한다. 편의상 클래스 C 의 메서드와 연상함수 C::m을 수분하지 않는다. 지비러 위 ..

    2025.05.25
  • CHAPTER15 - CompletableFuture 와 리액티브 프로그래밍 기초(1)

    목차.1. Thread, Future, 자바가 풍부한 동시성 API를 제공하도록 강요하는 진화2. 비동기 API 1. 동시성을 구현하는 자바 지원의 진화처음에 자바는 Runnable과 Thread를 동기화된 클래스와 메서드를 이용해 공유 자원에 대한 접근을 제어했다.2004년 자바 5는 동시성을 지원하고 스레드 생성과 실행을 분리하는 ExecutorService 인터페이스, Runnable, Thread 의 변형을 반환하는 Callable, Future, 제네릭 등을 지원했다. ExecutorService는 Runnable과 Callable 둘 다 실행할 수 있다. 이런 기능들 덕분에 다음 해부터 등장한 멀티코어 CPU에서 쉽게 병렬 프로그래밍을 구현할 수 있게 되었다. 멀티코어 CPU에서 효과적으로 ..

    2025.05.25
이전
1 2 3 4 ··· 23
다음
티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바