분류 전체보기
-
프로그래머스 - 안전지대알고리즘 2024. 4. 5. 20:54
class Solution { public int solution(int[][] board) { int answer = 0; for(int i = 0; i < board.length; i++) { for(int j = 0; j < board.length; j++) { if(board[i][j] == 1) danger(board, i, j); } } for(int i = 0; i < board.length; i++) { for(int j = 0; j < board.length; j++) { if(board[i][j] == 0) answer++; } } return answer; } public void danger(int[][] board, int x, int y) { for(int i = -1; i
-
프로그래머스 - 다항식 더하기알고리즘 2024. 4. 5. 01:29
import java.util.*; class Solution { public String solution(String polynomial) { StringBuilder sb = new StringBuilder(); int var = 0; int con = 0; List variables = new ArrayList(); List constants = new ArrayList(); for(String s : polynomial.split(" ")) { if(s.contains("x")) { s = s.replace("x", ""); if(s.equals("")) variables.add(1); else variables.add(Integer.parseInt(s)); } else if(s.contains(..
-
Github Actions Build 에러트러블슈팅 2024. 3. 15. 09:08
원인 Github으로 CI를 진행하는 과정에서 빌드가 되지 않는 문제. 아래와 같은 오류가 발생. import org.hh99.tmomi.global.exception.GlobalException; ^ > Task :tmomi-consumer:compileJava FAILED /home/runner/work/tmomi-project/tmomi-project/tmomi-consumer/src/main/java/org/hh99/tmomi_consumer/global/util/ReservationQueue.java:7: error: package org.hh99.tmomi.global.exception.message does not exist import org.hh99.tmomi.global.exceptio..
-
대용량 데이터 생성 후 저장, OutOfMemoryError트러블슈팅 2024. 3. 15. 07:26
원인 행사장의 좌석의 수(3,000,000)만큼 데이터 생성 시 , java.lang.OutOfMemoryError thrown from the UncaughtExceptionHandler in thread "http-nio-5000-Acceptor” 가 발생. [ 데이터 생성 코드 ] @Transactional public void createEventTimes(EventTimesRequestDto eventTimesRequestDto, Long eventId) { Event event = eventRepository.findById(eventId) .orElseThrow(() -> new GlobalException(HttpStatus.NOT_FOUND, ExceptionCode.NOT_EXIST_E..
-
Redis Repository를 사용했을 때 ttl이 끝나도 모두 삭제되지 않는 에러트러블슈팅 2024. 2. 22. 04:01
@Id값만 TTL로 사라지고 그 외에는 남아있는 문제가 발생 Redis Repository Hash말고 Set도 저장이 됨 기본적으로 @RedisHash에서 @Id 어노테이션이 적용된 key에 대해서만 ttl 기능이 동작한 @RedisHash를 통한 RedisRepository 방식에서는 Set에서 secondary index 데이터를 삽입 및 제거하며 index를 유지 관리하는데, 이때 index 정리가 수행되기 위해서는 keyspace events가 탐지되어야 하며, keyspace events에 대한 설정이 되어 있어야 한다고 합니다. 이를 해결하기 위해 @EnableRedisRepositories(enableKeyspaceEvents = RedisKeyValueAdapter.EnableKeyspa..
-
refresh token redis로 구현하기Spring 2024. 2. 22. 03:48
로그인할 때 access token을 생성하고, access token을 이용하여 redis에 key값으로 저장하여 refresh token을 구현했습니다. jwt token 발급 flow 클라이언트에서 로그인한다. 서버는 클라이언트에게 Access Token과 Refresh Token을 발급 Access Token은 사용자 쿠키에 저장, Refresh Token은 key값을 email로 redis에 저장 요청마다 cookie에 있는 access token을 검증 이 때, Access Token이 만료가 되면 Redis에 index인 access Token로 검색하여 refresh token이 있는지 확인 서버는 Refresh Token 유효성 체크를 하게 되고, 새로운 Access Token을 발급하며..
-
Docker카테고리 없음 2024. 2. 22. 02:02
Docker를 들어본 적은 많았지만, 왜 써야하는지 어떤 기능을 하는지에 대해 알지 못 했다. CI/CD를 공부하면서 Docker의 역할에 대해 알고자 정리합니다. Docker? 컨테이너화 기술을 사용하여, 애플리케이션을 더 쉽게 개발, 배포, 실행할 수 있도록 하는 플랫폼입니다. 간단하게 하면 가상의 리눅스 컴퓨터를 이용하여 각각의 어플리케이션을 독립적으로 실행시켜주는 기술입니다. VM(Virtual Machine)과의 차이 docker와 VM 둘 다 애플리케이션을 격리된 환경에서 실행할 수 있게 하는 가상화 기술이지만, 그 구조와 작동 방식에는 몇 가지 중요한 차이점이 있습니다. VM 각각의 독립된 OS를 가지므로, 물리적인 메모리, CPU등의 자원을 할당 받으므로 자원 소모가 발생하여 결국 이미지의..