목록분류 전체보기 (70)
hyeals study
코루틴과 스레드 비교 코루틴 기본 옵션: 협력형이며 병행적으로 동작하지 않음(옵션 조절 가능) 스케줄러가 실행 시점을 결정하는 것이 아니라 프로그래머나 이벤트에 의해서 실행 및 지연(suspend), 재개(resume)시점이 결정됨 비선점형 멀티 태스크 동시성(concurrency)제공 독립적 스택을 가질 수도 있으나 일반적으로 스택을 다시 생성하지 않음 스레드 개수에 따라 완전히 병행적으로 동작할 수 있음 OS의 스케줄러가 실행 시점을 결정함 (스케줄러가 선점할 수 있음) 선점형 멀티태스크 멀티 프로세싱 병행성(Parallelism) 제공 스레드별로 독립적인 스택을 가짐 간단한 코루틴 예시 import kotlinx.coroutines.delay import kotlinx.coroutines.runBl..
코루틴(Coroutine)이란? 비선점(non-preemptive)멀티태스킹의 서브루틴(subroutine) 형태 지연(suspend-잠시 중단)과 재개(resume-물러나 있다가 다시 실행)가 가능 협력형(cooperative)태스크와 비슷하게 동작(Context switching이 없고 최적화된 비동기 함수를 통해 비선점형으로 작동하는 특징 때문) → 동시성을 제공함(병행성×) 코루틴을 이해하기 위한 개념들 ◎ Task ☞ 프로그램상에서 특정 할 일, OS상에서 표현하는 방법은 여러가지로 나뉘는데 그 중 Process와 Thread가 있음. Process Thread 메모리 독립적인 메모리 공유 메모리 스택 독립적인 스택 독립적인 스택 * Process ☞ 하나의 Program이 실행되면 시작됨 ☞ ..
동기화 - 변경이 일어나면 안되는 특정 코드를 보호하기 위한 잠금기법 - 동기화로 보호되는 코드는 임계 영역(critical section) - lock을 활용해서 임계 영역을 보호 선점(preemtive) - 다른 스레드나 프로세스를 중단 시키는 행위로 OS의 스케줄러가 담당함 콜백(callback) 함수 - 특정 이벤트가 발생하기까지 처리되지 않다가 이벤트가 발생하면 즉시 호출되어 처리되는 함수
Data클래스는 아주 유용하고 간편하게 사용할 수 있는 클래스다. 바로 예시를 들어보면, data class KotlinPerson(var name: String, var age: Int) 위의 코드는 KotlinPerson이라는 이름의 데이터 클래스이다. 데이터 클래스가 왜 간편하냐면 바로 아래와 같은 이유에서이다. 코틀린에서 작성한 데이터 클래스와 똑같은 기능을 갖는 클래스를 만들기 위해서 자바에서는 아래와 같이 아주 긴 코드 작성이 필요하다. public class JavaPerson(){ private String name; private Int age; public class JavaPerson(){ } public class JavaPerson(String name, int age){ this..
map 함수 - 컬렉션을 활용할 때 기반이 되는 함수 - 주어진 람다를 컬렉션의 각 원소에 적용한 결과를 모아서 새 컬렉션으로 만들어줌 * 아래와 같이 하면 숫자로 이루어진 리스트를 각 숫자의 제곱이 모인 리스트로 바꿀 수 있음 - 이는 원본 리스트와 원소의 개수는 같지만, 각 원소는 주어진 함수에 따라 변환된 새로운 컬렉션임 * it (디폴트 파라미터) : 람다의 파라미터가 하나뿐이고 그 타입을 컴파일러가 추론할 수 있는 경우 사용
[실행 화면] - 코드 깃허브 참고 (https://github.com/hyeals/Webtoon)
- 공공 데이터 포털에서 오픈 API인 주소 기준 동네별 공적 마스크 판매정보 제공 서비스(https://www.data.go.kr/data/15057411/openapi.do)를 이용해서 데이터를 가져오는 연습을 할 것 - URL을 누르면 아래와 같은 창이 뜸 - 위 사진에 나와있는 URL 주소에 들어가면, 아래와 같은 JSON문서가 나옴 ◎ 여기서 가져올 데이터 목록 address: 주소 count: 조회 데이터 개수 addr: 판매처 주소 name: 판매처 이름 remain_stat: 재고 상태 * json에서 데이터를 가져오기 위해서 문서 양식 대로하면 됨 - 네트워크를 사용하기 때문에 AndroidManifest.xml에 아래와 같은 코드를 추가함 (인터넷 사용 권한을 허용하는 것) - acti..
- 공공 데이터 포털에서 오픈 API인 충청북도 도시계획 현황 API(https://www.data.go.kr/data/15029351/openapi.do)를 이용해서 데이터를 가져오는 연습을 할 것 - URL을 누르게 되면 아래와 같은 창이 뜸 - 아래 사진에 나와있는 요청 주소에 들어가면 - 아래와 같은 XML문서가 나옴 ◎ 여기서 가져올 데이터는 아래와 같음 acceptDate: 접수일 subject: 주제 contents: 내용 title: 제목 * xml에서 데이터를 가져오기 위해서 태그이름으로 접근하면 됨 - 네트워크를 사용하기 때문에 AndroidManifest.xml에 아래와 같은 코드를 추가함 (인터넷 사용 권한을 허용하는 것) - activity_main.xml의 레이아웃을 디자인함 [..