728x90

인기 글

응답 속도가 늦는 외부 API 호출 이슈 해결하기

AI가 기똥차게 말아주는 그림일기 서비스, "오늘 하루를 그려줘" 앱에서 백엔드 개발을 맡고 있다. https://github.com/tipi-tapi/ai-paint-today-BE GitHub - tipi-tapi/ai-paint-today-BE: 🖼️ AI가 말아주는 오늘 하루의 그림 일기, "오늘 하루를 그려줘" 🖼️ AI가 말아주는 오늘 하루의 그림 일기, "오늘 하루를 그려줘" 🖼️. Contribute to tipi-tapi/ai-paint-today-BE development by creating an account on GitHub. github.com ios, 안드로이드 모두 출시를 완료해서 서비스 중이니 다들 놀라움을 느껴보면 좋겠다 ! ( 그리고 주변에 홍보도 ) 서비스 소개 핵심 ..

Logback을 통해 로깅 적용하기

라이브러리는 제어의 주체가 개발자이고, 프레임워크는 그 주체가 프레임워크에 있다는 차이가 있습니다. 이번 글에서는, 구현 프레임워크로 Logback을 다룹니다. slf4j 공식문서에서는 Logback과 같은 functionality를 구현 프레임워크라고 소개하고, Logback 공식문서에서는 로깅 라이브러리라고 소개하고 있습니다. 따라서, 이번 글에서는 프레임워크와 라이브러리라는 단어를 혼용하여 작성하였습니다. 로깅 프로그램 동작시 발생하는 모든 일을 기록하는 행위 기록하는 항목은 아래가 될 수 있다. 서비스 동작 상태 시스템 로딩 http 통신 트랜잭션 DB 요청 의도를 가진 Exception etc 장애 - exception, error I/O Exception NullPointException 의도..

Concurrent Hash Map과 HashMap, HashTable, Synchronized Hash Map

ConcurrentHashMap의 등장 배경 Map 인터페이스의 구현체로는 HashMap, HashTable, ConcurrentHashMap 등이 있다. Map 인터페이스를 구현하면, 형태를 띈다. 이 중, ConcurrentHashMap은 Java 1.5 버전에서 HashTable의 대안으로 처음 소개된 Collection이다. 이전까지는, 멀티 스레드 환경에서 Thread-safe하게 Map을 사용하려면, 해당하는 메소드 혹은 해당하는 코드 블럭을 Lock으로 감싸거나 HashTable을 사용하거나 SynchronizedMap을 사용하거나 해야했다. 하지만 위 방법에는 문제가 있다. HashTable, SynchronizedMap을 동기화 시키기 위해 락을 걸면, 특정 엔트리에만 락을 거는 것이 아..

Java & Spring 2023.05.30 1

변수 동기화 하기 - atomic, volatile, synchronized

공유 자원 여러 스레드가 동시에 접근할 수 있는 자원 임계 영역 공유 자원들 중 여러 스레드가 동시에 접근했을 때 경쟁 상태 문제가 생길 수 있는 영역 경쟁 상태 둘 이상의 스레드가 공유 자원을 동시에(병행적으로) 읽거나, 쓰는 동작을 수행할 때, 실행하거나 접근했을 때의 타이밍이나 접근 순서에 따라 실행 결과가 달라지는 문제 경쟁 상태 대표적으로 두가지의 패턴의 상황에서 발생한다. 패턴 1. Read - Modify - Write 아래 예제를 보면, cnt라는 변수의 값이 increase() 메소드를 통해 1씩 증가한다. 이 메소드를 100개의 요청이 동시에 수행된다면 우리가 기대하는 값은 100이다. public int cnt; public void increase(){ cnt++; } 하지만, 실제..

Java & Spring 2023.07.04 0

외래키 제거 고민하기

아래는 이 게시글에 관련된 우리 프로젝트의 이슈이다. Category 테이블의 User 외래키 제약 제거를 통한 의존성 제거 · Issue #121 · YAPP-Github/21st-ALL-Rounder-Team https://github.com/YAPP-Github/21st-ALL-Rounder-Team-2-BE/blob/develop/src/main/java/com/yapp/artie/global/deprecated/LoadUserJpaEntityApi.java LoadUserJpaEntity.java는 UserJpaEntity를 로드하는 API를 수행하는... github.com 현재 우리 프로젝트의 ERD는 아래와 같다. 현재 프로젝트에서 사용하고 있는 JPA 엔티티는 아래와 같은 구조를 가진다...

최신 글

more

46일차 - 타입 계층 구현하기 : 클래스 / 인터페이스 / 추상 클래스 이용

