1.     SVN 서버 설치

공용 서버에 올릴 공간을 만드는 작업

Visual SVN server 설치

http://www.visualsvn.com/server/download/

계정을 생성하고 폴더나 기타 작업이 필요한 설정을 해준다.

 

2.     Eclipse 설정

메뉴 [ help – Eclipse Marketplace ]

SVN 을 다운받는다.

 

 

 

 

 

 

3.     SVN 기타 인스톨 및 연동

[ Help - Install new Softwaer ]

SVN 관련 subclipse & SVN 의 데이터를 인스톨 한다.

Name : Suversive SVN

Location 이클립스 버전에 맞는 주소를 기입

EX) kapler  ver :

http://community.polarion.com/projects/subversive/download/eclipse/3.0/kepler-site/

[ File – new – Other – SVN – repository location ]

SVN 서버 연결 설정

 

 

URL : SVN 서버에 접근할 있는 주소

User, password를 기입해 접근한다.

           [ windows  -  show view – other – SVN – SVN Repositories ] 클릭

           하단에 SVN Repositories 창이 보이는 것을 확인한다.

 

4.     프로젝트 연동

왼쪽 프로젝트 창에서 연동하고 싶은 프로젝트 우 클릭 후 팝업 메뉴의 [Team – share Porject ] 클릭

 

 

다음에 나오는 창에서 SVN을 선택하면 자신이 연결한 SVN서버 목록이 나타난다.

올리고 싶은 서버를 선택해 공유 하면 완료.

그럼 왼쪽 프로젝트 모양이 SVN의 연통 모양으로 변경됩니다.

5.     Commit

프로젝트를 공유해 하다 자신의 작업을 진행한 뒤 SVN 올리는 작업의 내용입니다.

연동만 했다고 자료가 SVN 저장소에 올라가지는 않습니다.

프로젝트 우 클릭 후 팝업 메뉴의 [ Team ] 메뉴를 보시면 아까와 다르게 여러 메뉴들이 있습니다.

 

 

 

 

 

자신이 작업한 내용을 완료 후 프로젝트 단위나 각 소스나 리소스 단위로 commit 이 가능합니다.

 

6.     Check Out

연동된 프로젝트를 SVN 에서 내려 받을 수 있습니다.

하단의 SVN Repositories 에서 내려 받을 프로젝트를 선택 후 마우스 우 클릭

Check out 메뉴를 선택하면 local로 프로젝트를 내려 받을 수 있습니다.

 

 

7.     Disconnect

연동과 마찬가지로 연동된 프로젝트 우 클릭 후 [ Disconnect ] 클릭하면 연동이 해제 되어 로컬 상태로만 유지됩니다.

PS. 삭제 Delete ….

 

8.     Update

업데이트는 말 그대로 변경된 사항을 내려 받는 내용입니다.

좌측 프로젝트에 update 할 프로젝트 우 클릭 [Team – Update to Revision ]

 

 

 

아마 버전을 확인해서 현재 버전보다 최신 버전이면 받을 수 있는 메뉴 같습니다.

PS.  프로젝트를 올릴 때는 Commit.

   처음 프로젝트를 받을 때는 Check out.

   변경된 내용을 받을 때는 Update.

이것만 꼭 기억하세요!!

 

'::::특별한 Java Story' 카테고리의 다른 글

Comparator 와 Comparable  (0) 2013.07.07
Stack 과 Queue  (0) 2013.06.27
ArrayList / Vector / LinkedList  (0) 2013.06.26
배열(Array) 연습문제  (0) 2013.06.24
JSP_세팅  (0) 2013.06.20
Posted by 옆모습오빠
:

// P.492 Comparator 와 Comparable
// 인터페이스로 객체들을 정렬 또는 이진검색트리를 구성하는데 필요한 메서드를 정의한다.

//Comparable - 기본 정렬기준 (오름차순)
//Comparator - 정렬의 방식을 바꿀때 사용

 

package ch11;

import java.util.*;

public class ComparatoeEx1
{

 public static void main(String[] args)
 {

  TreeSet set1 = new TreeSet();        //트리셋 생성
  TreeSet set2 = new TreeSet(new Descending());
  
  int[] score = {30,50,10,20,40};
  
  for(int i=0;i<score.length;i++)
  {
   set1.add(new Integer(score[i]));   
   //기본적으로 TreeSet은 comparable에 의해서 오름차순으로 정렬 되어있다.
   set2.add(new Integer(score[i]));
  }
  
  System.out.println("set1 : "+set1);
  System.out.println("set2 : "+set2);
  
 }

}


// 내림 차순 클래스...생성 (Comparator 인터페이스 요소 포함)
class Descending implements Comparator
{
 
 public int compare(Object o1,Object o2)     //인자값 2개 compare 메서드 나중에 int 형으로 반환
 {
  if(o1 instanceof Comparable && o2 instanceof Comparable) //
  {
   Comparable c1 = (Comparable)o1;
   Comparable c2 = (Comparable)o2;  //Object 타입이므로 형변환을 먼저해야함!
   
   return c1.compareTo(c2) * -1;
   //여기서 compareTo 는 equals 와 같다..다만 리턴값을 int 형으로 반환하는거 빼고는..
  }
  return -1;
  // o1과 o2 형변환 가능한지.. 각각 내림차순으로 형변환 시킨후..  같다면 -1를 곱한다.
  //같으면 0이고, 크면 -1, 작으면 1을 반환하는데.. 정렬방식을 역으로 하기 위해서 -1을 곱한다.
 }
}

 

'::::특별한 Java Story' 카테고리의 다른 글

SVN Eclipse 연동 방법  (0) 2014.03.25
Stack 과 Queue  (0) 2013.06.27
ArrayList / Vector / LinkedList  (0) 2013.06.26
배열(Array) 연습문제  (0) 2013.06.24
JSP_세팅  (0) 2013.06.20
Posted by 옆모습오빠
:

package ch11;

import java.util.*;

public class StackQueueEx {

 public static void main(String[] args) {

  Stack st = new Stack();
  
  Queue q = new LinkedList();
  
  st.push("0");
  st.push("1");
  st.push("2");
  
  q.offer("0");
  q.offer("1");
  q.offer("2");
  
  System.out.println("=Stack=");
  
  while(!st.empty()){                   //스택 공간이 비워있지 않다면!
   System.out.println(st.pop());    //꺼내랏!
  }
  
  System.out.println();
  
  System.out.println("=Queue=");
  
  while(!q.isEmpty()){
   System.out.println(q.poll());
  }
 }

}

/*Stack 메서드
 * 1.empty() : 비워있는지
 * 2.peek() : 저장된 객체를 반환..꺼내지는 않는다. 비워있을때는 null 을 반환한다.
 * 3.pop() : 맨위에 저장된 객체를 꺼낸다.
 * 4.push(Object item) : item(객체)를 저장한다.
 * 5.search(Object o) : o(객체)를 찾아서 위치를 반환한다..배열과 달리 1부터 시작함.
 *
 *
 * Queue 메서드
 * 1.element() : 삭제없이 저장된 요소를 읽어온다. 비워 있을때는 Exception 을 발생시킴
 * 2.offer(Object o) : o(객체)를 저장한다.
 * 3.peek() : 삭제없이 읽어온다. 비워 있을때는 null 을 반환한다.
 * 4.poll() : 꺼내온다. 비워 있으면 null 을 반환
 * 5.remove() : 꺼내온다. 비워 있으면 Exception 발생~
 *
 *
 */

 

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

 

