전체보기(194)
-
동시성과 병렬성
동시성(Concurrency)과 병렬성(Parallelism) 동시성이란 동시성은 한 번에 여러 스레드를 다루는 것을 의미합니다. 동시성은 하나의 코어에서 여러 스레드가 번갈아가며 실행되면서, 동시에 실행되는 것처럼 보이지만 실제로는 시분할하여 번갈아 실행되는 것입니다. 병렬성이란 병렬성은 한 번에 여러 스레드를 실행하는 것을 의미합니다. 병렬성은 다중 코어에서 실제로 각 코어들이 동시에 실행됩니다.
2021.02.14 -
DDD
DDD(Domain Driven Design)란 객체 지향에서부터 객체 지향에서의 핵심은 실세계의 객체들이 서로간의 상호작용을 바탕으로 책임, 협력, 역할의 관점을 가지고 메시지를 교환하는 것입니다. 즉 객체지향에서의 핵심은 결국 객체(무언가를 만드는 주체)입니다. 객체들을 어떻게 하면 추출할 수 있을까요? 어떤 객체가 필요한지 어떻게 알 수 있을까요? 객체들은 어떻게 해야 상호작용할 수 있을까요? 위의 질문들을 해결할 수 있는 방법이 바로 DDD(도메인 주도 설계)입니다. 도메인이란 도메인의 사전적 의미는 '정보와 활동의 영역'을 말하며, DDD에서는 어플리케이션 내의 로직들이 관여하는 정보와 활동의 영역이라고 받아들여 집니다. DDD의 개념 DDD란 도메인을 중심으로 설계해 나가는 것을 의미합니다. ..
2021.02.05 -
Cron 표현식
Cron Cron이란 Cron은 원래 유닉스 계열의 운영체제에서 시간 기반으로 Job Scheduling을 하는 프로세스의 명칭입니다. 그러나 현재는 그냥 Job Scheduler와 동일한 의미처럼 사용하고 있습니다. Cron 표현식이란 간단히 말해서 스케줄러 계열의 표현식이빈다. 정규표현식과 마찬가지로 구현체에 따라서 조금씩 다른 부분도 있습니다. Cron은 기본적으로 아래와 같은 형태로 6 ~ 7자리로 사용됩니다. Cron 표현식 - 필드 Cron 표현식 - 특수문자 * : 모든 값을 뜻합니다. ? : 특정한 값이 없음을 뜻합니다. - : 범위를 뜻합니다. ex) 월요일에서 수요일까지는 MON-WED로 표현 , : 특별한 값일 때만 동작함을 뜻합니다. ex) 월, 수, 금 -> MON, WED, FR..
2021.01.29 -
HMAC
MAC이란 MAC의 개념 MAC은 Message Authentication code의 줄임말로, 메시지를 인증하기 위해서 사용하는 정보입니다. 예를 들어, 유저 A가 인터넷으로 연결된 유저 B에게 메시지를 보냈다고 가정합니다. 이 메시지에서 A가 보냈다는 것은 매우 중요한 정보를 담고 있으며, 따라서 위조 혹은 변조되면 안 됩니다. 메시지가 인터넷을 가로지르면 메시지 변조와 위조의 위험에 노출됩니다. 이러한 문제를 해결하기 위해서는 메시지의 무결성과 메시지 인증이 담보되어야 합니다. 무결성이란 '메시지가 변조되지 않았다'는 성질이며, 메시지 인증이란 '올바른 송신자로부터 온 메시지'라는 성질입니다. MAC는 메시지에 붙이는 작은 정보로 이를 이용해서 무결성과 인증 문제를 해결합니다. MAC의 동작 원리 ..
2021.01.14 -
Container와 VM의 차이
가상화(Virtualization)란 가상화의 개념 가상화는 하드웨어 리소스를 추상적으로 표현하여 사용하는 것을 말합니다. 예를 들어 가상 메모리라고 하면, 메모리라는 하드웨어 리소스를 추상적으로 표현하여 사용합니다. 즉, 실제 메모리를 추상화하여 새로운 계층인 가상 메모리를 만들어냅니다. 추상 계층이 1단계 늘어났기 때문에 메모리에 접근할 때는 가상 메모리 -> 물리 메모리의 형태가 되고, 프로그래머는 물리 메모리의 특성에 대해 알 필요가 없게 됩니다. 또한 가상화 덕분에 수많은 장점이 부가적으로 생길 수 있습니다. 가상화의 종류 가상 머신 가상 머신의 구현 방법에 따라 다르지만, 기본적으로 하이퍼바이저가 여러 개의 가상 머신을 띄우고 실행합니다. 이때 중요한 것은 각 가상머신마다 독립된 실행 환경을 ..
2020.12.10 -
Huffman Coding
Huffman Coding이란 고정 길이 코드 vs 접두어 코드 고정 길이 코드는 대표적으로 아스키 코드가 있습니다. 아스키 코드는 항상 8bit의 길이를 가지고 있습니다. 다루기에는 간단하지만, 저장 공간 활용에 있어서 제한이 있습니다. 이를 해결하기 위해서 가변 길이 코드가 존재합니다. 가변 길이 코드 중에서도 접두어 코드는 앞서 나온 문자가 다음에 나올 문자의 접두어가 되면 안 되는 특징을 가진 코드입니다. 예를 들어 다음은 접두어 코드가 아닌 경우 입니다. a: 01 b: 101 c: 010 위 코드에서 01은 010의 접두어이기 때문에 접두어 코드가 아닙니다. 반면 다음은 접두어 코드의 예입니다. a: 01 b: 10 c: 111 이 접두어 코드를 아스키코드로 한다면 총 24bit의 저장 공간을..
2020.11.27