반응형

분류 전체보기 277

메소드 레퍼런스

메소드 레퍼런스란? 람다가 하는 일이 기존 메서드 또는 생성자를 호출하는 거라면, 메소드 레퍼런스를 사용해서 매우 간결하게 표현 즉, 람다식을 더 간결하게 표현하는 방법이 메소드 레퍼런스 이다. 메소드 참조하는 방법 스태틱 메소드 참조 타입::스태틱 메소드 특정 객체의 인스턴스 메소드 참조 객체 레퍼런스::인스턴스 메소드 임의 객체의 인스턴스 메소드 참조 타입::인스턴스 메소드 생성자 참조 타입::new 메소드 또는 생성자의 매개변수로람다의 입력값을 받는다 리턴값 또는 생성한 객체는 람다의 리턴값 이다. 예제 코드 import java.util.Arrays; import java.util.List; import java.util.function.Function; import java.util.functi..

Language/Java 2022.06.18

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

람다 (인자 리스트) -> { 바디 } // 인자 -> 바디 Function plus10 = (i) -> i + 10; 인자 리스트 인자가 없을때 : () 인자가 한개일 때: (one) 또는 one 인자가 여러개 일 때 : (one, two) 인자의 타입은 생략 가능, 컴파일러가 추론(infer)하지만 명시할 수도 있다. (Integer one, Integer two) 바디 화상표 오른쪽에 함수 본문을 정의한다. 여러 줄인 경우에 {}를 사용해서 묶는다 함 줄인 경우에 생략 가능, return도 생략 가능 import java.util.function.BinaryOperator; import java.util.function.Supplier; public class Foo { public static v..

Language/Java 2022.06.18

자바에서 제공하는 함수형 인터페이스

Function T타입을 받아서 R타입을 리턴하는 함수 인터페이스 사용 방법 1 public class Plus10 implements Function { @Override public Integer apply(Integer integer) { return integer + 10; } } public class Foo { public static void main(String[] args) { Plus10 plus10 = new Plus10 (); System.out.println (plus10.apply ( 1 )); } } 사용 방법 2 import java.util.function.Function; public class Foo { public static void main(String[] args..

Language/Java 2022.06.18

함수형 인터페이스와 람다 표현식 소개

함수형 인터페이스 인터페이스 안에 추상 메소드가 하나만 있는것을 말한다. 함수형 인터페이스를 사용하고 싶으면 @FunctionalInterface 어노테이션을 사용하면 된다. @FunctionalInaterface는 자바에서 지원하기 때문에 import 할 필요가 없고 @FunctionalInaterface을 안써도 사용이 가능하지만 함수형 인터페이스인걸 알리기 위해 사용해주는것이 좋다 @FunctionalInterface을 사용하면 추상 메소드가 2개 이상일시 @FunctionalInterface에 에러 표시가 나타난다. static,default 사용하여 다른 메소드를 사용이 가능하다 @FunctionalInterface public interface RunSomething { void doIt();..

Language/Java 2022.06.15

팩토리 메소드 패턴(Factory Method Pattern)

팩토리 메소드 패턴이란? 객체를 생성하기 위한 인터페이스를 정의하고, 어떤 클래스의 인스턴스르 생성할지에 대한 처리는 서브클래스가 결정하는 디자인 패턴이다. 팩토리 메소드 패턴을 사용하는 이유? 팩토리 메소드 패턴을 사용하는 이유는 클래스의 생성과 사용의 처리로직을 분리하여 결합도를 낮추기 위한 것이다. - 생성할 객체 타입을 예측할 수 없을 때 - 생성할 객체를 기술하는 책임을 서브클래스에게 정의할때 - 객체 생성의 책임을 서브클래스에 위임시키고 서브클래스에 대한 정보를 은닉하고자 할때 팩토리 메소드의 장점 과 단점 장점 - 인스턴스를 만드는 과정를 수정하지 않고 새로운 인스턴스를 다른 방법으로 생성하도록 확장할 수 있다. - 코드가 간결해진다. 단점 - 클래스가 많아진다. 팩토리 메소드 패턴을 적용할..

디자인패턴 2022.06.11

싱글톤 패턴(singleton pattern)

싱글톤 패턴(Singleton Pattern) 이란? 인스턴스를 오직 하나만 제공하는 패턴을 싱글톤 패턴이라고 한다. 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러개 일 때 문제가 생길 수 있는 경우가 있다. 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 리턴한다. 클래스의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴이다. 싱글톤 패턴 문제점 싱글톤 패턴을 구현하는 코드 자체가 많이 들어간다 의존관계상 클라이언트가 구체 클래스에 의존한다 -> DIP를 위반한다 클라이언트가 구체 클래스에 의존해서 OCP 원칙을 위반할 가능성이 높다 테스트하기 어렵다 내부 속성을 변경하거나 초기화 하기 어렵다 private 생성..

디자인패턴 2022.06.04

객체 지향 프로그래밍

객체 지향은 프로그램을 유연하고 변경이 용이하게 만들기 때문에 대규모 소프트웨어 개발에 많이 사용이 된다. 객체 지향의 특징으로는 추상화, 캡슐화, 상속, 다형성 이 있는데 이 중에서 가장 중요한 것이 다형성이다. 다형성을 좀더 쉽게 알기 위해서 실세계와 비유해보겠다. 실세계와 객체 지향을 1:1로 매칭 하면 안 되고 역할과 구현으로 세상을 구분해보겠다. Ex1. 운전자와 자동차 운전자는 자동차를 운전할 때 면허증만 있으면 운전이 가능하다. 이때 자동차의 기종이 무엇이든 상관없이 운전이 가능하다. 아직 감이 안 오면 다른 예시를 들어보자 Ex2. 공연 남자 주인공과 여자 주인공을 정해야 한다. 이때 주인공들을 역할이고 그 배우들은 구현이라고 해보자. 남자 배우가 누가 오든 여자 배우가 누가 오든 공연을 ..

Spring 2022.06.01

Spring 과 Spring boot

Spring과 Spring boot에 대해서 알아보도록 하겠다. Spring이란? 스프링은 웹사이트 개발을 위한 백엔드 프레임워크이다. Java의 활용도가 높아졌고 따라서 프로젝트 규모도 커지게 되었다. Java에서 JSP, MyBatis, JPA 등 여러 가지 기술을 사용하는데 이 기술을 Spring을 이용하여 좀 더 편하게 사용할 수 있다. 스프링은 자바 언어 기반의 프레임워크 자바 언어의 가장 큰 특징 - 객체 지향 언어 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임 워크이다. Spring의 특징 1. Ioc(Inversion of Control, 제어의 역행) 제어의 주체가 개발자가 아닌 프레임워크라는 뜻으로 때에따라 프레임워크가 작성된 코드를 호출하는 기술 객체의 생명주..

Spring 2022.06.01

Docker 총 정리

Docker란? 리눅스의 응용 프로그램으로 프로세스 격리 기술을 이용하여 컨테이너 실행 및 관리를 해주는 것이 도커다. 도커를 사용하는 이유? 각 개발자가 개발 세팅을 하면 버전 문제 등의 문제가 나올 수가 있다. 한 명의 개발자가 개발 세팅을 해놓고 이미지화하여 컨테이너에 저장을 하면 나머지 개발자들은 이미지만 받아서 사용만 하면 된다. vm과 docker의 차이점은? vm은 hostOS위에 새로운 OS를 설치하여 메모리 공간을 많이 차지한다. 반면 Docker는 host OS위에 필요한 라이브러리, 코드 등만 만들어서 설치하기 때문에 속도가 빠르고 메모리 공간을 많이 차지하지 않는다. Docker 이미지란? 코드, 시스템 도구, 시스템 라이브러리 및 설정과 응용 프로그램을 실행하는데 필요한 모든 것을..

컨테이너/도커 2022.05.22

Travis CI란?

Travis ci Github에서 진행되는 오픈소스 프로젝트를 위한 지속적인 통합(Continuous Integration) 서비스다. Travis ci를 이용하면 자동으로 테스트, 빌드하거나 배포할 수 있다. Travis Ci의 흐름 1. 로컬 Git에 있는 소스를 Github 저장소에 Push 한다. 2. Github master 저장소에 소스가 Push가 되면 Travis Ci에게 소스가 Push 되었다고 알려준다. 3. Travis ci는 업데이트된 소스를 Github에서 가져온다. 4. Github에서 가져온 소스의 테스트 코드를 실행해 본다. 5. 테스트 코드 실행 후 테스트가 성공하면 AWS 같은 호스팅 사이트로 보내서 배포한다. Travis ci 사용법 1. https://travis-ci..

컨테이너/도커 2022.05.22
반응형