CS 9

[HTTP] URI와 웹 브라우저 요청 흐름

URI(Uniform Resource Identifier)URN과 URL은 URI에 포함되는 개념이다.URN(Uniform Resource Name): 리소스에 이름을 부여URL(Uniform Resource Locator): 리소스가 있는 위치를 지정URN은 거의 사용하지 않으므로 URI를 URL과 같은 의미로 보아도 크게 무리가 없다.구조scheme://[userinfo@]host[:port][/path][?query][#fragment] https://www.google.com:443/search?q=hello&hl=ko프로토콜(https)호스트명(www.google.com)포트번호(443) - https의 기본포트는 443으로, 보통 생략되어있다.Path(/search)쿼리 파라미터(q=hello..

CS/Network 2024.05.16

[HTTP] 인터넷 네트워크

IP(Internet Protocol)역할지정한 IP 주소(IP Address)에 데이터 전달패킷(Packet: Package + bucket)이라는 통신 단위로 데이터 전달: IP 패킷 정보에는 출발지 IP, 목적지 IP 등이 들어있다.한계비연결성패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송: 정확히 패킷이 전달되었는지 알 수 없다.비신뢰성중간에 패킷이 사라지면? (중간에 어떤 노드에서 패킷이 소실된다면?): 정확히 패킷이 전달되었는지 알 수 없다.패킷이 순서대로 안오면?: 패킷을 먼저보낸다고 먼저 받는 것이 아닐 수 있는데(이동하는 경로가 다를 수 있기 때문), 이때 패킷을 받는 입장에서 순서를 알 수 없다.TCP, UDP인터넷 프로토콜 스택의 4계층높은 계층에서 낮은 계층 순서애플리케이..

CS/Network 2024.05.14

[디자인 패턴] 팩토리 패턴

팩토리 패턴(Factory Pattern) 객체의 생성을 추상화하여 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴 장점 상위 클래스와 하위 클래스가 분리되기 때문에 의존성이 낮으며 상위 클래스에서는 인스턴스 생성 방식에 대해 알 필요가 없기 때문에 더 많은 유연성을 가짐 -> 하위 클래스의 인스턴스 생성 방식을 바꿔도 상위 클래스는 코드를 수정할 필요가 없음(알 필요 없음) 구현 예시 package DesignPattern; //Super Class인 Coffee abstract class Coffee { public abstract int getPrice(); @Override public String toStri..

CS/Design Pattern 2022.08.11

[디자인 패턴] 싱글톤 패턴

디자인 패턴 React.js, Spring과 같은 라이브러리나 프레임 워크의 기본이 되며, 프로그램을 설계할 때 발생했던 문제점들을 객체 간의 상호 관계 등을 이용하여 해결할 수 있도록 '규약' 형태로 만들어 놓은 것 싱글톤 패턴 (Singleton Pattern) 객체의 인스턴스가 오직 1개만 생성되는 패턴 보통 데이터베이스 연결 모듈에 많이 사용 왜 싱글톤 패턴을 사용할까? (장점) 1. 인스턴스 생성의 비용(메모리, 속도) 절감 고정된 메모리 영역을 사용하기 때문에 메모리 절감 (하나의 인스턴스를 만들어 놓고 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문) 이미 생성된 인스턴스를 활용하기 때문에 속도 절감 2. 데이터 공유에 용이 하나의 인스턴스를 다른 모듈들이 공유하며 사용함 ex) 웹에 ..

CS/Design Pattern 2022.08.11

[DS] Recursion(재귀)

