본문 바로가기

분류 전체보기

[DB]JDBC 기초 ODBC(Open DataBase Connectivity)란 데이터베이스에 접근하기 위한 표준 규격이다. api를 통해 다양한 데이터베이스에 접근할 수 있다. 그리고 자바에서 데이터베이스에 접근하기 위해 쓰이는 api를 JDBC(Java Database Connectivity)라 하며, api는 JDBC driver로 구현된다. 이를 통해 자바에서 데이터베이스에 접근할 수 있다. JDBC는 다음과 같은 과정을 통해 작업이 이루어진다. jdbc driver를 메모리에 로드 driver manager를 통해 connection 객체를 생성하여 DB에 연결 connection 객체로 prepared statement 객체를 생성하여 sql문 실행 sql문은 2가지 방법으로 실행되며, 각각 다음과 같다. st... 더보기
JSP/Servlet 기초 JSP/Servlet 기초 기초 개념 WS(Web Server): 클라이언트로부터 HTTP 요청을 받아들이고, 리소스를 반환하는 프로그램 또는 컴퓨터를 서버라 한다. 동적인 컨텐츠는 처리하기 어렵다. 때문에 정적인 컨텐츠를 전달해주는 역할을 하며, 동적인 컨텐츠는 WAS에게 요청하는 식으로 쓰인다. WAS(Web Application Server): web server와 비슷하지만, 비즈니스 로직까지 처리할 수 있어 동적인 웹 컨텐츠를 제공할 수 있다. 동적인 웹 컨텐츠는 servlet을 통해 생성된다. JSP(Java Server Page 또는 Jakarta Server Page): JSP는 HTML 내에 자바 코드를 삽입하여 web server에서 동적으로 웹 페이지를 생성하여 사용자에게 제공할 수 .. 더보기
[컴퓨터 과학]고속 푸리에 변환 자바 구현 이산 푸리에 변환(Discrete Fourier Transform, DFT)이란 이산적인 입력에 대한 푸리에 변환이다. 정의 DFT는 이산적인 복소수 값 $x_0,x_2,\cdots,x_{N-1}$들을 $X_0,\cdots,X_{N-1}$로 변환해주며, 다음과 같이 정의된다. (여기서 $a_i$는 $a[i]$와 같이 표기하겠다.) $$ X\left[k\right]=\sum_{n=0}^{N-1}x[n]e^{-2\pi ikn/N} $$ 이를 그대로 자바를 통해 구현하면 다음과 같다. static Complex[] dft(Complex[] input) { Complex[] output = new Complex[input.length]; for (int i = 0; i < output.length; i++) {.. 더보기
[이산수학]정렬 알고리즘의 한계 정렬 알고리즘은 데이터를 특정 순서로 나열하는 알고리즘이다. 여러 가지 정렬 알고리즘이 존재하며, 각 알고리즘은 서로 다른 특징과 성능을 가지고 있다. 하지만 모든 (비교 기반) 정렬 알고리즘은 절대로 $\mathcal{O}(n\log n)$보다 좋은 성능을 낼 수 없다. 증명 우선 데이터들이 총 $n$개가 주어진다고 하자. 그렇다면 만들 수 있는 $n$-튜플의 경우의 수는 총 $n!$개이다. 이 가운데 단 하나만이 올바른 순서쌍이 될 것이다. ($(a_1,\cdots,a_n)$에 대해, $1\le i\le j\le n\implies a_i\le a_j$인 튜플) 결정 트리의 최소 높이가 $\log n!=\sum_{k=1}^n\log k$이므로 다음 관계식을 만족한다. $$\int_1^{n-1}\log .. 더보기
[대수학]모노이드 범주 모노이드 $(M,\cdot)$는 대수학에서 다음 성질을 만족하는 대수적 구조다. $\forall a,b,c\in M$에 대해 $(a\cdot b)\cdot c=a\cdot (b\cdot c)$ $\forall a\in M,\ \exists e\in M \quad s.t. \quad e\cdot a=a\cdot e=a$ 동형사상 아래에서 위 법칙이 성립하는 범주를 모노이드 범주라 하며, $(\mathcal{C},\otimes,I,\alpha,\lambda,\rho)$로 구성된다. 이들은 각각 다음과 같다. 범주 $\mathcal{C}$ 함자 $\otimes : \mathcal{C}\times \mathcal{C}\rightarrow \mathcal{C}$ 대상 $I\in ob(\mathcal{C})$이를 .. 더보기
[대수학]범주론(Category theory) 범주론 범주론은 범주를 통해 연구하는 분야다. 범주는 현대수학에서 거의 모든 분야에서 나타나며, 수학의 여러 분야를 공통적인 언어로 다룰 수 있게 한다. 이외에도 범주론은 컴퓨터 과학에서는 함수형 프로그래밍 등을 연구할 때 쓰이거나 소프트웨어 공학에서는 디자인 패턴의 엄밀화 등 여러 분야에서도 쓰인다. 범주 범주 $\mathcal{C}$는 대상들의 모임 $\mathrm{ob}(\mathcal{C})$와 사상들의 모임 $\mathrm{hom}(\mathcal{C})=\bigcup_{X,Y\in ob(\mathcal{C})}\mathrm{hom}(X,Y)$으로 구성된다. 이 구성요소들은 다음을 만족한다. 항등원의 존재성: $\forall X\in ob(\mathcal{C}),\ \exists \mathrm{.. 더보기
[컴퓨터 과학]양자 컴퓨터와 양자 알고리즘 고전 컴퓨터와 양자 컴퓨터 현대에서 대중적으로 사용하는 고전 컴퓨터는 반도체와 수학의 이진법을 활용하여 논리 연산 및 저장 등을 수행하는 오토마톤이다. 하나의 비트는 1 또는 0을 값으로 갖는다. 하지만 양자 컴퓨터는 양자역학적 현상인 양자 중첩과 양자 얽힘 등을 활용하여 자료를 처리하는 계산 기계다. 양자 컴퓨터의 비트는 큐비트라고 하며, 큐비트는 1과 0이 중첩된 값을 지닌다. 그리고 이를 관측을 통해 큐비트의 값을 고전적 비트로 매핑시킨다. 수학적 원리 비트는 기본적으로 기호들 $\Sigma = \{1,0\}$위에 정의된 형식 체계로 볼 수 있다. 하지만 큐비트는 1과 0이 중첩된 값을 갖기 때문에 비트와는 다른 체계를 갖는다. 큐비트는 브라-켓 표기법을 사용하여 표기한다. 켓은 열벡터를 의미하며 .. 더보기
[대수학]벡터 공간 벡터 공간 벡터 공간 $(V,+, \cdot)$은 체 $K$에 대한 가군으로 정의된다. 즉, 다음을 만족시키는 대수 구조를 벡터 공간이라 한다. $(V, +)$는 아벨군을 이룬다. 즉, 다음 성질들이 성립한다. 임의의 $u, v, w\in V$에 대해, $(u+v)+w=u+(v+w)$ 임의의 $u, v\in V$에 대해, $u+v=v+u$ 임의의 $u\in V$에 대해, $u+e=u$인 항등원 $e\in V$가 존재한다. 임의의 $u\in V$에 대해, $u+(-u)=e$인 역원 $-u\in V$가 존재한다. $(V,+,\cdot)$은 K의 가군을 이룬다. 즉, 다음 성질들이 성립한다. 임의의 $a,b\in K$ 및 $v\in V$에 대해, $a\cdot (b\cdot v)=(ab)\cdot v$ 임의의.. 더보기