알고리즘 배낭문제

가장 흔한 문제인 배낭문제는 다양한 문제 풀이법이 있습니다. 먼저 가장 쉽게 재귀로 풀어보겠습니다. 재귀는 내가 이재품을 살때와 안살때를 재귀함수로 구현해주면됩니다. 일단 간단하게 배낭크기를 10으로 잡고 5개의 물건이 있다고 보면됩니다. 간단한 코드는 위와같다. 하지만 위의 코드는 계산했음에도 불구하고 계산할려는 특징이 있어 메모리로 계산을 했는지 안했는지 추가해야합니다. 이를 가지치기라고 하는데 다음에 설명하고 더보기…

스레드로 인한 메모리 시각화

스레드의 메모리영역의 읽기 쓰기 수정 같은 작업을 시각화 해주는 온라인 서비스를 발견하였습니다. 사이트는 http://svr-pes20-cppmem.cl.cam.ac.uk/cppmem/ 해당 프로그램은 모든 교차 실행을 판단하고 각 스레드를 시각해주는 역할을 합니다. 메모리 모델에 대해서는 다음의 링크를 참조해주시기 바랍니다. 해당툴로 스레드를 정의할려면 삼중 중괄호를 해주고 그안의 작업에 대해 정의를 할려면 괄호를 해주면됩니다. 일단 간단하게 두개의 스레드를 만들고 data 더보기…

netdata 시스템 모니터링 툴

회사에서 기존 IDC에서 AWS로 단순히 옮기다 보니 여러이슈가 발생하였고 롤백을 한적이 있습니다. 롤백후 전과 같은 실수를 반복하기 싫어서 IDC에서 어느정도 트래픽이 왔다가는지 어느정도 요청이 들어오는지를 실시간으로 볼 필요가 있었습니다.  기존에는 Nagios로 알람을 munin으로 서비스 상황을 보았으나 툴이 여러개 있다보니 이를 통합할 필요가 있었고 실시간 모니터링이 힘든점,알람서비스를 커스텀마이징 하기힘든점이 있어 netdata라는 모니터링 더보기…

C++ 두개중에 작은수를 유연하게 구하기

c++하면서 std::min을 사용하는데 이 함수의 문제는 min의 아규먼트의 타입이 같아야 합니다. 이러한 문제때문에 위의 C++ template 책에서는 이를 해결할려고 많은 시도를 보여줍니다.  결과적으로 막땅한 방법을 보여주지않고 max나 min의 함수를 이용해서 템플릿을 설명해줍니다. 결국 저만의 코드를 만들어 이를 해결해 볼려고했습니다. 코드는 다음과 같습니다. 메타 프로그래밍을 좀 이용하였습니다.  원리는 비교할려는 타입의 크기를 더보기…