SQL 데이터베이스 시스템에서 자료를 처리하는 용도로 사용되는 언어. 목적에 따라서 DDL(데이터 정의어 - 테이블이나 관계 생성), DML(데이터 조작어 - 테이블의 데이터 CRUD), DCL(데이터 제어어 - 데이터의 사용 권한 관리)로 구분된다. DML (데이터 조작어) 테이블에 데이터를 검색/삽입/수정/삭제하는데 사용되며, select, insert, delete, update문 등이 있다. - SELECT : 테이블에 데이터를 검색하여 출력하는 목적으로 사용되는 쿼리문. 1. ALL | DISTINCT : ALL은 중복허용을 의미하고 (default값), DISTINCT는 중복을 제거하고 집계하는 것을 의미한다. ex) select distinct * from Book; 2. WHERE 절에는 ..
키 키: 특정 튜플을 식별할 때 사용하는 속성(의 집합) 슈퍼키: 유일성을 가진 속성(의 집합) 후보키: 유일성&최소성을 가진 속성(의 집합) 기본키(pk): 후보키 중 대표로 삼는 하나의 키 대리키(pk): DBMS가 임의로 생성하여 사용하는 기본키 외래키(fk): 다른 릴레이션의 기본키를 참조하는 속성 관계대수 1. 셀렉션: 릴레이션에서 조건에 맞는 튜플을 추출하는 연산 2. 프로젝션: 릴레이션의 속성을 추출하기 위한 연산 3. 합집합: 속성이 동일한 두 릴레이션을 합침. 동일튜플 존재시 하나만 표시한다. 4. 교집합: 합병가능한 두 릴레이션이 공통으로 가지고 있는 튜플을 반환 5. 차집합: 첫번째 릴레이션에는 속하고 두번째 릴레이션에는 속하지 않는 튜플을 반환 6. 카티전 프로덕트: 두 릴레이션의 ..
개요다익스트라(Dijkstra) 알고리즘은 BFS와 Dynamic Programming을 활용한 최단경로 검색 알고리즘이다. 다익스트라 알고리즘은 가중치가 존재하는 그래프의 하나의 정점에서 다른 정점들로 가는 최단 경로를 알려준다. 만약에 가중치가 존재하지 않는다면 단순 BFS를 통해서 최단 경로를 구할 수 있지만, 가중치가 존재한다면 Dijkstra를 사용할 수 있다. 다익스트라는 일반적으로 인접 행렬(O(N^2))이나 우선순위 큐(O(ElogV), E:edge, V:vertex)를 사용하여 구현한다. 시작 전에 간단하게 설명하면, 다익스트라 알고리즘은 방문하지 않은 노드들 중에서 시작점으로부터 최소거리를 갖는 노드를 선택하여 노드들의 거리를 갱신하는 것을 반복하는 알고리즘이다. 일단 시작 노..
예전에 풀고 정리했었는데 까먹어서 다시 정리해봄. 분명히 이해하고 넘어갔는데 왜 지금 보니깐 이해가 안되지?? BOJ 12865) 평범한 배낭 물건을 쪼개어 가져갈 수 있는 fraction knapsack문제에서는 무게당 가치(v/w)가 높은 순으로 가져가면 된다. 하지만 위와 같은 0-1 knapsack 문제는 greedy한 방법으로는 풀 수 없다. for(int i = 1; i
자바스크립트는 자바를 이용한 서버 사이드 스크립트 언어이다. 따라서 스크립트 태그 내의 자바 소스코드를 컴파일하고, 나머지는 html로 간주하여 처리한다. 클라이언트가 JSP 요청을 하면, 서버에서 JSP 컨테이너를 통해 전달받은 jsp파일을 서블릿을 통해서 java파일로 변환하고 컴파일해서 클래스 파일을 생성한다. 이 클래스 파일은 메모리에 로딩 하여 실행된 이후, 그 결과는 html형태로 가공되어 응답되며, 웹 브라우저는 그것을 클라이언트에 표시한다. 스크립트 태그 - JSP 페이지에서 자바 코드를 삽입할 수 있는 부분. JSP컨테이너는 스크립트 태그 부분을 제외한 나머지 부분을 html등의 일반 텍스트로 간주 - 과 같이 사용한다. 선언문 : 자바 변수나 메소드를 정의할 때 사용한다. 스크립틀릿 :..
실제 데이터가 하드디스크에 저장되는 데이터베이스부터, 데이터 모델과 DBMS까지를 데이터베이스 시스템이라고 부른다. 이러한 데이터베이스 시스템 조작을 위해서 SQL문이 사용된다. 데이터베이스: 데이터가 구조적으로 통합되어 하드디스크에 저장된 형태 데이터베이스 관리 시스템(DBMS): 데이터를 관리하는 소프트웨어 프로그램. 사용자와 db 사이에서 둘을 연결한다. 데이터 모델: 데이터를 저장하는 이론적 방법. 데이터, 연산자, 무결성 제약조건을 요소로 갖는다. 데이터베이스 시스템: DB, DBMS, 데이터 모델로 구성된 시스템 - SQL의 종류 데이터 정의어(테이블 구조 정의): create, alter, ... 데이터 조작어(데이터 조작): select, insert, delete, update, ... ..
//init.c 일부 for(;;){ printf(1, "init: starting sh\n"); pid = fork(); if(pid = 0 && wpid != pid) printf(1, "zombie!\n"); } init.c는 xv6에서 가장 먼저 실행되는 user-level 프로그램이다. make-qemu를 통해서 xv6를 실행하면 init:starting sh라는 메세지와 함께 쉘이 실행된다. init.c에는 무한루프가 존재하고, ..
0. 쉘 명령어(커널명령어) 추가 Makefile의 UPROG와 EXTRA부분에 다음과 같이 추가해준다. 1) UPROG=\ ... _new\ 2) EXTRA=\ umalloc.c new.c\ 1. 파일 추가 README file in Xv6 is a generic file too. Searching for occurrences of README in the MakeFile and adding your required file will be sufficient. Suppose new.txt is the file you want to add. Parts of the MakeFile to be changed are: 1) fs.img: mkfs README new.txt $(UPROGS) ./mkfs fs...
저번에 HTML 페이지를 이용한 에러 처리를 공부했다. https://eckrin.tistory.com/entry/Spring-MVC-%EC%8A%A4%ED%94%84%EB%A7%81-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC [Spring MVC] 스프링 HTTP 에러 처리 기본 예외처리 자바의 경우, 예외가 발생했을 때 그 예외를 별도로 처리해주지 않는다면 해당 메소드를 호출한 상위 스택에 예외를 던지고, main에 이르러서까지 예외가 처리되지 않는다면 정 eckrin.tistory.com API 예외처리 그런데 앱 서버를 만드는 등 HTML을 사용할 수 없고 API를 사용해야 하는 경우에는 어떻게 해결할 수 있을까? 이 경우 HTML 오류 페이지를 만드는 단순한 방법으로는 ..
기본 예외처리 자바의 경우, 예외가 발생했을 때 그 예외를 별도로 처리해주지 않는다면 해당 메소드를 호출한 상위 스택에 예외를 던지고, main에 이르러서까지 예외가 처리되지 않는다면 정보를 출력하면서 main 쓰레드가 종료된다. 비슷하게 웹 애플리케이션의 경우 사용자 요청별로 별도의 쓰레드가 할당되어 서블릿 컨테이너 안에서 실행되는데, 애플리케이션에서 발생한 에러를 서블릿 안에서 처리하지 못하고 바깥으로 전달되면 톰캣과 같은 WAS(Web Application Server)까지 예외가 전달된다. 그러면 WAS는 서버에서 처리할 수 없는 오류가 발생한 것으로 생각해서 HTTP 500 error를 발생시킨다. 커스텀 서블릿 오류 화면 설정 설정 이전에 에러시 Whitelabel 화면을 띄워주지 않도록 에러..
서블릿 필터 일반적으로 웹 서비스에서, 로그인을 해야 들어갈 수 있는 페이지들이 존재한다. 서블릿 필터가 없다면 이러한 기능을 위해서 각각의 컨트롤러에서 클라이언트가 알맞은 권한을 지녔는지 확인하고, 기능 추가시마다 별도로 필터를 추가해주어야 한다. 서블릿 필터는 클라이언트로부터 서버로 요청이 들어오면 서블릿(스프링이라면 Dispatcher Servlet으로 이해) 실행 직전에 필터링해준다. 권한O 사용자 : HTTP 요청 -> 서블릿 컨테이너 -> 필터 -> 서블릿 -> 컨트롤러 권한X 사용자 : HTTP 요청 -> 서블릿 컨테이너 -> 필터(적절하지 않은 요청이라 판단, 서블릿 호출X) 이러한 필터는 하나 이상으로 구성될 수도 있다. 필터 사용필터를 사용하려면 Filter 인터페이스를 구현하고, 설..
순수한 스프링 시큐리티에 jwt를 사용하여 클라이언트-서버 통신에 권한 인가(Authorization) 기능을 추가해보자. 먼저 스프링 시큐리티는 보안을 담당하는 프레임워크로, 세션 체크, auth redirect(로그인 완료시 다음화면 전환)과 같은 기능을 수행해준다. 의존성 추가 가장 먼저 jwt토큰을 만들어주는 라이브러리를 gradle에 추가해주자. //시큐리티 implementation("org.springframework.boot:spring-boot-starter-security") //jwt //implementation("io.jsonwebtoken:jjwt:0.9.1") implementation("io.jsonwebtoken:jjwt-api:0.11.5") implementation("..