[Java] 프록시 패턴, 정적 프록시, 동적 프록시: Spring 사례 중심 설명
·
🛠️Backend/☕Java
✅ 1. 프록시(Proxy) 란?다른 객체에 대한 접근을 제어하는 객체로 디자인 패턴의 프록시 패턴과 일치하는 개념이다.프록시의 주요 목적은 접근 제어, 로깅/감시, 지연 로딩, 보안 처리, 트랜잭션 처리 등이 있다.✅ 2. 프록시패턴(Proxy Pattern) 이란?interface Subject { void request();}class RealSubject implements Subject { public void request() { System.out.println("실제 작업 수행"); }}class Proxy implements Subject { private RealSubject realSubject; public void request() { ..
[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 의 일부이다. 즉, 자바 표준 ..
[Backend] 애자일(Agile) 이해하기
·
🛠️Backend/📚백엔드 공부
✅ 1. 애자일이란? 애자일(Agile)은 소프트웨어 개발 방법론 중 하나이다.애자일(Agile)을 한국어로 번역을하면 "기민한", "신속한" 이라는 뜻을 가진다.즉, 변화에 유연하게 대응하며 점진적으로 제품을 개발해 나가는 소프트웨어 개발 방법론을 의미한다.✅ 2. 소프트웨어 개발 방법론이란?소프트웨어를 체계적이고 효율적으로 개발하기 위해 정해놓은 방식 또는 절차를 의미한다.쉽게말해, 소프트웨어를 만들 때 무작정 만들지 않고, 어떤 순서로, 어떻게, 누가, 무엇을 해야 하는지 정해둔 설계도 같은 것이처럼 단계를 정해서 단계에 맞게 소프트웨어를 개발하는데, 해당 단계를 규명하는 것을 의미한다.✅ 3. 애자일 만들어진 이유2001년 미국 유타주의 한 리조트에서 17명의 개발자가 모여 만든 것이 "애자일 ..
유비쿼터스 컴퓨팅개론 10강 - 상황 인식 기술
·
🎓방송통신대학교/🌍유비쿼터스 컴퓨팅
✅ 1. 상황인식 컴퓨팅사용자의 현재 상황이나 환경을 인식하고 그에 맞는 서비스를 자동으로 제공하는 컴퓨팅 기술을 의미한다.예를들면, 스마트폰이 실내에 있으면 자동으로 Wi-Fi에 연결이 되거나 실외에서는 모바일 데이터 자동 사용이 있다.센서나 이런 물리적인 장치로 주변 환경의 정보를 알아내고 해당 정보를 토대로 서비스를 제공해주는 컴퓨팅 기술임.(1) 상황의 정의[ 컴퓨팅 상황 ]네트워크 연결성 / 통신 비용 / 통신 대역폭 / 프린터 / 디스플레이 등 주변에 존재하는 자원[ 사용자 상황 ]사용자 프로필 / 위치 / 현재의 사회적 상황을 포함한 사용자 정보[ 물리적 상황 ]조명 / 소음 수준 / 교통 상황 / 온도 등[ 시간적 상황 ]시간 / 요일 / 계절 / 월, 일 등 (2) 상황의 분류[ 외부적 ..
[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에서 입출력을 처리하는 가장 기본적..