profile
봄은 영어로 스프링

커서기반 페이지네이션(queryDsl)

내 주문 리스트를 조회하는 api를 작성했다.조회할 엔티티는 위와 같고, 조건은 visit_date로 오름차순 정렬,orderStatus가 없으면 전체 조회, 있으면 where절의 조건이 된다.커서기반 페이지네이션위 조건(동적쿼리, 페이지네이션)을 만족하려면 jdbcT

4일 전
·
0개의 댓글
·
post-thumbnail

선착순 쿠폰 이벤트 개발기2 (feat.Redis)

선착순 쿠폰 이벤트 개발기를 진행한 뒤 분산락에 대해서 알게 되어 스핀락보다 분산락이 더 효율적이라는 생각에 redis 클라이언트를 변경해보았다.implementation 'org.redisson:redisson-spring-boot-starter:3.16.8'lett

7일 전
·
0개의 댓글
·

선착순 쿠폰 이벤트 개발기(feat.Redis)

문득 "선착순 이벤트" 같은 트래픽이 몰리는 상황에서 서버가 트래픽을 어떻게 받아내는지 궁금증이 생겼다.선착순 이벤트는 한번에 많은 사람이 몰리는 서비스이기 때문에 tps를 최대한 높게, mtt는 최대한 낮게 만드는게 목표이다.모든 코드는 여기서 볼 수 있다.erd는

2023년 2월 10일
·
0개의 댓글
·
post-thumbnail

Hash Function & HashTable

Hash Function을 사용해 고정된 크기의 값으로 변환하는 것.알고리즘을 이용하여 데이터의 고유한 새로운 숫자로 변환하는 것이다. (무결성, 암호화 등 사용처가 많다)Division기법, Multiplication기법 등등 많은 알고리즘이 있다.자바에서는 어떤 방

2022년 12월 26일
·
0개의 댓글
·

일급 컬렉션

일급 컬렉션 (First Class Collection)은 객체지향 생활체조에서 처음 언급되었다.비즈니스에 종속적인 자료구조 생성Collection의 불변성 보장상태와 행위를 한 곳에서 관리컬렉션에 이름 부여 postList의 최대 크기는 10이어야 한다는 조건과,

2022년 12월 23일
·
0개의 댓글
·
post-thumbnail

Autowired 동작 과정

빈의 라이프 사이클에 따르면 11번과 14번 단계는 BeanPostProcessor와 연관되어 있다.그 전에 10번까지 이미 모든 빈들이 생성되고, 의존관계가 설정되어 있기 때문에, BeanPostProcessor타입의 빈들은 @Autowired로 의존관계를 주입하는

2022년 12월 19일
·
0개의 댓글
·

Spring Bean

