음.. 어렵다 이개념
보통 인덱스는 두가지 종류로 나뉘나 보다.

클러스터드 인덱스                         넌 클러스터드 인덱스

1. 물리적으로 행을 재배열한다            그렇지 않다
2. 비교적 용량이 작다                        비교적 크다
3. 최대 갯수가 테이블당 1개                테이블당 249개
4. 인덱스의 레벨이 작다                     1만큼 더 크다
5. 상대적으로 검색속도가 빠르다         느리다
   (범위조회에 유용)
6. 선택도가 낮다(밀도가 높다)            선택도가 높다(밀도가 낮다)



1. 클러스터드 인덱스는 우선 물리적으로 행을 재배열 한다
무슨 말이냐...

다음과 같은 테이블을 생성했다 쳤을 때

create table test_index{

log_data char(8) not null,
id char(1) not null,
.....

primary key(log_data,id)

}

물론 저 조합으로 만들어진 주키가 중복없이 재 기능을 한다는 가정하에
20130611 a data
20130612 a data
20130612 c data
20130612 b data
20130608 c data

이런 순서로 insert를 했다.
실제 db에는 어떻게 저장이 될까??

단일 속성으로 이루어진 주키라면 주키의 오름차순이나 내림차순으로 정렬이 되어 저장이 된다.
=>이게 물리적으로 행을 재배열 한다는 뜻

이 경우에는 2가지 속성으로 이루어진 합성키가 주키의 역할을 하고있는데 앞에 쓰여진 것일 수록 우선순위가 높은가보다. 날짜순 정렬 -> id 순 정렬.. 대충 이런개 클러스터드 인덱스이다.

20130608 c data
20130611 a data
20130612 a data
20130612 b data
20130612 c data

반대로 넌클러스터드 인덱스는 조회문 향상을 위헤 인덱스를 생성해서 사용한다. 하지만 이 인덱스는 물리적으로 데이터가 정렬되지 않는다.

이건또 무슨말이냐... 조회문이라.. 쉽게 생각해서 클러스터드 인덱스가 사전이라면 넌클러스터드 인덱스는 책장 맨뒤에 주요단어들 모아놓은 그런 책이라고 생각해보자.

중요단어.................... p139
중요단어2...................p73

이런거 있잖아... 데이터를 가지고 어떤 위치(인덱스)에 있는지 조회한다고나 할까. 여튼 인덱스 테이블을 따로 만들어서 순서없는 데이터 테이블과 함께 데이터를 조회한다.  


2.용량 !!!!!

넌클러스터드 인덱스는 인덱스 페이지와 데이터페이지를 따로 관리하기 떄문에 비교적 용량이 더 크다.
(인덱스페이지... 테이블이라고 생각하면 되겠다)

http://lng1982.tistory.com/144

여기저기에서 지식을 모아다 작성하고는 있으나 가장 비중있게 참고했던 블로그의 출처를 살며시..
(b+트리 구조에서 클러스터드 인덱스와 넌클러스터드 인덱스의 데이터 찾는 방법 그림도 있음)

(귀찮아서..) 클러스터드 인덱스와 넌클러스터드 인덱스 모두 b+트리의 구조를 사용한다.(db 데이터를 대부분 이렇게 관리한다고 들었음)

무튼 클러스터드 인덱스는 리프레벨의 페이지가 곧 인덱스이자 데이터이므로 넌클러스터드 인덱스에 비해 낮은 레벨의 트리구조로 이루어져있다 이거다.


3.인덱스의 최대 갯수

인덱스가 물리적으로 정렬되어 있어서 한개 이상의 클러스터드 인덱스가 존재하면 꼬인다.... 뭔소린지 모르겠지만 영어사전에 abcd 말고 또다른 인덱스가 있다면 겁나 했깔리긴 할것 같다.
반면 !! 넌클러스티드 인덱스는 인덱스 테이블을 별도로 생성하여 사용하기때문에 인덱스가 많아도 상관 없다.
당장 학교에서쓰는 두꺼운 전공책을 펴고 뒤에 보면 ㄱ~ㅎ순의 인덱스 검색이랑 a~z 인덱스 검색이랑 2개나 있는걸 생각해보면 좀더 이해가 쉽지 않을까? 근대 이게 DB에선 최대 249개 쓸수 있단다.(왜그런지 나중에 찾아봐야지)

