백기선(인프런 강의)
-
Dispatcherservlet백기선(인프런 강의)/스프링 웹 MVC 2020. 8. 24. 21:05
DispatcherServlet 초기화 다음의 특별한 타입의 빈들을 찾거나, 기본 전략에 해당하는 빈들을 등록한다. HandlerMapping 전략 패턴 사용 핸들러를 찾아주는 인터페이스 BeanNameHandlerMapping RequestMappingHandlerMapping 실질적으로 애노테이션, 컨트롤러와 RequestMapping, 이것을 Meta Annotation으로 사용하고 있는 GetMapping, PostMapping 등을 사용해서 Handler를 지정한 것들을 찾아주는 역할 HandlerAdapter 전략 패턴 사용 Handler를 실행하는 인터페이스 RequestMappingHandlerAdapter HandlerExceptionResolver ViewResolver Dispatch..
-
스프링 MVC 란?백기선(인프런 강의)/스프링 웹 MVC 2020. 8. 20. 08:48
MVC 란? M : Model 평범함 자바 객체 POJO 도메인 객체 또는 DTO로 화면에 전달할 또는 화면에서 전달 받은 데이터를 담고 있는 객체 V : View HTML, JSP 타임리프 등등 데이터를 보여주는 역할, 다양한 형태로 보여줄 수 있다. HTML, JSON, XML C : Controller 스프링 @MVC 사용자 입력을 받아 모델 객체의 데이터를 변경하거나, 모델 객체를 뷰에 전달하는 역할 입력값 검증 입력받은 데이터로 모델객체 변경 변경된 모델 객체를 뷰에 전달 MVC 패턴의 장점 동시다발적(Simultaneous) 개발 백엔드 개발자와 프론트 엔드 개발자가 독립적으로 개발을 진행 높은 결합도 논리적으로 관련있는 기능을 하나의 컨트롤러로 묶거나, 특정 모델과 관련있는 뷰를 그룹화 가능..
-
Metaspace백기선(인프런 강의)/더 자바, Java 8 2020. 8. 9. 16:53
Metaspace JVM의 여러 메모리 영역 중에 PermGen 메모리 영역이 없어지고 Metaspace 영역이 생겼다. PermGen permanent generation, 클래스 메타데이터를 담는 곳. Heap 영역에 속함. 기본값으로 제한된 크기를 가지고 있음. -XX:PermSize=N, PermGen 초기 사이즈 설정 -XX:MaxPermSize=N, PermGen 최대 사이즈 설정 Metaspace 클래스 메타데이터를 담는 곳. Heap 영역이 아니라, Native 메모리 영역이다. 기본값으로 제한된 크기를 가지고 있지 않다. (필요한 만큼 계속 늘어난다.) 자바 8부터는 PermGen 관련 java 옵션은 무시한다. -XX:MetaspaceSize=N, Metaspace 초기 사이즈 설정. ..
-
배열 Parallel 정렬백기선(인프런 강의)/더 자바, Java 8 2020. 8. 5. 08:50
Arrays.parallelSort() Fork/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공한다. 병렬 정렬 알고리즘 배열을 둘로 계속 쪼갠다. 합치면서 정렬한다. sort()와 parallelSort() 비교 알고리즘 효츌성은 같다. O(n logN) 공간 O(n) 단, 정렬하는 배열의 크기에따라 속도가 차이날 수 있다. 코드 import java.util.Arrays; import java.util.Random; import java.util.stream.IntStream; public class App { public static void main(@Chicken String[] args) { int size = 1500; int[] numbers = new int[size];..
-
애노테이션의 변화백기선(인프런 강의)/더 자바, Java 8 2020. 7. 24. 12:47
애노테이션의 변화 애노테이션 관련 두가지 큰 변화 자바 8부터 애노테이션을 타입 선언부에도 사용할 수 있게 됨. 자바 8부터 애노테이션을 중복해서 사용할 수 있게 됨. 타입 선언 부 제네릭 타입 변수 타입 매개변수 타입 @Target(ElementType.TYPE_PARAMETER) 예외 타입 타입에 사용할 수 있으려면 TYPE_PARAMETER: 타입 변수에만 사용할 수 있다. TYPE_USE: 타입 변수를 포함해서 모든 타입 선언부에 사용할 수 있다. public enum ElementType { /** Class, interface (including annotation type), or enum declaration */ TYPE, /** Field declaration (includes enum..
-
CompletableFuture 2백기선(인프런 강의)/더 자바, Java 8 2020. 7. 23. 08:35
조합하기 thenCompose() 두 작업이 서로 이어서 실행하도록 조합 두 작업이 연관관계가 있을 때 public class App { public static void main(String[] args) throws InterruptedException, ExecutionException { CompletableFuture hello = CompletableFuture.supplyAsync(() -> { System.out.println("Hello " + Thread.currentThread().getName()); return "Hello"; }); CompletableFuture future = hello.thenCompose(s -> getWorld("안녕하세요")); System.out.pr..
-
CompletableFuture백기선(인프런 강의)/더 자바, Java 8 2020. 7. 22. 13:10
자바에서 비동기(Asynchronous) 프로그래밍을 가능케하는 인터페이스. Future를 사용해서도 어느정도 가능했지만 하기 힘들 일들이 많았다. Future로는 하기 어렵던 작업들 Future를 외부에서 완료 시킬 수 없다. 취소하거나, get()에 타임아웃을 설정할 수는 있다. 블로킹 코드(get())를 사용하지 않고서는 작업이 끝났을 때 콜백을 실행할 수 없다. 여러 Future를 조합할 수 없다, 예) Event 정보 가져온 다음 Event에 참석하는 회원 목록 가져오기 예외 처리용 API를 제공하지 않는다. CompletableFuture Implements Future Implements CompletionStage 비동기로 작업 실행하기 리턴값이 없는 경우: runAsync() 리턴값이 있..
-
Callable과 Future백기선(인프런 강의)/더 자바, Java 8 2020. 7. 20. 13:04
Callable Runnable과 유사하지만 작업의 결과를 받을 수 있다. Future 비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다. https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Future.html get() - 결과를 가져오기 블록킹 콜 결과를 가져올때까지 기다린다. 타임아웃(최대한으로 기다릴 시간)을 설정 가능 public class App { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService executorService = Executors.newSingleThreadExec..