DDD 사용법


A.    정의

Display Data Debugger로 다른 디버거보다 사용하는데 편리한 인터페이스를 제공하고, 디버깅에 필요한 환경을 손쉽게 설정할 수 있다. 기본적으로 gdb를 기반으로 하여 인터페이스만을 제공한다.

 

B.    설치

Ubuntu : $ sudo apt-get install ddd

 

C.    실행

$ ddd

$ ddd <program>

$ ddd <program> core

“core”라는 파일은 프로그램의 실행 중에 문제가 있을 때마다 생성되는 파일로 프로그램에 대한 많은 정보를 담고 있다. 만약 시스템이 코어덤프를 만들지 않는다면 코어에 관련된 환경 변수를 확인하면 된다.

$ ddd <program> <process_id>

       process_id는 프로그램이 실행되고 있는 중간에도 디버깅을 할 수 있게 해준다.

 

D.    DDD창 설명

 

-       소스창 : 브레이크 포인트 설정, 자료구조 선택 등에 사용

-       명령창 : ddd 명령어 집합을 나타내며, 사용자는 이를 통해 명령을 내림

-       gdb 콘솔 : gdb에게 직접 명령을 내리거나 ddd에서 print 명령에 대한 결과 출력시 사용

 

E.     명령어

-       Interrupt : 프로그램 강제 종료

-       Step : 프로그램을 한 행씩 수행, 함수 호출을 만나게 되면 함수 내부로 들어감

-       Next : 프로그램을 한 행씩 수행, 함수 호출을 만나면 함수 내부로 들어가지 않음

-       Stepi : 어셈블리 레벨에서 명령어 하나씩 수행, Step과 같이 함수 호출을 만나면 함수 내부로 들어감

-       Nexti : 어셈블리 레벨에서 명령어 하나씩 수행, Next와 같이 함수 호출을 만나면 함수 내부로 들어가지 않음

-       Until : 반복문을 벗어남

-       Finish : 함수를 벗어남

-       Cont : 다음 브레이크 포인트를 만날 때까지 계속 수행

-       Kill : 프로그램 수행 종료

-       Up : 상위 스택 프레임으로 이동

-       Down : 하위 스택 프레임으로 이동

-       Undo : 이전 상황으로 자료구조 값들을 되돌림

-       Redo : Undo 수행 이전 상황으로 되돌림

-       Edit : 소스의 내용이 수정되었다면 수정된 소스를 소스창에 보이기 위해 사용

-       Make : 프로그램을 새로 컴파일

 

F.     Break Point

-       Break Point 생성을 원하는 지점의 행이 시작되는 부분에 마우스 오른쪽 버튼 클릭

-       Set Break Point 선택

 

G.    Break Point 메뉴

-       Set Temporary Breakpoint : 일회성 브레이크 포인트 생성, X가 붙은 STOP 마크로 표현

-       Countinue Until Here : 반복문 수행 중 각 반복 후 멈출 위치를 지정

-       Set Execution Position : 프로그램 실행 경로를 지정한 위치로 점프

 

H.    Break Point 조건 설정

-       Break Point에서 마우스 오른쪽 버튼 클릭

-       Properties 선택

-       Condition 속성 설정 후 조건 지정

 

I.      Break Point 설정 메뉴

-       Disable Breakpoint : 브레이크 포인트를 일시적으로 끔

-       Delete Breakpoint : 설정한 브레이크 포인트 제거

Posted by OnewayK
,
1. 프로세스의 개념
A. 기본 개념
- 정의 : 프로그램이 실행되는 상태(state)로서 일련의 작업 단위이다.

- 특징
+ 능동적(active) 
*프로그램은 디스크에 저장된 파일이며 수동적이다.
+ 코드, 스택, 자료로 구성

- 프로세스의 구성
+ 신규(new) : 프로세스가 생성 중
+ 준비(ready) : 프로세스가 설정되어 대기 중
+ 실행(running) : 프로세스가 실행하는 중
+ 대기(waiting) : 프로세스가 이벤트 발생을 대기 중
+ 종료(terminated) : 프로세스가 실행을 종료

- 프로세스의 상태도

- 프로세스 제어 블록(PCB, Process Control Block)

+ PCB 특정 프로세스에 대한 정보를 가진 데이터 블록/레코드

+ 프로세스의 변화하는 모든 정보에 대한 기억 장소 역할

+ 구성

> 프로세스 상태(state)

> CPU 레지스터들, CPU 스케줄링(scheduling) 정보

> 프로그램 카운터(program counter)

> 메모리 관리 정보

> 계정(accounting) 정보

> 입출력 상태 정보


- 프로세스 간 CPU Switching        



B. 프로세스 스케줄링

- 스케줄링 큐란?

+ 스케줄링을 위해 PCB들이 연결되는 큐가 필요해짐

+ 큐의 연결 상태 : 활동체인(active chain)과 정적 체인(static chain)

+ 종류

* 작업 큐 : 프로세스가 시스템에 들어가면 작업 큐에 입력

* 장치 큐 : 특정 입출력 장치를 대기하는 프로세스 리스트

* 준비완료 큐 : 주 기억 장치에 상주하면서 준비 상태에서 실행을 기다리는 프로세스들로 구성

+ 프로세스 스케줄링의 표현                



- 스케줄러

+ 단기(CPU) 스케줄러

* 개념

> 실행 준비가 되어 있는 프로세스들 중 한 프로세스를 선택하여 CPU 할당

> 스케줄링은 프로세스간 문맥교환(Context Switching)이 일어나는 것

* 종류

> 스케줄링 알고리즘(miliseconds)

+ 장기(작업) 스케줄러

* 개념

> 디스크 공간에 제출된 프로세스들을 선택하여 주기억장치로 적재