즉 클러스터드 인덱스는 인덱스와 데이터가 뭉쳐다니니까 인덱스가 여러개있음 안된다는거고 넌클러스터드는 인덱스가 몇개이던 어짜피 데이터와 따로노니까 결과적으로 데이터의 주소값만 얻으면 된다 이거다. 


4.인덱스 레벨 !! 은 용량얘기할때 했다.

5.검색속도 !!!

기본적으로 검색트리의 레벨이 큰만큼 속도가 오래 걸리기 마련이다. 게다가 그것이 범위검색이라면?
가령 20130613~20130615 사이에 로그를 뒤진다던가.. 이런 연속된 데이터의 검색이라면 클러스터드 인덱스가 압도적으로 빠를것이다.(넌 클러스터드 인덱스는 여기저기 흩어져있음..)


6.선택도..(생략, 할말도 없고 졸립다)


그렇다면... 넌클러스터드 인덱스는 왜쓰는걸까...? 정리하다보니 겁나 좋은점이 하나도 없어보인다.
(방금 넌클러스터드의 장점을 검색해봤다..)
구지 가져다 붙히자면 입력할 때 인덱스 정렬하는 시간을 단축할 수 있으므로 입력시간이 빠르다..?
음 뭔가 택배로 엄청 쌓아놓고 창고에 다 때려밖으면 일단 내방은 빨리 청소할 수 있지 않는가.,?

아마도 주키(인덱스) 속성이 아닌 데이터를 찾는데 유용하지 않을까 싶다. 음..? 그럴싸한데?
나만해도 방금 트리거 찾는다고 DB책 목차를 보기보단 맨뒤에 색인보고 찾았음..헐

그러니까 대한민국 공대생들은 전공책은 재본을 뜨기보단 돈좀 더 내고 사는게 바람직 하다고 생각한다. 내 알고리즘책 제본했는데 과대가 돈아낀다고 앞뒤 목차 다빼놓고 필요한부분만 제본을... 인덱스가 없다

아쉽게도 주변에 심도있게 물어볼 전문가가 없다... 취직하고싶다 빨리


-----(추가)----
이것저것 찾다보니 primary index라는 개념이 또... 클러스터디인덱스의 다른 말이란다. 기본색인 이라고도 불리우며 이는 주 키를 인덱스의 검색키로 하는 경우가 많지만 반드시 그럴 필요가 있는것은 아니다. 이는 밀집인덱스와 희소 인덱스로 구분된다.

밀집인덱스(dense) : 인덱스 엔트리는 파일에 있는 모든 검색 키 값에 대해 나타난다.
희소인덱스(spare) : 인덱스 엔드티른 검색 키 값에 대해 단지 몇개만 나타난다

사전을 보면

[abcdefg......vwxyz]  ---- >레벨 1. 사전 옆면에 a~z까지 표시된거
 ㅣㅣㅣㅣ.....ㅣㅣㅣ      ----> (나름 트리의 가지를 나타낸것)
[apple]....[apach]...[need]  -----> 레벨2. 사전 각 페이지의 상단 모퉁이에 시작과 끝 단어를 나타낸 단어들,
ㅣㅣㅣ       ㅣㅣㅣ      ㅣㅣㅣ                      얘네들을 희소인덱스라고 한다.
[] [] [] [] [] [] []..... [] [] []  -----> 레벨3. 우리가 찾고자 하는 단어, 밀집인덱스라고 한다. 실제로 밀집                                                                   인덱스 들은 각 단어를 정의하는 풀이문장들과 연결되어있다.
                                                                  (데이터베이스에서 주키가 나머지 속성값들과 연결되있음)



'~ 2014 > Database' 카테고리의 다른 글

