전체 글
-
[Python] - Garbage Collection개발/Python 2022. 9. 19. 01:47
GB( Garbage Collect ) 현대적인 언어에서 필수적인 존재로, 메모리를 관리에 도움을 준다. C#, JS, Python 등의 언어는 GC를 기본적으로 제공하며, C, C++과 같은 언어에서는 malloc(), free()와 같은 저수준의 메모리 관리 함수를 제공한다. GC를 왜 공부해야 하나? GC는 메모리를 자동으로 관리한다. 자동으로 메모리를 관리하여 최적화가 덜 되어있다. 인스타그램은 Python GC를 사용하지 않는다. (Instagram이 Python garbage collection 없앤 이유 참고) 기존 메모리 관리 문제점 1. 메모리가 남아있는 경우 2. 사용 중인 메모리 삭제 Python의 Garbage Collection Cpython에서의 메모리 관리 측면 Referenc..
-
[Python] - 동작원리( Build , hybrid )개발/Python 2022. 9. 18. 23:55
Python 작업 시, 순환 참조를 하게 만들면 Garbage가 쌓이게 되고 이게 증가하다 보면 실제 사용되는 메모리에 영향을 끼쳐 OOM이 나는 경우가 발생합니다. 이 때문에 Gabage Collection의 동작원리를 파헤치기 위해 어떻게 동작하는지 부터 정리해보려고 합니다. Python의 문법과 Compiler 전공 수업을 들은 바가 있기 때문에 상세한 내용은 생략하고 진행하겠습니다. 1. Build란? 컴퓨터가 실행 가능한 파일로 만드는 것을 Build라고 합니다. 컴퓨터는 0과 1만 이해 할 수 있습니다. 우리가 작성하는 코드(Python, C, Java, Ruby .. ) 과 같은 언어는 고급언어로 컴퓨터가 이해 할 수 있는 기계어로 변경해주는 과정을 말합니다. 일반적으로 Build하는 과정을..
-
[프로그래머스] - 여행경로Algorithm/프로그래머스 2022. 9. 16. 18:34
문제 [프로그래머스] - 여행경로 https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3..
-
[프로그래머스] - 섬 연결하기Algorithm/프로그래머스 2022. 9. 16. 18:27
문제 [프로그래머스] - 섬 연결하기 https://school.programmers.co.kr/learn/courses/30/lessons/42861# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요. 다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 ..
-
[프로그래머스] - 거스름돈Algorithm/프로그래머스 2022. 9. 15. 16:21
문제 [프로그래머스] - 거스름돈 https://school.programmers.co.kr/learn/courses/30/lessons/12907 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 Finn은 편의점에서 야간 아르바이트를 하고 있습니다. 야간에 손님이 너무 없어 심심한 Finn은 손님들께 거스름돈을 n 원을 줄 때 방법의 경우의 수를 구하기로 하였습니다. 예를 들어서 손님께 5원을 거슬러 줘야 하고 1원, 2원, 5원이 있다면 다음과 같이 4가지 방법으로 5원을 거슬러 줄 수 있습니다. 1원을 5개 사용해서 거슬러..
-
[프로그래머스] - 가장 긴 팰린드롬Algorithm/프로그래머스 2022. 9. 15. 16:12
문제 [프로그래머스] - 가장 긴 팰린드롬 https://school.programmers.co.kr/learn/courses/30/lessons/12904 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 이해 더보기 문제 설명 앞뒤를 뒤집어도 똑같은 문자열을 팰린드롬(palindrome)이라고 합니다. 문자열 s가 주어질 때, s의 부분문자열(Substring)중 가장 긴 팰린드롬의 길이를 return 하는 solution 함수를 완성해 주세요. 예를들면, 문자열 s가 "abcdcba"이면 7을 return하고 "abacde"이면 3을 return합..
-
[Kafka] - 8. acks / Batch / Page Cache&Flush개발/Kafka 2022. 9. 15. 03:28
목차 1. Kafka Acks 2. Kafka Batch 3. Page Cache&Flush 1. Kafka Acks Acks은 Network에 3hand-shake에서 나오는 개념으로, Data가 안전하게 전송하였는지 여부를 확인하는 용도입니다. 이와 같이 Kafka에서도 동일하게 Message(Data)에 대해 Producer가 Kafka에게 전송이 잘 되었는지 알고 싶어합니다. 1-1) Ack Request가 성공할 떄, 사용되는 Producer에 의해 설정되는 Parameter Case1) Acks = 0 Acks가 필요하지 않다는 의미 메시지 손실이 있더라도 빠르게 전송하는 경우 외에는 자주 사용되지 않는다. Case2) Acks = 1 Default 값이다. Leader가 Message를 수신..
-
[Algorithm] - LCA ( 최소 공통 조상 )Algorithm/Algorithm 2022. 9. 15. 00:46
LCA ( Lowest Common Ancestor ) 최소 공통 조상은 트리 구조에서 임의의 두 정점이 갖는 가장 가까운 조상 정점을 의미한다. 아래 그림에서 노드 13번과 15번 노드의 공통 조상을 찾는다한다. 따라 올라가게 되면 5번 노드가 공통 조상이다. 아래 그림에서 노드 13번과 11번 노드의 공통 조상을 찾는다한다. 따라 올라가게 되면 1번 노드가 공통 조상이다. 알고리즘 1. a,b 노드의 깊이를 파악한다. 2. 깊이가 동일하다면 상위 노드를 찾아가면서 동일한 노드가 나올 때까지 추적 그렇다면 노드의 깊이를 어떻게 파악할 것인가? DFS로 root 노드로 부터 깊이를 미리 구해둔다. 또한, 깊이를 구하면서 자신의 부모 노드를 기억하여 두고 부모 노드로 추적할 수 있게끔 할 수 있어야한다. ..