분류 전체보기
-
public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } - 위 코드는 인터페이스(DiscountPolicy) 뿐만 아니라 구현체에 의존 >> DIP 위반 - 변경으로 인해 OCP도 위반 public class OrderServiceImpl implements OrderService { //private final DiscountPolicy discountPolicy = new RateDiscountP..
객체 지향 원리 작용 (메모용)public class OrderServiceImpl implements OrderService { // private final DiscountPolicy discountPolicy = new FixDiscountPolicy(); private final DiscountPolicy discountPolicy = new RateDiscountPolicy(); } - 위 코드는 인터페이스(DiscountPolicy) 뿐만 아니라 구현체에 의존 >> DIP 위반 - 변경으로 인해 OCP도 위반 public class OrderServiceImpl implements OrderService { //private final DiscountPolicy discountPolicy = new RateDiscountP..
2023.03.19 -
- 추가 예정 - 스프링이라는 단어는 문맥에 따라 다르게 사용됨 1. 스프링 DI(Dependency Injection) 컨테이너 기술 2. 스프링 프레임워크 3. 스프링 부트, 프레임워크를 모두 포함한 생태계 - 스프링은 자바 언어 기반의 프레임워크 - 자바는 객체 지향 언어 (객체 지향 특징으로는 추상화/캡슐화/상속/다형성) - 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는, 좋은 객체 지향 어플리케이션을 개발할 수 있게 도와주는 프레임워크 - 객체 지향 프로그래밍은 프로그램을 유연하고 변경에 용이하게 만듬 > 대규모 소프트웨어 개발에 사용됨 - 객체와 협력이라는 관계부터 생각하기! - 클라이언트: 요청 / 서버: 응답 - 수많은 객체 클라이언트와 객체 서버는 서로 협력 관계..
스프링 핵심1 - 스프링과 객체 지향 설계- 추가 예정 - 스프링이라는 단어는 문맥에 따라 다르게 사용됨 1. 스프링 DI(Dependency Injection) 컨테이너 기술 2. 스프링 프레임워크 3. 스프링 부트, 프레임워크를 모두 포함한 생태계 - 스프링은 자바 언어 기반의 프레임워크 - 자바는 객체 지향 언어 (객체 지향 특징으로는 추상화/캡슐화/상속/다형성) - 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는, 좋은 객체 지향 어플리케이션을 개발할 수 있게 도와주는 프레임워크 - 객체 지향 프로그래밍은 프로그램을 유연하고 변경에 용이하게 만듬 > 대규모 소프트웨어 개발에 사용됨 - 객체와 협력이라는 관계부터 생각하기! - 클라이언트: 요청 / 서버: 응답 - 수많은 객체 클라이언트와 객체 서버는 서로 협력 관계..
2023.03.15 -
1. - 1999년에 rfc2616 버전이 나왔고, 2014년에 rfc7230~7235의 등장으로 인해 폐기됨 2. 표현 3. 콘텐츠 협상 4. 전송 방식 5. 일반 정보 6. 7. 인증 8. 쿠키 - http는 기본적으로 무상태 프로토콜 >> 클라이언트와 서버가 요청과 응답을 주고받으면 연결이 끊어짐 (물론 지속연결을 통해 어느정도 유지도 가능), 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못함 - 위 문제는 stateless 와 관련된 문제 - Samesite 는 아직 적용된지 오래된지 않아 브라우저에서 어느정도까지 지원하는지 확인하고 사용해야 함 2-1. 캐시 기본 동작 - ex: 두번째 요청은 캐시 유효 시간을 검증하고 유효하면 캐시에서 조회함(네트워크 필요x) - ex: 세번째 요청..
http (5) - 헤더1. - 1999년에 rfc2616 버전이 나왔고, 2014년에 rfc7230~7235의 등장으로 인해 폐기됨 2. 표현 3. 콘텐츠 협상 4. 전송 방식 5. 일반 정보 6. 7. 인증 8. 쿠키 - http는 기본적으로 무상태 프로토콜 >> 클라이언트와 서버가 요청과 응답을 주고받으면 연결이 끊어짐 (물론 지속연결을 통해 어느정도 유지도 가능), 클라이언트가 다시 요청하면 서버는 이전 요청을 기억하지 못함 - 위 문제는 stateless 와 관련된 문제 - Samesite 는 아직 적용된지 오래된지 않아 브라우저에서 어느정도까지 지원하는지 확인하고 사용해야 함 2-1. 캐시 기본 동작 - ex: 두번째 요청은 캐시 유효 시간을 검증하고 유효하면 캐시에서 조회함(네트워크 필요x) - ex: 세번째 요청..
2023.03.08 -
1. - 1xx 는 거의 사용되지 않음 2. - 전부 다 사용하지 않아도 됨 3. - 리다이렉션의 이해: 웹 브라우저는 3xx의 응답의 결과에 location헤더가 있으면, location 위치로 자동 이동(리다이렉트) - 301은 리다이렉트를 요청했을 때 예를 들어 post로 요청한것이 get으로 변경되고, 본문이 변할 수도 있음 - 308은 post로 보낸것이 그대로 post로 되고 내부의 http 바디에 보낼 데이터도 유지 - 영구 리다이렉션보다는 일시적 리다이렉션을 많이 사용함 4. 5. - 400대는 클라이언트의 잘못, 500대는 서버 내부의 문제 - 웬만해서 서버에서는 500대를 만들면 안됨 - ex: 고객이 예금을 출금하려 할 때, 잔고가 부족할 때는 500대 사용x - ex2: 20세 이상..
http (4) - 상태 코드1. - 1xx 는 거의 사용되지 않음 2. - 전부 다 사용하지 않아도 됨 3. - 리다이렉션의 이해: 웹 브라우저는 3xx의 응답의 결과에 location헤더가 있으면, location 위치로 자동 이동(리다이렉트) - 301은 리다이렉트를 요청했을 때 예를 들어 post로 요청한것이 get으로 변경되고, 본문이 변할 수도 있음 - 308은 post로 보낸것이 그대로 post로 되고 내부의 http 바디에 보낼 데이터도 유지 - 영구 리다이렉션보다는 일시적 리다이렉션을 많이 사용함 4. 5. - 400대는 클라이언트의 잘못, 500대는 서버 내부의 문제 - 웬만해서 서버에서는 500대를 만들면 안됨 - ex: 고객이 예금을 출금하려 할 때, 잔고가 부족할 때는 500대 사용x - ex2: 20세 이상..
2023.03.08 -
1. ex) 요구 사항: 회원 정보 관리 api 만들기 (회원 목록 조회, 회원 조회, 회원 등록, 회원 수정, 회원 삭제) - uri 설계시 가장 중요한 것은 리소스 식별 2. - post는 메세지를 내부에 담아 보낼 수 있는 모든 것을 할 수 있지만, 조회는 get이 유리(캐싱 가능), 변경되거나 프로세스가 진행되거나 어쩔 수 없는 경우에 post사용 3. 4. - 멱등은 자동 복구 메커니즘에 활용(ex: delete를 호출했는데 서버에서 응답 없음 > 클라이언트가 재시도, 멱등한 요청이기에 문제 없음) - GET은 url을 키로 잡고 캐시를 하면 됨(실무에선 주로 get만 캐시로 사용) 2-1 - 이미지, 정적 텍스트 문서 같은 경우, 조회이기에 GET 사용, 정적 데이터는 일반적으로 쿼리 파라미터..
http (3) - Http 메서드 / 메서드 활용1. ex) 요구 사항: 회원 정보 관리 api 만들기 (회원 목록 조회, 회원 조회, 회원 등록, 회원 수정, 회원 삭제) - uri 설계시 가장 중요한 것은 리소스 식별 2. - post는 메세지를 내부에 담아 보낼 수 있는 모든 것을 할 수 있지만, 조회는 get이 유리(캐싱 가능), 변경되거나 프로세스가 진행되거나 어쩔 수 없는 경우에 post사용 3. 4. - 멱등은 자동 복구 메커니즘에 활용(ex: delete를 호출했는데 서버에서 응답 없음 > 클라이언트가 재시도, 멱등한 요청이기에 문제 없음) - GET은 url을 키로 잡고 캐시를 하면 됨(실무에선 주로 get만 캐시로 사용) 2-1 - 이미지, 정적 텍스트 문서 같은 경우, 조회이기에 GET 사용, 정적 데이터는 일반적으로 쿼리 파라미터..
2023.03.08 -
HTTP (HyperText Transfer Protocol) 1. - http (1.1): 1997년, 가장 많이 사용되고 중요한 버전 - http (3): 진행중(2023.3기준), tcp대신에 udp사용, 성능 개선 - 크롬 브라우저 실행 후 f12클릭, 예시로 hello 검색 > 우측 개발자 창에서 Network > name 우클릭 하고 protocol 클릭하면 h2/h3-29 등의 정보를 볼수가 있는데, h는 http의 약자 (즉, 이미 구글에서는 http3을 사용하고 있다는 것) 2. - 비즈니스 로직이나 데이터 같은것은 서버에, ui와 사용성을 클라이언트에 >> 이렇게 하면 클라이언트와 서버가 독자적으로 진화 가능하다. - ex: 회사의 비즈니스가 잘되어 트래픽이 폭주하면 백엔드는 클라이언트..
http (2) - HTTP 기본HTTP (HyperText Transfer Protocol) 1. - http (1.1): 1997년, 가장 많이 사용되고 중요한 버전 - http (3): 진행중(2023.3기준), tcp대신에 udp사용, 성능 개선 - 크롬 브라우저 실행 후 f12클릭, 예시로 hello 검색 > 우측 개발자 창에서 Network > name 우클릭 하고 protocol 클릭하면 h2/h3-29 등의 정보를 볼수가 있는데, h는 http의 약자 (즉, 이미 구글에서는 http3을 사용하고 있다는 것) 2. - 비즈니스 로직이나 데이터 같은것은 서버에, ui와 사용성을 클라이언트에 >> 이렇게 하면 클라이언트와 서버가 독자적으로 진화 가능하다. - ex: 회사의 비즈니스가 잘되어 트래픽이 폭주하면 백엔드는 클라이언트..
2023.03.08 -
1. IP(인터넷 프로토콜) - 지정한 ip 주소에 데이터를 전달하며, 패킷이라는 통신단위로 데이터 전달 - ip패킷에는 출발지, 목적지 ip주소가 필요함 ip프로토콜의 한계 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 - 패킷이 중간에 사라지거나(패킷 소실) 여러개 보냈을 때 순서대로 도착하지 않을 수도 있음(패킷 전달 순서 문제 발생) 프로그램 구분 - 같은 ip를 어플리케이션 여러개가 사용하면 구분 힘듬 2. TCP / UDP tcp(전송 제어 프로토콜) - 연결지향(연결 됐는지 확인 후 작업, tcp 3way handshake(가상 연결)), 데이터 전달 보증, 순서 보장 - 신뢰성 있고 대부분이 tcp 사용 - 데이터 전달 보증은 클라이언트에서 서버로 데이터를..
http (1) - 인터넷 네트워크 / URL / 웹브라우저 요청 흐름1. IP(인터넷 프로토콜) - 지정한 ip 주소에 데이터를 전달하며, 패킷이라는 통신단위로 데이터 전달 - ip패킷에는 출발지, 목적지 ip주소가 필요함 ip프로토콜의 한계 비연결성 - 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 비신뢰성 - 패킷이 중간에 사라지거나(패킷 소실) 여러개 보냈을 때 순서대로 도착하지 않을 수도 있음(패킷 전달 순서 문제 발생) 프로그램 구분 - 같은 ip를 어플리케이션 여러개가 사용하면 구분 힘듬 2. TCP / UDP tcp(전송 제어 프로토콜) - 연결지향(연결 됐는지 확인 후 작업, tcp 3way handshake(가상 연결)), 데이터 전달 보증, 순서 보장 - 신뢰성 있고 대부분이 tcp 사용 - 데이터 전달 보증은 클라이언트에서 서버로 데이터를..
2023.03.07 -
실무에서 제대로 동작하는 웹 어플리케이션을 개발하기 위해 스프링을 학습하고 사용을 하는데, 스프링이란? java 백엔드 개발에 있어서 떼어놓을 수 없는 프레임워크이며, 정의는 아래와 같다. >> 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크 기업에서 운영하는 웹 서비스에는 비즈니스 로직이라는것이 있는데, 이 때 비즈니스 로직은 기업이 제공하는 서비스를 코드로 구현한 것으로 사용자의 요구사항을 해결하기 위한 실질적인 코드를 뜻한다. 스프링 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대해 추가적으로 학습해야 했는데, 이는 비즈니스 로직 구현 기술이 복잡하고 어려웠기 때문이다. 하지만, 스프링을 사용하면 방법이 상대적으로 덜 복잡해지는데,..
스프링 - 백엔드 개발 입문 1실무에서 제대로 동작하는 웹 어플리케이션을 개발하기 위해 스프링을 학습하고 사용을 하는데, 스프링이란? java 백엔드 개발에 있어서 떼어놓을 수 없는 프레임워크이며, 정의는 아래와 같다. >> 엔터프라이즈용 Java 애플리케이션 개발을 편하게 할 수 있게 해주는 오픈소스 경량급 애플리케이션 프레임워크 기업에서 운영하는 웹 서비스에는 비즈니스 로직이라는것이 있는데, 이 때 비즈니스 로직은 기업이 제공하는 서비스를 코드로 구현한 것으로 사용자의 요구사항을 해결하기 위한 실질적인 코드를 뜻한다. 스프링 이전에는 비즈니스 로직을 구현하기 위해 기술 자체에 대해 추가적으로 학습해야 했는데, 이는 비즈니스 로직 구현 기술이 복잡하고 어려웠기 때문이다. 하지만, 스프링을 사용하면 방법이 상대적으로 덜 복잡해지는데,..
2023.02.01