출처: http://auctionpro.co.kr/?p=125 ( 삭제 )

출처: http://gudle.net/457 (재설치 및 설정)


# rpm -qa | grep MySQL
If you want to install mysql-server from the repository (base, epel, …), you must uninstall the MySQL-server first by executing:

# yum remove MySQL-*
and then:

# yum install mysql mysql-server mysql-devel

Posted by halloRa
,

출처: http://kin.naver.com/qna/detail.nhn?d1id=1&dirId=10205&docId=112633793&qb=bXlzcWwgcGFyaW1heSBrZXksIGluZGV4&enc=utf8&section=kin&rank=1&search_sort=0&spq=0&pid=Rv8QGU5Y7vosssCXMIdssc--218580&sid=UD8f2iwLP1AAAGVVICk



기본과 보조를 떠나서 인덱스라는것은 무엇일까요. 말그대로 색인입니다. 무엇인가를 빠르게 찾기위한 수단으로 보면 되지요. 이걸 데이터베이스 아니 테이블에 적용해보면 테이블에 존재하는 특정레코드를 빠르게 찾기위한 수단이 되는 것입니다. 그럼 어떻게 인덱스를 잡아야 빠르게찾을까요? 그래서 나온게 Primary Key입니다. 동사무소 가셔서 이름 말씀하시면 못찾죠? 그럼 무엇으로 찾나요? 주민등록번호 입니다. 똑같습니다. 테이블에 존재하는 정보들간에 서로를 식별할수 있도록 만든 꼭 주민등록번호 같은 값이 Prmary Key입니다. 그래서 Primary Key를 유니크(Unique) Index Key 라고도 합니다. 이말은 바꿔 말하면 특정 컬럼 혹은 2개이상을 하나의 의미로 묶은 결합컬럼들에 Primary Key를 부여하게 되면 자동으로 Unique속성이 부여된다고 보면됩니다. 더부러 Null(알수없는값,Unkown Value)이면 안될테니 기본 속성에 Not Null이라는 개념이 적용됩니다. 이게 단순한 Primary Key에 개념입니다.

 

아하~ 그럼 빨리 찾겠군요 라고 말씀하시는 분들도 계실겁니다. 근데 문제점은 멀까요? 글쎄요~~~ 생각,고민 되시죠? 아까전에 동사무소 예로 들어볼까요? 한사람씩 찾을 땐 몇명이 오던 순서대로 찿으면 되니 굉장히 평할겁니다. 그럼 이렇게 바꿔보죠 동사무소 말고 시청으로 가보죠. 음,,요센 전자정부 시대라 좀 예가 그런가,, 그래도 예로 들어보죠 연람한 사람이 1000명정도라고 하죠 오늘 찾은 사람들 지역별로 명수가 어떻게 되는지 정리해서 보고해! 라고 위 상관이 부하직원에게 지시했다고 치죠. 아까하곤 틀리죠. 한사람의 인적정보는 연람목적이 요청한 보인에게만 해당되지만 지금 이경우는 그사람이 누군지 머하는지 본적이 어떻고 가족은 어떻게 이런거 다 필요없습니다. 쉽게 말해서 Primary Key로 Unique하게 찾은 정보는 아무 의미 없다는 얘기 겠지요. 1000명이니 다행이지 만약 10만명이라면 그 부하는 밤세도 힘들겁니다. 그런데 어떤 선배가 조언을 해주는 겁니다. 힘들지 앞으로 이런 일들이 많이 있을테니까 색인을 정리하되 지역별 연령별로 따로 색인을 준비해서 만들어놔. 그래서 그 부하는 몇일을 고생해서 멸도의 목록은 준비하고 정리해 놓았습니다.

그다음은 어떤 일이 발생했을까요. 지역별이면 색인목록 맨마지막 번호만 확인하면 바로 끝이겠죠?

 

바로 그럼 별도로 만든 색인 목록이 보조 인덱스입니다. 유니크 할필요도 없고 Not Null일필요도 없겠죠. 단순하게 업무에 맞게 필요시 필요한 목록을 만들면 됩니다. 무엇때문 Primary Key의 단점때문이겠지요? Unique하다는 단점. 더 많은 차이점이 있습니다. 이건 튜닝이나 데이터베이스 관리적인(DBA) 관점에서도 접근을해야하는데 지금 요청하는 내용과는 크게 상관이 없는듯합니다.

 

