profile
하루에 한걸음씩, 꾸준히

동적 프록시

2021년 12월 27일
·
0개의 댓글
·

프록시 패턴

프록시라는 말이 나오면 '대리자'를 떠올려 보자. 어떤 서버에 직접 요청을 보내는 것이아니라 대리자를 통해 요청을 가져와달라고 간접 요청을 보낼 수 가 있다. 이 순서가 중요한 이유는 proxy 객체가 개발중간에 추가되거나 빠져도 클라이언트와 원본 객체에는 아무런 수정이 필요하지 않다는 점에 있다. 이렇게 중간에서 대리자 역할을 하는 프록시 객체는 다음과...

2021년 12월 20일
·
0개의 댓글
·

템플릿 콜백 패턴

콜백?프로그래밍에서 콜백 또는 콜애프터 함수는 다른 코드의 인수로서 넘겨주는 실행 가능한 코드를 말한다.콜백을 넘겨받는 코드는 이 콜백을 필요에 따라 즉시 실행할 수도 있고, 아니면 나중에 실행할 수도 있다.중간에 추가한다면 원본 코드에 대한 수정이 필수적이다.클래스가

2021년 12월 20일
·
0개의 댓글
·

전략 패턴

인프런 스프링 - 고급편 강의 내용을 참고하여 정리한 내용입니다. 지난 포스팅에서 알아본 탬플릿 메서드 패턴은 부모 클래스에 변하지 않는 템플릿을 두고, 변하는 부분을 자식 클래스에 두어서 상속을 사용해서 문제를 해결했다. 전략 패턴은 변하지 않는 부분을 Contex

2021년 12월 20일
·
0개의 댓글
·

템플릿 메서드 패턴

변하는 부분과 변하지 않는 부분을 분리한다.변하는 부분에 대해서는 다형성을 사용변하지 않는 부분에 대해서는 abstract class로 추출하여 모듈화한다.장점단일 책임 원칙이 잘 지켜지도록 구조화 할 수 있다.하나의 변경사항은 한 곳에서만 변경이 있도록 한다.익명 내

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

Thread Local

해당 스레드에서 저장한 값만 제거한다.제거하지 않으면 메모리 누수가 발생할 수 있고,스레드 풀을 사용하기 때문에 요청반환이 끝나고, 스레드는 풀로 들어가서 여전히 살아있게 된다.그럼 스레드 로컬에 저장된 값도 살아있기 때문에 다음 요청이 이전 스레드를 받아서 사용하게

2021년 12월 17일
·
0개의 댓글
·

낙관적 락 vs 비관적 락

트랜잭션 대부분은 충돌이 발생하지 않는다고 낙관적으로 가정하는 방법이다.낙관적 락은 트랜잭션을 커밋하기 전까지는 트랜잭션의 충돌을 알 수 없다는 특징이 있다.JPA가 제공하는 버전 관리 기능을 사용한다. 엔티티 특정 필드에 @Version 어노테이션을 추가하면, 엔티티

2021년 6월 3일
·
0개의 댓글
·

Spring AOP

AOP는 Spring 프레임워크가 제공하는 강력한 기능 중 하나로, 객체 지향의 한계를 보완하여 책임을 관점에 따라 한번 더 분리하고 더욱 객체 지향스럽게 코딩할 수 있다.AOP는 어떤 로직이 있을때, 핵심적인 관점과, 부가적인 관점을 분리하여 각각의 관점에서 모듈화하

2021년 6월 3일
·
0개의 댓글
·

동기 vs 비동기, 블로킹 vs 논블로킹

메소드를 실행시킴과 동시에 결과 값이 기대되는 경우, 요청을 보낸쪽에서 결과가 반환될 때까지 기다린다.안전성과 실행순서가 보장된다.느리다.요청을 보낸 쪽이 아니라 응답을 주는 쪽에서 결과를 알려준다.요청을 보낸 쪽은 응답이 올 때까지 다른일을 하고 있는다.빠르다.순서가

2021년 6월 3일
·
0개의 댓글
·

동시성 처리 모델 - 스레드 잠금장치, 함수형 프로그래밍

7가지 동시성 모델 by 폴 부처

2021년 6월 2일
·
0개의 댓글
·

Spring Events

Spring Events Spring ApplicationContext는 이벤트를 발행하는 기능을 제공한다. 스프링이 관리하는 이벤트는 기본적으로 다음 가이드를 따른다. 스프링 이벤트는 ApplicationEvent을 상속한다. publisher는Applic

2020년 10월 1일
·
0개의 댓글
·

JPA로 인덱스 사용하기

배경 데이터베이스는 조건문으로 검색할 때, 테이블 전체를 full scan으로 탐색한다. 이러한 탐색 방식은 데이터가 많아지면 많아질 수록 비효율적인 방식이라는 것을 알 수 있을 것이다. 이러한 비효율을 해소하기 위해 인덱스 테이블을 활용할 수 있다. 인덱스는 B-Tree 자료구조를 사용해서 구성된다고 한다.B-Tree알고리즘이 궁금하다면 여기를 참고하...

2020년 9월 26일
·
1개의 댓글
·

테스트 격리(Test Isolation)

우리는 테스트들이 서로 순서에 상관없이 독립적으로 수행되어야 한다는 것을 알고 있다. 마틴 파울러도 자신의 블로그에 비결정적 테스트의 문제점에 대해서 언급하며 그 원인으로 테스트 격리가 부족하게 될 때 비결정적 테스트가 된다고 했다. Therefore I find it

2020년 9월 4일
·
1개의 댓글
·
post-thumbnail

시리즈 썸네일

2020년 9월 4일
·
0개의 댓글
·

해시태그 생성 API

질문 답변 게시판을 만드는데, 질문에 해시태그를 등록하여 카테고리를 나누려고 한다. 해시태그를 질문에 등록하는 API를 만들어보자.질문과 해시태그의 연관관계를 정의하자.하나의 질문은 N개의 해시태그를 가질 수 있다. 또한 하나의 해시태그는 여러 개의 질문에서 가질 수

2020년 8월 31일
·
1개의 댓글
·

디자인 패턴 - Adapter Pattern

어댑터 패턴 어댑터 패턴은 클라이언트와 서버의 인터페이스가 서로 맞지 않을 경우 이를 연결하기 위해 어댑터 클래스를 구현하는 디자인 패턴이다. 클라이언트가 사용하고 있는 기존의 인터페이스와 서버가 제공하는 인터페이스를 변경하지 않고 둘을 연결할 수 있다는 장점이 있다. 예시 Tolr 검색 서버가 제공하는 인터페이스와 클라이언트가 요구하는 인터페이스가 일치...

2020년 7월 24일
·
0개의 댓글
·
post-thumbnail

ESLint, Prettier 설정하는 방법

ESLint는 더 일관성있게 코드를 작성하고 버그를 식별 및 회피할 목적으로 ECMAScript/JavaScript 코드에서 발견된 패턴을 개발자에게 알려주기 위한 도구입니다. ESLint에 작성된 모든 규칙은 플러그인이며 런타임에 더 추가 할 수 있습니다.vue-cl

2020년 7월 7일
·
0개의 댓글
·

Querydsl - (4)

page, pageable을 활용해보자.전체 카운트를 한번에 조회하는 단순한 방법데이터 내용과 전체 카운트를 별도로 조회하는 방법querydsl이 제공하는 fetchResults()를 사용하면 내용과 전체 카운트를 한번에 조회할 수 있다.실제 쿼리는 2번 호출된다.fe

2020년 6월 17일
·
1개의 댓글
·

JPA - 영속성 전이

영속성 전이 특정 엔티티를 영속상태로 만들 때 연관된 엔티티도 함께 영속 상태로 만들고 싶을 때 CASCADE 옵션으로 제어 영속성 전이는 연관관계를 매핑하는 것과 아무 관련이 없다. 엔티티를 영속화할 대 연관된 엔티티도 함께 영속화하는 편리함을 제공할 뿐이다. CASCADE의 종류 ALL : 모두 적용 PERSIST : 영속 REMOVE : 삭제 M...

2020년 6월 17일
·
0개의 댓글
·

Querydsl - (3)

\-프로젝션이란 객체를 반환하는 것이 아니라, 원하는 필드만 뽑아서 DTO로 반환하는 것을 말한다.프로젝션 대상이 하나면 타입을 명확하게 지정할 수 있다.프로젝션 대상이 둘 이상이면 튜블이나 DTO로 조회1) 프로퍼티 접근2) 필드 직접 접근2-1) 별칭이 다를때프로퍼

2020년 6월 16일
·
0개의 댓글
·