package ch11;

import java.util.*;

public class MyStack extends Vector{

 public Object push(Object item){    //item 객체 저장 메서드
  
  addElement(item);
  return item;
 }
 
 public Object pop(){   // 맨 위에 저장된 객체 꺼내오기 메서드
  
  Object obj = peek();     // 맨위에 저장된 객체를 반환한다. 비워있을때는 Exception 발생
  removeElementAt(size()-1); //마지막 요소 삭제. (배열 0부터니깐 1을 빼줌)
  return obj;
 }
 
 public Object peek(){
  
  int len = size();
  
  if(len==0)
   throw new EmptyStackException();
  
  return elementAt(len-1);
 }
 
 public boolean empty(){
  
  return size()==0;
 }
 
 public int search(Object o){  // o객체를 찾아와 위치를 반환
  
  int i = lastIndexOf(o);   // o 객체를 끝에서 부터 찾는다.
  
  if(i>=0){                     // 객체를 찾은 경우
   return size()-i;        //위치를 반환한다.
  }
  return -1;                    //못찾은 경우 -1을 반환한다.
 }
}

 

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

 

package ch11;

import java.util.*;

public class StackEx1 {

 public static Stack back = new Stack();
 public static Stack forword = new Stack();
 
 public static void main(String[] args) {

  goURL("1.네이트");
  goURL("2.야후");
  goURL("3.네이버");
  goURL("4.다음");
  
  printStatus();
  
  ///////////////////////////////////////////////////////
  
  goBack();
  System.out.println("=뒤로 가기 버튼을 누른 후=");
  printStatus();
  
  //////////////////////////////////////////////////////
  
  goBack();
  System.out.println("='뒤로' 버튼을 누른 후=");
  printStatus();
  
  //////////////////////////////////////////////////////
  
  goForword();
  System.out.println("='앞으로' 버튼을 누른 후=");
  printStatus();
  
  //////////////////////////////////////////////////////
  
  goURL("javachobo.com");
  System.out.println("=새로운 주소로 이동 후=");
  printStatus();
  
 }
 
 
 public static void printStatus()           //출력 메서드
 {
  System.out.println("back :"+back);    
  System.out.println("forword :"+forword);
  System.out.println("현재화면은'"+back.peek()+"'입니다.");  //back 에 맨위에 객체를 하나씩 반환
  System.out.println();
 }
 
 public static void goURL(String url)         //url 매개변수를 갖는 goURL 메서드
 {
  back.push(url);               // back 객체를 저장 (url 주소)
  if(!forword.empty())      //  forword 객체가 비워있지 않다면
   forword.clear();         //  forword 객체를 비워라~
 }
 
 public static void goForword()
 {
  if(!forword.empty())              // forword 객체가 비워있지 않다면
   back.push(forword.pop());  
  //back 객체를 저장 <-- push // forword 객체를 꺼낸다.<--pop() 메서드 
 }
 
 public static void goBack()
 {
  if(!back.empty())                      // forword 객체가 비워있지 않다면
   forword.push(back.pop());    
  // forword 객체를 저장 <-- push /// 뒤에 있는 저장된 객체를 꺼낸다.<--pop()
 }

}

 

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

 

package ch11;

import java.util.*;
public class ExpValidCheck {

 public static void main(String[] args) {

  if(args.length!=1){       // 배열 args 변수값이 1이 아니면
   
   System.out.println("Usage : JAva ExpValidCheck\"EXPRESSION\"");
   System.out.println("Example : java ExpValidCheck\"((2+3)*1)+3\"");
   System.exit(0);
  }
  
  Stack st = new Stack();  //스택 인스턴스 생성
     String expression = args[0];   // args[0] 그러니깐 배열1개의 값을 갖는 args~
  
  System.out.println("expression :"+expression); //args[0] 출력하면 args[0] = 1개의 공간을 가지고 있는 배열 그길이도 1
                                                                          //그리하여 위에 내용이 그대로 출력
  
  try {
   for(int i =0;i<expression.length();i++){
    char ch = expression.charAt(i);   // expression 의 i번째 를 문자열로 반환 하여 ch 에 넣겠다
    
    if(ch=='('){
     st.push(ch+"");    // 스택에 저장한다. 
    }else if(ch==')'){
     st.pop();             // 스택에서 꺼내라
    }
   }
   
   //여기 for 문까지 일련의 괄호 열고 닫고가 전부 진행하여 스택이 비워있어야 정상이다. 
   
   if(st.isEmpty()){               //스택이 비워있는지 확인하여 맞으면
    System.out.println("괄호가 일치합니다.");
   }else {
    System.out.println("괄호가 일치하지 않습니다.");
   }
   
  } catch (Exception e) {
   System.out.println("괄호가 일치하지 않습니다.");
  }
 }

}

//이번 구문은 중간에 for 문에서 사용된 스택 메서드의 활용성이다.

 

 

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

 

 

 

package ch11;

import java.util.*;

public class QueueEx2 {

 static Queue q = new LinkedList();    // q 리스트배열로 설정하고,
 static final int MAX_size=5;              // 크기를 5로 잡아서 static 영역에 올린다.
 
 
 public static void main(String[] args) {

  System.out.println("help 를 입력하면 도움말을 볼 수 있습니다.");
  
  while(true){
   
   System.out.println(">>");
   
   try {
    Scanner sc = new Scanner(System.in);
    String input = sc.nextLine().trim();
    
    if("".equals(input)) continue;
    
    if(input.equalsIgnoreCase("q")){
     System.exit(0);
    }else if(input.equalsIgnoreCase("help")){
     System.out.println("help-도움말을 보여줍니다.");
        System.out.println("q 또는 Q - 프로그램을 종료합니다.");
        System.out.println("history - 최근에 입력한 명령어를"+MAX_size+"개 보여줍니다.");
    }else if(input.equalsIgnoreCase("history")){
     int i =0;
     
     save(input);
     
     LinkedList tmp = (LinkedList)q;
     ListIterator it = tmp.listIterator();
     
     while(it.hasNext()){
      System.out.println(++i+"."+it.next());
     }
    }else {
     save(input);
     System.out.println(input);
    }
    
   } catch (Exception e) {
    System.out.println("입력오류입니다.");
   }
  }
 }
 
 public static void save(String input){
  
  if(!"".equals(input))
   q.offer(input);
  
  if(((LinkedList)q).size()>MAX_size)
   q.remove();
 }

}

'::::특별한 Java Story' 카테고리의 다른 글

SVN Eclipse 연동 방법  (0) 2014.03.25
Comparator 와 Comparable  (0) 2013.07.07
ArrayList / Vector / LinkedList  (0) 2013.06.26
배열(Array) 연습문제  (0) 2013.06.24
JSP_세팅  (0) 2013.06.20
Posted by 옆모습오빠
:

package ch11;

import java.util.ArrayList;
import java.util.Collections;

public class ArrayListEx1 {

 public static void main(String[] args) {

  ArrayList list1 = new ArrayList(10);
  
  list1.add(new Integer(5));
  list1.add(new Integer(4));
  list1.add(new Integer(2));
  list1.add(new Integer(0));
  list1.add(new Integer(1));
  list1.add(new Integer(3));
  
  ArrayList list2 = new  ArrayList(list1.subList(1,4));   // subList 메서드 (from, to)
                     //1번배열부터 ~ 4번배열까지 짤라오는데 4번 배열은 포함하지 않음..-ㅁ-; 장난?
  print1(list1);
  print2(list2);
  
  Collections.sort(list1);
  Collections.sort(list2);
  
  print1(list1);
  print2(list2);
  
  System.out.println("list1.containsAll(list2) : "+list1.containsAll(list2));
  // list1 에 list2 가 포함되어 있느냥?!
  
  //----------------------------------------------------------------------------
  
  list2.add("B");
  list2.add("C");
  list2.add(3,"A");   //지정된 위치에 object 를 저장한다. list2배열 3번째에 "A"를 넣어라 이거쥐~
  
  print2(list2);
  
  list2.set(3, "AA");   //지정된 위치에 object 로 바꿔라~ "AA"로 바뀐걸 볼 수 있당!
   
  print1(list1);
  print2(list2); 
  
  System.out.println("list1.retainAll(list2) : "+ list1.retainAll(list2));
  // list1에서 list2와 겹치는 부분만 남기고 모두 삭제해라~!
  
  //아래 결과로 확인해보자!!
  print1(list1);   //공통된것만 남기고 모두 삭제됐다.ㅋ
  print2(list2);
  
  
  for (int i = list2.size()-1; i >= 0; i--)
  {
   if(list1.contains(list2.get(i)))   //만약 list2 에 list1 값이 포함되어있다면
   list2.remove(i);                       //list2 에 그 값을 제거해라~
  }
  
  print1(list1);
  print2(list2);
  
  
 }

 private static void print2(ArrayList list2) {

  System.out.println("list2 : "+list2);
 }

 private static void print1(ArrayList list1) {
  
  System.out.println("list1 : "+list1);
 }

}

 

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

 

 

 

package ch11;

import java.util.ArrayList;
import java.util.List;

public class ArrayListEx2 {

 public static void main(String[] args) {

  final int LIMIT = 10;
  String source = "0123456789abcdefghijABCDEFGHIJ!@#$%^&*()ZZZ"; 
  int length = source.length();   //String source 의 길이~~  43
  
  List list = new ArrayList(length/LIMIT + 10);   //  14.3 의 공간 생성
  
  for(int i =0;i<length;i+=LIMIT)        //10씩 증가
  {
   if(i+LIMIT<length)           //10 - 20 - 30 - 40
    list.add(source.substring(i, i+LIMIT));      //substring --> i 번째[0]부터 (i+LIMIT)-1 번째까지 반환
   else
    list.add(source.substring(i));
  }
  
  for(int i =0;i<list.size();i++)   //위 결과값을 담은 list 를 1씩 증가한 값을 출력해랑~! OK!
  {
   System.out.println(list.get(i));
  }
 }

}

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

 

package ch11;

import java.util.Arrays;

public class CopyTest {

 public static void main(String[] args) {

  int[] data = {0,1,2,3,4};    //1차원 배열 생성
  int[] sCopy = null;
  int[] dCopy = null;
  
  sCopy = shallowCopy(data);
  dCopy = deepCopy(data);
  
  System.out.println("Original : "+Arrays.toString(data));
  System.out.println("shallow : "+Arrays.toString(sCopy));
  System.out.println("deep : "+Arrays.toString(dCopy));
  System.out.println();
  
  data[0] = 5;  //데이터 배열[0] 에 5를 넣었다.
  System.out.println("Original : "+Arrays.toString(data));
  System.out.println("shallow : "+Arrays.toString(sCopy));
  System.out.println("deep : "+Arrays.toString(dCopy));  
  //맨마지막 결과값에서 data[0] = 5 를 받지 못했다.. 이유는 아래 deepCopy 메서드 때문~ 함보자
 }

 private static int[] deepCopy(int[] data) {

  if(data==null)                   //
   return null;
  
  int[] result = new int[data.length];
  
     System.arraycopy(data, 0, result, 0, data.length);
  
  return result;
 }

 private static int[] shallowCopy(int[] data) {
  
  return data;
 }

}

 

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

 

package ch11;

import java.util.Vector;

public class VectorEx1 {

 public static void main(String[] args) {

  Vector v = new Vector(5);
  
  v.add("1");
  v.add("2");
  v.add("3");
  
  print(v);
  
  //메서드 총출동!!
  
  v.trimToSize();  //빈공간을 없앤다...그러면 vector size는 3이 되겠네~
  System.out.println("*자르기 한후 : trimToSize()");
  print(v);
  
  v.ensureCapacity(6); 
  //최소한의 용량이 6으로 새로운 인스턴스를 생성..이상이면 결과없음.. 현재는 3이므로 복사개념!
  System.out.println("**최소 용량 제한 생성 : ensureCapacity()");
  print(v);
  
  v.setSize(7);
  //size 자체를 7로 늘리는거임~ 이것도 새로운 인스턴스 생성인데..용량은 2배가 되는 효과가 있당!
  System.out.println("*** 사이즈 변경 : setSize()");
  print(v);
  
  v.clear(); // vector 의 모든 요소를 삭제한다.
  System.out.println("*** 요소를 모두 삭제 : clear()");
  print(v);
 }

 private static void print(Vector v) {

  System.out.println(v);
  
  System.out.println("size : "+v.size());
  
  System.out.println("capacity : "+v.capacity());
  
 
 }

}

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

 

package ch11;

import java.util.*;


public class ArrayListLinkedListTest {

 public static void main(String[] args)
 {

  ArrayList al = new ArrayList(1000000);  //가변배열크기 1000000 설정
  LinkedList ll = new LinkedList();
  
  System.out.println("=순차적으로 추가하기=");
  
     System.out.println("ArrayList :"+add1(al));
     System.out.println("LinkedList :"+add1(ll));
    
     System.out.println();
    
     System.out.println("=중간에 추가하기=");
    
     System.out.println("ArrayList :"+add2(al));
     System.out.println("LinkedList :"+add2(ll));
    
     System.out.println();
    
     System.out.println("=중간에서 삭제하기=");
    
     System.out.println("ArrayList :"+remove1(al));
     System.out.println("LinkedList :"+remove1(ll));
    
     System.out.println();
    
     System.out.println("=순차적으로 삭제하기=");
    
     System.out.println("ArrayList :"+remove2(al));
     System.out.println("LinkedList :"+remove2(ll));
 }

 public static long add1(List list)
 {
     long start = System.currentTimeMillis();  //시작 : 현재시간을1/1000초
     for (int i = 0; i < 100000; i++) list.add(i+"");   //순차적으로 추가하기!
     long end = System.currentTimeMillis();   // 끝 : 현재 시간을 1/1000초
       
  return end - start;
 }
 
 public static long add2(List list)
 {
  long start = System.currentTimeMillis();
  for (int i = 0; i < 100000; i++) list.add(500,"X");   //500번째에 "X"를 추가하기
  long end = System.currentTimeMillis();
  
  return end - start;
 }
 
