본문 바로가기

프로그래밍

(17)
Reactive Programming Reactive Programming용도 - 비동기(asyncronous), 이벤트 기반(event-driven), 논블럭킹(non-blocking) 어플리케이션 - 수직적 확장(scale up) 보다는 수평적 확장(scale out)에 적합 - 배압(backpressure) 컨셉 : producers가 consumers를 넘어서지 못하게 하는 것 - MSA가 지향하는 방향2가지 개발방식 지원 - 기존의 MVC 방식(@Controller, @RequestMapping), - 새로운 함수형 모델(RouterFunction, HandleFunction)새로운 요청 응답 모델 - 서블릿 스택과 API에서 탈피(서블릿 API는 리액티브 함수형 모델에 적합하지 않음 - HttpServletRequest, Http..
객체 지향 프로그래밍 vs 함수형 프로그래밍 객체지향 프로그래밍 - 일급 객체는 클래스 - 해당 클래스의 데이터 기반으로 메소드가 동작(멤버 함수 라고도 함) - 상호 작용하는 객체들의 집합 함수형 프로그래밍 - 일급 객체는 함수 - 전달 받은 파라미터 기반으로 함수가 동작(전달 받은 파라미터는 변경을 하지 않고 계산한 결과만 리턴 함) - 상태 값을 지니지 않는 함수 값들의 연속 * 일급 객체 - 다른 객체들에 적용 가능한 연산을 모두 지원하는 객체 - 변수나 데이터 구조(자료 구조)에 담을 수 있음 - 파라미터, 리턴 값으로 사용 가능 - 할당에 사용한 이름에 관계 없이 고유한 식별이 가능함 [참조]https://ko.wikipedia.org/wiki/%ED%95%A8%EC%88%98%ED%98%95_%ED%94%84%EB%A1%9C%EA%B7..
GOF 디자인 패턴 생성 패턴(Creational Pattern) : 객체가 생성 되는 과정의 유연성을 높이고 코드의 유지를 쉽게 함 - 팩토리 메서드 패턴(Factory Method Pattren) : 자식 클래스에서 어떤 객체를 생성할지 결정 - 추상 팩토리 패턴(Abstract Factory Pattren) : 구성 요소별로 객체의 집합을 생성 - 빌더 패턴(Builder Pattren) : 객체의 생성 과정과 표현 과정을 분리 - 프로토타입 패턴(Prototype Pattren) : 이미 만들어진 객체를 복제해서 생성 - 싱글톤 패턴(Singleton Pattren) : 생성자를 여러번 호출 해도 최초 생성 된 객체를 리턴해서 사용 구조 패턴(Structural Pattern) : 자료구조나 인터페이스 같이 프로그램..
HTTP/2 HTTP/1.1의 속도 개선을 위해 HTTP2 가 등장1. Header Compression{허프만 코딩이나 헤더 테이블을 활용해 헤더 사이즈를 줄임(일반적으로 1/3 정도)} - HTTP/1.1은 헤더가 너무 큼(특히 쿠키)2. Multiplexed Stream - 기존보다 적은 TCP 커넥션으로 여러 메세지를 주고 받음3. Server Push - 클라이언트 요청 없이 서버가 리소스를 알아서 보냄4. Stream Priority - 중요한 요청에 우선순위를 부여 [참조]http://www.bloter.net/archives/210122https://www.popit.kr/%EB%82%98%EB%A7%8C-%EB%AA%A8%EB%A5%B4%EA%B3%A0-%EC%9E%88%EB%8D%98-http2/
HTTP와 HTTPS의 차이 http : www 상에서 정보를 주고 받는 프로토콜 - 빠름 - 변조, 해킹 가능성 있음 - 적은 비용으로 유지 가능https : http + secure socket (공개키 암호화 방식을 통해 모든 통신 내용을 암호화 함) - 느림 - 보안성 뛰어남(...할말하않) - 설치 및 인증서를 유지해야 되고, 트래픽이 비교적 많이 발생함(유지 비용이 큼)
객체지향 5대 원칙 - SOLID S. SRP ( 단일 책임 원칙 ) - 클래스는 하나의 책임만 가진다. - 어떤 변화에 의해 클래스를 변경해야 되는 이유는 하나여야 함 - 적용방법 : 리팩토링 O. OCP ( 개방 폐쇄 원칙 ) - 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 한다. - 요구사항의 변경이나 추가가 발생해도 기존 구성요소는 수정이 일어나지 않아야 하며, 기존 구성요소를 쉽게 확장해서 사용할 수 있어야 함 - OCP를 가능하게 하는 것은 추상화와 다형성 - 적용방법 : 인터페이스 활용 (구현보다 정의된 인터페이스에 의존하도록 코드 작성) L. LSP ( 리스코프 치환 원칙 ) - 서브 클래스는 언제나 슈퍼 클래스로 교체 될 수 있어야 한다. (업캐스팅을 해도 문제가 되지 않아야 한다.) - 서브 클래스가 확장에 대한 ..
MVC, MVP, MVVM 패턴 Model : data와 data를 조작하는 로직View : 사용자에게 제공 되는 UI MVC (Model - View - Controller) - 입력은 Controller에서 받음 - Controller에서 Model을 조작 - Controller에서 View를 결정 - View에서 Model을 이용하므로 서로간의 의존성을 피할 수 없음 MVP (Model -View - Presenter) - 입력은 View에서 받음 - Presenter는 View의 인스턴스를 가지고 있으면 View와 1대1 관계 - Presenter는 Model의 인스턴스도 가지고 있으므로 View와 Model 사이에서 다리와 같은 역할을 함 - Model과 View를 완벽히 분리해 주지만 View와의 의존성이 매우 강함 MVVM..
Blocking vs NonBlocking , Synchronous vs Asynchronous Blocking vs NonBlocking호출되는 함수가 바로 리턴 되는가? - yes : NonBlocking - 함수 결과를 기다리지 않고 리턴 후 다른 작업 수행 - no : Blocking - 함수 결과가 나올 때 까지 대기 Synchronous vs Asynchronous호출되는 함수의 작업 완료를 기다리는가? - yes : Synchronous - no : Asynchronous - Callback 으로 받음 Blocking은 Syncronous와 비슷하고 NonBlocking은 Asynchronous와 비슷하다 Blocking vs Synchronous함수가 리턴을 기다리는 동안 대기큐에 머무는게 필수인가? - yes : Blocking - no : Synchronous NonBlocking..