[Java] JDBC 동작 원리와 커넥션 풀 이해하기
·
🛠️Backend/☕Java
✅ 1. JDBC(Java Database Connectivity) 란?자바에서 데이터베이스에 접속하고 SQL을 실행해서 결과를 가져오는 기능을 제공하는 Java API 이다.쉽게말해, 자바 애플리케이션과 데이터베이스 사이의 연결 통로 역할을 해준다고 보면 된다.JDBC 는 Java API 로써, JRE에 포함이 되어있으며, 해당 인터페이스 집합들을 데이터베이스(MySQL, Oracle, PostgreSQL 등) 이 해당 자바 인터페이스를 구현해 본인의 데이터베이스에 접근 할 수 있도록 클래스를 만들어 주게 된다. 해당 클래스를 라이브러리로 받아서 이용을 하게 되면, 해당 클래스와 맞는 데이터베이스와 연결을 할 수 있게 된다.참고로 해당 API 는 java.sql 또는 javax.sql 등의 패키지로 제..
[Spring Framework] Servlet API, HttpServlet, DispatcherServlet, Tomcat 알아보기
·
🛠️Backend/🌳Spring
✅ 1. Servlet API 란?package jakarta.servlet;import java.io.IOException;public interface Servlet { void init(ServletConfig var1) throws ServletException; // Servlet 생성 ServletConfig getServletConfig(); // 요청을 받아 처리하는 핵심 메서드 void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; String getServletInfo(); void destroy(); // Servlet 삭제}서블릿은 자바 기..
[Spring Framework] HttpServletRequest - HTTP 메시지 값 담기는 과정 (요청)
·
🛠️Backend/🌳Spring
SpringBoot 내장 서버는 Tomcat이며, 해당 Tomcat은 WAS로 불리며, 요청과 응답을 주고 받는 미들웨어로 불린다.Tomcat은 HttpServletRequest 인터페이스를 구현한 클래스를 제공해준다.즉, 요청이 들어오면 HttpServletRequest 인터페이스를 구현한 클래스에 요청의 대한 값이 담기게 된다.✅ 1. HttpServletRequest [ interface ]package jakarta.servlet.http;public interface HttpServletRequest extends ServletRequest { // ... 여러 HTTP 관련 메서드들이 추상메서드로 정의되어 있음.}자바의 표준 API 인 Servlet API 의 일부이다. 즉, 자바 표준 ..
[Java] 멀티 스레드 프로그래밍
·
🛠️Backend/☕Java
✅ 1. 프로세스와 스레드 개념(1) 프로세스프로그램의 통상적 실행 단위를 의미하며, 쉽게말해 프로그램 하나를 실행하면 실행 단위를 프로세스라고 부른다.즉, Java도 프로그램이기 때문에 실행을 하면 하나의 프로세스로 만들어져서 실행을 하게 된다.프로세스로 구분하는 이유는, 여러 프로그램을 함께 돌리기 위해 프로세스 단위로 구분을 하는 것이다.프로그램이 실행이 되면 프로세서가 되는데, CPU는 여러 프로세스를 돌림 이걸 멀티테스킹이라고 함.(2) 스레드프로세스 내에 존재하는 소규모 실행 흐름을 의미한다.하나의 프로세스 내에 여러 스레드가 동시에 실행이 될 수 있음.하나의 프로세서안에는 여러 스레드가 만들어질 수 있으며, 프로세서가 할당받은 자원을 스레드가 공유받음.자바는 하나의 프로세스가 자원을 할당받아..
[Java] 자바 스트림(Stream) 개념 + 예제 총정리 📚
·
🛠️Backend/☕Java
✅ 1. 외부반복과 내부반복List names = Arrays.asList("Alice", "Bob", "Charlie");// 외부 반복: for-each문for (String name : names) { System.out.println(name);}// 내부 반복: Stream + forEachnames.stream().forEach(name -> System.out.println(name)); (1) 외부반복개발자가 루프 구조를 직접 작성해서 원소를 하나씩 처리하는 방식을 의미한다.쉽게 말해, for문 while문 Iterator 같은 반복문을 직접 사용해서 어떻게 반복할지 직접 명시해서 제어하는 경우이다.(2) 내부반복반복의 제어를 라이브러리나 프레임워크에게 맡기고, 개발자는 무엇을 할지만..
[Java] 컬렉션 프레임워크 정리: List, Set, Map 인터페이스와 대표 구현체 총정리
·
🛠️Backend/☕Java
✅ 1. 컬렉션(Collection)이란?Collection 자체는 영어로 "수집된 것, 모음"을 의미하며, 프로그래밍 전반에서 데이터의 모음을 표현할 때 자주 쓰인다.프로그래밍에선 여러 원소를 하나의 그룹으로 묶어 관리하기 위한 자료구조를 의미한다.즉, 데이터를 효율적으로 저장하고, 관리(검색, 정렬, 삭제 등) 할 수 있는 자료구조들의 집합을 의미한다.자바에선 JCF(Java Collections Framework)라고 부르며, 인터페이스와 클래스로 해당 자료구조를 제공한다.자바 컬렉션의 주요 인터페이스로는 Collection, List, Set, Queue, Map 이 있다✅ 2. JCF(Java Collections Framework) 구조 (1) JCF(Java Collections Framew..
[Java] java.nio 사용법 | Path, Files, FileChannel 예제 모음
·
🛠️Backend/☕Java
✅ 1. java.nio 패키지NIO(New Input Output)는 기존 java.io 패키지를 개선한 새로운 입출력 패키지이다.JDK 7부터는 파일 I/O를 개선한 NIO2도 등장을 함( 이때 java.nio.file 패키지가 등장함 )java.nio.file, java.nio.channels, java.nio.charset 등이 있음File 클래스보다 다양한 기능을 제공하는 Path 클래스를 제공함. java.nio.file 안에 Path 클래스가 있음.Files 클래스를 제공하며, 파일/디렉터리의 조작, 파일의 읽기/쓰기 기능을 제공함파일 입출력 모두 가능한 FileChannel 클래스가 있음 ( 버퍼링 기능, 멀티스레드에 안전함 )입출력이 기존에는 구분이 되는 경향이 있었지만, FileChan..
[Java] java.io 패키지 입출력 스트림 쉽게 이해하기
·
🛠️Backend/☕Java
✅ 1. 스트림(Stream)이란?데이터가 한쪽에서 다른 쪽으로 연속적으로 흐르는 통로를 의미한며, 데이터의 흐름을 추상화한 객체가 Stream임.쉽게말해, Stream은 수도관 데이터는 그 안에서 흐르는 물과 같은 느낌이고, 개발자가 수도꼭지를 틀거나 잠그는 역할임.데이터를 바이트 단위로 입출력하기 위한 통로라고 생각하면 된다.자바에서 모든 IO 기반 통신은 스트림 기반으로 만들어져 있음. ( 네트워크, HTTP, 파일, 콘솔 등 )✅ 2. 스트림(Stream) 종류크게 기본 입력 스트림, 출력 스트림이 있으며 각각 기본 스트림과 보조 스트림을 제공해준다.기본, 보조 스트림 내부에서는 바이트 스트림, 문자 스트림으로 또 나누어지게 된다.(1) 기본 스트림Java I/O에서 입출력을 처리하는 가장 기본적..
[Java] java.lang 패키지 정리: Object, String, Math 클래스 총정리
·
🛠️Backend/☕Java
✅ 1. java.lang 패키지란?import java.lang.*;Java에서 가장 기본적이고 자주 사용되는 클래스들을 모아놓은 패지키를 의미한다.java.lang 패키지는 모든 클래스의 자동으로 import가 되기 때문에 별도로 import를 이용해 사용을 하지 않아도 된다.위의 코드처럼 컴파일 시 모든 코드에 해당 import 문이 상단에 붙게 된다.java.lang 패키지 내부에는 String, Object, Thread, System 등 자바에서 가장 기본이 되는 클래스들이 들어가 있음.✅ 2. Object 클래스// 컴파일 전public class MyClass {}// 컴파일 후 -> .classpublic class MyClass extends Object {}자동으로 모든 클래스의 조상..
[Java] 자바 함수형 인터페이스와 람다식(Lambda Expression) 쉽게 배우기
·
🛠️Backend/☕Java
✅ 1. 람다식이란?// 함수형 인터페이스@FunctionalInterfaceinterface Printer { void print(String message);}// Mainpublic class Main { public static void main(String[] args) { Printer printer = (message) -> System.out.println("출력:" + message); // 익명함수정의 printer.print("print, message") // 정의 된 함수 호출 }}함수형 인터페이스의 추상 메서드를 간결하게 표현하는 문법을 의미한다.람다식은 오직 추상 메서드가 하나인 인터페이스 에서만 사용이 가능하며, 이를 함수형 인터페이스..