> 최상 성능의 시스템은 I/O bound의 CPU bound의 적절한 혼합이 필요

> 다중 프로그래밍 제어

* 종류

> 프로세스 준비상태(seconds, minutes)

> 다중 프로그래밍의 정도

> 입출력과 계산 작업 혼합 

+ 중기 스케줄러

* 개념

> 메모리 공간 확보 또는 프로세스 혼합을 개선하기 위한 디스크 교체

> 교체된 프로세스를 다시 메모리로 적재


- 문맥교환(Context switch)

+ 정의

* CPU를 다른 프로세스로 전환하기 위해 이전의 프로세스 상태를 보관하고 새 프로세스를 보관된 상태로 적재하는 작업

* 전환하는 동안 어떠한 유용한 작업도 불가능

+ 문맥교환 시간

* 하드웨어 지원에 의해 결정

> 기억장치 속도, 레지스터 수, 특권명령 등

* 운영체제가 복잡할수록 문맥교환에 더 많은 작업 요구

'2015-2학기 > 운영체제' 카테고리의 다른 글

제 1장 운영체제와 컴퓨터 시스템 구조  (0) 2015.10.29
Posted by OnewayK
,
  1. 운영체제란?
    • 정의 : 컴퓨터 사용자와 컴퓨터 하드웨어 사이에서 중재자 역할을 수행하는 프로그램
    • 목적
      • 사용자가 프로그램을 수행하기 위해 컴퓨터와 쉽게 인터페이스 할 수 있는 환경 제공
      • 사용의 편리함 제공(효율성에 중점)
    • 운영체제가 하는 일
      • 운영체제 사용자와 시스템의 중재자 역할
      • 자원 할당 및 제어
        • 모든 자원을 관리
        • 효율적이고 공정하게 운영될 수 있또록 각 요청에 대한 자원 할당 결정
      • 사용자 프로그램 수행 제어
        • 컴퓨터의 부적절한 사용 방지를 위해 사용자의 수행 제어
  2. 컴퓨터 시스템 구조
    • 컴퓨터 시스템 구성 요소
      • 하드웨어
      • 사용자
      • 응용프로그램
      • 운영체제


'2015-2학기 > 운영체제' 카테고리의 다른 글

제 2장 프로세스  (0) 2015.10.29
Posted by OnewayK
,

01. 주석

  • 주석이란?
    • 주석은 프로그램 소스에 텍스트로 된 간단한 설명문을 넣는 것을 말한다.
    • C언어를 비롯한 대부분의 프로그램 언어가 주석을 사용하기 위한 문법을 제공하고 있다.
    • JSP는 특성상 자바, HTML, JSP 코드가 섞여 있으므로 주석도 혼용해서 사용한다.
      1. HTML 주석 : 클라이언트로 전달되는 주석
        • 일반적인 HTML 문서에서 사용 가능한 주석으로 화면에는 보이지 않지만 브라우저 소스보기를 하면 내용이 노출됨.
          • <!--주석입니다.-->
      2. JSP 주석 : 클라이언트로 전달되지 않는 주석
        • JSP 파일에서만 사용 가능한 주석으로 브라우저 소스보기를 해도 내용이 노출되지 않음.
          • <%--주석--%>
