분류 전체보기
-
[Data Structure] 스택(Stack)과 큐(Queue)Data Structure 2020. 8. 12. 14:27
스택(Stack)이란? 한 쪽 끝에서 데이터를 넣고 뺄 수 있는 LIFO(Last In Fisrt Out) 형식의 자료구조 스택은 가장 최근에 스택에 추가한 데이터가 가장 먼저 제거됨 push() : 스택에 데이터를 저장 pop() : 스택에서 데이터를 꺼냄 peek() : 스택에서 가장 최근에 추가한 데이터를 반환 isEmpty() : 스택이 비어 있을 때 true 반환 활용 방안 재귀 알고리즘 재귀적으로 함수를 호출해야 하는 경우에 임시 데이터를 스택에 넣어줌 재귀함수를 빠져 나와 backtracking을 할 때는 스택에 넣어 두었던 임시 데이터를 가져옴 웹 브라우저 방문 기록 실행 취소 역순 문자열 만들기 수식의 괄호 검사 후위 표기법 계산 큐(Queue)란? 먼저 넣은 데이터가 먼저 나오는 FIF..
-
함수형 프로그래밍이란?WEB 2020. 8. 9. 14:14
명령형 프로그래밍과 선언형 프로그래밍의 차이 명령형 프로그래밍 - 프로그래밍의 상태와 상태를 변경시키는 구문의 관점에서 연산을 설명 - 절차지향 프로그래밍 - 수행되어야 할 연속적인 계산 과정을 포함하는 방식(C, C++ ...) - 객체 지향 프로그래밍 - 객체들의 집합으로 프로그램의 상호작용을 표현(Java, C++, C# ...) 선언형 프로그래밍 - 어떻게(How)보다는 무엇(What)과 같은지를 설명하는 방식 - 함수형 프로그래밍 - 순수 함수를 조합하고 소프트웨어를 만드는 방식(LISP, Haskell, Closure ...) 차이점 명령형 프로그래밍 : 알고리즘을 명시하고 목표는 명시 안함 선언형 프로그래밍 : 알고리즘을 명시하지 않고 목표는 명시 OOP와 FP의 차이점 OOP(Object ..
-
[Web] Forwad와 Redirect의 차이WEB 2020. 8. 2. 14:32
Forward Web Continter 차원에서 페이지의 이동 실제로 웹 브라우저는 다른 페이지로 이동했는지 알 수 없음 웹 브라우저는 최초 호출한 URL만 표시하고 이동한 페이지의 URL 정보는 볼 수 없음 동일한 Web Container에 있는 페이지로만 이동 가능 현재 실행중인 페이지와 Forawd에 의해 호출될 페이지는 request, response 객체를 공유 Redirect Web Containter는 redirect명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라는 명령을 내림 웹 브라우저는 URL을 지시된 주소로 변경하고 그 주소로 이동 다른 Web Container에 있는 주소로 이동 가능 새로운 페이지에서는 request, response 객체가 새로 생성됨
-
[JS] Async / AwaitJavaScript 2020. 7. 30. 21:22
동기 / 비동기 동기 요청을 받으면 요청한 작업의 처리가 끝나고 다음 코드 실행 코드가 위에서부터 아래로 순서대로 실행됨을 의미 비동기 요청에 대한 처리가 끝나기전에 다른 작업을 처리 비동기 요청은 응답 시간이 모두 달라 순서대로 실행되지 않고 호출시간과 응답시간에 따라 동작을 수행 async await 비동기 요청의 실행 순서 문제를 해결하기 위해 ES6부터 제공됨 let delay = (msg) => { let ms = Math.floor(Math.random() * 1000) + 1; return new Promise((resolve) => { setTimeout(resolve, ms); }).then((v) => { console.log(v, `${ms} ms`); }) } let asyncFun..
-
[JS] forEach, for of, for in 차이점JavaScript 2020. 7. 29. 21:57
forEach 모든 요소를 순회 break, return 지원 안함 let arr = ['a', 'b', 'c']; arr.forEach((currentValue, index, array) => { console.log(currentValue); // result : 'a' 'b' 'c' console.log(index); //result : 0 1 2 console.log(array); //result : ['a', 'b', 'c'] ['a', 'b', 'c'] ['a', 'b', 'c'] }) for of es6에서 추가된 문법 반복 가능한 객체(Array, Map, Set, String ...)를 반복 하는 기능 수행 객체의 요소(Data)를 순회하기 위한 구문 단점 인덱스가 문자로 반환됨 let ..
-
모듈(Module)이란?Software Engineering 2020. 7. 26. 20:34
모듈화를 통해 분리된 시스템의 각 기능들로 서브루틴, 서브시스템, 소프트웨어 내의 프로그램, 작업 단위 등과 같은 의미로 사용 특징 모듈은 단독으로 컴파일 가능하며 재사용 할 수 있음 모듈의 기능적 독립성은 소프트웨어를 구성하는 각 모듈의 기능이 서로 독림됨을 의미하는 것으로 모듈이 하나의 기능만을 수행하고 다른 모듈과의 과도한 상호작용을 배제함으로써 이루어짐 독립성이 높은 모듈일수록 모듈을 수정하더라도 다른 모듈들에게는 영향을 미치지 않고 오류가 발생해도 쉽게 해결 가능 모듈의 독립성은 결합도와 응집도에 의해 측정되며 독립성을 높이려면 결합도는 약하게, 응집도는 강하게, 모듈의 크기는 작게 만들어야함 결합도(Coupling) 모듈 간에 상호 의존하는 정도 또는 두 모듈 사이의 연관 관계를 의미 결합도가..
-
[DB] 파티션 (Partition)DB 2020. 7. 19. 21:47
대용량의 테이블이나 인덱스를 작은 논리적 단위인 파티션으로 나누는 것 대용량 DB의 경우 중요한 몇 개의 테이블에만 집중되어 데이터가 증가되므로, 이런 테이블들을 작은 단위로 나눠 분산시키면 성능 저하를 방지할 뿐만 아니라 데이터 관리도 쉬워짐 테이블이나 인덱스를 파티셔닝 하면 파티션키 또는 인덱스키에 따라 물리적으로 별도의 공간에 데이터가 저장됨 데이터 처리는 테이블 단위로 이루어지고 데이터 저장은 파티션별로 수행됨 장점 데이터 접근 시 액세스 범위를 줄여 쿼리 성능 향상 파티션별로 데이터가 분산되어 저장되므로 디스크의 성능이 향상 파티션별로 백업 및 복구를 수행하므로 속도가 빠름 시스템 장애 시 데이터 손상을 최소화 파티션 단위로 입, 출력을 분산시킴 단점 하나의 테이블을 세분화하여 관리하므로 세심한..
-
[DB] 뷰 (View)DB 2020. 7. 15. 22:07
사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블 저장장치 내에 물리적으로 존재하지 않음 특징 기본 테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같음 가상 테이블이기 때문에 물리적으로 구현되어 있지 않음 데이터의 논리적 독립성을 제공할 수 있음 필요한 데이터만 뷰로 정의해서 보여주기 때문에 데이터를 안전하게 보호 기본 테이블의 기본키를 포함한 속성 집합으로 뷰를 구성해야 삽입, 삭제, 갱신 연산 가능 정의된 뷰는 다른 뷰의 기초가 될 수 있음 정의된 기본 테이블이나 정의의 기초가된 뷰를 삭제하면 뷰가 삭제됨 장점 논리적 데이터 독립성을 제공 동일 데이터에 대해 동시에..