본문 바로가기

전체 글151

[Network] HTTP의 구조와 특징 정리 [김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 학습 후 정리한 내용입니다.] 순서 HTTP란? HTTP 특징 - 클라이언트 서버 구조 HTTP 특징 - Stateless HTTP 특징 - Connectionless HTTP메시지 1. HTTP란? HTTP(Hypertext Transfer Protocol)는 인터넷에서 웹 페이지를 전송하기 위해 사용되는 프로토콜이다. HTTP는 클라이언트와 서버 사이에서 데이터를 주고받는 데 사용되며, 대부분의 웹 사이트에서 사용된다. 요즘은 HTTP 메시지에 거의 모든 것을 전송한다. HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버 간 데이터를 주고 받을 때도 대부분 HTTP 사용 1... 2023. 5. 11.
[Network] 인터넷 네트워크 정리 [김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식을 학습 후 정리한 내용입니다.] 순서 인터넷 통신 IP TCP, UDP PORT DNS 1. 인터넷 통신 인터넷에서 컴퓨터 둘은 어떻게 통신할까? 만약, 클라이언트와 서버가 바로 옆에 있다면 케이블로 연결이 가능하다. 하지만, 클라이언트와 서버가 멀리 있다면, 인터넷 망을 통해서 메시지를 보내야 한다. 인터넷 망은 수많은 노드들로 이루어져 굉장히 복잡하기 때문에, 어떻게 넘어가는지 이해하려면 IP(인터넷 프로토콜)에 대해서 이해해야 한다. 2. IP(인터넷 프로토콜) 인터넷을 이용해서 메시지를 전달하기 위해서는 IP주소를 알아야 한다. 모든 컴퓨터는 자신의 IP주소가 있으며, 메시지를 보내고자 하는 컴퓨터의 IP주소를 알아내어 데이터를 보낼 수 있다.. 2023. 5. 10.
[Springboot] Redis로 동시성 문제 해결하기 [최상용님의 재고 시스템으로 알아보는 동시성 이슈 해결방법을 학습 후 정리한 내용입니다.] 순서 Redis 라이브러리 알아보기 작업환경 세팅 Lettuce 사용하기 Redisson 사용하기 정리 1. Redis 라이브러리 알아보기 Redis를 사용하여 동시성 문제를 해결하는 대표적인 라이브러리에는 2가지가 존재한다. Lettuce Redisson Lettuce Setnx 명령어를 활용하여 분산락을 구현한다. 기존의 값이 없을 때만 Set을 하는 명령어이다. Setnx는 Spin Lock방식이므로 retry 로직을 개발자가 작성해야 한다. Spin Lock이란, Lock 을 획득하려는 스레드가 Lock을 획득할 수 있는지 확인하면서 반복적으로 시도하는 방법이다. Redisson Pub-sub기반으로 Loc.. 2023. 5. 9.
[Springboot] Synchronized, Database로 동시성 문제 해결하기 [최상용님의 재고 시스템으로 알아보는 동시성 이슈 해결방법을 학습 후 정리한 내용입니다.] 순서 재고 시스템 생성과 문제 발생 Synchronized 사용하기 Database 사용하기 - Pessimistic Lock Database 사용하기 - Optimistic Lock Database 사용하기 - Named Lock 1. 재고 시스템 생성과 문제 발생 재고 시스템을 만들기 위해서 도메인과 서비스를 만들어보자. 도메인의 경우 id, productId, quantity 필드를 가지며, quantity를 받아서 감소시키는 비즈니스 로직이 도메인 상에 존재한다. [Domain] @Entity public class Stock { @Id @GeneratedValue(strategy = GenerationTy.. 2023. 5. 9.
[JPA] 값 타입 정리 [김영한님의 자바 ORM 표준 JPA 프로그래밍을 학습 후 정리한 내용입니다.] 순서 기본값 타입 임베디드 타입 값 타입과 불변 객체 값 타입의 비교 값 타입 컬렉션 🥹서론 JPA에서 데이터 타입은 크게 두가지로 나뉘어진다. 1) 엔티티 타입 @Entity로 정의하는 객체 데이터가 변해도 식별자로 지속해서 추적 가능 ex) 학생 엔티티의 나이 값을 변경해도 식별자로 인식 가능 2) 값 타입 int, Integer, String처럼 단순히 값으로 사용하는 자바 기본 타입이나 객체 식별자가 없고 값만 있으므로 변경 시 추적 불가 ex) 숫자 100을 200으로 변경하면 완전히 다른 값으로 대체 값 타입은 기본값 타입(int, double), 임베디드 타입, 컬렉션값 타입으로 나뉘어진다. 이 중 우리는 2)값.. 2023. 4. 26.
[JPA] 프록시와 연관관계 관리 [김영한님의 자바 ORM 표준 JPA 프로그래밍을 학습 후 정리한 내용입니다.] 순서 프록시 즉시 로딩과 지연 로딩 영속성 전이(CASCADE)와 고아 객체 1. 프록시 엔티티를 조회할 때 연관된 엔티티들이 항상 사용되는 것은 아니다. 연관 관계의 엔티티는 비즈니스 로직에 따라 사용될 때도 있지만 그렇지 않을 때도 있다. JPA는 이러한 문제를 해결하려고 엔티티가 실제 사용될 때까지 데이터베이스 조회를 지연하는 방법을 제공하는데, 이것을 지연로딩이라고 한다. 그런데 지연로딩 기능을 사용하려면 실제 엔티티 객체 대상에 데이터베이스 조회를 지연할 수 있는 가짜 객체가 필요한데, 이것을 프록시 객체라고 한다. em.find() vs em.getReference() em.find() : 데이터베이스를 통해서 실.. 2023. 4. 24.