전체 글
-
[Network] URI(URL, URN)와 웹 브라우저 요청 흐름Network 2024. 4. 10. 14:11
URI(Uniform Resource Indentifier) "리소스를 식별"하는 통합된 방법으로, URI는 로케이터(locator), 이름(name) 또는 둘 다 추가로 분류될 수 있다. URL URI의 Locator로 리소스가 있는 "위치"를 지정. ex. https://www.google.com URN URI의 Name으로 리소스의 "이름"을 부여 ex. www.google.com URI와 URL은 거의 같은 의미 URL의 문법 https://www.google.com:443/search?q=hello&hl=ko https - 프로토콜: 어떤 방식으로 자원에 접근할 것인가를 나타내는 약속 규칙(ex. http, https, ftp) www.google.com - 호스트명: 도메인 혹은 IP 주소 4..
-
[Network] 인터넷 네트워크(IP, TCP, UDP, PORT, DNS)Network/HTTP 2024. 4. 10. 13:41
IP 컴퓨터에 "주소"를 부여하는 것이라고 보면 된다. 클라이언트 컴퓨터가 서버 컴퓨터에 요청을 보낼 때 어떤 컴퓨터에 보낼지 지정해야하고, 그리고 서버 컴퓨터도 클라이언트에 요청에 대한 응답을 보내려면 클라이언트 컴퓨터에 대한 주소를 알아야 할 것이다. 그럴 때 사용하는 것이 IP이다. (우리가 택배를 보내는 것과 비슷하다고 보면 된다. ) IP 패킷 IP와 IP가 서로 요청과 응답을 주고 받을 때 패킷이라는 것을 통해 요청과 응답을 주고받는다. 이 패킷에는 요청을 보낸 클라이언트 서버의 ip와 목적지 IP의 서버, 전송 데이터 등의 정보가 들어있다. -> 비유하자면 우체국의 송장과 같은 역할. 이렇게 패킷 단위로 전송하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달. 노드는 하나의 서버 ..
-
[Algorithm] 삽입정렬(Insertion Sort)💻Programming/Algorithm 2024. 3. 28. 18:22
삽입정렬이란? 현재 비교하고자 하는 target과 그 이전의 원소들과 비교하며 자리를 교환(swap)하는 정렬 방법. 선택정렬, 버블정렬과는 다르게 안정 정렬. 삽입정렬의 과정(오름차순 기준) 1. 인덱스 1부터 시작한다. 현재 인덱스를 타겟 인덱스로 하고 변수에 넣는다. 이 변수보다 이전 인덱스가 작으면 이전 인덱스의 값을 그 다음 인덱스에 넣어준다. 2. 만약에 인덱스 2가 타겟이고, 타겟의 값이 인덱스 1보다 작다면 그 다음 인덱스에 넣는다. 또 인덱스 0이 타겟보다 작으면 또 그 다음 인덱스에 넣는다. 그리고 타겟 인덱스의 값을 인덱스 0에 넣어준다. 3. 이를 계속 반복한다. 구현 코드 import java.util.Scanner; public class Main { private int[] s..
-
[SpringBoot] 싱글톤 패턴(singleton pattern) (feat: Spring)💻Programming/SpringBoot 2024. 3. 27. 22:36
싱글톤 패턴이란 단 하나의 유일한 객체를 만들기 위한 코드 패턴이다. 메모리 절약을 위해 인스턴스가 필요할 때 똑같은 인스턴스를 새로 만들지 않고 기존의 인스턴스를 가져와 활용하는 기법을 말한다. 싱글톤 패턴이 적용된 객체가 필요한 경우는 그 객체가 리소스를 많이 차지하는 역할을 하는 무거운 클래스일 때 적합하다. 싱글톤 패턴의 구현 public class SingletonService { private static final SingletonService instance = new SingletonService(); public static SingletonService getInstance() { return instance; } private SingletonService() { } public v..
-
[Algorithm] 버블 정렬(Bubble Sort)💻Programming/Algorithm 2024. 3. 27. 17:37
버블 정렬이란? 선택 정렬과 유사한 알고리즘으로 서로 인접한 두 원소의 대소를 비교하고, 조건에 맞지 않다면 자리를 교환하며 정렬하는 알고리즘이다. 이름의 유래로는 정렬 과정에서 원소의 이동이 거품이 수면으로 올라오는 듯한 모습을 보이기 때문에 지어졌다고 한다. 과정 1. 첫 번째 반복문에서 첫번째 원소와 두 번째 원소를 비교한다. 만약 첫 번째 원소가 더 크면 교환. 두 번째 원소와 세 번째 원소를 비교후 두번째가 크면 교환. 이렇게 해서 n-1번재 원소까지 비교하면 가장 큰 수는 n에 가있게된다. 2. 그럼 n은 가장 큰 수이니까, 다시 n-2원소까지 비교를 반복. 그럼 두 번째로 큰 수가 n-1번에 가게 된다. 이렇게 반복하면 모든 수가 정렬된다. 구현 코드(Java) import java.util..
-
[Algorithm] 선택정렬(Selection Sort)💻Programming/Algorithm 2024. 3. 26. 21:39
선택정렬이란? 정렬되지 않은 데이터들에 대해 가장 작은 데이터를 찾아 가장 앞의 데이터와 교환함으로써 정렬하는 정렬 방법이다. 선택 정렬의 과정 와 같은 원리로 오름차순 정렬이 된다. 1. 현재의 인덱스를 minIndex에 넣어준다. 2. 그 뒤의 인덱스에서 for문을 돌려 만약에 다른 인덱스의 값이 더 작다면 바꿔준다. 이렇게 마지막까지 돌면 minIndex의 인덱스 값은 가장 작은 값을 가진 인덱스일 것이다. 마지막 인덱스는 이미 그 앞의 인덱스를 통해 교체가 되어 가장 큰 수일 것이므로 for문은 n-1번까지만 돌면 된다. 구현 코드 import java.util.Scanner; public class Main { private int[] solution(int n, int[] list) { for..
-
[디자인패턴] 좋은 객체 지향 설계의 5가지 원칙 SOLID(feat: Spring)💻Programming/디자인패턴 2024. 3. 22. 18:45
SOLID 원칙을 알아야 하는 이유 시스템에 새로운 기능이 확장되거나 변경사항이 있는 경우 기존 기능들이 영향을 적게 받는 것이 좋은 설계이기 때문. 이 좋은 설계를 하기 위해 나타난 다섯가지 원칙을 가지고 있는 것이 SOLID원칙이다. 이 원칙을 사용하면 코드를 확장하고, 유지 보수 관리하기가 쉬워지며, 불필요한 복잡성을 제거해 개발의 생산성을 높일 수 있다. 또한, 면접 단골 질문이라고 하니 잘 기억해두면 좋겠다. 1. SRP(Single Responsibility Principle): 단일 책임 원칙 한 클래스는 하나의 책임만 가져야한다. -> 한 클래스가 여러개의 기능을 수행하면 안된다는 것. 만약 한 클래스가 여러개의 기능을 수행하면, 변경이 일어났을 때 수정해야할 코드가 증가. ex. A를 수..