2023.09.27 WED 574p ~ 587p 45일차 내용 ⬇️ 2023.09.26 - [개발 서적 기록/오브젝트_조영호] - 45일차 - LSP와 계약에 의한 설계 : 가변성 규칙 45일차 - LSP와 계약에 의한 설계 : 가변성 규칙 2023.09.26 TUE 558p ~ 573p 44일차 내용 ⬇️ 2023.09.26 - [개발 서적 기록/오브젝트_조영호] - 44일차 - LSP와 계약에 의한 설계 : 계약 규칙 44일차 - LSP와 계약에 의한 설계 : 계약 규칙 2023.09.26 TUE 547p ~ 557p 43 magenta-ming.tistory.com 타입 계층 구현 34일차 기록에서 타입 계층 구현에 대해 다뤘었다. 2023.09.15 - [개발 서적 기록/오브젝트_조영호] - 34..

카테고리 없음 2023.09.27 0

45일차 - LSP와 계약에 의한 설계 : 가변성 규칙

2023.09.26 TUE 558p ~ 573p 44일차 내용 ⬇️ 2023.09.26 - [개발 서적 기록/오브젝트_조영호] - 44일차 - LSP와 계약에 의한 설계 : 계약 규칙 44일차 - LSP와 계약에 의한 설계 : 계약 규칙 2023.09.26 TUE 547p ~ 557p 43일차 내용 ⬇️ 2023.09.25 - [개발 서적 기록/오브젝트_조영호] - 43일차 - 계약에 의한 설계 43일차 - 계약에 의한 설계 2023.09.25 MON 538p ~ 546p 42일차 내용 ⬇️ 2023.09.25 - [분류 전 magenta-ming.tistory.com 가변성 규칙 Variance Rules 교체 가능한 타입에 대한 규칙이다. 파라미터와 리턴 타입의 변형에 대해 정의하는 규칙이다. 구체적..

오브젝트_조영호 2023.09.26 0

44일차 - LSP와 계약에 의한 설계 : 계약 규칙

2023.09.26 TUE 547p ~ 557p 43일차 내용 ⬇️ 2023.09.25 - [개발 서적 기록/오브젝트_조영호] - 43일차 - 계약에 의한 설계 43일차 - 계약에 의한 설계 2023.09.25 MON 538p ~ 546p 42일차 내용 ⬇️ 2023.09.25 - [분류 전체보기] - 42일차 - 제어 역전 원리 42일차 - 제어 역전 원리 2023.09.24 SUN 528p ~ 537p 41일차 내용 ⬇️ 2023.09.24 - [개발 서적 기록/오브젝트_조영 magenta-ming.tistory.com LSP와 계약에 의한 설계 계약에 의한 설계를 LSP와 함께 적용한다면, 서브타입 또한 LSP를 만족시킬 수 있도록, 클라이언트와 슈퍼 타입 간에 체결된 계약을 준수해야한다. LSP의..

오브젝트_조영호 2023.09.26 0

43일차 - 계약에 의한 설계

2023.09.25 MON 538p ~ 546p 42일차 내용 ⬇️ 2023.09.25 - [분류 전체보기] - 42일차 - 제어 역전 원리 42일차 - 제어 역전 원리 2023.09.24 SUN 528p ~ 537p 41일차 내용 ⬇️ 2023.09.24 - [개발 서적 기록/오브젝트_조영호] - 40, 41 일차 - 일관성을 통한 장점과 디자인 패턴 40일차 - 일관성을 통한 장점과 디자인 패턴 2023.09.24 SUN 505p ~ 51 magenta-ming.tistory.com 계약에 의한 설계 인터페이스에 대해 프로그래밍할 뿐만 아니라, 협력에 참여하는 두 객체 사이의 의무와 이익을 문서화한 계약을 사용하는 것이다. 오퍼레이션의 시그니처를 구성하는 다양한 요소들을 이용해 협력에 참여하는 객체들..

오브젝트_조영호 2023.09.25 2

42일차 - 제어 역전 원리

2023.09.24 SUN 528p ~ 537p 41일차 내용 ⬇️ 2023.09.24 - [개발 서적 기록/오브젝트_조영호] - 40, 41 일차 - 일관성을 통한 장점과 디자인 패턴 40일차 - 일관성을 통한 장점과 디자인 패턴 2023.09.24 SUN 505p ~ 518p 39일차 기록 ⬇️ 2023.09.21 - [분류 전체보기] - 38, 39일차 - 일관성 있는 설계와 캡슐화 38, 39일차 - 일관성 있는 설계와 캡슐화 2023.09.20 WED 483p ~ 504p 37일차 내용 ⬇️ 2023.09.18 - [ magenta-ming.tistory.com 제어 역전 원리 프레임워크가 어플리케이션에 속하는 서브클래스의 메서드를 호출하므로, 프레임워크를 사용할 경우 개별 어플리케이션에서 프레..

오브젝트_조영호 2023.09.25 0

40, 41 일차 - 일관성을 통한 장점과 디자인 패턴

2023.09.24 SUN 505p ~ 527p 39일차 기록 ⬇️ 2023.09.21 - [분류 전체보기] - 38, 39일차 - 일관성 있는 설계와 캡슐화 38, 39일차 - 일관성 있는 설계와 캡슐화 2023.09.20 WED 483p ~ 504p 37일차 내용 ⬇️ 2023.09.18 - [개발 서적 기록/오브젝트_조영호] - 36, 37일차 - 계약에 의한 설계 36, 37일차 - 계약에 의한 설계 2023.09.18 MON 460p ~ 482p 35일차 내용 ⬇️ 2023.09.15 - [개 magenta-ming.tistory.com 일관성을 통한 장점 변경을 캡슐화해서 협력을 일관성 있게 만들면, 재사용의 장점이 있다. 변하는 부분을 변하지 않는 부분으로부터 분리했기 때문에, 변하지 않는 ..

오브젝트_조영호 2023.09.24 0

성능테스트를 통해 CaffeineCache를 도입한 API의 효과 확인하기

AI가 기똥차게 말아주는 그림일기 서비스, "오늘 하루를 그려줘" 앱에서 백엔드 개발을 맡고 있다. https://github.com/tipi-tapi/ai-paint-today-BE GitHub - tipi-tapi/ai-paint-today-BE: 🖼️ AI가 말아주는 오늘 하루의 그림 일기, "오늘 하루를 그려줘" 🖼️ AI가 말아주는 오늘 하루의 그림 일기, "오늘 하루를 그려줘" 🖼️. Contribute to tipi-tapi/ai-paint-today-BE development by creating an account on GitHub. github.com ios, 안드로이드 모두 출시를 완료했고, 현재는 유지보수와 홍보에 힘쓰고 있다. 동아리 프로그라피에서 1등을 한 서비스인 만큼, 모두 ..

38, 39일차 - 일관성 있는 설계와 캡슐화

2023.09.20 WED 483p ~ 504p 37일차 내용 ⬇️ 2023.09.18 - [개발 서적 기록/오브젝트_조영호] - 36, 37일차 - 계약에 의한 설계 36, 37일차 - 계약에 의한 설계 2023.09.18 MON 460p ~ 482p 35일차 내용 ⬇️ 2023.09.15 - [개발 서적 기록/오브젝트_조영호] - 35일차 - 상속의 목적 : 서브클래싱 & 서브타이핑 그리고 ISP & LSP 35일차 - 상속의 목적 : 서브클래싱 & 서브타이 magenta-ming.tistory.com 비일관성의 문제점 1. 새로운 구현을 추가할때, 추가하면 할수록 코드 사이의 일관성이 더 어긋난다. 2. 구현 방식이 서로 달라 코드를 이해하는데 방해가 된다. 따라서 유사한 기능을 서로 다른 방식으로..

카테고리 없음 2023.09.21 0

36, 37일차 - 계약에 의한 설계

2023.09.18 MON 460p ~ 482p 35일차 내용 ⬇️ 2023.09.15 - [개발 서적 기록/오브젝트_조영호] - 35일차 - 상속의 목적 : 서브클래싱 & 서브타이핑 그리고 ISP & LSP 35일차 - 상속의 목적 : 서브클래싱 & 서브타이핑 그리고 ISP & LSP 2023.09.15 FRI 447p ~ 459p 34일차 내용 ⬇️ 2023.09.15 - [개발 서적 기록/오브젝트_조영호] - 34일차 - 상속의 주 용도인 타입 계층 구현 34일차 - 상속의 주 용도인 타입 계층 구현 2023.09.15 FRI 436p ~ 446p 33일 magenta-ming.tistory.com 계약에 의한 설계 Design By Contract 클라이언트와 서버 간 협력을, 의무 obligat..

오브젝트_조영호 2023.09.18 0

35일차 - 상속의 목적 : 서브클래싱 & 서브타이핑 그리고 ISP & LSP

2023.09.15 FRI 447p ~ 459p 34일차 내용 ⬇️ 2023.09.15 - [개발 서적 기록/오브젝트_조영호] - 34일차 - 상속의 주 용도인 타입 계층 구현 34일차 - 상속의 주 용도인 타입 계층 구현 2023.09.15 FRI 436p ~ 446p 33일차 내용 ⬇️ 2023.09.15 - [개발 서적 기록/오브젝트_조영호] - 33일차 - 포워딩과 위임 그리고 자바스크립트의 상속 33일차 - 포워딩과 위임 그리고 자바스크립트의 상속 2023. magenta-ming.tistory.com 클라이언트의 기대에 따라서 계층 분리하기 상속을 사용할 수 있는 조건은 두가지였다. 1. is-a 관계로 모델링 되는가 2. 행동 호환성을 보장하는 가 이때 행동 호환성은, 단순히 동일한 메서드를..

오브젝트_조영호 2023.09.15 0
728x90