바이너리 옵션의 기초지식

마지막 업데이트: 2022년 6월 10일 | 0개 댓글
  • 네이버 블로그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 트위터 공유하기
  • 카카오스토리 공유하기
+2

[금융수학] 1. 사회과학으로서의 금융수학(1)

금융수학은 경제학 또는 경영학의 사회과학과 추상적인 수학의 결합이다. 금융수학은 본질적으로 사회과학적인 목표와 방법론을 갖고 있어서, 사회 현상에 대해 사후 계량적 분석을 할 수 있어도 미리 앞으로 일어날 일에 대한 정량적(대상의 분량을 측정해 정하는 것 )이고 정성적(성질을 밝힘)인 예측을 할 수 있는 능력은 자연과학에 비해 많이 떨어지고, 공학적 특징인 작은 오차의 한계 안에서 도구를 이용해 물질적 환경을 제어할 수 있는 특징도 갖추기 어렵다.

순수수학에 대비한 응용수학의 특징

1. 사용하기 쉽다. 자연과학, 공학, 사회과학 분야에서 수학을 사용하는 사람들은 수학을 어느 정도만 익혀서 자신들의 문제를 해결하기 때문에 수학 이론이 사용하기 편해야 한다. 미분을 나타내는데 \(\displaystyle\frac,\,f'(x)\) 또는 \(\dot\)(주로 물리학에서 사용)등의 다른 기호들을 사용한다.

금융수학은 수학, 물리, 공학, 경영, 경제 전문가들이 이룩한 종합적 학문이여서 기호의 표기법이 서로 충돌하는 경우가 있다.

(예: 델타(\(\Delta\))는 헤지(hedge)할 때 필요한 주식의 수(share)이므로 미적분에서 증분을 \(\delta\)(혼동의 여지가 없을 때는 \(d\)로 나타내겠다)로 나타낸다.)

2. 응용분야에서는 이론적으로 완벽한 이해를 못해도 어느 정도까지 수학적 사실을 이용할 수 있어야 한다.

-푸리에 급수는 수학적 엄밀성 보다 직관적 이해가 더 중요하다.

-확률론을 측도론적 공리 체계로 이해할 필요가 없다.

3. 수학의 어느 이론 체계가 어느 한 응용분야에서 자리를 잡으려면 바로 그 이론 체계의 연구결과가 아니면 도저히 해결하기 어려운 중요한 응용 예가 있어야 한다.(예: 대수학에서의 암호, 오류정정 이론, 금융수학에서의 블랙-숄즈 방정식)

4. 이미 사용되고 있는 수학적 성과 및 기술과의 호환성이 있어야 한다(새 버전의 소프트웨어는 이전 버전과 호환되어야 한다).

사회과학에서 정량적 연구를 하기 위해서는 모델에 포함된 인 수(parameter)들의 값을 구해야 하는데 사회과학에서는 어려운 일이다. 주로 통계적 조사에 의존할 수 밖에 없는 경우 비용과 소요시간을 고려할 때 작은 오차 범위 안에서 인수를 추정하는 것은 매우 어렵다. 반면 자연과학이나 공학에서는 이런 경우가 드물다. 더욱이 사회과학에서 모델의 예측능력이나 실제 현상과 더 부합하게 하려면 인수들의 개수를 자연과학 또는 공학의 수준보다 더 많이 필요하다. 이러한 점 때문에 사회과학에 수학을 도입하기 어렵다. 그럼에도 바이너리 옵션의 기초지식 불구하고 추상적 수학이 사회과학에 응용되는데 대표적인 예가 옵션 가격이론이다.

리스크는 사전적 의미로는 위험(danger) 이나 여기서는 손실(loss)에 노출될 가능성을 뜻한다. 리스크는 미래에 대한 불확실성(uncertainty)과 위험에 대한 노출성(exposure)이다.

리스크가 적은 경우를 선호하는 것을 리스크 회피적(risk averse)이다. 그 반대는 리스크 추구이고 다른 조건이 모두 같을 때 리스크가 큰 쪽을 좋아함을 뜻한다. 리스크 회피와 리스크 추구 사이에 리스크 중립(risk neutrality)이고 이것은 투자자의 결정이 리스크의 많고 적음에 의존하지 않음을 뜻하고, 옵션 가격결정에서 중요한 역할을 한다.

*헤지펀드는 고수익을 추구하기 위해 높은 리스크를 무릎쓰고 투자를 한다.

은행에 돈을 예금하면 이자를 받고, 대출을 받으면 이자를 포함해서 갚아야 한다. 시간의 진행은 불확실성을 초래하고 빌려준 돈을 떼이는(채무불이행) 위험이 존재한다.

정부발행 국채의 금리와 일반 회사가 발행한 사채의 금리는 다른데 채권의 금리는 신용도에 따라 결정된다. 정부발행 국채는 채무불이행의 위험이 없는 대신 금리가 낮고, 신용도가 낮은 기관의 채권의 금리는 높다.

*금융수학에서 정부발행 국채에는 리스크가 전무하다(risk free)고 본다.

차익거래(arbitrage )는 어떤 상품의 가격이 바이너리 옵션의 기초지식 시장 사이에 서로 다른 경우, 가격이 싼 시장에서 매입, 비싼 시장에서 매각하여 매입 차익을 얻는 행위이다. 이때 두 시장은 공간적, 시간적으로 다를 수 있다.

금융수학에서는 시장 참여자는 시장의 모든 정보를 갖고, 합리적으로 행동한다고 가정한다. 따라서 차익거래가 존재할 수 없다고 가정한다(세상에는 공짜점심이 없다). 차익거래가 없다는 것은 금융수학의 기본적 공리들 중 하나이다.

옵션가격이론에서 만기일의 옵션의 수익함수가 다른 자산들로 구성된 포트폴리오로 복제될 수 있다면 '차익거래불가 '의 원칙에 따라 옵션의 현재가격은 포트폴리오와 현금 가격과 같음을 뜻한다.

*위험을 감수하지 않고 높은 수익을 얻을 수 없다.

모든 정보는 이미 주가에 반영되어 있고, 주가 곡선의 경향을 연구해도 미래의 주가를 예측할 수 없다.

*떠도는 소문, 거짓 정보, 투자자들의 비이성적 심리상태, 비공개 내부자 정보 등의 영향으로 주가가 움직일 수 있다고 가정하지 않는다 .

-바슐리에: 주가는 랜덤워크(random walk )를 하기 때문에 예측할 수 없다.

-망델브로: 이러한 예측불가능성은 금융시장이 경제학적 법칙을 잘 따르기 때문에 발생한다.

망델브로의 주장은 가격변동의 예측이 가능하고 이러한 정보가 공유된다면 수익을 추구하는 자들이 거래를 통해 이득을 취하게 되므로 더 이상 이익을 추구하기에 필요한 예측가능성의 여지를 남기지 않는다는 것이다.

포트폴리오는 보통 사진이나 디자인, 그림을 모아놓은 화첩으로 알려져 있지만 금융에서는 한 개인 또는 기관이 보유한 각종 금융자산의 집합을 뜻한다.

포트폴리오 운용은 채권, 주식 같은 자산을 안정적으로 증식시키려면 어떻게 하는지 연구하는 것이다.

*영어 격언에 "모든 계란을 한 바구니에 담지 마라(Don't put all your eggs in one basket ) "이라는 말이 있는데 금융에서 한 가지 자산에 모든 것을 투자하면 손실을 입을 가능성이 있기 때문에 여러 종류의 자산에 분산 투자하라는 뜻이다.

시간 \(t=0\)에서 1의 가치를 갖는 은행 예금(bond)이 시간 \(t\)에서 \(B_\)의 값을 갖고, 어느 주식이 시간 \(t\)에 한 주(share)에 \(S_\)의 값을 갖는다고 하자. 그러면 시간 \(t=0\)일 때 \(a\)의 가치를 갖는 예금증서와 \(b\)주의 주식으로 이루어진 포트폴리오는 중간에 자산을 매매하지 않는다면 그 가치는 다음과 같다.$$aB_+bS_$$여기서 \(a\)와 \(b\)는 음의 값을 가질 수 있고, 이 경우는 타인으로부터 예금 또는 주식을 바이너리 옵션의 기초지식 빌려서(차입) 포트폴리오를 구성하는 것이다.

파생금융상품 중 대표적인것은 옵션(option)이고, 이것은 두 사람 사이의 계약으로 옵션 소지자는 상대방인 발행자에게 계약서에 명시한 일을 시킬 수 있는 권리가 있고, 옵션 발행자는 계약서에 명시한 일을 해야 하는 의무가 있다.

그 예로 주식을 미리 정한 가격과 시기에 사거나 팔 수 있는 권리에 대한 옵션이 있다.

금융에서 이러한 계약은 금전적 가치가 있어서 가치가 결정되고 발행자는 옵션을 팔 수 있다. 이러한 옵션은 주식, 채권, 외국환등의 다른 기초자산에 의해 가격이 정해지므로 파생상품(derivative)이라고 한다.

옵션을 행사(exercise)할 수 있는 마지막 날짜를 만기일(maturity date)이라 하고, 옵션은 거래소(exchange)에서 매매가 가능하다.

옵션행사에는 아메리칸(American), 유러피언(European)옵션이 있는데 아메리칸 옵션은 만기일 이전에 권리를 행사할 수 있으나 유러피언 옵션은 만기일에만 권리를 행사할 수 있다.

콜옵션(call option)은 소지자에게 계약에 정해진 가격(strike price, 행사가격)에 특정 기초자산을 살 수 있는 권리를 부여하고, 풋옵션(put option)은 소지자에게 팔 수 있는 권리를 부여한다. 수익함수(payoff function)는 옵션의 가격을 고려하지 않은 옵션의 보유자 또는 매도자의 손익이고 유러피언 콜옵션과 풋옵션의 수익함수는 각각 다음과 같이 정의할 수 있다.$$콜옵션:\,\max\-K,\,0\>,\,풋옵션:\,\max\,\,0\>$$ 옵션의 가격을 나타내는 함수들의 집합은 벡터공간이기 때문에 몇 가지 수익함수들의 선형결합으로 새로운 옵션을 만들 수 있다.

간단한 형태의 옵션을 바닐라(vanilla)옵션, 복잡한 형태의 옵션을 이색(exotic)옵션이라고 한다.

-버뮤다(Bermuda)옵션은 만기전에 미리 정한 날짜 중에서 골라 행사할 수 있는 옵션이다.

*버뮤다 제도는 아메리카 대륙과 유럽의 중간에 위치해 있고, 이 옵션의 성격이 아메리칸 옵션과 유러피언 옵션의 중간이기 때문에 '버뮤다'라는 이름이 붙었다.

-바이너리(binary)(또는 디지털)옵션은 만기일까지 자산 가치가 미리 정해진 범위에 있을 때

cash-or-nothing binary옵션: 미리 고정된 액수를 만기일에 지급한다.

asset-or-nothing binary옵션: 기초 자산의 가격을 지불하고, 그렇지 않고 자산 가치가 정해진 범위 바깥에 있으면 아무것도 지불하지 않는다.

유러피언 asset-or-nothing binary옵션: 기초 자산의 가격이 만기일에 행사가격보다 높으면 기초 자산의 가격을 지불한다.

-배리어(barrier)옵션은 한 개 이상의 가격으로 울타리(barrier)를 만들어 자산 가격이 옵션의 유효 기간동안 이 울타리 안에 계속 머무르는지 아니면 울타리를 벗어나는지에 따라 옵션의 유효성이 결정된다.

노크아웃(knock-out)옵션인 경우, 가격이 정해진 범위를 벗어나면 무효화되고, 노크인(knock-in)옵션인 경우 가격이 주어진 수준에 도달해야 만기일에 유효화된다.

-바스켓(basket)옵션은 다양한 기초상품의 집합으로 포트폴리오를 구성한 것으로 그 총 가치변동에 따라 가격이 결정되고, 외국환 리스크에 노출되는 위험을 헤지하는데 사용한다.

-아시안(Asian)옵션은 가격이 만기일 \(T\)까지의 날짜 중에서 미리 정한 날들 \(0=T\)에 얻어진 기초 상품가격 \(S_,\. \,S_\)의 평균에 의존한다. 이때 평균은 산술평균 \(\displaystyle\frac\) 또는 기하평균 \((S_\cdots S_)\frac\)으로 주어진다.

아시안 옵션은 광물가격이나 원유가격 또는 환율변동에 의한 리스크를 회피하는데 이용된다.

-룩백(lookback)옵션은 만기일까지의 기초 자산가격의 최고값 또는 최저값에 의해 가치가 결정된다. 룩백이라는 이름은 만기가 된 후 기초자산의 가격을 뒤돌아보고(look back) 옵션을 행사한다는 뜻이다. 일정 기간동안 기초자산 가격 중 가장 낮았던 가격으로 기초자산을 매입하거나 기초자산 가격 중 가장 높았던 가격으로 매도하고자 하는 경우에 이용되고, 가격이 상대적으로 높으며 투기 목적으로 이용된다.

금융회사에서는 다음의 세 가지 리스크들을 염두한다.

1. 신용 리스크(credit risk, 채무불이행의 위험 ) , 2. 시장 리스크(market risk, 자산 가격의 급격한 변동에 의한 위험), 3. 운영 리스크(operational risk, 전산망의 오작동 또는 직원의 부정 등에 의한 위험 )

리스크 관리를 위해 수학적으로 VaR(Value at Risk)라는 값을 사용하고, 이것은 재무 위험의 정도를 측정하는 것으로서 주어진 기간 동안 신뢰 수준 아래 발생할 수 있는 최대 손실액이다.

*워렌버핏은 파생상품을 '대량살상 금융무기'라고 했는데 그 이유는 헤지의 수단이 아닌 투기의 수단으로 파생상품을 이용하면 큰 위기가 닥칠 수 있기 때문이다.

금융수학에서 브라운운동은 주가 등의 금융자산의 가치 변동에 대한 모델에서 이용된다. 주가의 움직임보다 주가 변동폭의 상대적 크기가 브라운 운동을 따른다고 가정한다.

시점 \(t\)에서의 주가를 \(S_\)라고 하자. 매우 짧은 시간 \(dt>0\)동안 주가의 움직임을 표현하는 기본 모델로 기하 브라운 운동(geometric Brownian motion)을 사용한다. 기하 브라운 운동은 적당한 상수 \(\mu\)와 \(\sigma\)에 대해 다음과 같고$$\frac-S_>=\mu dt+\sigma\sqrtX_$$여기서 \(X_\)는 시간 \(t\)에서의 예측불가능한 확률적(random, stochastic) 움직임을 나타내는 부분으로서 각 시점 \(t\)에서의 \(X_\)의 값들은 표준정규분포를 따르고 서로 독립, \(\sqrtX_\)는 시점 \(t\)에서 \(t+dt\)까지의 브라운 운동의 증분이다. 이것은 시간 \(dt\)동안 변화의 기댓값은 0, 분산은 \(dt\)임을 뜻한다. 여기서 \(\sigma\)를 변동성(volatility)이라고 하고 위 식을 다음과 같이 나타낼 수 있다.$$\begin\ln\frac>&=\ln(1+\mu dt+\sigma\sqrtX_)\\&\approx\mu dt+\sigma\sqrtX_-\frac(\mu dt+\sigma\sqrtX_)^\\&=\left(\mu-\frac\sigma^\right)dt+\sigma\sqrtX_\end$$여기서 \((\sqrtX_)^=dt\)이고, \(X_^\)의 기댓값이 1이기 때문이다. 따라서$$\ln\frac>\approx\left(\mu-\frac\sigma^\right)dt+\sigma\sqrtX_$$임을 알 수 있고, 실제로 모든 \(t\geq0\)에 대해 다음이 성립한다.$$\ln\frac>=\left(\mu-\frac\sigma^\right)t+\sigma\sqrtX_$$(\(dt\,\rightarrow\,t\), \(t\,\rightarrow\,0\) )

바이너리 옵션의 기초지식

※ 일본 포스팅을 번역한 자료입니다. 오역및 의역이 있을 수 있으며, 틀린 내용이 있는 경우 지적해주시면 정정하겠습니다.
Docker에서 NIVIDA GPU를 사용하는 경우 NVIDIA Container Toolkit(NVIDIA Docker)이 필요하다. 이번 포스팅에서는 왜 NVIDIA Container Toolkit이 필요한지, 어떻게 동작하고 있는지에 대해 설명할 것이다. 참고로 2021년 4월 시점 내용이니 현재는 바꼈을지도 모르니 어디까지나 참고로 하길 바란다.

왜 NVIDIA Container Toolkit(NVIDIA Docker)이 필요할까?

NVIDIA GPU는 호스트의 디바이스 파일 (/dev/nvidia0등)으로써 등록되어 있다. 또한, CUDA 라이브러리(libcuda.so등)는 호스트에 설치된 버전과 일치할 필요가 있다. 그러므로 컨테이너로부터 GPU를 이용하는 경우, 이러한 것들을 모두 호스트로부터 마운트할 필요가 있다.
그러나 디바이스명이나 라이브러리의 버전은 계속해서 변하므로 설정이 번거롭다. 마운트한 라이브러리의 사용 전에 ldconfig를 실행하여 공유 라이브러리의 갱신을 하는 등의 전처리도 필요하다.
NVIDIA Container Toolkit(NVIDIA Docker)은 컨테이너에서 NVIDIA GPU를 사용할 수 있도록, 마운트 등의 준비를 자동으로 해주는 것이다.

호스트 쪽의 NVIDIA 디바이스나 라이브러리를 마운트하기 위해, 호스트 쪽에 NVIDIA 드라이브가 설치되어 있을 필요가 있다. NVIDIA 라이브러리의 설치하는 몇 가지 방법이 있지만, cuda-drivers 패키지로 설치하는 방법이 간단하다.

마운트 내용 확인하기

Docker의 --gpus 옵션의 유무로 마운트와의 차이를 비교하면, NVIDIA Container Toolkit에 의해 어떠한 점이 바뀌는지 확인할 수 있다. 마운트된 것들은 지정된 GPU 옵션에 의해 차이가 있다. 마운트 이외에도 공유 라이브러리의 갱신을 실시하는 ldconfig의 실행 등도 자동으로 행해지고 있다.

Docker에서의 사용법

Docker에서 NVIDIA GPU를 사용하기 위해 사용하는 2가지 방법이 있다.
1. Docker의 --gpus 옵션을 사용한다.
2. Docker의 runtime에 nvidia를 사용한다.
어느 방법도 결국에는 Docker에 사용되고 있는 컨테이너 런타임 runc의 실행전에, NVIDIA Container Toolkit의 preStart Hook으로 실행되는 훅인 nvidia-container-runtime-hook에 의해 GPU가 설정된다.

Docker의 --gpus 옵션 사용하기

Docker 19.03부터 --gpus 옵션을 사용할 수 있으며, Docker 단체에서는 --gpus 옵션을 사용하는 것을 추천한다. 다음 커맨드는 Docker에서 --gpus 옵션을 사용하는 예이다.

Docker의 runtime에 nvidia 사용하기

Kubernetes는 v1.21기준으로 Docker의 --gpus 옵션에 대응하지 않는다. 그러므로 Kubernetes로 NVIDIA GPU를 사용하는 경우는 nvidia runtime을 디폴트 런타임으로 설정할 필요가 있다.
다음의 커맨드는 Docker에서 nvidia 런타임을 지정하는 예이다. 또한, 디폴트 런타임을 nvidia를 지정해둔 경우 --runtime으로 지정할 필요가 없다.

참고로 디폴트 런타임으로 지정하기 위해서는 /etc/docker/daemon.json파일을 텍스트 에디터로 연 뒤, " default-runtime": "nvidia"를 추가해주면 된다.

GPU 디바이스와 옵션의 지정

--gpus 옵션과 nvidia 런타임에서는 NVIDIA GPU 옵션을 지정하는 방법이 각각 다르다. 이러한 지정을 하지 않은 경우, GPU 디바이스 등은 마운트되지 않는다. 지정 방법의 상세는 공식 사이트 에서 확인가능하다.

바이너리 옵션의 기초지식
사용 방법 지정 방법
--gpus 옵션 --gpus 옵션의 인수
nvidia 런타임 NVIDIA_VISIBLE_DEVICES 등의 환경변수로 지정

또한, --gpus 옵션 지정시에도 내부적으로는 환경 변수가 설정된다.
지정가능한 옵션은 다음과 같다. 사용할 GPU의 열거만 필수 이다. 베이스 이미지에 NVIDIA CUDA를 지정하고 있는 등의 경우는 베이스 이미지쪽에 환경 변수 NVIDIA_VISIBLE_DEVICES=all를 지정하고 있으므로, 의식하지 않았지만 지정되어 있는 경우가 있다.

- 어떤 GPU 디바이스를 이용할 것인지를 지정
- all의 경우 전부, 0, 1, 2의 인덱스나 UUID로도 지정할 수 있다.

  • 드라이버 Capabilities

- 마운트할 드라이버의 종류를 지정한다 (예) compute, utility

- 환경변수에서의 설정만 가능 (--gpus 옵션에서는 대응하지 않는다)
또한, Kubernetes에서 이용하는 경우 GPU 열거의 지정은 리소스 리퀘스트의 nvidia.com/gpu 지정에 따라 NVIDA device plugin쪽에서 설정된다.

구조(아키텍처)

NVIDIA Container Toolkit의 구조에 대해 알아보자. Docker의 경우 NVIDIA Container Toolkit은 주로 다음의 구성요소로 구성되어 있다. 구성 요소는 위에서 부터 아래의 순서대로 의존하는 형태로 되어 있다. 이용 방법에 따라 의존하는 구성 요소가 변한다. 그러나 공식 문서의 Which package should I use then? 에서는 심플함과 과거 버전과의 호환성을 위해, 모두를 포함하고 있는 nvidia-docker2를 톱 레벨 패키지로써 이용하는 것을 추천한다.

nvidia-docker2

GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs

Build and run Docker containers leveraging NVIDIA GPUs - GitHub - NVIDIA/nvidia-docker: Build and run Docker containers leveraging NVIDIA GPUs

Docker용의 톱 레벨 패키지이다. 이 패키지를 넣으면, 아래의 컴포넌트는 의존 패키지로써 자동적으로 설치된다. NVIDIA 드라이버(예를 들어, cuda-drivers)는 별도의 설치가 필요하다.
이 패키지에는 nvida-container-runtime의 런타임 nvidia를 Docker에 추가하는 아래의 설정(/etc/docker/daemon.json)가 포함되어 있다. 이미 daemon.json 설정파일이 존재하고 있는 경우, 수동으로 설정해야할 필요가 있으므로 주의하자(dpkg의 경우는 conffiles 지정으로 되어 있다).

nvidia-container-runtime

GitHub - NVIDIA/nvidia-container-runtime: NVIDIA container runtime

NVIDIA container runtime. Contribute to NVIDIA/nvidia-container-runtime development by creating an account on GitHub.

runc를 랩한 OCI 런타임 준거의 nvidia 런타임이 포함되어 있다. Docker에 --runtime=nvidia를 붙인 경우, 이 런타임이 호출된다.
이 nvidia 런타임은 NVIDIA의 설정 처리를 실행하는 훅 nvidia-container-runtime-hook을 preStart Hook에 설정하여, runc를 실행만 하는 형태된다. 소스 코드로 200행 정도의 main.go만으로 심플하다.
nvidia-container-runtime-hook은 다음 항목의 컴포넌트 nvidia-container-toolkit이 포함된 바이너리이다. symlink가 되어 있어, 실체는 nvidia-container-toolkit이라는 바이너리이다.

nvidia-container-toolkit

GitHub - NVIDIA/libnvidia-container: NVIDIA container runtime library

NVIDIA container runtime library. Contribute to NVIDIA/libnvidia-container development by creating an account on GitHub.

runc가 호출한 OCI의 preStart Hook이다. 이 훅은 실제의 NVIDIA 설정 처리를 실행하는 nvidia-container-cli를 호출한다. Docker의 --gpus 옵션을 사용하는 경우, 실제 의존하고 있는 것은 nvidia-container-toolkit 아래의 컴포넌트뿐이 된다. GPU의 설정은 환경 변수 경우로 이뤄진다.
OCI의 preStart Hook으로써 구현되고 있으므로 runc에 한정되지 않고, OCI Runtime의 사양에 바이너리 옵션의 기초지식 따른 컨테이너 런타임이면 이용가능한 구조로 되어 있다.

libnvidia-container

GitHub - NVIDIA/libnvidia-container: NVIDIA container runtime library

NVIDIA container runtime library. Contribute to NVIDIA/libnvidia-container development by creating an account on GitHub.

Linux 컨테이너에 대응해 NVIDIA GPU에 필요한 설정을 실제로 실행하는 nvidia-container-cli가 포함되어 있다. Ubuntu 등의 패키지는 libnvidia-container1(라이브러리)와 libnvidia-container-tools(CLI)가 분리되어 있다. C에서 적혀있듯, namespace 등 Linux컨테이너의 기능을 직접 이용하고 있으므로, Linux 컨테이너의 구현하지 않는 구조로 되어 있다. GPU 디바이스나 라이브러리의 마운트뿐만 아니라, ldconfig의 실행이나 커넬 모듈의 로드 기능도 포함되어 있다.
아래는 Docker에서의 nvidia-container-cli의 호출되는 인수에 대한 예이다.

또한, list이라는 서브 커맨드를 사용하면, GPU 서포트에 필요한 파일의 목록을 확인할 수 있다.

NVIDIA Container Toolkit 의 처리 흐름

Docker의 --gpus 옵션을 사용했을 경우와 런타임에서 nvidia를 사용한 경우 처리의 흐름이 달라지지만, 어떤 방법이든 결국에는 nvidia-container-toolkit이 runc의 preStart Hook으로 설정되어 실제 설정을 실행하는 nvidia-container-cli가 호출된다.
docker run으로 컨테이너를 실행했을 경우, 주로 다음과 같은 컴포넌트가 호출된다. 최종적으로는 컨테이너를 실행하는 런타임이 runc이다. (shim은 생략하고 있다)

중앙데일리

발통증 도와주세요ㅠ 평소에도 약간씩 아팠는데 오늘 자고일어나니까 통증이 심해서 서있지를 못하겠어요 그래도 어제까지만해도 잘 걸어다녔는데 발등이나 바닥이 아니라 내부가 아픈느낌이고 오른발 중앙에서 바깥쪽 이라고 해야되나? 너무 아파서 택시타고 문 연 병원이 없어서 가정의학과 다녀왔는데 엑스레이 찍으니 뼈에 이상은없고 약 진통제랑 근육이완제 처방해줌 지금 서있지 못하겠어서 계속누워있는데 서서 발 아픈부위쪽으로 무게중심이 약간만 가도 엄청나게 아파 허리디스크도 있는데 그런 저린느낌은 아니고 콕콕 막 찌르는거 같은데 이거 어떻게해야되요?

문앞에서 담배꽁초발견됐는데 확인하려는 시간대만 cctv녹화본이 없어요.. 오늘 현관 바로앞에 담배꽁초를 발견해서 움직임 자동녹화하는 cctv 영상목록을 봤는데 11월 2일 출근할땐 담배꽁초가 없었고 11월 4일 출근할땐 담배꽁초가 생겨서 그 사이것을 보려고하니, 11월 2일 퇴근~11월 3일 출/퇴근 영상이 없음 입퇴실한 기록은 남아있는데 이때 영상 자체가 없음 지운것도 아님 adt캡스 전화해서 본사 중앙시스템같은데에 저장된거라도 있을지 물어봤는데 지금 주말이라 출동데스크분이랑만 연결돼서 잘 모르겠다고하시고.. 기계안에 sd카드 확인해봐야할거같다고 하심. 빨리 월요일 됐으면.. 혹시 adt 홈

■ 코인들에 대한 간략한 설명■ 코인판서 퍼오긴 했엉 내가 사는게 뭐하는 용도인지 정도는 알고 사 그것도 모르고 그냥 사는 공부안하는 형들은 한번쯤 시간날때 봐도 좋을듯해.. 업비트 어플에도 설명이 바이너리 옵션의 기초지식 잘 써있지만 안보는사람들 많지. 그러니 걍 간략 소개라도 봐. ============================== 관심 알트코인 골렘 - 이더리움 플랫폼에 기초해 만들어진 골렘 네트워크에서 사용되는 가상화폐. 스마트 컨트랙트 적용 그로스톨코인(GRS) - 보안 익명 저전력 채굴, 세그윗(SegWit)을 활성화한 최초의 코인 네오 코인(NEO) - 중국의

유부남 한탄글 안녕? 블라 가입하고 처음 글써보네~ 그냥 비슷한 처지 유부남들 있으면 서로 위로나 될까 싶어서 글쓴다.. 난 중앙부처에 있고 나이는 37~42사이야. (신원보호 상 나이는 밴드로 처리) 결혼은 8년 이상 됐고, 아이도 하나 있어. 근데 요새는 정말 심하게 현타가 온다.. 내가 뭐하고 사는걸까 하고. 아무리 노력하고 참아도, 끊임없는 잔소리에 신경질에, 거의 모든 집안일도 나한테 넘기고. 그래도 항상 지적만 해대고. 참고로 리스라서 그런건 아님. 와이프는 이쪽에 거의 관심이 없어서. 모든 상황을 자세히 설명할순

상대 100% 과실로 차량 파손시 보상이나 위자료 받을 수 있는게 있어? 오토바이 중앙선 침범으로 태어난지 9개월된 내 쏘렝이 손잡이 날아가고 문짝 찌그러지고 범퍼까지 쭉 긁혀써. 오토큐에서 문짝 통째로 교체해야되고 휠 윗부분 부품 교체하고 나머지는 도장한다는데 ㅠㅠ 상대과실 100%로 대물만 접수됐고 오토바이 혼자 와서 옆에 긁고 넘어진거라 나는 충격도 없고 멀쩡해서 대인 접수는 안함;; (어차피 책임보험만 있는 오토바이..) 한 3년 타고 중고로 팔고 갈아탈 생각이었는데. 문짝까지 다 교체한건 사고로 잡혀서 나중에 중고로 팔때 손해 보는거 없나 걱정돼. 무엇보다 너무 속상하고 귀찮은데 ㅠㅠ

실장이 팀장인 나 말고 팀원한테 팀 상황 체크(내용추가) (추가)내가 맘에 안들수도 있는데 들어온지 얼마 안됐고 부장 보고할때나 전체 회의때는 말이 없다가 회의 끝나면 다른 말을 하고 내가 업무 이해를 못한다는 식으로 말하는데 정작 부장은 내 말이 맞고 그래서 추가 지시 없이도 일 진행은 잘 되고 있어. ‐---------------------- 실장이 있는데 매번 내가 옆자린데도 나한테 팀 진행사항을 묻지 않고 팀원한테 체크해 나랑 협의되지 업무를 팀원한테 먼저 얘기도 하고 그러면서 이해하기 어려운 부분이나 견해가 다르면 팀원한테 그 얘길 다 하나봐 팀원은 좀 난감해 하면서

공무원 5급 이직 고민 행시 붙어서 중앙부처 공무원한 지 5년째인데, 이 길이 내 길이 맞나 라는 생각이 요즘 너무 많이 들어서 고민이야. 올해 초까지만해도 조직에 애정도 있고 조직이 나를 더 인정해줬으면 좋겠고 더 여러가지 일도 하고 싶고 막 그랬는데, 올해 좀 큰 일을 맡으면서 사람들이 정말 나몰라라 하는 상황도 겪어보고, 무책임하면서 입만 터는 사람들도 너무 많고. 무엇보다 진짜 업무보다 언론이다, 뭐다 이런걸 더 신경써야 해서 본질은 없어서 일에 너무 실망이 많았어. 이렇게 고생하면서 하는 일이 이런건가?라는 생각. 너무 스트레스도 많이 받

야놀자 - 장외에서 살 수 있으면 사야 하는 종목 링크 야놀자가 그냥 온라인으로 호텔이나 모텔 예약하는 플랫폼으로 대부분 알고 계실꺼에요. 어제 보도자료 발표했는데, 지난 해 인수한 인도의 ezee technosys라는 회사 통해서 아프리카 최대 온라인 여행플랫폼인 hotelonline으로 아프리카 시장에 진출한다는거에요. 일반인들에게는 생소하지만, 호텔의 예약과 시설물 관리를 위해서는 pms라는 거를 써야 하는데, 이거 시장 1위가 오라클이고, 야놀자가 2위에요. 장외 시장에서 주식을 살 수 있으면 야놀자를 사는게 최선인게. 야놀자는 그동안 언론에 알려진 것으로는 총 18

한국의 소문난 명의 오래된 자료긴 한데 몇몇 분들은 실제로 유명세 확인함 01. 간이식의 아산병원 이승규 02. 위암 연세 세브란스병원 외과 노성훈 교수 03. 대장암 서울대 박재길교수 04. 척추변형수술 일인자 상계 백병원 석세일 교수 05. 당뇨 서울대 이홍규 교수 06. 심장병 삼성서울병원이영탁 07. 유방암 서울대 노동영 교수 08. 신장질환 세브란스 한대석 09. 왜소증 고대구로병원 송해롱 교수 10. 소아정신 서울대 조수철 11. 치매 삼성서울병원 나덕렬 12. 결핵 전문의 삼성서울병원 권오정 교수 13. 전립선 남성의학 중앙대의료원 김

인터넷이 처음 발명됐을 때 레터맨쇼에 빌게이츠가 나가서 메이저리그 중계를 인터넷으로 볼 수 있다 했더니 사회자가 말하길 그거 우리집 tv로도 볼 수 있는데요? 라고 비웃자 청중들은 깔깔대고 웃었다 한다. 인터넷으로 전화를 걸 수 있다. 인터넷으로 책을 읽을 수 있다. 인터넷으로 편지를 보낼 수 있다. 그런데 인터넷 없어도 다 할 수 있는 것들인데요? 라고 비웃던 사람들이 엄청나게 많았다. 그들은 구글 주식을 $1에 살 수 있었는데도 그러지 않았지. 비트코인은 본질가치가 0이다. 인터넷 뱅킹으로도 송금이 되는데? 왜 네이버 놔두고 web3 서비스를 써야

12세 이상 위중증·사망 60% 이상이 미접종자 링크 정부 : 15일 중앙재난안전대책본부(중대본)에 따르면 지난해 12월12일부터 2월5일까지 최근 8주간 만 12세 이상 확진자 중 미접종자(1차 접종 완료자 포함)가 차지하는 위중증 환자와 사망자 비중은 60%를 웃돈다. 팩트 : 하지만 만 18세 이상 성인의 약 4%인 미접종자 181만 6680명(14일 0시 기준) 중 60세 이상 고령층이 61만 7723명으로 34%에 달하고, 한번도 접종하지 않은 고령자도 53만 8183명으로 비(非)접종자의 38%에 이른다. 오미크론 변이는 40대 이하에서 중증화율은 0.04%과 치명률은

여사친 결정사로 시집간 썰 결론부터 말하자면 더 나은 조건의 사람을 찾고자 결정사를 갈 계획이라면 하루라도 어렸을 때 돈들고 빨리가. 이나이에 결정사 가기엔 너무 이르지 않나?--> 오히려 이미 늦기 시작한거임. 내 친구네 아버지가 시중은행 지점장까지는 해서 크게 부족한건 없게 자랐지만, 데일리루틴으로 서래마을에서 브런치먹고 백화점 명품관 한바퀴 돌면서 쇼핑하는건 불가능하잖아? 그래서 자기는 무적권 부잣집으로 시집가서 현모양처가 되겠다는 목표를 가지고 부모님께 말씀드리니 승낙하셔서 바로 결정사로 갔음. 벌써 4년 전인데 얘 스펙은 인서울하위권 화학

분당 달리기 모임 신규로해요 1. 모임명 : Burning stream(가명) 2. 프로그램 ※모든 프로그램은 초보자에게 맞추어 진행 (1) 조깅 (탄천) - 준비운동 5분 - 느린 속도로 가벼운 조깅 약 40분간 실시 - 마무리 정리 운동 (2) 크로스컨트리 (분당 중앙공원) - 준비운동 10분 - 언덕과 평지를 순환식으로 달리기 30분 - 마무리 정리 운동 (3) 인터벌 트레이닝 (탄천) - 준비운동 10분 - 걷기 10분 - 30초 빨리 달리기 >> 2분

다들 출근 몇분 일찍 해? 9시 출근인데 평소에 8:20-30사이에 출근해 근데 상사가 항상 7:50쯤 출근해서 졸라 눈치줘 지금 출근할래도 6:10에 일어나야하는데 어떻게 더 일찍 출근해. 오늘 경의중앙선 밀려서 한 35분 도착 했거든? 30분에 상사 전화와서 자료 필요한데 왜 지각이냐구 지랄함 힝 시발ㅠ 누가 보면 9시 35분에 출근한줄 알겠어. 사기업-공공기관 이직했는데 전직장에선 9시 이전까진 절대 노터치였거든. 그래서 57분쯤에 다들 여유롭게 커피들고 우수수 출근했는데.. 회사 셔틀 밀린날엔 5분 늦었는데도 내 잘못 아니라고 괜찮

달밤 산책🌙 조금 늦은 저녁과 밤사이- 무작정 혼자 공원 길 따라 걸은 것도, 사람 붐비는 호수말고 조금은 한적한 코스로 걸은 것도 오랜만인 하루. 에어팟끼고 발길가는대로 걷는데 사소한 고민부터 잡생각 다 없어지고 노래에만 빠져들게 되고 너무 좋다요✨ . 사람 너무 없으면 어쩌나;했는데 그래도 조금이나마 같은 시간에 있는 사람들도 있고, 적당히 불빛도 밝으니 딱 좋음! . 광교공원은 원천도 신대도 중앙도 각자의 매력이 있어서 지겹지도 않고 매우 좋고, 심지어 한 군데 계속 가도 안질림! 그래도 한 번씩 코스 바꿔보세요~~! 다들 하루끝 마무

상가분양 계약취소 안녕하세요 2년전쯤 주상복합 1층에있는 상가 분양을 계약했습니다 13평 정도인데 이번에 사전점검 가보니 정중앙에 건물기둥이 있더라구요. 작은것도 아니고 가로1.5m 세로 1m 정도입니다.. 큰 평수의 상가도 아니고 작은 평수에 이런게 있어버리니 참 어이가 없습니다. 계약당시 이러한 내용에 대한 고지도 없었고 카탈로그에는 그 기둥을 조그맣게 그려놓고 호실명칭을 위로 덮어 제대로 확인도 안되게 해놓았더라구요 이제와서 내용 알려줬다하는데 그걸 알고 누가 계약을 했을까요. 상가 중심에 큰 키둥이 있는곳을.. 그리고 분양회사는 대행사

요즘 외롭고 힘드니? 수다떨면서 날리자 링크 우리 단톡방은 가볍게 대화하는 곳이야. 일하다가 또는 집에 혼자 있을때 심심하면 아무말이나 해! 우리 다 데일리로 자기 할말만 함. ㅋㅋ 고민있는 친구는 털어놔도 괜찮아. 업무관련, 이직고민, 정보공유, 연애상담 가능! 우리 프로 리슨러야 :) 친구 없으면 밥친구 찾아도 되고. 꽃놀이, 피크닉, 한강치맥벙도 함께 다녀도 좋고! 아니면 함께 카페에서 수다떨거나 맛집도 다니자. 평일 저녁식사 함께 할 친구를 찾아도 됨. 주말에 심심하면 모여서 같이 놀아도 좋아! 술모임도 대환영! 오랜만에 술먹고 놀자잉. 시간과 지역이

