일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 항해플러스
- 자바공부
- java
- 스프링MVC
- 스프링입문
- 이것이자바다
- 인프런
- docker
- REGEXP_SUBSTR
- inflearn
- 자바의정석
- Python
- 자바의정석 연습문제
- Secure Coding
- Spring
- 시큐어코딩
- 불친절한 SQL 프로그래밍
- 김영한
- JPA
- 불친절한SQL프로그래밍
- 스프링 부트와 JPA
- 분석함수
- Java의정석
- 항해플러스 백엔드
- 제네릭
- 스프링
- Numpy
- 자바연습문제
- 서블릿
- 스프링 핵심원리
- Today
- Total
목록분류 전체보기 (122)
Continuous Challenge
HTTP 헤더 개요 HTTP 헤더 header-field = field-name ":" OWS field-value OWS (OWS : 띄어쓰기 허용) field-name은 대소문자 구분 없음 용도 HTTP 전송에 필요한 모든 부가정보 예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트, 서버 정보, 캐시 관리 정보 등 표준 헤더가 너무 많음 필요시 임의의 헤더 추가 가능 - 예) helloworld : hihi 분류 - RFC2616(과거) → 폐기됨 General 헤더 : 메시지 전체에 적용되는 정보. 예) Connection: close Request 헤더 : 요청 정보. 예) User-Agent: Mozilla/5.0 (macintosh;..) Response 헤더 :..
HTTP 상태코드 상태 코드 : 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능 1xx (Infomational) : 요청이 수신되어 처리중 2xx (Successful) : 요청 정상 처리 3xx (Redirection) : 요청을 완료하려면 추가 행동이 필요 4xx (Client Error) : 클라이언트 오류, 잘못된 문법 등으로 서버가 요청을 수행할 수 없음 5xx (Server Error) : 서버 오류, 서버가 정상 요청을 처리하지 못함 2xx - 성공 200 : OK. 요청 성공 201 : Created. 요청 성공해서 새로운 리소스가 생성됨 - 생성된 리소스는 응답의 Location 헤더 필드로 식별 202 : Accepted. 요청이 접수되었으나 처리가 완료되지 않았음 - ..
클라이언트에서 서버로 데이터 전송 1. 전송 방식 (크게 2가지) 쿼리 파라미터를 통한 데이터 전송 - GET - 주로 정렬 필터(검색어) 메시지 바디를 통한 데이터 전송 - POST, PUT, PATCH - 회원 가입, 상품 주문, 리소스 등록, 리소스 변경 2. 4가지 상황 정적 데이터 조회 - 이미지, 정적 텍스트 문서 동적 데이터 조회 - 주로 검색, 게시판 목록에서 정렬 필터(검색어) - 조회는 GET 사용. GET은 쿼리 파라미터 사용해서 데이터를 전달 (실무에서 권장하지 않음) HTML Form을 통한 데이터 전송 - 회원 가입, 상품 주문, 데이터 변경 - POST 전송 : 바디에 데이터 전달 - GET 전송 : URL에 데이터 전달 HTTP API를 통한 데이터 전송 - 회원 가입, 상품..
HTTP API API URI 고민 리소스의 의미는 뭘까? - 회원을 등록하고 수정하고 조회하는 게 리소스가 아니다. - 회원이라는 개념 자체가 리소스다. 리소스를 어떻게 식별하는 게 좋을까? - 회원을 등록하고 수정하고 조회하는 것을 모두 배제 - 회원이라는 리소스만 식별하면 된다. → 회원 리소스를 URI에 매핑 API URI 설계 리소스 식별, URI 계층 구조 활용 리소스와 행위를 분리 가장 중요한 것은 리소스를 식별하는 것 URI는 리소스만 식별 리소스와 해당 리소스를 대상으로 하는 행위를 분리 - 리소스 : 회원 - 행위 : 조회, 등록, 삭제, 변경 리소스는 명사, 행위는 동사 HTTP 메서드 - GET, POST HTTP 메서드 종류 GET : 리소스 조회 POST : 요청 데이터 처리,..
HTTP HTTP 메시지에 모든 것을 전송 HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 HTTP 역사 HTTP/0.9 1991년 : GET 메서드만 지원, HTTP 헤더X HTTP/1.0 1996년 : 메서드, 헤더 추가 HTTP/1.1 1997년 : 가장 많이 사용, 우리에게 가장 중요한 버전 HTTP/2 2015년 : 성능 개선 HTTP/3 진행중 : TCP 대신에 UDP 사용, 성능 개선 기반 프로토콜 TCP : HTTP/1.1, HTTP/2 UDP : HTTP/3 현재 HTTP/1.1 주로 사용 HTTP/2, HTTP/3 도 점점 증가 클라이언트 서버 구조 Request ..
URI (Uniform Resource Identifier) URI는 로케이터(Loctor), 이름(Name) 또는 둘 다 추가로 분류될 수 있다. URI Uniform : 리소스 식별하는 통일된 방식 Resource : 자원, URI로 식별할 수 있는 모든 것 (제한 없음) Identifier : 다른 항목과 구분하는 데 필요한 정보 URL, URN URL(Uniform Resource Locator) : 리소스가 있는 위치를 지정 URN(Uniform Resource Name) : 리소스에 이름을 부여 위치는 변할 수 있지만, 이름은 변하지 않는다. URN 이름만으로 실제 리소스를 찾을 수 있는 방법이 보편화 되지 않음 따라서, 앞으로는 URI를 URL과 같은 의미로 얘기하겠음. URL 전체 문법 s..
인터넷 네트워크 인터넷 통신 IP (Internet Protocol) TCP, UDP PORT DNS IP (Internet Protocol) 인터넷 프로토콜 역할 지정한 IP 주소 (IP Address)에 데이터 전달 패킷(Packet)이라는 통신 단위로 데이터 전달 IP 프로토콜의 한계 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 - 중간에 패킷이 사라지면? (패킷 소실) - 패킷이 순서대로 안오면? (패킷 전달 순서 문제 발생) 프로그램 구분 - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면? TCP, UDP 인터넷 프로토콜 스택의 4계층 애플리케이션 계층 - HTTP, FTP 애플리케이션 전송 계층 - TCP, UDP OS 인터넷 계층 - I..
프록시 em.find() vs em.getReference() em.find() : 데이터베이스를 통해서 실제 엔티티 객체 조회 em.getReference() : 데이터베이스 조회를 미루는 가짜(프록시) 엔티티 객체 조회 프록시 객체의 초기화 Member member = em.getReference(Member.class, "id1"); member.getName(); getName() 영속성 컨텍스트에 초기화 요청 DB 조회 실제 Entity 생성 target.getName() 프록시의 특징 프록시 객체는 처음 사용할 때 한 번만 초기화 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님. 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근 가능 프록시 객체는 원본 엔티티를 ..
상속관계 매핑 관계형 데이터베이스는 상속 관계 X 슈퍼타입 서브타입 관계라는 모델링 기법이 객체 상속과 유사 상속관계 매핑 : 객체의 상속과 구조와 DB의 슈퍼타입 서브타입 관계를 매핑 슈퍼타입 서브타입 논리 모델을 실제 물리 모델로 구현하는 방법 각각 테이블로 변환 -> 조인 전략 통합 테이블로 변환 -> 단일 테이블 전략 서브타입 테이블로 변환 -> 구현 클래스마다 테이블 전략 주요 어노테이션 @Inheritance(strategy=InheritanceType.XXX) - JOINED : 조인 전략 - SINGLE_TABLE : 단일 테이블 전략 - TABLE_PER_CLASS : 구현 클래스마다 테이블 전략 @DiscriminatorColumn(name="DTYPE") @DiscriminatorVa..