 public static long remove1(List list)
 {
  long start = System.currentTimeMillis();
  for (int i = list.size()-1; i > 0; i--) list.remove(i); //중간에서 삭제하기
  long end = System.currentTimeMillis();
  
  return end - start;
 }
 
 public static long remove2(List list)
 {
  long start = System.currentTimeMillis();
  for (int i = 0; i < 1000; i++) list.remove(i);  //순차적으로 삭제하기
  long end = System.currentTimeMillis();
  
  return end - start;
 }

}

 

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

 

package ch11;

import java.util.*;

public class ArrayListLinkedListTest2 {

 public static void main(String[] args) {

  ArrayList al = new ArrayList(1000000);
  LinkedList ll = new LinkedList();
  
  add(al);
  add(ll);
  
  System.out.println("==접근시간테스트==");
  System.out.println("ArrayList :"+access(al));  
  // 이미 정해져 있기 때문에 n번째*데이터타입크기 로 한번에 접근이 가능하지만, 
  System.out.println("LinkedList :"+access(ll));
  // LinkedList 같은 경우는 불연속적으로 처음부터 데이터가 연결된 것이기 때문에 순차적으로
  //읽어서 접근하기 때문에 접근 시간이 길다~
 }
 
 public static void add(List list)
 {
  for (int i = 0; i < 100000; i++) list.add(i+"");
 }
 
 public static long access(List list)
 {
  long start = System.currentTimeMillis();
  for (int i = 0; i < 10000; i++) list.get(i);
     long end = System.currentTimeMillis();
    
     return end - start;
 }

}

 

'::::특별한 Java Story' 카테고리의 다른 글

Comparator 와 Comparable  (0) 2013.07.07
Stack 과 Queue  (0) 2013.06.27
배열(Array) 연습문제  (0) 2013.06.24
JSP_세팅  (0) 2013.06.20
배열(Array)  (0) 2013.06.20
Posted by 옆모습오빠
:

package Exercise5;

public class Exercise5_3 {

 public static void main(String[] args) {

  int[] arr = {10,20,30,40,50};
  
  int sum = 0;
  
  for (int i = 0; i < arr.length; i++) {
   sum = sum+arr[i];
  }
  System.out.println("sum : "+sum);
 }
}

 

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

 

 

package Exercise5;

public class Exercise5_4 {

 public static void main(String[] args) {

  int[][] arr = {{5,5,5,5,5},{10,10,10,10,10},{20,20,20,20,20},{30,30,30,30,30}};
  
  int total = 0;
  float average = 0;
  
  for (int i = 0; i < arr.length; i++) {
   for (int j = 0; j < arr[i].length; j++) {
    total += arr[i][j];
   }
  }
  average =(float) total/(arr.length*5);
  System.out.println("total="+total);
  System.out.println("average="+average);
 }

}

 

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

 

 

package Exercise5;

public class Exercise5_5 {

 public static void main(String[] args) {

  int[] ballArr = {1,2,3,4,5,6,7,8,9};
  int[] ball3 = new int[3];
  
  for (int x = 0; x < 20; x++) {    //20번 돌려준다.
   int i = (int)(Math.random() * ballArr.length);  //9개중에서 한개를 뽑는다.
   int j = (int)(Math.random() * ballArr.length);  //9개중에서 한개를 뽑는다.
   
   int temp = 0;    //  임시저장공간을 하나 만든다.
 
    temp = ballArr[i];
    ballArr[i] = ballArr[j];
    ballArr[j] = temp;           //치환한다.
  }
  System.arraycopy(ballArr, 0, ball3, 0, 3);   //치환된 값을 ball3 에 복사한다.
  
  for (int i = 0; i < ball3.length; i++) {
   System.out.print(ball3[i]);        //값을 출력한다.
  }
 }
}

 

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

 

 

package Exercise5;

public class Exercise5_6 {

 public static void main(String[] args) {

  //큰 금액의 동전을 우선적으로 거슬러 줘야한데..
  int[] coinUnit = {500,100,50,10};
  
  int money = 2680;
  System.out.println("money="+money);
  
  /*for (int i = 0; i < coinUnit.length; i++) {
   int n = money/coinUnit[i];
  }*/  //의미 없는 구문이었음.ㅋ;;
  
  for (int i = 0; i < coinUnit.length; i++) {
   
   System.out.println(coinUnit[i]+"원 : "+money/coinUnit[i]);
   
   money = money%coinUnit[i];     //money 값은 위에 계산된 값은 coinUnit[i] 값으로
  }                                          //계속 나눈 나머지 값이 된다. 이 구문은 두루두루 사용될것이다.!
 }

}

 

 

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

 

package Exercise5;

public class Exercise5_8 {

 public static void main(String[] args) {

  int[] answer = {1,4,4,3,1,4,4,2,1,3,2};      //0~11      (크기가 12인 배열)     
  int[] counter = new int[4];                          //0,1,2,3  (크기가 4인 배열)
  
  for (int i = 0; i < answer.length; i++) {
   counter[answer[i]-1]++;     //안타깝게도 answer 배열은 0이 없다..그래서 counter 배열 0과 맞추어
  }                                       //줘야 하기때문에 answer 배열에서 1을 뺀그다~~ 방이 0,1,2,3 이렇게 있으니
  
  for (int i = 0; i < counter.length; i++) {
   System.out.print(counter[i]);
   
   for (int j = 0; j < counter[i]; j++) {
    System.out.print("*");            //바로 위에 연결하여 counter[i] 값을 구한만큼 별을 찍어라!
   }
   System.out.println();   //썅~! 줄바꿈도 중요하군..ㅋㅋ
  }
 }
}

 

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

 

 

package Exercise5;

public class Exercise5_9 {

 public static void main(String[] args)
 {

  char[][] star = {{'*','*',' ',' ',' '},{'*','*',' ',' ',' '},{'*','*','*','*','*'},{'*','*','*','*','*'}};
  char[][] result = new char[star[0].length][star.length];
                                                // 5?                  //4?
  
  for (int i = 0; i < star.length; i++)     //4행
  {
   for (int j = 0; j < star[i].length; j++)   //5열
   {   
    System.out.print(star[i][j]);
   }
   System.out.println();
   }
  
  System.out.println();
  
  for (int i = 0; i < star.length; i++)      //4행
  {
   for (int j = 0; j < star[i].length; j++)    //5열
   {
    int a = j;                               // a 는 5열
    int b = star.length-1-i;           // b 는 4행       4-1-0=3    /   4-1-1=2  /  4-1-2=1  /  4-1-3=0  /   
    
    result[a][b] = star[i][j];        //result[5][4] = star[4][5]
   }
  }
  
  for (int i = 0;  i< result.length; i++) {
   for (int j = 0; j < result[i].length; j++) {
    System.out.print(result[i][j]);
   }
   System.out.println();
  }
 }
}

//책의 답안대로 하면...숫자를 쓰면서....음.. 책의 원리도 나쁜건 아니얌~! 이문제는 생각하기 나름이다.ㅋ

 

 

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

 

 

package Exercise5;

public class Exercise5_10 {

