
오버로딩(Overloading)정의같은 이름의 메서드가 다른 매개변수 목록(개수, 타입, 순서)으로 정의되는 것.특징 컴파일 시점에 호출할 메서드가 결정됨.반환값은 오버로딩과 관계없음.같은 클래스 내에서 정의. 오버라이딩(Overriding)정의부모 클래스에서 정의한 메서드를 자식 클래스에서 재정의하는 것.특징 메서드 시그니처(이름, 매개변수, 반환 타입)가 부모 클래스와 동일해야 함.런타임 시점에 호출할 메서드가 결정됨(다형성 구현).접근 제어자는 부모 클래스의 메서드보다 넓거나 동일해야 함.@Override 애너테이션을 통해 오버라이딩 여부를 명시. 차이선언부(Signature), 동작 시점(컴파일 vs 런타임)오버로딩메서드 이름은 같지만 매개변수 목록이 다름.컴파일 시점에 호출될 메서드가 결정됨...

동기란? - Synchronous동기는 작업이 순차적으로 실행되는 방식을 의미한다. 현재 작업이 끝나야 다음 작업을 실행할 수 있다. 작업의 순차 실행을 보장한다.호출자가 결과를 즉시 확인할 수 있다. 비동기란? - Asynchronous비동기는 작업이 독립적으로 실행되는 방식을 의미한다. 작업 요청 후 결과를 기다리지 않고, 다른 작업을 동시에 처리할 수 있다. 비동기와 동기 비교특징동기(Synchronous)비동기(Asynchronous)작업 처리 방식순차적으로 작업 처리독립적으로 작업 처리작업 대기 여부호출자가 작업 완료까지 대기호출자가 대기하지 않고 다른 작업 수행사용 사례트랜잭션 처리, 데이터베이스 작업네트워크 요청, 파일 I/O 처리장점간단하고 구현이 쉬움작업 병렬 처리로 성능 향상단점작업 ..

DB 설계를 하다 보면 나도 모르게 다대다 관계를 생각해서 ERD를 그리는 경우가 있다.이때마다 다대다 관계는 하면 안 되지!라는 생각을 갖고 다시 중간에 entity를 추가하여 일대다, 다대일 관계로 이루어지도록 수정하는 일이 빈번했다.오늘은 왜 '다대다 관계'를 지양해야 하는지에 대해서 짚고 넘어가 보겠다.다대다 관계란?다대다 관계는 두 엔티티가 서로 여러 개의 데이터를 참조할 수 있는 관계이다. 예를 들어, 학생(Student)과 수업(Course)의 관계를 생각해 보자.한 학생은 여러 수업에 참여할 수 있습니다.한 수업에는 여러 학생이 참여할 수 있습니다.@Entitypublic class Student { @Id @GeneratedValue private Long id; @..

캡슐화의 개념캡슐화는 데이터(필드)와 데이터를 조작하는 메서드(동작)를 하나의 단위로 묶는 것을 의미한다.-> 즉, 객체의 내부 데이터를 보호하고, 데이터에 접근할 수 있는 인터페이스(메서드)를 제공한다.실제로 구현되는 부분을 외부에 드러나지 않도록 캡슐로 감싸 이용 방법만을 알려주는 것을 말한다.데이터를 절대로 외부에서 직접 접근을 하면 안되고 오로지 함수를 통해서만 접근해야하는데 이를 가능하게 해주는 것이 바로 캡슐화이다.정보 은닉Information Hiding) : 내부의 데이터나 함수를 외부에서 참조하지 못하도록 차단하는 개념 캡슐화가 객체지향 프로그래밍에서 중요한 이유데이터 보호: 외부 코드가 객체의 내부 데이터에 직접 접근하지 못하게 하여, 데이터의 무결성을 유지한다.인터페이스 제공: 데이터..

예외 처리 (Exception Handling)예외(Exception)란 무엇인가?프로그램 실행 중에 발생할 수 있는 비정상적인 상황을 의미한다. 예를 들어, 배열의 인덱스를 초과해서 접근하려는 시도, 파일이 없을 때 파일을 읽으려는 시도 등이 예외 상황에 해당한다.Checked Exception: 컴파일 시점에 발생 가능성을 컴파일러가 확인해야 하는 예외. 예: IOException, SQLException.Unchecked Exception: 런타임에서만 확인되는 예외. 예: NullPointerException, ArrayIndexOutOfBoundsException.예외처리가 java에서 중요한 이유는 아래와 같다. 프로그램 안정성예외를 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있다.사용..

컬렉션의 구조 및 계층도 Iterable │ Collection │ ┌───────────────┬─────────────────────┐ │ │ │ List Set Queue │ │ │ ┌─────┴─────┐ ┌────┴────┐ ┌──────┴───────┐ │ │ │ │ │..

1.1 제네릭의 개념 및 필요성제네릭이란 무엇인가?제네릭(Generic)은 클래스나 메서드를 다양한 타입으로 재사용할 수 있도록 도와주는 기능이다.쉽게 말해, 데이터를 담을 때 "어떤 타입이 들어올지 미리 지정하지 않고, 사용자가 필요에 따라 지정하게 하는" 방식을 말한다.Java 5부터 Generic이라는 타입이 새로 추가되었다. 제네릭은 왜 필요할까?// 타입을 지정하지 않는 경우List list = new ArrayList();list.add("Hello");list.add(123); // 다양한 타입이 들어갈 수 있음.// 제네릭을 사용하는 경우List list = new ArrayList();list.add("Hello");// list.add(123);// 타입 불일치로 컴파일 오류가 발생한다..

토큰 기반의 인증 방식토큰 기반 인증(Token-based Authentication)은 사용자 인증 후, 사용자에게 특정한 토큰을 발급하여 이후 요청 시 이 토큰을 통해 인증을 확인하는 방식대표적으로 JWT(JSON Web Token) 같은 형태의 토큰이 많이 사용된다. 사용자가 로그인에 성공하면 서버는 사용자의 권한과 정보를 포함한 JWT를 발급하여 클라이언트에 전달한다.클라이언트는 서버와 통신할 때마다 이 토큰을 포함하여 서버에 요청을 보내며, 서버는 토큰을 확인하고 요청을 처리한다.세션 기반 인증과의 차이세션 기반 인증에서는 서버에 사용자마다 세션 정보를 저장하고, 클라이언트는 세션 ID를 통해 인증을 유지한다. 클라이언트가 많아질수록 서버에 큰 부담을 줄 수 있다.토큰 기반 인증은 서버에서 인증..