본문 바로가기

전체 글

(73)
자바 디자인 패턴 - 싱글턴 패턴 title: 싱글턴 패턴(Singleton pattern) tags: java design-pattern 싱글턴 패턴 무엇인가 클래스를 사용하기 위해서는 User user = new User() 와같은 방식으로 인스턴스를 생성해서 사용하여야 한다. 그러나 제한된 자원에 맞춰서 사용할때 불가피하게 단 하나의 인스턴스만 공유해서 사용해야 하는 경우가 있다. 예를들어 JDBC를 사용해 DB에 연결할 때 매번 계정명과 비밀번호, url등을 입력해 디비 연결이 일어난다면 반복되는 코드들도 많아질 뿐만 아니라 db와 연결도 반복해서 일어날 것이다. 이렇듯 단 한번의 초기값으로만 인스턴스를 사용해야한다면 싱글턴 패턴을 적용할 수 있다. 싱글턴 패턴은 처음 사용할때 단 한번만 인스턴스를 사용하고 그 이후에는 모두 동일..
DNS(Domain Name System) DNS DNS란 Domain Name System의 약자로 도메인 이름을 기계가 읽을 수 있는 IP 주소로 변환하여 최종적으로 해당 IP 주소의 서버에 접근할 수 있게하는 시스템을 말한다. 사용자가 웹 사이트 서버에 이르기위해 인터넷상의 모든 컴퓨터는 인터넷 프로토콜(IP) 주소를 통해 서로를 찾고 통신한다. DNS로 사용자는 웹 사이트로 이동할 때 그러한 IP주소를 입력할 필요는 없고 google.com과 같은 도메인 이름을 입력하여 이동할 수가 있다. DNS는 이름과 숫자간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다. DNS 서버는 도메인 이름에 대한 요청을 IP주소로 변환하여 최종 사용자가 도메인 이름을 웹 브라우저에 입력할 때 해당 사용자를 어떤 서버에 연결할 것인지 제어한다. 이를 쿼..
Post와 Put의 차이 Post와 Put 차이 일반적으로 GET은 조회, POST는 등록, PUT은 수정, DELETE는 삭제라고 생각한다. POST와 PUT의 차이는 무엇인가 POST post는 서버에 새 리소스를 등록하는 작업을 한다. 등록하는 리소스는 요청 BODY 에 담겨 넘겨진다. 응답은 200(확인) 또는 204(내용없음)이 적절하다. PUT 요청한 URI에 이미 리소스가 존재한다면 PUT과 같이 전달된 body는 원본 서버에 수정된 버전으로 변경되어야 한다. 만일 리소스가 존재하지 않는다면 서버로 요청된 데이터로 새 리소스를 생성할 수 있다. 새 리소스가 생성된 경우 201(created)응답을 사용자에게 알려준다. 기존 리소스가 수정된 경우 200(확인) 혹은 204(내용 없음) 응답을 보내야한다. 리소스를 생성..
객체지향 SOLID 원칙 SOLID 소프트웨어 설계 원칙에는 SOLID라는 것이 있다. 이는 객체지향 소프트웨어 설계에 사용되지만 절차적 프로그래밍 기법에도 적용할 수 있다. SOLID는 다음과 같다. 단일 책임 원칙(Single Reponsibility Principle, SRP) 개방 폐쇄 원칙(Open Closed Principle, OCP) 리스코프 치환 원칙(Liskov Substitution Principle, LSP) 의존 역전 원칙(Dependency Inversion Principle, DIP) 인터페이스 분리 원칙(Interface Segregation Principle, ISP) 단일 책임 원칙(Single Reponsibility Principle, SRP) 책임 객체는 단 하나의 책임만 가져야한다. 여기서..
객체지향 원리 추상화 무엇? 어떤 집단의 공통된 특징을 추상적으로 파악해 인식할 수 있는 대상으로 삼는 행위이다. 객체지향 프로그래밍에선 관심이 있는 기능이나 클래스를 추출하는 것을 말한다. 왜? 가령 신용카드 관리 프로그램을 만든다 할 때 신용카드는 삼성카드 롯데카드 신한카드 농협카드 등 여러 종류의 카드가 있다. 전부 카드라는 점과 기능은 동일하고 이름과 카드번호 CVC 멤버쉽 혜택 등의 구체적인 정보만 다르다. 사용자가 카드 정보를 입력할 때 카드의 종류를 알기 위해서 신한카드 클래스, 농협카드 클래스를 따로 만들게 되면 카드수가 많아질때 생성되는 클래스 또한 무수히 많아지게 될 것이다. 이럴때 사용하려는 카드의 주요 관심사는 카드번호, 이름, CVC 번호 그리고 카드의 공통된 기능정도일것이다 이를 추상화 하면 ..
자바 가상 머신(Java Virtual Machine, JVM) 자바 가상 머신 자바에 대한 설명을 들으면 자바는 어느 OS도 쉽게 돌아간다는 장점이 있다고는 듣는다. 이는 자바가 JVM이라는 특별한 환경에서 돌아가기 때문이다. 가상 머신(Virtual Machine, VM) 자바 가상 머신에 대해 알기위해선 가상 머신에 대한 개념부터 알고 있어야한다. 거상 머신이란 시스템 위에 자체 CPU, 메모리 등의 환경을 갖추고 하나의 컴퓨터처럼 돌아가는 것이다. 하이퍼바이저를 사용하여 가상 머신 환경과 그 외 시스템 환경의 리소스를 구분하여 사용할 수가 있다. 여러개의 VM이 존재할 수가 있다. 가상 서버를 구현할때 시스템의 리소스의 낭비없이 효율적으로 사용할 수 있다는 장점이 있다. 자바 가상 머신 JVM은 자바 프로그램을 돌릴 수 있는 가상 컴퓨터이다. JVM은 코드를 ..
오라클 병렬처리 오라클 병렬처리 SQL 명령문의 병렬 실행 과정 사용자 세션 또는 쉐도우 프로세스는 쿼리 코디네이터(QC)라는 역할을 수행한다. 쿼리 코디네이터는 병렬 서버 수를 가져온다. SQL문은 작업 시퀀스로 실행된다. 병렬 실행 서버는 가능하면 병렬로 각 작업을 수행한다. 병렬 서버가 명령문 실행이 완료되면 쿼리 코디네이터는 병렬로 실행할 수 없는 작업의 모든 부분을 수행한다. 예를 들어 작업이 있는 병렬 쿼리는 각 병렬 처리에서 계산한 개별 하위 합계를 추가해야한다. 마지막으로 쿼리 코디네이터는 결과를 사용자에게 반환한다. DOP(Degree Of Parallelism) DOP(Degree Of Parallelism)는 병렬처리 할 때 병렬 프로세스를 몇개 띄울 지를 의미한다. DOP가 20이면 20개의 병렬 ..
테이블 파티셔닝 이 글은 책 『오라클 튜닝 에센셜』의 내용을 기반으로 작성했습니다 파티셔닝 물리적 데이터를 논리적으로 나눈다는 뜻이다. 테이블 파티셔닝 논리적으로는 테이블로 접근하지만 물리적으로는 테이블 내의 각각의 파티션으로 접근한다. 각각의 파티션은 세그먼트에 해당한다. 세그먼트는 테이블과 1:1을 갖는다. 테이블 파티셔닝은 테이블 데이터를 일정 기준으로 나누어 저장하는 것이다. 예를 들어 서점에서 '오라클'관련 책을 찾기 위해 '데이터베이스' 코너로 가서 오라클을 찾을 수 있을것이다. 이 처럼 파티션은 데이터를 찾을 때 조금 더 쉽고 빠르게 찾을 수 있도록 도와주는 것이다. 단일 파티션으로 되어있는 경우에는 특정 영역에 해당하는 데이터를 삭제하려면 DELETE를 사용해야하지만 파티셔닝의 경우는 해당 파티션을 DDL..