Computer-Sience40 [Network] 도메인 주소 입력 시 데이터 요청 과정 일반적으로 인터넷을 이용할 때, 간편하게 도메인 주소를 이용하여 접속을 하지만, 그 과정에 대하여 잘 알지 못하고 당연하게 이용하였기에 자세히 알아보자는 취지에서 주제를 정하고 조사하게 되었다. 브라우저에 도메인 주소(ex : www.youtube.com)를 입력했을 때 데이터를 요청하고 받아오는데 일어나는 과정은 크게 5가지의 단계로 나누어서 볼 수 있다. 1. 입력한 URL을 기반으로 DNS 검색 (캐싱 조회) 브라우저는 입력한 URL을 DNS 서버에 요청하기 전에 브라우저에 캐싱된 DNS에 일치하는 IP가 있는지 조회를 하고, 존재한다면 그것을 이용하고, 존재하지 않는다면 DNS 서버에 요청을 하게 된다. 2. 인접한 DNS 서버에 DNS query 전달 (DNS 서버 요청 - 반복) ISP(In.. 2023. 6. 25. [CS] Iterator / Generator 1. Iterator (반복자) 프로그래밍에서는 다양한 타입의 객체가 존재한다. 문자를 나타내는 char, 문자열을 나타내는 string와 정수를 나타내는 integer와 같은 타입과 Array나 List와 같은 다양한 형식을 객체는 가질 수 있는데, 그중에서 Array와 List 같이 각각의 원소를 순회할 수 있는 객체를 Iterable 하다고 칭한다. 이러한 점에서 유추할 수 있는 것처럼 Iterator 또한 크게 다르지 않다. 다음은 Python에서 반복자의 예시이다. Example : # 예제 리스트 a = [1,2,3,4,5] # 예제 리스트의 Iterator 객체 iter_a = iter(a) # 첫 번째 원소 print(next(iter_a)) # 두 번째 원소 print(next(iter_.. 2023. 5. 4. [CS] 객체 지향 프로그래밍 (Object-Oriented Programming) / SOLID 프로그래밍을 시작하면서, 객체 지향과 절차 지향과 같은 용어에 대하여 많이 접해봤을 것이다. 프로그래밍을 하는 관점에서 어떠한 기준을 두고 프로그래밍을 할 지에 관한 것이기에 다소 낯선 개념으로 느껴질 수도 있을 것이다. 그중 객체 지향 프로그래밍(OOP)과 그 원칙인 SOLID에 관하여 다루어 볼 것이다. 1. 객체 지향 프로그래밍(Object-Oriented Programming) 객체 지향 프로그래밍은 말 그대로 프로그래밍에서 모든 관점을 객체 중심으로 설계하여 프로그래밍하는 것을 의미하며, 이는 사람이 사물을 하나의 객체로 이해하는 것처럼, 이를 프로그래밍에 도입한 개념이다. 객체 지향 프로그래밍에서 큰 개념은 3가지로 나뉘어서 구분할 수 있다. 객체 자체를 의미하는 Object, 객체를 추상화한.. 2023. 4. 22. [Algorithm] DFS / BFS 알고리즘 공부를 하다 보면 DFS와 BFS라는 단어를 자주 접하게 되는데, 이는 트리 구조(또는 그래프)의 탐색과 관련된 알고리즘이다. 1. 깊이 우선 탐색 : DFS (Depth-First Search) 깊이 우선 탐색은 미로를 탐색할 때 벽을 따라 한 방향으로 끝까지 간 후 더 갈 수 없을 때 분기점으로 돌아와서 다른 방향으로 다시 탐색을 진행하는 방법으로 볼 수 있다. 모든 노드의 방문을 확인하고자 할 때 해당 탐색 방식을 채택하며, 기본적으로 BFS 방식보다 조금 더 느릴 수 있다. (Back-Tracking 과정으로 분기점 방문을 위해 노드를 거슬러 올라가는 과정이 존재) * DFS 특징 : 재귀적으로 호출하는 순환 알고리즘의 형태이다. 전위 순회(Pre-Order Traversals)를 포함한.. 2023. 4. 19. [Database] N + 1 1. N + 1 Database에서 Query 1번으로 N건의 자료를 가져오고 각 건에 대하여 데이터를 조회하려고 할 때, 각 건마다 Query가 추가로 발생하는 현상 이는, 주로 Lazy Loading의 특성을 가진 ORM에서 많이 발생하고 아래 예시를 통해 보게 되면, * Lazy Loading : ORM의 객체를 통해 데이터가 처리되는 순간 Query가 발생 Ex : 과일 테이블에서 가격이 1만원 미만인 과일의 이름들의 배열을 얻고자 할 때, SQL문을 이용하면 Query 1회로 데이터를 얻을 수 있다. 하지만 ORM을 통하면 Code에 for문이 필요하고, 그로 인하여 N + 1 현상이 발생한다. 이는 DB에 불필요한 Query를 많이 발생시켜, 성능을 저하시키는 큰 요인이 된다. 하지만 대부분의.. 2023. 4. 12. [Database] 이상 / 정규화 / 반정규화 DB를 이용할 때, 특정 조건을 충족하면 여러 문제를 야기할 수 있다. 이를 이상이라고 하며, 아래 내용을 통해 그 종류를 알 수 있다. 1. 이상 (Anomaly) 이상이란 DB에서 중복된 데이터 구조로 인하여 예기치 못하게 발생하게 되는 현상이다. 이상의 종류에는 3가지가 있다. 삽입 이상 : 데이터를 DB에 Insert 할 때, 의도하지 않은 값들이 같이 입력이 되는 현상 - Ex : 특정 속성의 값만 추가하고자 할 때, 다른 속성 값이 비게 되며 부분이 Null 값으로 입력되거나 데이터의 삽입이 실패하는 현상을 볼 수 있다. 삭제 이상 : 하나의 튜플을 삭제할 때, 의도하지 않은 값들과 함께 삭제되는 현상 - Ex : 특정 속성 값을 기준으로 튜플을 삭제하면 다른 속성들과 함께 삭제가 돼버리는 현.. 2023. 4. 11. 이전 1 2 3 4 5 6 7 다음