 public static void main(String[] args)
 {

  char[] abcCode = {'`','~','!','@','#','$','%','^','&','*','(',')','-','_','+','=','|','[',']','{','}',';',':',',','.','/'};
  char[] numCode = {'q','w','e','r','t','y','u','i','o','p'};
  
  String src = "abc123";
  String result = "";
  
  for (int i = 0; i < src.length(); i++) {
   char ch = src.charAt(i);
   
  }
  
  System.out.println("src : "+src);
  
  char[] abc = new char[3];
  System.arraycopy(abcCode, 0, abc, 0, 3);
  //System.out.print(new String(abc));
  
  char[] num = new char[3];
  System.arraycopy(numCode, 1, num, 0, 3);
  //System.out.print(new String(num));
  
  result = new String(abc) + new String(num);
  System.out.println("result : "+result);
 }
}


// 책이랑 쫌 다르게 풀어봤엉~~ 답만 나오면 된다고 했으니깐..배운대로 복사를 이용해서 풀었습니다.

 

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

 

 

package Exercise5;

public class Exercise5_11 {

 public static void main(String[] args) {

  int[][] score = {{100,100,100},{20,20,20},{30,30,30},{40,40,40},{50,50,50}};    //5행  3열
  int[][] result = new int[score.length+1][score[0].length+1];
                                            //6행                    //4열
  
  for (int i = 0; i < score.length; i++) {     //0 ~ 4 까지
   
   
   for (int j = 0; j < score[i].length; j++)     // 0 ~ 2 까지
   { 
    //System.out.print(score[i][j]);
    result[i][j] = score[i][j];   //복사~
    
    //문제는 지금부터얌..
    result[i][score[j].length] = result[i][score[j].length] + result[i][j];  //가로 세로 합
    //여기서 i 값은 괄호를 나가면 계속 '0'   score[j].length 는 0 ~ 2까지 네용!
    
    result[score[i].length+2][j] = result[score[i].length+2][j] + result[i][j];
    //이번에는 행 값이 증가하고 열값은 계속 고정이어야 하는건데...나..원참..
    
    result[score[i].length+2][score[j].length] = result[score[i].length+2][score[j].length] + result[i][j];
    //얼떨결에 풀었는데..이해가 잘 안간다..ㅋㅋ 내일도 다시 봐야겠어~ㅠ_ㅠ
   }
   
   
   
  }
  
  for (int i = 0; i < result.length; i++) {
   for (int j = 0; j < result[i].length; j++) {
    System.out.printf("%4d",result[i][j]);
   }
   System.out.println();
  }
 }

}

 

~~아오 드럽게 빡세네..그래도 문제푸는게 재미는 있네..드럽게 안풀려서 그러지..ㅠ_ㅠ

 

 

Posted by 옆모습오빠
:

JSP_세팅

::::특별한 Java Story 2013. 6. 20. 17:49 |

 

JSP_세팅.rar

 

● 아파치 톰캣 다운로드 및 설치 ●
Tomcat 다운로드
- http://tomcat.apache.org/ 사이트 접속
- JDK 버전에 맞는 버전을 선택하여 다운로드 (Tomcat 7.x 선택)
- Binary Distributions > Core > zip(pgp,md5) 버전으로 다운로드

다운로드 받은 apache-tomcar-x.x.x.zip 파일을 사용할 경로에 압축을 풀어 놓는다.
그냥 C: 드라이브가 좋겠다.

 

apache-tomcat-x.x.x\conf\ 에서 server.xml 파일을 편잡한다.
-->http 프로토콜 사용 포트가 8080으로 기본설정 되어 있는데
-- 오라클 9i 나 오라클 XE 를 사용하는 경우는 충돌이 날수 있기 때문에 적절히 수정한다.

 

 

-->URIEncoding 속성을 추가한다. 한글 송수신할 떄 한글 형식 지정하는 부분

 

 

내컴퓨터 > 속성 > 고급 > 환경 변수 설정을 수정한다.
classpath 에 .; 이 없으면 추가한다.

 

 

 

 

 

JAVA_HOME 속성을 추가한다.
JDK 설치 경로를 변수 값으로 지정한다.
- 변수 이름 : JAVA_HOME
- 변수 값 :  C:\Program Files\Java\jdk1.7.0_21;
--> 이클립스 없이 톰캣만으로 JSP 실행 시 필요한 설정

 

 

JspServlet 폴더 만든다.~~~

