spring.txt

교육을 듣고 곧바로 내용정리를 해야하는데 밥먹고 몸이 나른해지니 늦게 글을 씁니다 . . . .


좀 더 부지런하게 움직여야하는데, 내일은 퇴근하고 바로 작성해야지요.. !


전체적으로 중요한 내용 또는 내가 이해하지 못했던 내용들을 위주로 자세히 풀어나갈 것 입니다.



1. 객체지향 기반 5대 원칙


  A. SRP (단일책임의 원칙 : Single Responsibility Principle)


      - 작성된 하나의 클래스는 하나의 기능만 가지며 클래스가 제공하는 모든 서비스는 그 하나의 책임을 수행하는 데 집중

        되어 있어야 한다는 원칙.


      - 클래스는 자신의 이름이 나타내는 일을 해야 합니다. 올바른 클래스 이름은 해당 클래스의 책임을 책임을 나타낼 수 

        있는 가장 좋은 방법입니다.


  B.  OCP (개방폐쇄의 원칙 : Open Close Principle)


      - 소프트웨어의 구성요소(컴포넌트, 클래스, 모듈, 함수)는 확장에는 열려있고, 변경에는 닫혀있어야 한다는 원리입니다.

        이것은 변경을 위한 비용은 가능한 줄이고 확장을 위한 비용은 가능한 극대화 해야 한다는 의미로, 요구사항의 변경이

        나 추가사항이 발생하더라도, 기존 구성요소는 수정이 일어나지 말아야 하며, 기존 구성요소를 쉽게 확장해서 재사용

        할 수 있어야 한다는 뜻입니다.



더 많은 내용은 아래 링크 


출처 : http://www.nextree.co.kr/p6960/



2. 멀티 프로세스(Multi Process)와 멀티스레드(Multi Thread)


   A. 멀티 프로세스 특징


      - 부모 - 자식 관계라고 해도 자신만의 메모리 영역을 가지게 된다.


      - 환경변수와 프로세스 핸들 테이블이 상속 가능할 뿐 결국 독립적인 관계이다.


      - fork를 통해 프로세스를 복사한다.


      - 유닉스 계열에서 ps 명령어로 현재 수행되고 있는 프로세스를 확인할 수 있다.

  

      - 프로세스 간의 통신을 하려면 IPC(Inter Process Communication)를 통해야 한다.


           


    B.  멀티 스레드 특징


       - 하나의 프로세스가 다수 개의 작업을 각각 스레드를 이용하여 동시에 작동 시킬 수 있다.


       - 스레드는 다음과 같은 공유 메모리를 가진다.


        



   C. 멀티 스레드는 멀티 프로세스에 비해 상당한 이점을 가진다.


      1. 컨텍스트 스위칭(Context Switching)시에 공유 메모리 만큼의 시간(자원) 손실이 줄어든다.

          : 프로세스 간의 컨텍스트 스위칭시 단순히 CPU 레지스터 교체 뿐만이 아니라 RAM과 CPU사이의 캐쉬메모리 대한

            데이터 까지 초기화 되므로 상단한 부담이 발생한다.


      2. Stack을 제외한 모든 메모리를 공유하기 때문에 global(전역), static(정적)변수 그리고 new, malloc에 의한 모든 자료를

         공유할 수가 있다.

          : 이는 프로세스간 통신(ex. pipe)과 같이 복잡한 과정을 거치지 않고 보다 효율적인 일처리가 가능하다는 것을 뜻한다.

            (핸드 테이블과 환경변수는 덤이다.)


출처 : https://you9010.tistory.com/136



3. HTTPD란?


   httpd란 HTTP Protocol을 지원하는 daemon입니다. HTTP Protocol이란 통신규약중 하나로서 브라우저에서 해독가능한

   파일, 즉 HTML 파일을 전송해주는 규약입니다. 마찬가지로 FTP를 지원하는 daemon은 ftpd이며, telnet을 지원하는

   daemon은 telnetd입니다. httpd란 다른말로 http를 지원하는 서버라 할 수 있으며, 우리가 흔이 Web Server를 구축한다는

   말은 좁은뜻으로 httpd를 수행한다는 말과 같습니다. 현재 전세계적으로 가장 많이 사용되는 httpd로는 apache이며, 이는

   Open Source로 제공하기 때문에 Linux의 기본 httpd입니다.



4. Spring Framework LifeCycle



브라우저로 부터 요청(Request)을 받고 응답(Response)하기까지 Spring MVC의 처리 흐름은 위와 같다.


※ Contoller, Service, DAO는 개발자가 구현하는 부분이고, 객체를 생성하고 관리하는 것은 DI기법으로 관리한다.


1. 먼저 브라우저로부터 요청이 들어오면 일단 Filter을 거치게 된다. Filter에서 하는 대표적인 처리를 보면 Encoding이 있다.




2. 다음으로 DispatcherServlet이 Controller에 요청을 전달하기 전에 가로챈다. 요청을 가로챈 후 HandlerMapping을 통해

   요청에 해당하는 적절한 Controller을 찾게 된다. 그리고 DispatcherSelvlet에 그것을 전달한다.


3. DispatcherServlet은 실행할 Controller정보를 HandlerAdapter에 전달하게 된다.


4. HandlerAdapter는 해당 Controller를 호출하게 된다.


5. Controller에서는 전달된 요청을 처리한다. 예를 들어 게시판의 글 목록을 가져오는 요청을 받으면 Controller는 게시판

   Service를 호출하고 Service에서는 DAO를 통해 게시판 글 목록을 가져오게 된다.


요청을 처리한 후 그 결과를 Model에 담고, View의 이름을 HandlerAdapter에게 전달하게 된다.


6. 전달받은 View의 이름을 가지고 ViewResolver에서 매핑된 View를 찾아서 반환한다.


7. DispatcherServlet은 반환된 View를 넘기게 된다.






※ 글을 작성하는 도중 갑자기 브라우저가 다운되어 전부 날아감.. 너무 화가나고 손이 바들바들떨림..

   고로 그냥 수업시간때 받아적은 텍스트 파일을 첨부.

   어차피 아래에 큰 내용은 없으니까 가볍게 읽을 수 있음.......

















+ Recent posts