분류 전체보기 328

제 5장. HTTP와 연계하는 웹 서버

1. 통신을 중계하는 프로그램 : 1) 프록시 서버 : 서버와 클라이언트의 양쪽 역할을 하는 중계 프로그램으로, 클라이언트로부터의 리퀘스트를 서버에 전송하고 서버로부터의 리스폰스를 클라이언트에 전송한다. a. 캐싱 프록시 : 프록시로 리스폰스를 중계하는 때 프록시 서버 상에 리소스 캐시를 보존해 두는 타입의 프록시이다. 프록시에 다시 같은 리소스에 리퀘스트가 온 경우, 오리진 서버로부터 리소스를 획득하는 것이 아니라 캐시를 리스폰스로 돌려주는 것이 있다. 그러나 캐시에도 유효기간이 있어서 캐시서버에서 오리진 서버로 새로운 리소스를 획득하러 가는 경우도 있다. * 캐시 서버뿐만 아니라 클라이언트 측에도 캐시가 존재한다. b. 투명 프록시 : 프록시로 리퀘스트와 리스폰스를 중계할 때 메시지 변경을 하지 않는..

BIg-O 표기법

1. Big-O 표기법이란? 알고리즘의 성능을 수학적으로 표기해 시간, 공간 복잡도 나타내 줄 수 있다. a. 시간 복잡도란 시간 복잡도(Time Complexity)는 알고리즘이 입력받는 데이터의 수 혹은 크기를 변수로하여 실제로 수행되는 연산량을 수식 형태로 표기하는 것을 말한다. 시간 복잡도는 주로 빅-오 표기법(Big-O Notation)을 사용한다. 1) O(1)알고리즘 : constant time 데이터의 크기에 상관없이 성능의 변화가 없는 경우 문제 : 2) O(n) 알고리즘 : 데이터의 크기에 따라 비례해서 처리시간도 증가한다. 3) O(n^2) 알고리즘 : quadratic time -> 지수함수형식 4) O(nm) 알고리즘 3)이랑 차의 주의 5) O(n^3) 6) O(2^n) : ex..

제4장 결과를 전달하는 HTTP 상태코드

3장은 특별한 내용 없다. Request와 Respose 메시지에 대해서는 :https://prde.tistory.com/81 Http와 REST 1. Http 프로토콜 HTTP 메시지 프로토콜은 반드시 request/response의 한쌍으로 구성되어있다. 그리고 request와 response는 각각 header와 body로 이루어져 있고 header와 body 사이에는 반드시 한 줄이 띄.. prde.tistory.com 1. 상태 코드 1) 2XX (성공) 204 : 리퀘스트를 성공했지만 돌려줄 리소스 없을 경우 : 클라이언트에서 서버로 정보를 보내는 것으로 족하고, 클라이언트에 새로운 정보를 보낼 필요가 없는 경우 사용 206 : 이 리스폰스는 Content-Range로 지정된 범위의 엔티티가 ..

2장. 간단한 프로토콜 HTTP(HTTP1.1)

1. Request와 Response 1) Request 메시지 구성 2) Response 메시지 구성 2. HTTP 프로토콜의 특징 1) HTTP는 상태를 유지하지 않는 stateless 프로토콜이다. HTTP 프로토콜 독자적으로 Request와 Response를 교환하는 동안에 상태를 관리하지 않는다. 이를 보완하기 위해 쿠키가 등장(쇼핑몰에서 로그인 후 다른 사이트로 이동해도 로그인 상태 유지되도록) 2) URI를 통해 인터넷 상의 어떤 장소에 있는 리소스도 호출할 수 있다. ( 모든 URI를 리퀘스트 URI에 포함하거나 Host 헤더 필드에 네트워크 로케이션을 포함하거나) 3) HTTP 메서드 a. GET : 리소스 획득 메서드이다. b. POST : 엔티티 전송 메소드 c. PUT : 파일 전송..

1장. 웹과 네트워크의 기본에 대해 알아보자

1. HTTP 1) WWW(World Wide Web)를 구성하는 기술로는 SGML을 베이스로 한 HTML, 문서 전송 프로토콜로는 HTTP, 문서의 주소를 지정하는 방법으로URL 등세 가지로 제안되었다. 2.TCP/IP 1) 컴퓨터와 네트워크 기기가 상호 간에 통신하기 위해 서로 같은 방법으로 통신해야 한다. 이러한 규칙을 '프로토콜'이라고 한다. 2) 프로토콜에는 a. 케이블 규격과 IP주소 지정 방법 b. 떨어진 상태를 찾기 위한 방법 c. 그곳에 도달하는 순서 d. 웹을 표시하기 위한 순서와 같은 여러 가지가 있다. 3) TCP/IP는 애플리케이션 계층, 트랜스포트 계층, 데이터링크 계층, 링크 계층으로 나뉘어 있다. a. 애플리케이션 계층 : 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움..

