Bootcamp
데이터베이스 스키마 설계 예시
create table user ( id int not null primary key auto_increment, name varchar(255) not null, email varchar(255) not null, ); create table follow ( id int not null primary key auto_increment, followerId int not null, followingId int not null, foreign key (followerId) references user (id), foreign key (followingId) references user (id) ); create table content ( id int not null primary key auto_incr..
웹 애플리케이션, 쿠키, 세션
📄 웹 애플리케이션 요청 흐름 브라우저에 https://google.com을 입력한다. 이미 방문한 기록이 캐시 메모리에 있다면 IP 주소를 캐시 메모리에서 가져온다. 캐시: 브라우저 캐시 → hosts 파일 → DNS Cache (OS, router, ISP) 캐시 메모리에서 찾지 못했다면 DNS 서버에 요청을 보낸다. Root → Top-level(.com) → Second(google.com) → Third(maps.google.com) 한 DNS 서버에서 다른 DNS 서버로 재귀적으로 질의한다. IP 주소를 찾으면 해당 주소에 HTTPS 요청을 보낸다. 웹서버에 요청이 도착한다. 웹서버는 저장소에 요청을 보내 페이지 관련 데이터들을 가져온다. 데이터들을 가져오는 중에 비지니스 로직이 작동한다. 로..
TCP/UDP, Port, URL, Domain
📚 TCP/UDP 📄 TCP/IP 4계층 모델 TCP/IP 4계층 모델 주요 프로토콜 역할 4계층 응용 계층 HTTP, DNS, *FTP 애플리케이션에 맞추어 통신한다. 3계층 전송 계층 TCP, UDP, ... IP와 애플리케이션을 중개한다. 2계층 인터넷 계층 IP, *ICMP, *ARP, *RARP 네트워크 주소를 기반으로 데이터를 전송한다. 1계층 네트워크 접근 계층 Ethernet. wifi, ... 컴퓨터를 물리적으로 네트워크에 연결해서 기기 간에 전송이 가능하게 한다. *FTP: File Transfer Protocol *ICMP: Internet Control Message Protocol *ARP: Adress Resoultion Protocol *RARP: Reserve Adress R..
Java - 람다, 스트림, Optional
📚 람다 (Lambda) 함수(메서드)를 좀 더 간단하고 편리하게 표현하기 위해 고안된 문법 요소 // sum 메서드 람다식 (num1, num2) -> num1 + num2 // 람다식을 객체로 표현 new Object() { // 익명 클래스 int sum(int num1, int num2) { return num1 + num2; } } 람다식은 사실 위와 같이 익명 클래스다. 익명 클래스: 객체의 선언과 생성을 동시에 하여 오직 하나의 객체를 생성하고 단 한 번만 사용되는 일회용 클래스 📘 함수형 인터페이스 public class LamdaExample1 { public static void main(String[] args) { Func func = (num1, num2) -> num1 + num..
Java - 열거형, 애너테이션
📚 열거형 (Enum) enum Seasons { SPRING, SUMMER, FALL, WINTER } enum Frameworks { DJANGO, SPRING, NEST, EXPRESS } 여러 상수들을 보다 편리하게 선언하고 관리할 수 있게 해 준다. 상수명의 중복을 피할 수 있다. 타입에 대한 안정성을 보장한다. 간결하고 가독성이 좋다. switch문에서도 사용 가능하다. 리턴 타입 메서드(매개변수) 설명 String name() 열거 객체가 가지고 있는 문자열을 리턴하며, 리턴되는 문자열은 열거타입을 정의할 때 사용한 상수 이름과 동일하다. int ordinal() 열거 객체의 순번(0부터 시작)을 리턴한다. int compareTo(비교값) 주어진 매개값과 비교해서 순번 차이를 리턴한다. 열..
Java - 컬렉션 프레임워크
📚 컬렉션 프레임워크 (Collection Framework) 📘 Collection 인터페이스 기능 리턴 타입 메서드 설명 객체 추가 boolean add(Object o) / addAll(Collection c) 주어진 객체 및 컬렉션의 객체들을 컬렉션에 추가 객체 검색 boolean contains(Object o) / containsAll(Collection c) 주어진 객체 및 컬렉션이 저장되어 있는지 여부를 리턴 Iterator iterator() 컬렉션의 iterator를 리턴 boolean equals(Object o) 컬렉션이 동일한지 여부를 확인 boolean isEmpty() 컬렉션이 비어있는지 여부를 확인 int size() 저장되어 있는 전체 객체 수를 리턴 객체 삭제 void c..
Java - 제네릭
📚 제네릭 (Generic) 타입을 구체적으로 지정하는 것이 아니라, 추후에 지정할 수 있도록 일반화해두는 것 보편적으로 사용하는 타입 매개변수 타입 설명 Type Element Key Value Number Result 📘 제네릭 클래스 제네릭이 사용된 클래스 class Basket { private T item; public Basket(T item) { this.item = item; } public T getItem() { return item; } public void setItem(T item) { this.item = item; } } class Basket { private T item1; // O static T item2; // X (클래스 변수) } 클래스 변수에는 타입 매개변수 T를..
Java - 다형성, 추상화
📋 회고 상속과 인터페이스가 다형적 표현을 비슷하게 사용할 수 있는 것 같다. 그런데 어떤 상황에서 어떤 걸 써야 되는지 아직 완벽하게 이해하지 못했다. 내 생각에는 다중 상속이 불가능한데 여러 클래스를 상속해야 할 때 인터페이스를 사용하는 것 같다. 좀 더 찾아보고 공부해봐야겠다. 📚 다형성 (Polymorphism) 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것 오버로딩, 오버라이딩, 상속이나 구현을 통한 다형적 표현 📚 추상화 (Abstraction) 기존 클래스들의 공통적인 요소들을 뽑아서 상위 클래스를 만들어 내는 것 📘 인터페이스 인터페이스는 추상 메서드와 상수만을 멤버로 가질 수 있다. public interface InterfaceEx { public static..