CS 14

(CS) 네트워크 - 프록시와 안정적인 트래픽

오리진 서버와 중간 서버 : 포워드 프록시와 리버스 프록시오리진 서버 : 자원을 생성하고 클라이언트에게 권한이 있는 응답을 보낼 수 있는 HTTP 서버  중간 서버프록시포워드 프록시라고도 함 클라이언트가 선택한 메시지 전달의 대리자.캐시 저장, 클라이언트 암호화 및 접근 제한 등의 기능 제공클라이언트와 더 가까이 위치함게이트 웨이리버스 프록시라고도 함오리진 서버들을 향하는 요청 메시지를 먼저 받아서 전달하는 문지기오리진 서버에 가까이 위치함캐시를 저장할 수 있으며, 부하를 분산하는 로드밸런서로도 동작 가능 고가용성 : 로드 밸런싱과 스케일링가용성주어진 특정 기능을 실제로 수행할 수 있는 시간의 비율고가용성이 필요한 호스트는 서버임트래픽이 가장 큰 영향을 끼침 → 과도한 트래픽은 발열  및 레이스 컨디션,..

CS/기타 2025.03.30

(CS) 네트워크 - 전송 계층, TCP & UDP

TCP와 UDP의 목적과 특징포트를 통한 프로세스 식별패킷의 최종 송수신 대상 : 호스트가 실행하는 프로세스ex) 하나의 호스트는 여러 프로세스(인터넷, 게임, 채팅 등) 동시 실행 → 네트워크를 통해 주고받는 패킷 → 프로세스에 전달되어야함port를 통해, 특정 호스트가 실행하는 특정 프로세스를 식별할 수 있음형식 → IP 주소 : 포트번호 (ex. 192.168.0.1:8000)TCP와 UDP 헤더에는 모두 포트 번호 필드인 송신지 포트번호와 수신지 포트 번호를 포함하고 있음.16비트로 표한할 수 있는 포트 번호의 총 개수는 2^16 == 65536개 ( 0 ~ 65535 )잘 알려진 포트 (well known port) : 0 ~ 1023 번20, 21 : FTP22 : SSH23 : TELNET5..

CS/기타 2025.03.25

(CS) 네트워크 - 네트워크 계층 IP

IP의 목적과 특징목적1. 주소지정 (addressing)네트워크 간의 통신 과정에서 호스트를 특정하는 것2. 단편화 (fragmentation)데이터를 여러 IP 패킷으로 올바르게 쪼개어 보내는 것특징1. 신뢰할 수 없는 통신2. 비연결형 통신 주소 지정과 단편화주소 지정 :  IP 주소(논리주소라고도 부르는 네트워크 계층의 주소 체계)를 통해 이루어지며, IP 패킷 헤더를 통해 알수 있음송신지 IP 주소 , 수신지 IP 주소송수신지를 식별할 수 있는 IP 주소 명시하나의 IP 주소는 총 4바이트 크기로 구성, 숫자당 8비트 → 0~255 범위의 10진수 4개로 표기10진수는 점으로 구분하며, 구분된 하나의 10진수를 옥텟(octet)이라고 함ex ) 192.168.0.1 → '192' , '168',..

CS/기타 2025.03.22

(CS) 네트워크 - 물리 계층과 데이터 링크 계층

이더넷(Ethernet)통신 매체를 통해 신호를 송수힌하는 방법, 데이터 링크 계층에서 주고받는 데이터(프레임) 형식등이 정의된 기술대부분의 유선 LAN은 이더넷을 기반으로 구현되어 있음 이더넷 표준IEEE 802.3이라는 이름으로 국제 표준화된 기술 → 이더넷과 관련된 다양한 표준들의 모음에 가까움!!새로운 이더넷 표준들은 802.3뒤에 붙은 알파벳으로 버전을 나타냄오늘날의 유선 LAN 대부분이 이더넷 표준을 따르기 때문에, 대다수의 LAN 장비들이 특정 이더넷 표준을 따름이더넷 표준이 달라지면 통신 매체 종류, 신호 송수신 방법, 최대 지원속도가 달라질 수 있다. 이더넷 프레임이더넷 기반의 네트워크에서 주고받는 프레임Ethernet 2 프레임이라고 부름프리앰블, 수신지 MAC 주소등의 정보를 포함하고..

CS/기타 2025.03.19

(CS) 네트워크 - 기본구조

기본 구조노드와 간선으로 이루어진 자료구조 → 그래프의 형태네트워크 기기 : 노드 , 정보 교환에 필요한 통신 매체 : 간선 네트워크 토폴로지네트워크 상 노드와 노드 사이의 연결 구조망형, 트리형, 링형, 성형, 버스형(선형) 등이 있음네트워크를 통해 주고 받는 정보를 최초로 송,수신하는 노드를 호스트라고함.ex. 노트북의 웹 브라우저를 통해 구글 홈페이지 접속 했다면?→ 노트북, 구글 홈페이지 서버가 각각 호스트노트북은 요청(request)을 보냈으니 클라이언트, 구글은 응답(response)을 보내니까 서버라고 함! 망형(Mesh) 토폴로지특징모든 노드가 서로 직접 연결된 구조모든 노드가 다른 모든 노드와 연결되면 완전 망형, 그게 아니면 부분 망형이라 불림.장점장애 발생 시 우회 경로가 존재 → 신..

CS/기타 2025.03.18

(CS) 데이터베이스 - 트랜잭션, 인덱스, 조인

트랜잭션과 무결성트랜잭션DB에서 하나의 논리적 기능을 수행하기 위한 작업의 단위여러개의 쿼리들을 하나로 묶는 단위 원자성(atomicity)트랜잭션과 관련된 일이 모두 수행 되거나, 모두 안되거나를 보장하는 특징커밋과 롤백으로 인해, 데이터의 무결성 보장커밋여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어롤백트랜잭션으로 처리한 하나의 묶음 과정을 일어나기 전으로 돌리는 일일관성(consistency)허용된 방식으로만 데이터를 변경해야하는 것 격리성(독립성, isolation)트랜잭션 수행시, 트랜잭션 간에 독립적으로 수행이 가능하는 것격리 수준에 따라 발생하는 현상팬텀 리드- 한 트랜잭션 내에서 동일한 쿼리를 보냈지만, 조회 결과가 다른 경우 ex)키 170cm 이상 회원 조회 → 3명키 175cm 회..

(CS) 데이터베이스 - 기본 및 정규화

데이터 베이스의 기본데이터 베이스(DataBase - DB)일정한 규칙을 통해 구조화되어 저장되는 데이터의 모음DB를 제어, 관리하는 통합 시스템을 DBMS(DataBase Management System)라고 함실시간 접근 및 동시 공유 가능아래는 프로그램과 DBMS, DB간의 관계도를 그림으로 나타낸 것.  엔터티(entity)여러 개의 속성을 가진 명사A가 혼자서 존재하지 못하고, B의 존재에 따라 종속적이라면, A는 약한 엔티티, B는 강한 엔티티 (ex. 방 : 약한, 건물 : 강한)  릴레이션(relation)DB 에서 정보를 구분하여 저장하는 기본 단위관계형 데이터베이스 → " 테이블 ", NoSQL 데이터베이스 → " 컬렉션 "로 칭함행 하나(레코드)의 집합 → 릴레이션의 집합 → 테이블의..

(CS) 정렬 - 퀵 정렬

분할 정복 방식을 사용하여 피벗을 기준으로 데이터를 분할하며 정렬하는 방법일반적인 경우, 정렬 중 가장 빠르고, 대부분 효율적이다. 내부 정렬에 적합하며, 메모리에 올려놓고 정렬하기 때문에, 효율이 좋다. 최악의 경우, n^2의 시간 복잡도가 발생할 수 있다.추가 메모리 없이 정렬을 하지만, 재귀 호출을 하기 때문에, 스택 오버플로우의 위험이 있다. 대부분의 실무 정렬에서 사용대용량 데이터에서 효과적데이터 베이스 정렬, 웹 페이지 정렬에서 자주 사용 public class QuickSort { public static void quickSort(int[] arr, int low, int high) { if (low

CS/기타 2025.01.21

(CS) 디자인 패턴 - 전략 패턴

전략 패턴 (정책 패턴)정의행동을 정의하는 여러 알고리즘을 캡슐화 하고, 이들 중 하나를 선택하여 사용할 수 있도록 만드는 디자인 패턴교체시기는 런타임 시점에 진행장점유연성알고리즘을 쉽게 교체하거나 확장할 수 있다유지보수성각 알고리즘이 별도의 클래스에 정의되어 있기 때문에 코드 수정이 간단하다개방/폐쇄 원칙 준수 (SOLID에서 OCP 파트)기존 코드를 수정하지 않고 새로운 알고리즘을 추가할 수 있다. → 확장성 또한 가지고 있다단점복잡성 증가알고리즘마다 클래스를 생성해야 하기 때문에, 클래스가 많아진다.사용자 혼란 가능성사용자가 어떤 전략을 선택해야 할지(알고리즘이 너무 많아서) 명확하지 않을 수 있다.사용하는 곳런타임에 알고리즘을 변경해야 할 때특정 동작을 여러 방식으로 구현해야 할 때코드가 조건문(..

CS/디자인 패턴 2025.01.09

(CS) 디자인 패턴 - 팩토리 패턴

팩토리 패턴정의객체를 사용하는 코드에서, 객체 생성 부분을 떼어내 추상화한 패턴상속 관계에 있는 두 클래스에서 상위 클래스가 뼈대를 결정하고, 하위 클래스에서 객체의 구체적 내용을 결정하는 패턴장점유연성상위, 하위 클래스가 분리 되기 떄문에 loose 한 결합을 가진다.인스턴스 생성방식에 전혀 알 필요가 없다캡슐화객체 생성 로직이 따로 떼어져 있기 때문에 리팩토링시, 특정 위치만 고치면 되므로, 유지 보수성이 증가한다.확장성새로운 클래스 추가 시 기존 코드를 수정하지 않고 확장할 수 있다단점복잡성 증가클래스가 많아지기 때문에, 코드 구조가 복잡해질 수 있다추가 계층팩토리 클래스가 추가되기 때문에, 코드의 가독성이 낮아질 수 있다사용하는 곳객체 생성 로직이 복잡한 경우객체 생성 시점이나 생성 방법을 유연하..

CS/디자인 패턴 2025.01.09