일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 디자인 패턴
- spring webflux
- MSA
- 알고리즘
- MySQL
- 백준
- 자바
- 파이썬
- 운영체제
- 컴퓨터구조
- design pattern
- OS
- Spring
- 자료구조
- mongoDB
- c언어
- JavaScript
- Algorithm
- JPA
- C
- Data Structure
- react
- Java
- Galera Cluster
- IT
- redis
- Proxy
- Kafka
- Heap
- 네트워크
- Today
- Total
목록분류 전체보기 (214)
시냅스
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 사용 시 지원 위에서 보았던 비즈니스 로직 수행 이외의 모든 것..
웹 서버 HTTP 기반으로 동작한다. 정적 리소스 제공, 기타 부가기능을 제공한다. HTML, CSS, JS, 이미지, 영상 등 e.g. NGINX, APACHE 웹 애플리케이션 서버(WAS - Web Application Server) HTTP 기반으로 동작한다. 웹 서버 기능을 포함하고 있다. (정적 리소스 또한 제공) 프로그램 코드를 실행해서 애플리케이션 로직 수행 동적 HTML, HTTP API(JSON) 서블릿, JSP, 스프링 MVC 프로그램 실행 환경과 DB 접속 기능 제공 여러 개의 트랜잭션(논리적인 작업 단위) 관리 기능 e.g. 톰캣(Tomcat), Jetty, Unsertow 차이점 웹 서버는 정적 리소스, WAS는 애플리케이션 로직 모호성이 존재한다. 웹 서버도 프로그램을 실행하는 ..
데코레이터 패턴, Decorator Pattern 장식과 실제 내용물을 동일시 객체에 동적으로 책임을 추가 상속을 사용하지 않고 기능의 유연한 확장이 가능한 패턴 객체에 동적으로 새로운 서비스를 추가 할 수 있음 전체가 아닌 개별적인 객체에 새로운 기능을 추가 할 수 있음 Component : 동적으로 추가할 서비스를 가질 수 있는 객체 정의 ConcreteComponent : 추가적인 서비스가 필요한 실제 객체 Decorator : Component의 참조자를 관리하면서 Component에 정의된 인터페이스를 만족하도록 정의 ConcreteDecorator : 새롭게 추가되는 서비스를 실제 구현한 클래스로 addBehavior()를 구현한다. 결론 단순한 상속보다 설계의 융통성을 증대 Decorator..