일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- LG
- 딥러닝
- 머신러닝
- PCA
- 오블완
- 티스토리챌린지
- supervised learning
- 지도학습
- deep learning
- Machine Learning
- 회귀
- regression
- OpenAI
- 분류
- LG Aimers 4th
- LLM
- ChatGPT
- LG Aimers
- gpt
- 해커톤
- GPT-4
- Classification
- AI
- Today
- Total
SYDev
[풀스택서비스프로그래밍] Lecture 01. Dart 언어의 이해(심화) - part2 본문
경희대학교 이성원 교수님의 풀스택 서비스 프로그래밍 수업을 기반으로 정리한 글입니다.
비동기 입출력 기능 활용하기
1. 비동기 작업(asynchronous operation, async)
- 두 개 이상의 작업을 동시에 수행
- synchronous operation에 반대되는 개념
- 주로 동작이 느린 외부 저장 장치에 대한 작업을 수행
- 느린 저장 장치는 Stream 클래스로 비동기 동작을 지원
- Main 함수에 의해 수행되는 작업 -> foreground
- 비동기 함수에 의해 수행되는 작업 -> background
2. Future.delayed(시간(초), 작업) method
- '시간'이 지난 후에 '작업' 수행
- '작업'을 비동기적으로 처리
- '작업'이 주어지지 않으면, '시간' 만큼 프로그램 대기
3. await 문법
- 비동기 작업이 종료될때까지 인위적으로 대기
- await 문법을 사용하는 함수/메소드는 async 구문 사용
4. Future<> 리턴 타입
- awit 문법 or Future.delayed() method를 사용하는 function/method가 return value를 갖는 경우 -> return type은 반드시 Future<>
5. 실습
volume-C-chapter-05-A.dart
-> 아무것도 적용 X -> 실행한 순서대로 출력
volume-C-chapter-05-B.dart
-> Hello world 명령어를 Future.delayed로 실행하여, 해당 작업을 3초 후에 실행
-> 이러면 처리한 모든 작업이 끝나지 않은 상태에서 프로그램이 종료되기 때문에 좋지 않은 구조
volume-C-chapter-05-C.dart
-> await 문법을 사용하기 위해서는, 함수에 async 선언을 해줘야 한다.
volume-C-chapter-05-D.dart
-> 인위적으로 프로그램을 3초 재운 것은 맞으나, 함수가 주어지지 않았기 때문에 의도한대로 multi-threading되지는 않음
volume-C-chapter-05-E.dart
-> 함수 호출을 해서, 그 함수 내부에서 multi-threading
volume-C-chapter-05-F.dart
-> flag를 가지고, 이에 대한 getter와 setter를 가지는 class ActivationFlag
-> false를 가진 객체 bgJobFinished 생성
-> 이전과 비슷한 작업, but await-async 구문 사용 -> 해당 작업이 끝나고, 다음 작업을 진행하는 concurrency
>> 모든 thread가 flag라는 공통 변수를 공유!!
volume-C-chapter-05-G.dart
-> background인 serverCustomer()가 동작하는 동안 foreground는 계속 동작 -> background 동작이 끝나면 반환
-> ??? async가 붙으면 함수의 순서에 따라 동작하는데, 그러면 직관적으로 보면 sync인 거 아닌가,, 헷갈림
volume-C-chapter-05-H.dart
-> 이전 예제에서, async-await 구문만 추가
volume-C-chapter-05-I.dart
-> doBackgroundJob과 serveCustomer 작업이 background에서 각자 multi-threading 진행
예외 상황 처리를 통한 안정성 강화하기
- try
- on
- catch
- finally
- throw
- rethrow
- Exception (abstract class)
volume-C-chapter-06-B.dart
-> 분모가 0 -> error
volume-C-chapter-06-C.dart
-> c의 try catch와 유사
volume-C-chapter-06-D.dart
-> error가 발생했을 때, 이를 처리하는 logic을 넣는 것이 일반적
volume-C-chapter-06-E.dart
-> on - 특정 error만 catch
volume-C-chapter-06-F.dart
-> on + catch - 예측한 것과, 예측하지 못한 것들 모두
volume-C-chapter-06-I.dart
-> rethrow -> error를 직접 처리하지 않고, 다른 곳으로 넘겨주는 행위
-> 본인이 커버하지 못하거나, 커버하고 나서 이를 알리기 위해서 념겨주는 행위
volume-C-chapter-06-K.dart
-> custom exception
'3학년 2학기 전공 > 풀스택서비스프로그래밍' 카테고리의 다른 글
MongoDB 기본 개념 (0) | 2024.11.21 |
---|---|
[풀스택서비스프로그래밍] Lecture 02. RESTful API Client & Server 개발 (2) | 2024.10.01 |
[풀스택서비스프로그래밍] parallelism vs concurrency (0) | 2024.09.23 |
[풀스택서비스프로그래밍] Lecture 01. Dart 언어의 이해(심화) - part1 (1) | 2024.09.16 |
[풀스택서비스프로그래밍] Lecture 01. Dart 언어의 이해(기초) (2) | 2024.09.16 |