favicon

Jayden { do: smite }

230209(목)

🎄 성장일지 3.1

행복한 이기주의자(웨인 다이어)의 내용에 자극받아 시작하는 소박한 성장기록

살아있는 꽃과 죽은 꽃은 어떻게 구별하는가?<br/> 성장하고 있는 것이 살아 있는 것이다.<br/> 생명의 유일한 증거는 성장이다!

🌳 키워드 (1.0)<br/> 최대한 간단하게 정리, 추후에 보면서 스스로 설명<br/> 🍉 경험 위주로 (2.0)<br/> 단순 정보를 전달하기보다 무엇을 배웠고 어떻게 해결했는지 짧고 간단하게 작성<br/> ❄️ 정해진 템플릿에 맞춰서 (3.0)<br/> 키워드, 경험 모두 좋다. 다만 매일 작성하기로 마음 먹은만큼 핵심만 간결하게 정리할 수 있게 템플릿을 작성 (3.1) 230102부터 시작되는 학습에 관한 내용 추가

🔑 오늘의 키워드

스케줄링

  • 운영체제(OS)가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것

스레드

  • 하드웨어적 스레드: 코어 하나가 동시에 처리하는 명령의 단위
  • 소프트웨어적 스레드: 프로그램 하나에서 독립적으로 실행되는 단위

이벤트 처리

  • 이벤트 단위의 병렬 처리
  • 단일 스레드에서 비동기적으로 작업을 수행하기 위해 이벤트를 발생시켜 처리한다.
  • 자바스크립트의 경우, 이벤트 루프를 통해 단일 스레드에서도 병렬적인 처리가 가능하다.

비동기

  • 동기가 아닌 것(asynchronous)
  • non-blocking으로 테스크를 수행한다.
  • 병렬적으로 테스크를 수행한다.
  • 요청과 결과가 동시에 일어나지 않는다.(요청한 그 자리에서 결과가 주어지지 않는다.)
  • 결과가 주어지는 데 시간이 걸리더라도 그동안 다른 작업이 가능하다.
  • 동기보다 직관적으로 이해하기 어렵다.(설계가 힘들다.)

콜백함수

  • 원하는 시점(특정한 시점)에 호출할 수 있는 함수
  • 어떤 함수의 매개변수로 전달되는 함수
  • 개발자가 콜백함수로 어떤 함수를 전달하는 순간, 그 함수의 실행권은 그 콜백함수를 받은 함수에게 넘어간다.
  • 즉, 비동기적으로 작동을 원할 땐 비동기 api에 함수 자체를 넘겨주어야 한다!

클로저

  • 어떤 외부함수 A의 상태 a를 내부함수 B가 참조하고 있고, A의 반환값으로 B 함수 자체가 반환될 때 아직 a에 대한 참조 가능성으로 a가 가비지콜렉팅되지 않고 살아있는 현상
  • 비동기적으로 작동할 때 전달하는 콜백함수 또한 클로저를 이용해 어떤 변수를 참조할 수 있다.

비동기(클로저 x)

function asyncFunc(cb) { setTimeout(cb, 1000); } asyncFunc(function() { console.log("1 second passed"); });

비동기(클로저 o)

function asyncFunc(cb) { setTimeout(cb, 1000); } function closureExample() { let message = "1 second passed"; return function() { console.log(message); }; } let closureFunc = closureExample(); asyncFunc(closureFunc);

참고자료

📝 요약 및 하루 간단 회고

오늘은 쪼금 공부하는데 멘탈이 나갔던 거 같다. 운영체제 파트 자체가 개념도 어렵고 구현도 쉽지 않아서 그런 것 같다.<br/> 일단 미션은 미뤄두고 개념부터 열심히 습득했는데, 막상 구현을 하려니 생각보다 쉽지 않아서 그게 좀 멘탈이 힘들게 했다. 객체지향이 너무너무 좋고 재미있는데, 각 객체에게 올바른 책임과 역할을 주는 건 정말 어렵다. 하물며 개념적으로 이해한 운영체제의 일부를 구현하려니 쉽지 않다. 그래도 멘탈 잡고 내가 할 수 있는만큼 악착같이 악독하게 할 것이다! 물론 다행히 재미있으니까...! 재미있게 악착같이 하자!

오늘의 잘한 점

  • 어제 오늘 정말 빠르게 컴퓨터 구조 + 운영체제 개념 공부(전부 남진 않지만 다음엔 훨씬 편하게 이해할 수 있을 것 같다.)
  • 멘탈이 힘들었지만, 끝까지 노트북 앞에서 고전한 점

오늘의 아쉬운 점

  • 개념을 알아도 이걸 코드로 구현하는 건 생각보다 쉽지 않았다는 점...
  • 어찌저찌 구현했더라도 코드가 너무... 더 잘 정리해보자
undefined

Copyright 2023. all rights reserved by Jayden