unreachable object를 Heap에서 비워주는 작업을 하는것이 GC인데 어떻게 작동하는지, 어떤 알고리즘을 이용해서 unreachable을 판단하는지 알아보자. 일반적으로 언어 런타임은 힙이 소진 되고 mutator thread의 메모리 할당 요청을 충족하는
정의: 데이터베이스 관리 시스템 또는 유사한 시스템에서 상호작용의 단위이다. 이때 트랜잭션은 하나의 쿼리를 날리는것을 의미하지는 않는다. 실제 db에 해당하는 계산을 한번에 Commit(DATABASE에 영향을 끼침)시키는것을 말한다. 그림과 같이 하나의 트랜잭션에
최대 노드 수: 10000개그룹을 최대 몇 개까지 나눌 수 있는지: 10000개완전 탐색 시 10000! \* 10000^2따라서 각 합에 대한 정보를 memoryzation 해야 하고 검색을 빠르게 해야 한다. 일단 다이내믹 프로그래밍으로 풀어야 할 것 같은 생각이
파이썬의 deepcopy는 c++, c에서의 copy와는 질적으로 차이가 있다. c,c++ 에서는 deepcopy는 assign operator로 이루어지고, 이때 주소값은 변하지 않고 값만 변하게 되는데, 파이썬의 copy.deepcopy()의 경우 새로운 주소값과
로 타입 사용하게 되면 개발자가 원하지 않는 인스턴스 타입이 들어간다고 해도 컴파일 시점에 잡아 낼 수 없게 된다. 따라서 항상 명시적으로 선언을 해서 컴파일 시점에 오류를 잡아내게 하는게 좋다.예 2) 의 와일드 카드방식으로 구현하게 되면 로 타입을 이용할 때처럼 유
핵심로직과 부가로직을 구분하기 위해서, 혹은 변하는 부분, 변하지 않는 부분을 나눠서 보기 위해서 AOP를 사용하는데 이를 구현하기 위한 여러가지 디자인패턴과 방법들이 있다. 각 방법들의 파이썬에서는 일급함수를 이용하는 방법도 있고, 상속의 방식을 이용한 탬플릿 메서드
정의는 "재사용 단위는 릴리스 단위와 같다."말을 풀어 보면, 우리는 계속적으로 재사용 하고 싶은 컴포넌트에 관해서 배포(릴리즈)하게 되는데, 이때 배포단위는 재사용 단위랑 같다는 말이다. 그렇다면 왜 굳이 단위를 가지고 설명할까? 만약 릴리스 버전이 없다면, 재사용
클린아키텍쳐에서 정의하는 컴포넌트란 시스템의 구성요소로 배포할 수 있는 가장 작은 단위를 뜻함, 또는 런타임에 플러그인 형태로결합할수있는동적 링크파일을 뜻함예를들면 자바프로그래밍에서 jar파일과거에는 개발자가 프로그램을 생성시 메모리 위치를 지정, 이때 한번 지정된 위
1\. 설계(design)와 아키텍처(architecture) 차이: 없다.아키텍처는 고수준(전체적인 큰그림)의 결정사항부터 저수준(디테일)세부사항까지 모두를 아우르는말2\. 목표: 유지보수하기 좋고, 유연하며 요구사항을 만족시키는 시스템을 만드는것3\. 나쁜 설계란?
Serializier를 자유롭게 커스텀마이징 하기 위한 정도로의 깊이를 알고 싶다. Product-level의 개발을 하는데 있어서, 수많은 Model을 가지고 있고, to_representation, to_internal에 관해 다양한 방법으로 처리할 필요가 있고,
TodayHow(how much, how can, how long for)Growth오늘 내가 성장을 (얼만큼 했고, 어떻게 가능했고, 그걸 가능하게 하기위해 얼만큼의 시간을 쏟았고)를 체크하기 위한 수치이자 기록이다. 이때 각 수치의 기준은 자신의 주관적인 관념에 반
비선점 알고리즘중 하나인 SJF는 최소 평균 대기 시간을 갖게하는 CPU스케줄링 알고리즘이다.
다음과 같은 무가중 그래프 G(V,E)가 주어졌을때 서로 매칭 된 Verex인 (1,2) 에 대해선 Matching이라고 하고 매칭되지 못한 Vertex(3,4,5)에 대해서 Exposed됐다고 합니다. 이때 Matching은 한개만 존재 할 수 있다.Alternati
Source: 시작점Sink: 도착점Capacity: 용량 (간선에서 소화 가능한 최대 양 or 값)Flow: 유량 (간선에서 용량을 점유하고 있는, 사용하고있는 양 or 값)c(a, b): 정점 a 에서 b로, 소화 가능한(남은) 용량 값f(a, b): 정점 a 에서
[1.개념] 이분 매칭의 경우 각 시작점과 끝점이 1대1 매칭이 되야한다. 즉 Injective function(단사 함수)를 뜻한다. 다음상황을 보자 각 지원자가 있고(1~3), 지원가 원하는 직업들이(A~C) 있다. 이때 모든 지원자가 최대한 많은 직업과 1대1
Aop(asepect oriented programming)을 하는데 있어서 우리는 시점을 정할 수 있다. 이를 위해 간단하게 java의 실행 프로세스를 보면 다음과 같다.이때 우리가 aop-weaving(크로스 커팅)할 수 있는 프로세스는 소스코드,컴파일 시점,바이트
1\. 문제 제기Spring에서 제공하는 @Aspect를 사용하면 컴파일 빈으로 등록되어 다이나믹 프록시가 작동하게 된다. 하지만 이를 사용하게 되면 문제점이 발생 할 수 있다. aop로 등록한 두 메서드가 있을때,메서드에서 메서드를 호출하게 되면 내부메서드의 aop가
[문제이해] 다음과 같이 높이가 주어졌을때 가장큰 직사각형의 넓이를 구하면 되는문제다. 이문제에 대해서 브루트포스하게 풀게 되면 O(N^2)이 발생하게 된다. 조건이 1 <= heights.length <= 10^5 이므로 시간초과가 발생하니 조금더 효율적으로 처리
https://leetcode.com/problems/24-game/숫자 4개가 주어지고 (,+,/,-)연산자와 (,)를 모두 써서 숫자 24를 만들 수 있는지가 문제였다.일단 숫자는 정렬조건은 주어지지 않고 자유롭게 배치할 수 있다.일단 숫자 4개에 관해서
https://www.acmicpc.net/problem/19235개인적으로 이문제가 지금까지 풀었던 모든 삼성문제중 가장 빡센 문제 였던것 같다.이문제는 각종스킬 및 어려운 알고리즘을 요구하지 않는다. 단 기능구현에 있어 가장 중요한 각절차들이 실수하기가 쉬