트랜잭션  (0) 2014.06.15
트리거 trigger  (0) 2014.06.14
DDL / DML / DCL  (0) 2014.06.13

db를 쓰다보면 영역제약이라는게 있다.
이를테면 고딩들 관리하기 위해 나이는 17~19살이라던지
물론 예외는 있지만 배제해놓고...

트리거 : 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다(위키백과)
           묵시적으로 실행되는 프로시저로서 DBMS에 의해 관리되는 규칙, db에 저장되어있다.

쉽게말해서 insert update delete 쿼리(select 문과 달리 데이터 값을 변경하는 쿼리문)를 
실행할 때 실행하기 전이나 후에 제약따위를 걸어 변경을 허락하지 않거나  변경 전후값을
출력할 때 사용된다.



행 트리거 : 컬럼의 각 행의 데이터 행 변화가 생길떄마다 실행되며, 그 데이터 행의 실제값을 제어할 수 있다.
문장 트리거 : 트리거 사건에 의해 단 한번 실행되며, 컬럼의 각 데이터 행을 제어할 수 없다.

사진 출처 : http://www.gurubee.net/lecture/1076


'~ 2014 > Database' 카테고리의 다른 글

트랜잭션  (0) 2014.06.15
클러스터드 인덱스 / 넌클러스터드 인덱스 / primary 인덱스  (0) 2014.06.15
DDL / DML / DCL  (0) 2014.06.13

코드의 확장성과 재사용성을 높이기위해...

당신은 인쇄공장 사장의 의뢰를 받고있는 회사의 소속 개발자야
명함 클래스 하나로 고객의 다양한 주문을 출력하고 싶어
명함 클래스는 print 기능이 있어

손님 1 : name
손님 2 : name , brand , phoneNumber
손님 3 : name , email

음...

또 훨씬 많은 다양한 손님들이 있겠지?
클래스에서 객체를 만들어서 객체.print()를 하기위해서
저 많은 속성과 손님 성향에 따른 메소드를 다 구현해놓는건 굉장히 쓰레기같은 짓이야

새로운 타입의 고객이 생길때마다 나는 이 클래스를 수정하고 경우에 따라 print213()과 같은 메소드를
추가하고 그것을 [출력] 버튼과 몇백줄의 switch문을 연결시켜야 하거든