만약 보조 인덱스를 어떻게 활용하면 좋을까요? 라든가 사용시에 처리방식이라든지.. 테이블 관리시 방식등 좀더 실체적이고 구체적인 내용이라면 거의 정보처리 및 관리 수준의 논문이 될듯합니다. 저도 이것때문에 지금 노하우라는 집필 컬럼을 작성하고 있고요. DB에서 굉장히 중요한 부분이기 때문이죠.

 

Posted by halloRa
,

출처: http://laydios.egloos.com/1114374

Posted by halloRa
,

출처: http://blog.daum.net/joanney/3779779


1. field type들이 같아야 한다.


2. foreign key 설정할 field 역시 index가 생성되어 있어야 한다.

즉, A table의 a field와 B table의 b field 일 때 a가 b의 foreign key가 될 경우 모두 index가 생성되어야 한다.


3. 테이블은 꼭 innoDB로 생성되어 있어야 한다.

Posted by halloRa
,

출처: http://forum.falinux.com/zbxe/?_filter=search&mid=lecture_tip&search_target=title&search_keyword=window+builder&document_srl=567520 (window builder 설치)


출처: http://forum.falinux.com/zbxe/?_filter=search&mid=lecture_tip&search_target=title&search_keyword=window+builder&document_srl=567929 (기본 사용법)


출처: http://forum.falinux.com/zbxe/?_filter=search&mid=lecture_tip&search_target=title&search_keyword=window+builder&document_srl=568497 (기본 예제)

'프로그래밍 > JAVA' 카테고리의 다른 글

Choice ItemListener  (0) 2012.09.07
JTextArea에 글 넣기  (0) 2012.09.07
JFileChooser, window 열기 창, 저장 창, 파일 선택 창  (0) 2012.08.30
프레임 종료 코드  (0) 2012.08.30
파일 읽기  (0) 2012.08.30
Posted by halloRa
,

출처: http://blog.naver.com/PostView.nhn?blogId=cracker542&logNo=40119977325&categoryNo=7&viewDate=&currentPage=1&listtype=0

'프로그래밍 > JAVA' 카테고리의 다른 글

JTextArea에 글 넣기  (0) 2012.09.07
Window Builder  (0) 2012.08.30
프레임 종료 코드  (0) 2012.08.30
파일 읽기  (0) 2012.08.30
String.split()과 StringTokenizer의 차이  (0) 2012.08.30
Posted by halloRa
,

출처: http://blog.daum.net/badog/4458004



this.addWindowListener(new WindowAdapter(){
     public void windowClosing(WindowEvent e){
          System.exit(0);
     }
});


혹은 


setDefaultCloseOperation(EXIT_ON_CLOSE);

'프로그래밍 > JAVA' 카테고리의 다른 글

Window Builder  (0) 2012.08.30
JFileChooser, window 열기 창, 저장 창, 파일 선택 창  (0) 2012.08.30
파일 읽기  (0) 2012.08.30
String.split()과 StringTokenizer의 차이  (0) 2012.08.30
파일 쓰기  (0) 2012.08.30
Posted by halloRa
,

파일 읽기

프로그래밍/JAVA 2012. 8. 30. 10:12

출처: http://sugame.tistory.com/111


BufferedReader reader = new BufferedReader(new FileReader(fileName));

String line = null;

while((line = reader.readLine()) != null) {

...

}

Posted by halloRa
,

출처: http://www.okjsp.pe.kr/seq/32363



문자열을 구분자로 구분하여 잘라내는 4가지 방법들: http://sexy.pe.kr/tc/509



StringTokenizer 와 String.split() 

가끔씩 StringTokenzer를 사용해서 문자열을 분해 할 때 특정 요소의 값이 없을 경우 처리하는 것에 대한 질문을 받아서 문자열을 특정 구분자를 기준으로 분해 하는 것에 대해 정리를 해봤습니다.

jdk1.4.x를 기준으로 정리한 것입니다.

잘 못 된 부분이 있으면 지적 해주십시요.

