반응형

전체 글 101

HTTP 헤더

HTTP Header - 요청 / 응답에 대한 일반적인 정보를 담고 있음 1) General 헤더 : 메서지 전체에 적용 2) Request 헤더 : 요청 헤더 3) Response 헤더 : 응답 헤더 4) Entity 헤더 : 컨텐츠 타입 정의 ( JSON ,XML ...) => RFC 723x 이후 부터 Entity 헤더가 표현 헤더로 변함 표현 1) Content - Type : 데이터 형식(Json , img ...) 2) Content - Encoding : gzip, deflate 3) Content - Language : 한국어 ,영어 4) Content - Length 협상 (Content Negotiation) 클라이언트가 서버에게 리소스를 원하는 형태를 요청함 서버는 클라이언트 협상에 ..

C.S/WEB 2021.02.27

HTTP 메서드

GET 리소스 조회 , Body에 데이터 넣지 않음 POST 요청 데이터 처리 , body 에 데이터 존재 => body에 들어온 데이터 처리 ex) "/members => POST처리 할 것" 과 같이 Cilent 와 Server가 약속이 되어 있어야 함 요청된 표현을 처리 PUT 리소스 대체 1. 리소스가 없으면 생성 2. 기존의 리소스가 있으면 대체 => 완전히 대체해서 새로 넣음 3. POST 와 다르게 Resource의 정확한 위치를 Client가 지정하고 메세지를 보냄 PUT 요청시 주의 할 점 1. PUT /user { age : 20 } 요청 2. 서버에 기존 User가 { name : "hi" , age : 30} 로 저장되어 있음 3. 기존의 user 삭제후 { name : null ,..

C.S/WEB 2021.02.27

HTTP 응답코드

HTTP 응답 코드 : 클라이언트의 request에 대한 reponse의 종류 코드 200~ 200 : OK 201 (create) : POST요청을 성공해서 새로운 리소스를 만듦 202 (accept) : 배치 프로그램 등에서 당장 동작하지 않으나 요청은 수락됨 (ex : 1시간 뒤에 동작) 204 (no content) : 요청에 성공했으나 되돌려줄 본문이 없음 300~ 영구,일시,특수 리다이렉션 응답코드 영구 리다이렉트 : 주소가 영구히 바뀜 301 (move permently) : 요청 메서드가 GET으로 변하고 본문이 제거 될 수 있음 ( 반드시는 아님) 308 (permently redirect) : 요청메서드가 변하지 않고 본문이 유지됨 301 동작 방식 1. Client -> POST( b..

C.S/WEB 2021.02.27

JAVA Thread 구현하기

Extends Thread 기본적인 방법 Thread 객체를 상속받아 Run메서드를 오버라이딩 하여 사용 상속받은 객체 인스턴스를 생성하고 start 메서드를 실행하면 Run 메서드의 내용이 실행됨 Thread를 상속 받아야 하기 때문에 다른 클래스를 상속 받아서 사용할 수 없음 public class ExThread1 extends Thread{ @Override public void run() { try { Thread.sleep(1000); System.out.println(Thread.currentThread().getName()); } catch (InterruptedException e) { e.printStackTrace(); } } } public class Main { public sta..

Enumeration과 Iterator

JAVA Collection 에 저장된 데이터에 접근하는 방법 Enumeration Java 1.2 부터 소개된 초기 Collection을 지원 Snapshot 방식 - Enumeration을 사용시 데이터에 직접 접근하는것이 아닌 접근하려는 Collection을 복사하여 사용 - 다른 사용자가 Collection의 원본데이터를 수정 할 시에 해당 내용을 인지 할 수 없음 Vector 등 초기 객체만 지원 public class Main { public static void main(String args[]) { Vector v = new Vector(); v.add(1); v.add(2); Enumeration e = v.elements(); while(e.hasMoreElements()) { Syst..

JAVA Exception 처리

자바 프로그램상 예기치 않은 상황에서 문제가 발생할 수 있다. 이러한 상황에서 예외처리를 통해 문제를 해결한다. Exception : 자바가 처리할 수 있는 상황 - Checked Exception : 컴파일 시점에서 처리할 수 있는 예외 상황 Ex) 파일 입출력 , 커넥션 연결 등 - Unchecked Exception : 런타임 상황에서 확인 할 수 있는 예외 상황 Ex) Nullpoint, divided 0 , arraybound 등 Error : 자바가 처리할 수 없는 심각한 오류 (Server error , Out of Memory) Try ~ Catch 블록 public class Main { public static void main(String args[]) { try { //somethi..

인터페이스와 디폴트, 스태틱 메서드

JAVA 8 이후 부터 인터페이스에 default 한정자를 통해서 메서드를 직접 구현할 수 있다. 인터페이스에 구현된 메서드들은 해당 인터페이스를 구현한 클래스에서 공통적으로 사용 가능하다. - 인터페이스 public interface TestInterface { //구현해야될 메서드 String hi(); /** * (@impspec 대문자 변환) */ //default 메서드 default void uppperString() { //hi()에 정상적인 값이 들어올지 알수 없음 System.out.println(hi().toUpperCase()); } } - 구현된 객체 public class TestClass implements TestInterface{ @Override public String h..

Abstract Class와 Interface의 차이

Abstract Class 1. 하나의 상속만 가능 2. 일반적으로 멤버 변수나 공통적인 메서드가 선언되어 있을 수도 있고 또는 아무런 메서드가 존재하지 않을 수도 있다. 3. 기본적으로 추가적인 구현이 필요한 클래스 4. 생성자 선언 가능, 대신 직접 생성할 수는 없고 Super를 통해 생성자 상속 가능 Interface 1. 메서드를 가지고 있지 않음 2. 실제로 가지는 값을 가지지 않으며 어떠한 기능들을 구현해야 하는지 정의해둠 3. 구현한 인터페이스를 보면 해당 클래스의 기능을 알 수 있음 4. 인터페이스 내에 변수가 선언가능하나 Public Static final 로 선언되기 때문에 상수로 선언된다. 5. 다중 상속이 가능함 6. 생성자 선언 불가

New String 과 Literal String

String 객체를 생성하는 방법은 2가지 방법이 존재한다. String new ("String") String을 생성하는 기본적인 방법 객체를 생성 시마다 값과 상관없이 힙 메모리에 새로운 영역을 할당함 String a = new String("hi"); String b = new String("hi"); 위와 같이 a 와 b 는 같은 "hi" 라는 값을 가지지만 힙 메모리에 각각 새로운 데이터를 저장함 Literal String String 객체는 모든 객체를 통틀어 유일하게 변수값에 직접 리터럴로 값을 할당가능함 리터럴 객체로 문자열을 저장 시 String Pool이라는 고유의 영역에 데이터를 저장하며 값을 체크하여 중복된값은 같은 같은 레퍼런스를 가지게 만듦 (객체를 재사용함) String Poo..

String , StringBuffer , StringBuilder

String String a = "Hi"; a = a += "Bye"; JAVA는 문자열에 대해서 편의상 "+" 연산자를 지원하는데 String 의 경우 위와 같이 a를 선언한뒤 a에 + 연산자를 사용할 경우 힙 메모리에 새로운 문자열("HiBye")을 생성후 스택 영역에 저장된 변수 a 에 대한 reference를 변환하는 방식을 사용한다. 따라서 메모리상 불필요한 문자열("Hi")이 남게 된다. 문자열을 변환시 Immutable하다. StringBuilder StringBuilder a = new StringBuilder("Hi"); a.append("Bye"); StringBuilder의 경우 기존에 선언된 문자열에 추가적인 문자열을 append를 통해서 추가하게 된다. 기존의 a가 가지고 있던 S..

반응형