02. 지시어
  • 지시어(Directives)란?
    • 지시어(Directives)는 JSP 파일의 속성을 기술하는 JSP 문법
    • JSP 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지 전달하기 위한 내용을 담고 있다.
    • 지시어는 크게 page, include, taglib으로 나눌 수 있으며, 각각에서 다루는 속성이 다르다.
  1. page 지시어
    • page 지시어는 현재 JSP 페이지를 컨테이너에서 처리하는 데 필요한 각종 속성을 기술하는 부분
    • 보통 JSP 페이지 맨 앞에 위치함
    • 여러 줄에 나누어 작성할 수도 있음.
    • 이클립스 개발 도구를 이용해 jsp 파일을 생성하는 경우 기본적인 page 지시어는 자동 생성됨.
    • 필요에 따라 속성을 추가해 사용    
    • Page 지시어와 JSP의 한글 처리
      • Page 지시어에서 중요한 부분 중 하나는 한글 처리 부분임
      • JSP에서는 다음과 같이 3단계로 캐릭터셋을 설정함
      • 위 설정에서 캐릭터셋 설정을 찾지 못할 경우 ISO8859-1을 적용한다.
      • 페이지 지시어에 다음과 같이 한글 속성 설정
        • pageEncoding="UTF-8", contentType="text/html;charset="UTF-8"
      1. import
        • import는 JSP 스크립트 부분에서 자바 클래스를 사용하는 경우 해당 클래스의 패키지에 대한 import 설정으로 기본적으로 자바에서와 동일하다.
        • 다만 패키지 import 구분을","을 이용하거나 라인 단위로 작성해야 한다.
      2. session
        • 세션은 웹 브라우저와 웹 서버가 지속적인 클라이언트 인식을 위해 필요한 정보를 임시로 저장해두는 방법
        • 주로 웹 사이트에 로그인하거나 쇼핑몰에서 장바구니 등을 구현할 때 사용된다.
        • 기본 값이 true(세션을 사용한다)이므로, 일부러 사용을 제한할 목적이 아니라면 별도로 설정하지 않아도 됨
      3. buffer
        • JSP 페이지 데이터를 출력하기 위한 JspWriter 즉 out 내장객체의 버퍼 크기를 지정
        • 기본값은 8KB이고 JSP 페이지에 동적으로 많은 내용이 포함될 경우 버퍼 크기 조정이 필요할 수도 있으나 일반적으로는 변경하지 않아도 됨
      4. autoFlush
        • autoFlush는 버퍼를 자동으로 비울 것인지를 지정하는 속성으로, 기본 값은 true다.
        • 버퍼 속성에 지정되어 있는 크기만큼 버퍼를 유지하고 있다가 버퍼가 다 차면 자동으로 전송한다.
      5. isThreadSafe
        • 기본적으로 서블릿은 스레드로 동작하기 때문에 스레드로 인한 동기화 문제를 해결하기 위한 옵션임
        • 기본값은 true로, 일반적으로 false로 설정하는 경우는 거의 없다.
      6. info
        • 해당 JSP에 대한 간단한 설명으로 저작권이나 작성일 등 간단한 정보 기술에 사용
      7. errorPage, isErrorPage
        • 두 속성은 jsp파일의 오류 처리를 위한 것으로, errorPage는 현재 페이지에 오류 발생시 호출할 페이지를 지정하는 속성이고, isErrorPage는 오류 처리를 위한 전용 페이지임을 알리는 속성이다.
        • errorPage지정을 통해 보다 효과적으로 페이지 오류를 관리할 수 있따.
          • errorPage : 일반적인 JSP 파일에 사용
          • isErrorPage : 오류 처리 파일에만 사용
      8. contentType
        • 현재 JSP 페이지를 클라이언트에서 처리하기 위한 콘텐츠 유형을 지정하는 부분
        • 윈도우에서 파일 확장자에 따라 연결 프로그램이 동작하는 것과 마찬가지로 웹 브라우저에서도 contentType에 따라 전달되는 내용을 어떻게 처리할지 결정할 수 있따.
        • text/html이 아니라 application/msword로 지정할 경우 브라우저는 서버가 전달하는 콘텐츠를 ms word 문서로 인식해 처리할 것을 사용자에게 요청함
      9. pageEncoding
        • pageEncoding은 컨테이너에서 처리할 JSP 파일의 인코딩을 설정
        • JSP 2.0 스펙에 추가된 속성으로, 이전 버전을 지원하는 컨테이너의 경우에는 사용할 수 없다.
      10. extends
        • JSP가 서블릿으로 변환될 때 상속받을 슈퍼클래스를 지정할 수 있는 부분이다.
        • 일반적으로는 사용할 일이 없으며 토맷의 경우 org.apache.jasper.runtime.HttpJspBase 클래스를 상속받게 된다.
  2. include 지시어
    • include 지시어는 현재 JSP 파일에 다른 HTML이나 JSP 문서를 포함하기 위한 기능을 제공
    • include 지시어는 다음 절에서 살펴볼 include 액션과 비슷한 기능을 한다.
    • 네이버와 같은 인터넷 포털사이트의 화면처럼 여러 정보의 조합으로 한 화면을 구성할 때 유용하게 사용됨
    • include 지시어를 사용하면 기능 혹은 화면ㅇ르 모듈화할 수 있어 화면 구성이나 재활용이 용이하다.
  3. taglib 지시어
    • JSP 기능을 확장하기 위해 만들어진 커스텀 태그 라이브러리를 사용하기 위한 지시어
    • 태그 라이브러리는 10장에서 자세히 살펴볼 것이고 여기서는 간단한 문법만 참조
    • 커스텀 태그는 공통으로 활용하거나 특정 기능을 HTML 태그 형태로 모듈화 하는 기술임
03. 액션


Posted by OnewayK
,

01. 서블릿 개요

  1. 서블릿(Servlet)이란?
    • 서블릿은 자바 플랫폼에서 컴포넌트를 기반으로 하는 웹 애플리케이션 개발의 핵심 기술
    • JSP는 서블릿 기반의 웹 프로그래밍 기술로 내부적으로 JSP는 서블릿으로 변환되어 실행
    • 따라서 JSP를 보다 잘 이해하고 고급 웹 프로그래밍 개발을 위해서는 서블릿에 대한 이해가 필요함
    1. 서블릿의 장점
      1. 자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.
      2. 운영체제나 하드웨어에 영향을 받지 않으므로, 한 번 개발된 애플리케이션은 다양한 서버 환경에서도 실행할 수 있다.
      3. 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다.
      4. 다양한 오픈소스 라이브러리와 개발도구를 활용할 수 있다.
    2. 웹 애플리케이션 개발에 서블릿 사용 시 이점
      1. MVC 패턴을 쉽게 적용할 수 있고 컨테이너와 밀접한 서버 프로그램을 구현할 수 있다.
      2. MVC 패턴을 적요할 때 콘텐츠와 비즈니스 로직을 분리할 수 있으며 컨트롤러와 뷰가 역할을 분담함으로써, 웹 디자이너와 개발자 간에 작업을 원활하게 할 수 있다.
      3. 리스너 및 필터 서블릿 등 고급 프로그래밍 기법을 통해 더욱 효과적인 웹 애플리케이션을 설계할 수 있다.
  2. 서블릿과 서블릿 컨테이너
    • 서블릿 컨테이너는 서블릿을 실행하기 위한 서버 소프트웨어를 말하는 것으로 JSP나 서블릿으로 만들어진 웹 프로그램을 개발하고 실행하기 위한 환경
    • 아파치 톰캣이 대표적임
  3. 서블릿 동작 과정
    • 서블릿은 개발자가 소스 작성 후 컴파일 과정을 거쳐 컨테이너에 배치(deploy)하게 되면 컨테이너에 의해 실행되어 관리된다.
    • 이후 사용자 요청에 따라 스레드 단위로 실행되면서 데이터베이스 연동 등 필요한 작업을 수행하고 처리 결과를 사용자에게 HTML 형식으로 전달하는 구조로 동작한다.
    • 서블릿은 일반적인 애플리케이션처럼 버튼을 누르면 시작되고 처리를 마치면 종료되는 구조가 아님
    • 서버에서 컨테이너에 의해 실행 되면서 생명주기를 가지며 특정 이벤트와 상태가 존재하는 구조
    • 서블릿 개발은 해당 생명주기 메서드를 오버라이딩하거나 doGet(), doPost()와 같은 사용자 요청 처리 메서드를 구현하는 것임
    • init()은 서블릿 실행시 한번만 실행되는 메서드이고 service() 메서드는 사용자 요청시 매번 호출되는 메서드이다. destroy()는 서블릿 종료 시 실행되는 메서드이다.
