전체 글

우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc
[Algorithm] Bubble Sort (거품 정렬) 1. 정의 서로 인접한 두 원소의 대소를 비교하고, 더 큰 원소를 뒤로 보내서 정렬하는 알고리즘 시간 복잡도 최선 : $O(n^2)$ 평균 : $O(n^2)$ 최악 : $O(n^2)$ 2. 동작 과정 첫 번째 원소와 두 번째 원소의 대소를 비교하여 첫 번째 원소가 더 크다면 두 원소의 위치를 바꾼다. 두 번째 원소와 세 번째 원소의 대소를 비교하여 두 번째 원소가 더 크다면 두 원소의 위치를 바꾼다. ​ ... n - 1. (n - 1) 번째 원소와 n 번째 원소의 대소를 비교하여 (n - 1) 번째 원소가 더 크다면 두원소의 위치를 바꾼다. → 이런식으로 탐색 시작 범위를 하나씩 증가시키며 정렬을 진행한다. 3. 장단점 장점 구현이 매우 간단, ..
[Spring] Spring 검증 기능2 (Bean Validation) 1. Bean Validation 어노테이션을 사용하여 간단한 필드 검증 로직을 할 수 있게 하는 것 자바 기술 표준 중 하나 검증 어노테이션과 여러 인터페이스의 모음 일반적으로 hibernate-validator 구현체 사용 → ORM과 관련X spring-boot-starter-validation 라이브러리를 의존관계에 추가하여 사용 2. 검증 어노테이션 @NotNull : null을 허용하지 않음 @NotBlank : 빈값 혹은 공백만 있는 경우를 허용하지 않음 @Range(min = 10, max = 100) : 범위 안의 값이어야 함 @Max(100) : 최대 100까지 허용 @Min(100) : 최소 100까지 허용 이외..
[Java] 롬복의 원리 1. Lombok(롬복)이란? 컴파일 시점에 바이트코드를 조작하여 원하는 코드를 주입해주는 라이브러리 스프링 필수 템 공개된 API가 아닌 Compiler 내부 class를 사용하여 코드를 수정한다는 문제점이 있음 어노테이션 형식으로 동작 ex) @Getter, @Setter, @RequiredArgsConstructor 2. 동작 과정 자바 컴파일러(javac)가 소스파일을 파싱하여 AST 트리를 만듦 롬복은 AnnotationrProcessor에 따라서 AST 트리를 동적으로 수정하고 새 소스코드와 바이트 코드를 분석 및 생성 자바 컴파일러는 수정된 AST를 기반으로 바이트 코드를 생성 3. Annotation Processor 자바 컴파일러 플러그인의 일종 어노테이션에 대한..
[Spring] Spring 검증 기능1 (BindingResult, Validator) 1. BindingResult 스프링이 제공하는 검증 오류를 보관하는 객체 Errors 인터페이스를 상속받는 인터페이스 Errors : 단순한 오류 저장과 조회 기능 BindingResult : Errors + 추가 기능(ex) addError()) 오류가 발생하면 사용자가 입력한 값을 담아주는 역할도 가능 오류를 확인할 파라미터 뒤에 써주면 자동적으로 아래와 같은 일들을 해줌 특정 필드에 오류가 발생하면 FieldError 객체를 생성해서 BindingResult에 자동으로 담아 줌 특정 필드를 넘어서는 오류가 발생하면 ObjectError 객체를 생성해서 BindingResult에 자동으로 담아 줌 @ModelA..
[Spring] HttpMessageConverter 1. HttpMessageConverter란? 스프링 프레임워크에서 제공하는 인터페이스 package org.springframework.http.converter; public interface HttpMessageConverter { //canXXX는 해당 class 타입과, 미디어타입을 체크한다. boolean canRead(Class clazz, @Nullable MediaType mediaType); boolean canWrite(Class clazz, @Nullable MediaType mediaType); List getSupportedMediaTypes(); T read(Class
[Spring] Spring MVC 구조 1. MVC 패턴이란? Business logic과 Presentation logic을 분리하기 위해서 고안된 구조 모델(Model) - 뷰(View) - 컨트롤러(Controller)로 이루어져 있음 모델(Model) 데이터 베이스와 연동하여 데이터를 다룸 비즈니스 로직을 다룸 ex) DAO, Service 클래스 뷰(View) 모델이 처리한 결과를 바탕으로 화면을 출력 ex) HTML, JSP 컨트롤러(Controller) 데이터와 비즈니스 로직 사이으이 상호 동작을 관리 2. Spring MVC 구조 기본적으로 Front Controller 패턴이다 Front Controller(여기선 Dispatcher Servlet)가 요청을 받고 적절한 handler들..
[JAVA] JVM 1. JVM(Java Virtual Machine)이란? 자바가 OS에 종속받지 않고 실행할 수 있게 하는 가상 컴퓨터 스택 기반의 가상 머신 기본 자료형외의 모든 자료형들을 심볼릭 레퍼런스를 통해 참조 심볼릭 레퍼런스 : 참고하는 클래스의 특정 메모리 주소의 이름만 가지고 있는 것 GC(Garbage Collection)을 통해 자원(메모리)을 관리 → JVM을 이해하면 한정된 메모리를 효율적으로 사용하여 성능을 향상 시킬 수 있다. 2. 클래스 로더 JVM 내로 클래스 파일(자바 바이트 코드, *.class)을 로드하고, 링크를 통해 배치하는 작업을 수행하는 모듈 자바 바이트 코드 : JVM이 이해할 수 있는 언어로 변환된 자바 소스코드 런타임시 jar 파일 내 저장된 클래스들을 ..
[Spring] CGI vs Servlet 1. CGI(Common Gateway Interface) 웹 서버와 웹 애플리케이션(CGI 프로그램) 사이의 정보 전달 규칙 웹 서버와 웹 애플리케이션의 제조 회사가 다르면 서로 통신을 할 수 없기 때문에 만들어짐 CGI 프로그램는 브라우저가 요청시 각각의 process를 생성하여 동적 컨텐츠를 처리 process를 생성하기 때문에 서버의 자원을 많이 씀 2. Servlet 웹 서버에서 실행시킬 수 있는 자바 애플리케이션 브라우저 요청마다 Request, Response 객체를 생성 → 각각의 Request와 Response 객체를 사용하여, HTTP정보를 쉽게 사용할 수 있음 process대신 thread를 생성하여 동적 컨텐츠를 처리 서블릿 컨테이너가 관리..
쿠엔크
기러기는 기록기록