본문 바로가기

전체 글36

[Android] 안드로이드 4대 컴포넌트 - 액티비티 액티비티는 사용자와 상호작용을 담당하는 컴포넌트 입니다. 사용자가 무엇인가를 하기 위해서는 반드시 기기와 상호작용을 해야합니다. 따라서 액티비티는 유저가 앱을 터치하고, 클릭하는 등의 이벤트를 받는 창을 만들어야 합니다. # 액티비티 스택 유저의 관점에서 어플리케이션은 처음 시작하는 액티비티로부터 일련의 액티비티들이 이어진다고 볼 수 있습니다. 시스템은 여러 액티비티들을 스택에 넣어 보관하여 사용자의 Context를 저장하게 됩니다. 마치 Context Swtiching이 발생할 때 PCB에 프로세스의 Context를 저장하는 것과 비슷합니다. 액티비티의 스택은 따로 포스팅을 해야 할 중요한 내용이라서 다른 글에서 다루도록 하겠습니다. 간단히 예를 들면 액티비티를 이동하면 이전의 액티비티는 차곡차곡 스택.. 2020. 11. 6.
[Android] Android 프로젝트 빌드 안드로이드 스튜디오를 이용해 안드로이드 앱 개발을 할 때 실제로 기기를 연결하거나 가상의 애뮬레이터를 통해서 다양한 기기에 대해서 직접 앱을 테스트 할 수 있습니다. 앱의 실행은 어떠한 과정을 거쳐서 실행시킬 수 있는 것일까요? 안드로이드는 리눅스 커널을 기반으로, 저수준의 하드웨어, 드라이버, 전력관리 등을 수행하는 풀스택 소프트웨어입니다. 리눅스 커널위에 C/C++ 라이브러리와 SQLite, 안드로이드의 Core 라이브러리, Android Runtime 등이 있습니다. 그 위에 안드로이드 프레임워크가 있으며 우리가 만드는 앱은 프레임워크가 제공하는 여러 클래스와 서비스를 이용하여 프레임워크 위의 레이어에서 작동합니다. 안드로이드 스튜디오에서 앱을 실행하면 작성한 코드는 javac 컴파일러에 의해서 바.. 2020. 11. 6.
[Algorithm] Heap Sort 소스코드 #include #include using namespace std; void heapify(int* a, int pos, int size) { int l = pos * 2 + 1; int r = pos * 2 + 2; int mx_idx = pos; if (l a[mx_idx]) mx_idx = l; if (r a[mx_idx]) mx_idx = r; if (mx_idx != pos) { swap(a[pos], a[mx_idx]); heapify(a, mx_idx, size); } } void buildHeap(int* a, int size) { for (int i = size/2 ; i >= 0; --i) { heapify(a, i.. 2020. 10. 26.
[Data Structure] Stack 소스코드 #include template class Stack { public: int t; T* value; Stack() { t = -1; value = new T[100]; } ~Stack() { delete[] value; } void push(T val) { value[++t] = val; } void pop() { if (t >= 0) t--; else { puts("stack is empty()"); } } T top() { if (t != -1) return value[t]; else return -1; } }; int main() { Stack s; s.push(1); s.push(2); s.push(3); printf("%d\n", s.top()); s.pop(); printf("%d\.. 2020. 10. 24.
[Data Structure] Queue 소스코드 #include template class Queue { public: int head; int tail; int size; T* value; Queue(int sz) { size = sz; head = tail = 0; value = new T[size+1]; } ~Queue() { delete[] value; } void enqueue(T val) { if (!isFull()) { value[tail] = val; tail = (tail + 1) % size; } else { puts("quque is full"); } } T dequeue() { if (!isEmpty()) { T val = value[head]; head = (head+1) % size; return val; } else.. 2020. 10. 24.
[Algorithm] Merge Sort 소스코드 #include #include using namespace std; const int MX = 50001; int a[MX]; void merge(int *a, int left, int mid, int right) { int tmp[MX], pos = left; int u = left, v = mid+1; while (u 2020. 10. 24.