Life Developer
인생 개발자
분류 전체보기 (141)
순수함수가 무엇?

함수형 프로그래밍에서 순수함수라는 것이 나온다.

 

순수함수는 말 그대로 순수한 함수다.

 

function add(a,b){

       return a+b;

}

 

이것이 순수함수인가?

 

그렇다.

 

순수함수를 결정하는 조건이 몇가지가 있다.

 

첫번째로 항상 동일한 인자를 주면 항상 동일한 값을 리턴한다. 이다.

 

let c=20;

function add(a,b){

       return a+b+c;

}

 

이것은 순수함수인가???

 

아니다.

 

조건 두번째로 부수효과가 없어야한다.

 

외부의 인자가 함수 안에서 변경이 되면 안된다.

 

c는 얼마든지 바꿀수 있다.

 

그럼 const 로 선언을 하면 될까?

 

const c=20;

function add(a,b){

       return a+b+c;

}

 

이렇게 되면 add는 순수함수가 된다.

 

c는 절대로 바뀌지 않으니까 말이다.

 

 

객체의 경우도 보자.

 

let obj1={ val : 10 };

function add4(obj, b){

         obj.val = obj.val+b;

}

 

이것도 역시 순수함수가 아니다.

 

obj1 객체의 val의 값이 바뀌기 떄문이다.

 

이걸 해결하려면 그냥 객체를 통째로 return 하면 된다.

 

이렇게 말이다.

 

let obj1={ val : 10 };

function add4(obj, b){

         return { val : obj.val + b };

}

 

 

다음은 일급함수가 무엇인지 알아볼 것이다.

'Developer' 카테고리의 다른 글

오라클 DECODE  (0) 2020.07.24
일급함수가 무엇?  (0) 2020.07.24
함수형 프로그래밍  (0) 2020.07.24
프레임 워크와 라이브러리의 차이  (0) 2020.07.24
디자인 패턴 종류  (0) 2020.07.24
  Comments,     Trackbacks
함수형 프로그래밍

함수형 프로그래밍이 다들 참 어렵다고들 한다.

 

먼저 함수형 프로그래밍이 뭔지부터 알아보자.

 

함수형 프로그래밍이란 성공적인 프로그래밍을 위해 부수효과(잡일제거)를 미워하고 조합성을 강조하는 프로그래밍

 

이라고 할수있다.

 

이때 부수효과를 미워한다 라는 말에서 나오는 함수형 프로그래밍 종류가 순수함수라는 것이다.

 

순수함수는 다음 게시글에.

'Developer' 카테고리의 다른 글

일급함수가 무엇?  (0) 2020.07.24
순수함수가 무엇?  (0) 2020.07.24
프레임 워크와 라이브러리의 차이  (0) 2020.07.24
디자인 패턴 종류  (0) 2020.07.24
디자인 패턴  (0) 2020.07.24
  Comments,     Trackbacks
프레임 워크와 라이브러리의 차이

일단 프레임 워크란 뭘까?

 

소프트웨어의 특정 문제를 해결하기 위해 상호 협력하는 클래스와 인터페이스의 집합. 이라고 검색하면 나온다.

 

쉽게 말해 프레임 워크란 개발시 필수적인 코드, 알고리즘, 데이터베이스 연동 등과 같은 기능들을 위해 어느정도

 

뼈대를 제공해 주는 것이다.

 

 

그렇다면 라이브러리는 뭘까?

 

라이브러리는 특정 기능에 대한 도구 or 함수들을 모든 집합이라고 한다.

 

라이브러리는 프로그래머라면 누구나 써봤을 것이고 써보지 않으려 노력해도 어차피 쓰고있는 것이다.

 

 

특정 기능에 대한 도구들이라고? 그럼 둘다 똑같은거네?

 

라고 나도 생각했다.

 

하지만 차이점을 짚어보자.

 

둘의 차이는 흐름에 대한 제어 권한이 어디 있냐의 차이이다.

 

프레임워크는 전체적인 흐름을 자체적으로 가지고 있고, 프로그래머가 그 안에 필요한 코드를 작성하는 반면

 

라이브러리는 사용자가 흐름에 대해 제어를 하며 필요에 따라 마음대로 가져다가 쓰는 것이다.

 

이 내용을 한 문장으로 정리하자면 FRAMEWORK에는 IOC가 적용되어 있다는거다.

 

전체적인 흐름을 자체적으로 가지고 개발자가 해야 할 일을 프레임 워크가 하는거다.

'Developer' 카테고리의 다른 글