class NameCard{
    String name;
    String email;
    String brand;
        ....
    void print1(){ // 이름만 출력 }'
    void print2(){ // 이름과 회사, 폰번호 출력 };
    void print3(){ // 이름과 이메일 출력 };
         ...
}

이처럼 쓰레기같은 클래스를 만들어야 할꺼야
몇백명의 요구를 들어주기 위해 여려명의 개발자들이 코딩을 할꺼야(분명 저정도의 코드가 아니겠지...)
그런데 저따위 쓰레기코드를 한번 수정할때마다 모두에게 알리고 클레스파일을 넘기고 
대학교 1학년때 프로그램짜듯 넘기고 넘기고 넘기고 ....


하지만 인터페이스를 쓴다면

public interface PrintNameCard {
    public void print( NameCard nc );
}

음... 이것을 쓴다면...


class NameCard{

PrintNameCard pnc;

setNameCard(printNameCard pnc){
    this.pnc = pnc;
}

void print(){
    pnc.print();
}

}

그리고 상상해봐. 인터페이스를 확장(impliment)한 클래스를 그때그때(고객의 주문에 따라) 구현하고 그 객체를
NameCard 객체를 생성할때 인자로 넣어주면 깔끔...

그리고 몇백의 수요를 위해 다수의 개발자가 투입된다면 인터페이스를 상속받는 클래스 하나만 작성해서 모아두면 되기때문에 수정이나 관리 및 사용이 용이하다는거지..
또 나중에 비슷한 작업을 하기위해 전체를 다 만들 필요 없이 클래스 하나만 구현해서 그대로 써먹을수가 있을꺼야..


아 머리는 이해한다고 생각하는데 표현하기가 어렵다.. 주저리주저리 써놓긴 했는데
http://dante2k.egloos.com/199169 이곳으로 가보자

사실 이런 예를 들지 않아도 명확하게 이해하고싶다...


'~ 2014 > JAVA & ANDROID' 카테고리의 다른 글

java :: 제네릭  (0) 2014.06.19
java :; LinkedList ArrayList Vector  (0) 2014.06.18
JAVA :: 예약종료  (0) 2013.09.03
ANDROID :: 액티비티 투명처리  (0) 2013.07.19
ANDROID :: 환경설정창 만들기 preferenceScreen  (0) 2013.07.16

업캐스팅 / 다운캐스팅

업캐스팅 : 자식클래스의 객체를 부모클래스의 객체로 형변환 (묵시적)

String a = "hello";
Object b = a;  => 이 경우 데이터의 손실은 없으나 부모클래스에 있는 속성과 메소드만 접근할 수 있다.
                    => 업캐스팅 된 상태에서 캐스팅 전 하위 클래스의 메서드를 사용하고 싶다면
                        상위클래스를 추상클래스로 작성, 하위클래스의 메서드를 추상메서드로 정의해놓자.
                        추상클래스는 객체만 못만들 뿐 데이터 타입으로 정의 가능하다.

String c = (String)b ; => 원래 b가 가지고 있던 자식클래스의 정보를 다시 사용 가능

데이터 타입의 업캐스팅

int a = 3;
double b = a; => 묵시적으로 형변환이 가능하며 데이터 손실 없음


다운캐스팅 : 부모클래스의 객체를 자식클래스로 형변환(명식적)

Object a  = new Object();
String b = (String)a;

데이터타입의 다운캐스팅

double a = 3.3;
int b = (int)a; => 명시적으로 형변환을 해주어야 하며 소수점이하가 버려짐과 같은 데이터 손실 주의



박싱/언박싱
: 데이터는 value(값)형 데이터와 reference(참조)형 데이터로 나뉨.
 값형 데이터는 스텍영역에, 참조형 데이터는 힙 영역에 저장되어 사용된다.

박싱 : 값형 데이터를 참조형 데이터로 변환, 즉 스텍영역의 데이터를 힙 영역으로 옮긴다.
         묵시적으로 형변환이 가능하며 데이터 손실은 없다.

int a = 3;
Object b = a ;  or Integer c = a; 

언박싱 : 참조형 데이터를 값형 데이터로 변환, 즉 힙영역의 데이터를 스택영역으로 옮긴다.
            박싱 된 참조형 데이터를 다시 값 형 데이터로 되돌리기 위해 사용된다.

int d = (int)b;


결국 메모리 위치를 변화 시켜 가는 박싱과 언박싱은 비용이 많이 든다.
대표적으로 ArrayList 와 같은 object 형 컬렉션에 대량의 값 타입을 넣고 빼고 하여

발생하는 박싱,언박싱은 실제로 많은 속도 저하를 유발하는 원인이기도 하다.

(실제로 닷넷 2.0에서는 박싱,언박싱 (업캐스팅,다운캐스팅)의 비용을 줄이기 위해 지네릭이라는
 
새로운 개념이 도입되었다)


박싱/언박싱을 사용하는 코드는 런티임 에러를 발생하기 쉬우므로 사용시 주의하도록 

직렬화(Serialization) : 객체의 메모리를 통재로 저장할 수 있는 기법. 
역직렬(Deserialization) : 저장된 데이터를 이용하여 다시 복원하는 기술.

'~ 2014 > 기본개념' 카테고리의 다른 글

운영체제 스케쥴링 정책  (0) 2014.06.15
처리장치 속도  (0) 2014.06.15
RGB 색상 수  (0) 2014.06.12
프로그래밍(절차지향, 객체지향, 모듈)  (0) 2014.06.12

DDL : database definition languange

CREATE

CREATE TABLE table1(
    부품번호 INTEGER,
    부품내역 VARCHAR(20),
     제고량 INTEGER
);

뭐 이따위로 정의한다.

테이터형
CHAR(n) : 최대 n자 까지의 고정길이 데이터 형
VARCHAR(n) : 최대 n자 까지의 가변길이 데이터 형
DECIMAL(m,n) : 소수점을 나타내기 위한 데이터 형 3.141592 => m = 7 , n = 6
INTEGER :양이나 음을 위한 데이터 형식
FLOAT : 부동 소수점 형태의 숫자를 위한 데이터형
BOOLEAN : 참거짓

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

DML : database manipulation language

SELECT

SELECT 항목1,항목2
FROM 테이블
WHERE 조건;

-----

DISTINCT   ... distinct 명령어를 이용해서 중복된 행을 제거할 수 있다.

SELECT DISTINCT 항목1,항목2  
FROM...

-----

LIKE  ... 비슷한 char를 검색하는데 사용할 수 있다.

select..
from..
WHERE 공급자명 LIKE '%신%';

ex)
대%   => 대진공업, 대흥사 , 맨앞에 대가 들어가는 모든 문자열
%진% => 진아공업사, 삼진사, 진이 들어가는 모든 문자열
_신% => 2번째 글자에 신이 들어가는 문자열
삼진__ =>삼진으로 시작해서 총 4글자인 문자열

-----

BETWEEN .... 그 비트윈이다

select...
from...
WHERE 재고량 [NOT]BETWEEN 200 and 3000;

-----

IN

select..
from..
where 속성 [NOT] IN ('값1', '값2', '값3' );

-----

IS NULL ...항목명이 공값인지를 확인하기 위하여 사용된다.

select...
from...
where 부품내역 IS NULL;

-----

ODER BY ... 출력 항목들을 특별한 순서대로 정렬하고 싶을 때 사용

select..
from...
where...
ODER BY 항목명 [ASC/DESC], 두번째항목 [A/D]...

asc : 오름차순이며 디폴트는 이값을 가진다. 1234 ㄱㄴㄷㄹ
desc: 내림차순 321 ㄷㄴㄱ

-----

수식과 집단함수

집단함수 : SELECT 절이나 GROUP BY의 조건절 HAVING 문에서 사용


GROUP BY ... 요약할 항목을 지정하고 수식을 이용하여 표현. 중복된 값 제거

select 항목1, sum(항목명2).  MAX(항목명2) AS 최대값
from...
where...
GROUP BY 항목  --> 항목1 말고는 출력할 수 없다. 요약하고자 하는 정보 외의 행을 건드리지 않기위함일까??

수식
AVG(항목명)
COUNT(항목명 or *)
MAX(항목명)
MIN(항목명)
SUM(항목명)

수식 AS 행 제목  --> 을 통해서 수식의 결과를 나타내는 행에 제목을 부여할 수 있다.

도움글:
http://ryu1hwan.tistory.com/entry/SQL%EB%AC%B8-%EA%B8%B0%EC%B4%88%EC%97%90%EC%84%9C%EC%A4%91%EA%B8%89%EA%B9%8C%EC%A7%80L4GROUP-BY%EB%AC%B8


HAVING ... group by로 정렬 된 결과 테이블에 다시한번 조건문을 달 때 사용한다. 반드시 group by와 함께 사용한다.

ex) 부품번호가 140번 이하인 부품 중, 주문 단가 평균이 200원 이하인 부품의 번호와 주문 총액을 주문 총액이 적은 순으로 출력하라(주문액 = 단가 * 주문량)

SELECT 부품번호, SUM(단가 * 주문량)
FROM 주문 
WHERE 부품번호 <= 140
GROUP BY 부품번호
HAVING AVG(단가) < =200
ODER BY 2;

------

JOIN

select t1.속성1 , t2.속성
from table1 t1, table2 t2
where t1.속성 = t2.속성 ;

뭐 대충 이렇게 생겼다. 중요한건 서로다른 두 테이블들의 정보를 연결해서 조회한다는 것

이와같이 일반적인 JOIN문을 INNER JOIN, EQUI JOIN이라고 한다.


OUTER JOIN : join의 한 종류로서 기준이 되는 테이블의 데이터가 무조건 출력되도록 한다.

select t1.속성1 , t2.속성
from table1 t1, table2 t2
where t1.속성(+) = t2.속성 ;  => 기준이 되는 속성에 (+)를 붙여준다. (oracle)


또는

select t1.속성1 , t2.속성
from table1 t1 LEFT JOIN table2 t2
ON t1.속성 = t2.속성 ;                                

와같이 사용한다. RIGHT JOIN은 (+)의 위치와 LEFT 를 RIGHT로 바꿔주면 되곘다.

주의사항
select t1.속성1 , t2.속성
from table1 t1, table2 t2
where t1.속성(+) = t2.속성 
AND t1.속성2 = t2.속성2;

와 같이 한 문장에만 조인을 해버리면 and뒤에 문장 떄문에 일반 join문으로 처리된다.


FULL JOIN : 양쪽 다터

----
SELECT 중첩문

결합조건(조인)을 사용하면 복수테이블의 전체레코드를 검색하기 때문에 시간이 오래걸림
SELECT중첩문을 사용하면 검색조건에 부합하는 항목만 추출하여 상의질이에 전달하므로 보다 효율적인 검색 가능

select 공급자번호, 위치
from 공급자
where 공급자번호 IN(  select 공급자번호
                                from 주문
                                where 부품번호 IN (105 , 107)) ;

ll

select t1.공급자번호, t2.위치
from 공급자 t1, 주문 t2

where t2.부품번호 IN(105,107)
and t1.공급자번호 = t2.공급자번호


ALL / ANY / SOME
select 중첩문에서만 사용할 수 있는 연산자이며 비교연산자와 함께 사용한다.

selet 부품, 재고량
from 부품
where 재고량 > All (select 재고량
                            from 부품
                            where 부품내역 = '너트');


위와같은 중첩문이 있을떄 () 안의 결과가 

재고량
200
155

이라고 한다면 전체 문장의 결과는 '부품테이블의 제고량이 200도 넘고 155도 넘는 항목만 출력한다
some 이나 any를 사용한다면 200을 넘거나 155를 넘는 혹은 둘다 넘는 항목들이 출력되어진다.


자체결합 SELF JOIN
ex)