이클립스 실행 > file > new > web > Dynamic web project 선택
(web 메뉴가 안보이는 경우 : JavaEE 확인 ~
(J2SE 인 경우일때 안보임/ Perspective 가 JAVA 로 설정된 경우이다.)

 

 

 

 

 

 

 

 

 

 

 

프로젝트 이름 : study
Taget runtime 항목에서 New Runtime 버튼 클릭
Apache Tomcat v7.0 항목 선택

Browse 버튼 클릭
디렉터리 찾아보기 화면에서 압축이 해제된 apache tomcat 이 저장되어 있는
디렉터리를 지정

Servers 탭에서 마우스 우클릭 >New > Server 선택

Study 항목을 선택한 후 Add 버튼 클릭
Finish

 

※ Tomcat 서버가 등록된 상태

이클립스 windows > Preferences 에서 web > css files, HTML files, JSP files
encodong UTF-8 로 설정 (한글땜시) apply

General > content types > text > JavaScript Source file 항목에서
Default encoding 을 UTF-8 로 입력
Update   (11.jpg)

web > JSP files > editor > templates > New JSP file(html) 항목 선택 후 Editor 선택
(12.jpg)

<%@ page language="java" contentType="text/html; charset=${encoding}"
    pageEncoding="${encoding}"%>에서

<%@ page contentType="text/html; charset=${encoding}"%> 로 변경


WebContent 에서 마우스 우클릭 > new > JSP file > file name 에 <first> 입력
finish

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 옆모습오빠
:

// 배열이란 ?  많은 양의 데이터를 손쉽게 저장하기 위한 방법

package JavaTest;

public class ArrayEx1 {

 public static void main(String[] args) {

  int sum = 0;
  float average = 0f;
  
  int[] score = {100,90,80,70,60};    //1차원 배열 5개 선언
  
  for(int i=0;i<score.length;i++){
   sum = sum+score[i];                    //sum 을 누적
  }
  
  average = (float)sum/score.length;     //평균은 배열 길이로 나눈값
  
  System.out.println("합계:"+sum);
  System.out.println("평균:"+average);
 }
}

 

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

 

//간단한 배열값 비교

package JavaTest;

public class ArrayEx2 {

 public static void main(String[] args) {

  int[] score = {79,88,91,33,100,55,65};     //1차원 배열 7개 선언
  
  int max = score[0];                 //score[0] 을 최대값으로 선언
  int min = score[0];                  //score[0] 을 최소값으로 선언
  
  for(int i=1;i<score.length;i++){
   if(score[i]>max){                 //score[1]~[6]까지 score[0] 과 비교하여 크다면
    max=score[i];                  // 그 값이 최대값으로 한다.
   }
   if(score[i]<min){                 //score[1]~[6]까지 score[0] 과 비교하여 작다면
    min=score[i];                    // 그 값이 최소값으로 한다.
   }
  }
  
  System.out.println("최대값:"+max);
  System.out.println("최소값:"+min);
 }
}


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

 

// random() 메서드 활용 해보기

package JavaTest;

public class ArrayEx3 {

 public static void main(String[] args) {

  int[] number = new int[10];
  
  for(int i=0;i<number.length;i++){
   number[i] = i;                                // 0~9까지의 숫자를 number[0]~[9] 까지 초기화한다.
   System.out.print(number[i]);   
  }
  System.out.println();
  
  for(int i=0;i<100;i++){             //100번 충분히 돌린다.
   int n = (int)(Math.random()*10);    // 10개중(0~9까지 숫자중) 1개를 뽑는다.
   
   int temp = number[0];     //number[0] 값을 temp에 넣는다.
   number[0] = number[n];  //number[n] 값을 number[0]에 넣는다.
   number[n] = temp;          //temp 값을 number[n] 에 넣는다.
                                           //위에 3문장은 숫자를 섞을때 자주 사용되는 문장이다. 초기값을 선언을 해주어도 좋다.
  }
  
  for (int i = 0; i < number.length; i++) {
   System.out.print(number[i]);              //위에 섞은 값을 number[0] 부터 순서대로 출력하자!
  }
 }
}

 

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

 

 

//로또 추첨기 (중복은 허용)..

package JavaTest;

public class ArrayEx4 {

 public static void main(String[] args) {

  int[] ball = new int[45];             //45개의 배열을 선언한다.
  
  for(int i=0;i<ball.length;i++){       //배열의 각 요소에 1부터 45까지 저장한다.
   ball[i] = i+1;                           // <--배열은 0부터기때문에 왼쪽 식을 지정하여 ball[0]에 1을 저장하는..
  }                                                  //로또는 0이 없기 때문에~
  
  int temp = 0;              //두값을 바꿀때 쓸 임시 temp 변수
  int j = 0;                    //임의의 값을 저장할 변수
  
  for(int i=0;i<100;i++){                 //100번 썩이도록 ~~
   j = (int)(Math.random() * 45);       //배열범위 0~44 의 임의의 값을 얻는다
   
   temp = ball[0];         //첫번째 배열 ball[0] 을 temp에 넣는다.
   ball[0] = ball[j];       //랜덤으로 얻어진 ball[j]값을 첫번째 배열 ball[0] 에 넣는다. 
   ball[j] = temp;         //temp 값을 ball[j] 에 넣는다.
                                  //위 세가지는 섞어주기 위한!!! 필수!!
  }
  
  for(int i=0;i<6;i++){                 
   System.out.print(ball[i]+"/ ");      //배열 6개를 출력하랏!
  }
 }

}

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

 

 

//버블 정렬 알고리즘

package JavaTest;

public class ArrayEx5 {

 public static void main(String[] args) {

  int[] number = new int[10];   //크기가 10인 배열
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i] = (int)(Math.random()*10));
  }  //우선 임의적으로 0~9까지 배열을 랜덤하게 뽑아낸다. 중복도 상관은 없엉! 우선 그렇게 해놓았네
  //nuber[0]~[9]까지 배열 값에 랜덤 숫자를 각각 담는다. 
  
  
  
  System.out.println();
  
  for(int i=0;i<number.length;i++){
   boolean changed = false;        //자리 바꿈이 발생했는지 체크!
   
   for(int j=0;j<number.length-1-i;j++){
    if(number[j]>number[j+1]){     //왼쪽값이 크면 ~ 예) number[0] > number[1] (각 배열에는 랜덤숫자가 들어가있음)
     int tmp = number[j];                  //바꿔라~
     number[j] = number[j+1];
     number[j+1] = tmp;
     changed = true;                        //바뀌었다면 true 로~
    }
   }
   
   if(!changed) break;               //자리 바꿈이 없다면 반복문을 벗어난다.
   
   for(int k=0;k<number.length;k++)
    System.out.print(number[k]);
       System.out.println(); 
  }
 }

}

 

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

 

//P.123 [랜덤을 통해 뽑아낸 숫자를 하나씩 세어보기]

package JavaTest;

public class ArrayEx6 {

 public static void main(String[] args) {

  int[] number = new int[10];            //1차원 배열 10개를 number 에 담는다.
  int[] counter = new int[10];            // 1차원 배열 10개를 counter 에 담는다.
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i] = (int)(Math.random()*10));     //랜덤하게 뽑은 수를 number[i] 배열에 각각 담는다.
  }
  System.out.println();
  
  for(int i=0;i<number.length;i++){
   counter[number[i]]++;                          //number[i] 의 개수를 하나씩 세어라~! 헐~
  }
  
  for(int i=0;i<number.length;i++){
   System.out.println(i+"의 개수:"+counter[i]); 
  }
  
 }

}

 

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

 

 

//P.124 charAt(int idx) : 괄호안에 인덱스 안에 있는 문자열을 반환하는 메서드!
//**charAt 은 char 형은 사용 못하고 String 문자열에서만 사용할 수 있다.!!!!

package JavaTest;

public class ArrayEx8 {

 public static void main(String[] args) {

  String src = "ABCDE";
  //char[] src = {'A','B','C','D','E'};    사용못함 X
  
  for(int i=0;i<src.length();i++){
   System.out.println("src.charAt("+i+"):"+src.charAt(i));
  }
 }
}

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

 

//P.128 다차원 배열 (열과 행)으로 구분을 짓는다.

package JavaTest;

public class ArrayEx10 {

 public static void main(String[] args) {

  int[][] score = { {100,100,100}, {20,20,20}, {30,30,30}, {40,40,40}, {50,50,50} };
  
  int koreaTotal = 0;
  int englishTotal = 0;
  int mathTotal = 0;
  
  System.out.println("번호  국어  영어  수학  총점  평균");
  System.out.println("==================");
  
  for(int i=0;i<score.length;i++){
   int sum = 0;
   koreaTotal = koreaTotal+score[i][0];
   englishTotal = englishTotal+score[i][1];
   mathTotal = mathTotal+score[i][2];
   System.out.print(" "+(i+1)+" ");
   
   for(int j=0;j<score[i].length;j++){
    sum = sum+score[i][j];
    System.out.print(score[i][j]+" ");
   }
   System.out.println(sum+" "+sum/(float)score[i].length);
  }
  
 }

}

 

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

 

//P.130 배열의 복사

package JavaTest;

public class ArrayEx11 {

 public static void main(String[] args) {

  int[] number = {1,2,3,4,5};        //①
  int[] newNumber = new int[10];  //②
  
  
  for(int i=0;i<number.length;i++){
   System.out.print(number[i]);   //①
   newNumber[i] = number[i];     //①number 배열 하나씩 newNumber 에 담는다. 5개 담아지겠다.
  }
  System.out.println();
  
  for(int i=0;i<newNumber.length;i++){
   System.out.print(newNumber[i]);   //② 기존에 담았던 5개 그러니깐 이전 for 문을 복사함
  }                                                       //나머지 5~9 까지 공간에는 '0'으로 초기화해서 담김
 }

}

 

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

 

//P.132 ( System 클래스의 arraycopy() ) 복사

package JavaTest;

public class ArrayEx12 {

