본문 바로가기

알고리즘 정렬 이미지 GIF 이미지로 한 눈에 볼 수 있게 만든 각 정렬 알고리즘이 수행되는 그림 더보기
Oracle Regular Expression(정규표현식) Oracle Regular Expression(정규표현식)Oracle Database 10g에 추가된 새로운 기능을 이용하여 문자 데이터의 검색, 처리 능력을 극적으로 개선할 수 있습니다. 정규 표현식(regular expression)이라 불리는 이 기능은, 텍스트 패턴을 기술하기 위한 일종의 표기법으로, 이미 오래 전부터 다양한 프로그래밍 언어와 UNIX 유틸리티를 통해 지원되어 왔습니다.정규표현식이란?정규 표현식은 하나 또는 그 이상의 문자열과 메타문자(metacharacter)로 구성됩니다. 가장 단순한 형태의 정규 표현식은 cat과 같은 단 하나의 문자열로만 구성될 수 있습니다. 이 정규 표현식은 문자 c와 문자 a, 문자 t의 순서를 갖는 패턴 매치 문자열로 cat, location, cata.. 더보기
Spring에서 Json으로의 입출력 정리 이번에 프로젝트를 진행하면서 Spring에서 사용하는 Jackson Json 라이브러리를 조금 디테일하게 이용해야 하는 상황이 생겨서 이에 대한 내용을 정리하고자 한다.일단 Json과 관련되어 작업의 내용은.. Java 객체에 저장된 값을 Json 형태로 변환하여 Request Body에 실어서 보내야 한다(이때 String 형 변수가 아닌 다른 형(ex : int 형)을 String 형태(쌍따옴표로 감싼 형태 : "123")로 보내야 한다.Java 객체에 저장된 값을 Json 형태로 변환하여 보낼때 선별적으로 보낼수 있어야 한다. (무슨뜻이냐면 Json으로 보낼때 모든 필드를 다 사용하는것이 아니라 특정 필드는 제외해서 사용할 수 있어야...) Request의 Body로 온 Json 내용을 Java 객.. 더보기
autoMappingBehavior 와 mapUnderscoreToCamelCase 속성의 차이 마이바티스 환경 설정 파일에 정의된 구성 요소 가운데 작동 방식을 결정할 때 사용되는 구성 요소가 있다. 구성 요소에 사용 가능한 속성을 사용하면, 사용자가 원하는 방향으로 마이바티스 작동 방식을 지정할 수 있다. 이러한 속성 중 autoMappingBehavior 속성과 mapUnderscoreToCamelCase 속성이 있다. autoMappingBehavior 속성은 조회된 결과를 컬럼 명과 일치하는 자바 프로퍼티 사이에 자동 매핑 설정할지 여부를 지정한다. 기본 설정은 활성(true) 상태이다. 그리고 mapUnderscoreToCamelCase 속성은 언더바(_)로 구분되는 데이터베이스 컬럼 명과 낙타 표기 형식을 따른 자바 프로퍼티를 자동 매핑할지 여부를 지정한다. 기본 설정은 비활성(fals.. 더보기
Singleton Pattern (싱글턴 패턴) * Singleton Pattern (싱글턴 패턴) 싱글턴 패턴은 해당 클래스의 인스턴스가 오직 하나만 만들어진다. 어디서나 그 인스턴스에 접근할 수 있도록 한다. 클래스에서 자신의 단 하나뿐인 인스턴스를 관리하도록 만들면 된다. * 용도 스레드 풀 , 캐시 , 대화상자 , 사용자 설정 , 커넥션 풀 , 디바이스 드라이버 등 객체가 전체 프로그램에서 오직 하나만 생성되어야 하는 경우 * 전역 변수로 static으로 선언해서 사용하면 되지 않을까? 만약 전역 변수로 객체를 생성한다면 어플리케이션이 실행 될 때 객체가 생성 될 것이다. 그러나 그 객체가 자원을 많이 차지 한다면 사용도 하기 전에, 괜한 자원만 차지하게 된다. * 고전적인 싱글턴 패턴 구현법 아래 방식의 코드는 다중 스레드를 사용할 때 각 스.. 더보기
특정 이름을 가진 하위 폴더 삭제하는 cmd 명령어 예를 들어 다음과 같은 Path(D:/test/abcd/..)에 .svn 이라는 이름으로 된 폴더들(하위 파일 포함) 을 한 번에 제거하고 싶다면 cmd 창에서 아래와 같은 명령어를 사용하면 된다. FOR /F %I in ('DIR /S /B /A:D \test\abcd\*.svn') DO RD /S /Q %I 단, 주의할 점은 삭제 대상 폴더가 있는 드라이브 경로로 먼저 이동한 후 명령어를 실행해야 정상적으로 삭제된다. 그렇지 않으면 해당 디렉토리을 찾을 수 없다는 메시지만 출력한다. 더보기
마이바티스에서 동적 쿼리를 생성하기 사용되는 형식은 아래와 같다. * 조건식이 참인 경우에 이 곳에 기술된 내용을 조건절에 추가. test 속성 값으로 조건식이 기술되는데 OGNL 표현식도 가능하다. 사용자들은 일반적으로 알려지고 자주 사용되는 OGNL 표현식 외에 보다 실험적인 OGNL 표현식을 사용하지 않는 것 같다. 예를 들어 test="value != null" 정도인 것 같다. 하지만 눈을 조금만 돌리면 아래와 같은 표현식도 가능하다는 것을 알 수 있다. * 파라미터 값이 1, 2, 3 인 경우 이 곳에 기술된 내용을 조건절에 추가. 또한 '=' : gte '==' : eq '!=' : neq 더보기
마이바티스는 동적 쿼리문 생성에 사용되는 <if /> 구성 요소를 제공... 마이바티스는 동적 쿼리문 생성에 사용되는 구성 요소를 제공합니다. 구성 요소는 인자로 전달된 파라미터 값과 기준 값을 비교하여 참인 경우에 구성 요소 사이의 조건절을 추가합니다. 식(항식)은 test 속성에 정의됩니다. 식(항식)에는 OGNL 표현식을 사용할 수 있으며, 크게 기본 자료형 비교, 참조 자료형 비교, 그리고 문자열 비교에 사용됩니다. 사용되는 예를 살펴보면, 아래와 같습니다. 1. 기본 자료형 비교 1) 프로퍼티 속성 값과 기준 값이 동일한 경우. 2) 프로퍼티 속성 값과 기준 값이 동일하지 않는 경우. 3) 프로퍼티 속성 값이 기준 값 보다 큰 경우. 4) 프로퍼티 속성 값이 기준 값 보다 크거나 같은 경우. 5) 프로퍼티 속성 값이 기준 값 보다 작은 경우. (' 더보기
자바빈(javaBean) 의 값을 보다 쉽게 확인하는 util 1. 자바빈 생성 public class BoardBean { private String name; private String title; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } } 2. 확인 public class BeanTest { public static void main(String[] args) { BoardBean board = new BoardBean(); board.setName(.. 더보기
Java 날짜 연산 팁!! [ 날짜 연산법 ] @이해 및 유틸 - 시스템 시간에 대한 이해 - 날짜 계산 종합 유틸리티 @응용팁 - 시스템의 밀리초 구하기.(국제표준시각(UTC, GMT) 1970/1/1/0/0/0 으로부터 경과한 시각) // 밀리초 단위(*1000은 1초), 음수이면 이전 시각 long time = System.currentTimeMillis ( ); System.out.println ( time.toString ( ) ); @몇분 후의 시간 및 날짜 가져오기 Date now=new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss"); Calendar cal = Calendar.getInstance(); String today =.. 더보기
유용한 Oracle 스크립트 ------------------------------------------------------------------------------------- ※ ORACLE SID 확인 SELECT INSTANCE FROM V$THREAD; ------------------------------------------------------------------------------------- ※ ORACLE DB_NAME 확인 SELECT NAME FROM V$DATABASE; ------------------------------------------------------------------------------------- ※ ORACLE VERSION 확인 SELECT * FROM V$VERSION;.. 더보기
마이바티스와 아이바티스 설정 비교 1. DTD 규칙 정의 ◆ 설절 파일의 DTD @ ibatis @ mybatis ◆ 매퍼 XML의 DTD @ ibatis @ mybatis 2. 설정 파일 변환 규칙 ◆ 최상위 엘리먼트 @ ibatis @ mybatis ◆ settings 엘리먼트 @ ibatis @ mybatis ◆ transactionManager 엘리먼트와 dataSource 엘리먼트 @ ibatis @ mybatis ◆ mapper 설정 @ ibatis @ mybatis 3. 매퍼 XML 변환 규칙 ◆ XML 엘리먼트 @ ibatis @ mybatis ◆ 중첩 결과 매핑 설정 @ ibatis ..... @ mybatis ..... ◆ 파라미터 매핑 처리 구문 @ ibatis parameterMap @ mybatis paramete.. 더보기
[javaModel, sqlMap]Generator 및 table 엘리먼트에서 설정 가능한 프로퍼티 1. javaModelGenerator Properties Description constructorBased 클래스의 전체 필드를 가진 생성자를 만들지 설정한다. 이 프로퍼티를 사용하면 각 필드에 대해 setter 메소드보다는 생성자를 사용하게 처리한다. 단, 이 프로퍼티는 마이바티스를 위한 옵션으로 아이바티스에서는 무시한다. 선택할 수 있는 값은 true, false 두 가지 값 중 하나이며, [디폴트 값은 false이다.] enableSubPackages 대상 테이블의 스키마 이름을 하위 패키지로 사용할지에 대한 옵션이다. 예를 들어 테이블명이 mytable이고 스키마를 myschema로 가정하자. targetPackage 속성을 madnix로 설정하고 이 프로퍼티를 true로 설정하면 생성된 파일.. 더보기
SqlBuilder 의 중요 메소드 Method Description BEGIN() / RESET() 마이바티스 구문 빌더는 생성할 SQL을 스레드로컬에 저장한다. BEGIN() 메소드와 RESET() 메서드는 스레드로컬의 상태를 초기화하고 새로운 구문을 추가하기 위해 준비한다. BEGIN() 메소드는 새로운 구문을 추가할 때 호출하고 RESET() 메소드는 실행 중간에 구문을 초기화할 때 호출한다. SELECT(String) SELECT를 시작하거나 추가한다. 한 번 이상 호출할 수 있고 파리미터는 SELECT 뒤에 추가한다. 파라미터는 컬럼과 컬럼 별칭의 목록이고 SELECT 메소드를 호출할 때마다 쉼표를 자동으로 붙여준다. 컬럼이 5개라면 컬럼별로 호출해도 되고 컬럼 5개를 모두 명시해서 한 번만 호출해도 된다. SELECT_DIST.. 더보기
mapper 인터페이스에서 사용 가능한 annotation Annotation Location XML Element Description @CacheNamespace class 네임스페이스가 되는 인터페이스별로 Cache를 설정한다. 사용 가능한 속성은 implementation, eviction, flushInterval, size, 그리고 readWrite 등이 있다. @CacheNamespaceRef class 다른 네임스페이스의 캐시 설정을 그대로 사용하기 위해 사용할 캐시 설정이 담긴 네임스페이스를 지정한다. 사용 가능한 속성은 네임스페이스의 이름 적어주는 value 한 개다. @ConstructorArgs method 조회 결과를 자바 객체에 설정할 때 생성자를 사용해서 처리한다. 사용 가능한 속성은 @Arg 어노테이션의 배열을 갖는 value 이다... 더보기
주어진 문자열이 다수의 문자열 집합에 속하는지 검증하는 유틸성 클래스 public class DataUtil { public static boolean existInSet(String source, Object... elements) { boolean bExits = false; for (Object objElement : elements) { if (source != null && source.equals(objElement)) { bExits = true; break; } } return bExits; } public static String valueOf(Object obj) { return (obj == null) ? "" : obj.toString().trim(); } } 더보기
MAVEN 빌드 시 Goal 명령어 goal은 Maven의 생명주기와 관련있는 커맨드라인이다. 예로, build 생명주기는(다른 clean이나 site 생명주기도 있다) 다음 명령어와 같이 작성한다. • validate 프로텍트가 정상적인지 여부와 모든 필요정보가 접근가능 한지 여부를 체크한다. • compile 프로젝트의 소스코드를 컴파일한다. • test 유닛 테스팅 프레이임웍 등으로 컴파일된 소스코드를 테스트한다. 이런 테스트들은 패키징 되거나 배치되어 있는 상태가 아니어도 된다(packeged,deployed). • package 컴파일된 코드를 가지고 배포가능한 jar 같은 포맷으로 패키징한다. • integration-test 통합 테스트가 가능한 형태의 환경으로 패키지를 배치하고 이를 구동한다. • verify 질적인 면을 충.. 더보기
리눅스 시스템 설정과 자원 사용량 확인 명령어 CPU 정보 (uname) # uname -p ;i686은 펜티엄4를 의미 # uname --help 메모리 정보 (free) # free -m ;MB단위 # free -k ;KB단위 프로세스 정보 (ps, pstree) # ps auxw | grep httpd # pstree 프로세스별 CPU와 메모리 점유율 (top) # top ;시스템이 갑자기 느려졌을 경우 사용 - 주요 영역별 의미 PID : 프로세스 ID USER : 소유주 SIZE : 데이터 크기 (단위 KB) %CPU : CPU 점유율(%) %MEM : 멤리 점유율(%) - 종료 : q 마운트한 파일시스템의 정보 ( df) - 마운트한 파일시스템의 전체크기,사용한 공간, 여유공간 등의 정보 # df -u 디렉토리별 용량 (du) - 각 디렉.. 더보기
프로젝트 컴파일 중 Invoking Maven Project Builder 무한 컴파일 시 해결 방법 간혹 이클립스에서 Maven 프로젝트를 컴파일 하는 과정에서 Invoking Maven Project Builder 라는 메시지가 컴파일 프로그래스 바에 무한으로 사라졌다가 나타나는 반복 현상을 보게 된다. 이 경우 해결 방법을 StackOverflow에서 알려주었다. 이클립스를 종료한다.(종료 전 Build Automatically 체크 해제) 원인이 발생하는 프로젝트의 WorkSpace로 이동 프로젝트 명 하위 폴더에 .project 파일을 주목 해당 파일을 편집기로 오픈 아래와 같은 내용을 삭제한다. org.eclipse.m2e.core.maven2Builder 그리고 이클립스를 다시 시작한 후 컴파일하면 상기 현상이 발생하지 않는 것을 확인할 수 있다. 더보기
리눅스에서 지속적인 통합(CI) 툴 Jenkins 설치 요즘 내가 투입되어 있는 프로젝트에서 사용하는 Jenkins에 대해 알아보고자 한다. *. Jenkins를 뭐하는데 사용하는가? 여러가지 있지만, 여기에 작업으로 등록해두면 주기적으로 알아서 최신 소스 코드를 형상 관리 툴에게서 checkout하여 컴파일 하고, 단순히 컴파일 하는 것 뿐만이 아닌, 산출물에 라벨링을 하여 보관하고, 결과를 로그로 남겨둔다. 게다가 이 모든 작업을 웹 인터페이스로 제공하여 무척 쉽게 사용할 수 있다. 여러가지 상황에 대응할 수 있지만, 간단히 jenkins가 사용되는 예를 들어보면 누군가가 svn에 새로운 코드를 커밋하여 리비전을 업데이트 하였지만, 사실 여기에는 버그가 있다. 주기적으로 컴파일을 하는 Jenkins는 이를 컴파일 하고 실패했을 시 출력되는 에러 코드를 로.. 더보기