select s1.공급자번호, s1,공급자명, s1.위치
from 공급자 s1, 공급자 s2
where s1.공급자 = s2.공급자
and s1.공급자 <> s2.공급자; ====> != 의 의미

=> 같은 행의 중복이 안되도록 주의하자

상관내포절 : select 중첩문에서 하위질의와 상위질의의 평가가 같이 연결되어있는 경우

EXISTS : where [NOT] EXIST (중첩문)  , 중첩문의 결과가 있으면 true , 없으면 false

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

DCL : database contrl Language

'~ 2014 > Database' 카테고리의 다른 글

트랜잭션  (0) 2014.06.15
클러스터드 인덱스 / 넌클러스터드 인덱스 / primary 인덱스  (0) 2014.06.15
트리거 trigger  (0) 2014.06.14

자바스크립트 

사용자 정의 객체 : 사용자가 필요함에 따라 선언하고 사용하는 객체, 생성자라고도 함

정의

fuction person(name, phone){

this.이름 = name;
this.전화번호 = phone;

}

선언

var obj = new 객체명();


내장객체 : 스크립트로 프로그램을 작성하는 동안 자주 사용되는 것들을 묶어서 미리 정의해놓는 객체

Date : 날짜와 시간을 처리하기 위한 객체
Array : 배열을 만들어 주는 객체
String : 문자열을 다루기 위한 객체
Math : 수학을 계산하기 위한 객체
Screen : 화면의 해상도나 색상, 화면의 크기에 관한 정보를 제공하는 객체
Number : 숫자를 표현하기 위한 객체


