[Spring] Web Server vs WAS 1. Web Server란? HTTP를 기반으로 동작하는 서버로써, 클라이언트의 요청을 받아 정적 리소스(정적 HTML, CSS, JS, 이미지, 영상 등)을 제공하는 서버 동적 리소스를 요청 받으면 WAS가 처리한 동적 리소스를 받아서 클라이언트에게 전달 ex) Apache, Nginx 2. WAS(Web Application Server)란? HTTP를 기반으로 동작하는 서버로써, Web Server의 기능 뿐만아니라 동적 리소스도 제공이 가능한 서버 서블릿 컨테이너라고도 불림 ex) Tomcat 3. 웹 시스템 구조 3.1 WAS만 사용 간단하게 WAS와 DB만으로도 웹 시스템 구현이 가능 하지만 여러 단점이 존재한다. WAS가 너무 많은 역할을 함 ..
전체 글
우아한테크코스 5기 BE 에단 Github : https://github.com/cookienc[데이터베이스] 인덱스 1. 인덱스란? 데이터베이스의 저장 성능을 희생(약 10%)하고, 읽기 속도를 높이는 기능 책의 목차와 비슷함. 2. 장단점 장점 읽기 성능↑ 시스템 부하↓ 단점 데이터 추가, 삭제 시 성능 감소 INSERT, UPDATE, DELETE 시 추가 연산이 필요하기 때문 INSERT : 새로운 인덱스 추가 UPDATE : 기존 인덱스를 사용하지 않음 처리 및 갱신된 데이터의 인덱스 추가 DELETE : 삭제하는 데이터의 인덱스를 사용하지 않음으로 변경 데이터 베이스의 용량을 추가적으로 차지 3. 사용하는 곳 규모가 작지 않은 테이블 변경이 자주 발생하지 않는 컬럼 JOIN, WHERE, ORDER BY에 자주 사용되는 컬럼 카디널리티(기수성)이 높은 컬럼 카디널리티 : 한 컬럼이 갖고..
쿠키와 세션 1. 쿠키와 세션을 사용하는 이유 HTTP 프로토콜의 특성 때문 → 서버가 클라이언트가 누구인지 매 요청 마다 확인을 해야 함. 무상태 프로토콜 : 통신의 상태를 유지하지 않음 비연결성 : 클라이언트가 응답을 받으면 연결을 끊음 2. 쿠키 클라이언트 로컬에 저장되는 키와 값이 들어있는 데이터 HTTP의 일종 특징 이름, 값, 만료일(저장기간), 경로 정보로 구성 클라이언트에 총 300개의 쿠키를 저장 가능 하나의 도메인 당 20개의 쿠키를 가질 수 있음 하나의 쿠키는 4KB까지 저장 가능 Response Header에 Set-Cookie 속성으로 만들 수 있음 사용자가 요청하지 않아도 브라우저가 Request를 할 때 Request Header를 넣어서 자동으로 서버에 전송 동작 방식 클라이..
Redirect URL에 쿼리 파라미터가 생기는 경우 1. 진행 상황 테스트를 하던 중 위와 같이 오류가 나왔다. 테스트 코드와 컨트롤러는 다음과 같다. @Test void 상품_등록_성공_테스트() throws Exception { //given MultiValueMap params= new LinkedMultiValueMap(); params.add("name", "test"); params.add("author", "test"); params.add("publisher", "test"); params.add("category", "NOVEL"); params.add("price", "15000"); params.add("stockQuantity", "999"); //when mvc.perform(p..
Embedded Type Test 문제와 H2 GenerationType 문제 1. Embedded Type Test 오류 개인 프로젝트를 시작 한 날, jpa테스트를 돌리는 도중 위와 같은 오류를 만났다. 오류의 원인을 구글링 해보니, embedded type으로 테스트를 해주는데 값을 입력안해주면 jpa 오류가 발생한다는 것이었다. 이것을 해결하기 위해서 임의의 Address 객체를 new를 이용하여 테스트를 하였더니 테스트가 성공했다. not null이라는 조건을 안달아도 오류남으로 다음부터 테스트 할 때 참고해야겠다. 2. H2 GenerationType 문제 위의 오류를 해결하고 다른 테스트를 해보려고 하니 이 오류가 발생했다.( 스프링이 말대꾸? ) 이 문제는 해결하는데 진짜 오래걸렸다. 간단..
정규식이란? 1. 정의 정규식(Regular Expression)은 특정한 규칙을 가지는 문자열 집합을 표현하는데 사용하는 형식 언어 흔히 regex라고 불림 2. 문법 ^ : not의 의미, 문자의 시작을 의미 - ^[a] : a로 시작하는 문자 $ : 문자의 끝을 의미 - [a]$ : a로 끝나는 문자 [] : 한 개의 문자 - [abc] : a, b, c 중 한 개의 문자 - [^abc] : a, b, c 를 제외하고 한 문자 - [a-z] : a부터 z까지 중 하나 - [a-zA-Z] : 영어 단어 중 하나 {} : 횟수 또는 범위를 나타냄 - {3} : 정확히 3회 - {3, } : 3회 이상 - {3, 5} : 3회 이상 5회 이하 () : 그룹핑 \d : 한 개의 숫자 - [0-9]와 동일 ..
Chapter9 일반적인 프로그래밍 원칙 1. 지역변수의 범위를 최소화하라 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고, 오류 가능성이 낮아진다. 가장 처음 쓰일 때 선언 for문이 while문보다 오류가능성(복붙할 때)이 낮다 2. 전통적인 for 문보다는 for-each 문을 사용하라 for문보다는 for-each문이 명료하고, 유연하며 버그를 예방해 준다. 3. 라이브러리를 익히고 사용하라 표준 라이브러리를 사용하여 좀 더 안정성이 있는 코드를 작성할 수 있다. 표준 라이브러리는 계속 업데이트 되므로, 따로 노력을 하지 않아도 성능이 지속해서 개선된다. 또한, 작성한 코드가 다른 사람들이 쉽게 이해할 수 있게 된다. 4. 정확한 답이 필요하다면 float와 double은..
ModelAttribute 관련 오류 1. 진행상황 회원가입 폼 테스트 중에 오류가 생겨버렸다( css는 나중에 입힐거에요 ). (역시나 오늘도 발생한 오류..) 그래도 나름 괜찮은 것은 로그가 제대로 찍혀있다는 것... 아무튼, 로그를 보니까 오류가 발생해서 BindingResult 객체에는 제대로 들어갔는데, 그 뒤에 파싱을 못한것 같다. 이름 다시입력해주세요. html을 보면 별다른 문제는 없어 보인다. 그럼 Controller를 볼까? Controller와 Dto는 아래와 같다. public class MemberController { private final MemberService memberService; @GetMapping("/post") public String postForm(Mode..