분류 전체보기
-
[Android] RxJavaAndroid 2021. 8. 28. 10:39
ReactiveX ReactiveX는 Observer 패턴과 함수형 프로그래밍을 사용하여 비동기 프로그래밍을 가능케 한다. 관찰 가능한 1) Observable stream 이 있고, 2) operator 순수함수로 가공을 하여 발행하면 3) Observer가 반응해 작업을 실행한다. RxJava: Java(JVM)를 위한 ReactiveX Extensions. Reactive programming(리액티브 프로그래밍) 패러다임을 자바에서 구현한 프로그래밍 라이브러리 RxKotlin: Kotlin을 위한 ReactiveX Extensions. RxJava 라이브러리를 기반으로 포팅하여 코틀린을 위한 리액티브 프로그래밍의 특정 부분을 함수형 프로그래밍으로써 구현한 라이브러리 RxAndroid: Androi..
-
[코루틴] 코틀린(Kotlin)의 코루틴(Coroutine)Android 2021. 8. 27. 22:07
안드로이드에서 비동기 처리하는데는 몇가지 방법이 있다. Rx는 다양한 기능을 제공하지만 진입 장벽이 높다. AsyncTask 는 Deprecated 되었고 복잡하다. 코루틴은 비동기스럽지 않게 생긴 코드로, 메모리를 효율적으로 사용하면서 손쉽게 비동기 처리를 할 수 있다. 코루틴은 스레드 위에서 실행되는데, 코루틴 1을 실행하던 중 2가 실행되어도 실행중인 스레드를 정지하면서 컨텍스트 스위칭 개념으로 다른 스레드로 전환하는 것이 아니라, 기존 스레드를 유지하며 기존 스레드에서 코루틴 2를 실행하게 된다. 주요 키워드 suspend 코루틴 안에서 suspend 함수가 호출될 경우 이전까지의 코드 실행이 멈추며 suspend 함수가 처리 완료된 후, 멈춰있던 원래 스코프의 다음 코드가 실행된다. 코루틴을 정..
-
[운영체제] CPU 스케줄링운영체제 2021. 8. 27. 21:17
CPU 스케줄링 운영체제가 CPU의 자원을 어떤 프로세스에게 할당해 줄 지 그 일정을 짜는 것 일정을 어떻게 짰는지에 따라 CPU의 자원을 얼마나 효율적으로 사용하게 되는지가 결정 CPU 스케줄러는 다음 네 가지 상황에서 동작 한 프로세스가 실행상태에서 대기 상태로 전환될 때 ex) I/O 요청에 의한 대기 프로세스가 실행 상태에서 준비 완료 상태로 전환될 때 ex) 할당된 시간이 다 끝났을 때 (타이머 인터럽트가 발생했을 때) 프로세스가 대기 상태에서 준비완료 상태로 전환될 때 ex) I/O 종료 시 프로세스가 종료될 때 스케줄링 알고리즘 비선점 스케줄링 어떤 프로세스가 CPU를 점유하고 있다면 해당 프로세스의 작업이 완료될 때까지 다른 프로세스는 CPU를 사용할 수 없음. 장점 : 프로세스 일괄 처리..
-
[운영체제] 프로세스와 스레드운영체제 2021. 8. 26. 21:20
프로그램 컴퓨터에서 실행할 수 있는 파일 (.exe 등) 파일이 저장 장치에 저장되어 있지만 메모리에는 올라가 있지 않은 정적인 상태 프로세스 실행 중인 프로그램(program) 즉, 사용자가 작성한 프로그램이 OS에 의해 메모리 공간을 할당받아 실행 중인 것 프로세스는 각각 독립된 메모리 영역(Code, Data, Stack, Heap의 구조)을 할당받는다. Code : 프로세스가 실행할 코드와 매크로 상수가 기계어의 형태로 저장 Data : 전역변수 또는 static 변수 등등이 저장 (프로그램이 구동되는 동안 항상 접근 가능한 변수가 저장) Stack : 함수 안에서 선언된 지역변수, 매개변수, 리턴값, 돌아올 주소 등등이 저장되고 함수 호출시 기록하고 종료되면 제거 Heap : 런타임에 크기가 결..
-
[코루틴] 코루틴(Coroutine) 이란Android 2021. 8. 22. 11:16
코루틴은 1) 특정 위치에서 실행을 일시 중단하고 다시 시작할 수 있는 여러 진입점을 허용하여 2) 비선점 멀티 태스킹을 위해 서브루틴을 일반화하는 프로그램의 구성 요소 루틴 하나의 Task, 함수 정도로 생각하면 된다 - 메인루틴 프로그램 전체의 개괄적인 동작 절차를 표시하도록 만들어진다. - 서브루틴 메인 쓰레드가 서브루틴에 진입하면, 맨 윗줄부터 실행이 될것이고 그 아래 코드들을 쭉쭉 실행해서 return문을 만나면 서브루틴을 호출했던 부분으로 탈출한다. 그리고 진입점과 탈출점 사이에 쓰레드는 블락된다 - 코루틴 진입할 수 있는 진입점도 여러개고, 함수를 빠져나갈 수 있는 탈출점도 여러개 코루틴은 쓰레드다 (X) 코루틴은 Object이다 (O) 코루틴과 쓰레드 Thread, Coroutine 모두 ..
-
안드로이드 앱 개발과정 - 1 : 시작 / 컨셉 정하기 (Your K-Dance)사이드 프로젝트/Your K-Dance (Android) 2021. 3. 14. 21:13
사이드 프로젝트 시작 작년 12월쯤, 동생과 함께 공부 겸 사이드 프로젝트 개발을 하기로 했다. 나는 회사에서 안드로이드 개발을 주로 하고 있고, 동생은 크롤링이나 빅데이터 쪽을 주로 하고 있었다. 이번 프로젝트를 통해 동생은 안드로이드를 개발하는 경험을 쌓고자 했다. 나는 안드로이드의 최신 기술과 코틀린을 스터디하고 적용하고 싶었고 서버 개발까지 해보고 싶었다. 종합하자면 우리의 목적은 새로운 기술 스택 학습과 포트폴리오 추가였고, 최종 목표는 구글 플레이스토어에 안드로이드 앱을 출시하는 것으로 잡았다. 할 일과 일정은 이렇게 계획하고 시작하였다. - 어플리케이션 컨셉 확정 : 1W (12.2~12.8) - 세부 기획 확정 : 1W (12.9~12.15) - 디자인 확정 : 1W (12.16~12.22..
-
[우선순위큐] 백준 14427번 : 수열과 쿼리 15 - C/C++알고리즘/백준 2021. 3. 14. 14:27
www.acmicpc.net/problem/14427 14427번: 수열과 쿼리 15 길이가 N인 수열 A1, A2, ..., AN이 주어진다. 이때, 다음 쿼리를 수행하는 프로그램을 작성하시오. 1 i v : Ai를 v로 바꾼다. (1 ≤ i ≤ N, 1 ≤ v ≤ 109) 2 : 수열에서 크기가 가장 작은 값의 인덱스를 www.acmicpc.net 1. 문제 길이가 N인 수열이 주어진다. 1을 입력받으면, 주어진 수열에서 가장 작은 값의 인덱스를 출력한다. 2를 입력받으면, i번째 수열의 값을 v로 바꾼다. 2. 해결 1) 가장 작은 값만 필요하기 때문에 우선순위 큐를 이용하였다. 2) 수열의 각 정보는 Node 구조체로 구성하였다. - num : 수열의 값 - heapIndex : 2를 입력받으면,..
-
[우선순위큐] 백준 1655번 : 가운데를 말해요 - C/C++알고리즘/백준 2021. 3. 7. 23:37
www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 수빈이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 수빈이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 1. 문제 주어지는 값들 중에서 현재 중간값을 출력한다. 2. 해결 1) 최대힙(Max Heap)과 최소힙(Min Heap)을 구현해야 한다. 왜냐하면 최대힙은 root 보다 모두 작은 값들로 이루어져 있고, 최소힙은 root 보다 모두 큰 값들로 이루어져 있다. 따라서 최대힙 또는 최소힙의 root가 중간값이다. MaxHeap MinHeap Root Root | | Root 보다 작은 수들 R..