~ 2014/기본개념
- 운영체제 스케쥴링 정책 2014.06.15
- 처리장치 속도 2014.06.15
- 캐스팅 / 박싱 2014.06.14
- RGB 색상 수 2014.06.12
- 프로그래밍(절차지향, 객체지향, 모듈) 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 색상 수
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. 모듈 프로그래밍
: 쇼핑몰의 결제모듈, 장바구니관리모듈 등 과 같이 사용할 기능을 모듈단위로 구성하여 커널에 링크시켜 사용하는 프로그래밍 기법, 사용하지 않는 커널기능은 메모리에 상주시키지 않아도 된다. 프로그램 수정 시 해당 모듈만 수정 후 컴파일 할 수 있으며 객체보다 크기가 큰 모듈을 사용하므로서 확장성과 재사용성이 높다. 모듈을 커널에 적재/제거하기 위한 규칙과 유틸리티가 별도로 필요하다.