1.TCP 기본원리1. 서버 측 설정1.1 소켓 생성 (socket())서버는 먼저 소켓을 생성하여 통신을 위한 엔드포인트를 만든다. 이 소켓은 네트워크에서 데이터를 주고받는 데 사용됩됨.1.2 바인딩 (bind())서버는 소켓을 특정 IP 주소와 포트 번호에 바인딩한다. 이 단계는 서버가 클라이언트의 연결 요청을 받을 수 있도록 준비하는 과정이다.1.3 연결 대기 (listen())서버는 소켓을 리스닝 상태로 설정하여 클라이언트의 연결 요청을 기다립니다. 이 단계에서는 서버가 특정 포트에서 들어오는 연결을 대기하게 된다.1.4 연결 수락 (accept())서버는 클라이언트의 연결 요청이 들어오면 이를 수락한다. accept() 함수는 연결 요청이 올 때까지 블로킹되며, 요청이 오면 새로운 소켓을 생성하..
자바 코딩 테스트에서 자주 사용되는 자료구조와 자료형에 대해 정리했습니다. 각 자료구조와 자료형별로 기본적인 사용법과 메소드들1. 자료구조1.1 스택 (Stack)스택은 LIFO(Last In First Out) 구조로, 마지막에 삽입된 데이터가 가장 먼저 삭제됨.선언:Stack stack = new Stack();메소드:push(): top에 삽입stack.push(1);pop(): top을 삭제 & 확인int top = stack.pop();peek(): top을 확인int top = stack.peek();1.2 큐 (Queue)큐는 FIFO(First In First Out) 구조로, 처음 삽입된 데이터가 가장 먼저 삭제됨.Queue queue = new LinkedList();add(): rea..
똑같은 일을 세 가지 형태로 다룬 예시들을 보며 완벽 이해하자!함수형 인터페이스 정의@FunctionalInterfaceinterface MathOperation { int operate(int a, int b);}일반 클래스를 사용한 구현// 덧셈 연산을 위한 클래스class AdditionOperation implements MathOperation { @Override public int operate(int a, int b) { return a + b; }}// 뺄셈 연산을 위한 클래스class SubtractionOperation implements MathOperation { @Override public int operate(int a, int b..
람다 표현식이란?람다 표현식은 익명 함수(anonymous function)를 작성하는 간결한 방법이다. 람다 표현식을 사용하면 코드가 더욱 간결해진다.람다 표현식의 기본 문법(매개변수 목록) -> { 함수 본문 }람다 표현식의 사용법 예제 1) Runnable 인터페이스 구현Runnable r = new Runnable() { @Override public void run() { System.out.println("Hello, world!"); }}; Runnable r = () -> System.out.println("Hello, world!"); 예제 2: Comparator 인터페이스 구현Comparator comparator = new Comparator() { ..
익명 클래스란?익명 클래스(Anonymous Class)는 이름이 없는 클래스로, 주로 한 번만 사용되는 특정 기능을 구현할 때 유용하다. 익명 클래스는 인터페이스를 구현하거나 추상 클래스를 확장하여 정의되며, 클래스 선언과 동시에 인스턴스를 생성한다. 익명 클래스의 특징이름이 없음: 클래스 이름을 지정하지 않고 정의할 수 있다.단일 사용: 보통 한 번만 사용되며, 인스턴스를 즉시 생성.로컬 변수 접근: 자신이 정의된 메서드의 로컬 변수에 접근할 수 있지만, 해당 변수는 final이거나 실질적으로 final이어야 함익명 클래스 예제 1익명 클래스는 인터페이스나 추상 클래스를 구현할 때 사용된다. 예를 들어, Runnable 인터페이스를 구현하여 스레드를 생성하는 경우를 생각해보자. Runnable r =..
Java는 객체 지향 프로그래밍(OOP) 언어로, OOP의 4가지 주요 요소인 추상화, 캡슐화, 다형성, 상속성을 중심으로 설계되었다. 이 글에서는 그 중 다형성(Polymorphism)에 대해 알아보자. 다형성(Polymorphism)이란?다형성이란 하나의 이름을 가진 변수, 함수, 클래스가 다양한 의미로 해석 될 수 있도록 구현하는 것을 말한다. 다형성은 코드의 유연성과 재사용성을 높여주며, 프로그램의 유지보수를 쉽게 만든다. 다형성은 주로 메소드 오버라이딩(Method Overriding)과 메소드 오버로딩(Method Overloading), 상속의 계층관계 활용 등을 통해 구현된다. 다형성 실현 방법 - 메소드 오버로딩과 오버라이딩메서드 오버로딩을 이용해 동일한 이름의 메서드를 여러 개 정의하여..
Java는 객체 지향 프로그래밍(OOP) 언어로, OOP의 4가지 주요 요소인 추상화, 캡슐화, 다형성, 상속성을 중심으로 설계되었다. 이 글에서는 그 중 캡슐화(Encapsulation)**에 대해 자세히 알아보자. 캡슐화(Encapsulation)란?객체의 상태(데이터)를 보호하고 외부에서 직접 접근하지 못하도록 제어하는 방법이다. 이를 통해 데이터의 무결성을 유지하고, 객체의 내부 구현을 숨겨 외부와의 인터페이스를 명확히 한다. 캡슐화는 주로 접근 제어자를 사용하여 구현된다. 접근 제어자접근 제어자는 클래스, 메소드, 변수 등의 접근 범위를 제한하는 키워드다. 자세한 내용을 아래 글에 정리되어있다.https://for-habit.tistory.com/18 Java의 접근 제어자Java에서 접근 제어..
Java는 객체 지향 프로그래밍 언어로, 다양한 키워드를 통해 코드를 구조화하고 관리한다. 이 글에서는 그동안 헷갈렸던 this, this(), static, super, super() 키워드에 대해 예시를 통해 정리해보겠습니다. 1. this 키워드this 키워드는 자기 자신의 객체를 참조하는 변수다. 주로 클래스 내에서 인스턴스 변수와 메서드를 호출할 때 사용된다. this 키워드는 현재 객체를 가리키며, 동일한 클래스 내의 다른 메서드를 호출하거나 인스턴스 변수를 사용할 때 유용하다.public class Example { private int value; public Example(int value) { this.value = value; // 인스턴스 변수와 파라미터를 ..
