MVC 1, MVC 2 차이

개발/이론 2017. 12. 6. 16:37

Model1
웹브라우저의 요청을 JSP가 담당. 
JSP가 요청을 받고 해당 요청에 대한 처리를 위해 빈즈와통신.
빈즈가 처리결과를 주면 그것을 클라이언트에 전달.

장점 - 구조간단 / 개발이 쉽다 -> 개발기간이 짧다.
단점 - 유지보수 어렵다 / 개발자와 디자이너가 말이 잘 통해야하는 수고스러움 존재


Model2
클라이언트와 JSP사이에 컨트롤러가 끼어듬.
요청을 컨트롤러(Servlet)이 처리.
요청에 따른 처리를 위해 빈즈와 통신.
응답할 JSP를 선택 응답.

장점 - 컨트롤과 뷰의 분리로 유지보수 좋다 / 개발 디자인 역할 분담
단점 - 높은 수준의 이해도 / 설계에 많은 투자 -> 개발기간 길다.

 


 

선택!
규모가 작고 유지보수 적으면 Model1
규모가 크고 유지보수 많으면 Model2

MVC가 하는일
Model - 데이터의 생성, 저장, 처리
View - 결과를 보여주고 입력을 받는 화면을 구성
Controller - 입력, 흐름 제어 / 요청을 M에게, M의 결과를 V에게.

구현에 있어서...
C(servlet) - doGet, doPost로 요청을 받음. JSP선택시 RequestDispatcher의 forward를 사용.
M(DAO) - db에 쿼리를 날리고 결과를 받아 빈즈를 주고 받으며 처리
V(JSP) - 전송 받은 빈즈를 화면에 살살살 뿌려줌.

※ redirect VS dispatcher
redirect - 클라이언트(브라우저)에게 알려준 주소로 서버에 다시 요청해라라는 의미
dispatcher - 서버에서 페이지를 바꿔서 다시 보여줌.



출처: http://creator0609.tistory.com/entry/MVC1-MVC2-차이 [으샤으샤 개발소]

 

'개발 > 이론' 카테고리의 다른 글

자바 세마포어( JAVA Semaphore )  (0) 2015.12.29
자바 Referenced Libraries 만들기  (0) 2013.10.08
9월 11일  (0) 2013.09.12
9월 9일  (0) 2013.09.12

자바 세마포어( JAVA Semaphore )

개발/이론 2015. 12. 29. 17:36

- 프로세스간 메세지 전송을 하거나, 혹은 공유메모리를 통해서 특정 data를 공유하게 될경우

   발생하는 문제는, 공유된 자원에 여러개의 프로세스가 동시에 접근을 하면서 발생한다. 

   단지 한번에 하나의 프로세스만 접근 가능하도록 만들어 줘야 하고,

   이때 세마포어를 쓴다.

 

- 쓰레드에서는 뮤텍스, 프로세스에서는 세마포어

- 교착상태

 

 

A 프로세스가 k 에 접근하고 나오면 k = 2 라는 값을 예상할수 있다.

   A 프로세스가 k 에 접근했을때, B 프로세스가 k 에 접근을 하고 일을 하고 나오면, k = 2 가 되고,

   A 프로세스가 그후로 일을 하면 k = 3 이 된다.

   즉, 예상한 값을 얻을수 없다.

   이를 방지 하기 위해,

   A 프로세스가 접근 했을때 다른 프로세스의 접근을 막고,

   끝난후 접근을 풀어 준다.

   이를 세마포어로 접근을 막고 접근을 허용 할수 있다.   

 

- 차단을 원하는 자원에 대해서 semaphore를 생성하면 해당자원을 가리키는

   semaphore 값이 할당 된다.

   이 값이 0 이면 해당자원에 접근할수 없고,

              0 보다 크면 해당자원에 접근할수 있다.

 

 

-  그러므로, 자원에 접근하기 전에 semaphore 값을 검사해서

   값이 0이면 자원을 사용할수 있을때까지 기다리고,

   0보다 더 크면 자원에 접근해서 semaphore 값을 0 으로 감소 시켜서,

   다른 프로세스가 자원에 접근 할수 없도록 하고,

   자원의 사용이 끝나면 다시 semaphore 값을 증가 시켜 다른프로세스가 사용할수 있게 해준다.

 

 

 

 

 

 

==== 세마포어 예제 ===

 

package mvnoServer;
import java.util.concurrent.Semaphore;


public class semaphoer_test
{
 public static void main(String[] args)
 {
  Semaphore se = new Semaphore(3);
  SyncMulti th1 = new SyncMulti(se,"1");
  SyncMulti th2 = new SyncMulti(se,"2");
  SyncMulti th3 = new SyncMulti(se,"3");
  SyncMulti th4 = new SyncMulti(se,"4");
  
  th1.start();
  th2.start();
  th3.start();
  th4.start();
  
 }
}
-----------------------------------------------

 

package mvnoServer;
import java.util.concurrent.Semaphore;


public class SyncMulti extends Thread
{

 // 동시에 수행될 수 있는 스레드의 개수를 설정 하는 클래스


