School
[ Web Hacking ] - SQL Injection
SQL SQL은 RDBMS의 데이터를 정의하고 질의, 수정등을 하기 위해 고안된 언어입니다. SQL은 구조화된 형태를 가지는 언어로 웹 어플리케이션이 DBMS와 상호작용할 때 사용됩니다. SQL은 사용 목적과 행위에 따라 다양한 구조가 존재하며 대표적으로 아래와 같이 구분됩니다. DDL 데이터를 정의하기 위한 언어입니다. 데이터를 저장하기 위한 스키마, 데이터베이스의 생성/수정/삭제 등의 행위를 수행합니다. DML 데이터를 조작하기 위한 언어입니다. 실제 데이터베이스 내에 존재하는 데이터에 대해 조회/저장/삭제 등의 행위를 수행합니다. DCL 데이터베이스의 접근 권한 등의 설정을 하기 위한 언어입니다. 데이터베이스 내에 이용자의 권한을 부여하기 위한 GRANT와 권한을 박탈하는 REVOKE등이 대표적입니..
Data Structure - Sorting ( Several Keys && Radix Sort && External Sort )
MSD vs LSD 모든 예제는 A deck of card에서 시작해 보도록 하겠습니다. 이 카드를 순서대로 정렬하는데 쓰이는 정렬에는 2가지 방법이 있습니다. (Key -> (기준이 되는) 가 여러개) Most-significat-digit-first(MSD) sort입니다. 이는 K1에 대해서 먼저 정렬하고 -> K2에 대해서 정렬을 하는 방법입니다. unordered list (170, 45, 65, 60, 802, 4, 2, 66) [045, 065, 060, 004, 002, 066], [170], [802] [004, 002], [045], [065, 060, 066], [170], [802] 002 004 045 060 065 066 170 802 < LSD sort ..
Data Structure - Sorting ( Heap Sort )
Heap Sort 최대 힙 트리나 최소 힙 트리를 구성해 정렬을 하는 방법입니다. 내림차순 정렬을 위해서는 최대 힙을 구성하고 오름차순 정렬을 위해서는 최소 힙을 구성하면 됩니다. 과정 정렬해야 할 n개의 요소들로 최대 힙(완전 이진 트리 형태)를 만듭니다. 그 다음에 한 번에 하나씩 요소를 힙에서 꺼내서 배열의 뒤부터 저장하면 됩니다. 삭제되는 요소들(최댓값부터 삭제)는 값이 감소되는 순서로 정렬되게 됩니다. max Heap을 삭제하고 추가하는 과정은 이미 안다고 가정하고 코드를 바로 짜 보도록 하겠습니다. 아래 코드는 Max Heap을 구현한 다음에 최댓값 부터 pop해 가면서 배열의 뒷 쪽 부터 삽입해 가는 코드라고 보시면 됩니다. /heap_sort.c #include #include #inclu..
Data Structure - Sorting ( Merge Sort )
How Fast Can We Sort key에 의존한 comparisons와 interchanges가 있는 한 우리는 O(nlogn)보다 빠른 sorting algorithm을 만들 수 없습니다. 다음과 같이 decision tree를 그려서 input sequence R1, R2, R3에서 나올 수 있는 경우 의 수를 찾아보니 3!개가 나옵니다. Theorm : Any decision tree that sorts n distinct elements has a height of at least log2(n!) + 1 우리가 n개의 원소를 정렬한다고 했을 때, 여기에서는 위에서 본 것처럼 n!개의 가능한 결과들이 있습니다. -> n1개의 leaft nodes가 존재하기 떄문 그리고 binary tree는 ..