728x90

public : 모든 패키지/클래스에서 접근 가능

protected 모든 패키지/클래스에 관련없이 자식클래스만 접근 가능

default : 같은 패키지 내에서만 접근 가능

private : 같은 클래스 내에서만 접근 가능

 

열거된 순서는 허용하는 수치가 가장높은 열거 순이다.

 

static :객체로 접근해야 하는것을 클래스로 접근할 수 있도록 설정해 주는것

final : 변경될수 없는 클래스, 메소드, 변수 앞에 붙어서 상속을 할수 없거나 오버라이딩을 할수 없도록 한다.

728x90

'JAVA' 카테고리의 다른 글

Signed와 Unsigned의 차이.  (0) 2013.10.07
퍼스펙티브(perspective)  (0) 2013.10.01
getInstance, 싱글턴 패턴(Singleton Pattern)  (0) 2013.04.01
jericho parsing(제리코 파싱)맛보기...  (0) 2012.07.19
JSON 형식 맛보기 ...  (0) 2012.07.19
Posted by 정망스
,

Signed와 Unsigned의 차이.

JAVA 2013. 10. 7. 22:56
728x90

자바나, C나, C++이나, 자바스크립트나, 어디서든 내가 공부할때마다 종종 나오는게 signed, unsigned라는 키워드였다.


늘 글을 볼때마다 대충 이해하고 넘어갔는데 다른 공부하다가 또 나오면 막상 이게 뭐였더라.........


도저히 안되겠다 싶어. 정리좀 해야겠다.


나에게 이해하기 쉽게 하도록 나는 '음수를 표현하고 안하고의 차이'다 라고 머리에 이제 집어 넣었다.


Signed : 부호를 가지는 값 (양수, 음수의 구별 OK)

Unsigned : 부호를 가지지 않는 값 (오직 양수 OK)


정리하자면 이렇다. 그럼 약간 세부적으로 들어가서 한번 알아보자


signed char

unsigned char


이렇게 각각 8비트 타입이 있다고 하자. 


signed음수표현까지 포함을 하기때문에 2의 보수 체계를 사용하고 있고 부호를 구별하는 부호 비트인 MSB가 필요하다.(MSB가 0이면 양수, 1이면 음수)


unsigned는 저런 부호 비트가 없기때문에 음수는 표현하지 못하지만, 그만큼의 양수의 범위를 두 배로 더 늘리는 역할을 하게 된다.


즉 char 타입은 8비트이기때문에


signed char은 -128~127의 범위 표현이 가능하게 되고

unsigned char은 0~255의 범위 표현이 가능하게 된다.




숫자 3을 1바이트를 2진수로 한번 기록해보자. (3은 2진수로 00000011 이 된다.)


Unsigned는 다음과 같이 할당된다. 

 0

 0

 0

 0

 0

 0

 1

 1


Signed는 음수를 표현해야 하기 때문에 제일 앞 비트인 MSB를 하나 소비한다.

(3인 양수라 MSB가 0 이지만 음수라면 1이 될것이다.)

 0

 0

 0

 1





728x90
Posted by 정망스
,

퍼스펙티브(perspective)

JAVA 2013. 10. 1. 22:48
728x90

보통 자바 툴을 사용하실때 많이 사용하는것이 이클립스다.

 

이클립스에는 근데 자바 뿐만 지원하는것이 아니라 다른 환경도 지원한다.

사람들이 퍼스펙티브 svn으로 변경해서 봐라, java ee로 해라 하는등

퍼스펙티브라는 말을 종종 들을수 있다.

 

 

java ee 옆에 보이는 자그마한 플러스 모양의 아이콘이 보이는가. 그게 퍼스펙티브를 변경하는 버튼이다.

클릭하게 되면

 

 

퍼스펙티브 선택창이 열리고 선택해서 OK 되면 퍼스펙티브가 변경된다.

 

프로그래머에게 있어서 코드를 계속해서 쳐보는것도 중요하지만 일상속 대화에 전문용어들이 마구마구 나오면

나조차도 늘 혼란스럽다. 전문 용어도 좀 알아둬야 된다는 생각이 많이 든다.

 

728x90
Posted by 정망스
,
728x90

싱글턴 패턴

- 인스턴스가 하나뿐인 특별한 객체

 

 

 

위 코드에서 MySinlgleton() 은 같은 패키지 내에서는 사용이 가능하나, 다른 패키지에서는 인스턴스를 만들 수 없는 클래스이다.

그 이유는 생성자가 private로 선언되어 있기 때문이다.

 

 

 

다른 패키지에서 사용하기 위해서는 getinstance() 라는 정적 메소드를 만들어서 사용 하면 된다.

MySinlgleton.getinstance(); 를 호출하게 되면 인스턴스를 계속 만들 수 있는 것이다.

 

 

 

하지만 하나뿐인 인스턴스 객체를 만들고 다면, 이렇게 하면, 조건문을 통해 생성되어있는지 없는지를 구별하여 반환하기 때문에 싱글턴패턴이 된다. 하지만 여기서 끝나는 것이 아니다.

 

 

 

만약 두개의 스레드가 위 코드를 실행하게 된다면, 내 의도와는 상관없이 두개의 인스턴스(Object1, Object2)가 생성되게 되버린다.

 

문제 해결방안에는

 

1. getinstance()를 동기화 시키는 것이다.

 

 

-synchronized 키워드만 붙이면 한 스레드가 메소드 사용을 끝내기 전까지는 다른 스레드는 메소드를 사용할수가 없게된다. 따라서 동시에 실행될 수가 없다.

-단 속도 문제가 생길 수 있다.(오버헤드)

 

2. 인스턴스를 처음부터 만들어 버린다

 

 

-정적 초기화 부분에서 Singleton의 인스턴스를 생성한다

-JVM에서 유일한 인스턴스를 생성하기 전에는 그 어떤 스레드도 uniqueinstance 정적 변수에 접근할 수 없다.

 

3. Double-Checking Locking(DCL)을 써서 getinstance()에 동기화한다.

 

-인스턴스가 생성되어 있는지 확인한 다음 생성되어 있지 않았을때만 동기화한다.

-처음에만 동기화를 하고 나중에는 동기화를 할 필요가 없다

-이렇게 함으로써 속도문제가 개선되고, 오버헤드를 줄이게 된다.

728x90

'JAVA' 카테고리의 다른 글

Signed와 Unsigned의 차이.  (0) 2013.10.07
퍼스펙티브(perspective)  (0) 2013.10.01
jericho parsing(제리코 파싱)맛보기...  (0) 2012.07.19
JSON 형식 맛보기 ...  (0) 2012.07.19
JSON 형식(JavaScript Object Notation)  (0) 2012.07.19
Posted by 정망스
,
728x90

 

제리코 파싱을 써서 .. 네이버 실시간 검색어 순위를 한번 뽑아 와본건데요

그냥 제가 짠 소스라 더럽긴 한데 .. .  = =;;;;;;;;;

참고가 되시길 .. .

 

728x90

'JAVA' 카테고리의 다른 글

퍼스펙티브(perspective)  (0) 2013.10.01
getInstance, 싱글턴 패턴(Singleton Pattern)  (0) 2013.04.01
JSON 형식 맛보기 ...  (0) 2012.07.19
JSON 형식(JavaScript Object Notation)  (0) 2012.07.19
jsoup parsing(파싱)  (0) 2012.07.19
Posted by 정망스
,


맨 위로
홈으로 ▲위로 ▼아래로 ♥댓글쓰기 새로고침