---------------------------------------------------------------------------------------------

 특정 구분자(경계기호:Delimter)를 기준으로 문자열을 분해 할 때 흔히 사용하는 방법이 java.util.StringTokenizer를 이용해서 분해를 하거나 jdk1.4대에 새로 추가 된 java.lang.String.split(String regex)을 사용하는 방법입니다.

 

이들 둘은 "문자열에서 특정 구분자를 기준으로 문자열을 분해 한다"는 기본 기능은 같지만 그 결과는 "분해 할 문자열이 어떻게 구성이 되어 있느냐"에 따라서 서로 다른 결과값을 도출합니다.

 

예를 살펴보기 위해서 다음과 같은 가정을 하겠습니다.

  • 분해 할 문자열은 "아이디, 이름, 전자우편주소,휴대전화"로 구성 된다.
  • "아이디, 이름" 이외의 항목은 있을 수도 있고 그렇지 않을 수도 있다.
  • 각 항목을 구분하는 구분자는 ","로 한다.

1. 먼저 각 항목이 모두 존재 하는 경우를 살펴 보겠습니다. 이 경우라면 다음과 같은 형태가 될 것입니다.

  • neoburi,inkuk,neoburi@neoburi.com,019-366-5815

    이 경우는 다음과 같이 분해를 할 수 있을 것입니다.

    String str = "neoburi,inkuk,neoburi@neoburi.com,019-366-5815";

    String[] values = str.split(",");

    또는,

    StringTokenizer values = new StringTokenizer( str, "," );

    이 때에는 String.split(String regex)이나 StringTokenizer의 결과 값은 같게 나옵니다.

 

    그런데 문제는 이렇게 모든 항목이 존재하지 않는 경우가 있을 때입니다.

 

2. 일부 항목만으로 문자열이 구성 된 경우를 살펴 보겠습니다.

 

    예를 든다면 다음과 같은 값을 가질 때겠지요.

  • "아이디,이름,,전화번호" 일 경우
  • "아이디,이름,전자우편," 일 경우
  • 또는 "아이디,이름,," 일 경우

    1) "아이디,이름,,전화번호" 일 경우를 살펴 보겠습니다.

    문자열은 다음과 같이 구성이 될 것입니다.

     

    String str = "neoburi,inkuk,,019-366-5815";

     

    • String[] values = str.split(",");을 사용 할 경우 해보면 결과는 아래와 같습니다.

      for( int x = 0; x < values.length; x++ ){

          System.out.println( "문자(열) " + (x+1) + " : " + values[x] );

      }

       

      결과 :

        문자(열) 1 : neoburi

        문자(열) 2 : inkuk

        문자(열) 3 :

        문자(열) 4 : 019-366-5815

         

    • StringTokenizer tokens = new StringTokenizer( str, "," );를 사용 할 경우

      for( int x = 1; tokens.hasMoreElements(); x++ ){

          System.out.println( "문자(열) " + x + " : " + tokens.nextToken() );

      }

       

      결과 :

        문자(열) 1 : neoburi

        문자(열) 2 : inkuk

        문자(열) 3 : 019-366-5815

         

    결과와 같이 split(String regex)을 이용한 경우에는 비록 값이 존재하지 않더라고 해당 데이터가 없다는 것을 확실하게 판단을 할 수 있습니다. 즉 구분자를 기준으로 데이터가 없는 부분도 그 결과를 반환해준다는 얘기지요.

     

    그렇지만 StringTokenizer는 비록 구분자로 문자열간 구분이 되어 있더라도 구분자와 구분자 사이에 데이터가 존재하지 않으면 (",,"의 경우) 해당 데이터는 무시를 하고 실제 값이 존재하는 부분만 값을 반환합니다.

     

    두 결과 사이에는 많은 차이가 남을 볼 수 있습니다.

    2) "아이디,이름,전자우편," 일 경우

    이 역시 문자열은 다음과 같이 구성이 될 것입니다.

     

    String str = "neoburi,inkuk,neoburi@neoburi.com,";

     

    • String[] values = str.split(",");

      for( int x = 0; x < values.length; x++ ){

          System.out.println( "문자(열) " + (x+1) + " : " + values[x] );

      }

       

      결과 :

        문자(열) 1 : neoburi

        문자(열) 2 : inkuk

    • StringTokenizer tokens = new StringTokenizer( str, "," );

      for( int x = 1; tokens.hasMoreElements(); x++ ){

          System.out.println( "문자(열) " + x + " : " + tokens.nextToken() );

      }

      결과 :

        문자(열) 1 : neoburi

        문자(열) 2 : inkuk

    위에서 보는 바와 같이 분해하고자 하는 문자열의 마지막 요소가 존재하지 않을 경우 String.split(String regex)과 StringTokenizer는 같은 결과를 보여줍니다.

     

    두 결과사이에는 차이가 없음에도 불구하고 잃어 버리는 데이터가 생겼습니다. 개발자는 분명히 사용자의 정보로부터 4개의 항목을 얻어 표현을 하고 싶지만 그렇게 할 수가 없습니다. 물론 어거지로 한다면 가능은 하겠지만요.^^

     

    그러면 String.split(String regex)과 StringTokenizer를 사용 하더라고 분해하고자 하는 마지막 항목이 없을 경우는 분해 할 방법이 없을까요? 그렇지 않습니다.

     

    API를 어느정도 보신 분들이라면 아마 "그것은 이렇게 하면 되지!"라고 속으로 생각 하실 겁니다.

     

    java.lang.String클래스에는 split()메소드가 2개가 있습니다.

    • 하나는 split( String regex )이고
    • 다는 하나는 split( String regex, int limit )입니다.