Recursion(재귀) 자기 자신을 호출하는 함수 문제를 더 작은 문제로 나누어 코드를 간결하게 만들어줌 Breaking Condition이 반드시 있어야 함 (중요) Recursion은 호출 될 때 마다 메소드의 복사본이 메모리에 만들어 진다. 그리고 메소드가 종료될 때 메소드의 복사본들은 삭제됨 Sorting, Search 등의 문제들이 Recursion으로 간단하게 해결 될 수 있음 상황에 따라 Iteration이 좋을지 Recursion이 좋을지 잘 판단하여야함 Recursion의 간단한 예시 public class countDown { public static void main(String[] args) { countDown(3); //출력 결과 : 3 2 1 } public static vo..

CS/Data Structure 2022.07.13

[DS] Stack

Stack 한 쪽에서만 자료를 넣고 빼는 LIFO(Last in First Out) 자료구조 Array 와 달리 i번째 자료에 O(1)(상수시간)으로 접근 할 수 없음 하지만 데이터 추가와 삭제는 O(1)(상수시간)으로 수행 할 수 있음 Array 처럼 원소들을 하나씩 shift해줄 필요없음 스택을 활용하는 것이 좋은 구현인 경우 재귀(Recursion) 알고리즘 웹 브라우저의 방문 기록 (뒤로가기) 실행 취소(undo) 역순 문자열 후위 표기법(연산자가 문자뒤에 오는 표기법) 계산 수식의 괄호 검사 Stack의 Operation (ADT) public interface ADT_Stack { public boolean push (T newEntry); //새로운 요소 넣음 public T pop (); ..

CS/Data Structure 2022.07.08

[DS] Time Complexity (시간 복잡도)

Time Complexity (시간 복잡도) Time Complexity(시간 복잡도)란 알고리즘의 효율성을 판단하기 위한 지표로서, 프로그램이 수행되는데 걸리는 절대적인 시간이 아닌 알고리즘이 수행되는데 사용되는 연산들이 몇 번 이루어지는지 나타낸 상대적 지표이 cf) 알고리즘을 평가하는 지표는 시간 효율성을 나타내는 시간 복잡도와 메모리 효율성을 나타내는 공간 복잡도가 있다. 시간 복잡도 자체가 자료구조는 아니지만 제가 공부한 자료구조 책에서 시간 복잡도를 다루고 있었습니다. 자료구조를 선택할 때 시간 복잡도가 중요한 고려사항이 되기때문에 책에서 다룬 것 같습니다. Big-O Notation 시간복잡도와 공간복잡도를 표현하는 표기법 중 가장 많이 사용되는 표기법 cf) 시간복잡도를 표현하는 표기법에는..

CS/Data Structure 2022.07.07

[DS] Array List, Linked List

ArrayList 가장 기본적인 자료구조이며, 논리적 저장 순서와 물리적 저장 순서가 동일한 자료구조 따라서 index로 해당 element에 빠르게 접근이 가능 장점 찾고자하는 대상의 index를 알고있으면 O(1)의 매우 빠른 속도로 접근이 가능 단점 List의 Capacity를 늘릴경우 더 큰 Capacity의 새로운 List에 기존 element들을 모두 복사해야 함 java에서는 가변길이의 ArrayList가 이미 구현이 되어있지만, ArrayList를 직접 구현을 할 경우 가변 길이는 상황에 맞는 적절한 방법을 사용하여야함 ex) Default capacity와 number of entries가 같아 질 경우 Default capacity의 2배의 길이로 capacity를 늘림 삭제 또는 삽입..

CS/Data Structure 2022.07.06

[DS] 추상 자료형(ADT, Abstract Data Type)

ADT(추상 자료형)이란? 구현 방법은 명시하지 않고 기능(Operation)만을 나열한 자료구조의 형태 자판기의 경우 외부에서 보았을 때 자판기 안에서 어떠한 원리로 기능이 작동하는지는 알 수 없지만 버튼을 누름으로써 음료수를 뽑아 먹을 수 있음 이 때 버튼을 누르는 것이 Operation을 통해 외부에서 ADT내의 자료에 접근하는 것이라고 할 수 있음 따라서 ADT의 Operation을 알면 실제 구현이 어떻게 되어있는지 몰라도 사용이 가능함 -> What (o), How(x) -> Java의 Interface도 ADT라고 할 수 있음 Bag를 ADT로 표현한 예시 public interface BagInterface { public int getCurrentSize (); //가방 안에 들어있는 품..

CS/Data Structure 2022.07.05