2024/03 6

백준6593: 상범 빌딩(Java)

https://www.acmicpc.net/problem/6593 6593번: 상범 빌딩 당신은 상범 빌딩에 갇히고 말았다. 여기서 탈출하는 가장 빠른 길은 무엇일까? 상범 빌딩은 각 변의 길이가 1인 정육면체(단위 정육면체)로 이루어져있다. 각 정육면체는 금으로 이루어져 있어 www.acmicpc.net 3차원 배열의 그래프 탐색 문제였다. 특별한 알고리즘은 없었고 차원 하나만 더해주면 되는 단순한 탐색 문제였다. 문제푸는데 넘 오래걸린다,, package BOJ; import java.io.*; import java.util.*; public class BOJ6593 { private static final char WALL = '#'; private static final char ESCAPE = ..

플밍/문제풀이 2024.03.13

홈서버 구축 일기1 - 하이퍼바이저?

개인 플젝 진행을 위해 서버가 한 대 필요했음 처음에는 클라우드 서버로 편하게 사용하려고 AWS 프리티어로 알아봤는데, 돈이 청구된다고 하더라 이게 완전 무료가 아니고 어디까지 범위는 무료고, 사용하는 서비스가 많아질수록 또 청구되는 금액이 발생하는 모양인데, 그거를 알아보고 완벽하게 관리하기가 너무 어려워보였음 그래서 일반적인 클라우드 서버의 월간 사용료를 알아보니, 최소 사양으로 월평균 6-7만원 정도 나오더라,,, 아직 모아야 할 돈이 많은 사회 초년생인 나에게 저정도 고정지출은 꽤나 타격이 클거라고 생각했음. (넉넉잡아 연 100만원이니,,, 일본을 한 번 더 다녀올 수 있는 금액이었다 ㅡ.ㅡ) 어차피 고사양이 필요한 것도 아니고, 아직까지는 개인 공부용 플젝이기 때문에 집에서 놀고있는 노트북을 ..

개발/네트워크 2024.03.13

Spring에서 외부 API 호출하기(WebClient 사용)

이번에 클라이언트와 내부 서버들의 통신을 위한 중간 서버를 만들기 위해 Spring기반의 서버 내부에서 타 서버로의 API 호출이 필요했다. 가장 최근에 도입된 WebClient 활용 그거 말고는 아래 방식들이 있음 1. HttpURLConnection 스프링이나 외부 라이브러리가 아닌 Java 표준에서 제공하는 HTTP Connection 클래스이다. URLConnection을 상속받고있음 옛날옛적에 사용하던거 2. RestTemplate Spring 3.0부터 도입된 클래스로, 동기적인 HTTP 통신을 위해 쓰인다. 3. WebClient 비동기/논블로킹 방식을 지원 리액티브 프로그래밍이 가능하며 데이터 스트림을 효과적으로 처리할 수 있음 등등... 프로젝트 구조는 다음과 같이 잡아보았다 common..

개발/BE 2024.03.12

[Java] Heap Memory 누수 분석기4 : dump파일 분석(MAT)

이전 글에서 이어집니다 : [Java] Heap Memory 누수 분석기3 : 누수 원인을 분석해보자 - jmap, jhat 그래서 메모리 누수 원인은 뭐였을까? MAT를 통해 뜬 덤프 파일을 분석해보았다. .hprof 파일을 열면 다음과 같이 확인해볼 수 있다. 딱 봐도 저 파란 부분이 메모리를 왕 잡아먹고 있는 것으로 보인다. Leak Suspects라는 탭을 클릭하면 메모리 누수 원인을 MAT가 예측해준다. 역시나 Finalizer가 문제였던 것으로 보인다. 그래서 Finalizer는 뭐냐 ? 메모리 해제/GC를 담당하는 객체이다. (참고링크 : https://ivvve.github.io/2019/06/05/java/ETC/fileiostream-finalizers/) finalize() 메서드가 ..

개발/BE 2024.03.11

[Java] Heap Memory 누수 분석기3 : 누수 원인을 분석해보자 - jmap, jhat

이전 포스팅에서 이어집니다. : [Java] Heap Memory 누수 분석기2 : 모니터링 환경 구축하기 - VisualVM 그래서 VisualVM을 이용하면 로컬 환경에서는 테스트해볼 수 있었는데 사실 그것만으로는 상용 환경에서의 메모리 누수 원인을 확정하기에는 근거가 너무 부족했다. 그래서 jmap 명령어를 이용해서 Heap Dump파일을 생성해보기로 하였다. Heap Dump Heap Dump 뜨는 방법으로 jmap 과 jcmd 가 있음 jmap : GC를 동반하지 않고, 죽은 객체까지 포함하여 인스턴스의 점유율을 보여준다. jcmd 와 같이 full GC를 발생시키고싶으면 -live 옵션을 붙이면 된다 jcmd : Full GC를 발생시킨 후 살아있는 인스턴스의 점유율만 보여줌 처음에는 이 명령..

개발/BE 2024.03.01

백준9934 - 완전 이진 트리(Java)

https://www.acmicpc.net/problem/9934 9934번: 완전 이진 트리 상근이는 슬로베니아의 도시 Donji Andrijevci를 여행하고 있다. 이 도시의 도로는 깊이가 K인 완전 이진 트리를 이루고 있다. 깊이가 K인 완전 이진 트리는 총 2K-1개의 노드로 이루어져 있다. (아래 www.acmicpc.net 재귀 문제를 풀어보았다. 문제는 길지만 정리하면 완전 이진 트리의 값이 주어지고, 이 트리를 레벨별로 출력하는 문제였다. 입력이 항상 완전 이진트리임이 보장되기 때문에, 전위 순회를 진행시키고 방문 순서대로 StringBuilder에 append하는 방식으로 풀어주었다. 높이가 4인 완전 이진 트리를 예시로 생각해보자 전체 노드의 개수는 2^4 - 1 개이다. 루트 노드의..

플밍/문제풀이 2024.03.01
728x90