본문 바로가기

전체 글

(71)
TIL#70(브라우저에 네이버 홈페이지 URL을 입력했을 때 일어나는 과정) 오늘 한일URL 입력:사용자가 웹 브라우저에 https://www.naver.com을 입력한다.DNS 조회:브라우저는 URL에 해당하는 IP 주소를 알아내기 위해 DNS 서버에 요청을 보낸다. 이 과정은 로컬 캐시에서 먼저 확인하고 없을 경우 DNS 서버에 질의하는 방식이다.예를 들어, www.naver.com의 IP 주소가 xxx.xxx.xxx.xxx로 변환된다.TCP 연결 설정 (3-Way Handshake):IP 주소를 얻은 후 브라우저는 네이버 서버에 접속하기 위해 TCP 연결을 설정한다. 이때 앞서 설명한 3-Way Handshake가 수행된다.HTTPS 요청 (SSL/TLS Handshake):네이버는 HTTPS를 사용하므로 보안 연결을 위해 SSL/TLS Handshake가 이루어진다. 이를..
TIL#69(프로세스와 쓰레드) 오늘 한일프로세스(Process)1. 정의 : 프로세스는 실행 중인 프로그램의 인스턴스이다. 운영 체제는 각 프로세스를 독립된 메모리 공간에서 실행하며, 프로세스는 CPU, 메모리, 파일 핸들, 네트워크 연결 등의 자원을 소유한다.2. 특징- 독립된 메모리 공간 : 각 프로세스는 운영 체제로부터 고유한 메모리 공간(주소 공간)을 할당받는다. 다른 프로세스의 메모리에 직접 접근할 수 없다.- 자원 관리 : 프로세스는 파일, 네트워크 연결 등 여러 자원을 소유하며 운영 체제는 이러한 자원을 각 프로세스에 대해 관리한다.- 오버헤드 : 새로운 프로세스를 생성하는 데는 많은 자원이 필요하며 프로세스 간의 통신(예: IPC, Inter-Process Communication)도 상대적으로 복잡하다. 쓰레드(Thr..
TIL#68(SQL JOIN) 오늘 한일JOINSQL에서 여러 테이블을 결합하여 데이터를 조회할 때 사용하는 연산이다. 여러 테이블에서 데이터를 연결해 하나의 결과로 가져오는 데 사용되며, 다양한 유형의 JOIN이 있다.1. INNER JOIN- 정의 : INNER JOIN은 두 테이블 간의 공통된 부분만을 결합하여 조회한다. 두 테이블에서 일치하는 레코드(즉, 조인 조건에 부합하는 레코드)만 결과에 포함된다.- 예시 : 학생(Student) 테이블과 수강(Enrollment) 테이블을 INNER JOIN으로 결합하면 수강을 신청한 학생들만 결과에 포함됩니다. 수강하지 않은 학생이나 등록된 학생이 아닌 수강 정보는 제외된다.2. LEFT JOIN- 정의 : LEFT JOIN은 왼쪽 테이블(첫 번째 테이블)의 모든 레코드를 포함하며 오..
TIL#67(Primary Key, Foreign Key, ER 모델) 오늘 한일Primary Key(기본 키)1. 정의 : Primary Key는 데이터 베이스 테이블에서 각 레코드를 고유하게 식별하는 데 사용되는 컬럼(혹은 컬럼들의 조합)이다. Primary Key의 값은 테이블 내에서 유일하며, 중복될 수 없고 NULL 값을 가질 수 없다.2. 역할 : 데이터 베이스 내에서 각 레코드를 구분하여 식별하는 역할을 한다.3. 예시 : 학생 테이블에서 Student_ID 라는 컬럼이 Primary Key로 지정되었다면 각 학생은 고유한 Student_ID를 가지며 이를 통해 테이블 내의 특정 학생을 식별할 수 있다. Foreign Key (외래 키)1. 정의 : Foreign Key는 한 테이블의 컬럼이 다른 테이블의 Primary Key를 참조하여 두 테이블 간의 관계를 ..
TIL#66(이진 트리, 이진 검색 트리, 힙) 오늘 한일이진 트리 (Binary Tree)각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리 구조이다.특징- 모든 노드가 두 개 이하의 자식 노드를 가진다.- 완전히 균현 잡힌 트리, 편향 트리 등 다양한 형태가 있다.- 특정한 규칙이나 순서 없이 노드들이 배치될 수 있다. 이진 검색 트리 (Binary Search Tree, BST) 각 노드가 최대 두 개의 자식 노드를 가질 수 있는 트리 구조이다. 이진 트리의 각 노드는 왼쪽 자식과 오른쪽 자식에 대한 포인터를 가지고 있다.특징- 노드의 왼쪽 자식 노드는 항상 부모 노드보다 작고, 오른쪽 자식 노드는 부모 노드보다 크다.- 이 속성 때문에 이진 검색 트리는 효율적인 검색, 삽입, 삭제를 지원한다.- 평균적으로 검색, 삽입, 삭제의 시간 복잡도..
TIL#65(Array와 LinkedList, Stack과 Queue) 오늘 한일Array와 LinkedListArray : 배열은 동일한 데이터 타입의 요소들이 메모리 상에 연속적으로 저장된 자료구조이다.- 크기 : 배열의 크기는 초기화 시 결정되며, 이후에는 변경할 수 없다.- 접근 : 인덱스를 통해 O(1) 시간 복잡도로 요소에 빠르게 접근할 수 있다.- 메모리 : 고정된 크기 때문에 필요한 크기보다 큰 배열을 할당할 경우 메모리 낭비가 발생할 수 있다.- 삽입 / 삭제 : 중간에 삽입 / 삭제 시 O(n) 시간이 소요 되어 비효율적이다LinkedList : 연결 리스트는 각 요소가 노드로 구성되며, 각 노드는 데이터와 다음 노드에 대한 참조(포인터)를 포함하는 자료구조입니다. - 크기 : 필요에 따라 동적으로 크기를 조정할 수 있다.- 접근 :  특정 인덱스의 요소에..
TIL#64(정렬 알고리즘 JavaScript) 오늘 한일정렬 알고리즘다량한 방식으로 배열이나 리스트의 요소를 정렬하는 알고리즘 1. 선택 정렬 (Selection Sort)설명 : 선택 정렬은 리스트에서 가장 작은(또는 가장 큰) 항목을 찾아 정렬되지 않은 부분의 첫 번째 항목과 교환하는 과정을 반복한다. 이 과정은 리스트가 정렬될 때까지 계속된다.시간 복잡도 : O(n^2) 2. 버블 정렬 (Bubble Sort)설명 : 버블 정렬은 인접한 두 요소를 비교하여 필요에 따라 위치를 교환하며 리스트의 끝까지 반복하여 정렬하는 방식이다. 가장 큰 요소가 '거품'처럼 리스트의 끝으로 이동한다.시간 복잡도 : O(n^2) 3. 병합 정렬 (Merge Sort)설명 : 병합 정렬은 분할 정복 알고리즘의 일종으로, 리스트를 재귀적으로 두 부분으로 나눈 후, 각..
TIL#63(화살표 함수) 오늘 한일화살표 함수(Arrow Function)ES6에서 도입된 JavaScript의 함수 선언 방식 중 하나이다. 간결한 문법과 this 바인딩의 일관성 등 여러 가지 장점을 제공한다. function 키워드 대신 => 연산자를 사용하여 정의된다.인수가 하나일 대는 괄호를 생략할 수 있다. 함수의 본문이 단일 표현식일 때는 중괄호와 return 키워드를 생략할 수 있다.1. this 바인딩화살표 함수는 자신만의 this 컨텍스트를 가지지 않고 상위 스코프의 this를 그대로 사용한다. (lexical scoping)2. arguments 객체가 없다화살표 함수는 arguments 객체를 가지지 않는다. 필요한 경우 rest parameters를 사용해야 한다.3. 생성자로 사용할 수 없다.화살표 함수..