목록BOOKS (46)
\(@^0^@)/
1 회독을 마무리하면서 책에 설명된 용어들을 리마인드도 할 겸 정리하는 시간을 가져보려 한다. 끝부분에 찾아보기 목차에 있는 용어들도 시간이 된다면 ChatGPT를 활용해서 정리해 볼 수 있도록 하자! [ 1장 디자인 패턴과 프로그래밍 패러다임 ] 라이브러리 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것을 의미한다. 폴더명, 파일명 등에 대한 규칙이 없고 프레임워크에 비해 자유롭다. ex) 무언가를 자를 때 '도구'인 '가위'를 사용해서 '내가' 직접 컨트롤하여 자르는데, 라이브러리는 이와 비슷하다. 프레임워크 공통으로 사용될 수 있는 특정한 기능들을 모듈화 한 것을 의미한다. 폴더명, 파일명 등에 대한 규칙이 있으며 라이브러리에 비해 좀 더 엄격하다. ex) 다른 곳으로 이동할 때 '도구'인 ..
포트폴리오 첫 문장이 중요하다 한 줄로 자신을 표현하라 한 줄로 본인이 어떠한 개발자인지 나타내야 한다. 자신을 나타내는 아이덴티티를 고찰해서 한 줄로 나타내야 한다. ex) 도전적인 개발자, 오픈 소스에 관심이 많은 개발자, 다도를 즐기는 개발자 등 장점 세 가지 많은 장점 가운데 세 개를 뽑아서 세 개의 장점만 보여주자 신입은 많은 장점을 가진 사람을 뽑는 것이 아니라 기본기가 탄탄하고 열정을 가진 인재들을 뽑는다. ex) 높은 학점, 높은 열정, 높은 자료 구조 이해력, 높은 알고리즘 이해력 등을 내세워라. 숫자로 말하라 자신이 어떤 사람인지 수학적, 논리적으로 표현해야 한다. 내가 어떠한 경험을 가지고 있는지에 대해 숫자로 이야기하는 것이 중요하다. ex) TDD에서 테스트 커버리지를 몇 퍼센트로..
자료 구조(data structure) : 효율적으로 데이터를 관리하고 수정, 삭제, 탐색, 저장할 수 있는 데이터 집합 복잡도는 시간 복잡도와 공간 복잡도로 나뉜다. 시간 복잡도 문제를 해결하는 데 걸리는 시간과 입력의 함수 관계 어떠한 알고리즘의 로직이 '얼마나 오랜 시간'이 걸리는지를 나타내는 데 쓰인다. 빅오 표기법 : 입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것. 시간 복잡도를 보통 빅오 표기법으로 나타낸다. 코드의 시간 복잡도를 빅오 표기법으로 나타내면 O(n²)이 된다. '가장 영향을 많이 끼치는'항의 상수 인자를 빼고 나머지 항을 없앤 것. 다른 항들이 신경 쓰일 수도 있지만 증가 속도를 고려한다면 그렇지 않다. 입력 크기가 커질수록 연산량이 가장 많이 커지는 항은 ..
인덱스 데이터를 빠르게 찾을 수 있는 하나의 장치 인덱스를 설정하면 테이블 안에 내가 찾고자 하는 데이터를 빠르게 찾을 수 있다. ex) 책의 마지막 장에 있는 찾아보기 B-트리 인덱스는 보통 B-트리라는 자료 구조로 이루어져 있다. 루트 노드, 리프 노드, 브랜치 노드(루트 노드와 리프 노드 사이에 있는) 인덱스가 효율적인 이유 효율적인 단계를 거쳐 모든 요소에 접근할 수 있는 균형 잡힌 트리 구조와 트리 깊이의 대수확장성 때문 대수 확장성 트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것 기본적으로는 인덱스가 한 깊이씩 증가할 때마다 최대 인덱스 항목의 수는 4배씩 증가한다. 인덱스 만드는 방법 MySQL 클러스터형 인덱스와 세컨더리 인덱스가 있다. 클러스터형 인덱스 테이블당 하나를 설정할 ..
트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 여러 개의 쿼리들을 하나로 묶는 단위 ACID 특징을 (원자성, 일관성, 독립성, 지속성) 갖는다 원자성(atomicity) 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장한다 ex) 트랜잭션을 커밋했는데, 문제가 발생하여 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장하는 것 커밋(commit)과 롤백 커밋 : 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어 트랜잭션 단위로 수행되며 변경된 내용이 모두 영구적으로 저장되는 것 "하나의 트랜잭션이 성공적으로 수행되었다"라고도 말할 수 있다. update, insert, delete의 쿼리가 하나의 트랜잭션 단위로 수행되고 이후에 데이터베이스에 영구 저장된다. 롤..
데이터베이스의 기본 데이터베이스(DB, DataBase) 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리(query) 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 실시간 접근과 동시 공유가 가능하다. DBMS(DataBase Management System) 데이터베이스를 제어, 관리하는 통합 시스템 데이터베이스 위에 DBMS가 있고, 그 위에 응용 프로그램이 있다. ex) MySQL이라는 DBMS가 있고 그 위에 응용 프로그램 Node.js, php 엔터티(entity) 사람, 장소, 물건, 사건, 개념 등 여러 개의 속성을 지닌 명사 서비스의 요구 사항에 맞춰 속성이 정해진다. 약한 엔터티와 강한 엔터..
프로세스(process) 컴퓨터에서 실행되고 있는 프로그램 CPU 스케줄링의 대상이 되는 작업(task) 스레드 프로세스 내 작업의 흐름 프로세스와 컴파일 과정 프로세스 : 프로그램으로부터 인스턴스화된 것 ex) 프로그램은 구글 크롬 프로그램(chrome.exe)과 같은 실행 파일이며, 이를 두 번 클릭하면 구글 크롬 '프로세스'가 시작되는 것. 프로그램 : 컴파일러가 컴파일 과정을 거쳐 컴퓨터가 이해할 수 있는 기계어로 번역되어 실행될 수 있는 파일이 되는 것. (여기서 말하는 프로그램이란 C 언어 기반의 프로그램을 의미하며, 인터프리터 언어로 된 프로그램과는 다르다) 프로그램의 컴파일 과정 : 소스 코드 파일 -> 전처리 -> 컴파일러 -> 어셈블리어 -> 어셈블러 -> 목적코드 -> 링커 -> 실행..
컴퓨터는 운영체제, CPU, 메모리 등으로 이루어져 있다. 운영체제 : 소프트웨어(유저 프로그램)를 관리하는 일꾼 CPU 메모리 운영체제의 역할과 구조 운영체제의 역할 CPU 스케줄링과 프로세스 관리 : CPU 소유권을 어떤 프로세스에 할당할지, 프로세스의 생성과 삭제, 자원 할당 및 반환을 관리한다. 메모리 관리 : 한정된 메모리를 어떤 프로세스에 얼마큼 할당해야 하는지 관리한다. 디스크 파일 관리 : 디스크 파일을 어떠한 방법으로 보관할지 관리한다. I/O 디바이스 관리 : I/O 디바이스들인 마우스, 키보드와 컴퓨터 간에 데이터를 주고받는 것을 관리한다. 운영체제의 구조 유저 프로그램이 맨 위에 있고 GUI, 시스템콜, 커널, 드라이버가 있으며 가장 밑에 하드웨어가 있는 구조. GUI, 시스템콜, ..
네트워크는 여러 개의 네트워크 기기를 기반으로 구축된다. 네트워크 기기의 처리 범위 네트워크 기기 계층별 처리 범위 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가하다. 애플리케이션 계층 : L7 스위치 인터넷 계층 : 라우터, L3 스위치 데이터 링크 계층 : L2 스위치, 브리지 물리 계층 : NIC, 리피터, AP 애플리케이션 계층을 처리하는 기기 스위치 : 여러 장비를 연결하고 데이터 통신을 중재하며 목적지가 연결된 포트로만 전기 신호를 보내 데이터를 전송하는 통신 네트워크 장비 L7 스위치* L7 스위치는 로드밸런서(Load Balancer)라고도 한다. 서버의 부하를 분산하는 기기 클라이언트로부터 오는 요청들을 뒤쪽의 여러 서버로 나누는 역할을 한다 시스템이 처리할 ..
네트워크 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합 노드 : 서버, 라우터, 스위치 등 네트워크 장치를 의미 링크 : 유선 또는 무선을 의미 '좋은' 네트워크 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크 처리량(throughput)* : 링크를 통해 전달되는 단위 시간당 데이터양 단위 : bps(bits per second), 초당 전송 또는 수신되는 비트 수라는 의미 처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받는다. 지연 시간(latency)* : 요청이 처리되는 시간, 어떤 메시지가 두 장치 사이를 왕복하는 ..