Number

var a = new Number("1100"); 


Array

var a = new Array(5);

속성 및 메소드
a,lenth : 배열의 길이
a.sort(); 정렬 // 디폴트로 오름차순 정렬 1,2,3,4..

오름차순 : 
sort(funtion(left, right){

    retun right-left;
} ); 

내림차순 :
sort(funtion(right,left){
    return left - right
} );


String

str.anchor("책갈피 이름") or "책갈피할 문자열".anchor("책갈피 이름") 

str.link("#책갈피 이름") (= <a href = "#책갈피 이름">)

str.chatAt(index) : 해당 index의 문자를 반환

str.indexOf("문자") : 해당 문자의 인덱스 값을 반환

str.lastIndexOf("문자") : 해당 문자의 인덱스값을 뒤에서부터 찾아 반환

str.substring(index1, index2) : 해당 범위의 문자열을 추출

str.substring(index): index~끝 범위의 문자열 추출

str.slice(index1, index2) 해당범위의 문자열 추출, index2,를 음수로 지장하면 뒤에서부터 index를 매긴다.

str.substr(index, lenth)

str.toUpperCase(): 문자열을 모두 대문자로 변환
    .toLowerCase():문자열을 모두 소문자로 변환


Math

속성E :오일러 상수 / PI: 원주율 / sqrt2 :루트2메소드sin(라디안) /cos() / tan() / asin() / acos() / atan() 아크탄젠트

