'개발'에 해당되는 글 26건

  1. 2018.01.17 Java9과 Spring5 로 바라보는 Java의 변화와 도전
  2. 2018.01.06 Hypothesis test
  3. 2018.01.05 PriorityQueue(Java)
  4. 2018.01.05 MVC 아키텍처
  5. 2018.01.04 Tree
  6. 2018.01.04 Queue

Java9과 Spring5 로 바라보는 Java의 변화와 도전

이일민(Toby)님의 발표


2017년 9월 21일

  - Java SE 9

  - Spring Framework 5.0


기존의 EJB부터 이전의 자바버전과 최근의 자바까지해서

코드의 간결성과 유지보수, 퍼포먼스까지 고려를 해서 코드로 비교를 해서 직접적으로 이해를 도움.


언어의 발전과 함께 코드 호환성도 지킨다 -> 새로운 기술이 들어오더라도 다시 컴파일 할 필요가 없이 호환됨.


애노테이션 기반의 메타프로그래밍과 영리한 디폴트로 무장한 관례의 적극 도입 -> SpringBoot로 Ruby on rails와 비교해도 더 간결해짐.


함수형 프로그래밍 스타일의 자바와 비동기 논블록킹 지원 서블릿, 스프링 등장

  - Java8

    - 함수형 인터페이스와 람다식

    - 메소르 레퍼런스

    - 디폴트 메소드

    - CompletableFuture

ex) IntStream.iterate(1, a -> a+1).limit(10).reduce(0, (a,b)-> a+b);


애노테이션과 메타프로그래밍, 관례의 범람


함수형 스타일 프로그래밍이 도입된 업그레이드 된 자바의 기본으로 돌아가자


스프링5.0 - 새로운 함수형 스타일 웹 개발 지원

  - 서블릿의 의존성 제거

    - 서블릿 컨테이너를 비동기 HTTP서버로 활용 가능

  - 새로운 HTTP 요청과 응답의 추상화 - 불변 객체

    - ServerRequest

    - ServerResponse

  - 두 개의 함수를 이용해 개발

    - HandlerFunction

    - RouterFunction

  - Mono<T>, Flux<T> 리액리브 방식


웹 핸들러(컨트롤러)가 웹 요청 처리하는 방식

  - 요청 매핑

  - 요청 바인딩

  - 핸들러 실행

  - 핸들러 결과 처리(응답 생성)


public static void main(String[] args) throws Exception{

HandlerFunction helloHandler = (ServerRequest req) -> {

String name = req.pathVariable("name");

return ServerResponse.ok().syncBody("Hello " + name);

};


RouterFunction router = req -> RequestPredicates.path("/hello/{name}").test(req) ?

Mono.just(helloHandler) : Mono.empty();


HttpHandler httpHandler = RouterFunctions.toHttpHandler(router);


ReactorHttpHandlerAdapter adapter = new ReactorHttpHandlerAdapter(httpHandler);

HttpServer server = HttpServer.create("localhost", 8080);

server.newHandler(adapter).block();


System.in.read();

}



==========================================================

public static void main(String[] args) throws Exception{

HttpServer

  .create("localhost", 8080)

  .newHandler(new ReactorHttpHandlerAdapter(toHttpHandler(route(path("/hello/{name}"), req -> ServerResponse.ok().syncBody("Hello " + req.pathVariable("name")))))).subscribe();

}



Mono/Flux

  - 정보를 전달할 때 컨테이너 사용

    - Mono - 단일 오브젝트

    - Flux - 스트림 오브젝트

  - 데이터 가공, 변환, 조합을 위한 다양한 연산 제공

  - 스케줄러를 이용해 비동기 작업 수행

  - 지연 연산, 자유로운 조합

  - 스프링 함수형 웹 개발의 모든 기능이 Mono/Flux기반으로 재개발


발표 뒤쪽부분은 이해를 못하는 부분도 많았지만 토비님의 발표를 들으면서

그동안 공부했던 부분과 함수형 프로그래밍 부분이 이해가 되었고 언어자체도 중요하지만

생태계의 중요성을 또 한번 느끼게 됨.


출처

https://www.youtube.com/watch?v=BFjrmj4p3_Y

'개발' 카테고리의 다른 글

NoSQL  (0) 2018.03.24
Spring 1  (0) 2018.02.03
Hypothesis test  (0) 2018.01.06
PriorityQueue(Java)  (0) 2018.01.05
MVC 아키텍처  (0) 2018.01.05
Posted by 커다란꼬꼬마

2018. 1. 6. 06:47 개발

Hypothesis test


'개발' 카테고리의 다른 글

Spring 1  (0) 2018.02.03
Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
PriorityQueue(Java)  (0) 2018.01.05
MVC 아키텍처  (0) 2018.01.05
Tree  (0) 2018.01.04
Posted by 커다란꼬꼬마

2018. 1. 5. 14:07 개발

PriorityQueue(Java)


PriorityQueue

http://hannom.tistory.com/36


'개발' 카테고리의 다른 글

Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
Hypothesis test  (0) 2018.01.06
MVC 아키텍처  (0) 2018.01.05
Tree  (0) 2018.01.04
Queue  (0) 2018.01.04
Posted by 커다란꼬꼬마

2018. 1. 5. 05:43 개발

MVC 아키텍처


'개발' 카테고리의 다른 글

Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
Hypothesis test  (0) 2018.01.06
PriorityQueue(Java)  (0) 2018.01.05
Tree  (0) 2018.01.04
Queue  (0) 2018.01.04
Posted by 커다란꼬꼬마

2018. 1. 4. 12:08 개발

Tree

이진 트리가 아닌 트리는 잘 출제X


이진트리가 주어지면, 이진 탐색 트리인지 확인.


이진 탐색 트리



Breadth first search, depth first search 정도는 알아두자. -> 암기

Tree의 balance를 맞춰주는 구현은 출제 빈도가 낮다.

균형잡힌 트리인 경우에 검색시간은 O(logn) 이다.

balance가 맞는 상태는 모든 노드의 자식들의 높이 차이가 2이상 나지않는것


그래프와 트리의 차이

트리는 그래프인데 그래프 중 사이클이 허용X


출제의 대부분은 그래프내에서의 탐색 문제

방향성이 있는 그래프인지 모호한 경우, 질문해야함.

'개발' 카테고리의 다른 글

Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
Hypothesis test  (0) 2018.01.06
PriorityQueue(Java)  (0) 2018.01.05
MVC 아키텍처  (0) 2018.01.05
Queue  (0) 2018.01.04
Posted by 커다란꼬꼬마

2018. 1. 4. 11:40 개발

Queue


Java에서 Queue는 interface.

따라서, Queue q = new LinkedList(); (O)

    Queue q = new Queue(); (X)


Try Catch 를 고려하지않고 문제에 집중할수있게 offer(), poll(), peek()를 쓰는것이 좋다.


'개발' 카테고리의 다른 글

Java9과 Spring5 로 바라보는 Java의 변화와 도전  (0) 2018.01.17
Hypothesis test  (0) 2018.01.06
PriorityQueue(Java)  (0) 2018.01.05
MVC 아키텍처  (0) 2018.01.05
Tree  (0) 2018.01.04
Posted by 커다란꼬꼬마
이전버튼 1 2 3 이전버튼

블로그 이미지
커다란꼬꼬마

공지사항

Yesterday
Today
Total

달력

 « |  » 2024.5
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 29 30 31

최근에 올라온 글

최근에 달린 댓글

글 보관함