January 17, 2021
람다는 어떤 클래스에도 종속되지 않기 때문에 메서드가 아니라 함수라고 부른다. 형식은 다음과 같다. 함수형 인터페이스라는 문맥에서 람다 표현식을 사용할 수 있다. 함수형 인터페이스 : 하나의 추상 메서드를 지정하는 인터페이스 Ex) Comparator, Runnable, ActionListener, Callable… 단 후에 인터페이스에 디폴트 메…
January 17, 2021
동작 파라미터화를 통해 리스트에 모든 요소에 어떤 동작 수행 리스트 관련 작업 후 어떤 동작 수행 에러시 정해진, 또는 다른 동작 수행 이 가능하다. 이 동작 파라미터화 개념은 전략 디자인 패턴이다. 전략 디자인 패턴 객체들이 할 수 있는 행위 각각에 전략 클래스 구현, 유사한 행위들을 캡슐화하는 인터페이스를 정의하여 객체의 행위를 동적으로 바꾸고 싶을 …
January 17, 2021
자바 코드를 작성한 후에 컴파일을 하면 해당 코드는 JVM 위에서 실행 가능한 상태가 된다. 이때 JVM이 클래스를 실행하기 위해서는 클래스를 로딩해와야하는데, 그 역할을 해주는 친구가 클래스 로더다. 클래스 로더의 특징 계층적 클래스 로딩 위임 가능 가시적 규약 = 클래스를 로딩할 때 가능한 범위 존재 자식 클래스 로더는 로딩 위임을 통해서 부모 클래스…
July 30, 2020
소스코드를 컴파일, 테스트, 정적 분석, 실행가능한 어플리케이션으로 자동 생성하는 프로그램. 계속해서 늘어나는 라이브러리를 자동으로 추가하고, 관리하는 역할 라이브러리 버전을 자동으로 동기화하는 역할 라이브러리를 직접 다운받아와서 작업하는 것이 번거로움이 많기 떄문에, 이런 것을 자동화해주는 툴이다. 또한, 빌드 도구없이 IDE를 통해 빌드하고 운영환경에…
July 27, 2020
Garbage Collector JVM의 Garbage Collector는 Heap 영역에 생성된 메모리가 Stack을 통해 도달하지 못하는 상황에 Heap 메모리를 정리해준다. 이러한 메모리는 Unreachable Memory라고 한다. 또한, Java의 gc 과정에 있어서 매우 중요한 개념이 있다. 그것은 바로 이다. Stop the World : G…
July 27, 2020
자바 8의 새로운 기술 스트림 API 질의 언어에서 표현식을 처리하는 것처럼 병렬연산 지원 키워드를 사용하지 않아도 된다. Synchronized 자바 동기화 블록으로, 같은 객체에 대한 모든 동기화 블록은 한 시점에 한 쓰레드만이 블록 안으로 접근하도록 (실행하도록) 한다. 예를 들어서 한 클래스 안에 synchronized 키워드를 가진 메서드가 여…
July 27, 2020
JDK(Java Development Kit) Java 개발 키트로, JVM, JRE와 개발을 위한 핵심 라이브러리를 가지고 있는 키트이다. JRE를 포함해 컴파일러, 디버거 등 개발 도구를 포함하고 있다. 참고로 Java 8 버전 이후의 JDK는 유료화가 되어, 보통의 자바개발 환경에 Java 8에 머무르고 있다고 한다. JDK의 구조는 다음과 같다. …
July 25, 2020
기본적으로 전체 요청에 대한 관리를 servlet이 한다. Dispatcher Servlet: 요청을 받는다. HandlerMapping: 해당 request에 맞는 handler 찾기 Interceptor (미들웨어같은거?): handler 실행 전처리, 후처리 Handler: 내부 로직 실행 (모델, 뷰 등을 줌) 후 dispatcher servlet…
July 24, 2020
스프링 (프레임워크) 자바 플랫폼을 위한 오픈소스 어플리케이션. 정확히는 스프링 프레임워크라고 하는 것이 맞다. 의존성을 주입해주는 컨테이너를 제공해주는 라이브러리이다. 스프링 코어 다른 스트링 관련 모듈 (Spring-MVC, Sping-JDBC)들이 공통으로 사용하는 라이브러리. 스프링 MVC Front Controller 패턴에 Spring의 의존…
July 06, 2020
React S3로 배포하기 오늘은 직접 React를 S3로 배포하는 것을 해보았다. React 서버를 EC2로 배포할 수도 있지만, 앱이 커짐에 따라 빌드되는 앱의 크기가 커지므로 S3로 배포를 많이 한다고 한다. 정말 친절하게 잘 설명이 되어있는 포스팅이 많아서 참고해서 배포를 진행했다. 일단 로직은 이러하다. 1. 만든 React App을 빌드해서 S…