
테스트 컨테이너로 통합 테스트 환경 구축하기
이번에 회사 조직에서 통합 테스트를 위한 환경을 구축하는 과정에서 테스트 컨테이너를 도입하게 되면서, 그 과정을 정리하고자 한다. 그 전에 왜 통합 테스트 환경으로 테스트 컨테이너를 채택하게 되었는지 배경은 다음과 같다. ...
Read More
Spring Boot 특정 클래스만 Bean 등록하기 (feat. @SpringBootTest classes 속성)
Spring Boot 특정 클래스만 Bean 등록하기 feat. @SpringBootTest의 classes 속성 개요 회사에서 통합테스트 환경을 구축하는 과정에서 통합테스트 작성 시 선언해줘야 하는 어노테이션의 재사용성을...
Read More
옵시디언 데일리 투두리스트로 일감 관리하기
옵시디언 데일리 투두리스트로 일감 관리하기 1. 데일리 노트 (Daily notes) 설정하기 옵시디언에서 기본적으로 제공하는 코어 플러그인 (Core plugins)에 데일리 노트가 있다. 옵시디언 설정에 들어가 코어 플...
Read More
데이터베이스 락 (공유락과 베타락)
데이터베이스 락 1. 공유락 공유락은 데이터를 변경하지 않는 읽기 작업을 위한 락으로, 리소스를 읽을 수는 있지만 수정할 수 없게 하기 위한 락이다. 다른 트랜잭션에서 공유락이 걸린 데이터를 읽어도 데이터의 정합성은 지켜...
Read More

항해 플러스 6기 수료 회고 (벌써 10주가 지났지만)
벌써 2024년도 12월이 오고 나에게 큰 변화가 찾아왔다. 그렇다. 길었고 동시에 짧았던 10주 간의 항해 플러스 백엔드 6기 여정에 종지부가 찍혔다. 이번 포스팅에서는 항해 플러스 백엔드 6기의 수료 회고를 작성해보려 ...
Read More
항해 플러스 6기 9주차를 회고하며 - 카프카요? 제가 아는 이벤트 브로커 중에 최고였어요
1. 문제 이번 9주차의 과제는 다음과 같다. * 카프카를 구축해보고, 우리의 서비스에 카프카를 연동 및 실제 Producer, Consumer를 구현하여 적용해보기 * 카프카 메시지 발행의 결과에 대한 일관성을 보장하...
Read More
카프카 서버 구축부터 Spring Boot 연동, 결과적 일관성 보장까지
개요 카프카의 서버 구축부터 Spring Boot 와 카프카를 연동해보고, 더 나아가 카프카 메시지 발행의 결과적 일관성을 보장하는 방법까지 다뤄본다. (본 포스팅에서 다루는 프로젝트는 다음 이커머스 프로젝트입니다.) ...
Read More
항해 플러스 6기 8주차를 회고하며 - 인덱스는 진짜 유명한 쿼리 튜닝임 & 사가 패턴 사가세요
1. 문제 이번 8주차의 과제는 다음과 같다. * 시나리오에서 수행하는 조회 쿼리를 수집하고 인덱스를 적용하여 성능을 개선할 쿼리가 있다면 적용하여 성능 비교 분석하기 * 시나리오에서의 트랜잭션 범위를 분석해보고, 서비...
Read More

