RESTful이란?
·
CS/Computer Network
REST는 REpresantational State Transfer의 약자로, HTTP통신에서 어떤 자원에 대한 CRUD요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식입니다. 즉 웹에 존재하는 모든 자원에 고유한 URI를 부여해 활용하여 자원을 정의하고 자원에 대한 주소를 지정하는 방법이며, 이러한 REST 형식을 준수하는 시스템을 RESTful하다고 칭합니다. REST API는 Resource(자원), Method(행위), Representation(표현)으로 구성됩니다. - Resource (URI) : 서버는 Unique한 ID를 지니는 Resource를 가지고 있으며, 클라이언트는 이 Resource에 대한 요청을 보냅니다. 이러한 Resource는 URI입니다. ex..
인터페이스와 추상클래스
·
Language/Java
추상클래스는 한 개 이상의 추상 메서드를 가지는 클래스로, 선언만 되며 구현이 되지 않은 불완전한 메서드이므로 객체로 생성되지 않습니다. 여기서 추상메서드란 내용이 없는 메서드로 구현은 하지 않고 선언만 한 메서드입니다. 추상 메서드를 사용하기 위해 반드시 자식 클래스에서 해당 메서드를 재정의해야합니다. * 인스턴스 변수, 클래스 변수, 생성자, 클래스 메소드, 일반 메소드 선언 및 구현 가능 * 사용 목적 : 공통된 필드, 메소드의 이름 통일과 구체화 클래스 작성시 시간 절약을 위해서 추상클래스 선언 클래스를 선언할때 abstract 키워드를 사용합니다. new 연산자로 객체를 생성하지 못하고 상속을 통해 자식 클래스만 생성 가능합니다. public abstract class 클래스명 { } 추상 메소..
쿠키와 세션의 차이
·
CS/Computer Network
HTTP프로토콜의 특징이자 약점을 보완하기 위해서 쿠키와 세션을 쓰곤 합니다. HTTP프로토콜 환경에서 서버는 클라이언트가 누구인지 확인해야 하는데, 그 이유는 HTTP프로토콜이 connectionless, statless 한 특성이 있기 때문입니다. connectionless(비연결성)란? 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊어버리는 특징입니다. 이러한 비연결적인 상태를 유지하는 까닭은 HTTP는 인터넷 상에서 불특정 다수와 통신하기 때문에 서버에서 다수의 클라이언트와 연결을 계속 지속해야한다면 이에 따라 많은 비용이 발생하게 됩니다. 이를 줄이면 더 많은 연결을 할 수 있으므로 conectionless한 특징을 지닙니다. 물론 이 방식의 단점도 존재합니다. 서버가 클라이언트를 기억하..
오버라이딩과 오버로딩
·
Language/Java
자바에서 다형성을 지원하는 오버로딩과 오버라이딩이 있습니다. 다형성이란? 하나의 클래스나 함수가 다양한 방식으로 동작하는 것을 의미하며, 대표적으로 오버로딩과 오버라이딩이 있습니다. 하나의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것또한 의미합니다. 즉 조상타입의 참조변수로 자손의 객체를 다룰 수 있는 것이 다형성의 기본 개념입니다. 오버로딩이란? 메서드의 이름은 같고 매개변수의 유형과 개수가 다르도록 하는것을 의미합니다. 리턴값이 다르고 매개변수가 같은 경우는 성립되지 않습니다. Overloading.java public class Overloading { public void overload(){ System.out.println("오버로딩 예제"); } public void overload(..
HTTP 메서드와 그 역할
·
CS/Computer Network
HTTP 프로토콜은 TCP와 UDP프로토콜을 기반으로 하여 웹에서 사용하는 프로토콜로 클라이언트와 서버 사이에 이루어지는 요청과 응답 데이터를 전송하는 방식을 의미합니다. HTTP 메서드는 그 중에서도 서버에 요청을 보내는 방법입니다. HTTP메소드 중 대표적으로 GET과 POST가 있습니다. GET요청은 서버에 존재하는 데이터를 요청하는 것입니다. 즉 클라이언트가 서버에 리소스를 요청할때 사용하는 것으로 캐싱 및 북마크가 가능하며 브라우저에 기록이 남습니다. URL에 쿼리스트링 형식으로 데이터를 전송하기 때문에 보안에 취약합니다. 멱등의 특성을 지니고 있는데 여기서 멱등이란 같은 요청이면 반환되는 모든 응답이 모두 동일함을 의미합니다. (CRUD에서 READ) POST는 클라이언트에서 서버로 리소스를 ..
어노테이션
·
Language/Java
JAVA 5버전부터 추가된 기능으로, 클래스나 메소드 위에 붙여서 사용합니다. ex) @Override 소스코드에 메타코드(추가정보)를 주는 것으로, 클래스가 컴파일 되거나 실행될 때 어노테이션의 유무나 어노테이션의 설정된 값을 통해서 클래스를 다르게 실행되게 할 수 있습니다. 어노테이션의 용도는 다음과 같습니다. 1) 컴파일러에게 코드 작성 문법 에러를 체크하도록 정보를 제공합니다. ex) @Override => 메소드가 재정의 되어있는지 확인합니다. 2 ) 실행(런타임)시 특정 기능을 실행하도록 정보를 제공합니다. ex) 객체가 애플리케이션 내부에서 해야할 역할을 정의할 수 있습니다. (@Controller, @Servlet...) 이 어노테이션은 기본적으로 제공되는 것이 있고, 사용자가 직접 만들어..
HTTP와 HTTPS 그리고 SSL HandShake
·
CS/Computer Network
HTTP와 HTTPS 모두 인터넷의 웹 서버와 클라이언트의 인터넷 브라우저 사이에 문자를 전송하기 위한 통신규약으로 웹서버와 브라우저간 암호화된 연결을 설정하는 표준 보안 기술입니다. 다만 HTTP같은 경우는 따로 암호화 과정을 거치지 않기 때문에 중간에 패킷을 가로챌 수 있고 수정할 수도 있습니다. 이처럼 보안이 취약해질 우려가 있기 때문에 나온 것이 바로 HTTPS입니다. 중간에 보안 계층(응용계층과 전송계층 사이에서 동작하는 독립적인 SSL 프로토콜)을 거쳐서 패킷을 암호화하는 특징이 있습니다. 여기서 SSL이란 클라이언트와 서버 간의 통신을 제삼자가 보증해주는 문서로 클라이언트가 서버에 접속한 직후 서버는 클라이언트에게 이 인증서를 전달합니다. 그러면 클라이언트는 이 인증서를 보고 신뢰할 수 있는..
TCP 3 WAY, 4WAY HANDSHAKE
·
CS/Computer Network
TCP는 장치들 사이에 논리적인 접속을 성공시키기 위해 3 Way HandShake를 사용합니다. TCP 3 Way Handshake는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방 컴퓨터와 사전에 세션을 수립하는 과정을 의미합니다. TCP 3 way HandShaking의 과정은 다음과 같습니다. 1. 클라이언트는 서버에 접속을 요청하는 SYN 패킷을 보냅니다. ex) Seq = 10, SYN 2. 서버는 SYN요청을 받고 클라이언트에 요청을 수락한다는 ACK 과 Syn flag가 설정된 패킷을 발송합니다. ex) Seq= 50, Ack= 11(Seq(10)에서 1을 더함), SYN,ACK 3. 클라이언트는 서버에게 ACK를..
GC에 대해
·
Language/Java
개발을 하다보면 유효하지 않은 메모리인 Garbage가 발생하게 됩니다. C언어와 같은 경우 free()라는 함수를 통해 직접 메모리를 해제 해주어야 하는 반면, JAVA를 사용하여 개발할 경우 개발자가 메모리를 직접 해제해주는 일은 거의 없는데요, 그 이유는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이죠. 예를 들어 이런 겁니다. Tako tako = new Tako(); tako.setFlavor("sweet"); tako = null; // 가비지 tako = new Tako(); tako.setFlavor("hot"); sweet이라는 tako객체는 참조되지 않고 사용이 되지 않아서 가비지가 되었습니다. Java는 이러한 메모리의 낭비를 방지하기 위해 Garbage Coll..
takoyummy
TakoHub