스크립트 언어와 컴파일 언어를 나열하고 차이점을 설명해주세요.
스크립트 언어
Python, Javascript 등의 언어는 별도의 파일 생성없이 소스 코드가 작성될 때마다 인터프리터가 해당 코드를 기계어로 번역하고 실행함! 얘네를 인터프리터 언어 또는 스크립트 언어라고 부름
- 실행 전 소스코드를 컴파일하여 기계어로 변환 후 해당 파일을 실행
- 이미 기계어로 변환된 것을 실행하므로 비교적 빠름
- 컴파일을 하지 않고 바로 실행한다는 특징이 있지만, 소스 코드를 읽으며 실행하기 때문에 프로그램의 실행 시간은 느림
- 문법적 제약이 일반적으로 많음
- 운영체제에 따라 다르게 작업해야 함
컴파일 언어
C, C++, Java 등의 언어는 코드를 작성한 후 컴파일을 하면 컴파일러에 의해 기계어로 변환된 파일이 생성되고 컴퓨터는 그 파일을 실행함! 얘네는 컴파일 언어라고 함!
- 코드를 작성함과 동시에 인터프리터가 기계어로 번역하고 실행함
- 실행 과정 상에 번역 과정이 있어 비교적 느림
- 컴파일을 하기 때문에 규모가 큰 프로그램이라면 컴파일 시간이 오래 걸릴 수 있지만, 컴파일 후의 기계어를 통해 프로그램을 실행하기 때문에 실행 시간은 빠름
- 문법적 제약이 일반적으로 적음
- 운영체제를 신경 쓸 필요 없이 한 번만 작성하면 됨
싱글톤 패턴에 대해서 설명해주세요.
객체의 인스턴스가 하나만 생성되는 디자인 패턴이다.
사용 이유
이 싱글톤 패턴을 사용하면 new 연산자로 인스턴스를 한번만 생성하기 때문에 메모리 측면에서 유리함
싱글톤 인스턴스는 전역으로 사용되기 때문에 다른 클래스의 인스턴스들이 접근하여 사용할 수 있다. 따라서 다른 클래스들 사이의 데이터 공유가 쉽다! -> 하지만 데이터에 동시에 집근하면 동시성 문제가 발생할 수도 있기 때문에 주의해야함!
Web 작동원리
웹서버의 동작과정
웹서버란?
웹 서버는 클라이언트로부터 HTTP 요청을 받아 HTML 문서나 각종 리소스(Resource)를 전달하는 컴퓨터
클라이언트는 주문을 하는 고객이라고 생각하고, 웹 서버는 주문을 받는 직원이라고 생각하시면 편함.
직원인 서버는 고객이 주문하기를 기다리는 것처럼 클라이언트의 요청을 기다리고, 고객이 HTTP 요청을 보냄.
요청을 보내면, 직원은 고객의 주문에 대한 상품을 만들어서 주는 것처럼 서버는 클라이언트의 요청에 대한 데이터를 만들어서 응답하는 것이라고 보면 됨.
WAS(Web Application Server)란?
그래서 동적인 컨텐츠를 넘겨주기 위하여 Web Application Server 줄여서 WAS(와스)를 쓰게 되는 거임.
- Web Application Server의 약자
- 웹 어플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크
- Web Server + Web Container
- HTML같은 정적인 페이지에서 처리할 수 없는 비즈니스 로직이나 DB 조회같은 동적인 컨텐츠를 제공
동작 과정
와스의 구조를 보면, 클라이언트 쪽에서 요청을 보냄. 그럼 웹서버에서 정적인 컨텐츠인지 동적인 컨텐츠인지를 확인하고, 정적이다? 그러면 바로 클라이언트에 응답을 하고, 동적인 컨텐츠이면 웹컨테이너 쪽으로 받은 요청을 보냄. 그러면 웹 컨테이너가 서블렛 JSP같은 걸 통해서 동적인 컨텐츠를 만들어서 웹서버에게 전달하고 웹서버는 그것을 다시 클라이언트에게 넘겨주게 되는 것.