그림으로 배우는 Http&Network Basic 목차

1. 웹과 네트워크의 기본 https://prde.tistory.com/98?category=959443 2. 간단한 HTTP 프로토콜 https://prde.tistory.com/99?category=959443 4. 결과를 전달하는 HTTP 상태코드 https://prde.tistory.com/102 5. HTTP와 연계하는 웹 서버 https://prde.tistory.com/104 6. HTTP 헤더 7. 웹을 안전하게 하는 HTTPS https://prde.tistory.com/108 8. 누가 엑세스 하고 있는지를 확인하는 인증 https://prde.tistory.com/109?category=959443 9. HTTP에 기능을 추가한 프로토콜 / 10. 웹 콘텐츠에서 사용하는 기술 http..

Builder Pattern(effective java)

1. 기본 : 생성자에 매개변수가 많다면 빌더 패턴 사용을 고려해라 - 생성자가 많을 경우 또는 오브젝트 생성 후 변경 불가능한 불변 오브젝트가 필요한 경우, 불변 오브젝트를 생성하여 오브젝트의 일관성, 변경 불가능을 실현하여 코드의 가독성과 불변성, 일관성을 유지하도록 한다. 객체 생성의 대표적 방법으론 1) 점층적 생성자 패턴 : 일관성, 불변성은 유지되지만, 가독성 좋지 않다. 어디에 뭐가 저장되는지 호출 코드만으로는 각 인자의 의미를 알기 어렵다. 2) 자바 빈 패턴 - Setter 메서드 쓰는 방식으로 어떤 해당 파라미터가 어떤 변수인지 메서드를 통해 확인 가능(일관성, 변경 불가능성 원칙 깨짐)-> 스레드 안정성을 위해 추가 작업 필요 3) 빌더 패턴이 있다. - 어떤 필드에 어떤 인자 넣어줬..

CS/DesignPattern 2021.07.08

ServerSideRendering vs. ClientSideRendering

1. ServerSideRendering 1) 의미 : 전통적인 웹 애플리케이션 렌더링 방식으로 사용자가 웹 페이지에 접근할 때 서버에 각각 페이지에 대한 요청을 하고 서버에서 html, js 파일 등을 다운로드해서 화면에 렌더링 하는 방식이다. 초기 렌더링 시에 내용이 존재하는, 미리 서버에서 랜더링 된 HTML을 받는다. 그 다음 자바스크립트로 웹 페이지를 완전하게 작동시킨다. 2) SSR의 장점 : - 사용자가 처음으로 컨텐츠를 볼 수 있는 시점을 앞 당길 수 있다. - 검색엔진 최적화에 용이하다.(검색엔진들의 크롤링 봇은 HTML 내용 자체를 긁어와서 처음에 내용이 빈 HTML을 받는 CSR 앱 들은 검색 엔진 노출에 불리하다. ) - SSR을 적용하면 초기 렌더링시에 내용이 있는 HTML에다가 ..

CS/ETC. 2021.07.07

Scanner

1. 특징 1) 입력을 받을 때 String으로 받고 싶으면 next() 혹은 nextLine()을 사용하면 되고 int 로 입력받고 싶을 경우 nextInt()를 사용하여 입력받으면 된다. 2) 공백(띄어쓰기) 또는 개행(줄 바꿈)을 기준으로 읽는다. Scanner의 입력 메소드들은 대부분 공백과 개행(' ', '\t', '\r', '\n')을 기준으로 읽는다. 2. 사용예시 import java.util.Scanner;// Scanner 클래스 호출 public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in);// Scanner 객체 생성 byte a = in.nextByte(); // b..

0. StringBuilder vs. StringBuffer

1.String String은 Immutable 하기 때문에 값을 변경할 수 없다. 따라서. concat()을 이용하여 값을 덧붙일 때 기존 String에 있던 값을 버리고 새로운 값을 할당한다. (concat이나 +를 사용하면 속도가 현저히 느려짐- 힙 메모리에 많은 임시 가비지가 생성되므로 힙 메모리 부족으로 애플리케이션 성능에 영향을 끼친다. ) 2. StringBuffer, StringBuilder String과 반대로 StringBuilder, StringBuffer는 가변성을 가지기 때문에 .append(), .delete()등의 api를 이용해서 동일 객체 내에 문자열을 변경하는 것이 가능하다. 멀티 쓰레드 환경에서 StringBuffer를 사용하여 값이 예상치 못하게 변경되는 것을 방지할 ..