![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bNy4Mt/btrPh88GhR5/6PabKWITHZcHYAqyUcm3B1/img.png)
● 도입 디자인 패턴의 종류 - 디자인 패턴은 크게 3가지로 나눌 수 있다. 1. 생성 패턴(Creational Patterns) : 오브젝트의 생성에 관련된 패턴 2. 구조 패턴(Structural Patterns) : 상속을 이용해 클래스 / 오브젝트를 조합하여 더 거대한 & 발전된 구조로 만드는 패턴 3. 행동 패턴(Behavioral Patterns) : 필요한 작업을 여러 객체에 분배하여 객체간 결합도를 줄이게 해주는 패턴 Builder Pattern? - 대표적인 생성 패턴으로써 객체의 생성에 대한 로직과 표현에 대한 로직을 분리해준다. - 객체의 생성 과정을 유연하게 해준다. - 객체의 생성 과정을 정의하고 싶거나 객체의 필드가 많아 constructor가 복잡해질 때 유용하다. ● 실습 [..
● 도입 - 함수형 프로그래밍을 이용해 디자인 패턴을 구현하는 방법을 알아볼 것이다. 디자인 패턴이란? - 반복해서 등장하는 프로그래밍 문제들에 대한 해법들을 패턴화 해놓은 것 - 프로그래밍에서 자주 등장하는 문제들에 대한 최적의 해법들을 모아 패턴화한 것이다. - 이러한 패턴들을 숙지해놓으면 비슷한 문제가 생겼을 때 패턴들이 이정표가 될 수 있다. - 디자인 패턴은 한 번 구현을 해놓으면 이후에 기능 추가, 변경, 유지&보수를 편리하게 할 수 있다. - 그러나 대부분의 디자인 패턴들은 처음에 그것을 구현하기 위해 많은 인터페이스 / 클래스 / 메서드를 필요로 한다. (= 코드가 복잡해진다.) - 함수형 프로그래밍을 이용해 몇몇 디자인 패턴을 좀 더 간단하게 구현할 수 있다. 디자인 패턴의 종류 - 디자..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bSjL2g/btrO0YLZYjj/aDW5n7BPyr7jjcVBic3CW1/img.png)
● 도입 - Lazy Evaluation : 말 그대로 계산을 게으르게 하는 것이다. 계산값이 필요할 때까지 미루고 미루다가 꼭 필요해지면 그때가서 계산을 하는 것이다.(Lambda의 계산은 그 결과값이 필요할 때가 되어서야 계산된다.) - 이를 이용하여 불필요한 계산을 줄이거나 해당 코드의 실행 순서를 의도적으로 미룰 수 있다. cf) Stream은 Lazy Evaluation을 한다. ● 실습 1. - if문 안의 조건들을 or(||)로 엮을 때 아래와 같은 경우라면 returnFlase method는 실행조차 되지 않는다. - 이미 전체 조건이 true로 결정났기 때문에 뒤에 false가 오든 true가 오든 상관없이 무조건 true가 되기 때문이다. package com.fastcampus.fun..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/J1cWs/btrOkRVQYD3/8O2JGGwsq6i2fjezJiAlz0/img.png)
● 도입 1. Scope(스코프 / 유효범위) - Scope : 변수에 접근할 수 있는 범위 - 함수 안에 함수가 있을 때 내부 함수에서 외부 함수에 있는 변수에 접근이 가능하다.(lexical scope) - 그 반대는 불가능 - 내부에 있는 Lambda가 다른 함수의 return 값이 되어도(다른 곳으로 넘어가더라도) 여전히 생성 당시의 상위 스코프에서 접근 가능했던 변수들에는 접근 가능하다. 이것을 lexical scope라고 한다. - Lambda 안에서는 Lambda 밖에 있는 변수에 접근 가능하다. 그 반대는 불가능 public static Supplier getStringSupplier() { String hello = "Hello"; Supplier supplier = () -> { Str..
![](http://i1.daumcdn.net/thumb/C148x148.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cddyu5/btrOeQBiyjh/9iobOVd2ZUZ4o42CFhVSw0/img.png)
● 도입 - Parallel Stream : 기존에 순차처리(Sequential) 하던 Stream을 병렬처리(Parallel) 하도록 만들어준다. List numbers = Arrays.asList(1, 2, 3); Stream parallelStream = numbers.parallelStream(); // 바로 병렬 Stream을 만들어준다. Stream parallelStream2 = numbers.stream().parallel(); // 기존의 Stream을 중간에 parallel로 바꾸는 것도 가능 [ Sequential(순차처리) vs Parallel(병렬처리) ] - 여러개의 스레드를 이용하여 stream의 처리 과정을 병렬화(parallelize) = 여러개의 스레드를 이용하여 중간 처..
- Total
- Today
- Yesterday
- Spring Boot
- node.js
- 코딩테스트
- java
- jpa
- OS
- SQL
- spring
- 프로그래머스
- 빅데이터
- DART
- 코테
- 프로세스
- Phaser
- Phaser3
- db
- Stream
- 메모리
- API
- 빅데이터 분석기사
- MongoDB
- 자료구조
- Advanced Stream
- MySQL
- Java8
- git
- 운영체제
- SpringBoot
- nosql
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |