목록분류 전체보기 (75)
Leeyebin의 블로그
[Docker 이해 및 환경 구성] 도커는 무엇인가 !리눅스컨테이너 기술을 이용해 애플리케이션 !패키징, !배포를 지원하는 !경량의 !가상화 오픈소스 프로젝트 Go 언어로 개발(가장 성공한 Go언어로 만든 프로그램) 왜 도커를 써야 할까 https://www.slideshare.net/Docker/docker-lpc-2014cristian 예: 맥에서 아파치 톰캣을 설치하는 방법과, 윈도우에서 설치하는 방법이 다름 도커를 이용해서 깔면 한줄이면 끝남 Container vs Hypervisor 이미지 출처 : https://www.docker.com/what-docker 도커는 가볍다. VM에 비해 이미지 파일 크기가 작아서 빠르게 이미지를 만들고 실행할 수 있다. Immutable Infrastrutur..
6.1 프런트 컨트롤러의 도입 프런트 컨트롤러 패턴 이미지 출처 : 자바 웹 개발 워크북 P430 프런트 컨트롤러는 VO객체의 준비, 뷰 컴포넌트로의위임, 오류 처리 등과 같은 공통 작업ㅇ르 담당하고, 페이지 컨트롤러는 이름 그대로 요청한 페이지만을 위한 작업을 수행한다. 디자인 패턴 개발자는 늘 인스턴스의 생성과 소멸에 대해 관심을 가지고 시스템 성능을 높일 수 있는 방향으로 구현해야 한다. 또한 중복 작업을 최소화하여 유지보수를 좋게 만드는 방법을 찾아야 한다. 디자인 패턴은 검증된 방법들을 체계적으로 분류하여 정의한 것이다. 설계자의 경험(객체 생성 기법, 클래스 구조, 객체 간의 교류방법) --적용-->실무에서 검증(시스템) --분류--> 디자인 패턴(Factory Method, Singleton..
서블릿의 단점을 보완하기 위해 등장한 JSP(JavaServer Page) 5.1 MVC 이해하기 올인원 All-in-one 방식과 문제점 -이전에는 클라이언트와 요청 처리를 서블릿 홀로 담당하는 올인원 방식이었다.(서블릿 혼자 북치고 장구치고) -올인원 방식은 규모가 작거나 업무 변경이 많지 않은 경우에 적합하지만, 규모가 크거나 업무 변경이 잦은 경우에는 오히려 유지 보수가 어려워 운영 비용이 증가하게 된다. 글로벌 환경과 MVC 아키텍처 -시스템 변경이 잦은 상황에서 유지 보수를 보다 쉽게 하려면, 중복 코드의 작성을 최소화 하고, 코드 변경이 쉬워야 한다. 그래서 기존 코드의 재사용성을 높이는 방향으로 설계해야한다. 특히 객체지향의 특성을 활용하여 좀 더 역할을 세분화하고 역할 간 의존성을 최소화..
추상클래스 vs 인터페이스추상 클래스는 extends, 인터페이스는 implements 키워드 사용추상 클래스는 필드를 가질 수 있지만 인터페이스는 불가능인터페이스에서 Static 변수는 가질 수 있음추상 클래스도 클래스이기 때문에 다중 상속이 불가능다중 상속이 불가능한 제약을 인터페이스로 해결인터페이스는 메서드의 구현부분과 필드가 없기 때문에 다중상속 가능추상 클래스는 클래스를 상속 받아서 기능을 이용하거나 확장하는 목적인터페이스는 메서드 구현을 강제하여 하위 클래스에게 같은 동작을 행하도록 함.어떤 것을 사용할 것인가.추상 메서드만으로 가능한 경우에는 인터페이스를, 공통된 구현 부분이나 필드가 필요한 경우에는 추상클래스를 사용한다.애초에 클래스를 설계할 때 필드를 가질 수 없다는게 명확하면 인터페이스..
부록2 JDBC와 데이터베이스 2.1 데이터베이스가 없던 그 시절파일 입,출력 API를 사용하여 데이터 입,출력 프로그래밍데이터가 분리되어 통합 조회 어려움데이터의 중복 발생파일 형식이 애플리케이션 및 프로그래밍 언어에 종속됨 데이터 입,출력 프로그래밍이 번거롭다. 애플리케이션의 데이터가 분리되어 통합 조회가 어렵다. 데이터 중복이 발생한다.(저장 공간이 낭비된다., 데이터 무결성이 깨진다.) 파일형식이 애플리케이션이나 프로그래밍 언어에 종속된다. 2.2 데이터베이스의 등장파일 입,출력 프로그래밍으로부터 탈출데이터 통합 관리 및 데이터 중복 감소애플리케이션으로부터 독립개발자의 파일 입,출력 프로그래밍으로부터 자유롭다.(파일 입,출력 API를 사용하여 데이터를 읽고 쓰는 것은 DBMS에게 맡실 수 있다.)..
3.1 CGI 프로그램과 서블릿 CGI의 이해 웹 서버와 프로그램 사이의 데이터를 주고받는 규칙을 CGI(Common Gateway Interface) CGI 프로그램 컴파일 방식은 기계어로 번역된 코드를 바로 실행하기 때문에 실행 속도가 빠르지만, 변경 사항이 발생할 때마다 다시 컴파일하고 재배포할 수 있다. 스크립트 방식은 실행할 때마다 소스 코드의 문법을 검증하고 해석해야 해서 실행 속도가 느리고, 변경 사항이 발생하면 소스 코드를 수정하고 저장만하면 된다. 서블릿 자바 CGI 프로그램은 컴파일 방식 / 자바로 만든 CGI 프로그램을 '서블릿(Servlet)'이라고 부른다. 자바 서블릿이 다른 CGI 프로그램과 다른 점은, 웹 서버와 직접 데이터를 주고받지 않고 전문 프로그램에 의해 관리된다. 서블..
부록11.1 메인 프레임의 시대예전에는 메인 프레임이라는 거대한 컴퓨터에 여러 대의 터미널을 물려서 사용함 특징중앙 집중형소프트웨어의 유지보수 용이(기능 추가나 변경 시 메인 프레임에만 배포하면 됨)보안 용이(메인 프레임에 연결된 터미널을 통하지 않고서는 시스템을 사용할 수 없음)개발도구3세대 언어(Cobol, Fortran, PL/1, C 등)개발 프로세스(절차적 프로그래밍, 구조적 개발 방법론, Top-down 방식, Function 중심 등)단점하드웨어 증설에 한계(사용자나 사용량이 계속해서 증가하는 상황이라면 하드웨어 교체에 따른 유지보수비가 많이 드는 구조) 1.2 클라이언트/서버의 시대하드웨어 사양이 좋아지면서 예전의 메인 프레임 급 수준의 서버용 컴퓨터를 저렴하게 구축할 수 있게 되었음PC ..
12. 서버 튜닝 도구 서버튜닝은 2회에서 3회 적정(최적)을 찾아야한다. *변천 흐름 8i부터 utlbstat.sql -> 시작 utlestat.sql -> 끝 이 스크립트를 이용해서 일정기간 동안의 튜닝 통계정보 수집할 수 있다. => Report.txt | 9i부터 기능 향상 Statspack package(데이터베이스 내부에서 프로시저와 펑션들을 이용해서 데이터베이스 상태정보를 수집하고 분석) -> Data Dictionary Table형태로 보고서를 받을 수 있다. | 10g부터 기능 향상 log Automatic Workload Repository(AWR 통계 정보를 저장하고 관리해 주는 기능) => 결과를 txt, html 파일 형태로도 볼 수 있다.오라클 메모리 상태정보를 자동으로 수집 및..
8. 인덱스 검색 방법 8.1 INDEX 설계 시 주의사항 -조건을 만족하는 데이터의 분포도가 10% 내외일 때(분포도 = (조건을 만족하는 행수 / 전체행수) * 100) -대용량 데이터를 가진 테이블에 적용했을 때 -분포도가 나쁘더라도 FAST INDEX SCAN이 가능한 경우(분포가 나빠도 적극적으로 사용해보고 판단해보자) -다양한 인덱스 유형 중에 가장 적합한 인덱스를 선택 -테이블스페이스와 물리적 크기 설계 고려 -좋은 분포도를 가진다 8.2 INDEX의 종류 Balance*Tree 이미지 출처 : http://docs.oracle.com/cd/E25054_01/server.1111/e25789/indexiot.htm 참고 B Tree 알고리즘 애니메이션 : http://ats.oka.nu/b-..
4.4.2 동일한 문장이 아닌 경우 (대,소문자 등) 동일한 SQL문을 작성하지 못한다면 각 문장은 PARSING을 각각 수행하기 때문에 불필요한 메모리 공간의 낭비 및 성능저하 현상이 발생될 수 있음. 1)CURSOR_SHARING = EXACT 2개의 문장에 사용된 SQL문이 모두 동일한 조건, WHERE절 조건에 정의된 상수가 동일해야 만 파싱 정보를 공유함 SQL> ALTER SYSTEM SET CURSOR_SHARING=EXACT; 시스템이 변경되었습니다. SQL> SELECT * FROM DEPT WHERE DEPTNO = 30; DEPTNO DNAME LOC ---------- -------------- -------------- 30 SALES CHICAGO SQL> SELECT * FRO..