전체 글 19

Garbage Collection(3) - Java GC Tuning

이전 포스팅에서는 자바의 Garbage Collector에 대해 다뤘습니다. 이번 포스팅에서는 Garbage Collector를 애플리케이션에 맞게 튜닝하는 방법에 대해 알아봅시다. Garbage Collectors * 이 포스팅에서 다루는 java의 버전은 18입니다. Serial GC -XX:+UseSerialGC Parallel GC -XX:+UseSerialGC Concurrent Mark Sweep(CMS) GC(Removed) Garbage-First(G1) GC -XX:+UseG1GC Z GC -XX:UseZGC Shenandoah GC -XX:+UseShenandoahGC Epsilon GC(Experimental) -XX:+UnlockExperimentalVMOptions -XX:+Use..

공부 2023.01.16

Garbage Collection(2) - Java GC

이전 포스팅에서 Garbage Collection에 대한 전략 세가지를 다뤘습니다. 이번 포스팅에서는 추적 전략을 사용하는 java의 Garbage Collector에 대해 다룹니다. Java GC(Garbage Collector) * 이 포스팅에서 다루는 java의 버전은 18입니다. 이전 포스팅에서 모든 스레드에서 변수 혹은 그 변수의 멤버 등으로 참조하지 않는 객체를 garbage라고 하고 이를 찾는 것을 Garbage Collection이라 했습니다. java에서는 garbage를 도달할 수 없다(Unreachable)고 하고, 반대로 하나 이상의 스레드에서 직/간접적으로 참조되는 객체를 도달할 수 있다(Reachable)고 표현합니다. garbage를 런타임에 찾는 알고리즘이나, 이를 수행하는 ..

공부 2023.01.16

Garbage Collection(1) - 탈출 분석과 참조 카운팅, 추적

우리는 프로그래밍을 하면서 다양한 한정적인 자원을 다룹니다. 네트워크 소켓이나, 메모리와 같이 사용한 후 돌려줘야할 것들이죠. 그 중에서, 메모리에 대한 이야기를 하려고 합니다. var a = new Integer(10); var b = a; System.out.println(a); a = null; // 아직 객체는 참조되는중 b = null; // 더 이상 해당 객체는 참조되지 않음 코드를 읽어보면, new Integer(10)은 더 이상 사용되지 않는 객체겠죠? 좀 더 일반화하자면, 모든 스레드에서 변수 혹은 그 변수의 멤버 등으로 참조하지 않는 객체는 제거해도 될겁니다. 이런 객체를 garbage라고 하고, 이를 찾는 것을 Garbage Collection이라고 합니다. garbage인지 어떻게 ..

공부 2023.01.16

2021.01 ~ 2023.01 회고

생각해보니, 이렇다할 회고를 작성하지 않은 듯 해서 기록 보관용으로 작성하기로 했다. 2021 - 2021.01 ~ current 'weekly challenges' 알고리즘 스터디 GitHub - solve-boj/weekly-challenges: 니실력에잠이오냐 니실력에잠이오냐. Contribute to solve-boj/weekly-challenges development by creating an account on GitHub. github.com 알고리즘 문제를 꾸준히 풀자는 생각으로 만든 스터디로, 일주일동안 문제를 풀고, 벌금을 잘 한 사람들에게 배분한다. 6개월쯤 진행 후 현재는 벌금은 사라진 상태이나 여전히 몇몇 스터디원들이 올리고 있다. - 2021.03 부산대학교 입학 공부 좀 더 ..

기타 2023.01.10

JS - Tag Function

Mozilla Dev - tagged_templates 보고 신기해서 몇개 만들어봤다. 각 원소를 퍼센트로 나타내기 function persent(strings, ...values){ let result = strings[0]; let sum = values.reduce((a,b) => a+b); for(let i=0; i!=values.length; ++i) result += `${Math.floor(values[i]/sum*1000)/10}%` + strings[i+1]; return result; } // a 50% b 33.3% c 16.6% d 0% console.log(persent`a ${3} b ${2} c ${1} d ${0}`) 첫 인자로 오는 strings에 ${}로 split된 문자..

공부 2022.11.02

도커 - 배경

배경 개발을 하다보면 다양한 환경이 있고, 이에 맞춰 여러 라이브러리들을 설치합니다. 하지만 로컬에서 잘 돌아가던 프로그램도 배포 환경이 개발 환경과 다르면 예상치 못한 동작을 할수도, 배포가 실패하기도 합니다. only my machine VM 가상머신을 이용하면 라이브러리가 설치된 상태를 추출할 수 있고, 이를 이미지라고 합니다. 이걸 배포하면 됩니다! 환경이 완전히 일치하니 별로 해줄것도 없고요. 다만 이미지 파일의 용량이 너무 큽니다. 즉, 공유하기도 어렵습니다 예를 들어, 우분투에 파이썬을 설치하고, pillow 라이브러리를 설치하고 싶습니다. 하지만 pillow 까진 아니더라도, 이미 무수히 많은 사람들이 우분투에 파이썬을 설치해뒀을텐데, 이걸 재활용하는게 편하지 않을까요? 하지만 가볍게 공유..

공부 2022.08.08

숫자의 힘 | boj:2793

2793번: 숫자의 힘 양의 정수 N이 있을 때, N을 나눌 수 없는 가장 작은 수 A를 찾을 수 있다. 예를 들어, 6은 4로 나누어 떨어지지 않으므로, A는 4가 된다. 이렇게 A를 찾은 다음, 그 수를 다시 N이라고 하고, 나눌 수 www.acmicpc.net f(n)을 n으로 나눌 수 없는 가장 작은 수로 정의하자 이떄 strength(N) = strength(f(N)) + 1로 둘 수 있다. f(N) = 2 인 경우는 N이 2로 나눠 떨어지지 않는 수일 때 일것이다. f(N) = 3 인 경우는 N이 2로 나눠 떨어지지만 3으로 나눠떨어지지 않는 수 일 것이다. f(N) = k 인 경우는 N 이 2,3,...,k-1로 나눠 떨어지지만 k로 나눠떨어지지 않는 수 일 것이다. 이때 2,3,...,k-..

알고리즘 풀이 2022.08.06

정수를 컨테이너로 사용하기

주의: undefined behavior를 다룹니다. C++20 이후에는 ranges::lower_bound, ranges::upper_bound를 사용하면 됩니다. ps에서, 정수를 자체를 반복자로 사용할 수 있다면 정수 영역에 대한 이분 탐색을 한다던가, 복사를 할 수 있다. 그럼 이에 맞게 반복자 클래스를 만들어서 정수를 적당히 감싸면 되지 않을까? 소스를 보자 class VI { ll _N; public: using iterator_category = random_access_iterator_tag; using difference_type = ll; using value_type = ll; using pointer = ll*; using reference = ll&; VI(ll N):_N(N) {..

흑마법 2022.08.06