전체 글

오늘은 자바가 대체적으로 어떤 문법을 가지고있으며 클래스들을 중심으로 구동된다는 것을 처음으로 접해보았다. 이번달 1월은 자바로 간단한 계산기 앱을 만든다는 목표를 가지고 이를 수행하고자 한다. 아주 기본적인 변수, 타입 등은 대부분C나 C++에서 봤던 것과 유사했지만 외부 라이브러리를 애용(?)하다싶이 많이 사용하는 것을 보아 많은 문서 참조가 필요할 것 같다. 13.0.1version에 맞는 문서를 확인해가면서 라이브러리 참조를 해야겠다. --? https://docs.oracle.com/en/java/javase/13/docs/api/index.html
컴파일러가 컴파일 하기전 처리하는 부분이다. 표준 라이브러리는 로 감싼다. #include → 검색 대상 비표준 라이브러리는 “”로 감싼다. #include “~.h” → 현재 폴더 큰따옴표 내부에 절대경로 혹은 상대경로로 표시해 줄 수 있다. 상대경로의 경우 시스템에 등록된 경로에서 찾는다. 전처리문 종류 #include 파일 처리를 위한 전처리문 미리 정의되어있는 파일을 Load한다. (매크로같이 치환 개념이 아님) #define 상수값을 지정하기 위한 예약어 (매크로 → 치환의 개념) 함수처럼 선언할 수 있지만 함수가 아니기때문에 함수처럼 오버헤드가 일어나지 않는다. #undef #define으로 정의된 매크로를 무효화한다. #if / #endif 조건문과 동작 원리는 같다. #define somt..
바이트 순서(Byte Order) - Big Endian 데이터가 상위 바이트부터 적재하는 방식 최상위바이트가 가장 낮은 메모리 주소부터 저장되는 방식 사람이 읽는 데 익숙하여 디버깅에 있어 편리하다는 특징이 있다. - Little Endian 데이터가 하위 바이트부터 메모리에 적재(Host Ordering) 최상위 바이트가 가장 높은 메모리 주소부터 저장되는 방식 기계의 연산이 효율적이라는 특징이 있다. 기계 연산의 효율성은 아래와 같은 이유가 있다. 아래 그림에서 Big Endian의 경우 32비트 수인 0X2A를 읽기 위해 32비트 모두를 읽어야하지만 Little Endian의 경우 32비트의 수 중 1, 2바이트만 떼어내면 바로 8, 16비트를 얻어낼 수 있다. - ASLR(Address Spac..
정렬 정렬을 이용하는 과정에서 최댓값과 최솟값을 구할 수 있다. 최댓값과 최솟값을 구하는 방법을 알아두면 유용하다. 순차정렬 반복적인 방법으로 해결하는 알고리즘이다. 배열의 가장 앞에서부터 작은 원소를 배치하는 방법이다. #include void swap(int, int); int main() { int arr[10] = { 10, 3, 4, 2, 6, 5, 8, 1, 9, 8 }; int size = sizeof(arr) / sizeof(int); for (int i = 0; i < size; i++) { for (int j = i; j < size; j++) { if (arr[j] < arr[i]) swap(&arr[j], &arr[i]); } } for (int k = 0; k < size; k++..
Code 코드 자체를 구성하는 메모리 영역 (.hex .bin .c …) 프로그램 명령이 위치하는 곳 Data 전역변수, 정적변수, 배열, 구조체 등이 저장됨 초기화된 데이터 → Data 초기화되지 않은 데이터 → BSS(Block Stated Symbol) Data영역은 초기에 사용할 메모리를 확보 BSS영역은 런타임후에 메모리영역 확보 Heap 동적으로 메모리를 할당하고자 할 때 위치하는 메모리영역 C에서 이 영역을 사용하기 위해서 malloc()함수를 사용한다. Stack 임시 메모리 영역으로 지역변수, 매개변수, 리턴 값 등을 저장한다. 함수호출시 생성되고 함수가 끝나면 시스템에 반환됨 나중에 넣은 값이 먼저 나오는 후입선출 구조이다. Thread 프로세스가 할당받은 자원을 이용하는 실행단위 St..
User(사용자) User에서 Kernel로 접근할 수 있도록 돕는 인터페이스 → File File의 작성(write) 규칙 : Protocol 모든 File에 대해 읽고 쓰는 규칙을 외우고 다닐수는 없기 때문에 Read/Write에 대한 함수를 만든다. ex) getchar(), putchar(), gets(), puts() 등 함수는 Kernel에 I/O를 요구하는 함수다. Kernel(커널) 운영체제의 큰 구성요소로서 하드웨어 제어 기능을 수행한다. 프로그램의 입출력을 담당한다. Shell(쉘) : 커널이 명령어를 수행할 수 있도록 명령어를 해석해서 커널에게 전달해준다(Interface의 범주)
_주노
juno.log