 Semaphore sem;
 String msg;
 public SyncMulti(Semaphore sem, String msg)
 {
  super();
  this.sem = sem;
  this.msg = msg;
 }
 public void run()
 {
  try
  {
   sem.acquire(); //실행한다.
   System.out.println(msg);
   Thread.sleep(5000);  //5초간 딜레이
   sem.release(); //끊어준다

  //세마포어를 실행시키고 5초 후에는 세마포어를 끊어준다.
  }
  catch(Exception e)
  {
   
  }
 }
}
=================================================

결과값.

1,2,3 이 시작되고, 5초 후에 4가 실행된다.

 

 

 

 

 

 

 

'개발 > 이론' 카테고리의 다른 글

MVC 1, MVC 2 차이  (0) 2017.12.06
자바 Referenced Libraries 만들기  (0) 2013.10.08
9월 11일  (0) 2013.09.12
9월 9일  (0) 2013.09.12

자바 Referenced Libraries 만들기

개발/이론 2013. 10. 8. 15:50

자바 Referenced Libraries 만들기  +   [Sist/java]   |  2013/10/01 20:14

자바에서 직접 라이브러리를 만들어서 활용해보자.

1. 생성할 프로젝트를 정한다.



2. 지정한 프로젝트에 마우스를 대고 우클릭을하고 Export를 클릭한다.



3. Export창이 뜨는데 Java를 클릭해보면 JAR file이 보인다 (Jar 만들 소스를 컴파일 함과 동시에 Jar로 만들어준다) Next.



4. Jar Export창에서 Jar파일을 만들 소스와 export할 위치를 설정해준다. 

(javaPrj - src - exam패키지 안에 Record와 RecordView를 묶어서 Jar파일을 생성)



5. 라이브러리를 불러올 프로젝트 마우스 우클릭 - Build Path - Configure Build Path


 

6. Properties for javaPrj창이 뜬다.


7. Java Build Path메뉴에서 Libraries탭을 선택한 후 Add External JARs...를 클릭



8. jar파일을 불러온다



9. 생성된 라이브러리를 확인할 수 있다. OK를 누르자



10. 왼쪽아래 Referenced Libraries가 생성된 것을 확인할 수 있다.


 

 

출처 : http://adiosamigos.tistory.com/17

'개발 > 이론' 카테고리의 다른 글

MVC 1, MVC 2 차이  (0) 2017.12.06
자바 세마포어( JAVA Semaphore )  (0) 2015.12.29
9월 11일  (0) 2013.09.12
9월 9일  (0) 2013.09.12

9월 11일

개발/이론 2013. 9. 12. 09:48

※플랫폼 - 1.기반도구 2.세상은 플랫폼과 절차가 있다. 3.일반적으로 하드웨어

    4. 절차(프로그램)를 수행하기 위한 도구. 5.만들고자 하는 환경에 부합하는 도구

ex) 연극을 보기 위한 절차가 있고 배우등이 플랫폼 

※함수 - 1.구현 되는 내용을 숨긴다 2.코드의 간소화

※운영체제 - 함수의 입출력 관리

※API (Application Program Interface) - 응용프로그램을 만드는데 사용되는 인터페이스

※Interface - 서로 다른 공간을 이어주는 매개체 (함수를 이용)

※출력 버퍼(Out Put Stream)를 만들고, Write -> 운영체제 -> 출력장치

                                                             ⤷여기까지 캡슐이라고 한다.

※Flush - 버퍼에 차있는것을 출력해달라고 하는 역할.

※자바는 2byte 코드를 사용 (유니코드)

※개체와 객체의 차이

1.소년이 야구공을 던지고 있다 (여기서 소년은 객체) - 실제적으로 존재 하고 있는 사람.

2.소년은 일반적으로 소녀보다 시끄럽다 (여기서 소년은 개체) - 객관적으로 예를 든 사람.

'개발 > 이론' 카테고리의 다른 글

MVC 1, MVC 2 차이  (0) 2017.12.06
자바 세마포어( JAVA Semaphore )  (0) 2015.12.29
자바 Referenced Libraries 만들기  (0) 2013.10.08
9월 9일  (0) 2013.09.12

9월 9일

개발/이론 2013. 9. 12. 09:47

※자바 프로그래밍-  자바를 이용한 컴퓨터 프로그래밍

※컴퓨터 프로그램 - 컴퓨터로 하여금 어떠한 기능을 할 수 있도록 지시하는 명령어들의 집합 (컴퓨터가 수행할 절차)

※컴퓨터 - 단순 반복적인 일을 빠르게,정확하게 하기 위해 (계산기)

※프로그램 - (목적을 이루기 위한) 수행절차

※코드화 - 어떤 대상을 문자나 기호로 표현하는 것

※숫자코드 - 이해,표현은 어려우나 실행은 쉽다

※어셈블리어 - 

※컴파일러 - 논리 코드를 물리 코드로 변환시켜주는 소프트웨어
 

※논리코드(독립적) - 물리코드(종속적)

'개발 > 이론' 카테고리의 다른 글

MVC 1, MVC 2 차이  (0) 2017.12.06
자바 세마포어( JAVA Semaphore )  (0) 2015.12.29
자바 Referenced Libraries 만들기  (0) 2013.10.08
9월 11일  (0) 2013.09.12