상속을 통해 슈퍼클래스의 기능을 확장할 때 사용하는 가장 대표적인 방법이다. 변하지 않는 기능은 슈퍼클래스에 만들어두고 자주 변경되며 확장할 기능은 서브클래스에서 만들도록 한다. 슈퍼클래스에서는 미리 추상 메소드 또는 오버라이드 가능한 메소드를 정의해주고 이를 활용해 코드의 기본 알고리즘을 담고 있는 템플릿 메소드를 만든다. 슈퍼클래스에서 디폴트 기능을 정의해두거나 비워뒀다가 서브클래스에서 선택적으로 오버라이드할 수 있도록 만들어둔 메소드를 훅(hook) 메소드라고 한다. 서브클래스에서는 추상 메소드를 구현하거나, 훅 메소드를 오버라이드하는 방법을 이용해 기능의 일부를 확장한다. 템플릿메소드 - 기본 알고리즘 골격을 담은 메소드를 템플릿 메소드라 부른다. 템플릿 메소드는 서브클래스에서 오버라이드 하거나 ..
디자인 패턴은 소프트웨어 설계 시 특정 상황에서 자주 만나는 문제를 해결하기 위해 사용할 수 있는 재사용 가능한 솔류션을 말한다. 모든 패턴에는 간결한 이름이 있어서 잘 알려진 패턴을 적용하고자 할 때 간단히 패턴 이름을 언급하는 것만으로도 설계의 의도와 해결책을 함께 설명할 수 있다는 장점이 있다. 디자인 패턴은 주로 객체지향 설계에 관한 것이고, 대부분 객체지향적 설계 원칙을 이용해 문제를 해결한다. 패턴의 설계 구조를 보면 대부분 비슷한데, 그 이유는 객체지향적인 설계로부터 문제를 해결하기 위해 적용할 수 있는 확장성 추구 방법이 대부분 두 가지 구조로 정리되기 때문이다. 하나는 클래스 상속이고 다른 하나는 오브젝트 합성이다. 따라서 패턴의 결과로 나온 코드나 설계 구조만 보면 대부분 비슷해 보인다..
쓰레드의 문제점과 동기화 컴퓨터는 위 그림처럼 프로그램을 수행을해서 위 계산을 보면 j에 30이 할당 된다고 예측할 수 있습니다. 그런데 만약 int i = 10 i+=10 의 연산 결과를 두개의 쓰레드에 의해 덧셈 연산을 한다고 했을때, 쓰레드는 코드영역을 공유하기 때문에 똑같은 코드를 2번 작업하여 시스템 성능을 저하 시키게 됩니다. 동기화 *임계영역(critical-section): 둘이상의 쓰레드에 의해서 공유되는 메모리 공간에 접근하는 코드영역 동기화: 1) 공유된 메모리에 둘 이상의 쓰레드가 동시에 접근하는 것을 막는 행위 2) 둘 이상의 레드 실행순서를 컨트롤 하는 행위
1. 쓰레드의 생성 프로세스와 쓰레드의 비교 *프로세스의 특징 - 프로세스는 두 개의 컴포넌트로 나뉘어지는 복잡한 개체입니다. 프로세스안에 여러 개의 쓰레드가 있다고 했을때, 쓰레드의 집합과 자원의 집합으로 나뉘게 되고 여기서 수행 유닛은 쓰레드이고, 프로세스는 쓰레드의 수행 환경을 제공합니다. 그리고 쓰레드 ID를 가지고 있습니다. 프로세스를 생성하게 되면 쓰레드가 프로세스안에 생성되게 되며, 파일 테이블과 메모리영역과 같은 자원의 집합이 있습니다. 이때 쓰레드가 1개 더 생겼다고 할 때 위 그림 처럼 자원 영역은 그대로 있고 쓰레드가 하나 더 생성 되고 이 쓰레드의 상태를 조절하는 시그널 마스트가 있고 또 개발적인 스택 영역이 하나 더 생기게 됩니다. 프로세스와 쓰레드 함수의 비교 ----------..
2. 쓰레드의 이용 쓰레드 VS 프로세스 쓰레드는 단일 프로그램 안에서 다수의 프로세스(실행흐름)을 두기 위한 메커니즘 쓰레드는 프로세스와 같이 완전히 독립적인 구조가 아닙니다. 즉, 쓰레드들 사이의 공유하는 요소가 있고 이는 문맥교환에 걸리는 시간이 프로세스에 비해 짧기 때문에 시스템 성능의 향상을 이유로 다수의 프로세스를 처리할 때 시스템 성능 저하를 막기위해 쓰레드를 사용한다고 저번 포스팅에서도 알아 봤습니다. 쓰레드와 프로세스의 차이점을 인지하고 메모리 구조를 살펴보도록 하겠습니다. 메모리 구조(프로세스 VS 쓰레드) *fork는 프로세스가 하나의자식 프로세스를 생성하는 함수입니다. 위의 그림을 예시로 하나의 부모 프로세스에서 두개의 자식프로세스를 생성한 경우의 메모리 구조를 살펴 봅시다. 프로그..
쓰레드 하나의 프로그램 안에서 둘 이상의 프로세스(또는 둘 이상의 프로그램흐름)을 만들기 위한것 문맥교환 -프로세스의 상태정보를 저장하고 복원하는 과정 -결과적으로 이 과정에 소요되는 시간을 줄이는 것 *프로세스란? '현재 실행중인 프로그램'을 의미 예) 둘 이상의 서로 다른 프로그램을 실행한다면 프로세스가 둘 이상 생성 - 웹 브라우저 실행해 웹 서핑을 하면서 뮤직플레이어를 실행해 음악을 듣는 경우 두 개의 프로세서 실행 하나의 프로그램이 둘 이상의 작업을 동시에 처리하기 위해서도 둘 이상의 프로세스가 필요 예1) 서버에서 다수의 유저가 접속해 동일한 프로그램을 사용하는 경우 예2) 멀티 유저 게임의 경우, 다수의 유저가 동시에 하나의 게임을 하는 경우 - 서버 입장에서는 한 개의 프로그램을 실행 하지..
응용 프로그램 코드에 로그 요청을 삽입하려면 상당한 양의 계획과 노력이 필요합니다. Apache의 조사 결과에 의하면 어플리케이션에서 로깅전용 코드의 비율이 약 4%를 차지 했다고 하네요. system.out.println 구문을 남발하게 되면 그 프로그램의 성능은 하락하게 됩니다. Log4j 2응 이용하면 시스템 효율도 향상시키고 로깅도 안정적으로 처리할 수 있게 됩니다. 자 그럼 Log4j 2의 구성 방법에 대해 살펴 보겠습니다. 1. XML, JSON, YAML 또는 속성 형식으로 작성된 구성파일을 통해 2. 프로그래밍 방식으로 ConfigurationFactory 및 Configuration 구현을 작성해서 3. 프로그래밍 방식으로 구성 인터페이스에 표시된 API를 호출하여 구성 요소를 기본 구성..
Log4J 1.x 에서 Log4J 2.x 로 변경 하면서 공부가 필요하여 정리합니다. --------------------------------------------------------------------------------------------- 아키텍쳐 구성 요소 ※출처:apache.org/log4j log4j 2 API를 사용하는 어플리케이션은 LogManager로부터 구체적인 이름의 Logger를 요구합니다. LogManager는 가장 적합한 LoggerContext를 찾아주고 Logger를 가져옵니다. Logger를 작성해야 하는 경우 a)Logger와 같은 이름 b)상위 패키지의 Logger와 같은 이름 c)root LoggerConfig의 Logger와 같은이름 LoggerConfig ..
down vote You can inspect the controls of the native Chrome Video Player by activating the shadow DOM in Settings|Preferences -> Elements -> Show user agent shadow DOM After that you can inspect the players buttons. Now the problem is that the download button cannot be accessed via CSS for some reason.video::-internal-media-controls-download-button { display:none; } won't work. Even selecting th..
에러 상황 : getOutputStream() has already been called for this response JSP 처리 중에 발생하는 다음과 같은 오류 메세지.Servlet.service() for servlet [jsp] in context with path [] threw exception [java.lang.IllegalStateException: getOutputStream() has already been called for this response] with root cause java.lang.IllegalStateException: getOutputStream() has already been called for this response at org.apache.catalin..
- Total
- Today
- Yesterday
- 연동
- 쓰레드
- apache tomcat 연동
- java map loop
- apache2.x
- 빈팩토리
- 프로세스
- application
- map foreach
- apllication context
- 어플리에키션 컨텍스트
- Page
- 디자인패턴
- map loop
- 프로세스의 특징
- tomcat8.5
- 쓰레드 사용 이유
- IoC컨테이너
- tomcat8.x
- 패턴
- parretn
- map iterator
- 빈
- 쓰레드의 이용
- 메소드
- 프로세스의 문제점
- 설정정보
- BEAN
- 스프링
- map for문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |