본문 바로가기

HTTP 헤더 HTTP 헤더 - 일반 헤더 header-field = field-name":" OWS field-value OWS(OWS: 띄어쓰기 허용) field-name은 대소문자 구분 없음 HTTP 전송에 필요한 모든 부가정보 표현 Content-Type: 표현 데이터의 형식에 대한 정보,미디어 타입이나 문자 인코딩(application/json, charset=utf-8...) Content-Encoding: 표현 데이터를 압축하기위해 사용(gzip, deflate, identity) Content-Language: 표현 데이터의 자연 언어(ko, en) Content-Length: 표현 데이터의 길이, 바이트 협상 클라이언트가 선호하는 표현 요청으로 요청을 보낼 경우에만 사용한다. Accept: 클라이언트가..
HTTP 상태코드 HTTP 상태코드 클라이언트의 요청의 처리상태를 응답 메세지에서 알려줌 1xx(informational): 요청이 수신돼 처리 중. 2xx(successful): 정상 처리됨 3xx(redirection): 요청을 완료하려면 추가적인 처리가 필요함 4xx(client error): 클라이언트 오류나 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx(server error): 서버 오류. 서버가 정상 요청을 처리하지 못함 2xx - successful 클라이언트의 요청을 성공적으로 처리함 200대에서 자주 볼 수 있는 응답코드 200 ok: 요청 성공 201 Created: 요청 성공으로 새로운 리소스 생성 202 Accepted: 요청은 접수되었으나 처리가 완료되지 않음 204 No Content..
HTTP 메서드 HTTP Method 클라이언트가 서버로 요청할 때 어떤 목적을 갖는 요청인지 메서드로 명시함 GET: 리소스 조회 POST: 입력데이터를 전송하여 등록 PUT: 리소스가 존재한다면 수정, 없으면 생성 PATCH: 리소스 부분 변경 DELETE: 리소스 삭제 요청 HEAD: GET과 같지만 본문없이 헤더만 반환 OPTIONS: 서버에 특정 리소스가 어떤 메서드를 지원하는지 확인 요청 TRACE: 클라이언트와 서버 사이의 모든 HTTP 요청을 따라가 메시지의 이상여부를 확인 GET 리소스 조회에 사용 전달하려는 데이터는 query string을 통해 전달 메시지 바디를 사용할 수 있지만 지원하지 않는 곳이 많아서 권장하지 않음 POST 메세지 바디를 통해 서버로 요청데이터 전달 주로 신규 리소스 등록이나 ..
HTTP 특성 HTTP 특성 HTTP의 가장큰 특성 두가지로 무상태(stateless)와 비연결성(connectionless)가 있다. Stateless 서버가 클라이언트의 이전 상태를 보관하지 않는다는 의미. 상태를 보관하지 않으므로 클라이언트의 응답에 어떤 서버가 응답을 하더라도 상관이 없다.(요청이 많이 증가해도 서버를 증설하여 쉽게 해결할 수 있다.) Connectionless 비 연결성은 클라이언트와 서버가 연결을 맺은 후 요청에 대한 응답을 마치면 맺었던 연결을 끊어버리는 성질 비연결성의 장점 서버 자원을 효율적으로 사용 가능 비연결성의 단점 연결이 끊어지고 새로 연결할떄 TCP?IP연결을 새로 맺으므로 3 way-handshake하는데 리소스를 소모한다 하나의 요청에서 여러 데이터를 전달하는경우 위의 문제..
[모던 자바 인 액션] 13장. 디폴트 메서드 디폴트 메서드란? 하위 호환성을 유지하면서 API를 바꿀 수 있도록 추가된 기능. 디폴트 메서드를 사용하면 바뀐 인터페이스에서 기본 구현을 제공하므로 기존의 코드를 고칠 필요가 없게 해준다. default라는 키워드로 시작하며 다른 클래스에 선언된 메서드처럼 바디를 포함한다. 따라서 해당 인터페이스를 상속받는 구현체들은 디폴트 메서드의 구현도 상속받게 되어 하위 호환성이 유지되는 것이다. 추상 클래스와 인터페이스의 차이점 클래스는 하나의 추상 클래스만 상속받을 수 있지만 인터페이스는 여러 개를 구현할 수 있다. 추상 클래스의 인스턴스 변수로 공통상태를 가질 수 있지만 인터페이스는 인스턴스 변수를 가질 수 없다. 디폴트 메서드 활용 패턴 선택형 메서드 인터페이스를 구현하는 클래스에서 필요 없는 메서드의 내..
[모던 자바 인 액션] 9장. 리팩터링, 테스팅, 디버깅 코드 가독성 개선 코드 가독성은 다른 사람이 보더라도 쉽게 이해할 수 있음을 의미. 코드 가독성을 개선한다는 것은 구현한 코드를 다른 사람이 쉽게 이해하고 유지보수할 수 있게 만드는 것. 익명 클래스를 람다 표현식으로 리팩터링 익명클래스는 람다 표현식으로 리팩터링 할 수 있는데 익명 클래스의 장황함을 람다 표현식으로 간결하게 구현할 수 있다. 하지만 불가능한 경우도 있는데 아래와 같다. 익명 클래스에서 사용한 this와 super는 다른 의미를 가진다. 익명 클래스에서 this는 자기 자신, 람다는 람다를 감싸는 클래스를 가리킨다. 익명 클래스는 감싸고 있는 클래스의 변수를 가리킬 수 있지만 람다는 변수를 가릴 수 없다. int a = 123; Runnable r1 = ()->{ int a=2; //컴파..
[모던 자바 인 액션] 8장. 컬렉션 API 개선 컬렉션 팩토리 아래 방법은 정수의 리스트를 선언하는 방법이다. List nation = new ArrayList(); nation.add(1); nation.add(2); nation.add(3); nation.add(4); //Arrays.asList()사용시 고정크기의 리스트 List numbers = Arrays.asList(1,2,3,4); numbers.set(0,10); // 갱신 가능 numbers.add(5); //요소의 추가나 삭제 불가능 팩토리 메서드의 특징 요소 변경 불가 null 요소를 금지 Arrays.asList() 팩토리 메서드를 사용시 고정크기의 배열로 구현되어 있기 떄문에 UnsupportedOperationException을 발생시킨다. 리스트 팩토리 List.of()를 ..
[모던 자바 인 액션] 7장. 병렬 데이터 처리와 성능 병렬 스트림 컬렉션에 parallelSteram을 호출하면 병렬 스트림이 생성 병렬 스트림이란 각각의 스레드에서 처리할 수 있도록 스트림 요소를 여러 청크로 분할한 스트림으로 멀티코어 프로세서가 각각의 청크를 처리하도록 할당 순차 스트림을 병렬 스트림으로 변환하기 스트림에 parallel 메서드를 호출하면 기존의 함수형 리듀싱 연산이 병렬로 처리된다. public long parallelSum(long n) { return Stream.iterate(1L, i -> i + 1) .limit(n) .parallel() .reduce(0L, Long::sum); } 순차 스트림에 parallel을 호출해도 스트림 자체에는 변화가 일어나지 않고 내부적으로 이후 연산이 병렬로 수행되야 한다는 Boolean 플래..