 public static void main(String[] args) {

  char[] abc = {'A','B','C','D'};
  char[] number = {'0','1','2','3','4','5','6','7','8','9'};
  System.out.println(new String(abc));
  System.out.println(new String(number));
  
  char[] result = new char[abc.length+number.length];               
  //길이 14인 배열 result (result 는 char 형이기 때문에 1,2,3... 형식이 아닌 공백으로 14자리를 만든다.)
  System.arraycopy(abc,0,number,0,abc.length);                               
  // abc[0] 시작해서 number[0] 부터 복사하는데, 길이는(abc.length)=4만큼만 복사해라  --> ABCD456789 
  System.arraycopy(number, 0, result, abc.length, number.length);     
  // 위에 내용을 이어서 number[0] 시작해서 result[4] 부터 복사하는데...
  // 길이는 (number.length)=10만큼만 복사해라 --> ABCD456789  -->'     'ABCD456789
  System.out.println(new String(result));  //--> ABCD0123456789
  
  System.arraycopy(abc,0,number,0,abc.length);
  //abc[0] 시작해서 number[0] 부터 복사하는데 총 길이 4만큼만 복사해라
  //--> ABCD456789
  System.out.println(new String(number));
  
  System.arraycopy(abc, 0, number, 6, 3);
  //abc[0] 시작해서 number[6] 부터 복사하는데 총길이가 3만큼만 복사해라
  //--> ABCD456789   --> ABCD45ABC9
  System.out.println(new String(number));
 }

}

 

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

 

 

 

Posted by 옆모습오빠
:

/*
 DBConn.java
 */

 

//싱글톤 패턴을 이용한 Database 연결 객체 생성 전용 클래스
// --> DB 연결 과정이 가장 부하가 크기 때문에
//     한번 연결된 객체를 계속 사용하는 것이 좋다.

 

package com.util;

import java.sql.Connection;
import java.sql.DriverManager;

 

 

public class DBConn {
 
 private static Connection dbConn;

 // 자동으로 null 최기화
 // try~catch 대신 메소드 뒤에 throws SQLException(getConnection처리)와 forName처리 구문을
 // 사용하면 try~catch구문을 사용하지 않아도 된다. 하지만, 교육; 진행간에는 특별한 경우가 아니라면
 // throws Exception사용하지 안고 try~catch문을 사용하도록 한다.
 // thows Exception을 사용할 경우 예외가 발생하게 되면
 // 프로그램 자체가 종료되어 버린다.
 // 하지만 ,try~catch문을 사용할 경우 프로그램이 종료되는 것은 아니며 연결실패에 대한 원인 분석을
 // 할수 있다.
 // 또한, 이 오류를 클라이언트에게 보여줄 수도 있게 된다.

 
 public static Connection getConnection() {
  // 한번 연결된 객체를 계속 사용
  // 연결되지 않은 경우에만 연결을 시도 -->싱글톤(디자인 패턴)
  
  if (dbConn == null) {
   
   try {
    
    String url = "jdbc:oracle:thin:@내아이피주소~:1521:orcl";
    // ip주소는 오라클 서버 주소, 1521은 오라클 port number.
    // ocp03은 sid(Oracle Express Edition을 사용할 경우 xe라고 입력)
    String user = "scott";     // 오라클 사용자 계정이름
    String pwd = "tiger";     // 오라클 사용자 계정 암호

 

    Class.forName("oracle.jdbc.driver.OracleDriver");
    // OracleDriver 클래스에 대한 객체 생성
    dbConn = DriverManager.getConnection(url, user, pwd);
    // 오라클 서버 실제 연결
    // 갖고 있는 인자값은 오라클 주소, 계정명 ,패스워드
   }

 

  catch (Exception e) {
    // Exception 대신 SQLException 사용가능
    // 단 , SQLException 을 사용할 경우 forName도 반드시
    // 예외 처리(ClassNotFoundException)
    // Exception getConnection, forName 두개
    // 동시 처리
    System.out.println(e.toString());
    // 오라클 서버 연결 실패 시 오류 메세지 출력 부
   }
  }
  return dbConn;
 }

 

 // getConnection()메소드의 오버로딩
 public static Connection getConnection(String url, String user, String pwd) {
  // dbConn 변수 (멤버변수)는
  // Database 가 연결된 상태일 경우 Connection 객체를 갖는다.
  // 연결되지 않은 상태라면 null을 갖는다.
  if (dbConn == null) {
   try {
    Class.forName("oracle.jdc,driver.OracleDriver");
    dbConn = DriverManager.getConnection(url, user, pwd);

   }

   catch (Exception e) {
    System.out.println(e.toString());
   }
  }
  return dbConn;
 }

 

 // 연결 종료 메서드
 public static void close() {
  if (dbConn != null) {
   try {
    // isClosed()메소드를 통해 연결 상태 확인
    if (!dbConn.isClosed())
     // close()메소드를 통해 연결 종료
     dbConn.close();
   } catch (Exception e) {
    System.out.println(e.toString());
   }
  }
  dbConn = null;
 }
}

 

 

 

------------------------ Exception 처리시 ----------------------------

 

/*
 DBConn2.java
 --예외 처리 방법 수정
 */

 

// 기존 DBConn.java 의 내용 중
// try~catch 구문으로 작성된 내용을
// throws 구문으로 변경하여 작성한다.

 

package com.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

 

public class DBConn2 {


 private static Connection dbConn2;

 

 public static Connection getConnection() throws SQLException,ClassNotFoundException {

 

  if (dbConn2 == null) {

 

   String url = "jdbc:oracle:thin:@127.0.0.1:1521:ocp03";

   String user = "scott";
   String pwd = "tiger";

 

   Class.forName("oracle.jdbc.driver.OracleDriver");

   dbConn2 = DriverManager.getConnection(url, user, pwd);

  }
  return dbConn2;
 }

 public static Connection getConnection(String url, String user, String pwd) throws ClassNotFoundException, SQLException {

 

 if (dbConn2 == null) {
   Class.forName("oracle.jdbc,driver.OracleDriver");
   dbConn2 = DriverManager.getConnection(url, user, pwd);

  }
  return dbConn2;
 }

 

 public static void close() throws SQLException {


  if (dbConn2 != null) {
   if (!dbConn2.isClosed())
    // close()메소드를 통해 연결 종료
    dbConn2.close();

  }
  dbConn2 = null;
 }
}

 

 

----------------------- Test 예제(연결 상태) --------------------------

 

 

