본문 바로가기

java

디자인 패턴 ◆ Intercepting Filter 패턴 - 요청 타입에 따라 다른 처리를 하기 위한 패턴 ◆ Front Controller 패턴 - 요청 전후에 처리하기 위한 컨트롤러를 지정하는 패턴 ◆ View Helper 패턴 - 프레젠테이션 로직과 상관없는 비즈니스 로직을 헬퍼로 지정하는 패턴 ◆ Composite View 패턴 - 최소 단위의 하위 컴포넌트를 분리하여 화면을 구성하는 패턴 ◆ Service to Worker 패턴 - Front Controller와 View Helper 사이에 디스패처를 두어 조합하는 패턴 ◆ Dispatcher View 패턴 - Front Controller와 View Helper로 디스패처 컴포넌트를 형성한다. 뷰 처리가 종료될 때까지 다른 활동을 지연한다는 점이 Serv.. 더보기
Commons Logging과 Log4J 1. Commons Logging Commons Loggin API는 자카르타 Commons에 포함되어 있는 프로젝트들이 로거로 사용하는 API이다. Commons Logging API는 자체적으로 로깅 기능을 구현하고 있지는 않으며, 로깅 요청을 Log4J나 자바1.4로깅 API와 같이 이미 존재하는 로깅 API에 전달하는 다리 역할을 한다. 즉, Commons Logging API를 사용하면 Log4J를 사용하든 자바 1.4의 로깅 API를 사용하든지에 상관없이 동일한 방식으로 로깅 코드를 작성할 수 있게 된다. Loggin API를 사용하기 위해서는 다음의 두 클래스만 사용하면 된다. - org.apache.commons.logging.Log - org.apache.commons.logging.Lo.. 더보기
[Java] 자바 JDBC JDBC (Java DataBase Conectivity) '자바 표준 데이터베이스 인터페이스'라고 할 수 있다. 어떠한 프로그램 언어라 하더라도 데이터베이스 표준 인터페이스는 필요하다. 프로그램적으로 데이터베이스에 접근하기 위한 표준적인 방법이 존재하지 않는다면, 여러분들은 다양한 데이터베이스에 접근하기 위해서 각 회사에 맞는 데이터베이스 사용법을 배워야 한다. 하지만 이러한 문제는 표준 인터페이스라는 단 한마디로 해결할 수 있다. JDBC 기본 클래스 Connection DriverManager를 통해서 데이터베이스에 접속할 수 있는 Connection 객체를 생성할 수 있으며, Connection 객체가 성공적으로 생성되었다면 데이터베이스로 쿼리를 전송한 후 처리할 수 있다. 그리고 작업이 모두 끝.. 더보기
[Java] Exception (1/2) 예외처리(Exception Handling) 1. 개요 자바에서 에러는 크게 두 종류로 나뉘어진다. 컴파일할 때 발생하는 컴파일 타임 에러(Compile-Time Error)와 프로그램이 실행되는 동안 발생하는 실행 타임 에러(Run-Time Error)가 그것이다. 컴파일 타임의 에러는 자바의 문법적인 에러이기 때문에 아주 쉽게 처리할 수있다. 하지만 실행 타임의 에러는 이것과는 차원이 다르다. 실행 타임의 에러는 디버깅의 절차를 거치지 않으면 거의 잡을 수 없는 심각한 버그가 많다. 그리고 실행 타임의 잘못된 에러는 프로그램 자체를 멈추게 하는 원인이 될 수도 있다. 2. 에러 이벤트(Error Event) 일반적으로 많이 발생하는 에러 # NullPointerException - 메모리가 없는 객체.. 더보기
[Java] Enumeration 과 Iterator 컬렉션 내의 데이터에 접근하기 위한 가장 일반적인 방법은 Enumeration과 Iterator를 사용하는 것이다. Enumeration과 Iterator의 모든 데이터를 마지막에 상관하지 않고 접근할 수 있다는 특징이 있다. 1. Vector에서의 Enumeration 2. Hashtable에서의 Enumeration 3. Iterator 4. For Each Statement 더보기
[Java] Collection, Map 계열의 클래스 예제 ▶ Stack : Stack 클래스는 데이터의 삽입과 추출이 후입선출(Last-In First-Out)구조로 되어 있는 자료구조이다. 즉, 마지막에 들어간 데이터가 제일 먼저 나오는 자료구조를 클래스화한 것이다. ▶ ArrayList : ArrayList는 그 이름에서 알 수 있듯이 배열의 성격도 가지고 있으며, List 자료 구조적인 성격을 가지고 있는 클래스이다. ▶ HashSet : Set의 성격을 가지고 있으면서 내부에는 해시의 기법을 사용하는 클래스가 바로 HashSet이다. HashSet은 중복을 허용하지 않는 집합적인 성격을 가지고 있으며 내부에 해시 기법을 사용하고 있기 때문에 Set이지만 HashSet이라는 이름이 붙은 것이다. ▶ Vector1 : Vector는 순서의 개념을 가지고 있.. 더보기
[Java] Sorted 계열 클래스 (TreeSet, TreeMap, Comparator) ◆ HashSet 이나 HashMap을 사용하던 도중 정렬기능이 필요할 때 정렬 기능을 지원해주는 TreeSet이나 TreeMap으로 변환해서 사용이 가능하다. 1. HashSet을 TreeSet으로 변환하기 2. HashMap을 TreeMap으로 변환하기 ◆ TreeMap과 TreeSet의 Comparator 구현을 통한 정렬하기 TreeSet에 데이터를 집어 넣으면 기본적으로 오름차순(Ascending) 정렬이 되지만 그것도 문자열이나 기본 데이터 타입과 같은 단순한 것에만 해당된다. 만약 사용자가 직접 만든 클래스의 형이라면 어떻게 정렬을 할까? 이것은 사용자가 직접 비교법을 넣어 주어야 한다. TreeSet의 경우에는 Comparator 인터페이스를 이용해서 구현한다. Comparator 인터페이.. 더보기
[Java] 저장소 관련(배열, Collection, Map) 1. 기본 데이터 타입은 변수를 선언할 때 메모리가 생성된다. 2. 자바 언어 스펙 (Java Language Specification)을 보면 배열을 객체(Object)로 보고 있다. 그렇기 때문에 배열도 Object 클래스의 메서드를 모두 이용할 수 있다. 배열은 좀 특수한 경우의 객체라고 보면 된다. 모든 것을 종합해 볼 때 배열의 이름은 참조값 즉 참조 변수가 되는 것이다. 3. 제너릭(Generic)이란 클래스에 사용할 타입을 클래스를 디자인할 때 지정하는 것이 아니라 클래스를 사용할 때 지정한 후 사용하는 기술을 말한다. /** 컬렉션의 제너릭의 사용 여부 **/ import java.util.*; public class CollectionGenericMain{ public static voi.. 더보기
[Java] Static vs. Non-Static static 메소드와 non-static 메소드의 차이는 무엇일까? non- static 변수는 class로 부터 반드시 객체를 만들어야만 호출할 수 있다. String s = "abcd"; s.substring(1,3); String.substring(1,3); 더이상 설명안해도 두번째 예제는 말도 안된다는 것을 아시겠죠? static 메소드는 객체를 만들지 않고 class로 부터 직접 호출해야 합니다.물론 객체를 만들어 객체로부터 호출해도 에러는 없지만, 이것은 메소드의 올바른 사용법이 아닙니다. 그렇다면 당연히 static 변수와 method는 객체의 생성과는 아무런 연관이 없게됩니다. 따라서 static 변수와 메소드는 객체가 생성되기 이전에 먼저 메모리에 로드됩니다. 즉 static 메소드와 변.. 더보기
객체지향 기본 개념 1. 캡슐화 (Encapsulation) 1.1 캡슐화란? ▶ 객체지향에서 캡슐화라는 개념은 클래스 내부에 여러 속성과 여러 오퍼레이션을 함께 묶음을 의미한다. 그리고 캡슐화는 클래스 내부의 속성이나 오퍼레이션을 외부에 노출하지 않고 보호하는 것을 의미한다. 이렇게 캡슐화는 묶는 것과 보호하는 것을 생각할 수 있다. 좀 더 상세하게 생각해 보면, 여러 속성과 여러 오퍼레이션을 함께 묶어 클래스로 취급하는 것과 클래스 내부를 외부에서 접근하지 못하도록 보호하는 것이 바로 캡슐화이다. 즉, 속성과 오퍼레이션을 하나의 클래스로 패킹한 것이 바로 캡슐화라는 개념이다. 외부로 부터 내부를 감싸 숨기는 것을 캡슐화라고 한다. 1.2 캡슐화는 왜 해야 할까? ▶ 캡슐화를 통해 묶고 숨김을 생각해 보았다. 그런데 왜 .. 더보기