분류 전체보기
-
RSA 암호화 수학적 원리 이해하기Security 2023. 9. 24. 22:28
- 목차 함께 보면 좋은 글. https://westlife0615.tistory.com/411 CA (Certificate Authority) 알아보기 - 목차 소개. CA 는 Certificate Authority 의 약자입니다. 흔히 https 프로토콜에서 사용하는 인증서를 통한 인증 기법을 의미하구요. 이번 소개글에서 CA 가 네트워크 통신에서 어떤 방식으로 적용되는 westlife0615.tistory.com * 소개 RSA 는 Rivest-Shamir-Adleman 의 약자입니다. 암호화 방식의 하나로 Rivest, Shamir, Adleman 세 사람에 의해서 개발된 암호화 방식이라 세 사람의 이름의 첫 글자를 따서 RSA 라고 불립니다. RSA 는 비대칭 암호화 알고리즘으로 소수 (Prim..
-
HDD (hard disk drive) 깊이 이해하기Computer Architecture 2023. 9. 23. 23:07
- 목차 * 소개 HDD 는 hard disk drive 의 약자입니다 왜 Hard Disk 라고 이름이 붙여졌는지 알아보자면, Hard 라는 명칭은 과거에 플로피 디스크와 같이 내구성이 떨어지고 디스크와 차별점을 두기 위해서 붙여졌습니다. 그리고 Disk 는 CD 와 Flatter 같이 둥근 원형의 형태를 취하기 때문에 Disk 라고 이름이 붙여졌습니다. 그래서 Hard Disk 는 기존의 저장 장치들보다 내구성이 뛰어나며 둥근 형태의 저장 장치라고 볼 수 있습니다. 그리고 HDD 는 비휘발성 기억 장치입니다. 기억장치는 휘발성 또는 비휘발성으로 나뉩니다. RAM 과 같은 메모리들은 휘발성 기억장치로 전원이 꺼지게 되면 데이터들이 초기화됩니다. 반면 HDD 나 SSD 같은 기억장치들은 비휘발성으로 전원..
-
[Programmers] 숫자 카드 나누기 (GCD, 유클리드 호제법, Divisor)Algorithm 2023. 9. 22. 21:21
- 목차 문제 설명. https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 철수와 영희는 선생님으로부터 숫자가 하나씩 적힌 카드들을 절반씩 나눠서 가진 후, 다음 두 조건 중 하나를 만족하는 가장 큰 양의 정수 a의 값을 구하려고 합니다. 철수가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 영희가 가진 카드들에 적힌 모든 숫자들 중 하나도 나눌 수 없는 양의 정수 a 영희가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고, 철수가 가진 카드들에 적..
-
[memory management] page 알아보기System 2023. 9. 22. 17:28
- 목차 * 소개page 는 메모리를 구성하는 단위입니다. 하나의 프로그램이 메모리로 로딩이 될 때 프로그램을 구성하는 데이터들은 page 라는 단위로 나뉘어져서 메모리에 로딩이 됩니다. 보통 프로그램은 code segment 로 표현되는 코드 영역과 data segment 라고 불리는 데이터 영역으로 나뉘는데요. 이러한 segment 들이 page 라는 단위로 메모리에 존재합니다. page 는 디스크와 메모리 사이로 전달되는 전송의 단위이자 저장되는 단위입니다. 그리고 page 의 단위는 보통 4KB 인 경우가 많은데, 프로그램 하나의 크기가 page 의 사이즈와 일치하는 경우는 거의 없을 겁니다. 그래서 하나의 프로그램으로부터 생성된 많은 page 들은 메모리 상에서 흩어져서 존재하게 되는데요. 이러..
-
Call Stack 이해하기System 2023. 9. 21. 17:24
- 목차 * 소개 어떤 프로그램을 사용한다는 의미에 대해서 생각해 볼 필요가 있습니다. 예를 들어, 크롬같은 웹 브라우저를 사용한다거나 Spring 같은 서버를 실행시킨다거나 하는 행동들을 말이죠. 프로그램은 컴파일 과정을 거쳐 바이너리 파일이 되는데요. 우리가 흔히 아는 0과 1로 구성된 상태가 되어 CPU 에 의해서 인식될 수 있게 됩니다. 이러한 바이너리 상태의 프로그램이 실행 상태가 되면 프로세스라고 불립니다. 프로세스는 CPU 를 비롯한 컴퓨터 리소스에 의해서 순차적으로 실행되게 됩니다. 실행 방식은 여러 종류가 있습니다. - Sequential Execution : 일반적인 실행입니다. Top-Down 방식으로 한 줄 씩 실행되는 방식 - Branching Execution : If-else ..
-
재귀함수 (Recursive Function) 이해하기Algorithm 2023. 9. 21. 17:23
- 목차 관련된 글 Call Stack 이해하기 Call Stack 이해하기 - 목차 * 소개 어떤 프로그램을 사용한다는 의미에 대해서 생각해 볼 필요가 있습니다. 예를 들어, 크롬같은 웹 브라우저를 사용한다거나 Spring 같은 서버를 실행시킨다거나 하는 행동들을 말이 westlife0615.tistory.com 소개. 재귀함수란 어떤 함수가 자기 자신을 호출하는 형태의 함수입니다. 왜 자기 자신의 호출할까요? 재귀함수 형태로 해결할 수 있는 문제들이 있는데요. 대표적인 문제가 - 팩토리얼 구현하기 - 피보나치 수열의 합구하기 - binary tree search 등이 있습니다. 이 모두 공통점이 있는데요. List 를 활용하는 문제라는 점입니다. 필요충분조건은 아니지만 List 자료구조를 사용하는 알..
-
Kafka Replication (메시지 복제) 이해하기Kafka 2023. 9. 21. 07:34
- 목차 Replication 이란 ? Topic 은 Kafka Message 들을 저장하고 관리하는 주체입니다. 이러한 Topic 은 여러 Partition 들로 나뉘어집니다. 기본값으로 제공되는 Partition 은 3개입니다. 그래서 Topic 으로 삽입되는 Kafka Message 들을 각각 Partition 으로 나뉘어져 저장이 됩니다. Partition 의 갯수만큼 N 분의 1로 저장되는 느낌이죠. 그리고 각 Partition 은 Replication 처리가 되어 여러 Broker 들로 복제되어 분산됩니다. Partition 의 Replication 은 카프카가 데이터의 Persistency, Consistency 그리고 Fail-Over 를 구축하는 방식입니다. Topic - Partitio..
-
[Algorithm] Selection Sort (선택 정렬) 이해하기Algorithm 2023. 9. 21. 06:33
- 목차 * 소개 선택 정렬 ( selection sort ) 는 가장 일반적이고 직관적인 정렬방법입니다. 배열의 가장 크거나 작은 수를 찾아 정렬되어야 할 위치로 이동시킵니다. 예를 들어, 가장 큰 수를 찾아 배열의 첫번째 위치에 두고, 두번째 큰 수를 찾아 두번째 자리에 둡니다. 이러한 동작을 배열이 정렬될 때 까지 반복합니다. 가장 큰 수를 찾아 알맞게 정렬시키는 방식이 직관적이기 때문에 정렬 알고리즘 중에서 가장 이해하기 쉬운 정렬 방식입니다. 간단하게 시간복잡도를 살펴보겠습니다. 만약 배열의 길이가 n 이라고 한다면, 모든 수들 중에서 가장 크거나 작은 수를 찾는데에 n 의 시간이 소요됩니다. 왜냐하면 모든 값들을 일일이 비교해야하기 때문입니다. 그리고 나머지 모든 값들도 가장 그거나 작은 수를..
-
[Algorithm] bubble sorting 이해하기Algorithm 2023. 9. 20. 17:44
- 목차 * 소개 버블 정렬은 아주 단순한 정렬 알고리즘입니다. 나열된 숫자들을 일일이 비교하는 연산을 수행하는데요. 그래서 시간복잡도는 크지만 직관적으로 이해할 수 있는 정렬 알고리즘입니다. 버블 정렬의 정렬 방식에 대해서 간단히 설명해보겠습니다. 무작위로 나열된 숫자들이 있다고 가정합니다. 이 나열된 숫자들 중 첫번째 수와 그 인접한 수를 한데 묶어 크기를 비교합니다. ( 즉, 첫번째 수와 두번째 수를 비교하는 것입니다. ) 그리고 정렬 방식에 따라 두 수의 위치를 변경합니다. (swap) 오름차순인 경우에는 큰 수가 뒤에 위치하고 내림차순읜 경우에는 작은 수가 뒤에 위치합니다. 그리고 두번째 수와 그 인접한 수를 비교하고 swap 을 합니다. 그리고 세번째 수와 그 인접한 수를 비교하고 swap 을..
-
Linux date 알아보기Linux & Shell 2023. 9. 20. 17:17
- 목차 * 소개 Linux Shell 에서 date 관련 예시들을 기록하려고 합니다. * yyyy-mm-dd 포맷으로 출력 date "+%Y-%m-%d" 2023-09-20 * timestamp 로 출력 date +%s 1695168330 * 시간 연산하기 date -d "-1 days" Tue Sep 19 00:07:29 UTC 2023 date -d "-1 days" +"%Y-%m-%d" 2023-09-19 * 30분 단위로 올림. echo now is $(date +"%Y-%m-%dT%H:%M:%S%z") minute=$(date +"%M"); minute_int=$((minute)); if [ $minute_int -lt 30 ]; then date +"%Y-%m-%dT%H:30:00%z"; e..