02. 서블릿 구조와 생명주기
  1. 서블릿 구조와 API
    • JSP와 달리 서블릿은 일반적인 자바 클래스 구조를 가진다.
    • 이는 서블릿이 일반 자바 소스의 구조라는 의미로 컴파일 과정이 필요함을 의미
    • 또한 서블릿은 ㅓㄴ테이너에 의해 실행되므로 개발자가 임의로 프로그램 하는 것이 아니라 특정 클래스를 상속 받아야만 구현할 수 있는 구조임
    • 따라서 서블릿 프로그램을 하려면 서블릿 클래스의 상관 관계나 API의 기본 구조를 이해해야 한다.
    • API(Application Programming Interface)는 특정 클래스를 다른 프로그램에서 사용하기 위해 필요한 정보를 규격화 해 놓은 것을 말함
    • 일반적으로 서블릿은 java.servlet.HttpServlet 클래스를 상속해서 구현함
    • javax.servlet.http.HttpServlet 동작 구조
      • GenericServlet에 비해 HTTP 프로토콜 지원이 포함되어 일반적인 웹 프로그램에 적합
      • HttpServlet도 javax.servlet.GenericServlet을 상속받고 있음.
      • 사용자 요청에 따라 GET,POST 방식으로 구별해 처리하지만 경우에 따라서는 구분없이 처리하기도 함
      • http://www.hanb.co.kr/index.html 이라는 URL 요청은 HTTP프로토콜에서는 GET/index.html과 같이 서버에 전달됨
      • HTTP 프로토콜에는 GET,POST,PUT,HEAD,DELETE,OPTIONS,TRACE와 같은 요청이 정의되어 있으며 서블릿에도 각각doGet(), doPOST()와 같은 대응 메서드가 존재함
    1. GET 방식
      • 서버에 있는 정보를 클라이언트로 가져오기 위한 방법이다. 예를 들어 HTML, 이미지 등을 웹 브라우저에서 보기 위한 요청
      • 서버에는 최대 240Byte까지 데이터를 전달할 수 있다.
      • QUERY_STRING 환경변수를 통해서 서버로 전달되는데, 다음 형식을 따른다.
        • http://www.xxx.co.kr/servlet/login?id=hj&name=hong
      • '?'이후의 값들은 서버에서 QUERY_STRING을 통해 전달된다. '속성=값'형태로 사용해야 하며 '&'는 여러 속성 값을 전달할 때 연결해주는 문자열이다.
      • URL이 노출되기 때문에 보안에 문제가 생길 수 있다.
    2. POST 방식
      • 서버로 정보를 올리기 위해 설계된 방법이다. 예를 들어 HTML 폼에 입력한 내용을 서버에 전달하기 위한 요청
      • 서버에 전달 할 수 있는 데이터 크기에는 제한이 없다.
      • URL에는 매개변수가 표시되지 않는다.
  2. 서블릿 생명주기
    1. 서블릿 초기화 : init() 메서드
      • 서블릿 실행시 호출되는 메서드로 초기에 한 번만 실행된다. 공통적으로 필요한 작업 등 수행
    2. 요청/응답 : service() 메서드
      • 사용자 요청에 따라 스레드로 실행되는 메서드로 각각 service() 메서드를 통해 doGet() 혹은 doPoser() 메서드가 호출된다.
      • 파라미터인 HttpServletRequest 와 HttpServletResponse를 통해 사용자 요청을 처리한다.
    3. 서블릿 종료 : destroy() 메서드
      • 컨테이너로부터 서블릿 종료 요청이 있을 때 호출되는 메서드
      • init()와 마찬가지로 한 번만 실행되며, 서블릿이 종료되면서 정리할 작업이 있다면 destroy()를 오버라이딩해서 구현함


Posted by OnewayK
,

01. JSP 개요

  1. 서블릿(Servlet)과 JSP(Java Server Page)
    • 서블릿은 자바를 이용한 서버 프로그래밍 기술이다.
    • 초기 웹 프로그래밍 기술인 CGI(Common Gateway Interface)를 대체하기 위해 개발되었으나, 느린 처리 속도, 많은 메모리 요구, 불편한 화면 제어 등의 한계로 PHP, ASP 등 서버 스크립트 언어 등장
    • JSP는 PHP와 유사한 형태로 HTML을 중심으로 자바 프로그램과의 유기적인 연결을 지원
    1. JSP의 특징
      1. 자바의 모든 기능을 사용할 수 있어 발전 가능성이 무한하다
      2. 서블릿으로 컴파일된 후 메모리에서 처리되기 때문에 많은 사용자의 접속도 원활하게 처리할 수 있다.
      3. JSP 또는 다른 서블릿 간의 데이터를 쉽게 공유 할 수 있다.
      4. 빈즈(Beans)라고 하는 자바 컴포넌트를 사용할 수 있다.
      5. 커스텀 태그를 만들어 사용할 수 있으며, JSTL(JSP Standard Tag Library)과 같은 태그 라이브러리를 이용할 수 있다.
      6. 스트러츠, 스프링 @MVC 등 다양한 프레임워크와 결합하여 개발할 수 있다.
  2. JSP 학습에 필요한 기술
    • JSP는 웹 프로그래밍 기술로 HTML, 자바스크립트, CSS와 같은 기본 웹 프로그래밍 경험이 요구됨
    • JSP는 자바언어 기반이며 개발 시 순수 자바 코드가 50% 이상으로 탄탄한 자바 기본기가 요구
    • 이외 추가적으로 다음 기술들에 대한 경험이 있다면 고급 웹 프로그래밍 학습에 도움이 됨
02. JSP 처리 과정의 이해
  1. JSP 전체 동작 과정
    • JSP는 HTML과 유사한 처리 과정을 거치나 HTML이 단순 서버 파일을 브라우저로 보내주는 것에 비해 JSP는 서버에서 프로그램이 실행된 결과를 웹 브라우저로 전달하는 차이가 있음                                                        
      1. 웹 브라우저에서 URL을 입력한다
      2. DNS 서버로부터 입력한 URL을 변환한 IP 주소를 받는다
      3. 받은 IP 주소의 웹 서버 8080번 포트에 JSP 페이지를 요청한다
      4. 웹 서버가 요청 내용을 분석하고 서블릿 컨테이너에 요청을 넘겨 처리한다
      5. 화면에 보일 내용을 HTML 문서 혀애로 웹 브라우저에 전송한다.
  2. 서블릿 컨테이너 내부 과정
    1. JSP와 서블릿 차이
      • JSP는 HTML과 같은 일반적인 텍스트 파일 구조
      • 서블릿은 자바 소스로 작성된 클래스 파일 구조
      • JSP는 서블릿 컨테이너에 의해 서블릿 형태의 자바 소스로 변환되어 클래스로 컴파일 됨
    2. 서블릿 컨테이너
      • 서블릿 컨테이너는 서블릿을 실행하고 JSP를 서블릿 코드로 변환하는 기능을 수행
      • 변환된 JSP의 서블릿 클래스를 실행하고 웹 서버의 메모리에 적재하고 사용자 요청에 따라 실행
        1. 웹 서버로부터 JSP에 대한 사용자 요청이 컨테이너로 전달된다.
        2. 요청 JSP에 대한 서블릿이 존재하면 다음 단계로 진행하고, 존재하지 않을 경우 JSP를 .java 파일로 변환한 다음 .class 파일로 컴파일한다.
        3. 컴파일된 서블릿 클래스를 컨테이너의 메모리에 적재하고 실행한다.
        4. 데이터베이스 처리 혹은 별도의 기능을 위한 클래스 호출 등이 있다면 실행하고 결과를 취합해 HTML 형태로 구성한다.
        5. 4번과 동일
        6. HTML 형태의 결과를 웹 서버를 경유해 사용자 브라우저에 전달한다.
      • JSP 파일은 일반 텍스트를 비롯해 HTML 코드와 특수태그, 자바 코드가 섞여 있다.
      • 서블릿으로 변환된 JSP는 컨테이너에 의해 생명주기가 관리된다.
      • 서블릿으로 변환된 JSP는 jspInit() 메서드에 의해 실행되고 Ready 상태가 되며 이후 사용자 요청은 _jspService() 메소드가 쓰레드 형태로 호출되어 실행된다.
      • 컨테이너에 의해 JSP 서블릿이 종료될 때에는 jspDestroy() 메서드가 실행된다.
    • JSP에 관해 이것만은 알고 있자.
      1. JSP는 일반 텍스트 파일로 되어 있다.
      2. JSP는 HTML 코드와 몇몇 특수한 태그, 그리고 자바 코드가 섞여 있다.
      3. 사용자가 요청할 경우 JSP는 컨테이너(톰캣)에 의해 서블릿 형태의 .java 소스로 변환되고 컴파일 된다.
      4. 컴파일된 .class는 컴퓨터에서 실행할 수 있는 형태로 특정한 기능을 수행할 수 있게 된다. 이후 소스 변경 전까지 해당 파일은 메모리에 상주하면서 다시 컴파일 되지 않고 서비스된다.
03. JSP 프로그램 기술 변천
  1. 서블릿과 JSP 기술 변천
    • 서블릿 : 일반 자바 프로그램을 통해 웹 컨텐츠를 표현함
    • JSP : HTML 기반으로(즉 화면을 중심으로) 프로그램과의 연동을 지원함
    • JSP와 HTML 코드의 혼용으로 인한 문제점 해결을 위한 MVC 패턴 등장
    • 개발 생산성과 확장성 등 개발 수준 향상을 위한 오픈소스 프레임워크 등장
    • 새로운 웹 기술과 새로운 디바이스의 보급 확산
  2. JSP 프로그램 모델 유형 비교
    • 프로그램 모델은 구조와 관련된 것으로 실행결과는 동일하나 프로그램 개발 및 유지보수에는 많은 차이가 있을 수 있다.
    • 빈즈를 이용한 JSP 처리 과정
      1. 웹 브라우저 요청에 대해서 웹 서버가 http 프로토콜에 따라 사용자 요청을 처리한다.
      2. 웹 서버는 HTML과 JSP인 경우를 구분해서 처리한다
      3. 2번과 동일
      4. JSP의 경우 useBean 액션을 이용해서 빈즈 클래스와 연동한다.
      5. 필요한 경우 데이터베이스 관련 작업 등을 처리한다.
      6. 처리한 결과를 보여주는 JSP를 호출한다.
      7. 필요한 경우 결과를 보여주는 JSP에서도 빈즈를 사용할 수 있다.


Posted by OnewayK
,
01. JSP 개발 환경 개요
  • JSP 개발 환경을 구축하려면 여러 개발 툴을 상호 연동하여 설치해야 한다.
  • JSP는 자바로 구현되므로 자바 개발환경이 필요하다.
  • 또한 작성한 코드를 웹 서버에서 실행하려면 JSP 운영환경이 필요하고, 자바를 이용한 편리한 개발을 위해 통합 개발환경도 필요하다.
  • 개발환경을 구축할 때는 안정적인 하드웨어와 검증된 운영체제를 사용하는 것이 좋다. 문제가 생기면 개발 중인 중요한 소스를 날릴 수도 있고, 개발이 지연될 경우 전체 프로젝트에 막대한 지장을 초래

02. JSP 개발 환경 구축

  1. 자바 개발환경 구축 : JDK
    • 자바는 객체지향 언어로서, 하드웨어와 운영체제에 영향을 받지 않는 특징이 있다. 이는 '한 번 만든 프로그램은 어디에서나 실행 가능하다(Write once run anywhere)'는 자바의 모토이기도 하다. 실제 자바는 이러한 특징은 서버 컴퓨터에서 휴대폰과 같은 다양한 장치(Device)에 이르기까지 폭넓게 적용 될 수 있는 기반이 된다.
  2. JSP 운영환경 구축 : 아파치 톰캣
    • 아파치 톰캣(Apache Tomcat)은 웹 서버 소프트웨어의 하나로, 서블릿 컨테이너라고도 한다.
    • 서블릿 컨테이너는 서블릿과 JSP를 실행할 수 있는 환경을 말한다. 기본적으로 웹 서버의 기능도 포함하고 있으며 자바로 개발되어 있다.
    • 개발용이 아닌 실제 서비스용으로 웹 서버를 운영하려면 아파치 웹 서버를 설치하고 서블릿 컨테이너로 톰캣을 사용할 수 있도록 설정하는 것이 좋음
  3. 통합 개발환경 구축 : 이클립스
    • 이클립스(Eclipse)는 IBM에서 개발해 오픈소스 프로젝트로 기증한 통합 개발환경이다.
      • 이클립스는 자바, JSP 및 C/C++ 개발도 가능하고 안드로이드 모바일 앱 개발에서 사용된다.
03. 이클립스 기본 환경 설정
  1. 작업공간
    • 작업 공간(Workspace)은 이클립스에서 프로젝트 및 소스코드를 관리하는 영역
    • 만일 여러 명의 사용자가 하나의 컴퓨터 계정을 사용하거나 혹은 하나의 실습실에서 여러 종류의 자바 강의가 동시에 이뤄질 경우, 프로젝트 단위로 구분하는 것도 가능하지만, 소스 관리나 개인적인 프로젝트 설정 등을 유지 하려면 작업공간 자체를 바꿔서 관리하는 것이 좋다.


Posted by OnewayK
,

01. 네트워크, 인터넷, 웹

  1. 네트워크
    • 네트워크(Network)의 사전적 의미는 "전선이나 혈관, 통로 등으로 이루어진 망형 조직"
    • 방송사 네트워크, 인맥을 의미하는 휴먼 네트워크 등
    • IT분야에서는 '컴퓨터와 컴퓨터를 연결해 주는 망'의 개념으로 컴퓨터 네트워크의 의미로 사용
    1. TCP/IP
      • TCP/IP(Transmission Control Protocol/Internet Protocol)는 컴퓨터 간에 통신할 수 있도록 만든 프로토콜.
      • 인터넷의 기반 네트워크 시스템으로 하드웨어, 운영체제, 접속 매체에 관계없이 동작할 수 있는 개방형 구조.
    1. IP 주소
      • IP 주소(IP Address)는 TCP/IP로 연결된 네트워크에서 각각의 컴퓨터를 구분하려고 사용하는 주소
      • 숫자로 구성되어 있고, 네개로 구분된 10진수를 사용
  1. 인터넷(Internet)
    • 인터넷은 전 세계가 하나로 연결된 네트워크를 의미하는 고유명사
    • internet은 내부 네트워크를 의미(Internet과 다름)
    • 인터넷은 네트워크 인프라이고 www,email 등은 인터넷 기반 서비스임
    • 인터넷은 웹과 다름
    • 대표적인 인터넷 기반 서비스            
    1. 프로토콜
      • 네트워크에 연결된 컴퓨터들 간의 통신 규약
      • 인터넷 서비스들은 TCP/IP 4계층 중 응용계층에 해당함
    2. 포트
      • 네트워크 서비스를 접속하기 위한 접점
      • 컴퓨터에서 여러 네트워크 서비스를 제공하는 경우 이를 구분하기 위한 용도로 사용
      • 은행의 구분된 업무 창구와 유사한 개념
    3. 도메인 네임 시스템
      • DNS(Domain Name System)
        • 인터넷에 연결된 컴퓨터 구분을 위해 사용하는 IP주소 대신 알기 쉬운 이름 형태로 컴퓨터를 구분하기 위한 인터넷 서비스/시스템 중 하나
        • 호스트(컴퓨터) 이름(www) + 도메인 이름(hanb.co.kr) 형태로 구성됨.
        • 예)www.naver.com, www.daum.net, www.hanb.co.kr 등
        • 도메인 관리 기관을 통해 일정 비용을 지불하고 사용 가능
      • DNS 처리 과정
        1. 도메인 네임 입력한다.
        2. 네트워크 서비스 제공 회사(KT, SK, U+등)의 DNS 서버에 도메인 이름을 요청한다.
        3. DNS 서버는 한빛미디어 DNS 서버인 ns.hanb.co.kr에 www라는 컴퓨터의 IP 주소를 요청한다.
        4. 한빛미디어 DNS 서버는 DNS zone file에서 www 컴퓨터의 IP 주소를 찾아서 알려준다.
        5. DNS 서버는 다시 요청한 클라이언트에 IP 주소를 알려준다.
    • 월드 와이드 웹(World Wide Web ,www)
    • 인터넷에서 운영되는 서비스 중 하나로 많은 사람들이 '웹=인터넷'이라고 생각할 정도로 대표적인 인터넷 서비스
    • 흩어져 있는 연구자들이 손쉬운 방법으로 정보를 공유하기 위해 HTML이라는 간단한 마크업 언어를 통해 콘텐츠를 제공하고 HTTP라는 프로토콜을 사용해 TCP/IP 네트워크에서 사용하기 시작함
    • 웹 브라우저 소프트웨어와 인터넷에 연결만 되어 있으면 PC, 스마트폰, 테플릿 등 운영체제와 하드웨어 상관 없이 동일한 서비스 제공이 가능
    1. 웹 서버와 HTTP
      1. 버(Server)
        • 네트워크에서 서비스를 제공하는 컴퓨터
        • 웹 서버, FTP 서버, 파일 서버, 프린트 서버
      2. 클라이언트(Client)
        • 서비스를 이용하는 컴퓨터
        • PC, 스마트폰, 테블릿 등
      3. HTTP(Hyper Text Transfer Protocol)
        • 웹 서비스에 사용되는 통신 규격
        • 간단한 명령어와 헤더 규격으로 되어 있음
    2. 웹 서비스의 동작 과
      1. 웹 서버 소프트웨어
        • 서버에서 웹 서비스를 제공하는 소프트웨어
        • 아파치(Apache), 마이크로소프트 IIS(Internet Information Server)가 대표적임
      2. 클라이언트 소프트웨어
        • 웹 서비스를 이용하기 위한 클라이언트 소프트웨어 -> 웹 브라우저(Web Browser)
        • 인터넷 익스플로러(Internet Explorer), 크롬(Chrome), 파이어폭스(FireFox), 애플 사파리(Safari) 등
      1. 웹 브라우저에서 http://www.xxx.com/index.html을 입력
      2. www.xxx.com 도메인의 IP주소를 DNS 서버로부터 받음
      3. IP 주소의 해당 서버 80번 포트로 접속을 시도
      4. 웹 서버는 요청 내용을 분석하고 요청된 index.html 파일을 디스크에서 읽음
      5. 웹 서버는 파일 내용을 텍스트 그대로 요청한 클라이언트에 전송
      6. 웹 브라우저는 웹 서버에서 보내는 텍스트 내용 중 HTML 태그를 분석해 적절히 변환하여 화면을 구성

02. 웹 프로그래밍 언어와 주요 기술

  1. 웹 프로그램의 개요
    1. 일반적인 프로그램
      • 컴퓨터에 설치 후 사용(스마트폰, 테블릿도 동일)
      • 기본적으로 해당 디바이스에서 프로그램이 실행되고 경우에 따라 필요한 데이터는 서버로부터 수신
    2. 웹 프로그
      • 별도의 설치 없이 서버에 접속하는 것만으로 필요한 기능/서비스를 이용할 수 있음
      • 프로그램은 서버에서 실행되고 실행 결과만 컴퓨터의 브라우저를 통해 보여짐
      • 데이터 입력, 메뉴선택, 버튼 클릭 등 사용자와의 상호작용 처리를 위해 클라이언트에서 처리해야 되는 프로그램적인 요소도 있음
      • 웹 프로그램은 서버와 클라이언트의 협력에 의해 구현
      • 웹 프로그램 개발을 위해서는 서버 프로그래밍 기술과 클라이언트 프로그래밍 기술을 모두 알아야함
    1. 클라이언트 기술
      • 기본적으로 브라우저에 의해 처리되는 요소
      • 화면 구성, 스타일, 동적 이벤트처리 등 사용자 상호작용 담당
      1. HTMlL(Hyper Text Markup Language)
        • 웹 서비스를 표현하기 위해 사용하는 언어
        • <HTML></HTML> 과 같은 마크업 구조
        • 최근 HTML5가 널리 사용되고 있음
      2. 자바스크립트(Javascript)
        • 자바와 유사한 문법구조를 제공하는 웹 클라이언트 개발언어, 실제 자바와는 무관
        • 웹 브라우저에서 해석, 웹 브라우저 성능 평가에서 매우 중요한 요소
        • jQuery와 같은 공개 라이브러리가 유명함
        • JSON(JavaScript Object Notation)은 클라이언트 서버간 정보 교환에 널리 사용
      3. CSS(Cascading Style Sheet)
        • HTML에서 레이아웃이나 디자인 요소를 분리
        • 최근 웹 클라이언트 개발은 HTML5+CSS3+JavaScript 임
    2. 서버 기술
      • HTML 파일은 파일 내용을 수정하기 전까지는 내용이 변하지 않는 정적인 구조
      • 사용자 요청에 따라 다른 정보를 제공하거나 데이터베이스를 통한 서비스를 위해서는 별도의 프로그램 기술이 필요
      1. ASP.NET
        • MS 윈도우 기반의 서버 프로그램 기술
        • .NET 기반의 컴포넌트 사용 가능
        • MS 윈도우 종속과 상용 라이센스 정책으로 대규모 공개 웹 서비스 개발에는 거의 사용되지 않음
      2. PHP(Professional Hypertext Preprocessor)
        • 처리속도가 빠르고 다양한 운영체제와 웹 서버 환경에서 실행 가능
        • APM = Apache + PHP + MySQL
        • 오픈소스 게시판, 위키 프로그램, 연구용으로 널리 사용
      3. JSP(Java Server Page)
        • 자바 서블릿 기반의 웹 프로그래밍 기술
        • 자바의 모든 기능을 사용할 수 있으며 안정성과 확장성이 뛰어나 가장 많이 사용되고 있는 웹 프로그래밍 기술
03. 스마트 시대의 웹 프로그래밍
  1. 웹 프로그램의 현재와 미래
    1. WOA(Web Oriented Architecture)
      • 기존 PC 중심의 사용자 환경에서 스마트폰, 태플릿, 스마트TV, 스마트카 등 새로운 기기들이 출현
      • 한 사람이 여러 기기를 통해 동일한 서비스와 정보로의 접근이 필요해짐
      • 즉 여러 기기 간의 끊어짐 없는(Seamless) 서비스가 요구되면서 One Source Multi Use를 위한 N-Screen 혹은 N-Device 서비스가 요구
      • 이러한 요구사항 해결을 위해 다음과 같은 기술들이 급성장 하고 있음
        • 하드웨어 인프라적인 측면 : 클라우드라고 불리는 대규모의 공용 컴퓨팅 서비스, 가상화 SW 포함
        • 소프트웨어적인 측면 : WOA
      • 기존 SOAP(Simple Object Access Protocol) 기반의 SOA(Service Oriented Architecture)에서 REST(Representational State Transfer) 기반의 경량 웹 서비스 모델 발전
      • Restful 웹 서비스는 JAX-RS(JSR-311)로 자바 규격에 공식적으로 포함됨
      • WOA는 웹을 중심으로 전체 시스템 아키텍처를 설계해 나가는 기술
    2. 프레임워크(Framework)
      • 일반적인 개발의 문제점
        • 프로그램의 규모 확대 -> 높은 생산성, 쉬운 유지 보수, 기능의 변경이 확장이 용이한 개발 기술 필요
        • 개발방법론, 소프트웨어 디자인 패턴, 리팩토링, 프레임워크 등 소프트웨어 공학적 기술 등장
      • 프레임워크(Framework)는 무언가를 만들기 위한 틀
      • 소프트웨어적으로는 목적에 맞게 잘 설계된 구조와 미리 구현된 라이브러리가 포함된 소프트웨어 형태
      • 프레임워크를 사용하면 정해진 규격에 따라 프로그램 구조를 만ㄷ르어야 하며, 개발자가 신경쓰거나 처리해야 할 많은 일과 이벤트 관리는 프레임워크를 통해 처리
      • 여러 유틸리티 라이브러리도 제공하기 때문에 개발자는 비교적 적은 노력으로도 고품질의 소프트웨어 개발이 간으해짐
      • 대표적인 프레임워크는 스프링프레임워크로 웹 개발을 포함해 대규모 시스템 개발에 적합한 기술 구조를 제공함
  2. 모바일 앱 개발과 웹 프로그래밍
    1. 모바일 기기의 특징
      1. 면크기
        • 스마트폰의 경우 3.5 ~ 6인치
        • 태플릿의 경우 7 ~ 12인치
      2. 하드웨어 아키텍처
        • PC의 x86과 다른 ARM 계열 CPI사용
        • 멀티코어, 고성능 GPU, 64bit 지원
      3. 운영체제
        • 애플의 iOS와 구글 안드로이드가 대표적
        • 그 외 구글 크롬, WebOS, MS 윈도우 8 등
      4. 무선통신
        • LTE, WIFI 등 고속 무선 인터넷 연결
        • 블루투스, NFC 등 근거리 통신 지원
      5. 입력장치
        • 터치 스크린, 터치 펜
        • 가속센서, 자이로센서 등
      6. 배터리
        • 대용량 배터리
        • 배터리 절약을 위한 각종 저전력 기술
    2. 모바일 앱 개발 유
      1. 네이티브 앱
        • 운영체제별 별도 개발환경과 실행 파일
        • 빠른 속도, 기기별 특화 기능 사용의 편리함
      2. 웹 앱
        • 여러기기와 운영체제 지원의 어려움으로 웹 기술을 사용한 모바일 웹 기술 주목
        • 모바일 웹 제약 사항
          • 항상 인터넷에 연결되어 있어야 함
          • 하드웨어나 운영체제 기능 접근 제한(GPS, 센서, 카메라, 주소록 등)
      3. 하이브리드 앱
        • 메인 프로그램은 네이티브로, 프로그램 구성요소는 웹 기반으로 구현
        • 장치 기능 접근을 위해 센차터치, 폰갭 등의 툴킷 사용           


Posted by OnewayK
,

3장 큐

2015-2학기/알고리즘 2015. 9. 14. 19:40

1. 큐

- 큐(Queue)는 우리 말로 번역하면 대기행렬

- 대기가 "기다리다", 행렬이 "줄"이라는 뜻이니 큐는 "기다리는 줄"이라고 할 수 있다.


2. 큐의 주요 기능 : 삽입과 제거

- 전단(Front)과 후단(Rear)


- 삽입(Enqueue)

- 제거(Dequeue)



3. 끝은 새로운 시작이다: 순환 큐

- 배열로 큐를 구현할 때의 문제점 :


'2015-2학기 > 알고리즘' 카테고리의 다른 글

2장 스택  (0) 2015.09.09
1장. 리스트  (0) 2015.09.08
Posted by OnewayK
,

1. Network Programming

- Network : 각 host(end-system)들을 연결하여 communication 하게 하는 하나의 시스템.

- Network Programming : 멀리 떨어진 host들이 서로 data를 주고 받을 수 있도록 programming 하는 것.

- host 들을 연결해 주는 장치(socket) 필요

(Network Programming = Socket Programming)


2. Socket

- 멀리 떨어진 host(개체)들을 연결해 주는 도구(eg. 전화기)

- Network를 통해 입/출력 하기 위해 사용자에게 수단을 제공하는 인터페이스

(Socket 이용해서 data를 송수신)

Posted by OnewayK
,