Back-End (Web)/JAVA 28

[JAVA] JAVA 웹 기술의 역사

📚 Java 웹 기술은 서블릿과 JSP로 시작해 MVC 패턴을 거쳐 MVC 프레임워크의 도입으로 구조화되었으며, 이후 어노테이션 기반의 Spring MVC와 비동기 처리에 최적화된 Spring WebFlux로 발전해왔다. Servlet의 등장 (1997)개요Java를 사용한 웹 개발의 시초로, 서버에서 동적으로 콘텐츠를 생성하기 위해 사용되었다. 클라이언트의 요청을 받고, 그에 대한 응답을 생성하는 기본적인 구조를 제공했다.단점코드의 복잡성이 증가하고 유지보수가 어려워졌다.JSP (JavaServer Pages) 도입 (1999)개요JSP는 HTML 내에 Java 코드를 삽입할 수 있는 기술로, 웹 페이지를 더 쉽게 동적으로 생성할 수 있도록 도와주었다.단점JSP 내에 비즈니스 로직을 분리할 수 없다...

Back-End (Web)/JAVA 2024.12.12

[JAVA] 열거형 ( Enum )

열거형 ( Enum )📌 상수들의 집합을 정의하는 자료형입니다.일반적으로 정수나 문자열로 정의할 수 있는 여러 상수들을 열거형을 사용하여 보다 의미 있게 묶을 수 있습니다.public enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY // 0 1 2 3 4 5 6} 열거형을 사용하면 자동적으로 0부터 시작하는 정수값이 할당됩니다class Card{ enum Kind { A, B, C } enum Value { test1, test2 } if(Card.Kind.A==Card.Value.test1) {} // 이거 타입..

Back-End (Web)/JAVA 2024.11.22

[JAVA] HASH란 무엇인가