일렉기타 잘 치는 사람있어?ㅎㅎ 옛날 노래 듣다가 문득 생각남. 기타 조금 칠 줄 알아서 대학교때 노래패 잠깐 했었어. 정기공연 준비 하는데 기본적인 것들이야 쉽게 하는데 기타 솔로는 도저히 답이 안 나오더라고 타브악보라도 있으면 따라해볼텐데 그것도 아니고 그냥 코드만 있는 일반 악보. 중앙동아리 밴드부 형도 잘 모르겠다고 하고 당시 2007년이라 정보 같은 것도 부족해서 알음알음 화음? 스케일? 이런 것도 알아보고.. 대충 비슷한 대중가요 타브 악보 구해서, 그거라도 연습하면서 감 잡아보려고 했는데 클래식 기타 잠깐 배운 실력으로는 무리무리.. 그것도 재

서부발전 정보 글 최근 공고떠서 그런지 많이들 물어보는거 1. 근무지 본사(태안) 태안발전본부 평택발전본부 서인천발전본부 군산발전본부 김포열병합건설(최근 신사업소) +비율은 아래 사진 참조 2. 순환주기 태안은 말뚝가능 태안에서 비태안권가려면 보통 10년 채우고 가야됨. 비태안권에서 태안이동은10년 채우면 가야됨. 그러나 태안가겠다고 손들면 바로 보내줌. 비태안권은 말뚝불가능. 3. 연봉수준 일근기준으로 타 중앙 공기업들과 비슷한 수준. 4. 경력인정 고졸 3호봉시작. 대졸 군미필은 7호봉 시작. 사기업은 절반경력인정. 군경력인정. 최대 3호

서부발전 정보 글

+2

코로나 핑계로 쉬고싶은 사람들 코로나로 뉴스좀 나온다 싶으면 어김없이 재택근무니 몸이 살짝 별루같다며 말돌려서 휴가 은근슬쩍 사용하고 솔직히 양심에 손을 얹고 진짜 진짜 진짜 코로나 때문인 사람 있어? 이때다 싶어서 말이 재택이지 그냥 놀고싶은거지 체계가 되있는 회사나 모니터가 되는거 작은 회사는 데일리로 뭐 하는지 보고도 안하기때문에 자다가 한참뒤에 메신저 답하는지 알 방법도 없음 코로나 때문이라고 믿지 않는이유는 항상 이때다 싶으면 이용해먹는 맴버 항상 고정이고 몸이 별루예요~ 열이 살짝나는데 나가도 다른분들 괜찮으세요? 이런 말 쓰구 왜 항상 같은 사람만

쿠팡이츠 형들 있나여 요즘 재택이라 바깥바람 쐴 겸 쿠팡이츠 하는데, 직선거리로 측정해서 무슨 반포동에서 예술의전당을 보내질 않나 흑석동 중앙대병원 낙성대 사당 인덕원 봉천 이런데 무지하게 보냄; 인간적으로 너무 심하잖아. 그래서 수락률 18%인데 배달률은 99%임 18건 수락하면 99% 다 배달 했다는거. 근데 어제는 배달 주는대로 다 갔는데 방배동에서 시작해서 낙성대,대학동 건너 금천,광명 찍고 신도림 신대방으로 넘어왔다. 집이 이수인데 경기도 찍음ㅋㅋㅋㅋㅋ 이러다 여의도까지 가겠다 싶어서 들어오는거 쳐내고 집 가는 방향