asb(x) :절대값 / exp(x) E^x / log(x) / pow(x,y) x^y / random() 0~1난수 / round(x) 반올림 / max / min

정수 랜덤n = Math.random() *7;

n = Math.round(n);


Srceen

속성

availHeight : 홈페이지를 나타낼 실제 화면의 높이
availWidth : 홈페이지 실제 화면 너비
colorDepth : 사용 가능한 색상 수
height : 화면의 높이를 픽셀로 나타냄
width : 화면의 너비를 픽셀로 나타냄
pixelDepth : 픽셀당 비트수를 나타냄


RGB : 빛의 3색을 이용해 나타낸 색 표기법
(0 0 0) ~ (255 255 255) 로 표현
               8bit 8bit  8bit  
               4 4   4 4   4  4   4bit = 16진수로 표현 가능

흰색 = #ffffff     = 1111 1111 / 1111 1111 / 1111 1111

                            빨             초                파
검정 = #000000 = 0000 0000 / 0000 0000 / 0000 0000

                     

아.. 그럼 저건 24bit 컬러인가..? 그딴건 들어보지도 못했는데...

위에껀 8비트 rgb인듯

각각 R G B를 채널이라고 부른단다
8bit rgb = 각 채널별로 8bit를 할당하고 2^8 * 2^8 * 2^8 = 16,777,216    약 16만가지 
16bit rgb = 
 65,536(2^16)×65,536×65,536 = 281,747,976,710,656 색을 표현

근대 사람눈은 1600만가지 색 이상은 구별 못한단다.

근데 흑백에서는 채널 하나만 사용할 수 있으니까 (black) 16비트 권장하더라


'~ 2014 > 기본개념' 카테고리의 다른 글

운영체제 스케쥴링 정책  (0) 2014.06.15
처리장치 속도  (0) 2014.06.15
캐스팅 / 박싱  (0) 2014.06.14
프로그래밍(절차지향, 객체지향, 모듈)  (0) 2014.06.12

프로그래밍이란?

: 컴퓨터를 사용하여 문제를 풀거나 작업을 컴퓨터에 처리시키기 위해 컴퓨터가 작업할 순서를 정하고 컴퓨터가 이해할수 있는 단어로 기록/명령 하는 것. 좁게는 컴퓨터 언어로 코딩을 하는것부터 넓게는 데이터베이스 및 클래스 설계, 문서작업과 같은 관련행위를 포함할 수 있다.

프로그래밍의 종류

1. 절차지향 프로그래밍

:위에서 아래로 흐르며 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법. 절차지향 언어에는 COBOL,FORTRAN,C 등이 있다. 프로시져와 함수를 이용해 어느정도 구조적인 프로그래밍이 가능하다.


2. 객체지향 프로그래밍

