서블릿 컨테이너, 스프링부트 동작 과정 autoauto- 서블릿 컨테이너, 스프링부트 동작 과정auto- 서블릿 컨테이너auto- 서블릿 구현auto - Servletauto - GenericServletauto - HttpServletauto - 서블릿 실행순서auto- Spring boot와 Servletauto - 스프링 부트 실행과정auto - 클라이언트 요청으로부터 DispatchServlet의 전체 흐름auto - Application contextautoauto 톰켓 즉 서블릿 컨테이너에 의해 개발자가 정의한 프로그램들이 실행되고, 더 나아가 스프링 부트는 어떻게 실행될까 해서 글을 정리하게 되었습니다. 서블릿 컨테이너 먼저 서블릿컨테이너를 정의하면 다음과 같을 수 있다. 서블릿 컨테이너는 ..
TCP/IP 송수신 과정 TCP/IP 송수신 과정 소켓 생성 소켓 연결 설정 Three way handshake 데이터 송수신 소켓 연결 종료 Four way handshake 소켓 생성 클라이언트가 특정 서버와 통신을 하기 위해서는 운영체제에 socket() 시스템콜을 통해 소켓을 생성해야 합니다. 운영체제 내부 프로토콜 스택은 소켓의 정보를 저장하기 위해 메모리 영역을 할당하고 그곳에 소켓 제어 정보(상대 IP, 소켓 상태 정보 등)를 저장합니다. 운영체제는 생성된 소켓의 정보의 파일 디스크립터를 사용자 프로그램에게 반환해줍니다. File discripter : 프로토콜 스택의 내부에 이는 다수의 소켓 중 어느 것을 가리키는지를 나타내는 번호표와 같은 존재이다. 소켓 연결 설정 아직 소켓은 만들었지만..
허브, 스위치, 공유기, 라우터란 ? 허브, 스위치, 라우터란 ? 허브 (L1)(bit) 스위치(L2)(frame) 공유기 라우터(L3)(패킷) 허브 (L1)(bit) 여러 대의 컴퓨터를 연결해 네트워크를 만들어주는 장비이다. 포트의 개수는 허브에 따라 다양하며, 1개의 포트에 한대의 장비가 할당이 된다. 허브는 단순한 분배 중계기에 불과하기 때문에, 연결되는 컴퓨터 수에 따라 데이터 전송 대역이 분리된다. 예를 들어, 원래 전송 대역이 10Mbps인 네트워크 라인에 허브를 물리고 여기에 5대의 컴퓨터를 연결했다면 각 컴퓨터의 대역폭은 2Mbps가 된다. 허브는 크게 멀티포트와 리피터(Repeater) 기능으로 많이 사용된다. 멀티포트의 의미는 공유기 포트가 모자라면 허브를 추가적으로 설치하는 것을 말한..
정규식 / 정규표현식 (Regular Expressions; Regex) 정규표현식은 문자열을 처리하는 방법 중의 하나로 특정한 조건의 문자를 '검색'하거나 '치환'하는 과정을 매우 간편하게 처리 할 수 있도록 하는 수단이다. matches (일치하는지 확인) replace(패턴에 맞는 값을 새로운 값으로 치환) Matcher, Pattern, find(), group() find(), group() (패턴에 맞는 값 1개씩 찾아내기) find(), group() (패턴에 맞는 값 모두 찾아내기) 대표적인 정규표현식 표현식 설명 ^ 문자열의 시작 ([]대괄호 안에서는 부정을 의미한다.) $ 문자열의 종료 . 임의의 한 문자 (문자의 종류 가리지 않음) * 앞 문자가 없을 수도..
Step-05 : 테스트 코드 작성하기 목차 온라인 서점 API 만들기로 살펴보는 Spring Boot OOP 5 Step-05 : 테스트 코드 작성하기 목차 테스트 코드의 필요성 Test code 작성 방법 Junit Mockito Unit Test(단위 테스트) 컨트롤러 테스트(예제) 서비스 테스트(예제) 4. Integration Test(통합 테스트) 통합테스트 예제 @RunWith(SpringRunner.class) @SpringBootTest MockMvc 사용하기 TDD 5. 마무리하며 테스트 코드의 필요성 회원가입 기능을 완성했지만 기능을 테스트하기 위해서는 Postman이나 Swagger로 테스트를 하거나 프론트엔드 화면을 구성해서 테스트를 해야 합니다. 기능 테스트 하나를 해야 하더라도..
Step-04 회원가입 Service 만들기 : 응용영역 효율적으로 관리하기 - Part2 응용 영역(서비스) 이번 단계는 응용영역 효율적으로 관리하기 - Part2 편으로 어떻게 하면 응용영역을 응집력 있고, 변경에 유연하고, 가독성 좋은 코드를 작성할지에 대해 알아볼 것입니다. 이장에서는 크게 아래와 같은 주제로 응용영역을 효율적으로 관리하는 방법에 대해 알아보겠습니다. 책임 도메인 HelperService 만들기 DTO 사용하기 최종적인 회원가입 코드 Swagger를 통한 회원 가입 API CALL 4. 책임(단일책임원칙) 객체지향 설계를 하는 데 있어 기준을 잡아주는 원칙들이 있는데 이것을 SOLID 원칙이라고 합니다. 이중 먼저 단일 책임 원칙에 대한 내용을 얘기하려고 합니다. 단일 책임 원칙은..
온라인 서점 API 만들기로 살펴보는 Spring Boot OOP 4 Step-04 회원가입 Service 만들기 : 응용영역 효율적으로 관리하기 - Part1 응용 영역(서비스) 이 단계에서는 회원가입 기능을 구현하면서 응용 영역을 어떻게 하면 응집력 있고, 변경에 유연한 코드를 작성할지에 대해 알아볼 것입니다. 크게 아래와 같은 주제로 응용영역을 효율적으로 관리하는 방법에 대해 알아보겠습니다. (소프트웨어에서 변경이 유연하고, 확장가능한 코드는 아주 핵심적인 부분입니다.) 서비스크기 요구사항 정리 및 초난감 회원가입 Service 구현 캡슐화 1. 서비스크기 드디어 회원가입을 하기 위한 signUp 서비스를 구현할 차례입니다. 먼저 회원가입 서비스 기능을 구현하기 전에 회원가입 서비스를 어느 정도의 ..
Step02 - 회원 엔터티 정의 1. 회원 엔터티 정의 먼저 앞에서 설계 테이블을 간단히 보겠습니다. 다음과 같은 member 테이블이 있었습니다. 회원을 가입시키기 위해서는 member 엔터티를 정의해야할 필요가 있습니다. 위 그림 테이블을 기반으로 Member 엔터티를 정의해볼것입니다. @Entity @Table(name = "member") @NoArgsConstructor(access = AccessLevel.PROTECTED) @Getter public class Member { @Id @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @Embedded private Email ema..
- Total
- Today
- Yesterday
- Quasar
- JPA
- Chache
- Linux
- Gradle
- Github
- Spring
- OAuth
- batch
- HMAC
- Infra
- Collection
- eslint
- javascript
- #linux
- Angular
- jenkins #mac방화벽
- tobi
- java
- vue
- aws
- OS
- Jenkins
- https
- kotlin
- network
- IntelliJ
- SSH
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |