Builder 빌더패턴은 객체의 생성과정과 표현방법을 분리하여, 다양한 구성의 인스턴스를 만드는 생성 패턴이다. 생성자에 들어갈 변수를 각각 메소드로 받고, 마지막에 통합 빌드하여 객체를 생성한다. 빌더패턴의 탄생 배경 1) 점층적 생성자 패턴 점층적 생성자 패턴은
콜라문제는 빈병을 주고 새병을 받아 또 빈병을 만들고, 그 빈병으로 새병을 받고 또 빈병을 만들고 ... 같은 매커니즘을 반복하는 알고리즘이었다. 그래서 재귀함수를 사용해 문제를 풀어보았다.
너비우선탐색이라고도 불린다. 그래프를 깊게보다는 가까운 노드부터 넓게 탐색하는 알고리즘이다.BFS의 탐색 순서는 다음과 같다. 탐색 시작 노드를 큐에 삽입하고 방문처리를 한다.큐에서 노드를 꺼내 해당 노드의 인접노드 중에서 방문하지 않은 노드를 모두 큐에 삽입하고 방문
DFS(Depth-First Search) 깊이우선탐색이라고도 불린다. 그래프에서 깊은 부분을 우선적으로 탐색하는 알고리즘이다.
Lombok에서 제공하는 생성자 어노테이션은 3가지가 있다.아무 인자가 없는 생성자를 생성해준다.꼭 필요한 변수만 인자로 받아 생성자를 구현한다. 꼭 필요한 변수를 결정짓는 것은 final 혹은 @NotNull 어노테이션이다. 이렇게 필수적으로 정의되어야하는 변수를 인
Tomcat의 3가지 구성요소 1) Coyote 코요테는 웹서버의 역할을 한다. 클라이언트로부터 들어온 http 요청을 처리하며, 톰캣에 TCP를 통한 프로토콜을 생성하고 관리한다. 2) Catalina 카탈리나는 톰캣의 가장 코어 요소인 서블릿 컨테이너이다. 자바
토이프로젝트를 해야지 해야지 계속 미루다가... 회사 SI를 하면서 운동도 다니고 취미댄스도 하다보니, 토이프로젝트는 거들떠 볼 여유도 없이 회피하고만 있었다. 하지만 이제는 더이상 물러날수 없어서 하나하나씩 공부하며 프로젝트에 적용해보는 식으로 진행하려한다. 개
HTTP의 비상태성(Stateless) HTTP는 비상태성이라는 특성을 가진다. 서버는 클라이언트의 상태를 저장하지 않으며, 따라서 이전 요청과 다음요청의 맥락이 이어지지 않는다. HTTP는 이전에 발생한 통신을 기억하지 못하기 때문에, 이전에 클라이언트가 인증과정을
의존성 주입(Dependency Injection)이란 클래스간 의존성을 클래스 외부에서 주입하는 것을 의미한다. 객체지향 프로그래밍에서 클래스간 의존성이 있다는 것은, 클래스간의 의존관계가 존재함을 의미한다. 이는 한 클래스가 바뀔때 다른 클래스가 영향을 받는다는
IPC (Interprocess Communication) 독립적인 프로세스는 프로세스끼리 자원을 공유할 필요가 없기 때문에, CPU스케줄링을 잘해주면 프로세스간에 영향을 미치지 않는다. 하지만 프로세스간 협력이 필요한 경우엔 자원을 공유해야한다. IPC란 프로세스들
관점지향 프로그래밍관점을 기준으로 다양한 기능을 분리하여 보는 프로그래밍이다. 여기서 관점이란, 공통 관심사(모듈) 정도로 스스로 해석했다.웹 어플리케이션은 핵심 비즈니스 로직과 그 애플리케이션 전체를 관통하는 부가 기능 로직이 있다. (예를 들어 로깅, 보안, 트랜젝
그리디 알고리즘 (탐욕법) 그리디는 이름에서 알 수 있듯, 단순하고 탐욕적으로 문제를 해결하는 방법이다. 이때 탐욕적이라는 말은 '현재 상황에서 지금 당장 좋은것만 고르는 방법'을 의미한다. 그리디 알고리즘에서 현재의 선택은 미래를 고려하지 않는다. 거스름돈 그리디의
스프링부트에는 내장 톰캣이 설정되어있다. 그런데 회사 프로젝트의 pom.xml에는 embedded tomcat을 사용하지 않고 외부 tomcat을 사용하도록 설정해두었다. 왜 이렇게 설정해두었는지 궁금해서 톰캣에 대하여, 웹서버에 대하여 좀더 다루어보고자 한다. 웹
스프링부트를 공부하다보면 application.yml 혹은 application.properties 파일을 보게된다. 둘다 서버정보나 profile 등을 설정할 수 있는 외부설정파일이지만, 어떤 경우에 yml을 쓰고 properties를 쓰는지 궁금해서 공부해보고자 한
회사에서 스프링부트를 사용하는 si를 두번이나 진행했지만, gradle과 maven의 정확한 차이점을 알고있지 못했다.스스로 토이프로젝트를 생성하려다 gradle을 선택해야할지, maven을 선택해야할지 몰라서 끄적여보는 공부일지.maven과 gradle은 빌드과정에서
스프링부트는 main 메소드가 선언된 클래스를 기준으로 실행된다.@SpringBootApplication 어노테이션은 스프링부트의 가장 기본적인 설정을 선언해준다.해당 어노테이션을 상세히 보면, 아래와 같은 어노테이션들이 다시 선언되어 있다.이 중에서 눈여겨볼 설정은
스프링은 라이브러리간의 의존성 관리와 버전충돌을 방지하기 위해 spring-boot-starter와 spring-boot-starter-parent를 제공한다.위 두가지는 스프링부트를 사용하면서 자주 사용하게 되는 라이브러리간의 의존성, 버전 조합을 각각 테스트하여 공
스프링 부트 제품 수준의 어플리케이션을 쉽게 만들 수 있도록 도와주는 도구. 톰캣과 스프링 설정에 대한 컨벤션을 제공. 스프링부트's Goal 더 빠르고 폭넓은 사용성 제공 사용자가 골치아프게 환경설정하지 않도록 컨벤션으로 정해져 있는 설정을 제공 또한 쉽고 빠르게
런타임이란? 프로그래밍 언어가 구동되는 환경을 의미한다. 자바스크립트 런타임 자바스크립트가 구동되는 환경. 자바스크립트 런타임의 종류 웹브라우저 프로그램(크롬, 파이어폭스, 익스플로러 등) Node.js V8엔진이란? 오픈소스 자바스크립트 엔진 중 하나. 자바스