URL & URI
URI는 인터넷 상의 자원을 식별하기 위한 문자열의 구성쯤으로 해석 될 수 있겠다.
http://en.wikipedia.org/wiki/URL
URI의 한 형태인 URL은 인터넷 상의 자원 위치를 나타낸다.
URL는 URI의 한 형태로, 바꿔 말하면 URI는 URL을 포함 하는 개념이다.
(URI > URL)
인터넷 상의 자원의 위치와 식별자.
언듯 보면 같은 것을 의미하는 듯 하다.
하지만 '자원의 위치'라는 것은 결국은 '하나의 파일 위치'를 나타내는 것임을 명심하자.
http://img0.gmodules.com/ig/images/korea/logo.gif
이와 같은 형식은 logo.gif라는 인터넷상의 자원 위치를 의미 한다.
이는 URI이면서도 URL라고 말할 수 있다.
다음은 어떠한가.
http://endic.naver.com/endic.nhn?docid=1232950
http://endic.naver.com/란 서버에 위치한 endic.nhn파일은 query string인 docid의 값에 따라 여러가지 결과를 나타낸다.
여기서 URL은 endic.nhn의 위치를 표기한 http://endic.naver.com/endic.nhn 까지이다.
내가 원하는 정보에 도달 하기위해서는 ?docid=1232950라는 식별자(Identifier)가 필요한 것이다.
결국 위의 http://endic.naver.com/endic.nhn?docid=1232950 주소는 URI이긴 하지만 URL은 아니다.
또다른 예를 들면,
http://endic.naver.com/endic.nhn?docid=1232950
http://endic.naver.com/endic.nhn?docid=1232690
위 두 주소는 같은 URL이고 다른 URI라고 할 수 있다.
(이건 좀 억지긴 하지만 개념을 이해하기 바란다.)
Forwarding VS Redirect
JSP/Servlet에서는 현재 작업중인 페이지에서 다른 페이지로 이동하는데 두 가지 방식을 가지고 있다.
포워딩(Forwarding)과 리다이렉트(Redirect)로 둘 다 다른 웹 페이지로 이동하지만 처리 형태가 다르다.
포워딩(Forwarding)
Web Container 차원에서 페이지 이동만 있다. 실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없다. 그렇기 때문에, 웹 브라우저에는 최초에 호출한 URL이 표시되고 이동한 페이지의 URL 정보는 볼 수 없다. 동일한 웹 컨테이너에 있는 페이지로만 이동할 수 있다. 현재 실행중인 페이지와 Forwad에 의해 호출될 페이지는 request와 response 객체를 공유한다.
리다이렉트(Redirect)
Web Container는 Redirect 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라고 명령을 내린다. 그러면 웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동한다. 다른 웹 컨테이너에있는 주소로 이동이 가능하다. 새로운 페이지에서는 request와 response객체가 새롭게 생성된다.
Forwarding
- 요청을 Forwarding할때 해당 요청은 서버의 다른자원(Servlet 또는 JSP) 에 전달된다. 이때는 다른 자원에서 요청을 처리할 것을 클아이 언트 에 알리지 않는다. 이러한 방식의 처리는 웹 컨테이너 안에서만 일어나고, 클라이언트는 알수 없게된다. 포워딩은 리 다이렉트와는 다르게 객체를 요청에 담고, 해당 요청을 사용할 다음 자원에 전송한다.
따라서 클라이언트는 포워딩이 발생한 사실을 알지 못한다. 포워딩은 클라이언트와 통신 없이 서버에서만 처리되기 때문에 리다이렉트 보다 나은 성능을 보여준다.
Redirect
- 클라이언트의 요청을 처리 한 후, 컨테이너는 sendRedirect() 메소드가 호출되면서 브라우저에 응답을 보낸다. 이 응답에는 브라우저가 웹 컨테이너 의 응답을 받은 후 다시 요청을 보낼 새로운 URL을 포함한다. 여기에서 하나의 요청이 종결된다 새로 부여받은 URL 로 브 라우저에서 완전히 새롭게 요청하기 때문에 이전의 요청 스코프에 저장되어 있는 객체는 새로운 요청 전에 소멸된다.
Redirect 는 추가적으로 발생한 왕복 처리 때문에 Forwarding보다 느리다. 기억해야 할 것은 최종적으로 수행하는 작업은 새로운 요청
에 의한 것이고, 이것을 클라이언트가 알고 있기 때문에 브라우저 창의 주소가 처음 요청한 주소가 아니고 최종 주소 값으로 변한다. 또 한 하나의 요청에 담겨있던 객체들은 소멸되어 다음 작업까지 전달되지 않는다
abstract, interface
http://silverktk.tistory.com/134
http://jejoong76.blog.me/70128890389
추상클래스란 무엇인가?
클래스를 설계도에 비유한다면 추상클래스는 미완성 설계도에 비유할 수 있다. 미완성 설계도란, 단어
의 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말한다. 클래스가 미완성이라는 것은 멤버의 개수에
관계된 것이 아니라, 단지 미완성 메서드(추상메서드)들 포함하고 있다는 의미이다. 미완성 설계도로
완성된 제품을 만들 수 없듯이 추상클래스로 인스턴스는 생성활 수 없다. 추상클래스는 상속을 통해서
자손클래스에 의해서만 완성될 수 있다.
인터페이스란 무엇인가?
인터페이스는 일종의 추상클래스이다. 인터페이스는 추상클래스처럼 추상메서드를 갖지만 추상클래스
보다 추상화 정도가 높아서 추상클래스와는 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으
로 가질 수 없다. 오직 추상메서드와 상수만을 멤버로 가질 수 있으며, 그 외의 어떠한 요소도 허용하지
않는다. 추상클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 구현된 것은 아
무것도 없고 밑그림만 그려져 있는 '기본 설계도'라고 할 수 있다. 인터페이스는 인터페이스로부터만
상속받을 수 있으며, 클래스와는 달리 다중상속, 즉 여러개의 인터페이스로부터 상속을 받는 것이 가능
하다.
오버로딩 오버라이딩
http://hyeonstorage.tistory.com/185
프로시저
http://todduf.blogspot.kr/2012/03/in-sql-out-program-inout-sql-program.html
다형성
http://blog.naver.com/ljc727/110177349221
가변인자
http://ljsk139.blog.me/220001871535
GC
http://helloworld.naver.com/helloworld/1329
1~5세대 언어
http://devcrack.blogspot.kr/2013/02/1-5_7.html
멀티쓰레드
http://www.devpia.com/MAEUL/Contents/Detail.aspx?BoardID=50&MAEULNo=20&no=943947&ref=488394
http://ra2kstar.tistory.com/131
백터
http://hyeonstorage.tistory.com/208
http://dynamide.tistory.com/953
기본키, 외래키
http://ynebula38.tistory.com/65
having
http://energ.tistory.com/entry/The-HAVING-Clause
http://www.gurubee.net/lecture/1032
자바의 데이터 타입인 Primitive Type과 Reference Type에 대해 설명하세요
Primitive Type은 변수에 값 자체를 저장하며 Reference Type은 메모리상에 객체가 있는 위치를 저장한다.
Primitive Type의 종류는 boolean, byte, char, short, int, float, long, double 총 8가지 이며
Reference Type 종류는 클래스타입, 인터페이스타입, 배열타입, 열거타입이 있다.
다형성이란 무엇인가?
여러가지 데이터를 다룰 수 있는 특성을 뜻한다.
조상클래스의 인스턴스를 이용하여 자손타입의 클래스를 다룬다거나,
메서드 오버로딩을 통하여 동일 이름의 메서드를 이용하여 다양한 형태의 파라미터를 다루는 것을 뜻한다.
멀티 쓰레드의 장단점은 무엇인가?
두 가지 이상의 작업을 동시해 실행 할 수 있어 자원을 효율적으로 이용할 수 있으나
dead lock 및 동기화에 대한 철저한 검증이 필요하다.
Java 콜렉션의 대표 인터페이스는 무엇인가?
http://huskdoll.tistory.com/76
List
순서가 있는 데이터의 집합으로 데이터의 중복을 허용한다. 구현클래스 - ArrayList, LinkedList, Stack, Vector
Set
순서를 유지하지 않는 데이터의 집합으로 데이터의 중복을 허용하지 않는다. 구현클래스 - HashSet, TreeSet
Map
키와 값의 쌍으로 이루어진 데이터의 집합으로 순서는 유지되지 않으며, 키는 중복을 허용하지 않고,
값은 중복을 허용한다. 구현클래스 - HashMap, TreeMap, HashTable, Properties
접근제어자의 종류와 특성에 대하여 설명하라.
private - 같은 클래스 내에서만 접근이 가능하다.
default - 같은 패키지 내에서만 접근이 가능하다.
protected - 같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.
public - 접근 제한이 전혀없다.
접근 허용 범위는 아래와 같다
public > protected > default > private
Wrapper 클래스란 무엇인가?
http://hyeonstorage.tistory.com/168
primitive 타입으로 표현할 수 있는 간단한 데이터를 객체로 만들어야 할 경우가 있는데 그러한
기능을 지원하는 클래스를 뜻하며 각 primitive 타입에 대응하는 Wrapper 클래스는 아래와
같다.
byte => Byte
short => Short
int => Integer
long => Long
char => Character
float => Float
double => Double
boolean => Boolean
객체지향 언어(Object Oriented Language)의 장점은 무엇인가?
- 코드의 재사용성이 높아 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.
- 코드의 관리가 용이하여 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.
- 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며, 코드의 중복을
제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.
Thread를 구현하기 위한 두 가지 방법은 무엇인가?
java.lang.Thread 클래스를 상속받거나 java.lang.Runnable 인터페이스를 구현한다.
NIO란 무엇인가?
기존 자바IO의 단점을 보완한 New IO(NIO) 패키지로써 nonblocking IO를 지원한다.
Buffer클래스를 도입하여 기존에 단순배열로만 처리해야 했던 많은 부분들을 좀 더
효율적이고 편리하게 다룰 수 있도록 지원한다.
기존의 스트림은 단방향이었으나 Channel을 도입하여 읽기, 쓰기, 읽고쓰기 등의 세가지
형태의 작업방식을 지원하며, 운영체제에서 제공하는 다양한 네이티브 IO서비스를 이용
가능하게 지원한다.
버퍼, 채널과 함께 셀렉터를 이용하게 함으로써 단 한개의 쓰레드만으로 수천에서 수만명의
동시 사용자를 처리 할 수 있는 서버를 만들 수 있게 지원한다.
REST 서비스란 무엇인가?
확장성 생성 언어(XML) 파일로 된 웹 페이지를 읽어 원하는 정보를 수집하는 기능. 웹 페이지를 만드는 사람은 주기적으로 내용을 개정하고 사용자는 그 페이지의 URL만 알면 웹 브라우저로 읽어 정보를 얻을 수 있다. 하이퍼텍스트 전송 규약(HTTP)과 XML을 포함한 웹 기술 및 프로토콜을 사용하는 구조적 형태로서 단순 객체 접근 프로토콜(SOAP)보다 사용이 간편하고, 사이트 내용을 기술하는 RSS(RDF Site Summary)의 정보 편집 기능과 유사하다. RSS는 자원 기술 개념(RDF)을 사용한다.
CI란 무엇인가?
continuous integration의 약자로 말 그대로 지속적인 통합을 말한다.
개발이 완료되는 시점에 단위기능들을 통합하는것이 아닌 개발과 동시에 통합을 진행함으로써
소프트웨어의 품질을 향상시키는것을 목표로 한다.
DI란 무엇인가?
Dependency Injection의 약자로 의존성을 주입하는 것을 뜻한다.
설정 파일을 통해 객체간의 의존관계를 설정함으로써 외부 Assembler가 객체간의 의존 관계를 정의하게 되며, 객체는 직접 의존하고 있는 객체를 생성하거나 검색할 필요가 없어지므로 코드의 관리가 쉬워진다.
AOP란 무엇인가?
Aspect Oriented Programming을 뜻하며 다양한 곳에서 자주 사용되는 공통 관심요소를 단일 기능으로 뽑아내어 코드의 중복을 줄이고 관리의 효율성을 높이는 것을 목적으로 한다.
로깅이나 로그인등의 기능을 예로 들 수 있다.
http://ejunghyun.com/133 (개인정리)
TCP, UDP
Statement, PreparedStatement
String, StringBuilder, StringBuffer
http://hongsgo.egloos.com/2033998
http://kumbange.tistory.com/265 (개인정리)
pstmt.executeBatch()
한건씩 insert 하는것이 아니다 많은 건을 메모리에 저장후 한번에 insert 하는 거죠
대용량일수록 성능차이가 어마어마 하죠
http://blog.naver.com/geerark/100008948983
reflection
http://seongih7.blog.me/220155959576
옵티마이져
트랜젝션의 4가지 특성
시퀀스와 캐쉬
오라클의 커서
트리거란?
데이터베이스 내에서 트리거가 가지는 조건 테이블에 어떤 이벤트(UPDATE, INSERT 등)가 발생할 때마다, 트리거가 생성될 때 정의된 BEGIN ~ END사이의 문장들을 먼저 처리하여 사용자가 원치않는 테이블의 변경작업을 방지할 수 있는 방법
PL/SQL
인덱스를 써야 하는 이유에 대해서 설명하시오
인덱스의 장점 : select 속도가 빨라진다.
단점 : insert, update 시에 인덱스를 수정하므로 추가적인 I/O 발생이 생긴다.
너무 많은 인덱스를 잡아두면 성능에 문제가 생길수도 있다.
VIEW에 대해서 설명하시오
가상 테이블
TRIGGER에 대해서 설명하시오
insert, delete, update 등의 데이터 변환이 일어날때 DB에서 자동으로 액션이 발생할수 있게 해주는거
TRANSACTION에 대해서 설명하시오
여러개의 작업이 발생할때 하나의 단위로 묶어 일괄 실행, 일괄 취소 할수있게 해주는것.
중간에 에러가 나면 없던일로 처리할 수 있다.
INNER JOIN 과 LEFT JOIN의 차이점을 설명하시오
inner join 교집합. 서로 동일한게 있을 때만 결과가 나온다.
left join 왼쪽 테이블을 주 테이블로 잡고 오른쪽 테이블을 매치시킨다. 오른쪽 테이블에 데이터가 없어도 나오게 된다.
중급
스토어드 프로시져가 일반 쿼리보다 빠른 이유를 설명하시오
쿼리가 매우 길 경우 데이터 전송 시간을 줄일 수 있다.
미리 컴파일 되어 있으므로 DB 분석기에서 쿼리 분석할 시간을 줄여준다.
가능할 경우 내부캐쉬를 사용한다.
MAX, MIN 함수가 실행비용이 높은 이유를 설명하시오
데이터 내부 정렬이 발생하므로.
ORDER BY 가 부하를 주는 이유를 설명하시오
데이터 내부 정렬이 발생하므로.
위와 동일한 질문이다. 데이터가 DB에서 어떻게 가공되느냐 하는 부분을 알고 있는게 중요하다.
고급
오라클과 MS-SQL의 NULL 처리의 차이점에 대해서 설명하시오
오라클 null은 아예 데이터가 없는 상태, 인덱스를 태우거나 정렬등의 작업이 불가능하다.
MS-SQL : 공백(null) 데이터가 DB에 들어가 있는 상태이다.
일반 인덱스와 클러스터드 인덱스의 차이점에 대해서 설명하시오
클러스터드 인덱스 : 데이터의 순서와 인덱스 순서가 완전히 정렬되어 있다. 한개만 만들수 있다. 속도가 빠르다.
NESTED LOOP JOIN, SORT MERGE JOIN, HASH JOIN 에 대해서 설명하시오
nested loop : 순차적 조인. A에서 결과를 찾아내면서 이를 만족하는 데이터를 B에서 순차적으로 찾는다.
sort merge : 동시적 조인. A에서 결과를 만들고 B에서 결과를 만들면서 두개를 비교한다.
hash join : sort merge에서 디스크 대신 메모리의 hash table을 사용한다.
인덱스 생성시 주의할 점 및 생성 기준에 대해서 설명하시오
분포도가 낮은 필드를 가지고 생성한다.
너무 크기가 큰 필드를 인덱스로 잡지 말자.
웹프로그래밍 공통 질문
초급
ASP,JSP와 자바스크립트의 차이점에 대해서 설명하시오
ASP : 서버에서 실행
자바스크립트 : 클라이언트에서 실행
쿠키와 세션의 차이점에 대해서 설명하시오
세션 : 서버에서 저장 관리
쿠키 : 사용자 컴터에 저장
get, post의 차이점에 대해서 설명하시오
get : 주소표시줄에 데이터가 붙어서 이동. 최대 2kb까지 가능
post : 데이터가 안보임.
세션에 DB연결을 집어넣어 사용하면 안되는 이유를 설명하시오
세션에 DB연결을 넣으면 사용자 수만큼 DB연결이 유지되므로 DB가 뻗음
HTTP 404, 500 에러에 대해서 설명하시오
404 : 페이지를 찾을 수 없음
500 : 내부 서버 에러
ASP 관련 질문
초급
option explicit 란 무엇인지 설명하시오
이걸 사용하면 변수를 쓰기전에 반드시 선언해야 한다.
세션과 어플리케이션의 차이점에 대해서 설명하시오
세션 : 사용자별로 생기는 데이터
어플리케이션 : 서버에서 관리되는 고유 데이터
ASP의 제어문과 루프문에는 어떤것이 있는가
if, for, while, select case, do
중고급
server.transfer에 대해서 설명하시오.
response.redirect와 비슷하나 제어권, 클라이언트 공유의 차이가 있다.
request의 네가지 컬렉션에 대해서 설명하시오
request.querystring
request.form
request.cookie
request.serverVariables
JSP 관련 질문
중고급
JSP 기본 객체에 대해서 설명하시오.
out, request, response, session
Statement, PreparedStatement, CollableStatement 의 차이점에 대해서 설명하시오.
Statement : 일반 DB연결하고 데이터 가져오는거
PreparedStatement : 쿼리를 미리 컴파일해두고 값만 대입하여 사용하는거.
CollableStatement : 자바에서 스토어드 프로시져 쓸때 사용함.
동적 include와 정적 include의 차이점에 대해서 설명하시오.
정적 include : 소스 컴파일 전에 아예 소스에 들어와서 함께 컴파일
동적 include : 소스가 실행될때 include 된걸 실행시켜서 결과만 가져옴
MVC모델이란 무엇이며 이를 웹페이지에서 구현하는 방법에 대해서 설명하시오.
Model - View - Control 모델 : 입출력 및 제어부를 구분하여 처리하자는 개념.
특수문자 영어 호칭 (0) | 2014.12.23 |
---|---|
오픈소스 라이선스 정보 사이트 (0) | 2014.12.04 |
구글 스프레드시트 드롭다운 목록 만들기 (0) | 2014.11.01 |
픽슬러 pixlr (웹 포토샵) (0) | 2014.10.31 |
유튜브 mp3 추출, 유튜브 동영상(mp4) 추출, 유튜브 반복재생(repeat) (0) | 2014.10.16 |
댓글 영역