목록분류 전체보기 (154)
개발자공부일기

CPU는 컴퓨터의 주요 기능 구성 요소로서, 컴퓨터에서 모든 연산과 제어 작업을 처리하는 중요한 장치입니다. 컴퓨터의 두뇌라고도 할 수 있는 CPU는 다양한 프로그램과 운영 체제를 실행하고, 데이터를 처리하여 결과를 출력하는 역할을 합니다. CPU는 하나의 장치가 아니라 여러 구성 요소가 협력하여 작업을 처리하는 복합적인 시스템입니다.CPU의 세 가지 주요 구성 요소제어 장치 (Control Unit, CU)제어 장치는 컴퓨터의 각 부품에 명령을 전달하고 제어하는 역할을 합니다. 제어 장치는 프로그램 카운터와 명령어 레지스터를 사용하여 실행할 명령어의 순서를 제어하며, CPU 내의 다른 장치들과 협력하여 연산을 수행하게 합니다. 제어 장치는 데이터와 명령어 흐름을 관리하고, 프로그램 흐름을 제어하는 중요..

패킷 처리 및 데이터 전송1. 패킷의 구조패킷은 네트워크를 통해 데이터를 전송할 때 사용하는 작은 데이터 단위로, 특정한 형식에 따라 데이터를 포함합니다. 주요 구성 요소는 다음과 같습니다:헤더 (Header)패킷의 출발지, 목적지, 패킷 번호, 프로토콜 정보 등을 포함.데이터 전달 경로를 결정하고 오류를 처리하는 데 사용됩니다.예: IP 헤더(출발지 IP, 목적지 IP 등), TCP 헤더(포트 번호 등).페이로드 (Payload)실제 전송하려는 데이터.응용 계층의 데이터가 여기에 포함됩니다.트레일러 (Trailer)데이터 무결성을 검증하기 위한 정보(예: 오류 검출 코드).모든 패킷에 포함되지는 않습니다.2. 직렬화와 역직렬화 (Serialization & Deserialization)직렬화 (Seri..
버퍼(Buffer)와 스트림(Stream) in Node.jsNode.js에서 버퍼와 스트림은 파일 처리, 네트워크 통신 등 대규모 데이터 처리를 효율적으로 수행하기 위한 핵심 개념입니다. 유튜브 스트리밍을 예로 들면, 이 두 개념이 어떻게 작동하는지 쉽게 이해할 수 있습니다.버퍼(Buffer)버퍼는 고정된 크기의 메모리 공간으로, 바이너리 데이터를 임시로 저장합니다. 주로 파일, 네트워크 프로토콜, 스트리밍 등에서 데이터가 처리되기 전에 저장하는 용도로 사용됩니다.유튜브 스트리밍에서 버퍼는 동영상 데이터를 재생 전에 임시로 저장하는 역할을 합니다.주요 특징고정 크기: 생성 시 크기가 결정되며, 이후 변경 불가.바이너리 데이터 처리: 데이터는 이진 형식으로 저장되어 직접 조작이 가능.임시 저장소 역할: ..
오늘 팀프로젝트에서 forEach안에서 Promise를 사용했는데 작동을 안해서 알아봤다. Promise와 forEach의 동작 차이1. forEach의 동작 방식forEach는 배열의 각 요소를 동기적으로 순회하며 콜백 함수를 실행합니다.즉, 배열의 모든 요소를 비동기 작업 여부와 관계없이 바로 처리합니다.기본 동작const numbers = [1, 2, 3];numbers.forEach((num) => { console.log(num); // 동기적으로 즉시 실행});console.log('Done'); // forEach가 끝나고 실행출력:123Done2. forEach와 비동기 함수forEach에서 콜백 함수가 async일 경우, 콜백 함수가 반환하는 Promise는 무시됩니다.forEach 자..
I/O 최적화와 Non-blocking I/O는 특히 실시간 애플리케이션(예: 게임 서버, 채팅 애플리케이션, 웹 서버)에서 성능을 극대화하는 데 중요한 개념입니다. 나는 Non-blocking I/O와 Node.js의 Event Loop를 중심으로 알아봤다.I/O(Input/Output) 최적화란?I/O 최적화는 프로그램이 데이터를 읽고 쓰는 과정에서 발생하는 지연 시간(latency)과 대기 시간(wait time)을 최소화하는 것을 목표로 합니다. 전통적인 블로킹 방식에서는 데이터가 완전히 처리될 때까지 다른 작업을 하지 못하지만, Non-blocking I/O 방식에서는 작업을 기다리지 않고 다른 작업을 동시에 처리할 수 있습니다.블로킹 I/O (Blocking I/O)와 비블로킹 I/O (Non..
웹소캣 팀프로젝트를 진행중이다.저번주 개인과제까지만해도 내가 뭘 해야하고 뭘 만들고 있는지 몰랐는데 이제 좀 보이기 시작하는거 같다.팀원분들도 많이 도와주셔서 방향도 잘 잡히는거 같다. 주말에도 계속 코드 읽어보고 생각하며 만들어봐야겠다.팀원들의 코드와 연결되는 부분이 많아서 소통도 더 자주하고 다른 팀원들 코드도 계속 봐야겠다.그리고 이번주에 진행한 이론 수업들에서 내가 많이 부족함을 느꼈다. 기술면접 대비하려면 TIL열심히 쓰면서 모르거나 헷갈리는 개념들을 차곡차곡 쌓아가야겠다.

백엔드 아키텍처의 중요성현대의 소프트웨어 개발에서 백엔드 아키텍처는 시스템의 성능, 확장성, 유지보수성을 결정짓는 핵심 요소입니다. 왜냐하면 백엔드 아키텍처가 잘 설계되어 있지 않으면, 애플리케이션의 성능 저하, 확장 곤란, 유지보수 어려움 등의 문제가 발생할 수 있기 때문입니다.현대적인 백엔드 아키텍처는 이러한 문제들을 해결하기 위해 모듈성, 재사용성, 테스트 용이성을 고려하여 설계됩니다. 이는 애플리케이션의 신속한 개발과 효율적인 운영을 가능하게 합니다.백엔드 아키텍처를 설계할 때는 시스템의 요구 사항과 목표를 명확하게 이해하는 것이 중요합니다. 왜냐하면 아키텍처는 이러한 요구 사항과 목표를 충족시키기 위한 해결책을 제공하기 때문입니다.또한, 현대적인 아키텍처 설계는 지속적인 변화와 기술의 진화에 유..
TCP/IP 4계층 또는 OSI 7계층 모델에서 응용 계층은 네트워크 프로토콜의 최상위 계층으로, 사용자와 네트워크 간의 인터페이스 역할을 수행합니다. 이 계층은 사용자가 네트워크를 통해 데이터를 송수신하고 다양한 서비스를 사용할 수 있도록 지원하며, 주로 웹 브라우징, 이메일 전송, 파일 전송과 같은 애플리케이션 중심의 작업을 처리합니다.응용 계층은 사용자의 요구를 충족시키기 위해 다양한 응용 프로그램과 상호작용하며, 이들 응용 프로그램이 네트워크 자원을 효율적으로 사용할 수 있도록 필요한 프로토콜을 제공합니다. 이 계층에서 작동하는 프로토콜은 사용자가 이해할 수 있는 형식으로 데이터를 처리하며, 데이터의 전송, 수신, 처리 과정을 투명하게 만들어 사용자는 복잡한 네트워크 작업을 알 필요 없이 서비스를..