본문 바로가기

분류 전체보기

(126)
[spring(스프링)] Dispatcher Servlet이란? _디버깅의 눈물 Dispatcher Servlet? Dispatcher Servlet은 모든 HTTP 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 '프론트 컨트롤러(Front Controller)'입니다. Dispatcher Servlet 작동 원리 1. 클라이언트의 HTTP 요청이 Dispatcher Servlet에 도착합니다. 2. Dispatcher Servlet은 Handler Mapping에게 URL을 넘깁니다. 3~4. Handler Mapping은 적절한 컨트롤러를 찾고 결과를 가져옵니다. 5. Dispatcher Servlet은 Handler Mapping으로부터 선택된 컨트롤러 정보를 가져옵니다. 6. Dispatcher Servlet은 Handler Adapter에게 선택된 컨트롤러의 비즈니스 ..
[java 코딩테스트 빈출 활용] 제곱근 함수를 통해 소수 판별하는 방법 _디버깅의 눈물 자바에서 제곱근 함수를 통해 소수를 판별하는 방법 1. 소수를 판별할 숫자(n)을 입력 받습니다. 2. n이 2보다 작거나 같으면 소수가 아니므로 바로 false를 반환합니다. 3. n의 제곱근(루트n)을 구합니다. 4. 2부터 제곱근까지 모든 수(i)에 대해 n을 i로 나누어 떨어지는지 확인합니다. 5. 나누어 떨어지는 수(i)가 있다면, n은 소수가 아니므로 false를 반환합니다. 6. 나누어 떨어지는 수가 없다면, n은 소수이므로 true를 반환합니다. 다음은 위 방법을 구현한 자바 코드입니다. public static boolean isPrime(int n) { if (n
[spring(스프링)] DTO, VO, Entity의 차이? _디버깅의 눈물 DTO(Data Transfer Object, 데이터 전송 객체) : 데이터 전송 객체로, 계층(Layer) 간 데이터 교환을 위해 사용되는 객체입니다. : DTO는 데이터 교환만을 위해 사용되므로, 필드, getter/setter 메서드를 가집니다. public class StudentDTO { private String name; private int age; private String address; // 기본 생성자 public StudentDTO() { } // 매개변수를 받는 생성자 public StudentDTO(String name, int age, String address) { this.name = name; this.age = age; this.address = address; } /..
[java(자바)] Java와 C/C++의 차이점 _디버깅의 눈물 1. 실행 방식 : C/C++은 소스 코드를 컴파일 후 머신 코드로 변환해 실행합니다. : 반면에 자바는 컴파일한 머신 코드(*.class)를 JVM(Java Virtual Machine, 자바 가상 머신)에서 실행합니다. 이로 인해 자바는 운영 체제로부터 독립적입니다. 2. 메모리 관리 : C/C++은 개발자가 직접 메모리를 할당하고 해제해야 합니다. : 반면에 자바는 가비지 컬렉션(Garbage Collection)이 메모리를 자동으로 관리합니다. 3. 포인터 : C/C++은 포인터를 이용해 메모리를 직접 조작할 수 있습니다. : 반면에 자바에서는 포인터를 지원하지 않고, 객체에 대한 참조(Reference)를 사용합니다.
[java(자바)] 자바8의 특징-람다식, 스트림, 새로운 날짜&시간 API _디버깅의 눈물 Java8의 주요 특징으로는 다음과 같은 3가지가 있습니다. 1. 람다식(Lambda) : 람다식을 지원해 간단하게 함수형 프로그래밍을 구현할 수 있도록 합니다. 2. 스트림(Stream) API : 스트림 API를 제공해 컬렉션 데이터를 처리하는데 있어서 효과적인 방법을 제공합니다. 3. 새로운 날짜 및 시간 API : 새로운 날짜와 시간 API(Date and Time API)을 제공합니다. 이 API는 'java.time' 패키지에 속해 있습니다. 예를 들어, LocalDate, LocalTime, Duration 등이 있습니다. *람다식이란? : Java8부터 추가된 기능으로, 함수형 프로그래밍을 지원하기 위한 기능입니다. 람다를 이용하면 메서드를 하나의 식으로 표현할 수 있습니다. *스트림 AP..
[java(자바)] 리플렉션(Reflection)이란? _디버깅의 눈물 자바의 리플렉션(Reflection) 리플렉션이란 실행 중인 자바 프로그램에서 클래스, 메서드, 필드 등의 정보를 접근 제어자와 관계없이 동적으로 가져오고 조작할 수 있는 기능을 말합니다. 리플렉션은 자바의 다른 기능들과 결합하여 다양한 프레임워크나 라이브러리에서 활용됩니다. 예를 들어, 스프링 프레임 워크에서는 리플렉션을 사용하여 IoC/DI를 구현합니다. Spring Bean Factory(IoC 컨테이너 구현체 중 하나)가 런타임에 해당 어노테이션이 붙은 클래스를 탐색하고 발견한다면, 리플렉션을 통해 해당 클래스를 Bean 객체로 등록합니다. 이외에도 리플렉션은 웹 요청 파라미터를 컨트롤러 메서드의 인자로 자동 데이터 바인딩할 때 사용됩니다. 리플렉션을 이용해 컨트롤러 메서드의 인자 타입을 확인하고..
[java(자바)] Generic이란? _디버깅의 눈물 Generic 제네릭은 클래스나 메서드에서 사용할 데이터 타입을 미리 지정하지 않고, 실행 시점(컴파일 시점)에 타입을 결정할 수 있도록 하는 기능입니다. 제네릭을 사용하기 위해서는 우선 클래스나 인터페이스에서 타입 매개변수(Type Parameter)를 선언합니다. 그리고 객체를 생성할 때, 타입 매개변수에 실제 사용할 타입(ex.Integer)을 지정합니다. 메서드에서도 제네릭을 사용할 수 있습니다. public class GenericExample { private T data; public GenericExample(T data) { this.data = data; } public T getData() { return data; } public void setData(T data) { this.d..
[java(자바)] 직렬화(Serialization)와 역직렬화(Deserialization) _디버깅의 눈물 직렬화(Serialization) : 객체를 바이트 스트림으로 변환하는 과정을 말합니다. 이렇게 직렬화된 객체는 파일이나 네트워크를 통해 전송하거나 저장할 수 있습니다. : 각 PC나 OS마다 서로 다른 가상 메모리 주소 공간을 갖기 때문에, 참조 타입의 데이터들은 네트워크나 파일 등으로 직접 전송할 수 없습니다. 이를 해결하기 위해서는 주소 값이 아니라, Byte 형태로 직렬화된 객체 데이터를 전달해야 합니다. : 직렬화 하기 위해서는 해당 클래스가 Serializable 인터페이스를 구현해야 합니다. 역직렬화(Deserialization) : 직렬화된 바이트 스트림을 객체로 변환하는 과정을 말합니다. 역직렬화를 통해 객체를 생성하고, 저장된 데이터를 객체에 복원할 수 있습니다. 직렬화/역직렬화 사용시..