본문 바로가기

전체 글

(50)
JSP(Java Server Page) 이번 포스트를 보기 앞서 아래에 있는 이전 포스트를 보고 오시기 바랍니다. https://jaystorage.tistory.com/10 서블릿(Servlet) 초창기 웹(Web) 초창기 웹은 웹 서버에 미리 만든 웹 페이지(정적 페이지)를 가공 없이 단순히 보여주는 것이 목적이었다. 그러나 많은 웹 사용자들은 미리 저장된 정보를 보는 것뿐만 아니라, 유 jaystorage.tistory.com JSP란 JSP는 HTML내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하는 기술이다. JSP 등장 배경 정적인 페이지만 제공하던 초창기 웹이 발전하면서 CGI와 Servlet이 등장했지만 Servlet에도 단점이 존재했다. Servlet의 한계 서블릿을 이용하면 웹 프로그래밍이 가능하지만, 자바..
서블릿(Servlet) 초창기 웹(Web) 초창기 웹은 웹 서버에 미리 만든 웹 페이지(정적 페이지)를 가공 없이 단순히 보여주는 것이 목적이었다. 그러나 많은 웹 사용자들은 미리 저장된 정보를 보는 것뿐만 아니라, 유저의 이름을 웹 페이지에 나타내고 싶거나 서버에서 정보를 가공하여 유저의 요청에 동적으로 콘텐츠를 만들어주고 싶은 다양한 요구사항(동적 페이지)이 생기기 시작했다. 이런 요구사항에 따라 CGI가 등장하게 되었다. * 정적(static), 동적(dynamic) 이란 용어는 사용자가 페이지를 요청하는 시점에 페이지 내용의 유지 여부에 따라 구분 정적 페이지 : 누가, 언제 요구하더라도 항상 같은 내용을 표시하는 웹 페이지 동적 페이지 : 동일한 url 요청이라도 다른 내용이 반환되는 페이지 CGI(Common Gat..
GC(Garbage Collection, Garbage Collector) Garbage Collection 이란 Garbage Collection 이란 JVM의 Heap 영역에서 사용하지 않는 객체를 삭제하는 프로세스를 말한다. JVM의 Heap 영역에는 자바 프로그램을 실행하면서 생성된 모든 객체가 저장된다. 메모리 공간은 한정적이기 때문에 더 이상 쓰지 않는 객체를 제때 정리하지 않는다면 Out Of Memery Error (OOM)가 발생한다. 이를 막기 위해 JVM에는 자동으로 메모리 관리를 해주는 Garbage Collector가 존재한다. * C언어를 사용해본 사람이라면 free라는 명령어를 통해 직접 메모리를 해제해본 경험이 있을 것이다. 하지만 자바에서는 이 과정이 JVM에 의해 자동으로 일어난다. GC 동작 순서 GC 동작 순서는 다음과 같다.GC 수거 대상 ..
JVM 구조 JVM(Java Virtual Machine) 이란 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어이다. 자바 코드를 컴파일하여 .class 바이트 코드로 만든 후 실행시키면 이 코드가 JVM 환경에서 실행된다. 이렇듯 JVM이 자바와 OS 사이에서 중개자 역할을 하기 때문에 자바는 OS에 구애 받지 않는다. JVM의 구성 요소 Class loader System 클래스 로더는 컴파일 된 바이트코드(*.class)를 실행시점(RunTime)에 읽어들여서 메모리(Runtime Data Area)에 적절하게 배치한다. 작업은 로딩 -> 링크 -> 초기화 순서로 일어난다. 로딩 : 클래스 로더가 .class 파일을 읽고 그 내용에 따라 적절한 바이너리 데이터를 ..
암호화 알고리즘(MD5, SHA) 회원가입 기능을 구현할 때 사용자의 PW를 평문으로 저장한다면 보안상 큰 문제가 발생한다. 이를 막기 위해서는 사용자의 PW를 암호화해 저장해야만 한다. 오늘은 프로그램을 짤 때 필수적으로 사용되는 암호화 알고리즘에 대해 간단히 알아보고자 한다. 단방향 해시 함수 해시 함수는 입력 값을 문자와 숫자를 임의로 나열한 일정한 길이의 다이제스트(Digest)형태로 변환시킨다. 여기서 다이제스트란, 해시함수를 통해 생성된 해시 값을 의미한다. 해시 함수는 단방향 알고리즘 이므로 암호화는 가능하지만 복호화는 불가능하여 원본을 알 수 없다. 이와 같은 이유로 패스워드를 바로 데이터베이스에 저장하지 않고 단방향 암호화된 다이제스트를 저장하는 방식이 보편화되었다. 대표적인 단방향 해시 함수로는 MD5와 SHA가 있다...
POJO (Plain Old Java Object) 처음 POJO(Plain Old Java Object)라는 개념을 접했을 당시에는 ‘평이하고(아무것도 꾸며지지 않은) 오래된 자바 객체’ 라는 개념이 왜 존재해야 하는지 그 이유를 몰랐다. 하지만 시간이 지나고 스프링이라는 프레임워크에 익숙해질수록 이 POJO라는 개념이 얼마나 중요한지 점차 깨닫게 되었다. 오늘은 POJO라는 개념이 구체적으로 어떤 것을 의미하고 왜 중요한지 그 이유를 알아보고자 한다. POJO 라는 단어의 탄생 POJO는 2000년 9월에 마틴 파울러(Martin Fowler), 레베카 파슨스(Rebecca Parsons), 조쉬 맥킨지(Josh MacKenzie) 가 사용하기 시작한 용어로서 Java EE 등의 중량 프레임워크들을 사용하게 되면서 해당 프레임워크에 종속된 무거운 객체..
KERNEL 최근 들어 문득 커널이 운영체제의 핵심인 것은 알고 있으나 커널이 구체적으로 무엇이고 어떤 식으로 작동하는지 설명하기는 어렵다는 생각이 들었다. (물론 배우고 난 다음 시간이 지나면서 까먹은 게 가장 큰 원인이지만) 오늘은 커널의 개념과 그 작동 원리에 대해서 공부한 내용을 정리해 보고자 한다. 컴퓨터 구성 요소 컴퓨터를 구성하는 요소는 H/W와 S/W고 S/W는 다시 Kernel과 Application으로 나뉜다. 이러한 관점으로 볼 때 컴퓨터는 H/W, Kernel(S/W), Application(S/W) 로 이루어진 3층 집이라고 볼 수 있다. Kernel 이란 커널은 컴퓨터 운영체제의 핵심이 되는 프로그램으로 하드웨어와 응용 프로그램 사이에서 인터페이스를 제공하는 역할을 하며 컴퓨터 자원들을 관리..
DB INDEX 첫 회사에 재직할 당시 은근 자주 들었던 얘기가 있다. “뭐가 문제야?”“이거 쿼리가 인덱스를 안 타는 것 같아요. 인덱스 설정이 안되어 있나?” 특정 데이터를 가져오기 위해 쿼리를 작성하는 사람들은 이 인덱스라는 것이 얼마나 중요한지 잘 알고 있을 것이다. 만약 DB 데이터가 적다면 인덱스는 반드시 필요하지 않을 수도 있다. 하지만 DB에 데이터가 어느정도 쌓이게 되면 인덱스는 더 이상 옵션이 아니라 필수가 된다. 오늘은 이러한 인덱스가 구체적으로 어떤 것이며 어떠한 방식으로 작동하는지 알아보고자 한다.  INDEX란 인덱스란 데이터베이스의 테이블에 대한 검색 속도를 향상시켜주는 자료구조이다. 테이블의 특정 컬럼(Column)에 인덱스를 생성하면, 해당 컬럼의 데이터를 정렬한 후 별도의 메모리 공간에 ..