목록전체 글 (163)
DevGang
DispatcherServlet 클라이언트의 모든 요청을 한 곳으로 받아서 처리 요청에 맞는 Handler로 요청을 전달 Handler의 실행 결과를 Http Response 형태로 만들어서 반환 모든 사용자의 Request가 DispatcherServlet에 전달 DispatcherServlet에서 Handler Mapping이나 Controller에 전달 처리된 결과는 SpringMVC에서는 ModelAndView 형태로 반환 사용자에게 보여주고자 하는 페이지 포맷에 따라 View Resolver가 View 생성 생성된 View에 Model을 포함시켜서 Response
SOAP(Simple Object Access Protocol) http, https, smtp 등을 이용해서 XML 기반의 메시지를 네트워크 상에서 전달(요청, 응답)할 수 있는 프로토콜 웹 서비스의 기본적인 메시지 전송 수단 SOAP 메시지 구조 Envelope - SOAP 메시지의 루트로써 Header(옵션), Body(필수)를 포함 Header - SOAP 메시지에서 선택적 요소, 메시지 경로를 제공하여 처리될 애플리케이션 관련 정보를 전달하는 데 사용 Body - SOAP 메시지에서 필수적 요소로써 주요 정보를 가지고 있다. SOAP 장점 XML 기반 간단하고 확장이 용이 방화벽에 제한을 받지 않음 W3C 표준으로 개발 보안이 우수 단점 XML 포맷을 이용하고 구조가 복잡하여 그에 따른 오버헤드..
AOP(Aspect-oriented programming) Spring의 핵심 개념 중 하나인 DI가 애플리케이션 모듈들 간의 결합도를 낮춰준다면, AOP는 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용하도록 지원하는 것입니다. AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화 하여 재사용하는 것이다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예로 들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터..
JSP MVC model1 컨트롤러와 뷰가 물리적으로 분리되지 않은 방식 입니다. JSP MVC model2 컨트롤러와 뷰가 물리적으로 분리된 방식 // Controller.java @WebServlet("/mvcpage") public class Controller extends HttpServlet { @Override protected void doGet(HttpsServletRequest request, HttpServletResponse response) { int num = 0; String num_ = request.getParameter("n"); if (num_ != null && !num_.equals("")) num = Integer.parseInt(num_); String resul..
Application Application는 서블릿 Context로, 서블릿들 간의 문맥을 저장할 수 있는 곳이자, 자원을 공유할 수 있는 저장소이다. Application은 누구나 상태 값을 서버(웹 애플리케이션)에 Application객체를 저장하여 사용하도록 한다. 사용 범위 - 전역 범위에서 사용하는 저장 공간 생명 주기 - WAS가 시작해서 종료할 때까지 저장 위치 - WAS 서버의 메모리 Session Session은 웹 서버가 사용자(Session)를 구분하는 방식이라고 할 수 있다. WAS에서 누구나 저장해놓을 수 있는 공간이 application라면, 그중 개인별로 사물함을 제공한 것이 Session이라고 할 수 있다. 클라이언트가 사이트에 처음 방문했을 경우 그 사용자를 위한 세션은 존..
추상 클래스(Abstract Class) 추상 클래스는 객체화될 수 없다. (new, static - x) 추상 클래스를 상속한 클래스들의 공통 자료형이다. 캡슐 단위의 공통 기능의 집중화를 할 수 있다. (공통화 작업) 추상 메서드(Abstract Method) 공통 기능이지만 상속받는 클래스들마다 다른 기능일 경우 자식 클래스에서 구현하도록 한다. 구현을 강제할 수 있다. (에러) protected 접근 지정자는 상속받는 클래스만 사용할 수 있다. // 추상화 클래스 public abstract class Exam { private int kor; private int math; public Exam() { this(0, 0); } public Exam(int kor, int math) { this...
기본 생성자 class ExamList { private Exam[] exams; private int current; public ExamList() { exams = new Exam[3]; current = 0; } } 기본 생성자 제거 기본 생성자가 없다면, 기본 생성자는 사용할 수 없다. class ExamList { private Exam[] exams; private int current; public ExamList(int size) { exams = new Exam[size]; current = 0; } } 생성자 오버 로딩 생성자 오버 로딩 함수의 중복을 제거해서 구현한다. 항상 먼저 생성자 호출 후 새로운 값을 초기화해야 한다. class ExamList { private Exam[] ..
HashMap Map 인터페이스의 여러 구현 중 하나는 해시 테이블(hash table)에 기반을 두는데 지금까지 발명된 자료구조 중 단연 으뜸이다. 핵심 메서드(put, get)의 실행시간이 상수 시간이다. 가변 객체를 키로 사용하는 것은 위험하다. HashMap 클래스의 연산이 상수 시간이라 해도 해싱이 느릴 수 있다. 즉, 상수가 커질 수 있다. 해시 함수가 키를 고루 분배하면 잘 동작하지만 좋은 해시 함수를 설계하는 것은 쉬운 일이 아니다. 키의 중복이 많이 일어나면 성능이 나빠진다. 해시 테이블에 있는 키는 순서대로 저장되지 않는다. 순서는 테이블이 커지고 키가 재 해시될 때 변하기도 한다. TreeMap TreeMap은 해시 함수를 사용하지 않는다. 따라서 해싱 비용과 해시 함수를 고르는 것을..
정리 구분 ArrayList LinkedList add(끝) 1 1 add(시작) n 1 add(일반적으로) n n get/set 1 n indexOf/lastIndexOf n n isEmpty/size 1 1 remove(끝) 1 1 remove(시작) n 1 remove(일반적으로) n n 구현 가변 크기 배열 이중 연결 리스트 초기 용량 10 0 메모리 부담 적음 많음 자료구조 선택하기 시작이나 끝 근처에 요소를 추가/제거하는 연산은 LinkedList ArrayList 클래스의 유일한 이점은 get/set 메서드 이러한 연산이 응용 프로그램의 실행시간에 뚜렷한 영향을 미치지 않는다면, 즉 응용 프로그램이 다른 일을 하느라 대부분 시간을 소모하면 List 구현에 대한 선택은 큰 의미가 없습니다. 작..
JVM(Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드를 실행할 수 있는 주체다. CPU나 운영체제(플랫폼)의 종류와 무관하게 실행이 가능하다. 운영체제 위에서 동작하는 프로세스로 자바 코드를 컴파일해서 얻은 바이트 코드를 해당 운영체제가 이해할 수 있는 기계어로 바꿔 실행시켜주는 역할을 한다. JVM의 구성을 살펴보면 크게 4가지(Class Loader, Execution Engine, Garbage Collector, Runtime Data Area)로 나뉜다. 1. Class Loader 자바에서 소스를 작성하면 Person.java처럼 java파일이 생성된다. java 소스를 자바 컴파일러가 컴파일하면 Person.class 같은 class파일(바이트코드)이 생성된다...