Backend/JAVA 21

[JAVA] 데이터 타입 Primitive Type vs Wrapped Type

📌 1. 자바의 데이터 타입 분류Wrapped Type을 알기 전에 Reference Type에 대해 먼저 알아보자.자바에서 데이터 타입은 크게 두 가지로 나뉜다! 1️⃣ 기본형(Primitive Type) → 값 자체를 저장2️⃣ 참조형(Reference Type) → 객체를 가리키는 참조값을 저장 ✅ 1. 기본형 (Primitive Type)boolean, char, byte, short, int, long, float, double객체가 아니며, 메모리에서 직접 값을 저장연산 속도가 빠르고 메모리 사용이 효율적✅ 2. 참조형 (Reference Type)배열(int[]), 클래스(String, Integer, Double 등), 인터페이스, 열거형(Enum)객체의 주소(참조값)를 저장메서드를 사용..

Backend/JAVA 2025.02.26

static 키워드

📌 1. static 키워드의 의미static은 "정적인"이라는 의미로,  static을 붙이면 객체(instance)와 관계없이 클래스(class) 단위로 관리된다는 뜻이다! 즉, 클래스가 메모리에 로드될 때 한 번만 생성되며, 모든 객체가 공유한다. ✅ 2. static 키워드의 사용1️⃣ static 변수 (클래스 변수)모든 객체가 공유하는 변수! (인스턴스와 관계 없음)클래스명.변수명으로 접근 가능객체를 생성하지 않아도 사용 가능📖 예제class Counter { static int count = 0; // 모든 객체가 공유하는 변수 Counter() { count++; // 생성될 때마다 count 증가 }}public class Main { public s..

Backend/JAVA 2025.02.26

JNDI란?

🔍 JNDI란? (Java Naming and Directory Interface) Java EE에서 사용되는 네이밍 서비스로, 리소스 (DataSource, JMS 등)를 애플리케이션에서 쉽게 찾고 사용할 수 있도록 도와줌.✅ 1. 기본 개념DataSource데이터베이스 연결을 관리하는 객체로, 직접 DriverManager.getConnection()을 사용하는 대신 JNDI를 통해 제공됨.Connection pool을 어플리케이션단에서 어떻게 관리할지를 구현하는 인터페이스  ⭐DriverManager.getConnection():실제 자바 프로그램과 데이터베이스를 네트워크상에서 연결해주는 메소드이다. Connection: 네트워크 상의 연결 자체를 의미 Connection Pool (커넥션 풀):..

Backend/JAVA 2025.02.26

자바(Spring) 기본 예외 처리

📌1.  try-catch 문과 throws Exception 사용법기본적인 예외 처리는 다음 두 가지 방법으로 구현할 수 있다.✅ 1-1. try-catch 문try-catch 문은 코드 실행 중 발생하는 예외를 감지하고 처리하는 가장 일반적인 방식이다.로직을 중단하지 않고 즉각적인 예외 처리.Spring MVC에서 주로 Controller 📖 try-catch 예시try { int result = 10 / 0; // 예외 발생 (ArithmeticException)} catch (ArithmeticException e) { System.out.println("예외 발생: " + e.getMessage()); // 예외 메시지 출력 e.printStackTrace(); // 스택 ..

Backend/JAVA 2025.02.23

[Java] 비동기 작업 처리 (ExecutorService VS CompletableFuture)

📌 Java에서 비동기 작업 처리Java에서 비동기 작업을 처리하는 방법은 다양하지만, ExecutorService와 CompletableFuture가 가장 일반적이고 널리 사용된다.😆 ✅ 1. Thread 직접 사용Thread 클래스를 직접 생성하여 작업을 실행하는 방법. 📖 예제Thread thread = new Thread(() -> { System.out.println("비동기 작업 실행");});thread.start(); ✔ 장점간단한 작업에 적합. ❌ 단점스레드 풀 관리가 불가능하고, 직접 관리해야 해서 복잡해짐.성능 및 자원 관리 측면에서 비효율적. ✅ 2. ExecutorService스레드 풀을 관리하며 효율적으로 비동기 작업을 처리.Runnable 또는 Callable을 활용..

Backend/JAVA 2025.02.23

HttpURLConnection

HttpURLConnection은 자바에서 HTTP 프로토콜을 사용하여 서버와 통신할 때 사용되는 클래스로  Java의 표준 라이브러리인 java.net 패키지에 포함되어 있습니다.URL을 통해 서버와 연결하고 데이터를 송수신하는 데 사용됩니다. 주요 기능서버와의 연결 설정: URL을 사용하여 서버에 연결하고, HTTP 요청 방법(GET, POST 등) 및 다양한 속성을 설정할 수 있습니다.데이터 송수신: 서버와의 연결을 통해 데이터를 송수신할 수 있습니다. 응답 처리: 서버로부터 받은 응답 데이터를 처리하고 응답 코드, 응답 헤더, 응답 본문 등을 확인할 수 있습니다.연결 관리: 연결을 열고 닫는 등의 연결 관리 작업을 수행할 수 있습니다. 사용 예제아래는 간단한 HttpURLConnection을 사용..

Backend/JAVA 2024.06.07

블록킹큐(Blocking Queue)

Queue의 개념Queue는 컬렉션 프레임워크의 일부로, 데이터를 선입선출(FIFO, First-In-First-Out) 방식으로 저장하고 관리하는 자료구조입니다. 큐는 주로 데이터의 순서를 유지하면서 처리해야 하는 상황에서 사용됩니다.  BlockingQueue의 개념Queue를 상속 받아, 큐의 기본작업에 블로킹 연이 추가된 인터페이스입니다.동기화된 방식으로 작동하여 여러 스레드가 안전하게 접근할 수 있습니다. BlockingQueue는 큐가 비어 있을 때 요소를 가져오려고 하면 대기하고, 큐가 가득 차 있을 때 요소를 추가하려고 하면 대기합니다. (put, take 함수에서 블락됐을 때 다음 코드가 실행되지 않고 대기하는 걸 볼 수 있다!!)  *블로킹 연산특정 조건이 충족될 때까지 스레드를 일시 ..

Backend/JAVA 2024.06.05

Callable, Runnable, Future

Runnable과 Callable은 둘 다 자바에서 멀티스레딩을 구현할 때 사용되는 인터페이스입니다.두 인터페이스는 스레드가 수행할 작업을 정의하며, ExecutorService와 같은 스레드 풀에서 관리되고 실행될 수 있습니다.RunnableRunnable 인터페이스는 자바에서 멀티스레딩을 구현하기 위한 기본 인터페이스입니다.run 메서드를 하나만 가지고 있으며, 예외 처리와 반환값이 없습니다. (Future.get()을 호출하면 null을 반환)간단한 비동기 작업을 수행할 때 유용합니다. (ex. UI 스레드에서 백그라운드 작업을 수행, 타이머 작업)메서드: void run()public class MyRunnable implements Runnable { @Override public v..

Backend/JAVA 2024.06.05

스레드 풀(Thread Pool), Executor

스레드 풀(Thread Pool)스레드 풀은 일정 수의 스레드를 미리 생성하여 관리하는 기법입니다.작업 큐에  새로운 작업이 들어오면, 스레드 풀에서 사용 가능한 스레드가 해당 작업을 처리하고작업이 완료되면, 해당 스레드는 다음 작업을 위해 다시 풀에 반환됩니다. 사용 이유자원 관리: 스레드 생성과 소멸의 오버헤드를 줄이고, 자원을 효율적으로 관리할 수 있습니다.제한된 스레드 수: 시스템에서 생성할 수 있는 스레드 수를 제한함으로써 자원 고갈 및 성능 저하를 방지할 수 있습니다.응답성 및 처리량 향상: 미리 생성된 스레드를 재사용(작업을 대기상태로 유지)함으로써 성능을 향상시킬 수 있고, 작업이 발생하면 대기 중인 쓰레드 중 하나를 선택하여 작업을 할당하므로, 작업 처리를 병렬로 진행할 수 있습니다. E..

Backend/JAVA 2024.06.05

[Java] java.lang 패키지의 System

System 클래스는 자바 프로그램에서 시스템 레벨의 작업을 수행하기 위한 메서드와 필드를 제공하는 클래스입니다. 이 클래스는 java.lang 패키지에 속해 있어서 별도의 임포트 없이 사용할 수 있습니다. System 변수 System 클래스의 인스턴스를 나타내며, 주로 표준 입력, 표준 출력 및 표준 에러 스트림에 대한 참조를 제공하는 역할을 한다. System.in: 표준 입력 스트림을 나타내는 변수. 주로 Scanner 클래스와 같은 입력 도구에서 사용된다. Scanner scanner = new Scanner(System.in); System.out: 표준 출력 스트림을 나타내는 변수. System.out.println()과 같은 출력 메서드에서 사용된다. System.out.println("H..

Backend/JAVA 2023.10.12