전체 글(472)
-
Go, Java Garbage Collector
Go, Java Garbage Collector 예전까지 가비지 컬렉터는 단순히 메모리에 들어 있는 안쓰는 변수 등을 개발자가 다 해제 시켜주기 귀찮다. 이러한 일을 자동으로 해주는 것이 가비지 컬렉터이다. 아직까지 정확히 어떤 원리를 통해 가비지 컬렉터가 작동하는지 잘 모르고 있다. 그래서 이번 기회에 정리해보려고 한다. JVM(Java8 HotSpot VM) Go 컬렉터 복수(Serial, Parallel, CMS, G1) CMS Only 컴팩션 있음 없음 세대별 GC 있음 없음 튜닝 파라미터 컬렉터에 따라 상이하나 복수 존재 GOGC Only Mark & Sweep 가비 컬렉터에 존재하는 Root를 시작으로 여러 객체에 접근할 수 있습니다. Root의 경우에는 실행중인 스레드, 정적 변수, 로컬 변..
2021.06.08 -
GRPC란 무엇인가?
우선 설명에 앞서 간략하게 표로 비교해 확인해보겠습니다. 기능 grpc JSON을 사용하는 HTTP API 계약 필수(.proto) 선택 사항(Open API) 프로토콜 HTTP/2 HTTP Payload Protobuf(소형, 이진) JSON(대형, 사람이 읽을 수 있음) 규범 엄격한 사양 느슨함. 모든 HTTP가 유효합니다. 스트리밍 클라이언트, 서버, 양방향 클라이언트, 서버 브라우저 지원 아니요(gRPC-웹 필요) 예 보안 전송(TLS) 전송(TLS) 클라이언트 코드생성 예 OpenAPI + 타사 도구 여기서 평소에 오른쪽의 방법만 사용하다보면 왼쪽의 다양한 정보들이 어색해 보입니다. 이러한 것이 무엇을 뜻하는지 한번 알아 봅시다. Protobuf(Protocol Buffers) 프로토콜 버퍼는 ..
2021.06.07 -
레벤슈타인 거리
[Python-이론/python-인공지능] - 레벤슈타인 거리를 이용해서 두 문장 비교하기 레벤슈타인 거리를 이용해서 두 문장 비교하기 레벤슈타인 거리를 이용해서 두 문장 비교하기 레벤슈타인 거리는 독일의 레벤슈타인이라는 사람이 고안한 알고리즘이다. 레벤슈타인 거리란 두개의 문장을 2차원 배열로 나타내어서 각 문장 hoony-gunputer.tistory.com 예전에 이런 글을 적은 적이 있는데 까먹고 잊고 살다가 최근 문제에서 만나면서 다시 풀어보게 되었다. 저 당시에는 dp도 몰랐는데 문제를보고 정리한거 같다. 레벤 슈타인 거리의 경우는 두개의 문자열을 어떻게 변형해주면(삭제, 교환, 덧셈) 등을 진행해줄 때 최소한 몇개의 변화를 통해서 만들 수 있는지 구하는 것이다. dp의 값은 해당 위치의 문자..
2021.04.26 -
특정 값을 이루는데 가장 적은 동전의 개수(Min Number Of Coins For Change)
특정 값을 이루는데 가장 적은 동전의 개수(Min Number Of Coins For Change) 이번에는 특정 값을 이루는데 가장 적게 사용된 동전의 개수를 구하는 문제를 풀어보겠습니다. 만약 7의 숫자를 구성하는데 이용하는 값들이 [1, 5, 10]이 있다고 치면 만들 수 있는 방법은 1*7, 2 * 5등이 있을 수 있습니다. 1원의 경우 1원의 동전들을 7개 사용해야하니깐 이보다는 2원과 5원을 1개씩 사용하여 답을 구하는 방식이 훨씬 적은 동전을 사용합니다. dp의 의미는 현재 동전을 만드는데 가장 적게 사용 되는 동전의 개수입니다. dp[7] = dp[7-2] + [2]; 위와 같이 dp식을 이루게 해주면 5원을 구성하는 방식, 2원을 구성하는 방식으로 문제를 해결할 수 있습니다. 더보기 #i..
2021.04.26 -
여러 수를 이용해서 목표하는 숫자를 만들 수 있는 방법(Number of ways to make change)
이번 문제의 경우에는 배열안에 있는 여러 개의 숫자를 이용해서 목표하는 값을 만들 수 있는 방법 개수를 구하는 문제입니다. 만약 목표하는 숫자가 6이고 이를 만드는데 사용할 수 있는 숫자가 [1, 5]라고 하면 구할 수 있는 방법 은 1 * 6, 1 + 5 가 될 수 있습니다. 1을 6개를 사용하거나 1과 5를 더해서 구하는 것이죠. 이번 Dp가 의미하는 것은 해당 돈(인덱스)을 만들 수 있는 방법입니다. 얘를 들어서 dp[1] = 1원일 때 만들 수 있는 방법 dp[2] = 2원일 때 만들 수 있는 방법 dp[3] = 3원일 때 만들 수 있는 방법입니다. 이 때 지정해준 동전을 사용해서 돈을 만들어야 하니 dp[i] += dp[i-지정해준 동전]이 됩니다. 즉 dp[6] += dp[6-1] 1원은 한개..
2021.04.26 -
인접하지 않는 최대 합 구하기
한 배열안에 있는 인접하지 않는 숫자들의 최대합을 구하는 문제를 풀어보겠습니다. 여기서 인접하지 않는 가장 큰 최대합은 75, 120, 135입니다. 이를 구하기 위해서는 dp를 활용해야하는데 이전의 정보를 활용하면 편하게 진행할 수 있습니다. array = [75, 105, 120, 75, 90, 135]; dp[i] = max(dp[i-1], dp[i-2] + array[i]); 각 dp의 배열은 현재 위치의 최대 값을 의미한다. i는 현재의 위치를 의미하고 i-1은 이전의 최대값그리고 i-2는 한칸 띄어있는 위치의 최대 값이고 한칸 띄어져 있기 때문에 현재 위치의 배열 값을 더할 수 있다. 이전의 값은 붙어 있기 때문에 현재의 값을 더할 수 없기 때문에 위의 점화식을 사용하면 인접하지 않는 수를 더..
2021.04.26