Java(28)
-
자바의 로봇청소기, 가비지 컬렉션
자바에는 가비지 컬렉션(Garbage Collection) 이라는 기능이 있습니다.영문 뜻으로 짐작할 수 있듯이 사용하는 객체의 메모리를 주기적으로 검사해서 청소해주는 일을 합니다!C와 C++같은 Unmanaged language는 free()와 같은 함수를 사용해서 직접 메모리를 해제하는 반면Garbage Collector는 이러한 번거로운 일을 대신 해주고 있는 것이죠! (like 로봇청소기) ♻ 가비지 컬렉션 ( vs 가비지 컬렉터) 먼저, 헷갈릴 수 있는 두 용어를 정리하고 가겠습니다. 가비지 컬렉션 메모리 관리 프로세스로, 더 이상 사용되지 않는 메모리(객체)를 자동으로 찾아서 회수하는 작업 → 청소가비지 컬렉터가비지 컬렉션을 수행하는 구성요소. 불필요한 메모리를 실제로 찾아내고 해제하는 ..
2024.07.09 -
Spring Security @EnabledWebSecurity 의 동작원리
Spring Security? Spring의 공식문서에 따르면, Spring Security는 강력하고 사용자 정의가 가능한 인증 및 액세스 제어 프레임워크입니다. (Spring 기반 애플리케이션 보안을 위한 사실상의 표준)Java 어플리케이션에 인증 및 권한 부여를 제공하는 데 중점을 둔 프레임 워크라고 할 수 있죠.인증 및 권한 부여에 대한 포괄적이고 확장 가능한 지원세션 고정, 클릭재킹, 크로스 사이트 요청 위조 등과 같은 공격으로부터 보호서블릿 API 통합Spring Web MVC와의 선택적 통합 등… 다양한 특징을 가지고 있습니다! @ 어노테이션 그렇다면 제목의 EnabledWebSecurity앞에 붙어있는 @는 무엇일까요?이해를 위해서는 메타데이터 라는 개념을 짚고 넘어갈 필요가 있습니다! 메..
2024.06.17 -
[Spring Boot] Thymeleaf 경로 변경 & 다중 경로 설정
이 포스팅은 타임리프 템플릿 엔진 사용 시, html등의 파일을 프로젝트 '내부'가 아닌 '외부' (ex. C드라이브)에 두고 관리할 수 있는 방법을 다룬다. Thymeleaf 경로 변경 별도의 설정이 없다면, 기본 경로는 src/main/resources/templates 로 설정된다. 만약 기본 경로값을 바꾸고 싶다면, application.properties 파일에서 간단하게 변경 가능하다. spring.thymeleaf.prefix=classpath:/other-template/ 위와 같이 설정하게 되면, 경로는 src/main/resources/other-template 폴더 안에 들어간 html파일을 기본 경로로 읽을 것이다. Thymeleaf 다중 경로 설정 만약, 기존의 경로를 유지하면서 ..
2022.08.11 -
[Spring Boot] SMS 전송 - NAVER SMS API 연동
진행중인 프로젝트 내에 SMS 서비스를 구현할 일이 생겼다. 개인 공부용 무료 SMS 서비스를 찾다가 NAVER CLOUD PLATFORM에서 지원하는 SMS API 서비스를 알게 됐다. 대부분 coolsms를 많이들 이용했는데 개인적으로 네이버가 친숙한 플랫폼이기도 하고, 매월 50건의 무료메세지 발송 및 첫 가입 시 10만 크레딧을 제공한다고 하여 선택하게 됐다. 해당 크레딧은 네이버 클라우드 플랫폼에서 제공하는 다른 솔루션에도 사용할 수 있으니 유용하게 쓰시길 바란다. (단, 실제로 결제가 가능한 카드를 연동해야 한다.) 또한 네이버에서 API 문서를 잘 구성해놓은 것도 채택에 큰 비중을 차지했다. 따라서 필자는 네이버 클라우드 플랫폼에서 제공하는 NAVER API 가이드에 따라 차근차근 진행해볼 ..
2022.08.10 -
[프로그래머스] 방의 개수-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/49190 코딩테스트 연습 - 방의 개수 [6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3 programmers.co.kr 첫 5단계 문제풀이.. 특별한 알고리즘을 요하지 않지만, 방이 만들어지는 조건과 필요한 변수의 타입을 확실하게 지정해주지 않으면 시간초과나 메모리 초과 이슈가 생긴다. 문제 풀이 먼저, 화살표가 움직인 범위를 사각형(행렬) 기준으로 구해보자. arrows 배열을 쭉 돌며 움직인 방향을 변수에 담는다. 오른쪽 방향이 들어간 화살표(오른쪽 위, 오른쪽, 오른쪽 아래)는 width+1 왼쪽 방향이 들어간 화살표(왼쪽 위, 왼쪽, 왼..
2022.03.23 -
[프로그래머스] 순위-JAVA
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 풀이 과정 필자는 이 문제를 보고 순서대로 로직을 정리해봤다. 1. 선수별 경기 결과를 인접행렬에 저장한다. 선수 1이 선수 2를 이긴 경우, graph[1][2] = 1, 선수 2가 선수 1에게 졌으니 graph[2][1] = 0이 들어간다. 2. 주어진 경기 결과로 구현한 인접행렬을 바탕으로 확정된 순위를 구한다. 선수가 N명일 때, 선수a가 지고, 이긴 경우를 합쳐 N-1인 경우 해당 선수의 순위를 확정지을 수 있다. ex) 선수 2의 경우, 이긴 경기..
2022.03.19