전체 글 682

[SpringBoot] 내장톰캣에서 Spring Boot클래스 만들기

[SpringBoot] Main클래스에서 내장톰캣 실행시키기 [SpringBoot] 외장톰캣에서 SpringMVC 구현하기 [SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장톰캣을 사용하면서 간편해진 점을 알아보기 위 lordofkangs.tistory.com 지난 포스팅에서는 내장톰캣을 활용하여 서블릿 하나를 띄어보았다. 이번에는 SpringMVC가 적용된 Spring Boot클래스를 만들어보겠다. 1. 어노테이션 만들기 import org.springframework.context.annotation.ComponentScan; import java.lang.annotation.*; @Target(E..

Dev/SPRING 2023.04.02

[SpringBoot] Main클래스에서 내장톰캣 실행시키기

[SpringBoot] 외장톰캣에서 SpringMVC 구현하기[SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장톰캣을 사용하면서 간편해진 점을 알아보기 위해 우선, SpringBoot 이전에 사용했던 외장톰lordofkangs.tistory.com 지난 포스팅에는 외장톰캣을 활용한 SpringMVC를 구현해보았다. 개발자가 작성한 코드가 WAR로 압축되고 톰캣WAS로 배포된 뒤, WAS서버가 실행되어야 했다. 서버의 실행주체는 외장톰캣이다. 발상을 바꾸어, 어차피 톰캣도 JAVA언어로 구현되어있는데 톰캣을 라이브러리로 만들고 개발자가 톰캣설정 및 실행을 하는 코드를 구현하여 main 메소드로 실행시키면..

Dev/SPRING 2023.04.02

[SpringBoot] 외장톰캣에서 SpringMVC 구현하기

[SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전) SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장톰캣을 사용하면서 간편해진 점을 알아보기 위해 우선, SpringBoot 이전에 사용했던 외장톰캣 방식에 대해서 알아보겠다. 외장톰캣 방식이란? 개발 lordofkangs.tistory.com 지난 포스팅에서 IntelliJ에서 외장톰캣을 띄어 보았다. 이제 해당 환경에서 SpringMVC를 구현해보겠다. SprinMVC 구현 톰캣은 서블릿(Servlet)을 사용한다. 서블릿의 정의는 아래 포스팅을 참고바란다. [ JSP ] Servlet 이란? Servlet이란 Server Application Let의 줄임말이다. Let은 조각을 의미하니 서버의 조..

Dev/SPRING 2023.04.02

[SpringBoot] 외장톰캣으로 WAS 띄우기 with IntelliJ(무료버전)

SpringBoot는 내장톰캣을 사용한다. SpringBoot가 내장톰캣을 사용하면서 간편해진 점을 알아보기 위해 우선, SpringBoot 이전에 사용했던 외장톰캣 방식에 대해서 알아보겠다. 외장톰캣 방식이란? 개발자가 작성한 코드는 war파일로 WAS의 webapps 영역에 배포되어 풀린다. WAS가 외부에 있어 war파일로 압축한 뒤, 배포를 하는 방식이 외장톰캣 방식이다. 외장톰캣으로 WAS 띄우기(IntelliJ 무료버전) - explodedWar War파일은 explodedWar 방식을 사용한다. explodedWar는 압축된 War가 아닌 압축이 풀린 디렉토리 형태이다. 압축이 아니므로 변화에 대응한 성능이 좋지만 용량 문제가 있을 수 있다. build.gradle을 살펴보자. //war 풀..

Dev/SPRING 2023.04.02

MacBook에서 한영키 및 대소문자 전환 윈도우랑 맞추기

MacOs에서 가장 적응 안 되는 부분은 한/영 및 대소문자 전환이다. Capslock을 누르면 한/영 전환이 되고 길게 누르면 대소문자 전환이 된다. 이런 방식은 우리에게 익숙치 않으니, 윈도우와 동일하게 바꾸어 보자. 버전정보 : macOS Ventura 13 1. 한/영 전환 '이전 입력 소스 선택'은 '한/영 전환'을 의미한다. 한/영 전환은 Ctrl + SpaceBar 로 설정되어 있다. 이를 right command( 한/영 전환키 위치 )로 바꾸려고 한다. 하지만 눌러보면 command키로 설정이 안 됨을 확인할 수 있다. 그래서 외부프로그램 도움을 받아야 한다. Karabiner-ElementsA powerful and stable keyboard customizer ..

CS 2023.03.31

[알고리즘] BFS(Breadth-First Search) 탐색 알고리즘이란?

그래프란 노드(Node)가 있고 노드를 연결한 간선(Edge)이 있는 자료구조이다. 그래프를 완전탐색하는 기본적인 알고리즘은 DFS와 BFS이다. 탐색을 하려면 우선 자료구조가 정의되어야 한다. 그래프(Graph)는 두 가지 방식으로 표현된다. 1. 인접행렬( 2차원 배열 ) 2. 인접리스트 ( 리스트 ) 행렬은 '인덱스'가 있다. 인덱스는 랜덤엑세스를 가능하게 하여, 특정노드에 접근하는 속도가 빠르다. 하지만 배열구조로 쓰레기값이 들어있는 공간도 유지를 해야하기에 메모리낭비가 심하다. 인접리스트방식은 리스트 자료구조를 이용한다. '연결' 방식의 자료구조인 만큼, 특정 노드를 시작으로 인접노드를 순회하는 경우 유리하다. '인덱스'가 아닌 '주소'로 인접노드에 접근하니 메모리 낭비도 적다. 그러나 랜덤엑세..

[알고리즘] DFS(Depth-First Search) 탐색 알고리즘이란?

그래프란 노드(Node)가 있고 노드를 연결한 간선(Edge)이 있는 자료구조이다. 그래프를 완전탐색하는 기본적인 알고리즘은 DFS와 BFS이다. 탐색을 하려면 우선 자료구조가 정의되어야 한다. 그래프(Graph)는 두 가지 방식으로 표현된다. 1. 인접행렬( 2차원 배열 ) 2. 인접리스트 ( 리스트 ) 행렬은 '인덱스'가 있다. 인덱스는 랜덤엑세스를 가능하게 하여, 특정노드에 접근하는 속도가 빠르다. 하지만 배열구조로 쓰레기값이 들어있는 공간도 유지를 해야하기에 메모리낭비가 심하다. 인접리스트방식은 리스트 자료구조를 이용한다. '연결' 방식의 자료구조인 만큼, 특정 노드를 시작으로 인접노드를 순회하는 경우 유리하다. '인덱스'가 아닌 '주소'로 인접노드에 접근하니 메모리 낭비도 적다. 그러나 랜덤엑세..

[MODERN JAVA] 람다(Lambda)의 활용 - Predicate, Consumer, Function

[MODERN JAVA] 람다(Lambda)의 활용 - 실행 어라운드 패턴 [MODERN JAVA] 람다(Lambda)란? 파라미터로 값이 아닌 '코드'를 넘겨야 하는 순간이 있다. 이때 사용하는 기술이 '동적 파라미터화'이다. '람다'가 등장하기 전에는 동적 파라미터화는 무겁게 구현되었 lordofkangs.tistory.com 지난 포스팅에서는 람다가 사용되는 패턴을 알아보았다. 이번 포스팅에서는 자바API의 함수형 인터페이스 몇 가지를 알아보겠다. 함수형 인터페이스는 동적파라미터를 구현하기 위한 그릇이다. 동적 파라미터란, 파라미터 인수로 '코드(Code)'를 넘기는 기술로 일회적이거나 로직이 계속 변경되는 경우에 사용된다. Predicate Predicate는 참,거짓을 Return하는 함수형 인..

Dev/JAVA 2023.03.15

[OOP] 데커레이터 패턴( Decorator Pattern )

디자인 패턴이란? 객체지향설계 과정에서 발생하는 문제들을 해결하기 위한 패턴(Pattern) 문제 상황 기본 기능이 있고 옵션 기능이 여러 개일 때, 기본 기능 + 옵션 기능의 조합은 여러 가지이다. 예를 들어, 내비게이션이 있다. 내비게이션의 기본기능은 도로표시이다. 옵션 기능으로 교통량 표시, 날씨 표시, 메시먼지 표시가 있다고 해보자. 메인 기능 1가지에 옵션 기능 3가지가 있으므로, 총 9가지 조합이 생긴다. 문제는 이를 단순 상속으로 구현하려고 하면 9가지를 전부 클래스로 만들어야 한다는 것이다. 단순하게 부모로부터 기능을 상속받는 구조는 조합의 개수에 따라 구현해야하는 클래스 개수를 기하급수적으로 증가시킨다. 그래서 이런 문제를 해결하기 위한 디자인 패턴이 있으니, 그것이 데코레이터 패턴이다...

Dev/OOP 2023.03.11

[MODERN JAVA] 람다(Lambda)의 활용 - 실행 어라운드 패턴

[MODERN JAVA] 람다(Lambda)란? 파라미터로 값이 아닌 '코드'를 넘겨야 하는 순간이 있다. 이때 사용하는 기술이 '동적 파라미터화'이다. '람다'가 등장하기 전에는 동적 파라미터화는 무겁게 구현되었다. 1) 구현객체 넘기기 Lis lordofkangs.tistory.com 지난 포스팅에서는 람다의 개념을 알아보았다. 이번 포스팅에서는 람다가 활용되는 예를 알아보겠다. 람다가 활용되는 대표적인 예는 '실행 어라운드 패턴'이다. 실행어라운드패턴 파일처리는 자원을 열고(OPEN) 자원을 처리하고(PROCESS) 자원을 닫는 과정(CLOSE)을 반복한다. 이를 순환패턴이라 한다. 그렇다면 파일을 처리하는 코드는 자원을 설정(SetUp)하고 자원을 처리(Process)하고 자원을 정리(CleanU..

Dev/JAVA 2023.03.08