728x90



출처: http://shonm.tistory.com/category/JAVA/%EA%B0%84%EB%8B%A8%ED%95%9C%20ant%20build


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

[ant] 설치  (0) 2014.07.15
Posted by 앗뜨거
,

[ant] 설치

프로그래밍/ant 2014. 7. 15. 14:56
728x90

자바 프로젝트들의 빌드를 위해 사용되는 ANT를 설치하는 방법을 간단하게 정리해 두도록 하겠습니다.

1. 다음의 다운로드 페이지에서 최신의 ANT를 다운받아 설치합니다.

2. 적당한 위치에 압축을 해제합니다. 저는 다음의 위치에 풀어두었습니다.

C:\Program Files\Java\apache-ant-1.8.2

3. 환경 변수를 추가합니다.

- ANT의 bin디렉토리를 PATH에 추가
사용자 삽입 이미지

- JAVA_HOME 환경 변수 추가
사용자 삽입 이미지

4. ANT 실행 테스트 (시작 – 실행 – cmd)
사용자 삽입 이미지

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

[ 이클립스] 간단한 ant build 만들기  (0) 2014.07.15
Posted by 앗뜨거
,
728x90

이클립스에서 자동으로 Import 하는 방법이기도 하지만

사용하지 않는 Import 들을 정리할 때도 사용하기도 합니다.

 

단축키는 : CTRL+SHIFT+O

아니면 마우스 오른쪽 버튼 선택 -> source -> Organize Imports 를 선택하면 됩니다.

 


출처 : http://diyall.tistory.com/255

Posted by 앗뜨거
,
728x90

MySQL

 

-데이터베이스 생성

mysql > create database haksa;

 


 

++ show databases; 는 데이터베이스를 모두 보여준다.

++ ; 이 명령문의 끝에 사용되어서 명령문이 길어질 경우 엔터치고 사용할 수 있다.

 

-데이터베이스 사용

mysql > use haksa;

 


 

-테이블 만들기

 

++쿼리문 만들때, 메모장에서 작업 후에 cmd창에서 하는 것이 나중에 오타가 났을 경우 고치기 쉽다!

 

<insa 테이블  생성>

create table insa(

bunho int(1) auto_increment,

name char(8) not null,

e_name char(4) not null,

town char(6) not null,

primary key(bunho)

); // 이거 작성하는데도 오타나서 고쳤네요 ㅋㅋㅋ


결과는,                                                                                                            테이블 결과 값을 보면 아래와 같습니다.

                                            

<create table 테이블명();>                                                                                         <show tables;>

 


<desc 테이블명;> -> 테이블 구조를 보여줍니다.

 

명령어를 정리해보면

mysql > create table 테이블명(); ->테이블 만들기

mysql > show tables; -> 테이블 모두 보여주기

mysql > desc 테이블명; -> 테이블 속성 보여주기

 

-데이터 입력(insert)

 

ex>

insert into insa values('1','홍길동','Hong','순천');

insert into insa values('2','제갈공명','Je','여수');

insert into insa values('3','순자','Soon','부산');

insert into insa values('4','이순신','Lee','여수');

insert into insa values('5','니얼굴','NII','내마음');                      

 

오른쪽과 같이 적용됩니다.

 

insert 문법은

 

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)] 
    [(col_name,...)]
    {VALUES | VALUE} ({expr | DEFAULT},...),(...),...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Or:

INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)]
    SET col_name={expr | DEFAULT}, ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

Or:

INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
    [INTO] tbl_name
    [PARTITION (partition_name,...)] 
    [(col_name,...)]
    SELECT ...
    [ ON DUPLICATE KEY UPDATE
      col_name=expr
        [, col_name=expr] ... ]

 

이렇다고 합니다. (이렇게 보니까 더 어렵게 느껴지지만 여러가지 방법이 있으니 좋은거죠 ㅎㅎ)

 

insert 한 데이터를 확인해봅시다.

 

mysql > select * from insa;

 

select 문은 데이터를 가져올때 쓰이는데, *의 의미는 '모두'

from insa 는 insa 테이블에서 가져오겠다 라는 의미입니다.     

 

 

 

 

-자료 수정(update)

mysql > update insa

->set town = '한산도'

->where bunho = 4;

                          이순신 장군님 town 값이 여수 -> 한산도가 됬습니다.

 

++ Autocommit 에 대한 부분

autocommit은 자료를 입력하고 수정하고 삭제하는 것이 실제로 데이터가 반영되는것을 설정하는 값인데,

autocommit = 1  이면 자동적으로 반영되는 것이고,

autocommit = 0  이면 메모리상에서만 반영되고 commit 하면 실제로 데이터가 저장됩니다.

데이터를 저장하고 싶지 않고 원 상태로 돌리려면 rollback 하면 데이터가 복구 됩니다.

 

화면을 보면,

autocommit=0



                            다시 접속합니다.

 


                        적용이 되지 않았습니다.

여기서 바꾸고 나서 commit 하면 적용(홍길동으로 저장됨)이 되고 rollback하면 원래 "최길동"으로 돌아갑니다.

 

 

savepoint & truncate

savepoint는 rollback 시점을 정해주는 것.

mysql > savepoint aa;

mysql > rollback to aa; -> aa 지점으로 롤백합니다.

 

truncate 는 테이블의 삭제 처리(모든 행이 삭제 처리됨)

->autocommit 상관없이 다 지워버림(실제로 적용됨)

->돌이킬수 없다.

->위험하다.

->기억에서 지우자

 

 

 

 


Posted by 앗뜨거
,
728x90

DecimalFormat 클래스



NumberFormat 클래스와는 달리, DecimalFormat 클래스는 new 연산자를 사용하여 객체를 생성한다.


DecimalFormat 클래스는 format 메소드를 사용하여 특정 패턴으로 값을 포맷할 수 있다. (반환 값 String)


지정할 수 있는 패턴 형식은 '0' 과 '#'을 사용 하여 지정한다.


예를 들어, '0.###', '000.###', '00.#' 등으로 패턴을 지정할 수 잇다.


'0' 은 해당 자리수는 값이 최소한으로 있어야 되며, #은 최대한 해당 소수점 자리수 까지(반올림하여) 보여준다.


예를 들어, 78.53981633 일 경우


'0.###' : 78.54  (78.540 이므로 0은 출력되지 않는다.)

'000.##' : 078.54 

'00.#' : 78.5


해당 패턴을 지정하여 DecimalFormat의 사용 방법은 아래와 같다.


DecimalFormat fmt = new DecimalFormat("0.###");

String decimal =  fmt.format(78.539816);


위와 같이 사용하면 decimal 에는 78.54 가 반환된다.


DecimalFormat의 pattern을 변경하고 싶을 때는 void applyPattern(String pattern)을 사용한다.


fmt.applyPattern("000.###") 으로 변경하면, 이후의 포맷은 변경된 Pattern이 적용된다.



아래의 예제를 보자.


 

import java.text.DecimalFormat;
import java.util.Scanner;


public class DecimalFormatTest {
    
    public static void main(String[] args) {
    
        int radius;
        double area, circumference;
        
        Scanner scan = new Scanner(System.in);
        
        // 원의 반지름을 입력받는다.
        System.out.print("원의 반지름을 입력하세요 : ");
        radius = scan.nextInt();
        
        // 원의 넓이 : 반지름의 제곱 * 파이
        area = Math.PI * Math.pow(radius, 2);
        
        // 원의 길이 : 지름(반지름*2) * 파이
        circumference = 2 * Math.PI * radius;
        
        
        // 원의 넓이와 길이 값을 출력한다.
        System.out.println("원의 넓이 : " + area);
        System.out.println("원의 길이 : "+circumference);
        System.out.println("");
        
        
        // DecimalFormat으로 "0.###" 패턴을 생성한다.
        DecimalFormat fmt = new DecimalFormat("0.###");
        
        System.out.println("Format 적용 후 (0.###)");
        
        // 원의 넓이와 길이에 "0.###" 패턴을 적용하여 출력한다.
        System.out.println("원의 넓이(Format적용) : " 
                           + fmt.format(area));
        System.out.println("원의 길이(Format적용) : "
                           + fmt.format(circumference));
        System.out.println("");

        
        
        // DecimalFormat 패턴을 "000.#" 으로 변경한다.
        fmt.applyPattern("000.#");
        
        System.out.println("Format 변경 후 (000.#)");
        
        // 원의 넓이와 길이에 "000.#" 패턴을 적용하여 출력한다.
        System.out.println("원의 넓이(Format 변경 후) : " 
                           + fmt.format(area));
        System.out.println("원의 길이(Format 변경 후) : "
                           + fmt.format(circumference));
        
    }
}


* 실행 결과




Decimal 패턴에 관하여 형식은 "0"과 "#" 외에도 더 있다.


자세한 내용은 JAVA API DOC을 참고 하자.



DecimalFormatTest.zip



출처 : http://hyeonstorage.tistory.com/163

Posted by 앗뜨거
,
728x90

우선 java는 객체지향언어입니다.

결국 어떤 작업을 하기 위해서는 클래스가 있어야 하며, 이에 대한 객체가 있어야 하며, 해당 객체가 가지고 있는 메쏘들 호출하여야 합니다.

setAutoCommit(boolean)
commit()
rollback()

메쏘드는 모두 java.sql.Connection 클래스의 것입니다.

소스상에서

con = Engsconn.getDBConnection();

부분에서 Connection 객체를 생성하신 것입니다.
결국 바로 밑에 

con.setAutoCommit(false);

를 넣어주시면 되겠습니다.


그리고 commit의 경우는 insert/delete/update 후 정상적으로 Exception이 발생하지 않았다면, 호출해주셔야 합니다.
방법은 동일하게

conn.commit();

Exception이 발생하였다면, 

conn.rollback();

입니다.

일반적으로 update/insert/delte가 있는 부분의 try 절안에서 SQL이 실행되고,
Exception을 catch 하는 블럭에서는 rollback을, 정상인 경우는 commit을 해주시면 되겠습니다.

예를 들어

conn.setAutoCommit(false);
try {
update 실행
conn.commit();

} catch(SQLException e) {
conn.rollback();
}
이런 식인것이죠.

setAutoCommit은 개발자가 코드상에서 commit/rollback을 하지 않아도,
프로그램이 정상으로 끝나면, commit
실행중 에러가 발생하면, 자동으로 rollback을 해주는데요.

setAutoCommit(true)이면, 이 기능을 사용하자는 것이고,
false이면, 사용자가 직접 commit/rollback을 하겠다는 것입니다.


출처 : http://blog.naver.com/wooridl2030/16055460


Posted by 앗뜨거
,
728x90

출처 : http://blog.naver.com/myrilke/150019611211



이 메뉴얼은 http://www.mysqlkorea.co.kr/sub.html?mcode=develop&scode=01&lang=k 의 한글메뉴얼 중 겨우 3장을 정리한 내용입니다. 버전은 5.0 기준이므로 이보다 낮은 버전의 MySQL에서는 몇 가지 기능이 실행되지 않습니다. 좀 더 자세히 SQL문에 대해 알고 싶으시다면 한글 메뉴얼의 13장을 보세요. 레퍼런스 북처럼 되어 있습니다. 

참고하세요.

 

mysql 실행시

-h: MYSQL서버의 IP또는 호스트명

-u: 유저명

-p: 패스워드

-D: 데이터베이스명

ex) mysql -h localhost -u root -p

// localhost에 root라는 유저명의 유저가 접속, -p를 쓰면 패스워드를 묻는 절차가 실행됨

// 귀찮다면 만약 패스워드가 myrilke라면 -pmyrilke로 쓰면 바로 접속 가능

// 만약 떨어져 있을 시에는 myrilke라는 데이터베이스로 오판함

 

1.mysql에는 쿼리를 넣을 때 대소문자 구분을 하지 않습니다. 쿼리 입력시 제일 마지막에는 ;(세미콜론)을 입력하는 것도 잊지 말아야 합니다.

 

2.입력을 하다 이 명령어를 실행시키고 싶지 않으면 \c로 취소하면 '삐'하는 경고음없이 취소할 수 있습니다. 가끔 \c로 못 마칠 때가 있는데 이는 문장구조가 여전히 대기 상태이기 때문입니다. 그럴 때엔 필요로 하는 문자(아래 Prompt형태에서 1)을 제외한 모든 경우)을 입력 후 \c를 입력해야 합니다. ex) '\c, "\c...

 

3.Prompt 형태
1) mysql> 새로운 명령어를 위한 준비
2) -> 다중 라인 명령어의 다음 라인 대기 상태
3) '> '로 시작된 문장의 완결을 위한 다음 문장 대기
4) "> "로 시작된 문장의 완결을 위한 다음 문장 대기
5) `> `로 시작된 식별자의 완결을 위한 다음 문장 대기
6)/*> /*로 시작된 주석문의 완결을 위한 다음 문장 대기

 

4. 단순 Query입력
1) select version(), current_date; (버전정보및 오늘 날짜 확인)
2) select sin(pi()/4), (4+1)*5; (파이를 4로 나눈 값의 sin값과 (4+1)*5값이 출력)

 

5. 데이터베이스 생성 및 사용
1) show databases;

//현재 서버의 데이터 베이스들 출력

 

2) use test

//Database changed라는 출력과 함께 test라는 데이터 베이스에 접속,

//이 때에는 세미콜론 사용을 안 한다.

//또한 단일라인에서만 사용가능하므로 한 줄에 다 입력해야 함.

3) grant all on test.* to 'myrilke'@'localhost';

//myrilke라는 이름의 등록된 사용자가 localhost라는 호스트 이름으로

//test라는 데이터베이스에 사용자 권한을 요청

4) create database test;

//test라는 데이터베이스 생성

 

5) show tables;

//현 데이터베이스 내의 테이블들을 출력

 

6) create table pet(name varchar(20), owner varchar(20), 
species varchar(20), sex char(1), birth date, death date);

//name, owner, species, sex, birth, death의 정보를 가질 table을 생성,

//가독성을 높이기 위해 2줄에 걸쳐 타입

7) describe pet;

//pet이라는 테이블이 가지는 정보에 대해 검사, 이 때 필드 이름, 데이터 타입,

//NULL의 여부, Key의 여부, DEFAULT의 여부, 기타 에 관한 정보가 출력된다

 

8) load data local infile
'C:/mysql/pet.txt' into table pet;

//C:\mysql\에 있는 pet.txt 내에 있는 정보를 pet이란 테이블에 불러와서 입력한다.

//텍스트 파일로 데이터 입력시 각각의 필드는 tab이나 띄어쓰기로 구분하도록 디폴트

//텍스트 파일 입력 중 누락된 값들은 NULL값으로 자동처리된다.

//주의할 점은 mysql에서 위치입력시 Dos처럼 \를 쓰는 것이 아니라 /를 사용한다

9) load data local infile
'C:/mysql/pet.txt' into table pet
lines terminated by '\r\n';

//\r\n을 라인 터미네이터로 사용한다

 

10) insert into pet
values('Puffball','Diane','hamster','f',1993-03-30',NULL);

//pet이란 테이블에 값을 입력, 이 때는 NULL을 써줘서 누락된 값을 표시한다.

 

11) select * from pet;

//pet테이블에 있는 모든 정보 출력

 

12) delete from pet;

//pet테이블에 있는 모든 정보 삭제, 이 명령어는 텍스트 파일의 자료 중 잘못된 값이 많을 때

//텍스트 파일의 정보 수정 후 다시 입력하려고 할 때 필요하다. 만약 정보 수정 후 바로 load

//data를 해주게 되면 정보가 중복입력이 되기 때문이다.

 

13) update pet set birth = '1989-08-31' where name = 'Bowser';

//pet 테이블에서 name이 Bowser인 줄의 birth를 1989-08-31로 수정한다,

//update A set B=C where D set E의 형태로 작성하면

//A테이블의 D필드의 값이 E인 줄에서 B필드의 값을 C로 수정한다.

14) select *from pet where name = 'Bowser';

//pet 테이블에서 name이 Bowser인 줄을 모두 출력한다.

 

15) select *from pet where birth >= '1998-1-1';

//pet 테이블에서 birth가 1998-1-1 이후인 줄을 출력한다.

//만약 비교연산자 사용시 문자를 사용하면 ASCII코드 값을 비교한다.

//예를 들어 select *from pet where name >='S';를 타입하면

//'T~Z'까지의 문자로 시작되는 이름을 가진 줄들이 출력된다.

16) select *from pet where species = 'snake' or species = 'bird';

//pet 테이블에서 species가 snake이거나 species가 bird인 줄을 출력한다.

//or 뿐만 아니라 and도 사용된다.

//예를 들어 select *from pet where species ='cat' and owner = 'Gwen';

//을 타입하면 pet 테이블의 species가 cat이고 owner가 Gwen인 줄이 출력된다.

 

17) select *from pet where (species='cat' and sex='m')
or (species='dog' and sex='f');

//pet 테이블에서 species가 cat이고 sex가 m인 줄이거나 species가 dog이고 sex가 f인 줄은

//모두 출력한다.

//괄호를 쓰는 까닭은 and와 or 중 우선순위가 and가 더 높기 때문에

//혼용할 수 있으므로 방지차원에 쓴다.

 

18) select name, birth from pet;

//pet테이블에서 name과 birth필드값들을 모두 출력한다.

//이는 특정 행을 선택하여 출력하는 것과 같다.

 

19) select distinct owner from pet;

//pet테이블에서 같은 이름의 owner는 한 번만 출력하도록 owner필드값들을 모두 출력한다. 

 

20) select name, species, birth from pet
where species='dog' or species='cat';

//pet테이블에서 species가 dog이거나 cat인 줄의 name, species,birth를 출력한다.

 

21) select name, birth,

(year(curdate())-year(birth) - (right(curdate(),5)<right(birth,5))

as age

from pet;

 

//pet 테이블에서 name과 birth 그리고 age를 출력한다.

//age는 오늘 날짜(curdate()는 오늘 날짜를 불러오는 MySQL지원 메소드) 중 연도에서

//생일의 연도를 뺀 다음에

//right(curdate(),5)는 curdate() 중 오른쪽 5자리 (몇월-몇일)를 추려내서 birth의 월일과

//비교했을 때 작으면 1, 크거나 같으면 0이란 값을 출력하게 된다.

//(비교연산자 식이 true면 1, false면 0을 리턴한다)

//그래서 나온 값을 빼주면 나이가 된다.(조금만 생각해보시면 이 식이 이해가 갈껍니다.;;)

 

22) select * from pet where name like 'b%';

// pet테이블에서 name이 b로 시작되는 줄을 찾는다.

// '_'을 사용하면 단일문자 매칭

// '%'를 사용하면 문자의 부정 숫자를 매칭

// SQL 패턴 사용시 논리연산자 사용불가

// 대신 like 또는 not like를 사용할 수 있다.

 

23) select * from pet where name like '%fy';

// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.

 

24) select * from pet where name like '%w%';

// pet테이블에서 name이 이름 내에 w를 포함하고 있는 줄을 찾는다.

 

25) select * from pet where name like '_____';

// pet테이블에서 5개의 문자로 name이 되어있는 줄을 찾는다.

// _의 갯수만큼의 문자검색을 할 수가 있다.

 

26) select * from pet where name  regexp '^b';

// pet테이블에서 name이 b로 시작하는 줄을 찾는다.

// regexp는 테스트가 되는 값이 있는 모든 곳에서 매칭

// like는 전체값에서만 패턴매치를 진행

 

27) select * from pet where name regexp 'fy$';

// pet테이블에서 name이 fy로 끝나는 줄을 찾는다.

 

28) select * from pet where naem regexp 'w';

// pet테이블에서 name이 중간에 w를 가지고 있는 줄을 찾는다.

 

29) select * from pet where regexp '^.....$';

// pet테이블에서 name이 5문자인 줄을 찾는다.

// regexp에서는 .을 단일문자로 취급한다.

 

30) select * from pet where name regexp '^.{5}$';

// pet테이블에서 name이 5문자인 줄을 찾는다.

// {n}은 repeat - n - times 연산자이다.

 

31) select count(*) from pet;

// pet테이블에 몇 개의 줄이 있는지 찾는다.

 

32) select owner, count(*) from pet group by owner;

// pet테이블에서 owner의 이름에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.

// group by n은 n이란 속성에 따라 그룹화한다.

// 만약 select 후 n만 사용하고 뒤에 group by n을 붙이지 않으면 에러가 발생한다.

// ex) select owner, count(*) from pet; <- ERROR 1140

 

33) select species, sex, count(*) from pet group by species, sex;

// pet테이블에서 species와 sex의 조합에 따른 줄이 몇 개가 있는지 그룹화한 결과를 출력한다.

 

34) select species, sex, count(*) from pet

where species = 'dog' or species = 'cat'

group by species, sex;

// pet 테이블에서 species 이름이 dog 나 cat인 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.

 

35) select species, sex, count(*) from pet

where sex is not null

group by species, sex;

// pet테이블에서 sex가 null이 아닌 줄들을 species와 sex의 조합으로 그룹화하여 결과를 출력한다.

 

36) select pet.name,

(year(date)-year(birth)) as age,

remark from pet, event

where pet.name = event.name and event.type='litter';

// pet테이블의 name과

// 오늘 날짜(date) 중 년도에서 birth의 년도를 뺀 것을 age로 한 것과

// remark를

// pet과 event 테이블에서

// pet테이블의 name이 event테이블의 name과 같고

// event테이블의 type이 litter인 줄을 출력한다.

// 만약 name이나 type처럼 두 테이블에 동시에 있는 field같은 경우

// (테이블명).(필드명)을 사용한다.

// 사용 안 할시 ambigugous 에러 발생

// ex) pet.name, event.type

 

37) select p1.name, p1.sex, p2.name, p2.sex, p1.species

from pet as p1, pet as p2

where p1.species=p2.species and p1.sex='f' and p2.sex = 'm';

// pet테이블 과 pet테이블, 즉 같은 2개의 테이블에서

// pet테이블에서 species값은 같지만

// sex에서 값이 'f'와 'm'으로 다른

// 줄의 name, sex를 각각 출력하고 species도 출력한다.

// 이 때 두 species는 같으므로 한 테이블의 species만 출력

 

38) select name,birth from pet order by birth;

// pet테이블에서 birth를 기준으로 오름차순으로 정렬된 name과 birth 출력

 

39) select name,birth from pet order by binary name;

// pet테이블에서 name을 기준으로 대소문자 구별하여 오름차순으로 정렬된 name과 birth 출력

// binary를 사용하면 ASCII코드 값의 크기에 따라 정렬

 

40) select name, birth from pet order by birth desc;

// pet 테이블에서 birth를 기준으로 내림차순으로 정렬된 name과 birth를 출력한다

// 마지막에 desc입력시 내림차순 정렬

// desc는 바로 앞에 있는 birth에만 영향을 미친다.

// 하나의 컬럼 이상의 컬럼에 영향을 주고 싶을 땐 계속 써넣어줘야 한다.

 

41) select name, species, birth from pet

order by species,birth desc;

// pet테이블에서 species와 birth 내림차순으로 기준을 한 name,species,birth를 출력한다.

// 먼저 species기준으로 정렬후 birth 내림차순을 기준으로 삼아 정렬한다.

 

42) show index from pet;

// pet테이블에 있는 인덱스들을 보여준다.

 

43) !!이 구문은 윈도우 프롬프트 창에서 쓰는 명령어다!!

C:\> mysql -e "source c:/mysql/src.txt"

// mysql을 사용하여 c:\mysql\src.txt란 스크립트를 실행시킨다

// 만약 엑세스 문제가 발생한다면

// mysql -h localhost -u root -pmyrilke -e "source c:/mysql/src.txt"

// localhost에서 사용자 이름이 root이고 비밀번호가 myrilke인 계정으로 mysql에 접속하여

// c:\mysql\src.txt란 스크립트를 실행시킨다

 

44) source c:\mysql\src.txt;

// c:\mysql\src.txt란 스크립트를 실행시킨다.

// 이 것은 mysql프롬프트 에서 쓰는 것으로 기능은 위와 똑같다

 

45) \. c:\mysql\src.txt

// c:\mysql\src.txt란 스크립트를 실행시킨다

// 끝에 ;(세미콜론)을 붙이지 않는 점에 주의

 

46) select max(article) as article from shop;

// shop 테이블에서 article중에서 가장 큰 값을 가진 것을 article이라는 이름으로 출력

// select max(A) as B from C;

// C테이블에서 A중에 가장 큰 값을 가진 것을 B라는 이름 하에 출력

 

47) select article, dealer, price

from shop

where price=(select max(price) from shop);

// shop 테이블에서 price가 가장 큰 값인 줄의 price를 선택하여 그 줄에 있는 article, dealer, price를 출력

 

48) select article, dealer, price

from shop

order by price desc

limit 1;

// shop테이블에서 price를 내림차순으로 정렬하여 그 중 위에서 1개의 줄만 article,dealer,price를 출력

// limit에 들어가는 값은 출력해낼 줄의 숫자

// 47번 예제보다 좀 더 유동성있고 사용하기 편함

 

49) select article, max(price) as price

from shop

group by article;

// shop테이블에서 article, price 중에 가장 큰 값만 price로 하여 article로 그룹화한 결과를 출력

 

50) select article, dealer, price

from shop s1

where price=(select max(s2.price)

from shop s2

where s1.article = s2.article);

//shop테이블에서 price가 가장 높은 줄의 article,dealer,price를 출력한다.

 

51) select @min_price:=min(price),@max_price:=max(price) from shop;

select * from shop where price=@min_price or price=@max_price;

// shop테이블에서 min_price라는 변수를 선언하고 그 값은 price중 가장 작은 값

// 또한 shop테이블에서 max_price라는 변수를 선언하고 그 값은 price중 가장 큰 값

// shop테이블에서 price가 min_price값을 가지거나 max_price값을 가진 줄 모두를 출력

 

52) select name, sex

from pet where name='Claws'

union

select name,sex

from pet where sex='f';

// pet테이블에서 name이 Claws인 줄의 name, sex를 출력하고

// pet테이블에서 sex가 f인 줄의 name,sex를 출력한다.

// union은 두 개의 쿼리문 결과를 붙여서 보여준다.

// 따라서 select하는 필드값은 일치해야 한다.

Posted by 앗뜨거
,
728x90


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.net.*;
import java.io.*;
 
public class Ex02_01 
{
    public static void main(String[] args)
    {
        try
        {
            //InetAddress ia = new InetAddress(); 처럼 하면 좋겠지만 
            //InetAddress 는 생성자 자체가 존재하지 않기때문에 쓸수없다        
            InetAddress[] ia = InetAddress.getAllByName("www.naver.com");    //여러개의 주소를 얻는방법
            
            for(int i=0; i < ia.length ; i++)
            {
                System.out.println(i + 1 + "번째의 주소 => " + ia[i].getHostName() +"   아이피 => "+ia[i].getHostAddress());
            }
        }
        catch(UnknownHostException e){}
        
    }
}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.net.*;
import java.io.*;
 
public class Ex02_02 
{
    public static void main(String[] args)
    {
        try        //외부주소 알아내기
        {
            InetAddress ia = InetAddress.getByName("www.naver.com");    //주소 한개만 알아내기            
            System.out.println(ia.getHostAddress());
            System.out.println(ia.getHostName());            
        }
        catch(UnknownHostException e){}
        
        try        // 내컴 주소 알아내기
        {
            InetAddress iaa = InetAddress.getLocalHost();
            System.out.println(iaa);
        }
        catch(UnknownHostException e){}
        
    }
}




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.net.*;
import java.io.*;
 
public class Ex02_03 
{
    public static void main(String[] args)
    {
        try
        {
            InetAddress ia = InetAddress.getByName("www.naver.com");
            byte[] bb = ia.getAddress();        //getAddress를 쓰려면 배열이기 때문에 배열로 넣어줘야된다
                                                //getAddress는 특정객체로부터 배열형태의 IP주소를 빼내어
                                                //byte형식으로 형변환
//            for(int i = 0; i < bb.length ; i++)
//            {
//                System.out.println(bb[i]);
//            }
            
            for(int ggg : bb)
            {
                System.out.print(ggg+"\t");        //125,-47,-34,-115 현재는 이렇게 나온다
                                                //byte 형으로 변환한 번호이다
            }
            
            
            byte[] vvv={125,-47,-34,-115};        //위에서 나온 숫자를 getByAddress 를 넣으면 IP주소가 나온다
                                                //125.209.222.141
            InetAddress iaa = InetAddress.getByAddress(vvv);
            System.out.println("iaa = "+iaa);
            System.out.println("dns = "+iaa.getHostName());
            System.out.println("ip = "+iaa.getHostAddress());
        }
        catch(UnknownHostException e){}
    }
}





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/*
 * awt이용 
 * A.프레임을 통한 현재 컴퓨터 정보 표시
 * B.프레임에서 특정 대상컴퓨터의 정보 표시 예제
 */

 
import java.net.*;
import java.awt.*;
import java.awt.event.*;
 
class Ex02_04Sub extends Frame implements ActionListener    //Frame을 상속받고 Action이벤트를 쓰기위해  implements 로 
{
    //사용할 객체 생성
    private Label lb = new Label("사이트 : ", Label.RIGHT);    //
    private TextField tf = new TextField();        //입력창으로 이용할 객체 생성
    private TextArea ta = new TextArea();        //결과창으로 사용할 객체생성
    private Button bt = new Button("Clear");    //Clear라는 이름을 가진 버튼 객체 생성
    private Button bt1 = new Button("End");        //End라는 이름을 가진 버튼 객체 생성
    
    
    public Ex02_04Sub(String str)
    {
        super(str);
        this.init();
        this.start();
        this.setSize(300,200);
        this.setVisible(true);        //보이도록 세팅할것이냐~!!!
    }
    
    public void init()        //위에서 만든 사용할 객체 생성한것으로 초기 화면 구성 Swing
    {
        this.setLayout(new BorderLayout());            //Layout 응 BorderLayout으로 세팅
        this.add("Center", ta);                        //Center 에 TextArea를 생성
        Panel p =new Panel(new BorderLayout());        //Label 과 TextField를 만들기 위한 Panel을 BorderLayout으로 생성
        p.add("West", lb);                            //왼쪽에 Label객체를 p에 생성
        p.add("Center", tf);                        //가운데에 TextField객체 p에 생성
        this.add("North",p);                        //위쪽에 p를 화면에 생성
        Panel p1 = new Panel(new FlowLayout(FlowLayout.RIGHT));        //Panel 생성을 FlowLayout형식의 오른쪽으로 생성
        p1.add(bt);        //p1에 bt객체 생성만
        p1.add(bt1);    //p1에 bt1 객체 생성만
        this.add("South", p1);    //이화면에 p1 을 추가후 아래쪽으로 출력
    }
    
    public void start()        //시작메소드 
    {
        tf.addActionListener(this);        //textField 에서 이벤트 발생
        bt.addActionListener(this);        //clear 버튼 이벤트 발생
        bt1.addActionListener(this);    //End 버튼 이벤트 발생 보낸다
    }
 
    @Override
    public void actionPerformed(ActionEvent e)     //이벤트를 사용하기위한 메소드 생성
    {
        if(e.getSource() == tf)        //ActionEvent 를 받았는데 내용이 tf면
        {
            String str = tf.getText().trim();     //str에 textField에 있는 내용을 가져옴
            
            if(str == null || str.length() == 0)         //str에 null 이거나 str의 길이가 아무것도 없다면
            {
                return;                                    //그냥 반환한다
            }
            try
            {    
                InetAddress[] ia = InetAddress.getAllByName(str);
                //내 컴퓨터 정보출력
                InetAddress ia1 = InetAddress.getLocalHost();        //로컬의 IP주소를 얻어서 ia1 에 넣는다
                ta.append("Localhost name : " + ia1.getHostName()+"\n");    //textArea에 ia1의 호스트이름을 추가한다
                ta.append("Localhost Address : "+ia1.getHostAddress()+ "\n\n");    //textArea에 가져온 hostAddress를 추가한다.
                
                //원격 컴퓨터 정보출력                
                for(int i=0; i< ia.length; i++)
                {
                    ta.append("Remotehost[] name : " + ia[i].getHostName()+"\n");    //textArea에 ia의 호스트이름을 추가한다
                    ta.append("Remote Address[] : "+ia[i].getHostAddress()+ "\n\n");    //textArea에 가져온 hostAddress를 추가한다.
                    
                    //ta.setText(""); setText는 앞에껄 지우고 덮어쓰기하는것이다. 
                }
            }
            catch(UnknownHostException ee)
            {
                ta.setText("Ereer = "+ee.toString());
                return;
            }
        }
        else if(e.getSource() == bt)        //ActionEvent 가 bt이면
        {
            tf.setText("");        //textField를 공백으로 바꾼다
            ta.setText("");        //textAria를 공백으로 바꾼다
            tf.requestFocus();    //textField 로 커서를 놓는다
        }
        else if(e.getSource() == bt1)
        {
            System.exit(0);
        }
        
    }
}
 
public class Ex02_04 
{
    public static void main(String[] args)
    {
        Ex02_04Sub es = new Ex02_04Sub("ip관리하기");        //Frame으로 상송받은 Ex02_04Sub 으로 
                                                        //이름이 ip관리하기로 객체 생성
    }
}
 




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

 
import java.net.*;
import java.io.*;
 
public class Ex02_05 
{
    public static void main(String[] args)
    {
        InetAddress ia = null;
        Socket soc = null;
        OutputStream os = null;
        InputStream is = null;
        try
        {
            ia = InetAddress.getByName("www.naver.com");            
        }
        catch(UnknownHostException ee){}
        try
        {
            soc = new Socket(ia,80);    //Socket을 이용하여 ia=주소,80=포트번호로 연결
//            soc = new Socket("www.naver.com",80); //으로도 사용가능
            
            os = soc.getOutputStream();
            is = soc.getInputStream();
            /*
             OutputStreamWriter osw =new OutputStreamWriter(os);
             BufferedWriter bw = new BufferedWriter(osw);
             PrintWriter pw = new PrintWriter(bw);
             
             pw.println("test");   // 이건 지정한 사이트로 전송된다
             pw.flush();
             */
        }
        catch(IOException ee){}
        System.out.println("soc = "+soc);
        System.out.println("os = "+ os);
        System.out.println("is = "+ is);
    }
}
 




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

 
// 웹페이지 긁어오기
 
import java.net.*;
import java.io.*;
 
public class Ex02_06 
{
    public static void main(String[] args)
    {
        InetAddress ia = null;        //사이트 주소 저장하기위한 준비
        Socket soc = null;            //네트워크를 처리할 수 있는 소켓 객체 생성        
//        DataOutputStream dos = null;        //이렇게 쓰는방법이있다
//        DataInputStream dis = null;
        OutputStream os = null;
        InputStream is =null;
        
        try
        {
            ia = InetAddress.getByName("www.naver.com");
        }
        catch(UnknownHostException ee){}
        
        try
        {
            soc = new Socket(ia,80);            //포트를 열어주고
            
            /*    //이렇게 쓰는 방법이있다
             * dos =new DataOutputStream(            //출력형식
                 new BufferedOutputStream(
                    soc.getOutputStream()));
            dis = new DataInputStream(            //입력형식    
                  new BufferedInputStream(
                  soc.getInputStream()));
             */
            os = soc.getOutputStream();
            is = soc.getInputStream();
            
                
            
            String str = "get http://www.daum.net/index.html http1.0 \r\n\n";
                    //get 방식           full 주소                    버전       엔터두번
            os.write(str.getBytes());    //서버에게 이야기 한다 write 메소드는 byte밖에 보낼수 없다.str을 Byte방식으로 분할 전달 한다.
            while(true)    //이제 받아서 화면상에 보여줘야된다
            {        
                int xx = is.read();        //soc.getInputStream(); 에서 받은 내용을 xx에 입력
                if(xx == -1)            //더이상 내용이 없으면
                {
                    break;                
                }
                System.out.print((char)xx);
            }
            os.close();
            is.close();
            soc.close();
            
            
            
        }
        catch(IOException ee){}
    }
}
 







Posted by 앗뜨거
,
728x90

출처:http://gyuha.tistory.com/289

Eclipse 정말 좋은 툴입니다. 무료에다가 엄청나게 많은 지원... 느려터졌지만, 포기하기 힘든 툴 같습니다.
이 느린 이클립스를 조금이라도 빠르게 사용하기 위한 팁을 모아 봤습니다.

여기서 나오는 팁은 3.5 기준입니다.


1. 이클립스 옵션 조정

우선 이클립스 폴더안에 있는 eclipse.ini에 다음을 추가 하거나 수정해 줍니다.

-Xverify:none
-XX:+UseParallelGC
-Xms256M
-Xmx512M 


-Xverfify : 

초기 시동시 verfify체크를 하지 않습니다. 당연히 시동이 빨라 집니다. 플러그인아 features에 문제가 발생 할 수 있습니다. 플러그인아 변경 사항이 있을 경우에는 이걸 키고 시동하시고, 별 문제 없으면 추가해서 사용하세요.
-XX:+UseParallelGC :
Parallel Collector를 사용 하도록 합니다. 패러럴로 모아 준다니.. 빨라지겠죠.. 체감 속도가 올라 갑니다. 다중 프로세서를 사용하시는 분들은 필수.
-Xms256M
이클리스가 시작시 잡는 메모리(256메가 바이트)
-Xmx512M
이클리스가 사용하는 최대 메모리(512메가 바이트). 메모리가 어느 정도 되신다고 생각 하시면, 늘려 주셔도 됩니다.



2. 중간중간 메모리를 정리해 주자


Window > Perference > General에 보면 Show heap status라는 옵션이 있습니다. 이걸 켜 주시면, 화면 오른쪽 하단에 아래와 같은 아이콘이 생깁니다.
사용하다가, 메모리가 많이 올라 갔다 싶거나, 느려졌네 싶을때 마다, 옆에 쓰레기통 아이콘을 눌러 주세요. 메모리가 확 줄어 듭니다. 그러면 좀 더 쾌적하게 작업을 하 실 수 있을 겁니다.

추가로 메모리는 좀 들긴 하지만 자동 가비지 컬랙션 해주는 플러그인을 설치 하셔도 됩니다.




3. 사용하지 않는 검사를 없애 준다.

필요 이상으로 많은 검사를 많이 해서 느려지는 경우도 많습니다. HTML이나 그외 등등의 검사도 거기에 포함되죠, 딱 필요한 검사만 하도록 합니다.
Window > Perferences > Validation에서 자기가 사용하는 옵션을 켜 줍니다. 저같은 경우에는 PHP를 요즘 사용하고 있어서.. PHP만 켜 줬습니다.

그리고, 영어 스펠링 검사입니다. 영어 단어를 잘 모르지만, 느려지는건 못 참아서.. 그냥.. 꺼 줬습니다.
Window > Prereces > General > Editors > Spellings에서 Enable spell checking을 과감하게 꺼 줍니다.



5. 잘 안 쓰는 기능 끄기 및 사용습관 바꾸기.


코딩하는 공간에서 잘 사용하지 않거나, 있는둥 마는둥 하는 기능을 꺼 줍니다.

Automatic folding 끄기
코드 옆에 더하기 표시 나와서, 코드를 펼쳤다.. 닫았다 하는 기능입니다. 눈에도 안 띄고 전 잘 안 쓰는 기능이라서 꺼 버립니다.
Window->Preferences->Java(또는 사용언어)->Editor->Folding 모든 옵션을 해제(disable) 합니다.옵션을 모두 해제(disable)한다.

Automatic Code Insight 끄기
Window->Preferences->Java(또는 해당언어)->Editor->Code Assist 에서 Enable auto activation 항목을 해제(disable)합니다. 자동으로 동작하는 code assist 기능은 꺼지지만, ctrl+space러 여전히 code assist를 사용할 수 있습니다. 손이 좀 불편하면 이클립스가 빨라집니다 -_-;;

사용하지 않는 플러그인 삭제 하기
이클립스를 패키지로 설치 하도 보면, 사용하지 않는 기능도 많이 들어 가게 됩니다. 그리고 이것저것 설치하기도 하고요. 그 중에서 사용하지 않는 플러그인은 삭제해 주세요.

사용하지 않는 프로젝트 닫아주기
현재 작업과 관련없는 프로젝트를 닫아 주세요. 이클립스가 접근하는 파일의 갯수를 줄여 줍니다.

사용하지 않는 파일은 닫아주기
작업하다가 사용하지 않는 창은 닫아주세요. 메모리가 절약됩니다. 이클립스를 종료시 편집하던 문서를 모두 닫고 종료하는건 다음에 이클립스를 띄울때 좀 더 가볍게 띄울 수 있습니다. 그리고 Window->Preferences->General->Editors에서 Close editors automatically를 켜주세요. 그럼 아래 설정된 숫자만큼만 문서가 열립니다. 그 이상의 문서는 자동으로 닫아집니다. 이렇게 사용하면, 무심결에 많이 열린 파일이 적어집니다. 메모리도 절약 되고요.. ^^*

사용하지 않는 플러그인을 start list에서 제외하기
Window > Preferences > General > Startup and Shutdown에서, 불필요한 플러그인을 startup list에서 제외합니다. 이렇게 하면 이클립스 실행시 좀 더 가볍게 실행 할 수 있습니다.



6. 그래도 느리다.


좀 더 처절하게 가 보겠습니다.

이클립스가 설치된 폴더에 바이러스를 검사를 꺼보세요. 
백신마다 보면, 예외사항이 있을 겁니다. 거기서 이클립스가 설치 된 폴더를 예외에 넣어 주세요. 백신을 끄고 사용하면 더 좋지만, 그것 까지는 좀 그렇다면, 이 정도만 해 주세요.

작업하는 파일들과 이클립스 프로그램을 작은 파티션을 만들어서 관리해 주세요. 
헤더의 움직임을 최소화 해주고 빨라집니다. 하드디스크에서 디스크 조각모음하는것 보다 훨씬 좋습니다.





7. 그래도 느려서 못 해 먹겠다.

마지막으로 그래도 정말 안 되겠다.. 
어쩔수 없습니다. 호주머니를 여실 수 밖에, 
메모리를 늘리고 CPU를 최신으로 올리고, OS를 64bit로 올려 주세요. 
위에 껄 뭐 하려고 했나 싶을 정도로 빨라집니다. -_-;;;


Posted by 앗뜨거
,
728x90



Posted by 앗뜨거
,