쿠팡이츠 형들 있나여

+3

제2금융권으로 이직 공대생 출신인데 지금 현회사애서 지금 2년반동안 파견나왔어형들 지금 연봉은 1년차 세전 4100-4200현장수당포함해서 이정도 받아(식비는 포함 안했어 ) 직급별 연봉을 보아하니 과장5500 차장6500 부장 7500 하는가같아. (세전 영끌이야. ) 근데 야근+수직문화에 진절머리가 난 상태야 그리고 애당초 하고 싶은 업무가 아니였눈데 금융권 떨어지고 취업을 했어.. 그와중에 이번에 새마을금고 정규직 지원을 해서 면접결과를 기다리고 있어 형 누나들 . 초봉은 지금보다 낮을거같아 새마을 금고 1800억대 자산 규모인

서울 아파트의 하락 시나리오 형들 안녕? 나는 지금 다주택자로 상승에 베팅한 포지션이긴 한데, 하락론자 형들이 다주택 법인 투기꾼 물량 시나리오 같은 내가 보기엔 실현가능성이 낮은 이야기만 해서, 나름 부동산도 수도권과 지방에 나누어 투자하고 주식은 베타투자를 하는 입장에서 실현가능성이 높다고 생각하는 하락 시나리오를 생각해봤어. 만약 각국 정부와 중앙은행이 더이상 재정 적자와 양적 완화를 하는 것에 부담이 커지고, 경제가 계속 안좋지만 유동성은 축소해야 하는 상황이 온다면 아마 부동산 뿐만 아니라 모든 자산은 하락을 피할 수 없을거라고 생각해. 경제가 좋

자본주의에서 인플레이션은 당연한건데 물가상승은 어쩔 수 없음. 왜냐하면 은행에서 지급준비율이 있는 한 화폐 가치는 더 하락이 될 수 밖에 없고 은행이 이자를 지급하는 동안 가상의 돈을 생산해서 통화량을 늘리니까 어쩔 수 없음 그래서 중앙은행에서 지급준비율을 조정 하는거고 정부에서는 물가안정대책으로 물가상승 억제 브레이크를 걸어야하는 데. 이번 인플레 같은 경우는 러시아와 우크라이나와의 전쟁으로 국제 분업화가 깨지고 코로나19로 세계 유통망이 혼선이 커진게 중첩되서 우리나라 시장에서만 그런게 아니라 전세계적으로 혼란이 와버림. 해결 방법이 전세계에서 금리 올리고

정치테마주 정리 정리된거 퍼온거임 혹시 더 있으면 댓글로 <인맥주> 1. 차기 대권후보 ▸이낙연 - 삼부토건, 범양건영, 부국철강, 남화토건, 남화산업, 서원, 디와이, 휴림로봇, 남선알미늄, 남성, 이월드, 삼본전자, 주연테크, HSD엔진, 티케이케미칼, SDN, 금호전기, 금오에이치티, 우원개발, 제이엠아이, 팬엔터테인먼트, 고려시멘트 등 ▸이재명 - 에이텍, 에이텍티앤, 동신건설, 형지엘리트, 티엘아이, 토탈소프트, 바이너리 옵션의 기초지식 프리엠스, 슈프리마에이치큐, 오리엔트정공, 오리엔트바이오, 비비안, 보라티알, 한국팩키지, 이화공영, 아즈텍WB, 형

심심한 사람들 모여라!! :))) 링크 우리 단톡방은 가볍게 대화하는 곳이야. 일하다가 또는 집에 혼자 있을때 심심하면 아무말이나 해! 우리 다 데일리로 자기 할말만 함. ㅋㅋ 고민있는 친구는 털어놔도 괜찮아. 업무관련, 이직고민, 정보공유, 연애상담 가능! 우리 프로 리슨러야 :) 친구 없으면 밥친구 찾아도 되고. 꽃놀이, 피크닉, 한강치맥벙도 함께 다녀도 좋고! 아니면 함께 카페에서 수다떨거나 맛집도 다니자. 평일 저녁식사 함께 할 친구를 찾아도 됨. 주말에 심심하면 모여서 같이 놀아도 좋아! 술모임도 대환영! 오랜만에 술먹고 놀자잉. 시간과 지역이

질리카와 이오스 비교해서참고할 글 링크 EOS는 높은 처리량을 제공하지만 안전성과 분산성이 떨어집니다. EOS의 주요 기능은 확장성이므로, 확장성 측면에서ZIL와 EOS를 비교합니다. EOS처리율이 높은 이유는 EOS(delegated PoS)라는 합의 프로토콜에서 비롯됩니다. EOS의 경우 다음과 같은 방식으로 작동합니다. 21개 노드 또는 블록 생산자 중에서 전용 하위 집합이 네트워크에 의해 선택되어 블록을 제안합니다. 노드가 선출될 가능성은 EOS에 있습니다. 21개의 각 노드는 3초의 블록 시간으로 정확히 하나의 블록을 제안합니다. 여러분이 상상할 수 있듯이, 이

심심한 일요일 저녁! 유튜브 구독 이벤트 참여하시고 커피 쿠폰 받아가세요ꔷ̑◡ꔷ̑ 링크 오픈텍스트 코리아 유튜브 구독하시고, 커피 쿠폰 받아가세요! #이벤트 참여 링크는 이쪽! 기간은 2월 5일까지예요! http://bit.ly/3ptm8mR 유튜브 링크는 요기 https://www.youtube.com/channel/UCvBQ6y5_HjVBD7Pcco5mqwQ/videos 오픈텍스트 뭐시기가 뭘까.. 처음 들어보신다고요? 알고보면 이미 회사에서 쓰고 있을지도 모른다는 거.. 사용자는 저희 솔루션을 쓰는지도 모르게 편리함을 제공하는 게 포인트거든요. 막간을 이용한 회사소개! OpenText는 기업정보관리

심심한 일요일 저녁! 유튜브 구독 이벤트 참여하시고 커피 쿠폰 받아가세요ꔷ̑◡ꔷ̑

+3

중딩때 초딩 개팬적있음 중2때 어느날 친구집 가려고 아파트 엘리베이터를 탔는데 뒤늦게 초딩 남자애가 뛰어와서 3층에서 내리더니 문 닫히기 직전에 나한테 공룡 장난감 던지고 혼자 하하하 거리면서 튀더라? 머리맞아서 짜증났는데 그래도 걍 귀엽게 봐줬었음. 그렇게 한 일주일 뒤에 또 친구집 가는데 그 초딩 마주쳤고 걍 아무말 안하고 모르는척 했거든? 근데 또 3층 누르길래 이새끼 설마. 싶어서 문열림 버튼 누르고 잡을 생각하고 있었는데 역시나 3층 내리고 문이 닫힙니다 소리 나자마자 뒤돌더라? 그래서 바로 문 열림 버튼 눌렀는데 엘리베이터가 문열림 버

내가 이래서 코베 상장을 악재라고 본거임. 하락의 이유는 아직 정확히 아무도 모르지만, 코베상장과 연관되어 있을 이유가 가장 큼. 코베 상장은 결국 탈중앙화를 바이너리 옵션의 기초지식 외치던 코인이 제도권으로 들어간다는 애기고 이건 기존의 자본의 영향을 받을 수 밖에 없음. 월가에서 코베를 이 가격에 사겠음? 결국 코베를 지배력 안에 두려면 지분을 늘려야 되고 이건 결국 코베의 실적악화든 코인 가격 하락이든 코인의 리스크를 부각시키던 뭔가 작업 이후에 물밑에서 수량 모아갈게 뻔한 일임. 코베를 상장 시킨 대표들 및 이사들은 돈 멀어서 좋겠지만 일반 투자자들은 결국 코인의 거대한 방향을 월가에

미적분학에 나오는 중요한 개념들을 연습 훈련을 통해 정확하게 이해한다. 수학1을 듣는 학생들에게 추천하는 과목이다.

MATH105 수학 LAB 2 (Mathematics LAB 2)

수학 LAB1의 연속으로 수학 2를 듣는 학생들에게 추천하는 과목이다.

MATH209 산업수학 모델링 기초 (Elementary Industrial Mathematics Modeling) 수학의 응용 사례를 바탕으로 다양한 산업 관련 수학 문제를 수학적 원리에 따라 모델링하는 방법을 습득하고 초보적인 문제에 적용해 본다. MATH211 선형대수 1 (Linear Algebra 1) 행렬과 행렬식의 기본 연산법을 익히고 이를 일차방정식의 풀이에 응용한다. 벡터공간을 소개하고 그 위에서의 일차변환을 행렬로 나타내고 성질들을 살핀다. 고유값, 고유벡터를 포함한 정방행렬의 가역성 등 여러 성질들과 응용을 살펴본다. MATH212 선형대수 2 (Linear Algebra 2) 선형대수1의 연속으로 직교성, 스펙트럼 정리, 벡터공간, 내적공간과 이차형식을 다룬다. 선형대수의 응용 및 수치해석적 방법을 배운다. MATH215 정수론 (Number Theory) 정수에 관한 기본적인 이론을 공부한다. 주요내용은소수의성질, 소인수분해, 합동식, Fermat의 작은정리, Euler의정리, 원시근, 이차잉여, 연분수, 디오판틴 방정식등이다. MATH221 미분방정식 (Differential Equations)

미분방정식의 해의 존재성, 성질 및 해법을 공부한다. 주로 다룰 내용은 선형 미분방정식, 급수해, 라플라스 변환, 미분방정식의 응용 등이다.

MATH251 확률 및 통계 1 (Probability and Statistics 1)

비결정적 현상을 기술하고 분석하는데 사용되는 수학적 도구로써 확률과 확률변수, 확률분포와 기대치, 표본분포, 중심극한 정리, 점추정과 신뢰구간, 가설 검정과 오류 등에 대해 배운다. 확률모형을 소개한다.

MATH252 확률 및 통계 2 (Probability and Statistics 2)

확률 및 통계 1에서 배운 확률분포, 가설 검정을 바탕으로 자료분석을 위한 통계적 방법론인 측정형 자료의 분석, 범주형 자료와 분류표분석, 분산분석, 회귀분석 등에 대해서 배운다.

MATH285 이산수학 (Discrete Mathematics)

기초논리와 몇 가지 증명방법에 대해 살펴본 후, 관계, 순서 등 수학의 기본개념과 의미에 대해 학습한다. 이산구조를 다루는 기본적인 방법으로 생성함수, 포함배제의 원리 등에 대해 배우고, 그래프 이론에 등장하는 주요개념과 문제 그리고 이를 해결하는 알고리즘에 대해 학습한다.

MATH286 수학프로그래밍 (Mathematics Programming)

문제 해결을 위한 도구로서 프로그래밍의 기본 원리를 이해하고 이를 구체적인 수학 문제를 통하여 구현한다. 논리적인 사고를 바탕으로 프로그래밍 언어의 기초적인 활용방법을 학습하고 이를 수학 소프트웨어와 연계하여 응용력을 높인다.

MATH304 산업수학 프로젝트1(캡스톤 디자인) (Industrial Mathematics Profect(Capstone Design)1) 산업 문제를 수학적 원리를 통해 해결하기 위하여 수학 또는 공학 분야의 학생들이 연구팀을 구성하고 지도교수를 선택하여 자율적인 연구를 수행하며 수학에 대한 이해도와 응용 능력을 기른다. MATH305 이산 모델링 기초 (Elementary Discrete Modeling)

이산 최적화의 기초 과목으로, 조합적 최적화의 고전적 주제인 최소신장트리문제, 최단경로문제, 순환외판원문제, 최소비용흐름문제 등을 중심으로 이산 최적화의 기본적인 개념과 알고리즘을 학습하도록 하는 것을 목표로 한다. 이와 관련된 산업수학이나 실생활의 문제를 모델링해 보고 (근사)해를 찾는 알고리즘을 구현해 본다.

MATH307 빅데이터해석 (Big Data Analysis)

수학(선형대수)과 통계학(기초통계)의 기본 이론을 바탕으로 기계학습과 통계적 패턴인식에 대하여 광범위한 기초지식을 습득한다. 지도학습, 자율학습, 기계학습에 대한 최적실습이 주 학습내용이다. 본 과목에서는 다양한 응용문제에 대하여 실습을 수행한다. 응용문제로는 글자나 수의 분별, 컴퓨터 비젼, 음향, 데이터 마이닝 그리고 데이터로부터 방정식 유도 등에서 제기되는 문제들이다. 선형대수, 기초통계, 관한 선수 지식이 필요하다.

MATH311 현대대수 1 (Modern Algebra 1)

현대대수1은 선형대수와 정수론에서 '수학적인' 엄밀한 증명을 요구하는 몇몇 정리들을 통하여 경험하였던 '추상수학'을 체계적으로 공부하는 과목이다. 특히 집합과 그에 정의된 연산에 의해서 생겨나는 (대수)구조를 대상으로 하며 군(group)의 구조와 그 응용에 대하여 공부한다.

MATH312 현대대수 2 (Modern Algebra 2)

현대대수1에서 익숙해진 군(group)에 관한 이론을 바탕으로 하여 환(ring)과 체(field)에 관한 이론을 익히고, 체의 구조와 군의 구조를 서로 연결시켜 이해하는 방법을 제공하는 Galois 이론을 배운다. Galois 이론의 응용으로 작도문제와 다항식의 근의 공식 존재 문제를 다룬다.

MATH321 해석개론 1 (Introduction to Analysis 1)

실해석의 기본 개념을 이해하고 이들과 함께 수학적 엄밀함을 훈련한다. 우선 유클리드공간의 완비성(completeness)과 그 안에서 중요한 성질을 가지는 부분집합들을 이해하고, 수열과 급수의 극한을 다룬다. 다음으로 유클리드공간을 정의역과 치역으로 가지는 함수의 연속성 그리고 관련된 중요 정리, 균등 연속(uniform continuity)을 배운다. 마지막으로 일차원 공간에 정의된 함수에 대한 미분과 중요 정리들을 배운다.

MATH322 해석개론 2 (Introduction to Analysis 2)

해석개론1의 연속과정이다. 일차원 공간에 정의된 함수에 대한 적분과 성질을 배우고 함수열의 수렴과 급수함수의 미분 적분을 다룬다. 다음으로 연속함수공간 그리고 그와 관련된 중요 정리를 배운다. 이후 유클리드 공간에 정의된 함수에 대한 미분, 편미분, 미분법, 테일러 정리와 응용, 역함수정리와 음함수정리을 배우고 마지막으로 이차원 공간에 정의된 함수에 대한 적분과 성질을 배운다.

MATH323 복소함수 (Complex Functions) 복소수, 사상으로의 복소함수, 해석함수, 멱급수, 선적분과 Cauchy 정리, Cauchy 정리의 응용, Laurent 급수와 Residue 정리, 조화함수, Conformal Mapping 등을 다룬다. MATH324 편미분방정식 (Partial Differential Equations) 대표적인 편미분 방정식들의 형태인, 확산형(diffusion type), 타원형(elliptic type), 쌍곡형(hyperbolic type)과, 각 경우의 예들인 열방정식, 라플라스 방정식, 물결 방정식을 다룬다.
이 과목을 통해서 우리는 세 가지 경우에 대한 기초적인 해법들을 배우고 수치적 해를 구한다. 그 도구는 변수분리법, 푸리에 변환, 라플라스 변환, 중첩원리, 그린 함수 등이다. MATH325 해석개론 연습Ⅰ (Recitation: Introduction to Analysis I)

해석개론 I 에서 배운 내용을 토론을 통해 복습하고 익힌다.

MATH326 해석개론 연습Ⅱ (Recitation: Introduction to Analysis Ⅱ)

해석개론 II 에서 배운 내용을 토론을 통해 복습하고 익힌다.

MATH335 미분기하 (Differential Geometry)

벡터함수의 기본개념을 학습하고 곡선과 곡면의 Curvature, Torsion, Intrinsic Equations, Parametric Equations 등 미분기하의 기초적인 개념을 다룬다.

MATH341 위상수학 (Topology)

위상공간 및 공간 사이의 연속사상을 정의하고 그들이 가질 수 있는 중요한 기초 성질을 다룬다.

MATH351 수리통계학 (Mathematical Statistics)

통계적 방법론의 이론적 배경인 확률변수의 함수, 변수변환법, 적률모함수, 순서 통계량, 극한분포, 표본분포, 불편추정, 등을 배운다

MATH354 회귀분석 (Regression Analysis) 회귀분석은 통계학에서 실제 자료를 분석하는데 있어 가장 기본이 되는 분석방법이다. 단순회귀분석과 중회귀분석, 그리고 이를 확장한 모형 등 회귀문석의 기초적 이론을 익힌다. 또한 배운 이론을 SAS 및 R 등의 통계 패키지를 이용하여 실제 자료를 분석하는 방법과 자료 분석 후의 해석 등을 익힌다. MATH361 수치해석 (Numerical Analysis) 비선형 방적식의 해법, 보간법, 수치 적분법, 미분 방정식의 해법 등을 학습하며, 관련 기초근사이론들을 배운다. MATH401 수학사 (History of Mathematics) 수학이 발달한 사회, 문화적 배경을 알아보고, 수학자의 일생을 공부하여 수학 하는 정신이 무엇인가를 이해한다. 수학개념이 어떻게 생겨나서 발전했는지를 알아보는, 수학을 전반적으로 개관하는 코스이다. MATH404 산업수학 프로젝트2(캡스톤디자인) (Industrial Mathematics Project(Capstone Design)2) 산업 문제를 수학적 원리를 통해 해결하기 위하여 수학 또는 공학 분야의 학생들이 연구팀을 구성하고 지도교수를 선택하여 자율적인 연구를 수행하며 수학에 대한 이해도와 응용 능력을 기른다. MATH412 기초대수기하 (Elementary Algebraic Geomentry)

현대 수학에서 중요한 위치를 차지하고 있는 대수기하학의 개요과목으로써 평면대수곡선을 다룬다. 전반부에는 사영공간의 개념을 학습한 후에 다양한 바탕체 위에서 평면직선과 바이너리 옵션의 기초지식 평면 2차곡선의 기하와 정수론적인 성질을 탐구한다. 후반부의 주요 주제는 타원곡선으로써 타원곡선의 군연산, Weierstrass normal 형식, 표준형식, 모듈라이, 타원곡선 암호 등을 다룬다. 평면대수곡선이라는 단일 수학적 대상을 통하여 대수학, 기하학, 정수론적인 성질의 상호관련성을 탐구할 수 있는 좋은 기회를 제공한다.

MATH432 기하특강 (Topics in Geometry) 미분기하, 계산대수기하학, 위상수학의 심화과정이다. 기하학이나 위상수학의 최근 연구 분야나 중요한 주제들을 다룬다. MATH456 통계자료분석 및 실습(캡스톤디자인) (Statistical Data Analysis and Lab(Capstone Design)) 통계계산소프트웨어(Minitab, SAS, SPSS, BMDP 등)의 구조와 사용법을 배우고, 이를 이용한 자료분석의 방법을 익힌다. 도표 및 탐색적 자료분석, 선형 및 회귀분석, 분산 분석, 공분산분석등이 주요 내용이다. MATH457 다변량자료분석 (Multivariate Data Analtsis) 통계 분포이론에 바탕을 둔 다변량 분산분석, 주성분분석, 인자분석, 대응분석, 판별분석, 군집분석 등의 내용을 공부하며, SAS 및 R등의 통계패키지를 사용하여 실제자료를 실습을 통하여 분석하고 해석할 수 있는 능력을 기른다. MATH473 금융수학 (Financial Mathematics) 기초적인 옵션이론들을 다룬다. 필요한 확률론을 공부하고 Binary 옵션이나 arbitrage 정리를 다룬다. 이런 것들을 기초로 Black-Scholes 모델을 유도하고 그 의미들을 살펴본다. MATH487 현대수학특강 (Topics in Modern Mathematics) 현대 추상대수학의 여러 주제 중에서 필요에 따라 선택하여 강의한다. 유한체, 체의 확장, Galois 이론, category, homology 등이 그 내용에 포함된다. MATH489 현대수학세미나(캡스톤 디자인) (Modern Mathematics Seminar) 수학의 첨단분야를 세미나 형식으로 연구한다. 수강학생들의 적극적인 참여가 요구된다. SCE202 자료구조및실습 (Data Structures and Practice)

