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

처리장치 속도  (0) 2014.06.15
캐스팅 / 박싱  (0) 2014.06.14
RGB 색상 수  (0) 2014.06.12
프로그래밍(절차지향, 객체지향, 모듈)  (0) 2014.06.12

캐시 : cpu가 주기억장치에서 처리할 데이터를 미리 읽어다주는 역할을 했던가..? 무튼 비쌈
    L1 캐시(캐시) : cpu 내부에 달려있는 캐쉬메모리 겁나빠르다
    L2 캐시(2차캐시): cpu 외부에 달려있는 캐쉬메모리 일반적으로 말하는 cpu와 구분되는 캐시

cpu(중앙처리장치) : 캐시메모리보다 느림. 근대 빠름.

주기억장치 : 램(휘발), 롬(읽지전용, 비휘발, 부팅등 환경설정에 필요한 데이터를 써놓는용도)등

보조키억장치 : usb, cd, 플로피티드스, 하드디스크(자기테잎) 등


위에서부터 빠른순

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

운영체제 스케쥴링 정책  (0) 2014.06.15
캐스팅 / 박싱  (0) 2014.06.14
RGB 색상 수  (0) 2014.06.12
프로그래밍(절차지향, 객체지향, 모듈)  (0) 2014.06.12

업캐스팅 / 다운캐스팅

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

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

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

+ Recent posts