📗 Computer Science

트라이 정의문자열을 저장하고 검색하는 효과적인 트리 구조의 자료구조각 노드가 문자를 가지며, 루트 노드부터 자식 노드를 따라가며 문자열을 구성루트 노드루트 노드는 비어 있다루트 노드의 자식 노드는 각 단어들의 첫 글자를 나타낸다.사용하는 이유?좀 더 빠르게 문자열을 탐색할 수 있다그러나 각 노드마다 문자, 자식 노드 객체를 저장한다는 점에서 메모리가 많이 필요하다는 단점이 존재 구현노드 클래스와 트리 클래스 2개를 갖는다.노드 클래스각 노드는 child라는 자식 노드의 맵을 가짐Map단어의 끝인지를 표시 하는 boolean 타입 변수 필요트리 클래스트라이의 자료구조를 구현한 클래스insert 메서드 : 단어를 트라이에 삽입search 메서드 : 단어가 트라이에 존재하는지 확인static class Nod..
트리의 정의트리란?임의의 두 노드를 연결하는 단순 경로가 정확히 하나 존재하는 그래프단순 경로 : 같은 노드를 2번 이상 지나지 않는 것.다음과 같은 조건을 만족하면 트리🌲① 모든 노드가 하나의 연결 요소 ② 사이클이 없어야 한다.③ 노드의 개수가 간선의 개수보다 하나 많다.ex) 노드가 3개면 간선은 2개1번, 2번 조건을 만족하면 3번 조건도 만족할 수밖에 없다. (간선이 N개가 되면 무조건 사이클이 생길 수 밖에 없음)2번, 3번 조건을 만족하면 1번 조건도 만족하고, 1번, 3번 조건을 만족하면 2번 조건도 만족한다.즉, 위 조건 중 2개가 문제에 나오면 트리라고 생각하면 된다.ex) 두 도시를 지나는 경로는 정확히 하나 존재 ⇒ 트리ex) 어떤 두 도시를 잡을 때 그 경로가 무조건 존재하고, ..
정의BFS랑 다익스트라 차이점 ⇒ 가중치 여부(음수 가중치는 고려 X → 음수 가중치는 벨만포드)가중치가 없으면 BFS, 가중치가 있으면 다익스트라 사용BFS로는 최소 비용을 구할 수 없다.물론, 노드 수와 가중치가 많이 작다면 더미 노드를 만들어서 구현할 수는 있다.다익스트라로 접근하기거리 배열 초기 상태시작 노드를 1번으로 했기 때문에 dist[1] = 0, 나머지는 매우 큰 값으로 초기화하고 시작12345670∞∞∞∞∞∞거리가 제일 작은 1번 노드부터 시작1번 방문 처리 & 주변 노드 거리 갱신123456701500100∞∞∞방문 체크가 안 된 노드 중 거리가 제일 작은 2번 노드 탐색2번 방문 처리 & 주변 노드 거리 갱신거리 갱신할 때 1번 노드 부터 해당 노드까지 거리 중 최솟값으로 갱신한다...
플로이드 워셜 알고리즘 정의음수 사이클이 없는 그래프 내의 각 모든 정점에서 각 모든 정점까지의 최단거리를 구할 수 있는 알고리즘음수 사이클만 아니면, 음수 가중치를 갖는 간선이 존재해도 상관 x사용법인접 행렬 그래프 생성 ⇒ 초기화0개의 간선을 거쳐 모든 노드로 가는 방법자기 자신으로 갈 때 → 0그 외 다른 노드로 갈 수 있는 방법이 없으므로, 무한대 INF 값으로 초기화1개의 간선을 거쳐 모든 노드로 가는 경우 = 주어진 그래프에서 직접 연결된 경우를 생각해당 간선의 가중치로 초기화이때, 노드간 간선이 여러개 존재한다면 가장 작은 가중치 선택위 방식으로 0개 ~ N개의 간선을 거친 경우의 최소 거리 비용을 비교하여, 인접행렬을 갱신해나간다.3개의 중첩 루프를 사용해 각 정점 쌍에 대한 최단 경로 갱..
HTTP/1.0한 연결당 하나의 요청 처리 ⇒ RTT 증가RTT : 패킷 왕복 시간서버로부터 파일을 가져올 때마다 TCP 3-way handshake를 계속 열어야 하기 때문에 RTT 증가RTT 증가 해결 방법이미지 스플리팅 : 많은 이미지가 합쳐 있는 하나의 이미지를 다운로드 받고, 이를 기반으로 background-image의 position을 수정하여 이미지 표기코드 압축 : 개행 문자, 빈칸을 없애서 코드 크기 최소화이미지 Base64 인코딩 : 이미지 파일을 64진법으로 이루어진 문자열로 인코딩 → 그러나 37% 정도 크기가 커지는 단점인코딩 : 정보의 형태나 형식을 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해 다른 형태나 형식으로 변환하는 처리 방식HTTP/1.1매번 TCP 연..
ARP(Address Resolution Protocol)컴퓨터간 통신은 IP 주소에서 ARP를 통해 MAC 주소를 찾은 뒤 MAC 주소를 기반으로 통신하게 된다.즉, ARP란 **IP 주소(가상 주소)**로부터 **MAC 주소(실제 주소)**를 구하는 다리 역할을 하는 프로토콜RARP는 반대로 MAC 주소를 IP 주소로 변환예를 들어, 장치 A가 다른 장치들에 ARP Request 브로드캐스트를 보내서 IP 주소에 해당하는 MAC 주소를 찾으려 함 → 해당 주소인 장치 B가 ARP Reply 유니캐스트를 통해 MAC주소를 반환하게 됨브로드캐스트 : 송신 호스트가 전송한 데이터가 네트워크에 연결된 모든 호스트에 전송유니캐스트 : 고유 주소로 식별된 하나의 목적지에 1:1 데이터 전송홉바이홉 통신IP 주소..
네트워크 기기의 처리 범위애플리케이션 계층 : L7 스위치인터넷 계층(네트워크) : 라우터, L3 스위치데이터 링크 계층 : L2 스위치, 브리지물리 계층 : NIC, 리피터, AP애플리케이션 계층 처리 기기L7 스위치스위치 : 여러 장비 연결, 데이터 통신 중재, 목적지가 연결된 포트로 전기 신호를 보내 데이터 전송L7 스위치(로드밸런서) : 서버의 부하 분산바이러스, 불필요한 외부 데이터 필터링트래픽 모니터링헬스 체크를 통해 트래픽 분산 대상에서 장애 서버 제외💡 헬스 체크란?전송 주기와 재전송 횟수를 설정한 후 반복적으로 서버에 요청 보냄⇒ 요청이 정상적으로 이루어지면 정상적인 서버로 판단로드 밸런서를 통한 서버 이중화2대 이상의 서버를 기반으로 가상 IP를 제공하고 이를 기반으로 안정적인 서비스..
계층 구조특정 계층 변경 시 타 계층에 영향 X애플리케이션 계층응용 프로그램이 사용되는 프로토콜 계층이며 웹 서비스, 이메일 등 서비스를 실질적으로 사용자에게 제공프로토콜 : FTP, HTTP, SSH, SMTP, DNSFTP : 장치간 파일을 전송하는 데 사용되는 표준 통신 프로토콜SSH : 네트워크 서비스를 안전하게 운영하기 위한 암호화 프토토콜HTTP : 웹 사이트 이용 시 사용되는 프로토콜SMTP : 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜DNS : 도메인 이름과 IP 주소를 매핑해주는 서버 → IP 주소가 바뀌어도 사용자들에게 똑같은 도메인 주소로 서비스전송 계층송신자, 수신자를 연결하는 통신 서비스 제공연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 애플리케이션 계층과 인터넷 계..
네트워크란?노드와 링크가 서로 연결되어 리소스를 공유하는 집합노드 : 서버, 라우터, 스위치 등 네트워크 장치링크 : 유선, 무선처리량과 지연 시간좋은 네트워크란 ? 많은 처리량을 처리, 짧은 지연 시간, 적은 장애 빈도, 좋은 보안처리량링크 내에서 성공적으로 전달된 데이터 양. ⇒ 많은 트래픽을 처리한다 = 많은 처리량을 가진다단위 : bps(bits per second), 초당 송수신되는 비트 수트래픽 : 특정 시점에 링크 내 흐르는 데이터의 양⇒ 트래픽이 많아졌다 = 흐르는 데이터가 많아졌다.대역폭 : 주어진 시간 동안 네트워크 연결을 통해 흐를 수 있는 최대 비트 수지연 시간요청이 처리되는 시간, 어떤 메시지가 두 장치 사이를 왕복하는 데 걸리는 시간매체 타입(유선, 무선), 패킷 크기, 라우터 ..
팩토리 패턴팩토리 패턴(Factory Pattern)이란?객체 생성 부분을 떼어내 추상화한 패턴이며, 상속 관계에서 상위 클래스가 뼈대를 결정하고, 하위 클래스가 객체 생성에 관한 구체적인 구현 부분을 담당하는 패턴이다.장점 : 느슨한 결함 → 유연성 확보, 유지보수 수월Java 코드로 SIngleton 구현하기Coffe.javaabstract class Coffee{ public abstract int getPrice();}Latte.javapublic class Latte extends Coffee { private int price; public Latte(int price) { this.price = price; } @Override public int..
혜덕hyeduck
'📗 Computer Science' 카테고리의 글 목록