Programming

Programming/Java

[Java] - 4. 람다 표현식

4. 람다 표현식 람다 (인자 리스트) -> {바디} 인자 리스트 인자가 없을 때: () 인자가 한개일 때: (one) 또는 one 인자가 여러개 일 때: (one, two) 인자의 타입은 생략 가능, 컴파일러가 추론(infer)하지만 명시할 수도 있다. (Integer one, Integer two) 바디 화살표 오른쪽에 함수 본문을 정의한다. 여러 줄인 경우에 {}를 사용해서 묶는다. 한 줄인 경우에 생략 가능, reutrn도 생략 가능. 변수 캡처 (Variable Capture) 로컬 변수 캡처 final이거나 effective final인 경우에만 참조할 수 있다. 그렇지 않을 경우 concurrency 문제가 생길 수 있어서 컴파일러가 방지한다. effective final 이것도 역시 자바 ..

Programming/Java

[Java] - 3. 자바에서 제공하는 함수형 인터페이스

3. 자바에서 제공하는 함수형 인터페이스 Java가 기본으로 제공하는 함수형 인터페이스 java.util.function 패키지 자바에서 미리 정의해둔 자주 사용할만한 함수 인터페이스 Function BiFunction Consumer Supplier Predicate UnaryOperator BinaryOperator Function T 타입을 받아서 R 타입을 리턴하는 함수 인터페이스 R apply(T t) 함수 조합용 메소드 andThen compose Function plus10_1 = (i) -> i + 10; Function multiply2 = (i) -> i * 2; System.out.println("plus10_1.apply(1): " + plus10_1.apply(1)); System..

Programming/Java

[Java] - 2. 함수형 인터페이스와 람다 표현식 소개

2. 함수형 인터페이스와 람다 표현식 소개 함수형 인터페이스 (Functional Interface) 추상 메소드를 딱 하나만 가지고 있는 인터페이스 SAM (Single Abstract Method) 인터페이스 @FunctionalInterface 애노테이션을 가지고 있는 인터페이스 @FunctionalInterface public interface RunSomething { void doIt(); } public class Foo { public static void main(String[] args) { // 익명 내부 클래스 anonymous inner class RunSomething runSomething = new RunSomething() { @Override public void doIt..

Programming/Python

Python - 현재 디렉토리 위치(Working Directory) 얻는 방법

파일 이름, 파일 경로 test.py를 생성하고 아래 코드를 실행하면 파일 이름과 경로가 출력됩니다. realpath()는 심볼릭 링크 등의 실제 경로를 찾아주며, abspath는 파일의 절대경로를 리턴합니다. import os print(__file__) print(os.path.realpath(__file__)) print(os.path.abspath(__file)) /python/a/b/test.py /python/a/b/test.py /python/a/b/test.py 현재 파일의 디렉토리(폴더) 경로 os.getcwd()는 폴더 경로를 리턴합니다. os.path.dirname()는 파일의 폴더 경로를 리턴합니다. import os print(os.getcwd()) print(os.path.dir..

Programming/SpringMVC

타임리프 - 기본 기능

목차 프로젝트 생성 - 스프링 공식 홈페이지에서 프로젝트 구성 (https://start.spring.io) - IntelliJ Ultimate 이상이면 자체적으로 생성가능 프로젝트 구성 Project: Gradle - Groovy Language: Java Sprng Boot: 2.5.x Protject MetaData - Group : hello - Artifact: thymeleaf-basic - Name: thymeleaf-basic - Package name: hello.thymeleafbasic - Packaging: Jar - java: 11 Dependencies - Spring Web - Thymeleaf - Lombok build.gradle plugins { id 'org.spring..

Programming/SpringMVC

스프링 MVC - 웹 페이지 만들기

목차 프로젝트 생성 스프링 공식 홈페이지에서 프로젝트 구성 (https://start.spring.io) IntelliJ Ultimate 이상이면 자체적으로 생성가능 프로젝트 구성 프로젝트 선택 Project: Gradle - Groovy Language: Java Sprng Boot: 2.4.x Protject MetaData Group : hello Artifact: springmvc Name: springmvc Package name: hello.springmvc Packaging: Jar java: 11 Dependencies Spring Web Thymeleaf Lombok build.gradle plugins { id 'org.springframework.boot' version '2.4.3'..

Programming/SpringMVC

스프링 MVC - 기본 기능

목차 프로젝트 생성 - 스프링 공식 홈페이지에서 프로젝트 구성 (https://start.spring.io) - IntelliJ Ultimate 이상이면 자체적으로 생성가능 프로젝트 구성 Project: Gradle - Groovy Language: Java Sprng Boot: 2.4.x Protject MetaData - Group : hello - Artifact: springmvc - Name: springmvc - Package name: hello.springmvc - Packaging: Jar - java: 11 Dependencies - Spring Web - Thymeleaf - Lombok 주의! Packaging는 War가 아니라 Jar를 선택해주세요. JSP를 사요하지 않기 때문에 ..

Programming/SpringMVC

스프링 MVC - 구조 이해

스프링 MVC 전체구조 직접 만든 MVC 프레임워크와 스프링 MVC를 비교해보자. 직접 만든 MVC 프레임워크 구조 SpringMVC 구조 직접 만든 프레임워크 스프링 MVC 비교 FrontController -> DispatcherServlet handlerMappingMap -> HandlerMapping MyHandlerAdapter -> HandlerAdapter ModelView -> ModelAndView viewResolver -> ViewResolver MyView -> View DispatcherServlet 구조 살펴보기 org.springframework.web.servlet.DispatcherServlet 스프링 MVC도 프론트 컨트롤러 패턴으로 구현되어 있다. 스프링 MVC의 프론..