[JSP] JSP(JavaServer Pages)의 정의와 기본 구성 요소
·
Language/Java
JSP 정의 및 목적정적 웹페이지 / 동적 웹페이지정적 웹페이지사용자의 요청에 따라 변하지 않고, 항상 동일한 컨텐츠를 제공한다.HTML과 같은 파일을 별다른 처리를 하지않고 그대로를 전달하여 로딩 속도가 빠르다.사용자와 상호작용이 제한적이므로 단순한 정보 제공용 웹사이트에 적합하다.동적 웹페이지사용자의 요청, 입력, 세션 정보 등에 따라 페이지의 컨텐츠가 달라진다.예) 로그인한 사용자에게는 개인화된 정보를, 비로그인한 사용자에게는 일반 정보를 제공한다.주로 서버 사이드 스크립트 언어(PHP, JSP, ASP.NET 등)와 데이터베이스를 사용한다.각 요청마다 서버에서 처리가 이루어지므로 서버 자원 소모가 크다. 성능 최적화가 필요하다.JSP(JavaServer Pages)란?동적 웹 페이지를 생성하기 위..
record 클래스 (Java 14)
·
Language/Java
record란?Java 14에서부터 도입된 새로운 클래스 유형으로, 주로 불변 데이터 객체를 만들 때 사용된다.기존의 클래스를 간소화하여 데이터를 보다 쉽게 표현할 수 있도록 해주는 특별한 형태이다.주로 값 객체(value object)로 사용되며, 데이터 중심의 객체를 선언할 때 코드의 양을 줄이고,기본적인 메서드들(`equals()`, `hashCode()`, `toString()`)을 자동으로 제공하여 개발자가 작성해야 할 코드의 양을 줄여준다.     record 사용record 선언`record`는 클래스를 정의하는 것처럼 사용하는데, 이 때 `record`를 사용하여 선언한다.public record Person(String name, int age) {}위 코드에서 `Person`은 `nam..
직렬화(Serialization)
·
Language/Java
직렬화(Serialization)란?각자 PC의 OS마다 서로 다른 가상 메모리 주소를 갖기 때문에, `Referece Type`의 데이터들은 인스턴스를 전달할 수 없다.이런 문제를 해결하기 위해선 주소값이 아닌 `Byte` 형태로 직렬화된 객체 데이터를 전달해야 한다.자바에서 직렬화(Serialization)란 객체를 바이트 스트림으로 변환하여 파일, 데이터베이스, 네트워크 등을 통해 저장하거나 전송할 수 있게하는 과정이다.직렬화된 객체는 모두 파일 저장이나 네트워크 전송 시 파싱이 가능한 기본형(Primitve Type)이 되며, 역직렬화(Deserialization) 과정을 통해 원래 객체로 복원할 수 있다.   직렬화를 하는 경우는 주로 다음과 같다.객체 지속성JVM 메모리에 있는 객체를 영속화 ..
동기화(synchronization)와 락(Lock)
·
Language/Java
동기화(synchronization)와 락(Lock)Java에서 동기화는 여러 스레드가 공유 자원에 동시 접근할 때 발생할수 있는 문제를 방지하는데 사용된다.Lock은 동기화를 위한 방법 중 하나로, 데이터의 일관성과 무결성을 유지할수 있다. Lock 의 목적상호 배제(Mutual Exclusion) : 한번에 하나의 스레드만 자원에 접근할 수 있도록 보장교착 상태(Deadlock) 방지 : 올바른 락 획득 순서를 유지하여 교착상태 방지경쟁 상태 방지 : 여러 스레드가 동시에 자원에 접근하여 발생하는 예기치 않은 결과를 방지    고유 락(Intrinsic Lock)Java에서 모든 객체는 하나의 고유 락을 가지고 있다.이는`synchronized` 키워드를 사용할 때 자동으로 사용된다.public cl..
Java의 스레드(Thread)
·
Language/Java
Java의 스레드(Thread)스레드(Thread)는 Java 프로그램에서 병렬 처리를 수행하기 위한 경량 프로세스이다.Java는 멀티 스레딩을 지원하여 동시에 여러 작업을 수행할 수 있게 한다.이는 CPU 활용도를 높이고, 응답성을 향상시키는데 유용하다.일반적인 자바 애플리케이션은 하나의 메인 스레드로 시작하지만, 여러 작업을 동시에 처리하기 위해서는 추가적인 스레드가 필요하다. 특징경량 프로세스스레드 프로세스 내에서 실행되며, 동일한 메모리 공간을 공유한다.따라서 스레드 간 통신이 효율적이다. 동시성여러 스레드가 동시에 실행되면서 멀티태스킹을 가능하게 한다.상호작용스레드는 동일한 메모리 공간으로 공유하므로, 서로 데이터를 주고받을 수 있다. 운영체제 지원Java 스레드는 운영체제의 스레드 관리 기능을..
Error & Exception
·
Language/Java
Error 와 Exception은 모두 프로그램 실행 중 발생하는 문제를 나타낸다.하지만 그 성격과 처리 방식이 다르기 때문이 이 둘에 대해 바르게 이해하고 있는 것이 중요하다.   ErrorError는 JVM에서 발생하는 심각한 문제를 나타내며, 개발자가 직접 처리할 수 없는 경우가 많다.메모리 부족, 스택 오버플로우 등 시스템 수준의 오류를 포함한다.  Error 사용 예시)try { // 어떤 코드} catch (OutOfMemoryError e) { // 일반적으로 Error는 처리하지 않는다 System.err.println("Fatal error: " + e.getMessage()); System.exit(1); // 프로그램 종료} 보통, 복구할 수 없는 심각한 문제를 ..
가비지 컬렉션 (GC; Garbage Collection)
·
Language/Java
Garbage Collection (GC)GC는 JVM에서 메모리 관리를 자동화하는 기능이다.주요 목적은 다음과 같다.메모리 관리 자동화사용하지 않는 객체의 메모리를 자동으로 해제하여 메모리 누수를 방지한다.개발자의 메모리 관리 부담을 줄일 수 있다.안정성 향상잘못된 메모리 해제, 이중 해제 등 메모리 관리와 관련된 버그를 줄일 수 있다.메모리 최적화GC를 통해 메모리를 사용을 최적화하고 메모리 공간을 효율적으로 활용한다.     Heap 메모리 구조 (Young Generation과 Old Generation)GC는 주로 Heap 영역을 대상으로 동작하며, Heap은 Young Generation과 Old Generation으로 나뉜다.Young GenerationEden : 새로 생성된 객체가 할당되..
Inheritance와 Composition (클래스 간의 관계)
·
Language/Java
Inheritance정의Inheritance(상속)은 객체지향 프로그래밍에서 상위 클래스(부모)의 속성과 메서드를 하위 클래스(자식)가 물려받는 개념이다.`is-a`관계를 나타낸다.  장단점장점재사용성부모 클래스의 기능을 자식 클래스에서 재사용 할 수 있다.계층구조클래스 간 상속관계를 통해 계층 구조를형성할 수 있다.다형성(오버라이딩)자식 클래스에서 부모 클래스의 메서드를 오버라이딩(재정의)하여 다형성을 구현할 수 있다.유지보수 용이공통 기능을 상위 클래스에 두고 관리할 수 있어 유지보수가 쉬워진다. 단점 결합도 증가부모 클래스의 기능을 자식 클래스에서 재사용 할 수 있다.유연성 부족자식 클래스는 부모 클래스에 강하게 의존하게 되어 유연성이 떨어진다.다중 상속 불가Java는 다중 상속을 지원하지 않는다...
오토박싱(Autoboxing)/언박싱(Unboxing)
·
Language/Java
Primitive Type과 Wrapper ClassPrimitive Type(기본 데이터 타입)Java에는 8개의 기본 데이터 타입이 있다.값 자체를 저장하며, 객체가 아닌 단순한 값을 가지기 때문에 메모리 사용과 성능 면에서 효율적이다. 크기값의 범위기본 값byte1byte (8bit)-128 ~ 1270short2byte (16bit)-32,768 ~ 32,7670int4byte (32bit)-2^31 ~ 2^31-10long8byte (64bit)-2^63 ~ 2^63-10Lfloat4byte (32bit)±3.40282347E+38F(6-7자리 유효숫자)0.0fdouble8byte (64bit)±1.79769313486231570E+308 (15자리 유효숫자)0.0dchar2byte (16bit..