본문 바로가기

자바

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] 자바 Stream 입출력을 위한 공통된 방법 다양한 장소에 존재하는 데이터들을 핸들하기 위해서는 입출력 데이터를 처리하는 공통된 방법이 있어야 함 임출력을 위한 공통된 방법이 없으면? 각각의 하드웨어 장치를 잘 알고 있다는 가정하에, 각각의 하드웨어 장치에 직접 접근해야 함 스트림(Stream)은 자료의 입출력을 도와주는 중간 매개체 입출력장치는 파일, 키보드, 모니터, 마우스, 메모리 네트워크 등이 있음 입출력 장치의 일반적인 특징 일반적인 입출력 장치는 대부분 데이터를 읽고 기록한다는 특징이 있음 스트림의 역할 스트림은 데이터를 읽고 쓰기 위한 공통된 방법을 제공 장치(Device)와 스트림(Stream) 장치마다 연결할 수 있는 각각의 스트림이 존재 스트림의 내부 동작원리는 몰라도 됨, 사용할 줄만 알면 OK 사용자.. 더보기
[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] Sorted 계열 클래스 (TreeSet, TreeMap, Comparator) ◆ HashSet 이나 HashMap을 사용하던 도중 정렬기능이 필요할 때 정렬 기능을 지원해주는 TreeSet이나 TreeMap으로 변환해서 사용이 가능하다. 1. HashSet을 TreeSet으로 변환하기 2. HashMap을 TreeMap으로 변환하기 ◆ TreeMap과 TreeSet의 Comparator 구현을 통한 정렬하기 TreeSet에 데이터를 집어 넣으면 기본적으로 오름차순(Ascending) 정렬이 되지만 그것도 문자열이나 기본 데이터 타입과 같은 단순한 것에만 해당된다. 만약 사용자가 직접 만든 클래스의 형이라면 어떻게 정렬을 할까? 이것은 사용자가 직접 비교법을 넣어 주어야 한다. TreeSet의 경우에는 Comparator 인터페이스를 이용해서 구현한다. Comparator 인터페이.. 더보기
[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 캡슐화는 왜 해야 할까? ▶ 캡슐화를 통해 묶고 숨김을 생각해 보았다. 그런데 왜 .. 더보기