/*
 Text02.java
 --sql 구문전송 테스트 2
 *JDBC프로그램의 작성
 *1. 드라이버 인스턴스 생성
 * : 데이터베이스와 연결하여 사용할 파일들이 이쓴지 확인한다.
 *  여기서는 굳이 인스턴스를 생성하지 않고,
 *  드라이버가 있는지만 확인하더라도
 *  프로그램을 실행하는 데는 지장이 없다.
 *  ==> 드라이버 클래스 찾는 방법
 *      : Class 라는 클래스의  forName()메소드를 사용
 *      이 메소드는 매개변수로 받은 이름의 클래스를 찾아주는
 *      역할을 하며, 해당 클래스를 찾지 못할 경우
 *      ClassNotFoundException 예외를 발생시킨다.
 *     
 *2. 연결 객체 생성
 *  : 찾은 드라이버 클래스를 가지고
 *    설치된 데이터베이스와 연결하는
 *    Connection 객체를 생성한다.
 *  
 *   ==> Connection 객체는 DriverManger클래스의
 *     getConnection()이라는 static 메소드로 생성한다.
 *     예외는 데이터 베이스 서버와 연결할 때 발생하며,
 *     SQLException 예외를 발성시킨다.
 *    
 * 3. 작업 객체 생성
 *   : 연결된 포트를 통해 질의문을 보낼 수 있도록
 *   도와주는 객체를 생성한다.
 *   자바에서는 크게 세가지 방법으로 질의를 처리한다.
 *   1)Statement 객체 생성
 *   정적 질의를 처리할 때 주로 사용
 *   2)PreparedStatement 객체생성
 *   동적 질의를 처리할 때 주로 사용
 *   3)CallableStatement 객체생성
 *   프로시저나 함수를 호출할 수 있게 해 주는 객체
 */

// 실행 예)
// 번호를 입력하세요(-1 종료) : 2
// 이름을 입력하세요 : 이순신
// 전화번호를 입력하세요 : 010-111 -1111
// 회원정보가 입력되었습니다.
// 번호를 입력하세요.(-1) : -1
// 프로그램 종료


package com.test;

import java.sql.Connection;
import java.sql.Statement;
import java.util.Scanner;

import com.util.DBConn;

public class Test02 {
 public static void main(String[] args) {
  Scanner sc = new Scanner(System.in);
  // 스캐너는 기본적으로 공백과 일치하는 구분 기호 패턴을 사용하여
  // 토큰 입력 분할

  Connection conn = DBConn.getConnection();
  // do~ while 문을 사용하여 반복문 처리

  do {
   System.out.println("번호를 입력하세요.(-1 종료) :");
   String sid = sc.next();
   // 반복문을 깨뜨리는 조건문 구성
   if (sid.equals("-1"))
    break;

   System.out.println("이름을 입력하세요 :");
   String name = sc.next();
   System.out.println("전화번호를 입력하세요 :");
   String tel = sc.next();

   if (conn != null) {
    System.out.println("데이터베이스 연결 성공");
    try {
     // 작업 객체 생성
     Statement stmt = conn.createStatement();
     String sql = String.format("insert into tbl_member,sid,name,tel) values(%s,'%s','%s')", sid,name, tel);
     // 데이터베이스로부터 질의 결과를 가져와야 하는 경우
     // executeQuery() 메소드를 사용
     // 특정 내용을 데이터베이스에 적용하는 경우
     // executeUpdate() 메소드를 사용
     int result = stmt.executeUpdate(sql);
     if (result > 0)
      System.out.println("회원 정보가 입력되었습니다.");

    } catch (Exception e) {
     System.out.println(e.toString());
    }

   }
  } while (true);

  DBConn.close();
  System.out.println("데이터베이스 연결 닫힘 !!!");
  System.out.println("프로그램 종료");

 }

}

------------------------------- 연결 이상시 --------------------------------------

 

 

java.sql.SQLException: IO 예외 상황:

The Network Adapter could not establish the connection

 

해당 해당 오류시 몇가지 사항 체크

 

1. lsnrctl stat  (cmd 창에서 리스너 체크)

 

 

 

2. port 번호와 sid 체크

 

 

 

 

 

3. 마지막으로 IP 주소 확인하기!

 

공유기를 쓰시는 분들은 대부분 내부 IP 로 보여지기 때문에 외부아이피 주소를 찾아서 쓰시던지..

아니면 자기 자신의 IP 주소 (127.0.0.1) 로 기재한다.

 

내 아이피 주소 확인 http://checkmyip.com 직접 접속!

 

 

 

 

아~~ 이거 외에도 기본적으로 추가해주어야 할 사항은

 

이클립스에서 오라클 연동 후 공부하려면 ojdbc14.jar 파일을 넣어줘야 한다!

 

자바를 C:드라이브에 설치를 하였으면

 

C:\Program Files\Java\jre7\lib\ext 이곳에 ojdbc14.jar 파일을 넣을수 있도록 한다.(첨부파일)

 

 

ojdbc14.jar

 

이상~~ 입니다. 머 또 다른건 없겠지...ㅋㅋ 더이상 기억이 안난다..ㅋㅋ

 

열공합시다!!!

 

오라클 설치하고 내 노트북..떵컴 된게 제일 슬프다...(ㅠ_ㅠ)

내년에 노트북 쿼드코어로 사야 할 것 같다. 듀얼코드의 한계에 압박...;;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'::::특별한 Java Story' 카테고리의 다른 글

JSP_세팅  (0) 2013.06.20
배열(Array)  (0) 2013.06.20
참조변수와 인스턴스의 연결  (0) 2013.06.11
우편번호 DB  (0) 2013.06.10
instanceof 연산자  (0) 2013.06.10
Posted by 옆모습오빠
:

/*내용을 복사 한 후 이클립스에서

ctrl + shift + F를 눌러주세요!!*/

 

 

//P.275 참조변수와 인스턴스의 연결
//멤버변수가 조상클래스와 자손클래스에 중복으로 정의된 경우 조상타입의 참조변수를 사용했을때는 조상클래스에 선언된
//멤버변수가 사용되고, 자손타입의 참조변수를 사용했을때는 자손클래스에 선언된 멤버변수가 사용된다..


package JavaTest;

class Parent{
 
 int x = 100;
 
 void method(){
  System.out.println("Parent Method");
 }
}

class Child extends Parent{
 
 int x = 200;
 
 void method(){
  System.out.println("Child Method");
  System.out.println("super.x="+super.x);  //super 는 조상클래스 타입을 뜻한다.
  System.out.println("this.x="+this.x);  //this 는 자신 클래스의 타입을 말하는거공~ㅎ
 }
}


public class BindingTest {

 public static void main(String[] args) {

  Parent p = new Child();  //상속관계 일때만 쓸수 있고, p 참조변수는 child의 모든 멤버는 사용할 수 없고, Parent에
                                      // 정의된 멤버만 사용 가능하다.
  System.out.println(p.x);
  p.method();                    //메서드의 경우는 실제 인스턴스의 타입인 Child 클래스에 정의된 메서드를 사용함!
  
  
  Child c = new Child(); //Child 클래스 (자신 클래스) 인스턴스
  
  System.out.println(c.x);
  c.method();
  
  
 }

}

Posted by 옆모습오빠
:

http://www.zipfinder.co.kr/

 

 

② zipcode.txt 파일 경로에 옮김~

 

 

③ zipcode.ctl 파일 생성

내부 입력사항

 

 

load data
infile 'c:\sqlldr\data\zipcode.txt'

replace into table tbl_zip
fields terminated by ' '
(
ZIPCODE char, 
SIDO char,
GUGUN char,
DONG char,
RI char,
BLDG char,
BUNJI char,
SEQ integer external
)

 

④ cmd 창에서 실행

 

c:\>sqlldr userid=scott/tiger control=c:\sqlldr\zipcode.ctl log=c:\sqlldr\log\zipcode.log

Posted by 옆모습오빠
: