본문 바로가기

전체 글

(10)
DBCP에 대해서 DBCP란, DataBase Connection Pool의 약자로 DB와 연결을 맺고 있는 객체를 관리하는 역할을 합니다. 만약 JDBC만 사용하는 경우 사용자의 요청에 따라 Connection이 생성된다면, 많은 사용자가 요청했을 때 서버에 과부하가 걸리게 됩니다. DB 연결마다 Driver를 load하고 커넥션 객체를 얻는 작업을 반복하게 됩니다. 이러한 문제를 위해 나온 것이 DBCP입니다. DBCP를 이용한 DB 요청 처리 과정 WAS 실행시, DB Connection 객체를 미리 몇 개 생성해 Pool이라는 공간에 저장하게 됩니다. 그 후 DB 연결 요청이 있으면, Pool에서 Connection 객체를 가져다 쓰고, 요청을 완료한 후 반환하게 됩니다. Pool에 빌려줄 수 있는 Connecti..
JDBC와 ODBC의 차이에 대해서 JDBC (Java DataBase Connectivity) JDBC는 JAVA에서 DB에 접속하게 해주는 JAVA API입니다. JDBC는 응용프로그램과 DBMS간의 통신을 중간에서 번역해주는 역할을 합니다. JDBC Driver Manager는 JDBC Driver를 관리하는 클래스로, DBMS에 맞는 드라이버를 load합니다. JDBC Driver는 실제 JDBC 인터페이스를 구현한 클래스들이 모여있는 클래스 파일로, JAVA 프로그램의 요청을 DBMS가 이해할 수 있는 프로토콜로 변환시켜줍니다. 각각 다른 종류의 DBMS에 접근할 때 각기 다른 방법이 있어야 했지만 JDBC API를 사용하면 모든 DB에 똑같은 방식으로 연동할 수 있습니다. 대신, JDBC 프로그래밍을 위해서는 DBMS별로 알맞은..
HTTP 상태 코드에 대해서 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의합니다. 상태 코드는 총 5개의 클래스가 있습니다. 클래스별 상태 코드 의미 1xx: 서버가 요청을 받았으며, 서버에 연결된 클라이언트는 작업을 계속 진행하라는 의미입니다. 2xx: 클라이언트가 요청한 동작을 수신하여 이해했고 승낙했으며 성공적으로 처리했음을 의미합니다. 3xx: 요청 완료를 위해 추가 작업 조치(리다이렉션)가 필요함을 의미합니다. 4xx: 요청의 문법이 잘못되었거나 요청을 처리할 수 없음을 의미합니다. 클라이언트 오류입니다. 5xx: 서버가 명백히 유효한 요청을 수행하지 못했음을 의미합니다. 서버 오류입니다. 자주 보이는 상태 코드 자주 눈에 보이는 상태 코드들에 대해 간단하게 살펴봅시다. 200 OK 서버가 요청을 제대로 처리했다는 것을..
부동 소수점과 JAVA 실수형(float, double)의 오차 해결에 대해서 실수를 표현하는 방식은 고정소수점 방식과 부동소수점 방식이 있습니다. 고정소수점 방식(Fixed Point)은 [부호 | 정수부 | 소수부]로 나타냅니다. 고정소수점은 소수점이 고정되어 있고, 실수를 2진수로 변환한 값을 그대로 대입하는 방식입니다. 부동소수점 방식(Floating Point)은 [부호 | 지수부 | 가수부]로 나타냅니다. 실수를 표현할 때 소수점의 위치를 고정하지 않고 형태에 맞게 소수점을 나타내는 방식입니다. (정규화 과정) 고정 소수점 방식의 경우 구현하기 편하지만, 정수부와 소수부의 자릿수가 작아 표현할 수 있는 범위가 제한적입니다. (만약, 10비트를 표현할 수 있던 자료형의 5자리를 소수부에 나눠준다면 수의 범위는 정수부 기준 5자리 밖에 되지 않게 됩니다.) 반면, 부동 소수..
TCP/IP 4계층에 대해서 오늘날 네트워크가 대부분 TCP/IP 통신으로 이루어지면서 TCP/IP 통신 방식이 통신 표준으로 채택되었습니다. 계층을 나누면 복잡한 작업을 여러개의 작고 단순한 작업들로 나눌 수 있습니다. 어느 계층이 고장났는지 파악하기 쉽습니다. 오늘은 각 계층의 역할에 대해 알아보고, 어떤 흐름으로 흘러가는지에 대해 이해해보도록 하겠습니다. TCP/IP 4계층 이젠 거의 이론적인 모델인 OSI 7계층에 대해 알고 있다면, TCP/IP 4계층을 이해하기 더 쉽습니다. 정확하게 일치하진 않지만 OSI 계층에서 좀 더 단순화된 게 TCP/IP 계층이라고 볼 수 있습니다. 각 계층의 역할 간단한 예를 들어보면 다음과 같습니다. 웹 브라우저에서 URL을 입력하면, HTTP 요청 메시지가 TCP/IP 4계층 과정을 통해 서..
UNICODE와 UTF에 대해서 유니코드는 전세계 사람이 사용하는 거의 모든 언어를 bit로 표현된 숫자로 매핑한 것(=문자 집합, character set)을 의미합니다. 초창기에 사용된 아스키 코드는 영어 표기만을 위한 것이었으므로, 다른 나라의 언어를 표현하기엔 크기가 부족했습니다. 때문에 각자의 아스키 코드를 확장해서 자신의 언어를 표준화시키다보니 다양한 표준이 등장했고, 이는 다른 곳에서 실행하면 문자가 깨지는 문제를 발생시켰습니다. 그래서 등장한 게 유니코드입니다. 유니코드는 전 세계 언어의 문자를 표현하기 위한 국제 표준 코드입니다. bit로 표현된 숫자를 index라 하고, code point 또는 code unit으로도 불립니다. 예를들어, '가'는 0xac00이라는 인덱스(=코드 포인트)를 가집니다. 유니코드 인코딩 ..
JAVA 기본 자료형의 종류와 크기에 대해서 변수란 하나의 값을 저장할 수 있는 메모리 공간입니다. 변수에는 기본 자료형과 참조 자료형이 있습니다. 기본 자료형은 값 자체를 가지고 있는 변수를 의미하고 참조 자료형은 주소값을 가지고 있는 변수를 의미합니다. 오늘은 기본 자료형에 대해 알아보겠습니다. 기본 자료형 종류와 크기 JAVA의 기본형은 총 8가지로 byte, short, int, long, float, double, char, boolean이 있습니다. 종류/크기 1byte 2byte 4byte 8byte 정수형 byte short int long 실수형 float double 문자형 char 논리형 boolean int와 double은 각각 정수형과 실수형의 default 타입입니다. 표현 범위 1byte = 8bit 이고, 1bit로 나..
인터페이스(Interface)와 추상 클래스(abstract class) 비교 및 사용 시기에 대해서 추상화란 클래스 간의 공통된 부분을 일반화한 것을 의미합니다. 오늘 설명하고자 하는 인터페이스와 추상화 클래스는 둘 다 추상화 개념을 가지고 있습니다. 이는 추상화 메소드를 사용함으로서 보여집니다. 추상화 메소드 추상화 메소드란 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미합니다. 그래서 상속받는 클래스들의 공통된 부분을 추상화 메소드로 나타내고, 상속받는 클래스가 강제적으로 추상 메소드를 구현하게 만듭니다. 강제성을 부여하는 이유? - 클래스들의 공통된 필드와 메소드의 이름을 통일하기 위해서 - 클래스들의 공통사항을 한 곳에서 관리할 수 있어 개발 및 유지보수가 편리해지기 때문에 따라서 구현은 자식 클래스에서 이뤄지므로 추상 메소드는 다음과 같은 문법으로 선언만 됩니다. abst..