본문 바로가기

JAVA

(30)
싱글톤 패턴 싱글톤 패턴 - 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. - 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다. ▶ 싱글톤 패턴 특징 - 하나의 인스턴스를 생성해서 사용한다. - 메모리 낭비 방지한다. - 공통된 객체를 여러개 생성해서 사용해야하는 상황에서 많이 사용된다. - 꼭 필요한 경우가 아니면 지양한다. ▶ 싱글톤 패턴 단점 - 전역 인스턴스이기 때문에 데이터 공유할 우려가 있다. (static 변수에 인스턴스 생성되는 경우) - 멀티쓰레드 환경에서 동기화 처리를 하지 않으면 인스턴스가 두개가 생성되는 경우가 발생할 수 있다...
객체지향 설계의 5대 원칙 1. SRP (단일책임의 원칙: Single Responsibility Principle) - 소프트웨어의 설계 부품(클래스, 함수 등)은 단 하나의 책임만을 가져야 한다. 2. OCP (개방폐쇄의 원칙: Open Close Principle) - 기존의 코드를 변경하지 않고(Closed) 기능을 수정하거나 추가할 수 있도록(Open) 설계해야 한다. 3. LSP (리스코브 치환의 원칙: The Liskov Substitution Principle) - 자식 클래스는 부모클래스에서 가능한 행위를 수행할 수 있어야 한다. 4. ISP (인터페이스 분리의 원칙: Interface Segregation Principle) - 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다. 하나의 일반적인..
[실습] 서블릿+컨넥션+트렌젝션+mvc ▶ 서블릿 컨트롤러 - 요청된 request의 uri를 분석해서 경로를 forward 시킨다. (요청된 uri는 패턴에 따라 컨트롤러로 들어오게 어노테이션을 설정한다.) - MainController package kr.or.ksmart.controller; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.Htt..
커넥션 풀 구현 Connection Pool 구현 ▶ 라이브러리에 DB 드라이버의 jar 파일을 추가한다. - mariadb : org.mariadb.jdbc.Driver - mysql : org.git.mm.mysql.Driver ▶ context.xml 파일의 Resource를 설정한다. - Resource를 등록하여 웹에서 JNDI로 호출할 이름과 정보를 설정한다. 더보기 1. name : JNDI로 호출될 이름을 설정 2. auth : DBCP를 관리할 관리자 (Container or Application) 3. type : 해당 resource의 return type 4. factory : dbcp를 유용하는 관리 클래스 5. driverClassName : JDBC를 이용하기 위한 드라이버 클래스 6. url..
컨넥션 풀 Connection Pool JNDI (Java Naming and Directory Interface) - 디렉터리 서비스에서 제공하는 데이터 및 객체를 발견하고 참고하기 위한 자바 AP - 외부에 있는 객체를 가져오기 위한 기술 DBCP(Database Connection Pool) - 데이터베이스와 연결된 커넥션을 미리 만들어서저장. 필요할때 저장된 곳(pool)에서 가져다 씀 - 데이터베이스 연결과 해제 직접 관리한다. 미리 컨넥션 정보를 가지고 있어서 한번 설정해 두면 디비정보를 계속 꺼낼 필요가 없다. 실무에서 사용하는 방법. 커넥션 풀. ▶ Connection Pool 의 원리 ▶ DBCP 특징 풀 속에 미리 커넥션이 생성되어 있기 때문에 커넥션을 생성하는 데 드는 연결 시간이 소비되지 않는..
JVM (JAVA VIRTUAL MACHAIN) JAVA VIRTUAL MACHAIN ▶ JAVA 프로그램 실행구조 코드를 작성할 때 메모리 관리가 중요하다. 컴퓨터의 메모리 공간은 한정되어 있고, 불필요한 메모리가 누적되다 보면 시스템 속도 저하는 물론이고 컴퓨터의 메로기 공간을 초과하게 된다. 일반적인 프로그램은 windows나 Linex 같은 운영체제(os) 위에서 실행하게 됩니다. JAVA프로그램의 실행은 운영체제가 JVM을 실행시키고, JVM이 자바 프로그램을 실행시키는 구조를 가지고 있습니다. JVM (JAVA VIRTUAL MACHAIN) JVM은 Java Virtual Machine의 약자로, 가상의 하드웨어 역할을 해주는 software입니다. - Virtual : 가상화, 즉 Hardware 적인 형태가 아닌 Software 적인 형..
Generic(제네릭) 제네릭 인스턴스(객체)화 시에 다룰 데이터 타입을 확정하여 명시한다. 다양한 타입의 객체들을 다루는 메서드나 클래스에 컴파일 시의 타입 체크를 해주는 기능 다룰 객체의 타입을 미리 명시하여 객체의 형 변환 불필요 (불러올때 형 변환이 필요없음) List test = new ArrayList(); //와일드 카드라고 하며, 아무 참조타입 대입가능 List test = new ArrayList(); // 위와 같은 지정된 참조타입으로만 데이터 저장과 호출 가능 ▶ 제네릭의 장점 - 타입의 안정성 - 형 변환 작업 필요하지 않음. - 코드가 더 간결해진다. 형 변환 코드 생략으로 인해 ▶ 제네릭 다형성 슈퍼클래스가 참조타입으로 올 수 있는 형태로 제네릭도 사용이 가능하다. 클래스, 인터페이스도 활용이 가능하다..
필터 (Filter) 필터란? ▶ javax.servlet.filter 인터페이스 구현 - 요청 URL에 따른 HTTP 요청과 응답을 변경할 수 있는 재사용 web.xml 혹은 어노테이션으로 url 설정이 가능하다 ▶ 필터 생명주기 및 주요 메서드 - init( ) : 최초 1회 실행 메서드 - doFilter() : 필터 실힝시 매번 실행되는 메서드 - destory() : 필터 제거시 1회 실행 메서드 ▶ 필터 실행 순서 - 경로 요청 : http://localhost/member/memberList