Comparable vs Comparator
·
Dev Trivia
TreeSet이나 TreeMap 같은 컬렉션에 저장되는 객체는 저장과 동시에 오름차순으로 정렬이때, 어떤 객체든 정렬될 수 있는 것이 아닌, 객체가 `Comparable` 인터페이스를 구현하고 있어야 가능함Integer, Double, String 타입은 Comparable을 구현하고 있으므로 상관 없음📌 사용자 정의 객체를 저장할 땐 반드시 Comparable을 구현해야 함Comparablecomparable 인터페이스에는 `compareTo()` 메소드가 정의돼 있음∴ 사용자 정의 클래스에서 이 메소드를 재정의하여 비교 결과를 정수 값으로 반환해야 함리턴 타입메소드설명intcompareTo(T o)주어진 객체와 같으면 0,주어진 객체보다 적으면 음수,주어진 객체보다 크면 양수 리턴Comparator..
컬렉션 프레임워크
·
Backend/JAVA
자바는 널리 알려진 자료구조를 바탕으로, 객체들을 효율적으로 추가, 삭제, 검색할 수 있도록 관련된 인터페이스와 클래스들을 `java.util` 패키지에 포함시켜 놓음👉 이를 총칭하여 컬렉션 프레임워크라고 부름List와 Set은 객체를 추가, 삭제, 검색하는 방법에 있어서 공통점이 있기에 공통된 메소드만 따로 모아 Collection 인터페이스로 정의 & 상속Map은 키와 값을 하나의 쌍으로 묶어서 관리하는 구조로 List와 Set 과는 사용방법이 다름❓ 인터페이스로 구현한 이유처음에는 공유 코드가 없어서 인터페이스로 설계 했으나, 시간이 흐르며 공통 기능이 필요해졌고 이를 해결하기 위해 `default` 메서드가 도입 됨인터페이스 분류특징구현 클래스CollectionList순서를 유지하고 저장중복 저..
그래프
·
PS/알고리즘
그래프(Graph)는 객체 간의 연결 관계를 표현하는 자료구조노드(Node) 또는 정점(Vertex)과 이를 연결하는 간선(Edge)으로 구성됨.그래프의 활용그래프는 연결 관계를 표현하는 자료구조로, 현실 세계의 다양한 개체와 관계를 모델링할 수 있음SNS 분석사용자 간의 팔로우 관계교통망 & 지도 데이터도시, 도로정거장, 정거장 연결 선컴퓨터 네트워크라우터와 그 연결 관계종류무방향 그래프 (Undirected Graph)간선에 방향성이 없는 그래프, 두 노드는 `양방향`으로 연결됨A → B로 갈 수 있고, B → A로 갈 수 있음 = 서로 연결된 상태방향 그래프 (Directed Graph)간선에 방향성이 있는 그래프, A → B로 향하면, A에서 B로만 이동 가능들어오는 간선과 나가는 간선으로 구분 ..
재귀
·
PS/알고리즘
재귀는 큰 문제를 해결하기 위해 동일한 유형의 더 작은 문제로 나누는 방식자기 자신을 호출하여 반복적으로 작은 문제를 해결해 나가며, 궁극적으로 원래 문제를 해결함📌 완전 탐색, DP, 그래프, 트리 순회와 같은 알고리즘 문제를 푸는 데 중요! 구성 요소기저 조건 (Base Case)더 이상 문제를 쪼갤 수 없거나, 답이 명확해지는 종료 조건기저 조건이 없다면, 무한 호출되며 `Recursion Error` 발생재귀 호출 (Recursive Call)문제를 더 작은 문제로 나누고, 이를 해결하기 위해 자기 자신 호출시간 복잡도재귀의 시간복잡도를 구하는 건 어려움. 수학적으로 접근해 엄밀히 구하려면, 실용성이 떨어짐∴ 대략적으로 계산해야 함📌 시간 복잡도 = 재귀 함수 호출 수 X 재귀 함수 당 시간..
HTTP & HTTPS
·
Computer Science/네트워크
TCP/IP 4계층 모델의 애플리케이션 계층의 프로토콜모두 서버/클라이언트간 데이터를 주고 받기 위해 사용됨HTTP (HyperText Transfer Protocol)데이터를 평문 형태로 전송하므로 데이터 탈취 위험성 존재기본적으로 `80번` 포트데이터의 민감 정보 노출가능성 有HTTPS에 비해 구현과 운영 단순HTTPS (HyperText Transfer Protocol Secure)HTTP에 데이터 암호화가 추가된 프로토콜, 데이터를 암호화하여 전송하므로 중간 공격자의 데이터 읽고 쓰기 방지기본적으로 `443번` 포트데이터 가로채기를 방지하므로 보안 수준 높음서버의 신원을 확인하는 SSL/TLS 인증서가 필요하며, 이로 인해 사용자에게 신뢰성 글 제공📌 최근에는 대부분의 웹사이트가 HTTPS를 기..
TCP / IP 4계층 모델, PDU
·
Computer Science/네트워크
TCP / IP 4계층실제 인터넷에서 널리 쓰이는 모델로, OSI 7계층 모델을 4단계로 단순화한 버전 OSI 7계층: 네트워크를 이론적으로 기술하고 이해할 때 주로 활용TCP/IP 4계층 : 구현, 네트워크 프로토콜에 중점을 둔 네트워크 참조 모델계층 간 데이터 송수신 과정컴퓨터를 통해 다른 컴퓨터로 데이터를 요청하면 어떤 일이 일어날까기본 개념캡슐화상위 계층의 `헤더`와 `데이터`를 하위 계층의 데이터 부분에 포함 시키고 해당 계층의 헤더를 삽입하는 과정역캡슐화하위 계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정캡슐화된 데이터를 받게 되면, 링크 계층에서부터 타고 올라오면서 프레임화 된 데이터는 다시 패킷화를 거쳐 세그먼트& 데이터그램화를 거쳐 메시지화 되는 역캡슐화 과정 발생0, ..
OSI 7계층
·
Computer Science/네트워크
OSI 7계층 (Open Systems Interconnection 7 Layers)네트워크 통신이 일어나는 과정을 7단계로 나눈 국제 표준 모델로, ISO(국제 표준화기구)에서 정의각 계층은 네트워크에서 데이터가 어떻게 생성, 전송, 수신 되는지 단계별로 역할을 나눔계층대표 장비/ 프로토콜물리 계층허브, 리피터, 케이블데이터 링크 계층스위치, 브리지, 랜카드네트워크 계층라우터, IP, ICMP전송 계층TCP, UDP세션 계층NetBIOS, SAP표현 계층JPEG, MPEG, ASCII응용 계층HTTP, FTP, SMPTP계층을 나눈 이유 ❓흐름을 한 눈에 알아보기 쉽고, 특정한 곳에 이상이 생기면 다른 단계의 장비 & 소프트웨어를 건들지 않고 이상이 생간 단계만 고칠 수 있기 때문에1) 물리 계층 (P..
추상 클래스 & 봉인 클래스
·
Backend/JAVA
📘 추상사전적 의미의 추상(abstract)은 실체 간에 공통되는 특성을 추출한 것추상 클래스객체를 생성할 수 있는 클래스를 실체 클래스라고 한다면, 이런 클래스들의 공통적인 `필드`나 `메소드`를 추출해서 선언한 클래스를 추상 클래스라고 함예시 새, 곤충, 물고기는 동물이라는 공통적인 특성을 가짐실체 클래스 = 새, 곤충, 물고기추상 클래스 = 동물추상 클래스는 `new 연산자`를 사용하여 객체를 직접 생성할 수 없다.추상 클래스를 사용하는 이유 ❓1. 공통 기능을 묶어서 코드 중복 방지여러 자식 클래스에 공통된 필드나 메서드를 추상 클래스에 정의해서, 코드의 재사용성과 유지보수성을 높일 수 있음.abstract class Animal { String name; void breathe()..