비동기 7

useEffect와 useLayoutEffect의 차이점에 대해서 설명해주세요.

⚛️ useEffect vs useLayoutEffect 완전 쉬운 차이 설명!안녕하세요! 리액트를 공부하다 보면 꼭 마주치게 되는 두 훅(Hook)바로 useEffect와 useLayoutEffect!"둘 다 렌더링 후 실행되는데 뭐가 다를까?" 라는 궁금증, 지금 완벽히 해결해드릴게요 🔍🎯 공통점 먼저 정리!둘 다 렌더링 이후 실행됩니다.컴포넌트 안에서 특정 작업(비동기 처리, DOM 접근 등)을 하기 위해 사용됩니다.그렇다면 🤔 차이는 뭘까요?⏳ useEffect: 화면이 다 그려진 후 실행!사용자 눈에 보이는 화면이 완성된 다음에 실행돼요.그래서 주로 비동기 작업이나 외부 이벤트 처리에 적합해요!✅ 사용 예시: 데이터 가져오기useEffect(() => { fetch('/api/user')..

웹 애플리케이션의 성능을 최적화할 수 있는 방법들에 대해서 아는대로 설명해주세요.

웹 애플리케이션의 성능을 최적화할 수 있는 방법들1️⃣ 코드 스플리팅(Code Splitting) ✂️필요한 코드만 먼저 불러오자!SPA(싱글 페이지 앱)에서 모든 JS 파일을 한 번에 불러오면 너무 무겁죠!✅ 페이지별로 필요한 파일만 나눠서 로드하면 초기 로딩 속도가 빨라져요.💻 예시 (React + React.lazy)const MyPage = React.lazy(() => import('./MyPage'));}> 2️⃣ 레이지 로딩(Lazy Loading) 🐢보이는 것만 불러오자!이미지나 동영상은 스크롤해서 보일 때만 로딩되도록 하면네트워크를 아낄 수 있어요!💻 예시 (HTML)✅ 크롬, 사파리 등 최신 브라우저 지원!3️⃣ 이미지 최적화 🖼이미지는 꼭 압축하거나 포맷 변경!JPG → We..

동기와 비동기의 차이점은 무엇인가요?

🔄 동기(Synchronous)란?"기다릴게, 네가 끝날 때까지!"함수 A가 함수 B를 호출하고, B가 끝날 때까지 A는 멈춰 있음.즉, 순차적으로 작업이 실행됩니다.✅ 예시String data = getData(); // getData가 끝나야 다음 줄 실행System.out.println("데이터: " + data);📌 getData() 함수가 완료될 때까지 기다렸다가 다음 코드 실행됨!🚀 비동기(Asynchronous)란?"먼저 갈게! 네가 끝나면 알려줘~"함수 A가 함수 B를 호출하고 B의 결과를 기다리지 않고 자기 일을 먼저 처리합니다.결과는 콜백, Future, 이벤트 등을 통해 나중에 받습니다.✅ 예시 (Spring)@Asyncpublic void sendEmail() { // 이..

이벤트 루프에 대해서 설명해주세요.

🚀 자바스크립트 이벤트 루프: 비동기 작업의 숨겨진 비밀들어가며: 자바스크립트의 특별한 능력자바스크립트는 단일 스레드 언어임에도 불구하고, 마치 여러 일을 동시에 처리하는 것처럼 보입니다. 이 마법 같은 능력의 주인공, 바로 이벤트 루프입니다! 🤔 이벤트 루프란 무엇인가?이벤트 루프는 자바스크립트의 비동기 작업을 관리하는 놀라운 메커니즘입니다. 마치 주방장이 여러 요리를 동시에 관리하는 것처럼, 이벤트 루프는 다양한 작업들을 조율합니다.주요 구성 요소콜 스택 (Call Stack)현재 실행 중인 함수들이 쌓이는 공간함수 호출 순서를 관리하는 접시 더미라고 생각하세요태스크 큐 (Task Queue)비동기 작업의 결과가 대기하는 공간두 가지 종류가 있습니다마이크로태스크 큐매크로태스크 큐 🎬 이벤트 루프..

[★중요★]클로저 함수란?

1. 🎬 클로저의 개념 이해하기클로저를 설명하기 전에, 먼저 '함수'와 '스코프'에 대한 기본 개념을 살펴보는 것이 좋겠습니다.함수란 무엇인가?함수는 특정 작업을 수행하기 위해 설계된 코드 블록입니다. 쉽게 말해, 함수는 입력을 받아 처리한 후 결과를 반환하는 기계와 같습니다.function add(a, b) { return a + b;}console.log(add(5, 3)); // 출력: 8스코프란 무엇인가?스코프(Scope)는 변수의 유효 범위를 말합니다. 자바스크립트에서는 크게 전역 스코프와 함수 스코프로 나뉩니다.let globalVar = "전역 변수"; // 전역 스코프function exampleFunction() { let localVar = "지역 변수"; // 함수 스코프 co..

[2회 - 데일리과제] 동기와 비동기 & 프로세스와 스레드

1. 동기와 비동기 코드 실행방식에 대해 설명해보세요. 동기는 요청을 보낸 후 응답을 받아야지만 다음 동작이 이루어지는 방식이다. 어떠한 태스크를 처리할 동안 나머지 태스크는 대기한다. 실제로 cpu가 느려지는 것은 아니지만 시스템의 전체적인 효율이 저하된다고 할 수 있다. (작업을 동시에 수행, 동시에 끝남, 끝나는 동시에 시작함을 의미) 반면에 비동기는 요청을 보낸 후 응답의 수락 여부와는 상관없이 다음 태스크가 동작하는 방식이다. 자원을 효율적으로 사용할 수 있다. 이때, 비동기 요청시 응답 후 처리할 콜백 함수를 함께 알려준다. (시작, 종료가 일치하지 않으며, 끝나는 동시에 시작을 하지 않음을 의미) 하지만 비동기 처리를 위해 여러개의 콜백함수를 중첩시키면 콜백지옥이 발생한다. 이를 해결하기 위..

노드js 입문(01. Javascript)

노드JS란? 노드js는 크롬V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임입니다. V8엔진은 구글에서 만든 것으로 자바스크립트가 브라우저내에서만 작동가능했던 것을 브라우저 없이도 작동할 수 있도록 만든 것 입니다. 쉽게 말하면 노드js란 자바스크립트가 브러우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경! 노드js의 특징: 논 블로킹 I/O , 싱글스레드, 이벤트 루프 논블로킹 I/O : 함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있는 장점 (비동기 작업을 할때 효율적인 특성) -> I/O란 입력(Input)/출력(Output)의 약자로, 컴퓨터 및 주변장치에 대하여 데이터를 전송하는 프로그램, 운영 혹은 장치를 일컫는 말 싱글 스레드 : 스레드 하나를 사용하는 것이며, 동시에..