메소드 레퍼런스란? Java 8에서 추가된 것으로, 메소드 레퍼런스란 람다(Lambda) 표현식을 더 간단하게 표현하는 방법입니다. 람다 표현식이 단 하나의 메소드만을 호출하는 경우 해당 람다 표현식에서 불필요한 매개변수를 제거하고 사용할 수 있도록 해줍니다. 이러한 람다 표현식과 메소드 레퍼런스를 함수형 인터페이스로 받아서 메소드를 실행할 수 ...
[CS] Design pattern 디자인패턴2
지난 글에 이어서 다른 디자인 패턴들을 알아보겠습니다. 템플릿 메서드 패턴(Template Method Pattern) 상위클래스의 템플릿 메서드에서 하위 클래스에서 오버라이딩한 메서드를 호출하는 패턴 구현 방법 상위 클래스에서 공통 로직을 수행하는 템플릿 메서드 하위 클래스에 오버라이딩을 강제하는 추상 메서드 또는 선택적으로 오버라이...
[CS] Design pattern 디자인패턴
Design pattern 디자인패턴 실제 개발 환경에서 비즈니스 요구사항을 프로그래밍으로 처리하면서 만들어진 다양한 해결책 중 많은 사람들이 인정한 베스트 프랙티스를 정리한 것이다. 객체지향 특성과 설계원칙을 기반으로 구현되어 있다. 스프링은 OOP 프레임워크이다. 그렇기 때문에 스프링을 공부하다보면 디자인 패턴을 만날 수 있다. 어...
[Java] SOLID
객체지향 설계(Object Oriented Design, OOD)의 5원칙인 SOLID에 대해서 알아보겠습니다. SOLID SOLID는 로버트 C.마틴이 2000년대 초반 객체 지향 프로그래밍 및 설계의 다섯가지 기본원칙으로 제시한 것을 마이클 페더스(Michael Feathers)가 두문자어로 소개한 것이다. SRP(Single Respo...
[Spring] @Transactional - Propagation, Isolation
스프링 어노테이션인 @Transactional의 Propagation과 Isolation에 대해 알아보겠습니다. Transaction 트랜잭션이란? 트랜잭션은 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 트랜잭션은 데이터베이스의 상태를 변경시키는...
[DB] CAP 이론
CAP 이론이란? CAP 정리에 의하면 데이터베이스 시스템은 일관성(Consistency), 가용성(Availablity), 분단 허용성(Partition torlerance) 세 가지 속성중에서, 두 가지만 가질 수 있고 3가지 모두를 충족할 수는 없다는 이론이다. Consistency, Availablity를 합치면, CA 또는 Consisten...
[OS] Race condition 경쟁상태
Race condition 경쟁상태란? Race condition이란 공유 자원에 대해 여러 개의 프로세스가 동시에 읽거나 쓰는 동작을 할 때, 공유 자원에 대한 접근이 어떤 순서로 이루어졌는지에 따라 결과값이 달라지는 상황을 말한다. 즉, Race Condition(경쟁상태)란 단어 그대로 두 개 이상의 스레드가 하나의 자원을 놓고 서로 사용하려고...
[Web] HTTPS
HTTPS(Hypertext Transfer Protocol Secure)란? HTTPS는 웹 브라우저와 웹 사이트 간에 데이터를 전송하는 데 사용되는 TCP 프로토콜의 일종인 HTTP에 S(Secure)기능을 더한 것입니다. HTTPS 동작방식 HTTPS의 동작방식을 알아보기 전에 웹 동작방식을 간단하게 살펴보겠습니다. 웹 동작방식은 아래와 ...
[Web] Servlet, JSP 그리고 Spring
Servlet 이란? Servlet(서블릿)이란 자바를 사용해서 웹 페이지를 동적으로 생성하는 서버 측 프로그램이다. Servlet 기반 웹 페이지 동작방식 사용자(클라이언트)가 URL을 입력하면 웹 어플리케이션 서버(Web Application Server, WAS)가 HTTP Request를 Servlet 컨테이너로 전송한다. 요...
[Java] Reflection
Reflection이란? Reflection이란 힙 영역에 로드된 Class 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메소드를 접근 제어자와 상관 없이 사용할 수 있도록 지원하는 자바 API다. 여기서 말하는 로드된 Class는 JVM의 클래스 로더에서 클래스 파일에 대한 로딩을 완료한 후 해당...