728x90

분류 전체보기 61

6일차 - 합성을 통한 코드 재사용과 협력

2023.08.06 SUN 65p ~ 77p 5일차 내용 ⬇️ 2023.08.04 - [개발 서적 기록/오브젝트_조영호] - 5일차 - 상속과 다형성의 목적 5일차 - 상속과 다형성의 목적 2023.08.04 FRI 50p ~ 64p 4일차 내용 ⬇️ 2023.08.04 - [개발 서적 기록/오브젝트_조영호] - 4일차 - 객체 지향 설계를 위한 자세 4일차 - 객체 지향 설계를 위한 자세 2023.08.03 THU 33p ~ 50p 3일차 내용 ⬇️ 2023. magenta-ming.tistory.com 추상화의 필요성 추상화를 사용하면, 세부적인 내용을 무시한 채 상위 개념을 쉽고 간단하게 표현할 수 있다. 그래서 세부 사항에 관계 없이,상위 개념만으로도 도메인의 중요한 개념을 설명할 수 있다. 그럼..

5일차 - 상속과 다형성의 목적

2023.08.04 FRI 50p ~ 64p 4일차 내용 ⬇️ 2023.08.04 - [개발 서적 기록/오브젝트_조영호] - 4일차 - 객체 지향 설계를 위한 자세 4일차 - 객체 지향 설계를 위한 자세 2023.08.03 THU 33p ~ 50p 3일차 내용 ⬇️ 2023.08.02 - [개발 서적 기록/오브젝트_조영호] - 3일차 - 캡슐화를 통해 결합도 낮추기 3일차 - 캡슐화를 통해 결합도 낮추기 2023.08.02 WED 17p ~ 33p 2일차 내용 ⬇️ 2 magenta-ming.tistory.com 추상 클래스의 용도 TEMPLATE METHOD 디자인패턴을 사용하기 위해서 이다. TEMPLATE METHOD 디자인패턴은, 부모 클래스에 기본적인 알고리즘의 흐름을 구현하고, 중간에 필요한 ..

응답 속도가 늦는 외부 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, 안드로이드 모두 출시를 완료해서 서비스 중이니 다들 놀라움을 느껴보면 좋겠다 ! ( 그리고 주변에 홍보도 ) 서비스 소개 핵심 ..

4일차 - 객체 지향 설계를 위한 자세

2023.08.03 THU 33p ~ 50p 3일차 내용 ⬇️ 2023.08.02 - [개발 서적 기록/오브젝트_조영호] - 3일차 - 캡슐화를 통해 결합도 낮추기 3일차 - 캡슐화를 통해 결합도 낮추기 2023.08.02 WED 17p ~ 33p 2일차 내용 ⬇️ 2023.08.02 - [개발 서적 기록/오브젝트_조영호] - 2일차 - 객체 지향적인 모듈 2일차 - 객체 지향적인 모듈 2023.08.01 TUE 2p ~ 16p 1일차 내용 ⬇️ 2023.07.31 - [개발 서적 magenta-ming.tistory.com 설계란 코드를 배치하는 것이다. 좋은 설계는 요구하는 기능을 완전히 수행하면서, 변경이 생길 때 매끄럽게 손쉽게 적용할 수 있는 설계다. 왜냐하면 요구사항은 항상 변하기 때문이다. ..

3일차 - 캡슐화를 통해 결합도 낮추기

2023.08.02 WED 17p ~ 33p 2일차 내용 ⬇️ 2023.08.02 - [개발 서적 기록/오브젝트_조영호] - 2일차 - 객체 지향적인 모듈 2일차 - 객체 지향적인 모듈 2023.08.01 TUE 2p ~ 16p 1일차 내용 ⬇️ 2023.07.31 - [개발 서적 기록/오브젝트_조영호] - 1일차 - 오브젝트를 본격적으로 읽기 전에 1일차 - 오브젝트를 본격적으로 읽기 전에 2023.07.31 MON 전반적인 내용 magenta-ming.tistory.com 객체에게 자유를, 캡슐화 각 객체가, 도메인이, 서로의 세세한 부분까지 알게되면, 의존성과 결합도가 증가한다. 따라서, 각각의 도메인이 각자의 행위를 수행할 수 있도록, 자율적인 존재로 만들어야한다. 이를 통해, 변경에 취약하지 않..

2일차 - 객체 지향적인 모듈

2023.08.01 TUE 2p ~ 16p 1일차 내용 ⬇️ 2023.07.31 - [개발 서적 기록/오브젝트_조영호] - 1일차 - 오브젝트를 본격적으로 읽기 전에 1일차 - 오브젝트를 본격적으로 읽기 전에 2023.07.31 MON 전반적인 내용 오브젝트 책은 '객체 지향 프로그래밍'에 대한 개념을 다루는 책이다. 구체적으로는 아래의 내용을 포함하고 있다. - 역할, 책임, 협력에 기반해 객체지향 프로그램을 magenta-ming.tistory.com 소프트웨어 모듈 크기와 상관없이 클래스나 패키지, 라이브러리와 같이 프로그램을 구성하는 임의의 요소 소프트웨어 모듈의 기능/목적 from 로버트 마틴의 "클린 소프트웨어: 애자일 원칙과 패턴, 그리고 실천방법" 1. 실행 중에 제대로 동작해야한다. 요소..

Logback을 통해 로깅 적용하기

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

1일차 - 오브젝트를 본격적으로 읽기 전에

2023.07.31 MON 전반적인 내용 오브젝트 책은 '객체 지향 프로그래밍'에 대한 개념을 다루는 책이다. 구체적으로는 아래의 내용을 포함하고 있다. - 역할, 책임, 협력에 기반해 객체지향 프로그램을 설계하고 구현하는 방법 - 응집도와 결합도를 이용해 설계를 트레이드오프하는 방법 - 설계를 유연하게 만드는 다양한 의존성 관리 기법 - 타입 계층을 위한 상속과 코드 재사용을 위한 합성의 개념 - 다양한 설계 원칙과 디자인 패턴 "객체지향의 사실과 오해" 책의 다음 단계의 책으로, 책임의 할당과 그 책임을 구현하는데에 집중되어 있다. 독서 전략 객체 지향은 학부 생활을 시작할 때부터 강조되어 왔지만, 제대로 파악하지 못했다. 유지 보수, 가독성, 모듈화하여 쉽게 적용하고 뗄 수 있다는 장점이 있다는 점..

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

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

Java & Spring 2023.07.04

Consistent Hashing

해싱 해시테이블에서도 사용하는 알고리즘이다. 주어진 키에, 해시 함수를 적용하고, 테이블의 총 크기/길이로 나눈 나머지 값을, 즉 modular(%)연산의 값으로 서버 인덱스를 가지는 개념이다. 로드밸런서로 라우팅 시에 아래와 같이 해싱을 통해 처리해줄 수 있다. Request ID 추출 : IP, User ID, 몇번째로 Request를 요청했는지에 대한 순서, … Hash(Request ID)를 통한 해시값 도출 주어진 해시값에 따라 라우팅 문제점 위와 같이 어떠한 갯수, 크기에 따라서 해시 처리를 하면, 갯수, 크기가 변하면 모든게 변하게 된다. 위 이미지에서는 총 크기를 5로 잡았는데, 만약 4로 변경하게 된다면 아래와 같이 많은 데이터가 다른 인덱스를 가져야한다. 이렇게 버킷이 추가되거나 삭제됨..

Java & Spring 2023.06.16
728x90