목록전체 글 (138)
공부하는 스누피
과학적 표기법(scientific notation) 소수점의 왼쪽에 한 자릿수만을 갖도록 한 표기법 정규화된 수(normalized number) 과학적 표기법으로 표현된 숫자 중에서 맨 앞에 0이 나오지 않도록 한 수 부동소수점 이진수를 정규화된 형태로 표현하기 위해서는 기수(base)가 필요한데, 이를 이진 소수점(binary point)이라고 한다. 이런 수를 지원하는 컴퓨터 연산이 부동소수점(floating point) 연산이다. 부동(floating)은 소수점이 고정되어 있지 않다는 의미다. C언어에서는 이러한 수를 나타내기 위해 float라는 변수명을 사용한다. 이진 소수점으로 나타낸 실수는 다음과 같다. 1.xxxxxxx * 2^yyyy 컴퓨터에서는 y에 해당하는 지수도 이진법을 사용하여 나..
집계 함수 - 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수이다. COUNT - 행 수 SUM - 합계 AVG - 평균 MAX - 최댓값 MIN - 최솟값 STDDEV - 표준편차 VARIAN - 분산 그룹 함수 - 테이블의 전체 행을 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이다. ROLLUP - 그룹별 중간 집계값을 생성한다. - 집계 대상을 ROLLUP 뒤에 넣는다. - 함수 인자로 지정된 컬럼의 순서에 따라 계층별로 구성된다. -> 순서 바뀌면 출력 내용도 달라진다. - 계층 내 정렬이 가능하다. -- A와 B의 C 총합 계산 select A, B, sum(c) from T group by rollup(A, B); CUBE - 결합 가능한 값에 대한 다차원 집계..
1. 컴파일러 - C 프로그램을 어셈블리 언어 프로그램으로 바꾼다. - 예전에는 어셈블리 언어로 프로그램을 작성하였으나 메모리 성능이 좋아지면서 컴파일러가 어셈블리 언어 프로그램을 직접 생성한다. 2. 어셈블러 - 어셈블리 언어 프로그램을 기계어로 번역한다. - 어셈블러가 독자적인 명령어를 제공해 번역과 프로그래밍을 간편하게 해줄 수 있는데, 이런 명령어를 의사명령어(pseudoinstruction)라 한다. ex) ANDI 명령어는 ADD에 I를 붙임으로써 기존 명령어와 형식도 다르고 opcode도 다르다는 것을 상기시킨다. (두 명령어는 수치 피연산자를 사용한다는 점에 있어서 다르다) - 각 명령어를 이진수로 바꾸기 위해서는 레이블(명령어)에 해당하는 주소를 모두 알아야 한다. - 사용되는 심벌과 주..
양수와 음수를 구별하는 표현방법 중 부호와 크기(sign and magnitude) 표현법은 가장 단순한 방법으로 숫자 앞에 별도의 부호(+, -)를 붙이는 방법이다. 하지만 컴퓨터에서 이렇게 수를 나타내면 0에도 부호가 붙어 양의 0과 음의 0을 갖게 되어 쓰이지 않는다. 그래서 이진 비트에서 0들이 앞에 나오면 양수이고 1들이 앞에 나오면 음수가 되도록 표현하는 방식을 사용하게 되었고, 이를 2의 보수(two's complement) 표현법이라고 부른다. 2의 보수란 어떤 수를 커다란 2의 제곱수에서 빼서 얻은 이진수이다. 주어진 이진수의 모든 자리의 숫자를 반전시킨 뒤, 1을 더하면 2의 보수를 얻을 수 있다. 컴퓨터는 음수를 2의 보수를 취해 표현한다. 0 = 0000 0000 .... 0000 ..
컴퓨터구조를 공부하면서 나오는 계산 문제를 따로 정리해두고자 한다. - 상대 성능 성능 = 1/실행시간 A가 B보다 n배 빠르다면 B실행시간/A실행시간 = n - CPU 성능 CPU 실행시간 - 특정 작업의 실행을 위해 CPU가 소비한 실제 시간 (다른 프로그램 실행시간, 입출력 포함x) 사용자 CPU 실행시간 - 프로그램 자체에 소비된 CPU 시간 => CPU 성능 시스템 CPU 시간 - 프로그램의 수행을 위해서 운영체제가 소비한 CPU 시간 (정확히 구하기 어려움) => 시스템 성능 클럭 사이클: 일정한 속도를 가지고 동작하는 프로세서 클럭 한 주기 동안의 시간 클럭 주기: 한 클럭 사이클에 걸리는 시간 (ps 단위) 클럭 속도: 클럭 주기의 역수 (GHz 단위) 프로그램의 CPU 실행시간 = 프로그..
현대 컴퓨터들은 존 폰 노이만의 stored-program 개념을 기초로 한다. stored-program은 프로그램들과 데이터가 서로 다른 저장소(메모리)에 저장되지만 같은 것처럼 다루어지는 것을 의미한다. Stored Program Computer란 이 개념을 따라 서로 다른 애플리케이션을 저장하고 수행하는 컴퓨터를 의미한다. 폰 노이만의 기본적인 컴퓨터 구조는 아래와 같다. 1. 입력 (input) - 입력 장치로부터 사용자의 입력값을 가져온다. 2. 출력 (output) - 프로그램이 사용자에게 보여주고 싶은 내용을 출력한다. 3. 메모리 (memory) - 실행 중인 프로그램과 프로그램이 필요로 하는 데이터를 기억한다. 휘발성(volatile) 메모리 - 메인 메모리(혹은 레지스터)라고 한다. ..
[클린 코드]의 저자이자 SOLID 원칙을 창안한 로버트 C. 마틴의 책으로, 저자의 아키텍트로서의 경험을 토대로 ‘훌륭한 아키텍처’란 무엇인가에 대해 이야기한다. 아키텍처란 추상적인 개념을 독자가 정확히 알게 하고 SOLID를 포함한 여러 설계 원칙들을 통해 아키텍처를 분석할 수 있게 한다. 아키텍처 관련 책이니만큼 다양한 컴포넌트 다이어그램을 볼 수 있다. 이 책은 나쁜 설계부터 시작하여 왜 이 설계가 나쁜 것인지 설명하고 어떻게 개선해 나갈 수 있는지에 대한 방법을 제시한다. 자바, 임베디드 구별 없이 소프트웨어 아키텍트가 되고 싶다면 좋은 책이다. 이 책은 소프트웨어 구조와 설계 원칙에 대한 기본적인 개념들을 저자의 원칙과 함께 자세히 설명해준다. 예를 들자면 구조적, 객체 지향, 함수형 프로그래..
졸업을 앞두고도 아직 전공 지식이 많이 부족하다고 느껴 예전에 배웠던 전공 과목을 하나씩 복습해보기로 했다. 네트워크를 가장 먼저 선택한 이유는 웹을 공부하면서 그나마 자주 접할 수 있었던 분야여서 다른 과목들보다 수월하게 독파할 수 있지 않을까 생각해서였다. [컴퓨터 네트워킹: 하향식 접근]은 대학 교재로 많이 쓰이는 기본서라고 알려져 있어 기본 개념을 복습하고자 선택했다. OSI 7계층 전체를 깊이 있게 다루어 상대적으로 공부가 부족한 아래쪽 계층에 대한 복습이 필요하기도 했다. 이 책은 제목대로 OSI 7계층을 위쪽 계층부터 탐색한다. 저자의 의도는 위쪽 계층(응용 계층)이 학생들에게 더 친숙해서 동기 부여가 잘 될 것 같아서 하향식으로 접근했다고 한다. 나 같은 경우는 그 의도와는 다르게 3계층 ..