오늘 한일
SPA 특강 들었면서 썼던 내용 다시 정리했다.
기초프로젝트 시작
뉴스피드 만들어야한다.
내가 맡은 역할은
마이페이지에서 내 피드만 보여주기와 내 프로필 수정하는 기능이다.
주의할 점: 플래닝이 아주 중요, 마감이 아주 중요, 인스타그램 클론코딩은 안된다
CS 특강
들어가며
프로세스란?
스레드란?
멀티 프로세스란?
서로 따로
멀티 스레드란?
장점:프로세스간 통신은 어렵다
스레드 끼리는 메모리영역을 공유하고 있어서 보다 간편한다.
context switching 하는게 비용이 적고 더 빠르다
단점:
서로 접근하여 엉뚤한 값을 읽어오거나 수정할 수도 있다.
하나의 스레드에 문제가 생기면 전체 프로세스에 문제가 생길 수가 있다.
Thread-safe = 스레드가 동시에 이용되어도 서로 영향을 주지 않는다. 안전한다는 뜻
멀티프로세스는 무겁지만, 안전하고 / 멀티스레드는 비교적 가볍고 빠른 대신 안정성이 떨어지는 건가요?
- 멀티 스레드가 고려해야 이슈가 많다
비동기란?
블로킹 vs 논블로킹 (둘이 혼재해서 쓰기도 한다) (제어권이 누구에게 있는가에 대한 것)
블로킹
A함수가 B함수에 제어권 준다
논블로킹 A 가 B함수에 제어권을 주지 않는다.
제어권: 내가 함수를 실행할 권리, 나는 내 코드를 실행 수 있다.
동시성: 함수 A와 B가 동시해 진행되는 것 처럼 보이는 것(cpu가 사실 하나씩 처리 하고 있고, 굉장히 빨라서 그렇게 보이는 것일 뿐)
특정함수A가 다른 함수 B의 결과값에 의존하는가?
동기 vs 비동기 (호출되는 함수의 작업완료 여부를 신경쓰는가?)
동기: A함수가 B함수를 호출 할 때 리턴값을 계속 확인하고 신경 쓴다.
비동기: 작업 완료 여부를 신경쓰지 않는다
콜백 함수라는 것을 이용한다.
예시:
medicine이 들어올 때 까지 기다렸다가 약이 오면 병을 치료할 수 있다.
medicine이 반드시 들어올 것으로 확실하다 그렇기에 다른 행동을 하다가 병을 치료할 수 있다.
뭔가를 막지 않고 다른걸 계속 실행하다가 그게 실행되면 또 돌아가서 실행한다.
(그렇기 때문에 대부분 비동기로 해준다)
Java의 비동기
멀티 스레드 방식으로 한다
JVM에 의해 스레드 스케줄링 이뤄진다
app.py에 어떤 api 요청을 한다
1000개의 요청이 왔다. 한명 한명 순서대로 하는게 아니라 다 같이 처리한다.
JavaScript의 비동기
싱글스레드 논블로킹 모델의 환경에서 실행된다. (비슷한 스펙이지만 단언할 수는 없다)
그럼 비동기예시에선 human 은 아직 병 치료가 안됐는데, 치료가 됐다고 먼저 console 을 띄우고 콜백이 완료되는건가요?
그림은 이벤트 루프 그림
비동기 하는 중에 실패하는 경우도 처리를 해줘야한다.
그럼 비동기예시에선 human 은 아직 병 치료가 안됐는데, 치료가 됐다고 먼저 console 을 띄우고 콜백이 완료되는건가요?
구글에 apple을 칠 때 알파벳 하나당 추천 검색어가 뜨는데
인터넷이 느려서 추천 검색어가 나타나기 까지 오래 걸리더라도 알파벳을 계속 쓸 수 있다 .
미리 담아놧다가 요청하면 보여준다는거네요?
SPA중에 CSR만 있는게 아니고 유니버셜 렌더링이라는게 있다.
조금 더 디테일해지면은
'개발자 되는 중 > TIL&WIL' 카테고리의 다른 글
내배캠 TIL 2022.11.21 (1) | 2022.11.21 |
---|---|
내배캠 WIL 2022.11 3주차 (1) | 2022.11.20 |
내배캠 TIL 2022.11.17(파이어베이스) (1) | 2022.11.17 |
내배캠 TIL 2022.11.16(알고리즘 3주차, DB 특강, SPA 특강) (1) | 2022.11.16 |
내배캠 TIL 2022.11.15 (알고리즘 3주차) (2) | 2022.11.15 |