String.split( String regex, int limit )를 사용해서 분해를 해보겠습니다.

    • String[] values = str.split(",", 4);

      for( int x = 0; x < values.length; x++ ){

          System.out.println( "문자(열) " + (x+1) + " : " + values[x] );

      }

       

      결과 :

        문자(열) 1 : neoburi

        문자(열) 2 : inkuk

        문자(열) 4 :

         

    비록 마지막 분해 요소의 값이 존재하지 않더라고 split( String regex, int limit )를 이용하면 고스란히 원하는 형태의 데이터를 얻는 것을 볼 수 있습니다.

  StringTokenizer의 경우는 구분자 사이에 분해할 요소의 값이 존재하지 않으면 무시하게 되어 있습니다. 완전하게 모든 요소의 값이 존재하는 경우라면 사용을 해도 되겠지만 예에서 본 바와 같이 가변적인 데이터라면 사용하기 불편한(?) 것이 사실입니다.

 

  String.split()의 경우 limit를 저정 하지 않았을 경우에는 제일 마지막에 오는 요소의 값이 없을 경우 그 요소를 무시하도록 되어 있습니다. 이 역시 데이터가 정형화 되어 있는 경우라면 사용해도 무리 없겠지만 가변요소가 존재 한다면 StringTokenizer와 크게 다를 게 없습니다.

 

  대신 limit를 지정 했을 경우 해당 숫자만큼만 분해를 합니다. limit는 분해를 한 후 얻고자 하는 String[]의 요소크기라고 보시면 됩니다.

limit가 분해하고자 하는 요소의 개수와 같거나 클 경우 요소의 개수만큼의 String[]을 되돌려 주지만, 요소의 개수보다 작을 경우 지정한 숫자만큼의 String[]으로 되돌려 줍니다.

 

  좀 더 자세히 알고 싶으신 분들은 자바 원천 소스에서 java.lang.String과 java.util.StringTokenizer를 살펴보시기 바랍니다.

 

----------------

'프로그래밍 > JAVA' 카테고리의 다른 글

JFileChooser, window 열기 창, 저장 창, 파일 선택 창  (0) 2012.08.30
프레임 종료 코드  (0) 2012.08.30
파일 읽기  (0) 2012.08.30
파일 쓰기  (0) 2012.08.30
이클립스 설치 및 PATH 설정  (0) 2012.08.28
Posted by halloRa
,

파일 쓰기

프로그래밍/JAVA 2012. 8. 30. 10:07

출처: http://wingh.egloos.com/4798604


BufferedWriter out = new BufferedWriter(new FileWriter(fileName));

out.write(blahblah); out.newLine();

Posted by halloRa
,