HASH📌 입력 데이터를 고정된 크기의 값으로 변환하는 함수 또는 그 과정을 의미합니다 다른 말로는 해시 값, 해시 코드, 체크섬 이라고 합니다.key와 value 쌍으로 데이터를 저장하며, 키를 해시 함수를 통해 고유한 인덱스에 대응시켜 빠르게 값을 조회합니다.  중복 허용을 안함, 순서 유지 안함, 빠른 검색, 삭제 가능해시 함수를 통해 시간복잡도가 1(반드시 1은 아닙니다. 충돌할 경우 달라지기도 합니다.)인 한번에 정보의 위치를 찾을 수 있는 자료구조형태(해시 테이블)를 제작하는 과정 꼭 주소로 구현할 필요는 없다 왼쪽의 index/data table의 경우 이차원 배열로 map은 아니다.map으로 만들경우 메서드 차제적으로 for문으로 index값을 일일히 찾을 필요 없이 바로 index(ke..

Back-End (Web)/JAVA 2024.11.21

[JAVA] 자바의 정렬

간단한 정렬 Sort 1. Arrays 클래스의 정렬java.util.Arrays 클래스는 배열을 정렬하는 데 사용됩니다.기본적으로 오름차순으로 정렬하며, 사용자 정의 기준으로 정렬하려면 Comparator를 사용합니다. 문자열의 경우 아스키코드 순 (알파벳 순)으로 오름차순 정렬되며, 한글도 가나다 순으로 정렬됩니다.import java.util.Arrays;public class Main { public static void main(String[] args) { int[] numbers = {5, 2, 8, 3, 1}; Arrays.sort(numbers); System.out.println(Arrays.toString(numbers)); // [1, 2,..

Back-End (Web)/JAVA 2024.11.21

[JAVA] 응용 정리

★Enum (열거형) Enum의 주요 메서드values(): 열거형에 정의된 모든 값을 배열로 반환.valueOf(String name): 이름으로 열거형 상수를 찾음.// 모든 값을 배열로 반환enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY}public class EnumValuesExample { public static void main(String[] args) { Day[] days = Day.values(); for (Day day : days) { System.out.println(day); // MONDAY, TUESDAY, ... 출력 ..

Back-End (Web)/JAVA 2024.11.15

[JAVA] NULL

NULL📌참조 변수가 아무 객체도 가리키지 않음을 나타내는 특수한 값입니다.특징:객체가 생성되지 않았거나, 특정 객체를 참조하지 않는 상태를 나타냅니다.참조 타입(객체 타입)에만 사용할 수 있습니다. (예: String, Integer, 사용자 정의 클래스 등)원시 타입(예: int, float)에는 사용할 수 없습니다.null 값의 변수로 메서드를 호출하려고 하면 **NullPointerException**이 발생합니다.빈 공간 (Empty String)의미: 길이가 0인 문자열로, 내용이 없는 문자열을 의미합니다.표현: 빈 문자열은 "" (따옴표만 있는 문자열)로 표현됩니다.특징:문자열 객체가 존재하지만, 내용이 없습니다.메모리에는 문자열 객체가 생성되며, 이는 null과 다릅니다.isEmpty()..

Back-End (Web)/JAVA 2024.11.13

[JAVA] 쓰레드 & 람다 함수 & 스트림

프로세스📌 운영체제로부터 자원을 할당받는 작업의 단위 프로세스 작업 단위프로세스는 “실행 중인 프로그램”을 의미합니다.예를 들어 우리가 Java 프로그램을 실행시키면 이 프로그램은 프로세스라는 이름으로 운영체제 위에서 실행됩니다.즉, OS 위에서 실행되는 모든 프로그램은 OS가 만들어준 프로세스에서 실행됩니다.카카오톡, 브라우저, JAVA 프로그램 모두 프로세스로 실행되며크롬 브라우저를 2개 띄우면 크롬 브라우저 프로세스도 2개가 띄워진 것입니다.   프로세스 구조 📌 OS가 프로그램 실행을 위한 프로세스를 할당해 줄 때 프로세스 안에 프로그램 Code와 Data 그리고 메모리 영역(Stack, Heap)을 함께 할당해 줍니다. Code는 Java main 메소드와 같은 코드를 말합니다.Data는 프..

Back-End (Web)/JAVA 2024.11.13

[JAVA] Generic

Wrapper 객체📌 Java에서 기본 데이터 타입(primitive type)을 객체로 다룰 수 있도록 해주는 클래스들을 말합니다. 기본 데이터 타입은 객체가 아니기 때문에 객체로 다루어야 하는 경우에 Wrapper 클래스를 사용합니다.  박싱(기본 데이터를 Wrapper 클래스로 변경하는 행위)해서 객체화된 원시 값들은 이제 클래스처럼, 구현되어 있는 메소드들을 자유롭게 이용이 가능하고, 객체만 할 수 있는 것들을 할 수 있게 됩니다.generic을 알기 위해서는 Wrapper 객체를 이해하는 것이 좋습니다.좀 더 전문적인 설명으로, 기본 타입은 '값'의 의미로만 사용되지만 객체로서의 기능이 필요한 경우 추상화를 통해 객체의 속성을 부여한다. 즉, 기본 값을 객체화 해서 "감싼다"라는 의미로 이러한..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 오류 및 예외에 대한 이해

오류 및 예외에 대한 이해 오류(Error)🔥예외(Exception)🚨오류(Error)는 일반적으로 회복이 불가능한 문제입니다.이는 시스템 레벨에서, 또는 주로 환경적인 이유로 발생합니다.코드의 문제로 발생하는 경우도 있지만, 일단 발생하는 경우 일반적으로 회복이 불가능합니다.에러가 발생한 경우 우리는 어떠한 에러로 프로그램이 종료되었는지를 확인하고 대응합니다.예외(Exception)는 일반적으로 회복이 가능한 문제입니다.회복이 가능하다는 전제는 우리가 “그 예외가 발생할 수 있다는 것을 인지하고, 대응했을 것입니다”.현실적으로 코드 레벨에서 할 수 있는 문제 상황에 대한 대응은 “예외 처리”에 속합니다.보통 만나게 되는 문제는 예외이고 이는 "예외처리"로 예방이 가능하다.보통 예외는 코드의 실행, ..

Back-End (Web)/JAVA 2024.11.12

[JAVA] 인터페이스

인터페이스📌 Java에서 클래스가 구현해야 하는 메서드들의 목록을 정의하는 일종의 계약입니다.  인터페이스 선언 public interface 인터페이스명 { public static final char A = 'A'; static char B = 'B'; final char C = 'C'; char D = 'D'; void turnOn(); // public abstract void turnOn();} 모든 멤버 변수는 public static final이어야 합니다.생략 가능합니다.모든 메서드는 public abstract이어야 합니다.생략 가능합니다. (static 메서드와 default 메서드 예외)생략되는 제어자는 컴파일러가 자동으로 추가해줍니다. 단순하게 클래스는 설계..

Back-End (Web)/JAVA 2024.11.12