항해 플러스 6기 7주차를 회고하며 - 캐쉬🪙? No. 캐시!
1. 문제 이번 7주차의 과제는 다음과 같다. * 캐싱을 적용하여 성능을 개선할 수 있는 로직을 분석하고, 이를 합리적인 이유와 함께 문서 정리하기 * 적절한 캐싱 전략을 적용한 비즈니스 로직 작성하기 이번 주차에서...
Read More
항해 플러스 6기 6주차를 회고하며 - 레디스? 카프카? 불매합니다.(불티나게 매입)
1. 문제 6주차의 과제는 다음과 같다. * 시나리오에서 발생할 수 있는 동시성 이슈 파악 후 가능한 동시성 제어 방식들을 도입 및 장단점 파악 * 파악한 내용을 보고서로 작성해보기 * 이전 주차 때 적용한 동시...
Read More
항해 플러스 6기 솔직 중간회고
🧑💻 회고 시작에 앞서 자기소개 회고를 작성하는 일자를 기준으로 3년 6개월 된 백엔드 개발자이다. 메인으로 삼고 있는 기술 스택은 Java, Kotlin, Spring Boot 이며, 3년 9개월이라는 시간 동안 H...
Read More
항해 플러스 6기 5주차를 회고하며 - Filter, Interceptor 넌 못지나간다.✋
1. 문제 5주차의 과제는 다음과 같다. * 비즈니스 별 발생할 수 있는 에러 코드 정의 및 관리 체계 구축 * 시스템 성격에 적합하게 Filter, Interceptor 를 활용하여 기능의 관점을 분리하여 개선 * 시...
Read More
항해 플러스 6기 4주차를 회고하며 - 끝이 없네 끝이 없어!
1. 문제 4주차의 과제는 다음과 같다. * 선택한 시나리오 별 비즈니스 로직 개발 및 단위 테스트 작성 * 비즈니스 유즈케이스 개발 및 통합 테스트 작성 * 여기서의 유즈케이스는 시스템의 동작을 사용자 입장에서 표...
Read More
인터페이스가 Even하게 익지 않았어요 (ServiceImpl 구조에 대한 사견)
사견) Service를 추상화하는 것은 좋은 구조는 아니라고 생각한다. 1. 추상화를 하는 이유가 모호하다. 우리가 추상화를 사용하는 이유는 이를 의존하는 대상을 보호하기 위해 한다고 생각한다. 이 관점에서 볼 때 Serv...
Read More
항해 플러스 6기 3주차를 회고하며 - 요구사항 분석이 안됐잖아! 하지만 빨랐죠?
1. 문제 3주차의 과제는 다음과 같다. * 아래 시나리오 중 한 가지를 선택한다. 1. E-커머스 서비스 2. 맛집 검색 서비스 3. 콘서트 예약 서비스 * 선택한 시나리오의 요구사항을 분석하여 ...
Read More
항해 플러스 6기 2주차를 회고하며 - DB Lock도 락이다.
1. 문제 2주차의 과제는 다음과 같았다. * 특강 신청 서비스를 구현해 봅니다. * 특강 신청 API * 특강 선택 API * 특강 신청 완료 목록 조회 API * 특강 신청 및 신청자 목록 관리...
Read More
항해 플러스 6기 1주차를 회고하며 - 나야. 동시성.
1. 문제 걱정과 기대가 함께 있었던 항해 플러스가 시작되었다. 이전 기수분들이 겁(?)을 많이 줬었던 터라 걱정을 좀 더 많이 품고 그렇게 항해 플러스 1주차가 시작되었다. 1주차의 과제는 크게 다음과 같았다. ...
Read More
항해 플러스 6기 사전스터디 회고
항해 플러스 6기 사전스터디 회고 항해 플러스를 신청하다 지난 달부터 항해 플러스 코스를 신청했다. 새로운 기회가 없는 회사 업무에 익숙해져서 그대로 있다간 물경력이 될 것 같았다. 그리고 스스로도 발전이 필요할 것 같다...
Read More
Spring Boot에서 Redis 실습하기
Redis를 사용하는 이유 Redis는 오픈 소스 기반의 고성능 키-값 저장소로, 메모리 내 데이터 저장 및 검색을 위한 데이터베이로 사용한다. redis는 메모리 내 데이터 저장으로 빠른 응답 속도를 제공하며 문자열, 리...
Read More
AOP 활용하여 로그인 여부 체크하기
AOP 활용하여 로그인 여부 체크하기 요구 사항 진행하는 프로젝트에서 거의 대부분의 API 메서드에서 로그인 정보가 없으면 401 HTTP 상태와 에러 코드를 반환해야 한다는 요구 사항이 추가되었다. 단순히 요구 사항만 ...
Read More
ForkJoinPool과 클래스 로더
ForkJoinPool과 클래스 로더 문제가 발생한 상황 회사에서 설치형 솔루션 프로젝트를 진행하던 중이었다. 해당 프로젝트를 jar로 패키징하여 테스트 서버에 배포하고 기능 테스트를 진행하는데, 이러한 에러를 보게 되었다...
Read More
Github Actions로 브랜치에서 push하면 특정 브랜치에 자동 merge 하기
Github Actions로 브랜치에서 push하면 특정 브랜치에 자동 merge 하기 팀원들과 깃 브랜치 머지에 대해 이야기하다가 다음과 같은 주제에 대해 이야기를 한 적이 있다. 현재 깃 플로우가 1. 개별 featu...
Read More
Kafka vs SQS 비교하기
Kafka vs SQS 비교하기 실무에서 담당하고 있는 서비스에서의 메시지 큐 서비스로 Kafka와 NiFi로 호출하는 SQS 두 서비스를 혼합해 사용하고 있다. 물론 서비스 내에서도 파트가 나뉘어져 있어 한 파트는 Kaf...
Read More
도입 사례로 살펴보는 올바른 Kafka 사용 방안
도입 사례로 살펴보는 올바른 Kafka 사용 방안 통상적으로 알려진 Kafka의 이점 Kafka는 링크드인에서 만들어져 현재는 Apache 재단에서 관리하는 오픈소스 분산 이벤트 스트리밍 플랫폼이다. 기존 링크드인의 데이터...
Read More
휴가를 다녀오니 Kafka 토픽 파티션이 늘어난 건에 대하여
휴가를 다녀오니 Kafka 토픽 파티션이 늘어난 건에 대하여 제목 그대로의 일이 발생했다. 휴가 중 서비스의 다량 요청 트래픽이 몰리는 일이 발생했고, 그에 따라 늘어난 메시지 큐를 빨리 처리하기 위해서 팀에서 파티션을 ...
Read More
JPA 값 타입 필드 업데이트를 원활히 하는 방법
JPA 값 타입 필드 업데이트를 원활히 하는 방법 개요 실무에서 JPA를 사용하면서 엔티티의 json 필드의 특정 값을 업데이트하려고 하는데 정상적으로 동작하지 않았던 이슈를 소개하고, 이를 어떻게 해결했는지에 대해 다뤄보...
Read More
Transactional 잘 적용하기
@Transactional 잘 적용하기 개요 실무 업무를 하던 중 예기치 못하게 DB에서 특정 ID 값을 가진 데이터를 찾을 수 없다는 이슈가 발생했다. 처음에는 데이터를 생성해주는 로직에서의 문제인 줄 알았지만, 동일한 ...
Read More
JPA 복합 키 사용하기
JPA 복합 키 사용하기 서론 실무에서 새로운 프로젝트를 진행하면서 새로운 DB 테이블을 생성해야 하는 경우가 있었는데, 해당 테이블을 복합 키로 설계해 만들게 되었다. 그러면서 사용하고 있는 ORM인 JPA에서 복합 키를...
Read More
Spring Security 6.1.0 버전 이상부터 메서드 체이닝 사용 지양 이슈
Spring Security 6.1.0 버전 이상에서의 메서드 체이닝 사용 지양 이슈 배경 설명 Spring Security 6.1.0 버전부터는 메서드 체이닝을 사용하는 방법은 지양하고 대신 람다식을 통해 함수형으로 사용...
Read More
Spring Boot에 H2 database 연결하여 개발 환경 구축하기
Spring Boot에 H2 database 연결하여 개발 환경 구축하기 H2의 필요성 개인 프로젝트를 개발하면서 이전에는 클라우드 서버에 Mysql과 같은 DBMS 환경을 구성한 후, 해당 서버에 연결해서 DB 환경을 구...
Read More
Kotlin - 6.함수형 프로그래밍 다루기
Kotlin 문법 배우기 코틀린의 함수형 프로그래밍 (Functional Programming) 다루기 배열과 컬렉션 다루기 배열 이펙티브 자바에서도 나온 내용인데 프로덕션에서 배열은 잘 사용하지 않는다. 문법만 간단히 짚...
Read More
Kotlin - 5.상속, 접근제어, object 다루기
Kotlin 문법 배우기 코틀린에서 상속, 접근제어 및 object 다루기 1. 상속 추상 클래스 Animal이라는 추상클래스를 구현한 예제를 먼저 살펴보자. 자바로 먼저 살펴보면 다음과 같은 형태일 것이다. public...
Read More
Kotlin - 4.클래스 다루기
Kotlin 문법 배우기 코틀린에서 클래스 다루기 1. 클래스 클래스와 프로퍼티 우선 다음과 같은 자바의 클래스가 있다고 해보자. public class Person { private final String nam...
Read More
Kotlin - 3.제어문, 반복문, 예외, 함수 다루기
Kotlin 문법 배우기 코틀린의 제어문, 반복문, 예외, 함수 다루기 1. 제어문 if 문 다음과 같은 자바 코드를 살펴보자. 아래 함수는 받는 int 인자가 0보다 작으면 예외를 던지는 함수이다. private voi...
Read More
Kotlin - 2.연산자 다루기
Kotlin 문법 배우기 코틀린의 연산자 다루기 1. 단항 연산자와 산술 연산자 단항 연산자, 산술 연산자, 그리고 산술대입 연산자는 자바와 코틀린 모두 동일하다. 단항 연산자 산술...
Read More
Kotlin - 1.변수와 타입 다루기
Kotlin 문법 배우기 코틀린의 변수와 타입 다루기 1. 변수 선언 키워드 코틀린에서 변수 선언 키워드로 var과 val이 있다. var number1 = 10 val number2 = 10 두 키워드의 차이점으로는...
Read More
헥사고날 아키텍처 적용해보기 - 2
헥사고날 아키텍처 적용해보기 2. 프로젝트에 아키텍처 적용하기 저번 포스팅에서는 헥사고날 아키텍처가 무엇인지 이론적인 개념에 대해 다루었다면, 이번 포스팅에서는 실제로 개인 프로젝트에 헥사고날 아키텍처를 적용해 본 실무적...
Read More
헥사고날 아키텍처 적용해보기 - 1
헥사고날 아키텍처 적용해보기 1. 헥사고날 아키텍처란? 개인 프로젝트를 진행하면서 확장성이 좋고, 유지보수가 편한 패키지 구조에 어떤 게 있을까 알아보다가 헥사고날 아키텍처라는 구조를 알게 되었다. 그래서 이번 포스팅에...
Read More
도커로 Kafka 실습 로컬 서버 환경 구축하기
도커를 통한 Kafka 실습 환경 구축 들어가기 전에 해당 포스팅은 로컬 환경에서 Kafka 동작을 테스트하기 위해 Kafka 서버 환경을 구축해 본 내용을 담았다. 본 구축을 하기 전에 우선 도커가 로컬 환경에 ...
Read More
헤드퍼스트 디자인패턴 Chapter11 - 프록시 패턴
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 11. 객체 접근 제어하기 - 프록시 패턴 예제 프로젝트. 뽑기 기계 모니터링 코드 만들기 10장에서 만든 뽑기 기계의...
Read More
헤드퍼스트 디자인패턴 Chapter10 - 상태 패턴
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 10. 객체의 상태 바꾸기 - 상태 패턴 예제 프로젝트 - 최첨단 뽑기 기계 상태 기계 기초 지식 알아보기 우선 뽑기 ...
Read More
Optional을 조심히 사용해야 하는 이유
Optional을 조심히 사용해야 하는 이유 어느 날, 같은 팀원분이 내가 Optional을 사용해서 작성한 코드를 보고 Optional을 사용할 때는 조심해서 사용해야 한다고 일러준 적이 있었다. 그 때 팀원분은 Opt...
Read More
QueryDsl에서 json 컬럼에 조건 적용하기
QueryDsl에서 json 컬럼에 조건 적용하기 JPA를 사용하면서 DB에 Collection이나 Object 형태로 값을 저장하는 json 컬럼을 종종 사용하곤 한다. 그러다 간혹 QueryDsl 에서 json 컬럼에...
Read More
헤드퍼스트 디자인패턴 Chapter9 - 반복자 패턴과 컴포지트 패턴
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 9. 컬렉션 잘 관리하기 - 반복자 패턴과 컴포지트 패턴 예제 프로젝트 - 객체마을 식당과 팬케이크 하우스 합병 객체마...
Read More
헤드퍼스트 디자인패턴 Chapter8 - 템플릿 메서드 패턴
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 8. 알고리즘 캡슐화하기 - 템플릿 메서드 패턴 예제 프로젝트 - 커피와 홍차 커피와 홍차의 공통점은 카페인이 있다는 ...
Read More
헤드퍼스트 디자인패턴 Chapter7 - 퍼사드 패턴
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 7. 적응시키기 - 퍼사드 패턴 예제 프로젝트 - 홈시어터 만들기 영화나 TV 시리즈를 몰아볼 수 있는 홈시어터를 구축...
Read More
헤드퍼스트 디자인패턴 Chapter7 - 어댑터 패턴
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 7. 적응시키기 - 어댑터 패턴 객체지향 어댑터 어떤 인터페이스를 클라이언트에서 요구하는 형태로 적응시키는 역할 ...
Read More
헤드퍼스트 디자인패턴 Chapter6
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 6. 호출 캡슐화하기 - 커맨드 패턴 예시 - IoT 리모컨 리모컨 세부 사항 프로그래밍이 가능한 7개의 슬롯 버튼 ...
Read More
헤드퍼스트 디자인패턴 Chapter5
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 5. 하나뿐인 특별한 객체 만들기 - 싱글턴 패턴 싱글턴 패턴의 용도 인스턴스를 하나만 만들어야 하는 객체 스레드 풀,...
Read More
헤드퍼스트 디자인패턴 Chapter4
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 4. 객체지향 빵 굽기 - 팩토리 패턴 new 연산자가 보이면 “구상”을 떠올려라 new 연산자를 사용하면 구상 클래스...
Read More
Bouncer 패턴과 Extract method 기법
Bouncer 패턴과 Extract method 기법 이전 포스팅에서 다룬 Early Return 기법의 단점이었던 “여러 줄의 코드에서 적용했을 때 함수의 복잡도가 높아진다.” 라는 점을 보완하기 위한 방법 중 대표적인...
Read More
Early Return을 알아보자
Early Return을 알아보자 Early Return을 사용하면 좋은 경우 먼저 아래와 같은 계산을 하는 코드가 있다고 생각해보자. public class ExampleClass { public int c...
Read More
자바 버전 별 특징
자바 버전 별 차이점 Java 7 Type Inference (타입 추론) // 7이전 버전 List<String> list = new ArrayList<String>(); // 7이후 버...
Read More
헤드퍼스트 디자인패턴 Chapter3
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 3. 객체 꾸미기 - 데코레이터 패턴 OCP 살펴보기 OCP(Open-Closed Principle) 디자인 원칙 ...
Read More
사례로 보는 Spring Event & Kafka
Spring Event와 Kafka 예시 사례 문서 정리 작업을 수행하는 한 애플리케이션이 있다고 가정해보자. 정리할 문서들이 들어오고 정리 요청을 하게 되면 정리 작업이 수행된다. 해당 애플리케이션에서 문서를 정리하...
Read More
lombok @Builder의 기본값 초기화 딜레마
lombok @Builder의 기본값 초기화 딜레마 개요 lombok에서 제공해주는 @Builder 어노테이션은 생성자 인자를 메서드 체인으로 대입하여 생성자를 호출할 수 있게 빌더 클래스를 생성해준다. 클래스 레벨에서...
Read More
헤드퍼스트 디자인패턴 Chapter2
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 2. 객체들에게 연락 돌리기 - 옵저버 패턴 기상 모니터링 애플리케이션 알아보기 이 시스템은 기상 스테이션(실제 기상 ...
Read More
헤드퍼스트 디자인패턴 Chapter1
헤드퍼스트 디자인패턴 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 1. 디자인 패턴 소개와 전략 패턴 오리 시뮬레이션 게임, SimUduck 오리 시뮬레이션 게임에서는 헤엄도 치고 꽥꽥...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter9
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 9. 웹 최적화 트렌드 웹 최적화의 역사 모바일 기기의 등장과 모바일 사이트 최적화 스마트폰이 등...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter8
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 8. 웹 프로토콜 최적화 HTTP의 발전 HTTP/1.1 GET, POST 외에도 PUT, DEL...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter7
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 7. CDN CDN을 사용하는 이유 CDN 서비스 이용 시 이점 성능 및 안정...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter6
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 6. 캐시 최적화 캐시 캐시: 컨텐츠 요청에 빠르게 응답하기 위해 서버와 클라이언트 사이에서 응답...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter5
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 5. 웹에서 가속을 이끌어 내는 방법 웹 브라우저 동작 이해하기 가장 먼저 도메인 서버와 통신하여...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter4
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 4. 이미지 최적화 디지털 이미지의 종류와 특성 이미지를 잘 사용하려면 우선 이미지의 종류와 특성...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter3
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 3. 웹 사이트 성능을 개선하는 기본적인 방법 HTTP 요청 수 줄이기 웹 페이지에서 요청하는 컨...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter2
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 2. 웹 최적화 웹 최적화란 웹 최적화란 웹 성능을 구현하기 위해 최고의 조건을 만드는 다양한 노...
Read More
웹에 날개를 달아주는 웹 성능 최적화 기법 Chapter1
웹에 날개를 달아주는 웹 성능 최적화 기법 본 책을 읽고 책의 내용을 간략하게 정리한 글입니다. Chapter 1. 웹 성능이란 무엇인가 웹의 대표적인 요소 URL (Uniform Resource Locato...
Read More
Kafka 도입에 대하여
Kafka 도입에 대하여 Kafka란 무엇인가? Kafka는 Apache 소프트웨어 재단이 개발한 오픈 소스 분산 메시징 시스템으로, 주로 데이터 스트리밍, 이벤트 처리, 로그 수집 등 다양한 분야에서 사용된다. Ka...
Read More
DB 조회 성능 향상을 위한 방법
DB 조회 성능 향상을 위한 방법 1. 적절한 인덱스 사용 데이터베이스에서 레코드 검색 시 인덱스를 활용하면 검색 속도를 향상시킬 수 있다. 인덱스는 특정 열의 값을 저장하고 해당 열의 검색을 빠르게 만든다. ...
Read More
Spring Boot 에서의 재시도 수행 전략
Spring Boot 에서의 재시도 수행 전략 Spring Boot 에서 예외 발생 시 메서드 재시도를 수행하는 전략은 애플리케이션에서 예외 처리를 개선하고 내결함성을 향상시키는 중요한 부분이다. Spring에서는 이...
Read More
템플릿 콜백 패턴 이해
템플릿 콜백 패턴의 이해 템플릿 콜백 패턴은 전략 패턴의 일종으로, 전략 패턴에서는 클라이언트가 전략 객체를 선택하고 호출하는 방식이지만, 템플릿 콜백 패턴에서는 특정 알고리즘(콜백)을 포함한 템플릿 메서드를 호출하고, ...
Read More
전략 패턴 패턴 이해
전략 패턴의 이해 비슷한 동작을 하지만 다르게 구현되어 있는 행위(전략)들을 공통의 인터페이스를 구현하는 각각의 클래스로 구현하고, 동적으로 바꿀 수 있도록 하는 패턴입니다. 전략 패턴으로 구현된 코드는 직접 행위에 대...
Read More
템플릿 메서드 패턴 이해
템플릿 메서드 패턴 이해 핵심 기능 vs 부가 기능 핵심 기능 해당 객체가 제공하는 고유의 기능 부가 기능 핵심 기능을 보조하기 위해 제공하는 기능 ...
Read More
Transactional과 AOP, 그리고 프록시 패턴
@Transactional과 AOP, 그리고 프록시 패턴 @Transactional에는 Spring AOP의 프록시 패턴을 사용하여 동작한다. @Transactional을 알아가기 앞서 프록시 패턴과 Spring AOP에 ...
Read More
Java 동시성 이슈와 ThreadLocal
Java 동시성 이슈와 쓰레드 로컬 (ThreadLocal) Java의 동시성 이슈 동시성 이슈 (Concurrency issues)는 다중 쓰레드 환경에서 발생하는 문제로, 여러 쓰레드가 공유된 자원에 동시에 접근할 때...
Read More
Spring Boot and OAuth2
Spring Boot and OAuth2 이 가이드는 OAuth 2.0과 Spring Boot을 사용하여 “소셜 로그인”으로 다양한 작업을 수행하는 샘플 앱을 구축하는 방법을 보여줍니다. 단순한 단일 공급자 싱글 사인-온...
Read More
git push (non-fast-forward) error
git push origin master 후 non-fast-forward 문제 원인 파일을 올리려고 하는 깃허브 내 레파지토리와 git init한 로컬 내 저장소와 관련이 없는(unrelated) 상태에서 두 저장...
Read More
Greedy Algorithm & 응용문제
그리디 알고리즘 현재 상태에서 가장 좋은 선택만을 취하는 알고리즘 매 순간 최적이라고 생각하는 답을 선택하는 알고리즘 방식으로 해당 그리디 알고리즘이 잘 동작하는 문제로 앞 상황에서의 선택...
Read More
Strassen Algorithm
일반적인 행렬의 곱 Naive matrix multiplication 일반적인 행렬을 구하는 방식 m * n 행렬과 n * k 행렬을 곱하면 O(mnk) 가 되어 결과적으로 O(n^3)의 시간복잡도를 가진다....
Read More
Greatest common measure depth problem
최대공약수 응용 문제 원하는 개수의 정수들의 최대공약수 3개 이상 정수의 최대공약수 구하기 예를 들어 24, 15, 48 세 수의 최대공약수를 구한다고 가정한다면 먼저 최소값을 구해준다. (예제는 15) 최소...
Read More