STUDY
-
Apache MPMSTUDY/백엔드 2022. 1. 13. 01:27
MPM(Multi Processing Module)은 다중 처리 모듈의 약자로, 클라이언트로부터 받은 요청을 어떤 방식으로 처리할 것인지에 대해 결정하는 모듈을 말한다. 아파치에서 가장 대중적으로 사용하는 MPM에는 Prefork, Worker, Event 방식이 존재한다. Prefork 미리 복수의 프로세스를 생성하여 클라이언트의 요청에 대비하는 멀티프로세스 방식이다. 하나의 요청에 대해서 하나의 자식 프로세스가 하나의 스레드를 사용해서 처리하는 방식이다. 동시에 여러개의 요청이 들어올 경우, 미리 생성되어 있는 자식 프로세스에서 각 요청을 처리한다. 각 프로세스들의 자원이 독립적이기 때문에(프로세스 복제시 메모리 영역까지 복제), 다른 요청이 들어오거나 프로세스 하나에 오류가 발생해도 다른 요청에 영..
-
프로젝트 성패를 결정짓는 데이터 모델링 이야기2STUDY/DB 2021. 7. 8. 14:04
story 07. Back to the Basic, 정규화 이론 - 데이터 이상 현상이 존재하는 테이블 학번 과목코드 성명 과목명 평가코드 101 CR03 박영진 공업수학 C 101 CR11 박영진 심리학개론 A 103 CR11 김영희 심리학개론 B 103 CR15 김영희 논리학개론 F * 데이터 이상 현상 : 표를 구성하는 속성의 값을 수정할 떄나 표에 새로운 개체를 삽입하거나 삭제할 때 의도하지 않은 다른 데이터에 문제가 발생하는 현상 평가코드 결과가 없는 홍길동이라는 학생에 대한 정보는 입력이 불가하다. 과목코드가 CR11인 과목의 이름이 다른것으로 변경되면, CR11 관련 열을 모두 찾아서 수행해야 한다. 김영희의 F학점 평가 결과를 삭제하면 논리학개론 과목도 같이 삭제된다. 데이터 이상 현상이 ..
-
JOINSTUDY/DB 2021. 7. 6. 17:16
JOIN 관계형 데이터베이스에서는 중복 데이터를 피하기 위해서 데이터를 쪼개 여러 테이블로 나눠서 저장한다. 이렇게 분리되어 저장된 데이터에서 원하는 결과를 도출하기 위해서는 여러 테이블을 조합해야 한다. 관계형 데이터베이스에서 조인(JOIN) 연산자는 관련 있는 컬럼을 기준으로 행을 합쳐주는 연산이다. INNER JOIN : 내부조인 - 교집합 LEFT / RIGHT JOIN : 차집합 OUTER JOIN : 외부조인 - 합집합 (ORACLE에는 존재하지만, MYSQL에는 없어 LEFT+RIGHT조인으로 사용된다.) 1. INNER JOIN : 내부조인 - 교집합, 공통적인 부분만 SELECT SELECT A.ID, A.NAME, B.AGE FROM A INNER JOIN B ON A.ID = B.ID..
-
실제 Client IP 구하기STUDY/백엔드 2021. 6. 25. 17:31
클라이언트 IP → Proxy 서버 및 장비 → 웹 서버 웹 서버나 WAS 앞에 L4같은 Load Balancer나 Proxy 서버, caching 서버 등의 장비가 있을 경우 웹서버는 Proxy 서버나 장비 IP에서 접속한 것으로 인식한다. 때문에 실제 Client IP가 아닌 앞단에 있는 Proxy 서버 IP를 요청 IP로 인식한다. 이러한 이유 때문에 Client IP를 얻기 위해 사용하는 HttpServletRequest.getRemoteAddr()를 이용하면 실제 Client IP를 얻기 어렵다. Proxy 서버 IP가 아닌 실제 요청한 Client IP를 얻기 위해서는 HTTP 헤더에 있는 클라이언트의 IP를 찾아야 한다. * Load Balancer : 여러 대의 서버가 동작하고 있을 때, ..
-
프로젝트 성패를 결정짓는 데이터 모델링 이야기1STUDY/DB 2021. 6. 25. 11:59
story 01. 데이터 모델링은 일상 가까이 존재한다. - 자동차 동호회 예시를 통한 데이터 모델링 성명 나이 주소 이메일 휴대폰 제조사 차종 색상 배기량 년식 홍길동 35 서울시 hong@naver.com 010-1234-5678 랜드로버 이보크 WHITE 2200 2012 김철수 42 경기도 kim@naver.com 010-9876-5432 현대 벨로스터 RED 1600 2010 고주몽 51 경기도 go@naver.com 010-4569-7825 아우디 A7 SILVER 3000 2013 문제1. 만약 회원이 보유한 차량이 두 대 이상인 경우 이메일이나 휴대폰과 같은 개인정보가 차량 대수만큼 반복된다. 해결1. 위와 같은 경우가 발생하면 회원 명부라는 관점보다는 회원의 차량 정보가 우선시 되는 느낌..
-
JavaScript : ArraySTUDY/프론트엔드 2021. 6. 2. 17:11
1. 생성자 [element0, element1, ..., elementN] new Array(element0, element1[, ...[, elementN]]) new Array(arrayLength) - 매개변수 elementN : 배열을 초기화할 때 채워넣는 요소로, 항목이 하나고 그 항목의 자료형이 숫자일 경우 arrayLength 매개변수로 간주한다. arrayLength : Array 생성자에 제공한 매개변수가 하나이고, 매개변수가 0에서 232-1 이하의 정수인 경우, length 속성이 해당 값인 새로운 JavaScript 배열이 생성된다. - 사용 let fruits = ['가나다', 'abc'] -> 리터럴 표기법으로 생성 let fruits = new Array(2) -> 생성자와 ..
-
Spring - 디자인 패턴STUDY/디자인패턴 2021. 5. 10. 12:13
1. 어댑터 패턴(Adapter Pattern) - 개방 폐쇄 원칙을 활용한 설계 패턴으로, 서로 다른 두 인터페이스 사이에 통신이 가능하게 하는 것이다. 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. public interface ServiceA { public void startServiceA(); public void stopServiceA(); } public class ServiceAA implements ServiceA { @Override public void startServiceA() { System.out.println("start ServiceA");..
-
Java Bean ValidationSTUDY/백엔드 2021. 5. 7. 16:28
Bean Validation 이란? Bean Validation은 JavaBean 유효성 검증을 위한 메타데이터 모델과 API에 대한 정의이며 여기서 언급하고 있는 JavaBean은 직렬화 가능하고 매개변수가 없는 생성자를 가지며, Getter 와 Setter Method를 사용하여 프로퍼티에 접근이 가능한 객체를 의미한다. 각 계층마다 데이터 검증 로직이 추가되면 코드 중복이 심하고, 검사 로직 추적이 어려우며 애플리케이션이 복잡해진다. 그래서 Domain Model에 @Notnull, @Min, @Max와 같은 어노테이션을 사용하여 메타데이터를 정의하고, 이를 통해 JavaBean의 유효성을 검증한다. Bean Validation을 실제 동작하도록 구현한 Hibernate Validator를 사용한다..