개발

    서블릿이란

    클라이언트가 어떠한 요청을 하면 그에 대한 결과를 다시 전송해주는 자바 프로그램. 서블릿 개발과정 서블릿 규약에 따라 자바 코드 작성 자바 코드를 컴파일 하여 클래스 파일 생성 클래스 파일을 /WEB-INF/classess 폴더에 패키지에 알맞게 위치시킨다. web.xml파일에 서블릿 클래스를 설정한다. 톰캣 등 컨테이너를 실행한다. 웹브라우저에서 확인한다. 서블릿 클래스를 구현하려면 먼저 HttpServlet 클래스를 상속받은 클래스를 작성해야 한다. 처리하고자 하는 HTTP방식에 따라 알맞은 메서드를 재정의 해서 구현해야 한다. 예를 들어 서블릿이 GET 방식의 요청을 처리해야 하면, doGet 메서드를 오버라이드 하면 된다. doGet() 메서드는 HttpServletRequest, HttpServ..

    데이터베이스

    데이터베이스란? 데이터베이스(DB: Database)는 통합하여 관리되는 데이터의 집합체를 의미합니다. 이는 중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리됩니다. 이러한 데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리됩니다. 데이터베이스를 관리하는 이러한 미들웨어를 데이터베이스 관리 시스템(DBMS: Database Management System)이라고 부릅니다. 다수의 웹 어플리케이션이 회원정보, 게시글, 컨텐츠 등을 저장하기 위해 데이터베이스를 사용한다. 데이터의 손실이 발생하면 안되기 때문에 트랜잭션을 보장하여 데이터의 신뢰성을 높여주기도 한다. 테이블과 레코드 RDBMS에서 데이터를 저장하는 장소를 테이블이라고 한다. 테이블은 어떤 데이터를 저..

    자바 ConcurrentHashmap

    Thread-Safe 함을 보장하면서도 높은 성능을 보장하는 HashMap 이다. 즉 해쉬맵을 쓰레드 세이프하도록 만든 클래스. 하지만 HashMap과는 다르게 key, value에 null을 허용하지 않는다. ConcurrentHashMap은 concurrent multi-trhead환경에서 안정적으로 동작하고, HashTable과 synchorined map보다 더 나은 성능을 가지고 있다. 이유는 ConcurrentHashmap은 map의 일부에만 lock을 거는 반면 앞의 두가지는 map 전체에 lock을 건다 HashMap, Hashtable과 동일한 스펙을 제공한다. 그러나 차이점은 모든 작업이 쓰레드 세이프 임에도 불구하고 검색 작업에는 Lock이 수반되지 않으며 전체 테이블을 잠궈야 하는 ..

    자바 Hashtable, HashMap

    HashMap과 HashTable을 정의한다면, '키에 대한 해시 값을 사용하여 값을 저장하고 조회하며, 키-값 쌍의 개수에 따라 동적으로 크기가 증가하는 associate array이다 (Hashtable = 쓰레드 세이프함, HashMap = 쓰레드 세이프 하지 않음) HashMap은 각 객체에 기본적으로 hashCode() 메서드가 반환하는 값을 사용하는데 결과 자료형은 32int이다. 논리적으로 생성 가능한 객체의 수가 2^32보다 많을 수 있다. 따라서 많은 해시 함수를 이용하는 associative array구현에서는 메모리를 절약하기 위해서 실제 해시 함수 표현 정수 보다 작은 원소가 있는 배열만을 사용한다. int index = X.hashCode() % M; Open Addressing ..

    JSP의 동작 원리

    WAS는 JSP 페이지에 대한 요청이 들어오면 다음과 같이 처리한다.; JSP에 해당하는 서블릿이 존재하지 않을 경우 JSP 페이지로부터 자바 코드를 생성한다.(변환 translation 단계) 자바 코드를 컴파일 하여 서블릿 클래스를 생성한다. (컴파일 단계) 서블릿에 클라이언트 요청을 전달한다 서블릿이 요청을 처리한 결과를 응답으로 생성한다. 응답을 웹브라우저로 전송한다. JSP에 해당하는 서블릿이 존재하는 경우 서블릿에 클라이언트 요청을전달 서블릿이 처리한 결과를 응답으로 생성 응답을 브라우저로 전송 JSP 페이지를 요청하는 경우 직접 실행하는 것이 아니라 , JSP를 자바 소스 코드로 변환한 뒤 컴파일 해서 생성한 서블릿을 실행하는 것이다. 이를 변화 ㄴ단계라고 하며, 자바 코드를 서블릿 클래스로..

    프로세스, 쓰레드란(자바, OS)

    파일 : 하나의 단위로 취급되는 연관된 레코드의 모음. 자기테이프, 디스크 등의 주기억 장치에 존재함 프로그램 : 어떤 작업을 위해 실행할 수 있는 파일 프로세스 : 프로그램을 메모리 상에서 실행중인 작업. 컴퓨터에서 연속적으로 실행되고 있는 컴퓨터 프로그램. 메모리에 올라와 실행되고 있는 프로그램의 인스턴스, 운영체제로부터 시스템 자원을 할당받는 작업의 단위, 스레드 : 프로세스 안에서 실행되는 여러 흐름의 단위 기본적으로 프로세스마다 최소 1개의 스레드를 보유하고 있다 Code : 코드 자체를 구성하는 메모리 영역 (프로그램 명령) Data : 전역변수, 정적변수, 배열 등 초기화된 데이터 (초기화된 데이터) Heap : 동적 할당시 사용 (new(), mallock()) Statck : 지역변수, ..

    Disk

    디스크 - 반영구적 저장 장소. 자성체를 입힘 알루미늄프로 덮여진 원판으로 이뤄진 플래터를 회전시켜 헤드를 얹어 자기 디스크의 자기 배열 방식을 변경하는 방식으로 읽거나 쓰는 방식임. 플래터를 빨리 돌릴 수록 속도는 빠르지만 전력소모량과 소음이 증가한다. 물리적으로 돌리기 때문에 한계가 있음 디스크 조각 모음이란? 하드디스크에 파일을 저장하거나 저장된 파일을 읽어 들이는 속도가 빨랐는데 몇 개월 후에는 같은 작업을 해도 빠르지 않다. 하드디스크의 속도 저하는 PC 전반의 성능을 저하시킨다. 이러한 원인은 십중팔구 하드디스크 상의 데이터들이 많은 수로 조각났기 때문이다. 하드디스크가 조각난다는 의미 물리적으로 쪼개졌다는 의미가 아니라, 내부의 데이터가 기록되는 부분, 플래터 표면에 데이터의 기록 부분이 가..

    RAM, 랜덤엑세스

    Random Access Memory 데이터를 기록할 수 있는 임시 기억 장치 Random Access(직접 엑세스) -> 램에 저장된 어느 데이터든 접근 시간이 동일하기 때문. 메모리의 어드레스만 지시하면 어느 부분에서도 즉시 기억 데이터를 읽어낼 수 있는 호출 방식. 자기 테이프는 데이터의 기억장소까지 맨 앞부터 차례로 탐색해야만 하는 것과 정 반대 개념 (시퀀셜 엑세스) 논리적 물리적 연결된 순서에 따라 차례대로 블록을 읽는 방식 인덱스 리프 블록은 앞뒤를 가리키는 주소값을 통해 논리적으로 서로 연결되어 있음 이 주소 값에 따라 순차적으로 스캔하는 방식 랜덤 액세스는 데이터마다 레코드 번호를 붙여 어느 번호의 데이터를 디스크의 어느 부분에 기억시켜 놓았는가의 번지표를 작성 해둠 하지만 전원이 꺼지면..

    CPU

    CPU란 중앙처리장치 의 약자 두뇌 역할을 하며 사용자가 입력한 명령어를 해석하고 자료의 연산, 비교 하여 그 결과를 제어. ALU 산술논리장치 : 연산을 수행 CU 컨트롤 장치 : 제어명령을 전달. 레지스터 사이의 데이터 전송을 감시하고 ALU의 동작을 지시. 전체 컴퓨터 시스템의 작동을 통제 지시하는 장치, 적절한 순서로 명령을 꺼내고 명령을 해석하여 그 해석에 따라 적절한 신호를 보냄 레지스터 : 값을 일시적으로 기억. 한 비트를 저장할 수 있는 플립플롭의 모임으로, 소규모의 임시 기억 장소. 메모리 중에서 가장 속도가 빠. 름. 내부 버스가 연산장치와 레지스터를 연결해줌 하이퍼스레딩 : 한개의 코어에서 일을 하는 동안 남는 잉여자원을 활용하는 기술 1개의 쓰레드로서 한가지 일만 할 수 있었지만, ..

    ServletContextListner 구현

    서블릿은 다양한 시점에서 발생하는 이벤트와 이벤트를 처리하기 위한 인터페이스를 정의 하고 있다. 이들 이벤트와 인터페이스를 이용하면 웹앱에서 필요로 하는 데이터의 초기화나 요청 처리등을 추적할 수 있다. 서블릿 규약은 다양한 이벤트를 처리할 수 있는 인터페이스를 구현하고 있음 ServletContextListener를 이용한 이벤트 처리 웹앱이 시작되거나 종료되는 시점에 특정 클래스의 메서드를 실행할 수 있는 기능을 제공하고 있다. 초기화 작업, 자원 반환 등의 작업 수행 가능. 웹 앱이 시작되고 종료될 때 특정한 기능을 java.servlet.ServletContextListenr(웹앱이 시작되거나 종료될 때 호출할 메서드를 정의한 인터페이스) 인터페이스를 구현한 클래스를 작성한다. web.xml 파일..