본 과목에서는 컴퓨터를 사용해서 개발하는 시스템에서 사용되는 자료구조의 종류와 이를 사용하는 방법론에 대해서 배우게 된다. 본 과목에서 배우는 자료구조와 자료구조 활용방법에 대한 이해는 추후에 수강하게 되는 모든 컴퓨터 관련 과목의 중요한 기초 지식이다. 방법론에 대한 실제적인 이해를 위해 실습을 병행한다.

SCE212 컴퓨터구조 (Computer Organization and Architecture)

간단한 논리회로부터 Decorders, Registers, Counters 등은 물론 Memory Units에 이르기까지 각종 디지털 요소(Component)들의 작동원리와 특성을 알아보고, 컴퓨터에서의 데이터 표현방법을 학습한다. 이러한 지식을 토대로 컴퓨터 명령어가 어떻게 구성이 되는지의 원리와 이해를 위해 가상 기본 컴퓨터의 명령어를 예로 제시한다. 이러한 명령어를 구현하기 위한 방식으로 하드웨어 제어와 마이크로프로그램 제어 방식의 구조를 마이크로 오퍼레이션 수준까지 상세히 살펴본다. 또한 가상적으로 정의된 컴퓨터 시스템을 이용하여 어떻게 프로그램이 바이너리 옵션의 기초지식 작성되고 실행되는지를 기계어 수준 프로그램 예를 통해 이해한다. 아키텍쳐 수준의, 좀 더 세분화된 구성으로서, CISC와 RISC 방식의 명령어 비교 및 어드레스 모드 등을 살펴보고, 성능 개선을 위한 구현 방법으로서 파이프라인 방식의 원리 및 개선 수준 등을 학습한다. 또한 입출력 장치의 구성과 이를 제어하기 위한 기본 원리 등을 학습한다.

BIZ321 재무관리 (Financial Management)

이 과목의 목표는 학생들이 재무관리의 기본이론과 기법에 대한 폭넓은 지식을 얻는데 있다. 이 과목에서 학생들은 자본의 조달 및 운용에 관한 구조적인 측면과 기능적인 측면을 배우게 된다. 자본 및 금융시장에서의 자금의 조달방법, 자본비용 계산, 투자안의 분석 및 평가, 자본예산 편성, 기업의 유동성 관리, 자본구조 정책, 배당 정책, 재무예측 등이 이 과목에서 다루어지는 주요 주제들이다.

FIN323 계산금융 (Computational Finance)

본 수업에서는 기존에 학습했던 파생상품의 가격결정, 가치측정, 위험 측정 및 관리, 헷징 시뮬레이션 등을 C++, JAVA, Matlab, Excel VBA 등 프로그래밍 언어를 이용하여 직접 수행해본다. 이를 위해 프로그래밍의 기초에 대해 학습을 하고 다양한 방법으로 파생상품 평가와 리스크 측정하는 원리를 배운다. 이를 위해 분석적 방법과 바이너리 옵션의 기초지식 수치해석 방법에 대해 학습하고, Value at Risk와 Greek에 대해 학습한다.

NSC4111 창업실습1 (Business Start-up Practice 1)

본 강좌는 학생들로 하여금 창업실무를 익힐 수 있도록 하기 위해 일정 기간동안 실제 창업현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

NSC4112 창업실습2 (Business Start-up Practice 2)

본 강좌는 학생들로 하여금 창업실무를 익힐 수 있도록 하기 위해 일정 기간동안 실제 창업현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

NSC4116 자연인턴십6 (Natural Internship 6)

본 강좌는 학생들로 하여금 전공 바이너리 옵션의 기초지식 관련 현장수업을 통해 실무를 익힐 수 있도록 하기 위해 본 대학과 협약을 맺은 기관 및 산업체에 파견되어 일정 기간 동안 현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

NSC4115 자연인턴십5 (Natural Internship 5)

본 강좌는 학생들로 하여금 전공 관련 현장수업을 통해 실무를 익힐 수 있도록 하기 위해 본 대학과 협약을 맺은 기관 및 산업체에 파견되어 일정 기간 동안 현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

NSC4110 자연인턴십4 (Natural Internship 4)

본 강좌는 학생들로 하여금 전공 관련 현장수업을 통해 실무를 익힐 수 있도록 하기 위해 본 대학과 협약을 맺은 기관 및 산업체에 파견되어 일정 기간 동안 현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

NSC419 자연인턴십3 (Natural Internship 3)

본 강좌는 학생들로 하여금 전공 관련 현장수업을 통해 실무를 익힐 수 있도록 하기 위해 본 대학과 협약을 맺은 기관 및 산업체에 파견되어 일정 기간 동안 현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

NSC312 자연인턴십2 (Natural Internship 2)

본 강좌는 학생들로 하여금 전공 관련 현장 수업(이하, "인턴십 교육과정"이라고 한다)을 통해 실무를 익힐 수 있도록 하기 위해 본 대학과 협약을 맺은 기관 및 산업체(이하, "인턴십기관"이라 한다)에 파견되어 일정 기간 동안 현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

NSC311 자연인턴십1 (Natural Internship 1)

본 강좌는 학생들로 하여금 전공 관련 현장 수업(이하, "인턴십 교육과정"이라고 한다)을 통해 실무를 익힐 수 있도록 하기 위해 본 대학과 협약을 맺은 기관 및 산업체(이하, "인턴십기관"이라 한다)에 파견되어 일정 기간 동안 현장 업무에 참여하여 실무를 익히며 학점을 이수하는 과정이다.

