프록시 패턴(Proxy Pattern)이란? 대상 객체에 접근하기 전에 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 패턴이다. 이를 통해 객체의 속성과 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다. 프록시 객체나 프록시 서버로도 활용된다. 프록시 서버 서버와 클라이언트 사이에서 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해주는 것이다. 프록시 서버의 장점 캐싱 클라이언트의 요청을 원격 서버가 아닌 프록시 서버에서 캐시 데이터를 응답한다. 이는 불필요하게 외부와 연결하지 않기 때문에 트래픽을 줄일 수 있다. 프록시 서버의 예시 Nginx 비동기 이벤트 기반의 구조와 다수의 연결을 효과적으로 처리 가능한 웹 서버이며, 주로 Nod..
옵저버 패턴(Observer Pattern)이란? 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때 마다 옵저버들에게 변화를 알려주는 패턴이다. 즉 주체란 객체의 상태 변화를 관찰하는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 메시지를 전달 받는 객체를 의미한다. 또한 객체와 주체가 합쳐져 객체의 상태가 변할 때 마다 스스로 옵저버들에게 메시지를 전달할 수도 있다. 옵저버 패턴을 활용한 서비스로 트위터가 있다. 주체를 팔로우했다면 주체가 포스팅을 할 때 마다 팔로워들에게 알림이 간다. 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며 MVC 패턴에도 사용된다. 예를 들어 주체(Model)에서 변경이 생기면 옵저버(View)에 알려주고 이를 기반으로 Controll..
전략 패턴(Strategy Pattern)이란? 객체의 행위를 바꾸고 싶은 경우, 직접 수정하지 않고 전략이라고 부르는 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 예를 들어 결제를 할 때 네이버 페이, 카카오 페이 등 다양한 방법으로 결제하듯이 결제 방식의 전략만 바꿔서 두 가지 방식으로 결제하는 것과 같다. 정책 패턴(Policy Pattern)이라고도 한다. 전략 패턴의 장단점 장점 컨텍스트 코드 변경 없이 새로운 전략을 추가할 수 있다. 단점 분리된 전략들이 어느 상황에 사용되는지 알고 있어야 한다. 자바에서의 전략 패턴 장바구니에 담긴 아이템을 KAKAOCard 또는 LUNACard 두 개의 전락으로 결제할 수 있다. import java.util.Arr..
팩토리 패턴(Factory Pattern)이란? 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이다. 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다. 핵심 개념은 추상화와 다형성이다. 팩토리 패턴의 장단점 장점 상위 클래스와 하위 클래스가 분리되기 때문에 느슨한 결합을 가질 수 있다. 상위 클래스에서는 인스턴스 생성 방식에 대해 전혀 알 필요가 없기 때문에 유연하다. 객체 생성 로직이 분리되어 있어서 유지 보수에 유리하다. 단점 다른 타입의 객체가 필요할 때 마다 하위 클래스가 추가되어야 한다. 자바에서의 팩토리 패턴 abstract class Coffee { public abstract int ..
싱글톤 패턴(singleton pattern)이란? 하나의 클래스에 오직 하나의 인스턴스만을 가지는 패턴이다. 보통 데이터베이스 연결 모듈에 많이 사용된다. 싱글톤 패턴의 장단점 장점 하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에 인스턴스를 생성할 때 드는 비용이 줄어든다. 단점 의존성이 높아진다. -> 의존성 주입을 통해 모듈 간의 결합도를 낮출 수 있다. 단위 테스트를 할 때 각 테스트마다 독립적인 인스턴스를 만들기 어렵다. 자바에서의 싱글톤 패턴 class Singleton { private static class singletonInstanceHolder { private static final Singleton INSTANCE = new Singleton(..
1. 공식 문서 https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#mvc-servlet 공식 문서의 샘플 코드에 Kotlin 탭 제공 Spring initialzr 기본 언어로 코틀린을 선택할 수 있고 코틀린인 경우 Gradle Project를 선택하면 빌드 설정을 Kotlin DSL 기반으로 생성해준다. Spring initialzr를 통해 생성된 build.gradle.kts import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("org.springframework.boot") version "2.7.0" id("io.spring.dependenc..
1. 자바에는 있지만 코틀린에는 없는 기능 CheckedException 처리 Java의 CheckedException은 컴파일 에러가 발생하기 때문에 무조건 try-catch로 감싸주거나 throws로 예외를 핸들링해야 한다. try { Thread.sleep(1); } catch (InterruptedException e) { // 예외 처리 } try { log.append(message) } catch (IOException e) { // Do nothing } try { File file = FileUtils.get(filename); } catch (FileNotFoundException e) { // Do nothing } try { return objectMapper.readValue(js..
문제 macOS를 Monterery 버전으로 업데이트 하고서 평소와 같이 Pycharm을 실행했는데 에러가 발생했습니다. xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun .idea 도 삭제해보고 interpreter도 다시 설정해봤지만 소용없었는데요, 구글링해보니 Xcode Command-line Tools의 업데이트가 필요하다고 합니다. 해결 터미널 접속 후 다음 명령어를 입력합니다. xcode-select --install 그럼 설치 팝업이 나오는데 설치하게 되면 시간이 오래 걸리는..
- Total
- Today
- Yesterday
- 프로세스
- 프로그래밍 패러다임
- 디자인 패턴
- 네트워크
- 코틀린
- 프로세스 컴파일
- 대수확장성
- 메모리 계층
- 직접매핑
- 네트워크 기초
- 프로세스와 스레드
- 중첩루프조인
- 클러스터형인덱스
- 함수형 프로그래밍
- 연관매핑
- 보이스코드정규형
- Design Pattern
- 자바
- java
- 인덱스최적화
- 스프링 WebFlux
- 세컨더리인덱스
- 스레드
- 프로그래밍
- 정렬병합조인
- 스프링 R2DBC
- 직접연관매핑
- 선언형 프로그래밍
- 불연속할당
- 캐시매핑
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |