본문 바로가기

전체 글

Visitor Pattern 방문자 패턴 방문자 패턴이란? 알고리즘을 객체 구조에서 분리시키는 디자인 패턴(행위 패턴) 구조를 수정하지 않고 새로운 동작을 기존 객체에 추가할 수 있다. (연산을 적용할 객체의 클래스를 변경하지 않고도 새로운 연산을 정의할 수 있다.) 클래스에서 객체를 다루는 기능을 내부 메소드로 구현하는 것이 아닌, 각 클래스들의 데이터 구조에서 처리 기능을 분리하여 별도의 클래스로 구현하는 패턴이다. 분리된 처리 기능은 Visitor를 통해 각 클래스들을 방문하면서 수행한다. 즉, 실제 로직을 가지고 있는 객체가 로직을 적용할 객체를 방문하면서 실행하는 패턴이다. (로직과 구조를 분리하는 패턴) ※ 비지터 객체는 Traverser 객체와 함께 돌아간다. 트래버서는 컴포지트 패턴을 쓸 때, 복합 객체 내에 속해 있는 모든 객체.. 더보기
Proxy Pattern 프록시 패턴 프록시 패턴이란? Proxy는 '대리'라는 뜻으로 무언가를 대신 처리한다는 의미이다. 어떠한 객체를 사용하고 싶을 때 객체를 직접적으로 참조하는 것이 아닌, 해당 객체를 대리할 수 있는 객체를 통해 대상 객체에 접근하는 방식을 사용한다. 원격 객체, 생성하기 힘든 객체, 보안이 중요한 객체와 같은 다른 객체로의 접근을 제어하는 대리 객체를 생성할 수 있다. 인터페이스를 통해 실행시킬 클래스에 대한 객체가 들어갈 자리에 대리 객체를 대신 투입한다. (클라이언트 쪽에서 실제 실행시킬 클래스에 대한 객체를 통해 메소드를 호출하고 반환 값을 받는지, 대리 객체를 통해 메소드를 호출하고 반환 값을 받는지 모르게 처리하는 방법) 프록시의 특징 인터페이스를 통해 실제 서비스와 같은 이름의 메소드를 구현한다. 실제 서.. 더보기
Facade Pattern 퍼사드 패턴 퍼사드 패턴이란? 디자인 패턴 중 구조 패턴(Structural Patterns)에 속하는 패턴 "하위 시스템을 보다 쉽게 사용할 수 있게 해주는 고급 인터페이스"이다. 많은 분량의 코드에 접근할 수 있는 단순한 인터페이스를 제공한다. 서브시스템과의 상호작용 복잡도(결합도)를 낮추는 목적으로 사용된다. Facade : 사용자의 요청을 서브시스템 객체에 전달하는 단순하고 일관된 통합 인터페이스 Subsystem : Facade에 대한 정보를 가지지 않고, 서브시스템의 기능을 구현하는 클래스 최소 지식 원칙(Principle of Least Knowledge) 객체 사이의 상호작용은 될 수 있으면 아주 가까운 '친구' 사이에서만 허용하는 것이 좋다. 시스템을 디자인할 때 어떤 객체든 그 객체와 상호작용을 하.. 더보기
JSP 개요 1. JSP의 개요 1-1. JSP 특징 JSP는 Java Server Pages의 약어로 웹 페이지를 동적으로 처리할 수 있는 기술 중의 하나로 서블릿 프로그램의 기능을 HTML 파일 내에 스크립트 형식으로 구현할 수 있다. 프리젠테이션 로직과 비즈니스 로직의 분리 프리젠테이션 로직 : 브라우저 화면에서의 표현을 꾸미는 절차 및 기능 비즈니스 로직 : 사용자의 요청에 대한 내부적인 처리 절차 및 기능 JSP는 프리젠테이션 로직과 비즈니스 로직을 효율적으로 분리하여 동적 웹 사이트를 구축할 수 있는 스크립트이다. 비즈니스 로직은 자바 빈즈 컴포넌트 모델을 통하여 구현 가능하다. 프리젠테이션 로직과 비즈니스 로직을 분리하는 이유? 웹 페이지의 디자인이 변경되더라도 내부 비즈니스 로직을 처리하는 JSP 및 .. 더보기
CPU의 작동 원리 1. ALU와 제어장치 1-1. ALU CPU 내부에서 계산을 담당하는 장치 계산을 하기 위해서는 피연산자와 수행할 연산(제어 신호)이 필요 결과를 레지스터에 저장하는 이유? -> CPU가 메모리보다 레지스터에 접근하는 속도가 더 빠르기 때문. 플래그 : 연산 결과에 대한 부가 정보. 플래그 값들을 저장하는 플래그 레지스터에 저장된다. 부호 플래그 : 1일 경우 음수, 0일 경우 양수 제로 플래그 : 1일 경우 연산 결과는 0, 0일 경우 0이 아님 캐리 플래그 : 1일 경우 올림수나 빌림수가 발생, 0일 경우 발생하지 않음 오버플로우 플래그 : 1일 경우 오버플로우 발생, 0일 경우 발생하지 않음 인터럽트 플래그 : 1일 경우 인터럽트 가능, 0일 경우 불가능 슈퍼바이저 플래그 : 1일 경우 커널 모드.. 더보기
명령어 1. 소스코드와 명령어 1-1. 고급언어와 저급언어 고급언어 : 컴퓨터가 이해하는 언어가 아닌 사람이 이해하고 작성하기 쉽게 만들어진 언어 저급언어 : 컴퓨터가 직접 이해하고 실행할 수 있는 언어 기계어 : 0과 1의 명령어 비트로 이루어진 언어. 가독성을 위해 16진수로 표현하기도 함. 어셈블리어 : 0과 1로 이루어진 기계어를 읽기 편한 형태로 번역한 저급 언어. 1-2. 고급언어의 저급언어 변환 방법 컴파일 방식 컴파일 언어 : 컴파일러에 의해 소스코드 전체가 저급언어로 변환되어 실행되는 고급 언어. ex) C언어 컴파일 : 컴파일 언어로 작성된 소스 코드 전체가 저급 언어로 변환되는 과정. 컴파일러 : 컴파일을 수행해 주는 도구. 소스 코드 내에 오류가 하나라도 발견된다면 컴파일 실패. 인터프리트.. 더보기
ResponseEntity란? https://devlog-wjdrbs96.tistory.com/182 [Spring Boot] ResponseEntity란 무엇인가? 먼저 REST API가 무엇인지는 아래 블로그를 먼저 잘 읽어보자. https://meetup.toast.com/posts/92 REST API 제대로 알고 사용하기 : TOAST Meetup REST API 제대로 알고 사용하기 meetup.toast.com 1. ResponseEn.. devlog-wjdrbs96.tistory.com https://a1010100z.tistory.com/106 [Spring] ResponseEntity는 왜 쓰는 것이며 어떻게 쓰는걸까? 기존 내 개인 프로젝트 코드의 RestController 반환값은 모두 Object 타입이었다. .. 더보기
@RequestBody와 @ResponseBody https://devbox.tistory.com/entry/Spring-RequestBody-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EA%B3%BC-ReponseBody-%EC%96%B4%EB%85%B8%ED%85%8C%EC%9D%B4%EC%85%98%EC%9D%98-%EC%82%AC%EC%9A%A9 [Spring] @RequestBody 어노테이션과 @ReponseBody 어노테이션의 사용 @RequestBody 어노테이션과 @ReponseBody 어노테이션의 사용 웹 서비스와 REST 방식이 시스템을 구성하는 주요 요소로 자리 잡으면서 웹 시스템간에 XML이나 JSON 등의 형식으로 데이터를 주고 받는 경우 devbox.tistory.com https://c.. 더보기