자바 기초지식

  • 상속 추상화 캡슐화 다형성 (상추 캡이다)
  • 추상화 : 객체들의 공통적인 특징을 뽑아내는 것. 객체들의 공통적인 데이터와 기능을 도출: 현실의 복잡성을 극복하고 목적에 집중
  • 캡슐화 : 맡은 목적 실행 위해 상태와 행동을 하나의 단위로 묶는 자율적 실체 + 데이터 은닉
  • 상속 : 새로운 클래스가 기존의 클래스의 자료와 연산을 이용하게 해주는 것. 중복되는 속성과 기능을 재사용
  • 다형성 : 다양한 형태로 표현이 가능하다는 의미 + 동일 요청에 대해 서로 다른 방식으로 응답할 수 있음
    • Overriding : 상속받은 동일한 메소드 재정의
    • Overloading : 동일한 메소드가 매개변수 타입, 개수 차이에 따라 다르게 동작

    JVM, JRE, JDK

    JVM(Java Virtual Machine) : 자바 가상머신

    • JVM은 자바 소스코드로부터 만들어지는 자바 바이너리 파일(.class)을 실행할 수 있는 런타임 환경을 제공해주는 규격
    • JVM은 플랫폼에 의존적(리눅스의 JVM과 윈도우즈의 JVM은 다름)
    • 단 컴파일된 바이너리 코드는 어떤 JVM에서도 동작시킬 수 있음
      • OS마다 구성이 다르므로 JDK, JRE, JVM은 플랫폼에 의존적이지만 자바 자체는 플랫폼에 독립적임

      JRE(바이너리 옵션의 기초지식 Java Runtime Enviroment) : 컴파일된 자바 프로그램을 실행시킬 수 있는 자바 환경

      • JRE는 JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일들과 기타 파일들을 가지고 있음
      • JRE는 JVM의 실행환경을 구현했다고 할 수 있음
      • 자바 프로그램을 실행시키기 위해선 JRE를 반드시 설치해야 함
      • 하지만 자바 프로그래밍 도구는 포함되어있지 않기 때문에 자바 프로그래밍을 하기 위해선 JDK가 필요

      JDK(Java Development kit) : 자바 프로그래밍시 필요한 컴파일러 등 포함

      • JDK는 개발을 위해 필요한 도구(javac, java등)들을 포함
      • JDK를 설치하면 JRE도 같이 설치됨
      • JDK = JRE + @

      자바의 메모리 구조

      참조형(Reference Type)의 데이터 타입을 갖는 객체(인스턴스), 배열 등은 Heap 영역에 데이터가 저장된다. 이때 변수(객체, 객체변수, 참조변수)는 Stack 영역의 공간에서 실제 데이터가 저장된 Heap 영역의 참조값(reference value, 해시코드 / 메모리에 저장된 주소를 연결해주는 값)을 new 연산자를 통해 리턴 받는다. 다시 말하면 실제 데이터를 갖고 있는 Heap 영역의 참조 값을 Stack 영역의 객체가 갖고 있다. 이렇게 리턴 받은 참조 값을 갖고 있는 객체를 통해서만 해당 인스턴스를 핸들 할 수 있다.

      • 프로그램 실행 중 클래스가 사용되면 JVM은 해당 클래스 파일을 읽어서 분석하여 클래스 변수, 메소드 코드 등을 Method Area에 저장
      • 객체 생성 후 메소드를 실행하면 해당 클래스 코드에 대한 정보를 Method Area에 저장.
      • 자바의 모든 로직은 메서드에만 존재 ->메서드의 실행 로직에 대한 바이트 코드가 메모리로 적재되는데 실행 로직이 메모리에 적재 되야 cpu가 fetch할 수 있음. 객체 생성할 시점에 main() 제외한 메서드 바이트코드를 메모리에 적재
      • 코드에서 사용되는 클래스들을 클래스 로더로 읽어 클래스 별로 런타임 상수 풀(runtime constant pool), 필드(field) 데이터, 메소드(method) 데이터, 메소드 코드, 생성자 코드 등을 분류해 저장
      • 인스턴스가 생성되는 공간. 프로그램 실행 중 생성되는 인스턴스는 모두 이 곳에 생성
      • 인스턴스 변수도 이곳에 저장됨
      • 이 인스턴스를 가리키는 레퍼런스 변수는 stack에 저장
      • 상수 풀(Constant String pool)이란?
        • 만약 이전에 같은 char sequence의 문자열이 이미 상수풀에 있다면 문자열을 힙에서 해제하고 그 상수풀의 레퍼런스를 반환해 고유의 인스턴스를 공유
        • Constant String pool은 논리적으로는 힙에 위치하나 Permanent area(고정 영역)에 생성되어 프로세스 바이너리 옵션의 기초지식 생성부터 종료까지 가비지 콜렉터에 의해 관리되지 않고 쭉 있음
        • method 안에 선언시 스택에
        • 각 Thread 는 자신만의 stack 을 가짐
        • 원시타입의 데이터가 값과 함께 할당됨(참조값이 아니라 실제 값)
        • 지역 변수에 스택 자료형을 쓰는 이유?
          • 프로그램은 함수의 호출로써 실행. 함수는 다른 함수를 호출하고, 그 함수는 또 다른 함수를 호출하고, 처리가 완료되면 그 결과를 다시 자신을 호출한 함수에게 반환함. 차곡차곡 메모리에 쌓고, 처리가 끝나면 위에서부터 해당 함수에서 사용한 지역 변수를 메모리에서 해제해 LIFO로 관리

          메소드 영역과 힙 영역은 쓰레드 공유하므로 주의필요

          자바 프로그램 실행 과정

          • 자바 컴파일러(Java compiler): 작성한 자바 소스 코드를 JVM이 이해할 수 있는 자바 바이트 코드로 변환
            • 컴파일: 프로그래밍 언어를 Runtime 이전에 기계어로 해석하는 작업 방식
            • 자바 바이트 코드(Java bytecode): JVM이 이해할 수 있는 언어로 변환된 자바 소스 코드(.class)
            • 자바 바이트 코드는 JVM이 설치되어 있으면, 어떤 운영체제에서라도 실행될 수 있습니다.

            클래스 변수와 인스턴스 변수


            -> 개인적으로 용어가 약간 혼동되는데 여기서의 선언위치란 메모리 위치가 아닌 코드상의 위치이다

            • 인스턴스 변수
              • 인스턴스가 생성될 때 생성->값을 읽어오거나 저장하려면 인스턴스를 먼저 생성해야 함
              • 인스턴스 별로 다른 값을 가질 수 있으므로, 각각의 인스턴스마다 고유의 값을 가져야할 때는 인스턴스 변수로 선언
              • 클래스 변수
                • 인스턴스 변수 + static
                • 클래스 변수는 모든 인스턴스가 공통된 값을 공유하게 됨
                • 한 클래스의 모든 인스턴스들이 공통적인 값을 가져야할 때
                • 클래스가 로딩될 때 생성, 메모리에 딱 한번만 올라감
                • 인스턴스를 생성하지 않고 클래스이름.클래스변수명 으로 접근 가능
                • -> Static 변수와 static 메소드는 Static 메모리 영역에 존재하므로 객체가 생성되기 이전에 이미 할당이 되어 있기 때문
                • static 변수의 초기화
                  • primitive type이 static이라면 명시적으로 초기화하지 않으면 default value로 초기화, reference인 경우에는 null로 초기화
                  • 객체가 생성될 때
                  • 클래스의 static 맴버를 처음 액세스 할 때

                  Interface vs Abstract Class

                  • 자바8 부터는 인터페이스의 변화
                    1. default 키워드를 통해 구현체를 가질 수 있음(일반적인 메소드 구현 가능). 인터페이스가 변경 되면 인터페이스를 구현하는 모든 클래스들이 해당 메소드를 구현해야 하는 문제를 해결하기 해 인터페이스에 메소드를 구현해 놓을 수 있도록 함
                    2. static 메소드 선언 가능
                    • 인터페이스에서 정의한 static메소드는 반드시 인터페이스명.메소드 형식으로 호출해야한다. 인터페이스에 static 메소드를 선언함으로써, 인터페이스를 이용하여 간단한 기능을 가지는 유틸리티성 인터페이스를 만들 수 있게 되었다.
                    1. 자기 자신이 new를 해서 객체를 생성할 수 없으며,
                      추상클래스를 extends 받거나, interface를 implements 한 자식만이 객체를 생성할 수 있다.
                    2. 상속받은 자식이 구현을 반드시 하도록 해야할 때 사용한다.
                    3. 추상 메소드가 있으면 자식은 반드시 다 구현해야 한다.
                    • abstract 메소드가 하나라도 존재하는 클래스
                    • 구현되어 있는 메소드도 존재할 수 있음 (JAVA8부터는 인터페이스도)
                    • 동일한 부모를 가지는 클래스를 묶는 개념으로 상속을 받아서 기능을 확장시키는 것이 목적
                    • 관련성이 높은 클래스 간에 코드를 공유하고 싶은 경우
                    • 구현해야 할 메소드들의 명세
                    • 인터페이스의 경우, default 또는 static 으로 선언되지 않은 모든 메소드는 암묵적으로 abstract
                    • 서로 관련성이 없는 클래스들이 인터페이스를 구현하게 되는 경우에 사용한다. 예를 들어, Comparable, Cloneable 인터페이스는 여러 클래스들에서 구현되는데, 구현클래스들 간에 관련성이 없는 경우가 대부분
                    • 특정 데이터 타입의 행동을 명시하고 싶은데, 어디서 그 행동이 구현되는지는 신경쓰지 않는 경우.

                    • 인터페이스에서 모든 변수는 기본적으로 public static final 이며, 모든 메소드는 public abstract 인 반면
                    • 추상클래스에서는 static 이나 final 이 아닌 필드를 지정할 수 있고, public, protected, private 메소드를 가질 수 있다.
                      인터페이스를 구현하는 어떤 클래스는, 다른 여러개의 인터페이스들을 함께 구현할 수 있다. 추상클래스는 상속을 통해 구현되는데, 자바에서는 다중상속을 지원하지 않으므로 추상클래스를 상속받은 서브클래스는 다른 클래스를 상속받을 수 없다.

                    예시: HashMap

                    AbstractMap 의 서브클래스인 HashMap, TreeMap, ConcurrentHashMap 에서는 AbstractMap 에 정의되어 있는 get, put, isEmpty, containsKey, containsValue 등의 메소드를 공유한다.

                    또한 HashMap은 Serializable, Cloneable, Map 세 개의 인터페이스를 구현한 클래스이다. 위 인터페이스를 통해 HashMap 의 인스턴스는 복제가능하며, 직렬화(byte stream 으로 컨버팅)가 가능하며, map 으로써의 기능을 가진다는 것을 추론할 수 있다.

                    원시형 데이터, 참조형 데이터

                    • 원시형 데이터(Primitive)
                      • 반드시 사용하기 전에 선언되어야 함
                      • OS에 따라 자료형의 길이가 변하지 않음
                      • 비객체 타입이므로 null 값을 가질 수 없음
                      • 클래스에 정의된 생성자를 사용하여 만들어지며 디폴트 값은 null
                      • 객체를 참조하는데 사용

                      Wrapper Class

                      박싱(boxing): 기본형을 참조형으로 변환하는 것

                      언박싱(unboxing): 참조형을 기본형으로 바꾸는 것

                      1. 매개변수로 객체가 요구 될때
                      2. 기본형 값이 아닌 객체로 저장해야 할 때
                      3. 객체간의 비교가 필요할 때

                      직렬화와 역직렬화

                      • 자바 시스템 간의 데이터 교환을 위해서 존재
                      • 객체를 스트림을 통해 입출력하기 위해 바이트 배렬로 변환하는 것. 역직렬화는 반대

                      왜 CSV, JSON 두고 굳이?

                      • 복잡한 데이터 구조의 클래스의 객체라도 직렬화 기본 조건만 지키면 큰 작업 없이 바로 직렬화 가능
                        자바에서 입출력에 사용되는 것은 스트림이라는 데이터 통로를 통해 이동함
                      • JVM의 메모리에서만 상주되어있는 객체 데이터를 그대로 영속화(Persistence)가 필요할 때 사용
                      • 단순히 세션을 서블릿 메모리 위에서 운용한다면 직렬화를 필요로 하지 않지만, 파일로 저장하거나 세션 클러스터링, DB를 저장하는 옵션 등을 선택하게 되면 세션 자체가 직렬화가 되어 저장되어 전달

                      serialVersionUID를 선언해야 하는 이유

                      • JVM은 직렬화와 역직렬화를 하는 시점의 클래스에 대한 버전 번호를 부여
                      • SUID가 선언되어 있지 않으면 클래스의 기본 해쉬값을 사용
                      • 클래스의 멤버 변수 하나만 추가되어도 java.io.InvalidClassException 예외 발생
                      • serialVersionUID 를 직접 기술하지 않아도 내부 적으로 serialVersionUID 정보가 추가됨
                      • 직접 serialVersionUID 값을 관리해주어야 클래스 변경 시 혼란 X
                      • serialVersionUID값을 저장할 때 클래스 버전이 맞는지 확인하기 위한 용도

                      제네릭(Generic)

                      클래스를 선언할 때 타입을 결정하지 않고 객체를 생성할 때 유동적인 타입으로 재사용하기 위해

                      형변환 필요X, 타입 에러 발생할 확률 감소

                      타입 추론은 메서드를 호출하는 코드에서 타입인자가 정의한대로 제대로 쓰였는지 살펴보는 컴파일러의 능력

                      • Something < T >의 위치에 지정한 타입이 대체되어서 들어가는 것 처럼 컴파일러가 인식함. Raw 타입 으로 사용하는데 컴파일러에 의해 필요한 곳에 형변환 코드가 추가됨
                      • int var3 = (Integer)var1.get(1); 이런식으로 자동으로 형변환 추가됨
                      • Object 타입으로 선언 시 String, Integer 등을 모두 인자로 줄 수 있고 컴파일 시점에서는 어떤 오류도 발생하지 않음
                      • 어떤 타입으로 형변환 할 수 있는지 조차 모호한 경우도 많기 때문에 잠재적인 오류를 가짐
                      • 컬렉션(collection) 클래스에서 제네릭을 사용하는 이유
                        • 컬렉션 클래스에 저장하는 인스턴스 타입을 제한하여 런타임에 발생할 수 있는 잠재적인 모든 예외를 컴파일타임에 잡아낼 수 있도록 도와줌

                        자바 Reflection API

                        • 클래스의 구조를 개발자가 확인할 수 있고, 값을 가져오거나 메소드를 호출하는데 사용
                        • JVM에서 실행되는 애플리케이션의 런타임 동작을 검사하거나 수정할 수 있는 기능이 필요한 프로그램
                        • 구체적인 클래스 타입을 알지 못해도 클래스의 타입, 메소드, 변수를 접근할 수 있게 해주는 API
                        • 예시: 스프링 프레임워크, 대표적 ORM 기술인 하이버네이트, jackson라이브러리 등
                          • 스프링에서는 런타임 시에 개발자가 등록한 빈을 애플리케이션에서 가져와 사용할 수 있게 되는 것

                          String과 StringBuffer의 차이

                          • String은 immutable(불변)하고 StringBuffer, StringBuilder는 mutable(가변)
                          • String (literal)
                          • 리터럴로 생성하면 String Pool에 생성, 문자열 값은 절대 변하지 않음

                          '+' 연산이나 .concat() 메소드를 이용해서 문자열 값에 변화를 줘도 메모리 공간 내의 값이 변하는 것이 아니라, String Pool에 메모리를 할당받아 새로운 String 클래스 객체를 만듬


0 개 댓글

답장을 남겨주세요