2013년 8월 28일 수요일

주석 처리



애노테이션 (annotation)




: 컴파일러나 JVM 에게 전달하는 주석


JavaDoc 


2013년 8월 21일 수요일

추천도서



* 추천도서

코딩 호러의 이펙티브 프로그래밍 제프 앳우드



UML 관련

Applying UML And Patterns  LARMANCRAIG 저





SQL 관련

NEW SQL& PL/SQL  주종면 




소스분석 Tip

[참고] 소스분석 Tip

- 분석하고자 하는 메소드의 전체적인 흐름을 파악하는데 집중하자.

분석도중 메서드를 호출한다면일일이 해당 메서드로 들어가서 확인을 하지 말아라.
   (호출하는 메서드의 열할 정도만 알고 넘어가자!)

메소드 단위로 끊어서 무슨열할을 하는지만 파악하고 전체적인 흐름을 파악해라!

전체적인 흐름을 파악한 후에 세부 메소드를 확인하자.


전체적인 흐름 파악없이 세부 메서드를 들어가서 확인하면, 방향을 잃고 분석 또한 되지 않는다.

2013년 8월 16일 금요일

클래스 패턴 ( Adapter )

 NexenTire 클래스는 TitaniumWheel 클래스를 상속 받았다.

 이럴경우 Car 클래스의 형식에 부합되지 않으므로 쓸수가 없다.

 이때, 어댑터패턴형식이 나오게 된다.



면접시 질문


* 오버로딩과 오버라이딩의 차이점과 특징을 애기하세요.

* 빅데이타는 무엇인가.

MySQL 이클립스와 연동









  

  MySQL 파일에 원하는 jar파일을 복사> 원하는 곳으로 옮긴다.




이와 같이 원하는 곳으로 옮기다음 





원하는 파일에서 우클릭 > properties






Java Build Path에 들어가 add jar 또는 extenal add jar를 클릭하여 추가한다  그러면 My SQL커넥터가 설치되어 이클립스에서 My SQL라이브러리를 사용 가능하여 이클립스에서 My SQL로 바로 보낼 수 있게 된다



SQL 기본 문법

* 강윤원님 블로그이미지(펌 :)

* create table 테이블명(
   컬럼명 자료형 not null,
   컬럼명 자료형,
   ....................,
);

- 테이블 및 테이블이 가질 자료형을 만든다 not null은 무조건 값이 입력되야하- - 는 컬럼에 붙여준다

* alter table 테이블명

- 테이블관련 내용 변경시 이용하는 명령어

* add primary key(컬럼명)
- 컬럼을 primary key로 지정한다

*insert into 테이블명(컬럼명, 컬럼명, 컬럼명....)
  values(값, 값, 값, 값...)

- 테이블의 컬럼에 값을 집어넣는다 컬럼명생략시 순서대로 값이 입력되고
- 필수 컬럼(not null선언)의 값은 무조건 입력되어야한다

* desc MEMBERS;
- 테이블내의 내용을 보여준다

* drop tablc 테이블명
- 테이블 삭제(테이블의 모든 데이터도 함께 삭제된다.)


select
    *
from
    MEMBERS;

MEMBERS테이블의 모든 내용을 찾아 보여주는 명령어

-----------------------------------------------------------------
where절이 붙을시 조건에 따라 검색할 수 있다

select
    *
from
where
컬럼명 연산자 값 and /or 컬럼명 연산자 값...

select
    *
from
where
    MNAME = '임꺽정'
        and PHONE = '111-1112';

select
    AGE
from
    MEMBERS
where
    MNAME = '일지매';

select
    *
from
    MEMBERS
where
    AGE > 30 or MNAME = '임꺽정';

select
    *
from
    MEMBERS
where
    AGE <> 40;
/*40이 아닐때만 select My SQL에서는 null이더라도 select되지않는다
is null로만 가능
*/

select
    *
from
    MEMBERS
where
    AGE >= 30;

문자에서의 대소 비교 연산자
문자에서도 대소비교가 가능하다
조심해야할점
이름의 부분으로 검색할 경우
당연히 그이름도 포함된다... 왜냐면 이름같은 문자는 숫자로 순서대로 저장
ex:) 일, 일지, 일지마 까지는 일지매 검색!
 일지매는 일지매와 같은 수이므로 이때부터 검색 안됨

select *
from MEMBERS
where MNAME > '일지';

select *
from MEMBERS
where REG_DATE > '2013-08-11';

select *
from MEMBERS
where REG_DATE >= '2013-08-12' and REG_DATE < '2013-08-15';



-------------------study----------------------


like절 
=은 동등비교이므로 성씨비교같은 각각의 동등에 대해 비교가 불가능하다 그래서 나온 개념으로 컬럼 like '성씨%'로 비교해주면 된다

%의 의미는 0자 이상...이라는 의미로 단어 앞 또는 뒤, 중간에 붙일 수 있으며 그 사이의 글자가 얼마나 될 지 모를 경우 또는 그 값을 포함한 모든 값을 찾고 싶을때 이용가능하다

select *
from MEMBERS
where MNAME like '임%'; -> 임으로 시작하는 모든 글자를 찾는다( '임' 포함)

select *
from MEMBERS
where MNAME like '%꺽정'; -> 뒤에 두글자가 ~꺽정인 모든 글자를 찾는다('꺽정' 포함)

select *
from MEMBERS
where MNAME like '%정%'; -> 중간사이의 글자가 정인 모든 글자를 찾는다('정' 포함)

_(언더바)의 의미 %와 비슷하지만 _(언더바)는 언더바의 갯수만큼의 글자만 찾는 것으로
'임_정'일 경우 앞글자는 임, 뒷글자는 정인 3글자 단어만 찾는다

select *
from MEMBERS
where MNAME like '임_정'; -> 앞글자는 임, 뒷글자는 정인 3글자 단어

컬럼명 between a and b ->
 x>= a and x<= b 이런 경우에 구하는 것

select *
from MEMBERS
where AGE >= 20 and AGE <=30;

select *
from MEMBERS
where AGE between 20 and 30;

컬럼명 in (값, 값, 값) -> 컬럼 값이 괄호안의 값과 같은 것만... 
from MEMBERS
where AGE in (20, 35, 40);

컬럼명 not in (값, 값,...)
select *
from MEMBERS
where AGE not in (20, 35, 40);

/* not */
select *
from MEMBERS
where not MNAME='임꺽정';

select *
from MEMBERS
where MNAME<>'임꺽정';


--------------------------study---------------


select *
from MEMBERS
where EMAIL='leem@test.com';

위와 같이 특정멤버를 찾을때는 primary key로 찾아야한다.



데이터 변경
  update 테이블명 set 컬럼명 = 값, 컬럼명= 값, ...
  where 조건을 집어넣으면 조건 생성
 primary key를 이용해서만 찾아서 바꿀 수 있다
(primary key로 지정된 컬럼 값은 못 바꾼다)

update MEMBERS set REG_DATE='2013-08-10'
where EMAIL='leem@test.com';

update MEMBERS set REG_DATE='2013-08-11'
where EMAIL='hong@test.com';

update MEMBERS set REG_DATE='2013-08-12'
where EMAIL='ill@test.com';

update MEMBERS set REG_DATE='2013-08-13'
where EMAIL='eee@eee.com';

update MEMBERS set
MNAME = '홍길동2',
PHONE = '112-1111',
BLOG = 'hong.blog.com',
AGE = 20,
REG_DATE = now()
where
EMAIL = 'hong@test.com';



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


데이터 삭제
delete from 테이블명
where 조건


-----delete from MEMBERS이게 중요하다 이거만 쓰면 다 날아갈 수 있다---

SET SQL_SAFE_UPDATES = 0;
SET SQL_SAFE_UPDATES = 1;


------------------------------안전모드 해체 및 설정-----------------

delete from MEMBERS
where MNAME = '일지매';

select *
from MEMBERS;

delete from MEMBERS
where PHONE like '%2' or PHONE like '%3';

delete from MEMBERS;

select *
from MEMBERS;

delete from MEMBERS
where EMAIL = 'hong@test.com';


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


2013년 8월 15일 목요일

8월16일 예제2_Tire

package net.bitacademy.java41.step10.test2.ex1;

import net.bitacademy.java41.step10.test2.ex2.HankookTire;
import net.bitacademy.java41.step10.test2.ex2.KumhoTire;

public class Tire {


protected String maker;
protected double diameter;
protected String dotNo;

public String getCompany() {
return maker;
}
public Tire setCompany(String company) {
this.maker = company;
return this;
}

public double getRadius() {
return diameter;
}
public Tire setRadius(double radius) {
this.diameter = (radius*2);
return this;
}

public String getCreatedDate() {
return dotNo;
}
public Tire setCreatedDate(String createdDate) {
this.dotNo = createdDate;
return this;
}
}

예제2_Tico

package net.bitacademy.java41.step10.test2.ex1;

public class Tico {
//HankookTire t1, t2, t3, t4, t5;
HankookTire[] tires = new HankookTire[5];

public Tico() {
tires[0] = new HankookTire("(주)한국타이어", 16.5, "1013");
tires[1] = new HankookTire("(주)한국타이어", 16.5, "1013");
tires[2] = new HankookTire("(주)한국타이어", 16.5, "1013");
//tires[3] = new HankookTire("(주)한국타이어", 16.5, "1013");
tires[4] = new HankookTire("(주)한국타이어", 16.5, "1013");
}

public void printInfo() {
int count = 0;
for(int i = 0; i < tires.length ; i++ ) {
if (tires[i] != null) {
count++;
}
}
System.out.println("타이어 개수: " + count + "개");

for(int i = 0; i < tires.length; i++) {
if (i < 4) {
System.out.print((i + 1) + "번 타이어: "); 
} else {
System.out.print("스페어 타이어: "); 
}

if (tires[i] != null) {
System.out.println(
tires[i].getMaker() + "," +
(tires[i].getRadius() * 2) + ", " +
"20" + tires[i].getDotNo().substring(2, 4) + "년 " +
tires[i].getDotNo().substring(0, 2) + "주차");
} else {
System.out.println("없음");
}
}

}

public static void main(String[] args) {
Tico c1 = new Tico();
c1.printInfo();
/* printInfo()의 출력결과:
* 타이어 개수: 4개
* 1번 타이어: (주)한국타이어, 33, 2013년 10주차
* 2번 타이어: (주)한국타이어, 33, 2013년 10주차
* 3번 타이어: (주)한국타이어, 33, 2013년 10주차
* 4번 타이어: (주)한국타이어, 33, 2013년 10주차
* 스페어 타이어: 없음
*/
}

}

예제2_KumhoTire

package net.bitacademy.java41.step10.test2.ex2;

public class KumhoTire extends Tire {
protected boolean wide;

public KumhoTire(String comp, double diam, String created) {
maker = comp;
diameter = diam;
dotNo = created;
}
public boolean isWide() {
return wide;
}
public KumhoTire setWide(boolean wide) {
this.wide = wide;
return this;
}
}

예제2_HankookTire

package net.bitacademy.java41.step10.test2.ex2;

public class HankookTire extends Tire {
protected boolean snow;
protected int maxSpeed;

public HankookTire(String maker, double radius, String dotNo) {
this.maker = maker;
this.diameter = radius * 2;
this.dotNo = dotNo;
}

public boolean isSnow() {
return snow;
}
public HankookTire setSnow(boolean snow) {
this.snow = snow;
return this;
}
public int getMaxSpeed() {
return maxSpeed;
}
public HankookTire setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
return this;
}


}

8월16일 예제1_Tire

package net.bitacademy.java41.step10.test2.ex1;

import net.bitacademy.java41.step10.test2.ex2.HankookTire;
import net.bitacademy.java41.step10.test2.ex2.KumhoTire;

public class Tire {


protected String maker;
protected double diameter;
protected String dotNo;

public String getCompany() {
return maker;
}
public Tire setCompany(String company) {
this.maker = company;
return this;
}

public double getRadius() {
return diameter;
}
public Tire setRadius(double radius) {
this.diameter = (radius*2);
return this;
}

public String getCreatedDate() {
return dotNo;
}
public Tire setCreatedDate(String createdDate) {
this.dotNo = createdDate;
return this;
}
}

예제1_Tico

package net.bitacademy.java41.step10.test2.ex1;

public class Tico {
//HankookTire t1, t2, t3, t4, t5;
HankookTire[] tires = new HankookTire[5];

public Tico() {
tires[0] = new HankookTire("(주)한국타이어", 16.5, "1013");
tires[1] = new HankookTire("(주)한국타이어", 16.5, "1013");
tires[2] = new HankookTire("(주)한국타이어", 16.5, "1013");
//tires[3] = new HankookTire("(주)한국타이어", 16.5, "1013");
tires[4] = new HankookTire("(주)한국타이어", 16.5, "1013");
}

public void printInfo() {
int count = 0;
for(int i = 0; i < tires.length ; i++ ) {
if (tires[i] != null) {
count++;
}
}
System.out.println("타이어 개수: " + count + "개");

for(int i = 0; i < tires.length; i++) {
if (i < 4) {
System.out.print((i + 1) + "번 타이어: "); 
} else {
System.out.print("스페어 타이어: "); 
}

if (tires[i] != null) {
System.out.println(
tires[i].getMaker() + "," +
(tires[i].getRadius() * 2) + ", " +
"20" + tires[i].getDotNo().substring(2, 4) + "년 " +
tires[i].getDotNo().substring(0, 2) + "주차");
} else {
System.out.println("없음");
}
}

}

public static void main(String[] args) {
Tico c1 = new Tico();
c1.printInfo();
/* printInfo()의 출력결과:
* 타이어 개수: 4개
* 1번 타이어: (주)한국타이어, 33, 2013년 10주차
* 2번 타이어: (주)한국타이어, 33, 2013년 10주차
* 3번 타이어: (주)한국타이어, 33, 2013년 10주차
* 4번 타이어: (주)한국타이어, 33, 2013년 10주차
* 스페어 타이어: 없음
*/
}

}

예제1_KumhoTire

package net.bitacademy.java41.step10.test2.ex1;

public class KumhoTire {
protected String company;
protected double diameter;
protected String createdDate;
protected boolean wide;

public KumhoTire(String comp, double diam, String created) {
company = comp;
diameter = diam;
createdDate = created;
}

public String getCompany() {
return company;
}
public KumhoTire setCompany(String company) {
this.company = company;
return this;
}
public double getDiameter() {
return diameter;
}
public KumhoTire setDiameter(double diameter) {
this.diameter = diameter;
return this;
}
public String getCreatedDate() {
return createdDate;
}
public KumhoTire setCreatedDate(String createdDate) {
this.createdDate = createdDate;
return this;
}
public boolean isWide() {
return wide;
}
public KumhoTire setWide(boolean wide) {
this.wide = wide;
return this;
}
}

예제1_HankookTire

package net.bitacademy.java41.step10.test2.ex1;

public class HankookTire {
protected String maker;
protected double radius;
protected String dotNo;
protected boolean snow;
protected int maxSpeed;

public HankookTire(String maker, double radius, String dotNo) {
this.maker = maker;
this.radius = radius;
this.dotNo = dotNo;
}

public String getMaker() {
return maker;
}
public HankookTire setMaker(String maker) {
this.maker = maker;
return this;
}
public double getRadius() {
return radius;
}
public HankookTire setRadius(double radius) {
this.radius = radius;
return this;
}
public String getDotNo() {
return dotNo;
}
public HankookTire setDotNo(String dotNo) {
this.dotNo = dotNo;
return this;
}
public boolean isSnow() {
return snow;
}
public HankookTire setSnow(boolean snow) {
this.snow = snow;
return this;
}
public int getMaxSpeed() {
return maxSpeed;
}
public HankookTire setMaxSpeed(int maxSpeed) {
this.maxSpeed = maxSpeed;
return this;
}


}