| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 네트워크
- 운영체제
- Spring
- c언어
- Java
- 자료구조
- JavaScript
- Data Structure
- react
- Kafka
- 디자인 패턴
- Heap
- MySQL
- 알고리즘
- mongoDB
- spring webflux
- redis
- design pattern
- 백준
- IT
- Proxy
- Algorithm
- OS
- Galera Cluster
- 파이썬
- 컴퓨터구조
- MSA
- 자바
- C
- JPA
- Today
- Total
목록분류 전체보기 (211)
시냅스
옵저버 패턴 Observer Pattern 객체 사이에 일대다의 의존 관계가 있고, 어떤 객체의 상태변하게 되면 그 객체에 의존성을 가진 다른 객체들이 변화의 통지(notify or update)를 받고 자동으로 갱신될 수 있게 함 dependent, publish-subscribe 하나의 객체에 연동되는 여러 객체 집합이 있을 때 변화에 대한 일관성은 유지하고, 객체간의 결합도는 낮게하기 위한 패턴 느슨한 결합 Loose coupling : 느슨하게 결합되어 있다는 것은 상호작용을 하지만 서로 잘 모른다는 것 변화에 관심이 있는 객체에 대한 가정없이 통보될 수 있도록 해야 함 주로 data - view 의 관계에서 사용됨 log와 handler들의 관계. (file, console, 등등) Subjec..
템플릿 메소드 패턴 Template Method Pattern 상위 클래스에서는 전체적인 흐름을 구현하고 구체적인 처리는 하위 클래스에 위임 Operation 에 알고리즘의 기본 골격 구조를 정의하고 구체적인 단계는 서브클래스에 정의한다 추상화된 함수를 통해서 알고리즘의 일부 단계를 정의함으로써 템플릿 메소드의 처리순서를 정할 수 있다. AbstractClass 서브 클래스들이 반드시 구현해야 하는 알고리즘 처리 단계 내의 기본 오퍼레이션이 무엇인지를 정의한다. 서브 클래스에서 이들 오퍼레이션들을 구현한다. Hook method : 추상 클래스 내에 선언(declaration)되어 있는 메소드이지만, 기본적인 내용만 있거나 아무 내용도 들어있지 않음 template method는 final 키워드를 통해..
Blocking 요청한 작업을 마칠 때까지 계속 대기한다. return 값을 받아야 끝난다. 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만드는 것 e.g. 전화를 받을 때까지 계속 대기 후 답을 얻는다. Non-blocking 요청한 작업을 즉시 마칠 수 없다면 바로 Return 한다. 결과가 완료 되었는지 지속적으로 확인한다. 호출된 함수가 바로 Return 해서 호출한 함수에게 제어권을 넘겨주고 호출한 함수가 다른 일을 할 수 있게 기회를 준다. e.g. 전화를 했는데 받지 않아 계속 반복 전화하다가 어느 순간 받아서 답을 얻는다. Synchronous (현재 작업의 응답과 다음 작업의 요청이) 동시에 똑같이 진행된다. 작업 요청을 했을 때 요청의 ..
HTTP 란? HTML, TEXT IMAGE, 음성, 영상, 파일 JSON, XML (API) 거의 모든 형태의 데이터 전송 가능 서버간에 데이터를 주고 받을 때도 대부분 HTTP 사용 HTTP/0.9 1991년: GET 메서드만 지원, HTTP 헤더X HTTP/1.0 1996년: 메서드, 헤더 추가 HTTP/1.1 1997년: 가장 많이 사용, 우리에게 가장 중요한 버전 HTTP/2 2015년: 성능 개선 HTTP/3 진행중: TCP 대신에 UDP 사용, 성능 개선 HTTP 특징 클라이언트 서버 구조 Request, Response 구조 클라이언트는 서버에 요청을 보내고, 응답을 대기 서버가 요청에 대한 결과를 만들어서 응답 무상태 프로토콜(Stateless) 서버가 클라이언트의 상태를 보존X 장점: ..
기억장치 컴퓨터에서 프로그램과 데이터를 저장하기 위한 장치 전자적 수단에 의해 기억 및 기록 능력을 실현시키는 장치/소자 2진 정보의 쓰기/읽기/검색이 가능한 다수의 메모리 셀로 구성된 디지털 시스템 기억장치 구분 주기억장치 main memory CPU 레지스터, RAM, ROM 휘발성 volatile -> 일반적으로 memory 라는 표현을 많이 씀 보조저장장치 auxiliary storage device HDD, SSD 비휘발성 nonvolatile -> 일반적으로 storage 라는 표현을 많이 씀 액세스 Access 방법 순차적 sequential 액세스 배열 데이터를 처음부터 자쳬대로 탐색 자기테이프 ARM을 이용 SASD 직접 Direct 액세스 블록의 근처로 직접 이동해 순차적 탐색 자기 ..
CPU가 수행하는 동작들 명령어 인출 Instruction fetch 명령어 해독 Instruction decode 위 두 항목은 무조건 수행 데이터 인출 Data fetch 데이터 처리 Data process (산술적 연산) 데이터 저장 Data store 위 세 항목은 선택적 수행 CPU 기본 구조 산술논리연산장치 Arithmetic and Logical Unit : ALU 사칙연산 논리연산 (And, or, not...etc) 레지스터 세트 Register set CPU 내부에 있는 가장 빠른 저장장치 CPU 가 임시로 저장하는 공간 특수목적/일반목적 레지스터 제어 유니트 Control unit 인출된 명령어를 해독하고 제어 신호를 발생시키는 유니트 CPU 내부 버스 CPU의 내부 버스는 외부의 ..
전략 패턴 Strategy Pattern 정책이나 알고리즘을 교체하여 사용할 수 있음 다양한 알고리즘이 존재하면 이들 각각을 하나의 클래스로 캡슐화하여 알고리즘의 대체가 가능하도록 한다. 클라이언트와 독립적인 다양한 알고리즘을 적용할 수 있도록 한다. 사용자가 모르고 있는 데이터를 사용하여 여러 정책들이 반영될 수 있도록 구현 여러 정책이 수행되어야 하는 조건들 (if-else, switch) 문이 없어질 수 있다 Strategy 정책이 수행해야 하는 기능들을 인터페이스로 선언 ConcreteStrategy Strategy에 선언된 여러 기능들을 구현 다양한 정책들이 구현될 수 있음 Context 어떤 ConcreteStrategy 가 수행 될 것인지에 따라 정책을 선택한다 Strategy에 선언된 메서..
스테이트 패턴 State Pattern 클래스가 하나의 상태에 따라 그 내부의 여러 메서드의 기능이 바뀐다고 하면 이를 각각의 클래스로 분리한다. 의도와 동기 객체의 기능은 상태에 따라 달라질 수 있는데, 이러한 상태가 여러가지이고, 클래스 전반의 모든 기능이 상태에 의존적이라 하면, 상태를 클래스로 표현하는 것이 적절함 클래스로 분리하지 않게 되면 상태가 여러가지인 경우 많은 if-else 문이 사용되고 추후 상태가 추가되거나 삭제될 때 수정해야 하는 사항이 너무 많아짐 Context : ConcreteState의 인스턴스를 관리하고 서로 상태가 바뀌는 순간을 구현할 수 있다. State : Context 가 사용할 메서드를 선언한다. ConcreateState : 각 상태 클래스가 수행할 State에..
프론트 컨트롤러 패턴으로 이뤄져있다. 서블릿이 호출되면 HttpServlet이 제공하는 service가 호출된다. 스프링 mvc는 DispatcherServlet의 부모인 FrameworkServlet에서 service를 override해두었다. FrameworkServlet.service를 시작으로 여러 메서드가 호출되면서 DispatcherServlet.doDispatch()가 호출된다. doDispatch()는 다음과 같다. 요청이 들어오면 핸들러 매핑을 통해 핸들러(컨트롤러)를 조회할 수 있는지 확인하고 핸들러 어댑터 목록에서 핸들러를 처리할 수 있는 핸들러 어댑터가 있는지 확인해서 핸들러 어댑터를 통해 핸들러의 컨트롤러를 실행하고 반환하는 정보를 ModelAndView로 변환해서 반환한다. 반환..
서블릿(Servlet)이란 동적 웹 페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술이다. 서블릿은 웹 요청과 응답의 흐름을 간단한 메서드 호출만으로 체계적으로 다룰 수 있게 해준다. 서버에서 해야하는 일 서버 TCP/IP 연결 대기, 소켓 연결 HTTP 요청 메세지를 파싱해서 읽기 HTTP 메소드 방식, url pattern 인지 content-type 확인 HTTP 메시지 바디 내용 파싱 비즈니스 로직 수행 db connection 등 HTTP 응답 메세지 생성 시작 HTTP 시작 라인 생성 Header 생성 메세지 바디에 HTML 생성해서 입력 TCP/IP 에 응답 전달, 소켓 종료 Servlet을 지원하는 WAS 사용 시 지원 위에서 보았던 비즈니스 로직 수행 이외의 모든 것..