LAN, MAN, WAN
·
Computer Science/Network
1. 네트워크 규모 기준 분류- 네트워크는 규모를 기반으로 분류할 수 있다- 사무실 범위 부터 국가, 대륙간 범위까지 각 규모별로 네트워크가 나뉜다2. LAN(Local Area Network)- 근거리 통신망- 작은 지리적 범위(집, 학교, 사무실 등) 내의 컴퓨터 및 장치들을 연결한 네트워크- 주로 한 건물 또는 한 조직 등 작은 범위에서 사용된다특징:데이터 전송 속도가 빠르다 > 보통 100Mbps ~ 10Gbps 이상설치 및 유지 비용이 비교적 저렴하다보안성이 높다 (외부와 완전히 분리된 경우에)일반적으로 스위치, 허브, 공유기 등을 통해 구성된다장점:속도가 빠름관리가 용이함장애 발생 시 문제 식별이 쉬움단점:거리 제한이 있음 (보통 수십m ~ 수백m)확장성에 한계가 있음사용 예: 집에서 스마트폰..
네트워크 토폴로지(Network Topology)와 병목 현상(Bottleneck)
·
Computer Science/Network
1. 네트워크 토폴로지(Network Topology)- 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태- 즉, 네트워크에서 장치들이 어떻게 연결되어 있는지를 설명하는 개념이다2. 네트워크 토폴로지의 종류 1. 물리적 연결 방식(Physical Topology) > 물리적 토폴로지> 가장 대표적인 기준으로, 노드(장비)들이 실제로 어떻게 연결되어 있는지를 기준으로 나눈다 2. 데이터 흐름 방식(Logical Topology) > 논리적 토폴로지> 데이터가 네트워크 내에서 어떻게 이동하느냐를 기준으로 나눈다2-1. 버스 토폴로지(Bus Topology)- 하나의 중심 케이블(중앙 통신 회선)에 모든 장치(여러 개의 노드)가 연결된 네트워크 구성구성: 직선형 케이블에 장치들이 줄줄이 매달린 ..
네트워크(Network), 처리량(Throughput)과 지연 시간(Latency)
·
Computer Science/Network
1. 네트워크(Network)- 서로 연결된 것들의 집합- 즉, 컴퓨터 등의 장치들이 통신 기술을 이용하여 서로 리소스를 공유하는 집합2. 노드(Node)- 네트워크에 연결된 모든 장치- 즉, 데이터를 보내거나 받는 역할을 하는 주체- ex) 컴퓨터, 서버, 라우터, 프린터 등3. 링크(Link)- 노드와 노드를 연결하는 통신 경로- 즉, 노드 간 데이터가 지나다니는 길- ex) 유선, 무선4. 노드 vs 링크- 노드(Node)는 점이라면 링크(Link)는 선이다. - ex) 🧑‍💻내 컴퓨터(노드) 인터넷 케이블(링크) 🌐공유기(노드) 와이파이(링크) 📱스마트폰(노드)5. 처리량(Throughput)- 링크 내에서 성공적으로 전달된 데이터의 양- 즉, 얼만큼의 트래픽을 처리했는지를 나타낸다..
절차형 프로그래밍(Procedural Programming)
·
Computer Science/Programming Paradigm
1. 절차형 프로그래밍(Procedural Programming)- "순서대로 차례차례 처리해 나가는 방식"의 프로그래밍- 즉, 문제를 위에서 아래로 처리하는 명령어들의 모음2. 절차형 프로그래밍의 특징1. 순차적 실행위에서 아래로 코드가 실행됨2. 함수 사용 가능기능을 나눠서 함수로 만들지만 데이터는 공유됨 > 전역 변수 등 사용3. 객체나 클래스가 없음객체지향이 아니라, 변수 + 함수 중심으로 동작3. 절차형 프로그래밍의 장단점장점1. 단순하고 직관적: 순서대로 진행되니까 이해하기가 쉽고, 디버깅도 쉽다2. 성능 good: 불필요한 구조가 없어서 속도가 빠르다3. 작은 프로그램에 적합: 프로그램이 작고 간단할 때 가장 효율적인 방식이다 단점1. 유지보수가 어렵다: 규모가 커질수록 코드가 길어지고 복잡..
객체지향 프로그래밍(OOP, Object-Oriented Programming)
·
Computer Science/Programming Paradigm
1. 객체지향 프로그래밍(OOP, Object-Oriented Programming)- 현실 세계를 모델링 > 객체(Object)라는 단위로 프로그램을 구성하는 방식- 객체들의 집합으로 프로그램의 상호작용을 표현 > 데이터를 객체로 취급 > 객체 내부에 선언된 메서드를 활용하는 방식- 즉, 현실 세계처럼 객체 단위로 데이터와 동작을 묶어서, 확장성과 유지보수가 좋은 소프트웨어를 만들기 위한 프로그래밍 방식2. 객체 ?> 현실 세계에는 사람, 자동자, 강아지 처럼 구체적인 존재( =객체)가 있고, 각각 속성( =데이터)과 행동( =기능)을 가진다> ex) 강아지 객체속성: 이름, 나이, 품종행동: 짖는다, 먹는다, 뛴다3. 객체지향 프로그래밍의 특징1. 캡슐화(Encapsulation)> 데이터와 메서드를..
선언형과 함수형 프로그래밍(Declarative, Functional Programming)
·
Computer Science/Programming Paradigm
1. 프로그래밍 패러다임(Programming Paradigm)- 프로그래밍을 어떻게 바라보고, 어떤 방식으로 문제를 해결할지를 정하는 사고방식- 즉, 프로그래밍을 하는 스타일이나 철학2. 선언형 프로그래밍(Declarative Programming)- '무엇을' 풀어내는가에 집중하는 패러다임 > '무엇을' 할 것인지만 선언하고, 어떻게 할지는 신경 X- "프로그램은 함수로 이루어진 것" 이라는 명제가 담겨 있는 패러다임- ex) SQL, HTML, React 등3. 선언형 프로그래밍의 장단점*병렬 처리: 여러 작업을 동시에 처리하는 것즉, 100개의 데이터를 처리해야 할 때, 1개씩 순서대로 처리하는대신 여러 개를 나눠서 동시에 처리하는 것장점1. 가독성 향상: 코드가 간결하고 의도를 명확히 표현2. ..
MVC 패턴 (Model-View-Controller Pattern)
·
Computer Science/Design Pattern
1. MVC 패턴 (Model-View-Controller Pattern)- 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 패턴- 애플리케이션의 구성 요소를 세가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발함2. 모델(Model), 뷰(View), 컨트롤러(Controller)- 모델(Model)애플리케이션의 데이터인 데이터베이스, 상수, 변수 등 > 데이터와 관련된 로직 담당애플리케이션의 상태를 관리하고, 데이터를 처리하는 비즈니스 로직을 담당View나 Controller에서 요청을 처리 > 데이터를 저장, 변경 작업Model은 View나 Controller와 독립적 >> ***화면에 표시되는 방법이나 사용자 인터페이스와 무관ex) 사용자 데이터..
노출모듈 패턴(Revealing Module Pattern)
·
Computer Science/Design Pattern
1. 노출모듈 패턴(Revealing Module Pattern)- 내부 구현은 숨기고, 외부에 공개할 함수만 명확하게 드러내는 패턴- 주로 JavaScript에서 사용된다.- JavaScript는 파일마다 스코프가 분리되지 않기 때문에, 변수/함수 은닉과 공개를 명확히 구분하기 때문2. JavaScript에서의 노출모듈 패턴 예제const BankAccount = (function() { // private 변수 let balance = 0; // private 함수 function logBalance() { console.log("현재 잔액:", balance); } // public 함수 정의 function deposit(amount) { balance += amount; ..
이터레이터 패턴(Iterator Pattern)
·
Computer Science/Design Pattern
1. 이터레이터 패턴(Iterator Pattern)- 컬렉션(Collection) 객체(=리스트, 배열 등)의 요소들에 순차적으로 접근할 수 있도록 인터페이스를 제공하는 디자인 패턴- 컬렉션의 내부 구조를 노출 시키지 않고도 외부에서 그 요소들을 순차적으로 접근, 처리 가능2. 이터레이터 패턴의 구성 요소1. IteratorIterator 인터페이스는 컬렉션에서 요소를 순차적으로 접근할 수 있는 메서드를 제공ex) hasNext(), next()2. ConreteIteratorIterator 인터페이스를 구현한 클래스컬렉션의 실제 요소들을 순차적으로 반환하는 역할3. Aggregate( or Collection)이터레이터를 생성하는 역할컬렉션 자체는 이터레이터를 통해 접근할 수 있는 요소들을 보유하고 ..
프록시 패턴(Proxy Pattern)
·
Computer Science/Design Pattern
1. 프록시(Proxy)- 대리자를 의미한다- 실제 객체나 서버 대신에 요청을 받아 대신 처리하거나, 그 요청을 전달하는 역할을 하는 중간 객체- 즉, 대리인처럼 실제 작업을 대신하는 객체이다 ~!2. 프록시를 사용하는 이유1. 접근 제어: 어떤 객체에 대한 접근을 제어하고, 필요 시에 권한을 검사할 수 있다2. 성능 최적화: 실제 객체가 무겁거나 시간이 많이 걸릴 경우, 프록시가 작업을 지연시키거나 캐싱하는 방법이 있다3. 로깅과 보안: 실제 객체가 호출되기 전에 요청을 로깅하거나, 보안 처리를 할 수 있다.4. 리모트 객체: 네트워크를 통해 접근할 수 없는 객체를 마치 로컬 객체처럼 사용할 수 있게 해준다.3. 프록시 패턴(Proxy Pattern)- 대리 객체(Proxy)를 통해 실제 객체에 접근하..