[Java] 제네릭(Generic) 문법 정리: 클래스, 메서드, 제한까지
·
🛠️Backend/☕Java
✅ 1. 제네릭이란?public class Box { private T item; public void set(T item) { this.item = item; } public T get() { return item; }}public class Main { Box box = new Box(); box.set("String"); // 제네릭 이기 때문에 타입은 String}클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다.즉, 클래스, 인터페이스, 메소드를 정의할 때 타입 매개변수를 선언하고 자료형의 제한을 둠으로써 타입 안전성을 가진다.제네릭을 사용하면, 자바 프로그램의 재사용성을 높이고 오류를 줄일 수 있게 된다.다양..
[Java] 다형성(polymorphism)
·
🛠️Backend/☕Java
✅ 1. 다형성(1) 다형성이란?다형성(ploymorphism)은 하위 클래스 객체를 생성하고 상위 클래스 타입으로 받는 것을 의미한다.쉽게말해, 객체를 생성할 때 해당 객체의 타입으로 받는 것이 일반적이다.하지만, 자바에서 제공하는 다형성을 활용해 해당 객체 타입이 아닌, 상위클래스 타입으로 받아서 유연하게 이용 할 수 있다.일반적인 방식: Dog dog = new Dog();다형성 적용 방식: Animal dog = new Dog(); - 상위 클래스로 참조 타입을 받을 수 있음. (2) 다형성 쓰는 이유public class Animal { public void sound() { System.out.println("동물소리"); }}public class Cat extends..
[Java] 추상화 - 추상클래스, 추상메서드, 인터페이스
·
🛠️Backend/☕Java
✅ 1. 추상클래스public abstract class Animal { public abstract void run(); // 추상 메서드 public void eat() { // 일반 메서드 System.out.println("This animal eats food."); }}추상 클래스는 class 앞에 abstract 키워드를 붙힌 클래스를 의미한다.abstract 키워드를 명시하면 해당 클래스는 객체 생성이 불가능한 클래스가 되며, 상속으로만 이용이 가능해진다.추상클래스 내부에는 멤버 변수를 가질 수 있다.추상클래스에는 추상메서드, 일반메서드 둘 다 만들 수 있다.구현 클래스가 상속을 받게되면, 추상 메서드는 반드시 구현을 해야하고, 일반 메서드는 상속과 동일..
[Java] Enum 쉽게 이해하기
·
🛠️Backend/☕Java
✅ 1. Enum 이란?서로 관련 있는 상수들을 하나의 타입으로 묶어서 사용할 수 있게 해주는 특별한 클래스이다.쉽게말해, 하나의 클래스에 여러 상수들을 정의하고 해당 클래스를 통해 상수를 이용하게 되는 방식이다.Enum은 Java 5 (JDK 1.5)에 처음 도입된 기능이다.✅ 2. 상수란?상수(Constant)란 한번 정해지면 변경할 수 없는 값을 의미한다.자바에서 상수는 데이터 필드부에 정의를 하며, 보통 static키워드와 final키워드를 함께 사용한 데이터를 상수로 본다.public class Constants { public static final int MAX_USERS = 100;}✅ 3. Enum 사용법대표적인 사용법은 class 키워드 부분에 enum 키워드를 붙히면 enum 클..
[Backend] 성능 최적화란?
·
🛠️Backend/📚백엔드 공부
성능 최적화란?서버에 트래픽이 몰릴 때 빠르고 안정적인 서비스를 제공하기 위해 성능을 개선하는 작업을 의미한다.즉, 클라이언트가 서버에 요청을 보내고 응답을 보내는 과정에서 더 빠르고 안정적인 서비스 제공을 위해서이다.서버는 결국 네트워크를 통해 통신을 하며, 이 과정에서 볼 수 있는 대표적인 최적화는 3가지가 있다.🧱1. 하드웨어 최적화 (Infastructure 측면)스케일 업: CPU, 메모리, 디스크 등 한 대의 서버 사양을 업그레이드. 스케일 아웃: 서버의 수를 늘려 부하를 분산 (수평 확장).Auto Scaling, Load Balancer(HW) 도 여기에 포함.예시: EC2 인스턴스 타입 변경, 서버 개수 증가담당: 인프라 엔지니어, 클라우드 엔지니어🌐 2. 네트워크 최적화 (OSI 계..
스파르타코딩클럽 - 2024년 Spring 백엔드 과정 수료 후기
·
정보
글쓴이는 내일배움캠프 Spring 백엔드 과정을 2024년 4월 중순에 시작하여, 8월말에 학원을 수료함. 1. 진행 과정내가 했던 기수 시간표 기준 4개월간 매일 오전9시 - 오후9시 (12시간 진행) (1) Git-Hub 기초(2) 웹 개발 기초 ( HTML, CSS, JavaScript ) 및 웹 페이지 미니 팀프로젝트 진행, 발표(3) 자바 기초 및 팀 과제 발표(4) 스프링 기초 및 팀 과제 발표(5) 스프링 일반 및 팀 과제 발표 ( Spring Security , JWT )(6) 스프링 심화 및 팀 과제 발표(7) JPA 및 팀 과제 발표 ( 여기까지 3개월 걸림 )(8) 최종프로젝트 및 발표2. 난이도완전 처음 하는 사람 기준으로는 난이도가 다소 높다고 느낌.( 처음하는 사람이라면 최소, ..
[Java] JVM과 자바 실행 원리
·
🛠️Backend/☕Java
(1) 자바의 프로그램 기본적인 동작 과정[1] 소스 코드 작성 -> .java 소스 파일 생성[2] 자바 컴파일러를 통해 .java 소스 파일을 .class(바이트 코드) 파일로 변환[3] JVM을 통해 .class 파일을 기계어로 변환 -> 기계어는 운영체제를 통해 실행[4] 결과적으로 운영체제가 프로그램을 실행함.* 바이트코드 : 자바 컴파일러를 통해 JVM이 읽을 수 있도록 번역을 해놓은 코드를 바이트코드라고 한다. (2) 자바 컴파일러 - 사용자가 직접 작성한 .java 소스코드를 JVM 이 읽을 수 있도록 바이트코드로 번역을 해주는 프로그램이다. - 컴파일 과정에서 구문 분석, 타입 검사, 최적화, 바이트 코드 생성을 해준다. (3) JVM(Java Virtual Machine) - 자바 바이..
[Spring Data JPA] JPA Entity 클래스에 기본 생성자가 필요한 이유
·
🛠️Backend/🌳Spring
JPA 기본 생성자가 필요한 이유@PersistenceContextprivate EntityManager entityManager;public User getUser(Long userId) { User user = entityManager.find(User.class, userId); return user; // JPA가 내부적으로 기본 생성자를 호출하여 객체를 생성하고, 리플렉션을 통해 필드 값을 설정}해당 과정을 살펴 보면 entityManager.find 즉, 조회 과정에서 User.class 타입을 인자로 받고 있다.이 User.class 이 클래스 정보로 내부에 애너테이션이나 필드 생성자 등의 정보를 리플렉션을 통해 얻을 수 있게 된다.그러면 이 정보를 가지고 DB에 데이터를 조회할..
[Spring MVC] 요청과 응답에 대한 동작 원리
·
🛠️Backend/🌳Spring
목차 ● 1. 웹 서버 & 웹 애플리케이션 서버 ● 2. 스프링부트 환경 내장 서버 ● 1. 웹 서버란?1. 웹 서버 & 웹 애플리케이션 서버 웹 서버란?1. HTTP 프로토콜을 기반으로 클라이언트의 요청을 받아주고 정적인 리소스를 제공해주는 역할을 한다.2. 정확히는, 정적 리소스를 WAS에서 받아서 해석해서 클라이언트에게 전달해주는 역할을 한다. 웹 애플리케이션 서버란?1. 웹 서버가 존재해야지만 존재할 수 있는 서버이며, 동적인 컨텐츠를 제공해주기 위해 존재하는 서버이다.2. 동적인 컨텐츠로는 DB조회나 다양한 로직 처리 및 계산 등 처리를 해서 웹 서버로 전달을 해주는 역할을 한다.2. 스프링부트 환경 내장 서버 스프링부트는 웹 서버 & 웹 애플리케이션 서버를 합친 서버를 내..
[Java] Annotation 이란? ( 애노테이션 )
·
🛠️Backend/☕Java
(1) Annotation(애노테이션) 이란?1. Annotation 이란?- 번역기를 통해 변역을 해보면 Annotation은 "주석"이라는 의미를 뜻한다. 2. Java 에서 Annotation이란?- Java에서 Annotation은 메타데이터를 코드에 추가하기 위한 방법으로 쓰인다.- 애너테이션은 클래스, 메서드, 변수, 매개변수 등 다양한 요소에 대한 추가적인 정보를 제공하며, 이러한 정보를 컴파일러나 런타임 환경에서 활용할 수 있도록 하기 위해 사용이 된다. 3. 메타데이터란?- 코드에 부가적인 정보를 제공해주는 데이터를 메타데이터 라고 한다.- 코드에 부가적인 정보를 제공하기 위해선 애너테이션을 붙히게 되는데 애너테이션이 즉, 메타데이터이다.예시를 들면, 도서관의 책이 있고, 해당 책은 데이..