순수함수가 무엇?  (0) 2020.07.24
함수형 프로그래밍  (0) 2020.07.24
디자인 패턴 종류  (0) 2020.07.24
디자인 패턴  (0) 2020.07.24
Dispatcher Servlet 이란?  (0) 2020.07.24
  Comments,     Trackbacks
디자인 패턴 종류

팩토리 패턴 - 객체 생성 처리를 서브 클래스로 분리해 처리하도록 캡슐화하는 패턴

 

싱글톤 패턴 - 전역변수를 사용하지 않고, 객체 하나만 생성하도록 하며 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴

 

프록시 패턴 - 

 

어댑터 패턴

 

MVC 패턴

 

커맨드 패턴 - 실행될 기능을 캡슐화함으로서 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴

즉, 이벤트가 발생했을 때 실행될 기능이 다양하면서도 변경이 필요한 경우에 이벤트를 발생시키는 클래스를 변경하지 않고 재사용하고자 할때 유용하다.

 

템플릿 패턴

 

'Developer' 카테고리의 다른 글

함수형 프로그래밍  (0) 2020.07.24
프레임 워크와 라이브러리의 차이  (0) 2020.07.24
디자인 패턴  (0) 2020.07.24
Dispatcher Servlet 이란?  (0) 2020.07.24
기본형 변수와 참조형 변수  (0) 2020.07.24
  Comments,     Trackbacks
디자인 패턴

개발자에게 디자인 패턴이란 무엇인가?

 

디자인 패턴이란 많은 실무 프로그래머들이 인정한 효율적인 코딩방법 or 구조 라고 보면 된다.

 

효율적인 코딩방법은

 

1. 코드가 명확단순

2.모듈(클래스나 함수)은 한가지 기능만 하도록 세분화

3.재사용성이 높음

4.유지보수가 쉬움

5.리소스의 낭비가 없거나 최소화

 

라고 볼수있다.

 

이러한 효율적인 코드를 만들기 위해 '디자인 패턴'을 익혀야 한다.

 

디자인 패턴은 외우는게 아니라, 직접 코드에 적용해보고 익혀야 한다.

차후 여러 상황에 대해 어떤 패턴을 적용 시킬것인가에 대한 판단 및 적용을 할줄 아는 능력이 필요하다.

 

 

대표적인 패턴 7가지가 있다.

팩토리 패턴

싱글톤 패턴

프록시 패턴

어댑터 패턴

MVC 패턴

커맨드 패턴

템플릿 패턴

 

이것은 다음 게시글에 설명할 것이다.

'Developer' 카테고리의 다른 글

프레임 워크와 라이브러리의 차이  (0) 2020.07.24
디자인 패턴 종류  (0) 2020.07.24
Dispatcher Servlet 이란?  (0) 2020.07.24
기본형 변수와 참조형 변수  (0) 2020.07.24
apache와 tomcat을 구분하자  (0) 2020.07.24
  Comments,     Trackbacks
Dispatcher Servlet 이란?

Dispatcher Servlet 이란

 

servlet container 에서 http 프로토콜을 통해 들어오는 모든 요청을 프레젠테이션 계층의 제일앞에 두어

 

중앙집중식으로 처리해주는 프론트 컨트롤러이다.

 

Q) Front Controller(프론트 컨트롤러)란?

 

Front Controller는 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 

처리해주는 컨트롤러인데, MVC 구조에서 함께 사용되는 패턴이다.

 

 

그래서 공통처리 작업을 Dispatcher 서블릿이 처리한 후, 적절한 세부 컨트롤러로 작업을 위임해준다.

 

물론 Dispatcher Servlet이 처리하는 url 패턴을 지정해주어야 하는데 일반적으로 /*.do와 같이 /로 시작하며

 

.do로 끝나는 url 패턴에 대해서 처리하라고 지정해준다.

 

 

장점은 뭘까?

 

스프링의 MVC는 디스패처 서블릿이 등장함에 따라 web.xml의 역할을 상당히 축소를 시켜주었다.

 

기존에는 모든 서블릿에 대해 url 매핑을 활용하기 위해 web.xml에 모두 등록해주어야 했지만, 디스패처 서블릿이

 

해당 앱으로 들어오는 모든 요청을 핸들링 해주면서 작업을 상당히 편리하게 만들어 주었다.

 

그리고 이 디스패처 서블릿을 사용하면 @MVC 역시 사용할 수 있게 되어 좋다.

 

디스패처 서블릿의 기능처리 순서를 그리면 아래와 같다.

 

정리하자면 클라이언트가 정보를 요청하면 디스패처 서블릿에서 해당 요청을 매핑한 컨트롤러를 검색한다.

 

그리고 알맞은 컨트롤러를 찾아 view이름을 디스패처 서블릿에게 다시 알려준다.

 

그리고 디스패처 서블릿은 받은 view이름을 토대로 알맞게 찾아가서 viewResolver에게 넘겨준다.

 

viewResolver는 받은 정보를 통해 처리를 하고 처리결과를 View에 넘겨준다.

 

View는 처리결과가 포함된 view를 디스패처 서블릿에 다시 전달한다.

 

마지막으로 최종결과를 클라이언트에게 던져주고 끝이난다.

'Developer' 카테고리의 다른 글

디자인 패턴 종류  (0) 2020.07.24
디자인 패턴  (0) 2020.07.24
기본형 변수와 참조형 변수  (0) 2020.07.24
apache와 tomcat을 구분하자  (0) 2020.07.24
Tomcat은 WAS일까 아닐까  (0) 2020.07.24
  Comments,     Trackbacks
기본형 변수와 참조형 변수

기본형 변수

 

boolean, char, byte, short, int, long, float, double 등

 

실제 연산에 사용되는 것은 모두 기본형 변수이다.

 

 

참조형 변수

 

기본형 8가지를 제외한 나머지 타입

 

참조형 변수를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조형 변수의 타입이 된다.

 

Date today = new Date();

 

변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조형 변수의 타입이 된다.

 

Date 클래스 타입의 참조형 변수 today를 선언한 것이다.

 

참조형 변수는 null 또는 주소를 값으로 갖는다.

 

Date today = new Date(); 에서 today는 생성된 Date 객체의 주소값을 갖는다.

 

 

 

그렇다면 참조형 변수와 참조는 같은것일까?

 

다른것이다.

 

참조는 참조형 변수가 아닌 참조값(해쉬코드)이다.

 

예를들면 Car carVal = new Car(); 의 경우 new가 반환한 참조는 new Car(); 의 반환값(주소값)이고,

 

참조형 변수는 바로 carVal 이다.

'Developer' 카테고리의 다른 글

디자인 패턴  (0) 2020.07.24
Dispatcher Servlet 이란?  (0) 2020.07.24
apache와 tomcat을 구분하자  (0) 2020.07.24
Tomcat은 WAS일까 아닐까  (0) 2020.07.24
POJO란 무엇인가?  (0) 2020.07.24
  Comments,     Trackbacks
apache와 tomcat을 구분하자

아파치란 것은 소프트웨어 단체 이름이다.

 

그리고 우리가 흔히 부르는 아파치 서버라는 것은 이 재단에서 후원하는 오픈소스 커뮤니티에서 만든 http 웹서버를

 

지칭하는 말이다. (아파치 프로젝트는 웹서버 외에도 여러가지 프로젝트를 진행하고 있다)

 

클라이언트가 get, post, delete 등등의 메소드를 이용하여 요청을 하면 이 프로그램이 어떠한 기능을 돌려주는

 

기능을 한다. 아파치는 웹서버다.

 

tomcat은 흔히 WAS라고 말한다.

 

WAS는 웹서버와 웹 컨테이너의 결합으로 다양한 기능을 컨테이너에 구현하여 다양한 역할을 수행할 수 있는

 

서버를 말한다. 클라이언트의 요청이 있을 때 내부의 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에

 

전달해주는 역할을 하는 것이 바로 웹 컨테이너이다.

 

앞에서 본 아파치 웹서버와 차이는 이 컨테이너 기능이 있냐 없냐의 차이다. 이게 큰 차이점이라고 생각한다.

 

WAS역시 웹서버로서 역할을 수행할수 있기에 둘이 너무 헷갈린다.

 

위 그림에서 알수있듯 WAS만 쓰면되지 않냐 라는 질문에 반박할수 있게 된다.

 

목적이 달라서 WAS만 사용하면 안된다.

 

웹서버는 정적인 데이터를 처리하는 서버이다. 이미지나 단순 html 파일과 같은 리소스를 제공하는 서버는

 

웹서버를 통하면 WAS를 이용하는 것보다 훨씬 빠르고 안정적이다.

 

WAS는 동적인 데이터를 처리하는 서버이다. DB와 연결되어 데이터를 주고받거나 프로그램으로 데이터 조작이 필요한

 

경우에는 WAS 활용해야한다.

 

이때 DB가 왜 동적이냐?

 

DB는 항상 변하니까.

'Developer' 카테고리의 다른 글

Dispatcher Servlet 이란?  (0) 2020.07.24
기본형 변수와 참조형 변수  (0) 2020.07.24
Tomcat은 WAS일까 아닐까  (0) 2020.07.24
POJO란 무엇인가?  (0) 2020.07.24
JAVA EJB? 이걸 버리고 SPRING을 쓴다?  (0) 2020.07.24
  Comments,     Trackbacks