스프링 빈은 자바 빈과 큰 차이가 있다.반복적인 작업을 효율적으로 하기 위해 사용하는 클래스private필드, getter/setter, 생성자를 가지고 있음직렬화가 가능해야 한다.스프링 IoC 컨테이너가 관리하는 Java 객체를 뜻한다.IoC(Inversion of

2022년 12월 18일
·
0개의 댓글
·

의존성과 생성자 주입 DI

OOP에서 객체간 협력은 필수적이며, 객체가 협력한다는 것은 의존성이 존재한다는 것이다. 여기서 의존성이란 파라미터나 리턴값 또는 지역변수 등으로 다른 객체를 참조하는 것을 의미한다.예들 들어 Service가 Repository를 사용하고 있을 때 Service객체가

2022년 12월 14일
·
0개의 댓글
·
post-thumbnail

Checked Exception과 UnCheckedException

CheckedExceptionRuntimeExceptionErrorThrowable 클래스를 열어보자요약하자면 throwable 클래스는 자바의 모든 오류와 예외의 슈퍼클래스이다.JVM 또는 하위클래스의 throw에 의해 던져질 수 있다.마찬가지로 catch절의 인자는

2022년 12월 14일
·
0개의 댓글
·

객체지향 프로그래밍 OOP

프로그램을 객체로 구성하는 것.프로그램의 거대화로 인해 분할하기 위해 탄생가장 중요한 것은객체는 다른 객체와 서로 협력하여 역할을 수행하는 것이다.역할을 맡은 객체는 책임이 생긴다.객체간에 메세지로 통신을 한다.객체는 책임을 요구하지만 수행하는 방법은 관여하지 않는다.

2022년 12월 12일
·
0개의 댓글
·
post-thumbnail

Interface VS Abstract Class

추상클래스와 인터페이스는 extends, implements를 통해 상속, 구현하여 사용하기에 비슷하다 생각하고 있었다. 정의추상클래스는 클래스내의 추상 메서드가 하나 이상 포함되면 추상 클래스로 정의된다.인터페이스는 클래스내의 모든 메서드가 추상 클래스이다. (자바

2022년 12월 11일
·
0개의 댓글
·
post-thumbnail

GC란 무엇인가?

자바에서는 개발자가 메모리를 직접 해제할 수 없기 때문에 GC가 필요하게 된다.GC는 어떻게 작동할까??먼저 JVM의 heap 영역의 구조부터 알아야 한다.Young Generation : 새롭게 생성하는 객체들이 존재하는 곳Old Generation : Young G

2022년 12월 8일
·
0개의 댓글
·

컴포넌트 스캔과 의존성 주입 DI

의존성 주입 (Dependency Injection)전략패턴서비스 로케이터 패턴팩토리 패턴의존관계 주입 패턴이 생성자에 주입하는 패턴을 생성자 주입패턴(DI) 라고 한다.의존관계를 주입할 때 참조 순환 관계(Circular dependencies) 에 대해 유의하자.관

2022년 11월 3일
·
0개의 댓글
·

스프링 IoC 컨테이너, record

의존성컴파일 타임 의존성 : 코드를 작성하는 시점에 발생하는 의존성 (클래스간 의존성)런타임 의존성 : 애플리케이션이 실행되는 시점의 의존성 (객체간 의존성)IoC(제어의 역전)라이브러리는 애플리케이션이 흐름을 직접 제어하지만 프레임워크는 프레임워크(IoC 컨테이너)가

2022년 11월 1일
·
0개의 댓글
·
post-thumbnail

Builder 빌더

복잡한 객체를 단계별로 구성할 수 있다. 동일한 구성의 코드로 객체의 다양한 유형과 표현을 생성할 수 있다.사용처생성자에 인자가 많을 때생성자에 매개변수가 많을 때장점객체를 단계별로 구성하거나, 재귀적으로 단계를 구성할 수 있다.객체를 다양하게 구성할 때 동일 코드를

2022년 10월 24일
·
0개의 댓글
·
post-thumbnail

Abstract Factory 추상 팩토리

실제 객체가 정확히 무엇인지 알지 못해도 서로 관련성이 있거나 독립적인 여러 객체를 생성하고 조작할 수 있도록 해준다. 자주 사용하는 Iterator가 Abstract Factory패턴이 적용되었다.사용처객체가 생성되거나 구성, 표현되는 방식과 무관하게 시스템을 독립적

2022년 10월 21일
·
0개의 댓글
·

OOP를 위한 설계(숫자 야구)

외부 라이브러리 사용faker, lombok설계를 할때 고려해야하는 것들요구사항 파악하기숫자야구 게임의 룰을 이해동작환경, 데이터의 범위 고려Console상에서 동작.세자리 숫자 사용.(확장 가능성 있음)중복 금지.1~9 사용. (0은 배제)일을 객체단위로 나누기 /

2022년 10월 21일
·
0개의 댓글
·

옵셔널과 스트림

Collection여러 데이터의 묶음 (List, Set등등)Iterator컬렉션 데이터(데이터 묶음)를 하나씩 쪼개서 처리하는 수단.next()를 통해 다음 데이터 조회.전으로 돌아갈 수 없음.Stream컬렉션도 결국엔 데이터의 연속Iterator보다 효율적이다.Sy

2022년 10월 20일
·
0개의 댓글
·
post-thumbnail

Chain of Responsibility 메서드 체이닝

핸들러를 따라 요청을 전달할 수 있는 디자인 패턴. 요청을 받으면 각 핸들러는 요청을 처리할지 다음 체인으로 전달할지 결정한다. 사용처순차적인 검증에서 실패하면 다른 검사를 진행할 이유가 없을 때각각의 검증 코드를 재사용할 때장점추가적인 처리가 필요 없을 때

2022년 10월 20일
·
0개의 댓글
·
post-thumbnail

Adapter Pattern 어댑터 패턴

클래스의 인터페이스를 사용자가 원하는 인터페이스 형태로 변환시킨다. 서로 일치하지 않는 인터페이스를 갖는 클래스들을 함께 동작시킨다. 사용처기존 클래스를 사용하고 싶지만 해당 인터페이스가 나머지 코드와 호환하지 않는 경우Service를 변경할 수 없을 때.

2022년 10월 19일
·
0개의 댓글
·