본문 바로가기

I/O 인풋, 아웃풋에 대한 이해 1. I/O 모델과 스트림(Stream) 1) 스트림에 대한 이해 I/O 모델의 핵심은 스트림을 이해하는데 있다. 스트림이란 ‘데이터의 흐름’,또는 ‘데이 터의 흐름을 형성해 주는 통로’를 의미한다. 자바에서도 이러한 의미로 스트림이 인식되지 만,파일 또는 각종 I/O 장치와의 데이터 이동에 사용되는 인스턴스를 의미하는 용도로도 사용이 된다. 즉 어떤 I/O관련 클래스의 인스터스가 스트림인것이다. 이 스트림이라는것은 byte의 나열을 의미한다. 데이터의 흐름이 단방향이다. 그래서 입력과 출력을 동시에 진행할려면 입력용, 출력용 스트림을 둘다 생성해야한다. 2) 스트림의 종류 - Input Stream(인풋 스트림이라는 클래스) 프로그램으로 데이터를 읽어 들이는 스트림 프로그램으로 데이터를 읽어 들여야 하..
웹서버와 웹어플리케이션서버(WAS)에 대한 이해 웹서버(아파치)는 정적컨텐츠 WAS(톰캣)는 동적컨텐츠(JSP 서블릿 파일 처리)를 담당한다. 그런데 톰캣도 정적컨텐츠를 보여주는 역할도 할 수 있다. 왜냐하면 톰캣에는 Web Server(Coyote)가 이미 들어가 있다. 하지만 아파치는 정적컨텐츠에 특화 된것이고 톰캣은 동적 컨텐츠에 특화된것이다. 그래서 정적컨텐츠를 사용자에게 보여줄때는 아파치가 집중해서 일을 하는것이고, 톰캣은 정적컨텐츠를 보여줄수도 있지만 동적컨텐츠에 집중한다.. 결론적으로 아파치와 톰캣이 역할을 나눠서 잘하는것에 집중하는게 좋다. 그렇게 잘하는것에 집중해야 성능적인면에서, 속도에서 효율적일 수 있다. 당장 적은 수의 Request를 감당하는거야 WAS의 성능도 좋으니 큰 차이를 발생시키진 않지만 동적 서버인 WAS가 많은 re..
빈 객체 범위(scope) 1. 싱글톤(singleton) 범위 별도 설정을 하지 않을 경우 스프링은 빈 객체를 한 번만 생성한다. getBean 메서드를 두 번 이상 호출해서 빈을 구하면 매번 동일한 빈 객체를 리턴한다. 즉 여러번 빈을 구해와도 같은 객체를 참조하게 되는것이다. 스프링 컨테이너가 초기화되고 종료되기 직전까지 빈 객체는 한 개만 생성되는데,즉 스프링 컨테이너를 기준으로 특정한 빈 객체는 한 개만 존재하므로,싱글톤 (singleton) 범위를 갖는다고 한다. 2. 프로토타입(prototype) 범위 프로토타입(prototype) 범위의 빈은 객체의 원형(즉, 프로토타입)으로 사용되 는 빈으로서, 프로토타입 범위 빈을 getBean() 등을 이용해서 구할 경우 스프링 컨테이 너는 매번 새로운 객체를 생성한다. 즉, ..
스프링과 DI(Dependency Injection)- 의존 주입과의 관계 1. 의존이란? 어떠한 기능(예를 들면 어떠한 클래스의 메소드)을 실행하기 위해 다른 클래스를 필요로 할 때 이를 의존(dependency)한다고 한다. 즉 의존한다는것은 객체를 사용한다는것으로 볼 수 있다. 2. 의존 객체를 직접 생성하는 방식의 단점 요구사항의 변화로 의존 객체가 쓰이는 클래스마다 객체를 모두 수정해 주어야 하는 비효율성. 3. Dependency Injection - 의존 주입 의존 객체를 직접 생성하는 것이 아닌, 외부로부터 전달받는 구현 방식이다. 예를 들면 생성자를 이용해서 의존객체를 전달 받는 방식. 4. DI의 장점 1) 단점과 반대로 , 요구사항이 변화하더라도 의존 객체만 한번 수정해 줄뿐, 주입하는 코드는 그대 로 이기 때문에 효율적이다. 2) 테스트 코드 작성시 가짜 ..
스프링(Spring) 프레임워크 1. 스프링(Spring) 프레임워크란? 자바 개발자에게 사실상의 표준 프레임워크이다.
컨테이너 1. 빈(bean) 스프링이 생성하는 객체를 ’스프링 빈(bean) 객체’ 또는 짧게 ’빈 (bean) 객체라고 부른다 2. 컨테이너 1) 스프링은 XML 설정 정보로부터 생성한 스프링 빈 객체를 생성/조립/관리하는 기능을 제공하는 데,이 기능을 제공하는 객체를 컨테이너라고 부른다. 2) XML 설정 파일로부터 스프링 컨테이너를 생성하고 필요한 객체를 컨테이너로부터 가져와 사용 하는 것이다.
메이븐 1. 메이븐이란? 빌드 도구이다. 빌드 도구들의 주요 특징 중 하나는 의존 모듈 Jar 파일 관리에 있다. 예를 들어,메이븐의 경우 중앙 리파지터리(central repository)라고 불리는 서버로부터 필요한 jar 파일을 다운로드 받아 의존 모듈을 관리한다 스프링 프레임워크에 포함된 jar 파일 및 스프링 프레임워크에서 필요로 하는 jar 파일을 하나의 파일로 묶어서 배포하기 보다는,메이븐 중앙 리파지터리를 통해서 스프링 프레임워크 모듈(jar 파일)을 배포하고 있다.
inner join과 outer join의 차이점 1. INNER JOIN : - 두개의 집합 (A, B) 의 교집합 이라고 이해해보자. A {1,2,3} , B {2,3,4 } 이면 {2,3} 이 교집합. 모두의 값에 있는 행들만 포함시키고 그렇지 않는 행들은 제외. 2. OUTER JOIN - OUTER JOIN 에는 LEFT , RIGHT, FULL OUTER JOIN 등의 세가지 형식이 있다. 두 테이블에서 지정된 쪽인 LEFT 또는 RIGHT 쪽의 모든 결과를 보여준후 반대쪽에 매칭되는 값 이 없어도 보여주는 JOIN 이다. JOIN 이전에 나오는 테이블이 왼쪽(LEFT)테이블이 되고, JOIN 이후에 나오는 테이블은 오른쪽 (RIGHT)테이블이 된다. 3. 예시 CREATE TABLE T1 ( A INT PRIMARY KEY , B VARCH..