애니메이션
총 383개 · 13 / 16 페이지 · 289–312
본문 코드 펜스로 삽입: ```anim:<id>
태그로 필터 (697)
Load Balancer 가 요청을 서버 풀에 라운드 로빈으로 분산
한 틱에 큐를 비울 때까지 전부 처리한다. 중간에 새로 추가되어도 같은 틱 안에서 처리. 그래서 Promise.then 이 setTimeout 보다 항상 먼저.
NPU 는 스마트폰 SoC 안에 CPU/GPU 와 함께 통합된다. Tensor + Vector + Scalar 가속기 + Shared Memory 구조이며, INT4/INT8 양자화 회로로 와트당 효율을 극대화.
SGA는 인스턴스 전체가 공유, PGA는 서버 프로세스마다 사적. 정렬·해시 연산은 PGA 안의 Work Area를 사용한다.
여러 인덱스의 비트맵을 OR로 합쳐 테이블을 효율적으로 읽는 과정
Client A 가 보낸 메시지가 다른 서버에 연결된 Client B 에게 어떻게 전달되는지. Server 는 자기 클라이언트만 알면 되고, Bus 가 서버 간 라우팅을 담당한다.
GET/HEAD는 reading role(replica), 그 외는 writing role(primary). 쓰기 직후 delay 동안은 GET도 primary로 강제.
Stateless 서버는 같은 요청을 어느 서버로 보내도 OK. Stateful 서버는 같은 클라이언트를 같은 서버로 보내야 (sticky session). 장애 시 차이도 명확하다.
Systolic Array 는 입력이 박동(systolic)처럼 격자를 가로질러 흐르며 각 PE 에서 곱셈+누적을 수행하는 구조. 가중치는 각 PE 에 고정, 활성화는 좌→우로 흐른다.
한 틱에 한 개만 꺼낸다. FIFO. setTimeout, DOM 이벤트, setInterval 콜백이 들어온다. 매 콜백 사이마다 마이크로 큐가 비워진다.
TPU 칩 안에는 TensorCore 가 1개 이상 있고, 각 TensorCore 는 MXU(Matrix Multiply Unit), Vector Unit, Scalar Unit, Unified Buffer 로 구성된다.
VM은 게스트 커널까지 각자 갖고, Container는 host 커널을 공유한다. 이것이 부팅 속도, 메모리, 격리 강도의 차이를 만든다.
모든 현대 컴퓨터의 기본 동작 패턴. CPU 가 메모리에서 명령어를 가져오고 (fetch), 해석하고 (decode), 실행하고 (execute), 결과를 저장한다 (writeback). 매 명령어가 이 4단계를 거친다.
타이머, fetch, DOM 이벤트 같은 비동기 작업은 JS 엔진이 아니라 브라우저 (또는 Node.js) 가 별도 스레드로 처리하고, 완료 시 콜백을 큐에 보낸다.
Symbol 키로 callback 을 context 의 임시 메서드로 부착한 뒤 호출하면 this 가 자동으로 context 가 되는 원리.
4가지 ANSI 격리 수준이 어떤 anomaly 를 방지하고 어떤 것은 허용하는지 시각적 매트릭스. 실제 엔진 (PostgreSQL / MySQL) 의 차이도 표시.
Promise.then 으로 자기 자신 등록 → 큐가 빈 적이 없어 렌더링 정지. setTimeout 으로 자기 자신 등록 → 매 틱마다 한 번씩, 렌더링 OK.
동일한 시점에 등록해도 마이크로태스크 큐가 먼저 비워진다. Promise.then 이 setTimeout 0 보다 항상 먼저인 이유.
순차 의존 비동기를 콜백으로 연결하면 들여쓰기가 오른쪽으로 깊어진다. Promise / async-await 로 평탄하게 펼 수 있다.
loadUser(id, callback) 패턴. 호출자가 콜백을 등록하면, 받은 쪽이 비동기 작업이 끝날 때 callback(err, result) 형태로 호출한다.
controller.signal 을 fetch 같은 비동기 API 에 전달. controller.abort() 호출 시 signal 이 전파되어 작업이 AbortError 로 reject 된다.
ArrayBlockingQueue 가 원형 배열과 takeIndex/putIndex 로 고정 크기 FIFO 를 구현하고, 단일 ReentrantLock 으로 put 과 take 를 직렬화.
async function* 는 yield 마다 값을 흘려보낸다. for-await-of 는 다음 값을 기다렸다가 받는다. 백프레셔가 자연스럽다.
AtomicInteger.incrementAndGet 의 내부 CAS 루프, 두 스레드 동시 증가 시 한 쪽이 성공/한 쪽이 실패 후 재시도하는 과정.