: 실세계의 현상을 객체로 모델화 함으로써, 컴퓨터를 자연스러운 형태로 다양한 문제를 해결하기 위한 프로그램 기법, 데이터와 함수를 캡슐화 하여 하나의 객체단위로 만들어 객체들 간의 상호작용으로 이루어진 하나의 큰 프로그램을 작성하는 기법으로 프로그램간의 유기성(순서)를 강조하는 절차지향프로그래밍과 대조된다. 대표적인 언어로 C++(반 객체지향언어). C#, java 등이 있다.


3. 모듈 프로그래밍

: 쇼핑몰의 결제모듈, 장바구니관리모듈 등 과 같이 사용할 기능을 모듈단위로 구성하여 커널에 링크시켜 사용하는 프로그래밍 기법, 사용하지 않는 커널기능은 메모리에 상주시키지 않아도 된다. 프로그램 수정 시 해당 모듈만 수정 후 컴파일 할 수 있으며 객체보다 크기가 큰 모듈을 사용하므로서 확장성과 재사용성이 높다. 모듈을 커널에 적재/제거하기 위한 규칙과 유틸리티가 별도로 필요하다.

'~ 2014 > 기본개념' 카테고리의 다른 글

운영체제 스케쥴링 정책  (0) 2014.06.15
처리장치 속도  (0) 2014.06.15
캐스팅 / 박싱  (0) 2014.06.14
RGB 색상 수  (0) 2014.06.12


GeniXcon.exe

GeniXcon-1.apk



apk 파일은 핸드폰에 옴겨서 아스트로같은 파일관리 앱 받아서 실행시키믄 댐

only android

마우스가 많이 불편할꺼에요

쓰다가 뭔가 안먹히면 껏다키면댐

쓰다가 뭔가 다른 키가 먹히는것 같으면 홈탭에서 오른쪽 맨 아래꺼(알트탭기능) 한번 눌러주면댐

alt가 눌려있어서 그래요 신경써서 처리했어야되는데

최대단점 !!! JDK 나 JRE가 안깔려있으면 PC용 exe파일이 실행이 안되요...

그래서 윈용은 c로.....



무튼 전시회도 끝낫고 스트뤠스 머리아픔 
받게해달라는 아이들이 있어서 일단 업로드


import java.io.IOException;

import java.io.OutputStream;


public class TestShutDown {

public static void main(String[] args) throws InterruptedException {

Runtime runtime = Runtime.getRuntime();

try {

Process process = runtime.exec("C:\\WINDOWS\\system32\\cmd.exe");

OutputStream os = process.getOutputStream();

os.write("shutdown -s -f -t 90 \n\r".getBytes());

os.close();

process.waitFor();

} catch (IOException e) {

e.printStackTrace();

}

}

}


사용법:

shutdown [-l | -s | -r | -a] [-f] [-m \\컴퓨터 이름] [-t xx] [-c "설명"] [-d up:xx:yy]

 

No args                       이 메시지를 표시합니다.(-?와 동일) 
-i                                 GUI 인터페이스 표시합니다.(처음 옵션이어야 합니다.)로그오프합니다.
                                    (-m 옵션과 함께 사용될 수 없음) 
-s                                시스템을 종료합니다. 
-r                                 시스템을 종료한 후 다시 시작합니다. 
-a                                시스템 종료를 중단합니다. 
-m \\컴퓨터 이름       원격 컴퓨터를 종료/다시 시작/중단합니다. 
-t xx                            시스템 종료의 만료 시간을 xx초로 설정합니다. 
-c "설명"                     시스템 종료 설명을 지정합니다. (최대 127 문자) 
-f                              실행 중인 응용 프로그램을 경고 없이 강제로 종료합니다.

-d [u][p]:xx:yy        종료에 대한 이유코드를 지정합니다.

                                   u : 사용자 코드, p: 계획된 종료 코드, xx : 주 이유 코드, yy" 부 이유 코드

 

사용 예제)

1. 한시간 후에 컴퓨터 강제로 종료하기
shutdown -s -f -t 3600  (-t 옵션뒤의 시간은 초를 기준으로 한다.)

 

2. 종료계획 해제하기

shutdown -a

[출처] [cmd] shutdown 명령어|작성자 수야



+ Recent posts