전체 글
-
Collaborative Filtering 이해하기AI-ML 2023. 9. 25. 22:52
- 목차 키워드.Collabortive FilteringImplicit vs ExplicitData Imputation 들어가며."Collaborative Filtering (협업 필터링)" 은 흔히 "Content-based Filtering" 과 흔히 비교됩니다. 두가지 기법 모두 특정 사용자가 선호할 상품을 예측하여 추천하기 위한 모델링 기법인데요.Content-based Filtering 은 item 의 주요한 특징을 활용하여 user 에게 상품을 추천하며,Collaborative Filtering 은 item 과 user 간의 상호작용에 집중합니다. Content-based Filtering.자세한 설명을 위해서 먼저 Content-based Filtering 의 예를 들어볼까요 ?아래와 같이 ..
-
java Annotation 이해하기Language/Java 2023. 9. 25. 22:17
- 목차 소개. java Annotation 은 일종의 마커입니다. Annotation 그 자체만으로 특별한 기능을 수행하는 것은 아닙니다. Annotation 이 붙은 class, method, field 들이 컴파일러 또는 런타임 환경을 거치면서 특별한 기능을 수행하게 됩니다. 컴파일러가 컴파일을 하던 도중에 특정 Annotation 을 발견한다면, 약속된 Annotation 의 처리방식에 따라서 어노테이션이 붙은 class, method, field 를 컴파일합니다. 그리고 Spring 과 같은 런타임 환경에 어플리케이션을 구동하는 과정에서 Annotation이 붙은 class, method, field 들을 발견하면 이에 상응하는 처리를 수행합니다. 예를 들어보겠습니다. @Deprecated. 우..
-
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 의 시간이 소요됩니다. 왜냐하면 모든 값들을 일일이 비교해야하기 때문입니다. 그리고 나머지 모든 값들도 가장 그거나 작은 수를..