PRG 패턴이란? 웹 개발 시 새로고침으로 인한 중복된 HTTP Post요청을 방지하기 위해 서버가 클라이언트의 리다이렉션(Redirection)을 유도하는 방법. POST 요청에 대한 처리를 Redirect 하여 GET 요청을 다시 처리한다. (Post-Redirect-Get) PRG 패턴의 필요 상황 브라우저의 새로고침은 마지막에 보냈던 HTTP 요청을 다시 보내는 기능이다. 그러나, POST 요청이 새로고침으로 인해 동일한 요청을 담아 다시 보내진다면 아래와 같이 의도하지 않은 상황이 발생할 수 있다. 위와 같이 사용자가 블로그에 새 글을 작성해 서버로 POST 요청을 보냈다 가정하자. 일반적으로 글 작성을 완료하면 서버에서 현재 작성한 글에 대한 상세 보기 페이지를 반환해준다. 만약 서버가 PRG..
사용되는 지식: 함수형 인터페이스 람다식(Lambda Expression) 메서드 참조 디폴트 메서드 단순한 Array 혹은 숫자만 포함된 List의 구현체(ArrayList, LinkedList)들을 오름차순 정렬하려면 java.util.Arrays나 java.util.Collections의 sort() 메서드에 해당 자료구조를 파라미터로 넘겨주기만 하면 된다. import java.util.Arrays; public class test { public static void main(String[] args) { int[] arr = {3,2,1}; Arrays.sort(arr); // => arr = {1, 2, 3} } } 하지만 예를 들어, 단순하게 하나의 숫자의 비교를 통한 정렬이 아니라, 사람..
선수지식: [Java] - 함수형 인터페이스 람다식(Lambda Expression)이란? int max(int a, int b) { return (a > b) ? a : b; } 위와 같이 새로 정의해서 사용해야 하는데, 이러한 함수의 사용 빈도까지 적으며 이런 행위를 반복해야 하는 것은 매우 불편한 일이다. 자바를 비롯한 각종 프로그래밍 언어에서는 이러한 불필요한 코드를 줄일 수 있도록 메서드의 이름 없이 함수를 간단히 표현하는 '람다식' 이라는 표현 방식이 사용 가능하다. 자바에서는 Java8부터 이를 지원했으며, 함수형 언어적 특성을 갖게 되었다. 또한 람다식은 익명 객체로, 하나의 변수처럼 취급이 가능해 매개 변수로 Stream연산에 사용된다. 람다식 작성법 기존의 메서드에서 아래의 규칙을 통해..
함수형 인터페이스 함수형 인터페이스란, 인터페이스 중 한 개의 추상 메서드를 갖는 것을 말한다. 간단히 아래와 같은 형태의 인터페이스를 함수형 인터페이스라고 부를 수 있다. @FunctionalInterface interface ExampleInterface { abstract void exampleMethod(); } java.lang의 @FunctionalInterface 어노테이션을 붙여 해당 인터페이스가 함수형 인터페이스의 조건에 부합하는지 컴파일 시점에 확인할 수 있다. Java8의 함수형 인터페이스 Java8 이전까지는 인터페이스에 상수와 추상 메서드만을 선언 가능했으나, Java8부터 인터페이스에 디폴트(default) 메서드와 정적(static) 메서드 또한 추가가 가능해졌다. 따라서 아래..
정규화(Normalization)의 정의와 목적 하나의 테이블에 모든 정보를 저장하면 필연적으로 동일한 내용의 중복이 많아지게 된다. 중복이 많아짐은 저장 공간의 낭비는 물론이고, 삽입/삭제/갱신과 관련된 데이터베이스 이상 현상(Anomaly)이 발생하기도 쉬워진다. 데이터베이스 정규화(Normalization)는 관계형 데이터베이스를 설계할 때 중복이 최소화되도록 데이터를 구조화하는 과정을 의미한다. 정규화 과정은 제1 정규형에서 제5 정규형까지 존재하며, 상위의 정규형은 하위 정규형의 조건을 모두 만족한다. 이 글에서는 제3 정규형과 3.5 정규형으로 불리는 보이스-코드 정규형(Boyce-Codd normal form, BCNF)까지의 과정을 다룬다. 정규화되지 않은 비정규 릴레이션 상품 번호 상품 ..
- Total
- Today
- Yesterday
- 스프링
- Spring Boot Monitoring
- MySQL
- MySQL 이벤트 스케줄
- stubbing
- 람다식
- 함수형 인터페이스
- 생성자 주입
- Spring
- Spring 테스트
- 우테코
- invokedynamic
- 우테코 5기
- logback-spring.xml
- springboottest
- 우테코 프리코스
- RandomPort
- multiplebagsfetchexception
- GitHub Discussion 템플릿
- java switch case
- 자바
- 의존성 주입
- GitHub Discussion Template
- Jenkins 예약 배포
- JPA
- JPA JSON
- Fromtail
- Java
- GitHub Discussion
- Payload 암호화
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |