분류 전체보기 161

[디자인패턴] Composite - 그릇과 내용물을 동일시한다

책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다.  그릇과 내용물을 동일시하여 재귀적인 구조를 형성디렉토리(그릇), 파일(내용물)을 디렉토리 엔트리라는이름으로 같은 종류로 동일시  Leaf 내용물, 이 안에 다른 것을 넣을 수 없다, File 클래스Composite 그릇, Leaf와 Composite을 넣을 수 있다, Directory 클래스Component Leaf와 Composite을 동일시하기 위한 역할, 공통되는 상위 추상 클래스, EntryMain  Directory클래스public class Directory extends Entry { // Entry는 File과 Directory의 공통 추상 클래스 private String name; ..

[디자인패턴] Proxy - 필요해지면 만든다

책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다.  본인 객체를 대신해서 대리인 객체가 일을 대신 처리대신 대리인 객체가 할 수 없는 일일 때 본인 객체를 생성→ 초기화에 시간이 오래 걸리는 시스템이라면 대리인을 사용하여 작업 처리 속도를 올릴 수 있다, 유지보수 용이 Subject 본인, Proxy와 RealSubject를 동일시하기 위한 인터페이스(API), 공통 인터페이스 Proxy 대리인, Subject 인터페이스 구현- client 요청을 최대한 처리하는데 자기 혼자 처리할 수 없다면 RealSubject에게 맡긴다. - 이때서야 RealSubject 인스턴스를 생성한다. RealSubject 실제 본인, Subject 인터페이스 구현- Proxy만..

[디자인패턴] Decorator - 장식틀과 내용물을 동일시한다

책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다.  객체에 장식이 되는 기능들을 하나씩 추가장식틀과 내용물을 동일시한다내용물을 변경하지 않고 기능을 추가→ 투과적인 인터페이스(API)를 유지한 채 객체를 차례로 씌워 기능을 추가한다 Component 기능을 추가할 때 핵심이 되는 역할 DisplayConcreteComponent Component를 구현하는 구체 클래스Decorator 새로운 기능(장식) Component를 가지고 있음ConcreteDecorator Decorator클래스를 구현하는 구체 클래스 더보기더보기Display 문자열 표시용 추상 클래스StringDisplay Display를 상속하는 구체 클래스, 핵심 문자열Border 장식틀 추상..

[Spring] URL에서 정적 파일, 동적 파일 접근하기

1. 정적 파일프로젝트 루트 경로는 프로젝트명에 따라 '/ch2'까지로 되어있다. 정적파일은 src/main/webapp/resources 경로에 주로 변하지 않는 파일인 html, css, img 등을 저장해야 한다. 그 이유는 servlet-context.xml에 정적파일에 대한 GET mapping 시 정적파일 위치가 기본적으로 이렇게 잡혀있기 때문이다.  하지만 URL에서 해당 파일에 대한 요청을 할 때는 '/resources'  경로는 적지 않고 그 하위 경로부터 적는다. 이렇게 해야 접근이 가능하다. 그런데 다른 블로그에서 정적 파일들을 static 폴더 안에 관리하는 것을 봤는데 이렇게 하면 이 경로의 파일들이 정적 파일이라는 것을 명확히 알 수 있으니까 좋은 것 같다. [참고: Spring..

Spring 2025.02.20

[디자인패턴] Visitor - 데이터 구조를 돌아다니면서 처리한다

책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다.  데이터 구조의 각 요소에 대해 처리를 한다.많은 요소가 모여 있는 내부를 돌아다니며 같은 처리를 반복해서 적용한다.데이터 구조와 처리를 분리한다.- 부품으로서의 독립성을 높여준다, OCP 설계 원칙의 적용 Visitor 추상클래스, visit(***) 선언 ConcreteVisitor 클래스, visit(***) 메서드 구현Element 데이터 구조 나타내는 인터페이스, 방문자를 받아들이는 accept 메서드 선언ConcreteElement 구체 클래스, File, Directory, accept 메서드 구현ObjectStructure Element 집합, Directory 클래스는 각각의 Element를 ..

[디자인패턴] Iterator - 처리를 반복한다

책 [JAVA 언어로 배우는 디자인 패턴 입문 3판;유키 히로시 저]을 참고하여 작성하였습니다.  Iterable 집합체 인터페이스Iterator 처리를 반복하는 반복자 인터페이스BookShelf implements Iterable집합체 구현 클래스BookShelfIterator implements Iterator 반복자 구현 클래스 Book 각 요소 나타내는 클래스  Iterable 인터페이스는 처리를 반복할 대상으로 이 인터페이스를 구현하는 클래스는 배열처럼 '뭔가 많이 모여있는 것' 이른바 '집합체'가 된다. Iterable 인터페이스는 iterator 메서드가 선언되어 있다.public interface Iterable { public abstract Iterator iterator();} ..

[database] Advanced SQL - nvl, decode, case, pivot, rollup, cube, rank, 상관 쿼리

1. NVL 함수컬럼의 값이 null일 때 어떤 값을 보이게 할 것인지를 지정한다NVL 함수는 모든 데이터 타입에 적용할 수 있다NVL 함수를 사용할 때 변경되는 값의 데이터 타입을 일치시켜야 한다SELECT name, salary, nvl(salary, 0) modified_salary -- NVL()FROM temp;SELECT name, salary, nvl2(salary, 100000, 0) -- NVL2(값, 지정값1, **지정값2**)FROM temp;2. DECODE 함수n항연산자, switch 문컬럼 값에 따라 출력 값을 지정한다else 조건을 명시하지 않을 경우 기본 값으로 nullSELECT name, salary, DECODE(TRUNC(salary/1000), null, nul..

[web] input 태그, button 태그

input/button 태그 속성 중 type이 button인 것은 어떠한 기능을 수행하지 않는다- button은 단지 클릭할 수 있는 버튼, submit은 폼 데이터를 제출하는 버튼form 태그 안에 특정 페이지로 넘어갈 수 있도록 action 속성으로 주소 지정 가능 1. 형태 차이버튼 2. 내부 콘텐츠 포함 여부input 태그button 태그value 속성으로 텍스트 포함 가능이미지, 아이콘 HTML 요소 등 포함 가능  3. 기본 동작 (폼 제출)input 태그button 태그.기본적으로 type이 submit으로 form 태그 안에서 자동 제출type이 button이면 아무 동작을 하지 않는다. 동작을 원하면 onClick 등의 이벤트 핸들러를 지정한다. 속성이 button으로 지정되면 두 태그..

[database] 오라클 코멘트 설정 및 조회

-- DDL - COMMENT-- 테이블 코멘트 설정 및 조회COMMENT ON TABLE s_emp IS 'Employee table. Each row in this table represents one employee of the company.'; SELECT * FROM all_tab_commentsWHERE table_name LIKE 'S_EMP';-- 컬럼 코멘트 설정 및 조회COMMENT ON COLUMN s_emp.title IS 'Title on Employee table.'; 테이블 코멘트 설정$ COMMENT ON TABLE [테이블명] IS    '주석 문장'; 컬럼 코멘트 설정$ COMMENT ON COLUMN [테이블명].[컬럼명] IS ..

[database] Transaction Control, Dictionary

Transaction은 논리적인 업무의 작업단위를 의미한다SAVEPOINTROLLBACKCOMMITDDL과 DCL은 auto-commit이 된다.명령어설명COMMIT아직 저장되지 않은 모든 데이터 변경 사항을 데이터베이스에 저장하고 현재의 트랜잭션을 종료SAVEPOINT현재의 트랜잭션에 savepoint를 지정ROLLBACK(ROLLBACK TO [savepoint 이름])아직 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 종료 1. commit, rollback 이전의 상태단지 버퍼에만 영향을 받았기 때문에 데이터의 이전 상태는 복구될 수 있다현재 사용자는 select 문으로 작업의 결과를 확인할 수 있다다른 사용자는 현재 사용자가 수행한 작업의 결과를 볼 수 없다변경된 행은 Loc..