
1. 데코레이터 패턴이란? 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. 구성요소 1. Component - 동적으로 기능을 추가 받을 객체의 인터페이스 2. Decorator - Component 객체에 대한 참조를 가진다. - Component의 인터페이스 타입을 구현한다. (같은 타입을 가진다) 3. ConcreteComponent - 기능이 추가 받을 수는 객체 4. ConcreteDecorator - Component에 기능을 더한다. 기본이 되는 디자인 원칙 OCP(Open-Closed Principle): 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어..

IoC (제어의 역전)란 무엇인가?Inversion of Control is a design pattern in which custom-written portions of a computer program receive the flow of control from a generic framework.-> 제어의 역전이란 하나의 디자인 패턴으로, 사용자가 작성한 부분이 어느 프레임워크에 의해 제어를 받게 되는 것을 의미한다.여기서 flow of control 제어 흐름이란, 객체의 생성/수정/삭제, 메서드 호출 등 프로그램의 전체 흐름을 말하는 것이다.- 위키피디아 간단하게 말하면 프레임워크가 사용자의 코드를 호출하는 것이다. 일반적인 프로그래밍에서는 어플리케이션 코드 (개발자가 작성한 코드)에서 프로그램..

1. 옵저버 패턴이란? 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고 자동으로 내용이 갱신되는 방식으로 1:N 의존성을 정의한다. 구성요소 1. Subject - Observer 목록을 가지고 있다. Observer의 수에는 제한이 없음. - Observer를 추가/제거 하는 인터페이스 제공 2. Observer - 업데이트 인터페이스를 제공. (이 업데이트 인터페이스는 해당되는 Subject에 변화가 있을 때 갱신하는 것을 의미) 3. ConcreteSubject - ConcreteObserver 객체들이 필요로 하는 정보를 가지고 있다. - 상태가 변하면 가지고 있는 ConcreteObserver들에게 공지함. 4. ConcreteObserver - ConcreteSubje..

1. 스트래티지 패턴이란? 알고리즘군을 정의하고 각각을 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지를 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할 수 있다. 구성요소 1. Context - ConcreteStrategy 참조 -> Setter - Strategy 객체와 소통 역할 2. Strategy - ConcreteStrategy의 generic 인터페이스 역할 - Context에서 사용할 함수 3. ConcreteStrategy - 세부 행동 구현 기본이 되는 디자인 원칙 1. Encapsulation: 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리한다. 2. Interface: 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. 3...

기록하게 된 이유회사 프로젝트를 진행하면서 jwt를 처음 활용했는데 그 과정에서 배운 내용들을 정리해본다.요구사항정산과 관련된 서비스에 실명인증 프로세스가 필요하게 되어서 개발을 맡게 되었다.인증 완료까지 한 화면에서 두 단계를 걸쳐서 이뤄져야 했다. 1) 인증하기 버튼을 누르면 기입된 정보로 실명인증을 해주는 외부기관의 API로 제대로된 정보임을 확인 받고2) 인증 성공 후 아래 버튼이 활성화 되며 해당 버튼을 누르면 실명인증이 완료된 회원이라는 정보를 DB에 저장하는 API로 처리이렇게 한 화면에서 1) 2) 과정이 두 API로 분리되기 때문에 고민해야될 부분이 생겼다.2단계 실명인증 과정에서 해당 요청을 보낸 유저가 1단계를 정상적으로 거쳤다는 것을 어떻게 보장하느냐가 문제였다.추가로 혹시나 많이 ..

백엔드 개발을 하다보면 반드시 보게 되는 NGINX인데 정확히 어떻게 돌아가는지, 왜 다른 웹서버들 보다 좋은지 몰랐다. NGINX 공식 웹페이지에서 좋은 참고 자료들을 찾을 수 있었는데 그 중 한 아티클을 통으로 번역해 보았다. 원문: https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/ Inside NGINX: How We Designed for Performance & Scale NGNIX는 현재 웹 성능 분야에서 선두주자이다. 그리고 이렇게 될 수 있었던 이유는 바로 설계 디자인에 있다. 많은 웹 서버나 어플리케이션 서버들이 간단한 스레드/프로세스 기반 아키텍처를 가지는 반면, NGINX는 정교한 이벤트 기반 ..

NullPointerException(NPE) Java 에서 Optional 이 등장한 이유는 바로 NullPointerException 때문이다. NPE로 인해 발생하는 문제들은 다음과 같이 정리된다. 에러의 근원이다 : NPE는 자바에서 가장 흔히 발생하는 에러이다. 코드를 어지럽힌다 : 때로는 중첩된 null 확인 코드를 추가해야 하므로 null 때문에 코드 가독성이 떨어진다. 아무 의미가 없다 : null은 아무 의미도 표현하지 않는다. 특히 정적 형식 언어에서 값이 없음을 표현하는 방법으로는 적절하지 않다. 자바 철학에 위배된다 : 자바는 개발자로부터 모든 포인터를 숨겼다. 하지만 예외가 있는데 그것이 바로 null 포인터다. 형식 시스템에 구멍을 만든다 : null은 무형식이며 정보를 포함하고..

스트림이란 무엇인가? 은 스트림을 '데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소(sequence of elements)'로 정의한다. 1) 연속된 요소: 컬렉션처럼 특정 요소 형식으로 이루어진 연속된 값 집합의 인터페이스를 제공하고, 이 연속된 요소에 대한 계산식을 제공함 2) 소스: 컬렉션, 배열, I/O 자원 등 데이터 제공 소스로부터 데이터를 소비한다. 3) 데이터 처리 연산: 함수형 프로그래밍 언어에서 일반적으로 지원하는 연산과 데이터베이스와 비슷한 연산을 지원한다. 보다 더 쉬운 설명으로는 '스트림은 데이터 컬렉션 반복을 멋지게 처리하는 기능이다'라고 정의한다. 스트림의 장점 1) 선언형: 간결하고 가독성이 좋아짐 2) 조립할 수 있음: 유연성이 좋아짐 3) 병렬화: 성능이 좋아짐..
- Total
- Today
- Yesterday
- 카카오 인턴
- jvm
- Kakao Blind
- 모던 자바 인 액션
- Java
- WORE
- WORA
- IOC
- decorator
- 2020 KAKAO
- 코테
- 카카오 코테
- 스프링
- nginx 내부
- PatternSyntaxException
- 프로그래밍 모델
- zipkin
- KAKAO 2021
- Spring
- okhttp3
- 디자인패턴
- spring cloud sleuth
- 2021
- Java #JIT #JVM
- 카카오코테
- behavior parameterization
- Java #GC #가비지콜렉터 #Garbage Collector
- 신규 아이디 추천
- 카카오
- 2019 Kakao Blind
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |