분류 전체보기

🔥 Computer Science/📡 네트워크

2. 물리 계층에서는 어떤 일을 할까? (TCP/IP 1 Layer)

전기신호 종류 아날로그 신호(전화, 라디오 등) 디지털 신호 (둘의 차이점은 다음을 참조) 물리 계층에서는 데이터를 전기신호로 변환하는 기능을 합니다. 디지털 신호는 0과 1을 정확하게 표현할 수 있습니다. 전송하려는 데이터를 비트열로 변환하여 랜카드로 전달하면 0,1 전기 신호로 변환해서 전송하게 됩니다. 물리계층에 해당되는 네트워크 장비는 어떤게 있을까요? 바로 리피터와 허브가 물리계층에 해당됩니다. 리피터 (신호 증폭) 리피터는 말 그대로 일그러지고 약해진 신호를 복원시켜서 증폭하는 기능을 합니다. 허브 (더미허브 또는 리피터 허브) 허브 = 더미 허브 = 리피터 허브 라고도 부르며, 여러 개 PC와 통신할 수 있도록 해주는 장치입니다. 허브는 리피터의 기능을 포함하고 있기 때문에 리피터 허브라고 ..

💐 Spring/개념 및 이해

Spring 존재하지 않는 API 응답 커스터마이징 (feat. 내부 동작도 살펴보기)

Intro 기본적으로 Spring MVC는 존재하지 않는 API 요청 시 응답을 다음과 같이 주고 있습니다. { "timestamp":"2023-09-21T11:30:05.517+00:00", "status":404, "error":"Not Found", "path":"/api/404" } 위 응답은 Spring MVC가 기본적으로 제공해주는 오류 응답 입니다. 보통 실무에서는 프레임워크에서 기본적으로 제공해주는 응답값을 사용하기 보단 공통 응답 포맷을 맞춰서 사용할 것 입니다. 어떻게 하면 Not Found에 대한 응답을 커스텀할 수 있는지와 내부적으로 어떻게 동작하고 있는지도 함께 에러 로그와 코드를 통해 살펴보겠습니다. 에러 응답이 생성되기까지의 여정 그렇다면 어떻게 스프링MVC에서는 에러 메세지를..

🔥 Computer Science/📡 네트워크

1. 네트워크를 들어가기 앞서 (OSI 7 Layer, TCP/IP 5 Layer, 캡슐화란?)

들어가기 전.. 컴퓨터는 0과 1밖에 표현할 수 없다는 사실은 누구나 알고 있을 것 입니다. 그렇다면 우리가 웹 페이지에 접속했을 때, 그 많은 데이터는 어떻게 주고 받고 우리가 볼 수 있는 것 일까요? 웹이 동작하는 원리 어떻게 인터넷을 통해 우리가 웹페이지를 볼 수 있는지에 대해서 알아보겠습니다. 어떻게 HTTP로 사진을 받는거지? 고용량의 사진을 보내려면 엄청나게 오래 걸릴 것 입니다. 용량이 큰 파일을 한번에 보내는게 과연 효율적일까요? 데이터를 전송하면 회선을 사용하는데 그 회선은 여러 곳에서 나눠쓰게 됩니다. 그래서 한 회선을 오랫동안 점유하고 있으면 다른 곳에서 그 회선을 사용하기까지 기다림으로써 네트워크 지연이 발생하게 됩니다. 그렇기 때문에 회선을 빨리 사용하고 빠르게 반납하는게 중요합니..

💐 Spring/개념 및 이해

Spring MVC | @Valid는 어떻게 동작하는거야? (feat. DispatcherServlet)

@Valid Spring Boot에서 @Valid를 @RequestBody 객체에 붙이게 되면, 이때 스프링은 Hibernate Validator(javax.validation 패키지에 있는 JSR-303/JSR-380인 BeanValidation을 활용함)를 사용하게 됩니다. Spring MVC에서는 Validation이 어떻게 동작하는지 MVC 동작원리와 함께 살펴보겠습니다. Dispatcher Servlet 아래는 Spring MVC의 동작구조를 도식화한 것입니다. 하나하나 차근히 살펴보겠습니다. 클라이언트 요청을 제일 먼저 받는 디스패처 서블릿(프론트 컨트롤러)입니다. DispatcherServlet의 HandlerMapping 전략을 통해 클라이언트의 요청을 처리해 줄 Controller를 찾습..

🌧️ ORM/JPA

JPA 복합키 사용 시 주의사항 (feat. 테스트 케이스로 알아보자)

Intro 다대다 테이블을 보통 일대다 ↔ 다대일 테이블로 풀어서 구성하곤 합니다. 중간에 이어주는 테이블을 중간 테이블이라고 부르는데 이 테이블의 PK가 양쪽 테이블의 PK를 가지고 복합키를 구성할 수 있습니다. JPA에서 복합키로 PK를 구성했을 때, 저장 또는 PK를 업데이트를 해야할 때 주의해야 할 점에 대해서 알아보도록 하겠습니다. 개발환경 SpringBoot 2.5.11 Java 11 H2 memory db 테스트용 엔티티 소개 @Getter @NoArgsConstructor(access = AccessLevel.PROTECTED) @Entity public class Member { @Id @GeneratedValue private Long id; private String name; @Ma..

💐 Spring

Spring Validation을 통해 데이터 유효성 검증하기

Validation 요청 데이터의 유효성 검증(사용자의 아이디의 길이라던지 정규표현식에 만족하는지에 대한 검증 등등)과 비즈니스 로직은 보통 Service 로직에 담겨있습니다. DB 중복 체크 등 비즈니스 로직은 서비스에 두고, 이 데이터의 유효성 검사를 스프링 부트에서 제공해주는 Validation 기능을 이용하면 손쉽게 검증할 수 있을 뿐더러 서비스에는 오직 핵심 비즈니스 로직만 둘 수 있는 장점을 가져갈 수 있을 것 같습니다. 아래 실습을 통해 자세하게 알아보겠습니다. 개발환경 SpringBoot 2.7.9 JDK 11 Gradle 의존성 추가 SpringBoot 2.3.0 이상부터는 의존성이 포함되어 있지 않기 때문에 직접 추가해줘야 합니다. implementation 'org.springfram..

iseunghan
'분류 전체보기' 카테고리의 글 목록 (3 Page)