CS 70

정규화(Normalization)

1. 제1 정규형 : 모든 속성은 반드시 하나의 값을 가져야 한다. 1) 다중 값을 가지는 경우 하나의 속성에는 하나의 값을 가져야 하고 다중 값이 들어갈 경우에는 고객 연락처라는 엔티티를 추가하여 따로 관리하자. 2) 다른 유형의 중복 데이터를 가지는 경우 중복 데이터를 분리하여 주문 상세라는 엔티티를 만들어 다른 유형의 중복 데이터 발생하지 않게 한다. 제2 정규형 : 엔티티의 일반 속성은 주 식별자 전체에 종속적이어야 한다. 여기서는 상품명이 식별자 전체가 아닌 상품 번호에만 종속되어있는 부분 종속에 해당한다. 상품명을 변경해 주어야 할 때 주문 상세에 상품명을 모두 변경해야 하고 많이 팔린 상품을 수정하는데 부하가 크게 증가한다 따라서 나누어 줘야 한다. 상품 엔티티를 추가해서 주문 상세 엔티티의..

CS/DataBase 2021.07.28

BIg-O 표기법

1. Big-O 표기법이란? 알고리즘의 성능을 수학적으로 표기해 시간, 공간 복잡도 나타내 줄 수 있다. a. 시간 복잡도란 시간 복잡도(Time Complexity)는 알고리즘이 입력받는 데이터의 수 혹은 크기를 변수로하여 실제로 수행되는 연산량을 수식 형태로 표기하는 것을 말한다. 시간 복잡도는 주로 빅-오 표기법(Big-O Notation)을 사용한다. 1) O(1)알고리즘 : constant time 데이터의 크기에 상관없이 성능의 변화가 없는 경우 문제 : 2) O(n) 알고리즘 : 데이터의 크기에 따라 비례해서 처리시간도 증가한다. 3) O(n^2) 알고리즘 : quadratic time -> 지수함수형식 4) O(nm) 알고리즘 3)이랑 차의 주의 5) O(n^3) 6) O(2^n) : ex..

Builder Pattern(effective java)

1. 기본 : 생성자에 매개변수가 많다면 빌더 패턴 사용을 고려해라 - 생성자가 많을 경우 또는 오브젝트 생성 후 변경 불가능한 불변 오브젝트가 필요한 경우, 불변 오브젝트를 생성하여 오브젝트의 일관성, 변경 불가능을 실현하여 코드의 가독성과 불변성, 일관성을 유지하도록 한다. 객체 생성의 대표적 방법으론 1) 점층적 생성자 패턴 : 일관성, 불변성은 유지되지만, 가독성 좋지 않다. 어디에 뭐가 저장되는지 호출 코드만으로는 각 인자의 의미를 알기 어렵다. 2) 자바 빈 패턴 - Setter 메서드 쓰는 방식으로 어떤 해당 파라미터가 어떤 변수인지 메서드를 통해 확인 가능(일관성, 변경 불가능성 원칙 깨짐)-> 스레드 안정성을 위해 추가 작업 필요 3) 빌더 패턴이 있다. - 어떤 필드에 어떤 인자 넣어줬..

CS/DesignPattern 2021.07.08

ServerSideRendering vs. ClientSideRendering

1. ServerSideRendering 1) 의미 : 전통적인 웹 애플리케이션 렌더링 방식으로 사용자가 웹 페이지에 접근할 때 서버에 각각 페이지에 대한 요청을 하고 서버에서 html, js 파일 등을 다운로드해서 화면에 렌더링 하는 방식이다. 초기 렌더링 시에 내용이 존재하는, 미리 서버에서 랜더링 된 HTML을 받는다. 그 다음 자바스크립트로 웹 페이지를 완전하게 작동시킨다. 2) SSR의 장점 : - 사용자가 처음으로 컨텐츠를 볼 수 있는 시점을 앞 당길 수 있다. - 검색엔진 최적화에 용이하다.(검색엔진들의 크롤링 봇은 HTML 내용 자체를 긁어와서 처음에 내용이 빈 HTML을 받는 CSR 앱 들은 검색 엔진 노출에 불리하다. ) - SSR을 적용하면 초기 렌더링시에 내용이 있는 HTML에다가 ..

CS/ETC. 2021.07.07

프로세스(Process)와 스레드(Thread)

1. 프로세스 1) 의미 : 프로세스란 실행 중인 프로그램을 의미하며 자원(메모리, CPU)과 스레드로 구성 하나의 새로운 프로세스를 생성하는 것 보다 하나의 새로운 스레드를 생성하는 것이 더 적은 비용이 든다. 2. 스레드 1) 의미 : 프로세스 내에서 실제 작업을 수행하는 것을 스레드라고 하며, 모든 프로세스는 하나의 스레드를 가지고 있다. 2) 멀티 스레드 : 자원 + 스레드 + 스레드 + 스레드...(싱글 스레드 = 스레드가 하나인 경우) 멀티 태스킹 : 여러 개의 프로세스가 동시에 실행될 수 있는 것 멀티 스레드 장점 : 시스템 자원을 보다 효율적으로 사용할 수 있다. 사용자에 대한 응답성이 향상된다(파일 전송되면서 채팅도 가능) 작업이 분리되어 코드가 간결해진다. 멀티 쓰레드 단점 : 동기화에..

CS/ETC. 2021.06.22

WAS (Web Application Server) vs. Web Server

1. 톰캣(Web Application Server, 8080 port) : 1) 의미 : 웹 서버 + 웹 컨테이너의 결합으로 다양한 역할을 수행한다. 웹 컨테이너는 클라이언트의 요청이 있을 때 내부 프로그램을 통해 결과를 만들어내고 이것을 다시 클라이언트에게 돌려주는 역할을 한다. 예를 들어 JSP와 서블릿 처리, 서블릿의 수명 주기 관리, 요청 URL을 서블릿 코드로 매핑, HTTP 요청 수신 및 응답, 필터 체인 관리 등 2. 아파치( Web Server, 80 port) 클라이언트의 요청을 기다리고 요청에 대한 데이터를 만들어서 응답하는 역할을 한다. 이때 데이터는 정적인 데이터(html, css 이미지 등으로 ) 한정된다. Nginx도 웹 서버에 해당한다. 3. 아파치와 톰캣의 차이 (= 웹 서..

CS/Network 2021.06.07

*1. OOP(객체 지향 프로그래밍)

1. 의미 : 애플리케이션을 구성하는 요소를 각각의 객체로 바라보고 객체들을 유기적으로 연결하여 프로그래밍하는 것을 객체지향 프로그래밍이라고 한다. 코드의 재사용성과 중복제거를 통해 유지보수의 용이성을 높이고자 하는 것이 궁극적인 목적이다. 2. 객체란 : 사람 한 명 한 명을 객체라고 할 수 있다. 사람은 일반적으로 공통적인 속성(눈, 코, 입, 귀, 팔, 다리) 등을 갖고 있지만 생김새는 다 제 각각이다. 따라서 사람 한 명 한 명은 각각 다른 객체로 분류된다. 3. 클래스란 : 사람 한 명 한 명이 갖고있는 공통적인 속성들을 모아서 정의 내린 것을 클래스라고 한다. 흔히 여러 책에서 클래스와 객체의 관계를 설명할 때 설계도면을 예시로 드는 경향이 있다. 설계도면이 클래스이고 설계도면에 따라 찍어낸 ..

CS/ETC. 2021.06.02