전체 글

교양이란 화를 내지 않으면서도 자신의 신념을 잃지 않은 채 어떤 얘기라도 들을 수 있는 능력을 말한다 - 로버트 프로스트
·DB
2024년 MariaDB 11.4 버전을 설치해서 사용하다가 root 비밀번호를 분실하여 비밀번호 초기화 방법을 작성한다. 1. 실행중인 MariaDB 중지작업관리자의 서비스 탭에서 MariaDB를 찾은 후 중지시킨다. 2. 권한 테이블 무시하도록 설정윈도우 커맨드에서 mysqld --skip_grant_tables 명령어를 입력하여 권한 테이블을 무시하고 시작하도록 한다. 만약 mysqld 명령어에서 오류가 발생한다면 MariaDB가 설치된 경로(ex: C:\Program Files\MariaDB 11.4\bin)를 환경변수에 추가하거나 커맨드에서 MariaDB가 설치된 경로로 이동하여 mysqld.exe --skip-grant-tables 명령어를 실행한다. 3. 비밀번호 변경윈도우 커맨드를 1개..
·백준
DP 문제 풀이 팁을 유튜브로 찾아보던 중 '개발자로 취직하기' 유튜버님의 DP 문제해설 영상을 보게 되어 해당 문제를 풀게 되었다. 해설 영상을 기존에 봤기 때문에 해당 문제에 대해 다시 정리한다. 풀이 접근4. 2개 이상 전구들 간의 최솟값 계산1. 입력 받은 숫자를 전구 배열에 추가 - 입력 받은 숫자가 연달아 입력되는 경우 색상 변경 시 일괄 변경되므로 추가하지 않음2. 전구 배열에 추가된 숫자 개수만큼 DP 배열 크기 설정3. DP 배열 최댓값으로 초기화(나중에 최솟값 비교) - |1,1|2,2|3,3|4,4|5,5| 0으로 세팅 최솟값 계산 기준 먼저 인접해 있는 동일한 수를 모두 배제한 전구 배열(lamp)에 5개의 요솟수가 있다고 가정한다.이후 1개부터 5개로 분할하여 나온 묶음에서 하..
·MSA
개발 환경Spring Boot : 3.3.0Spring Cloud : 2023.0.2 (Spring Boot 3.X 버전과 호환)spring-boot-starter-data-redis-reactive : 3.3.0Redis : 7.4.1 일을 하던 중간에 서비스 과부하 방지를 위해 사용자별 API 요청에 대한 속도 조절 및 요청 제한 기능을 요청받아 구현하는 방식을 알아보던 중 API Rate Limiting 또는 처리율 제한 장치라고 불리는 것을 알게 되었다. 그렇게 일을 하면서 구현한 RateLimit는 bucket4j 라이브러리를 사용하여 OncePerRequestFilter를 상속받아 구현하였고 개인적으로 진행하고 있는 프로젝트(MSA)에도 적용하기 위해 알아보던 중 Spring Cloud에서는 ..
·백준
퇴근할 때쯤 디자이너 선임님께서 15퍼즐이라는 문제와 해당 문제를 풀 때 사용하는 A-Star 알고리즘을 알고 있냐고 물어봤다. 처음 들어봐서 공부도 할 겸 백준에서 검색을 해보니 비슷한 문제가 나와서 위 문제를 풀려고 했는데 뭔가 이상했다. 문제를 읽었을 때는 선임님에게 들은 내용(퍼즐이 움직이는 것)과 다르게 단순히 각 정사각형이 이동해야 하는 거리만 계산하면 해결되는 문제라고 느꼈지만... 이것도 이 문제와 인연이겠지 하면서 그냥 풀었다.  풀이퍼즐에서 각 정사각형 문자와 'A' 문자를 빼서 얻은 정수는 다음과 같다.[ 각 문자 - 'A' 값 ]A: 0B: 1C: 2...O: 14이렇게 보면 현재 위치에 있는 숫자를 4로 나눈 값이 x이고 4로 나눈 나머지 값이 y인 규칙이 하나 보인다. 현재 위치..
·Spring Boot
개요어느 날 갑자기 build가 잘 되던 프로젝트에서 아래와 같은 오류가 발생했다.C:\Users\사용자명\Desktop\MSA\apigateway-service\.gradle\8.8\dependencies-accessors\c57b72d5865076079ac504978cca2fdf2d4aae53\metadata.bin 파일을 찾을 수 없습니다. 해당 문제를 해결하기 위해 구글링을 해봤을때 검색된 방법은 다음과 같았다. C:\Users\사용자명\.gradle\caches 폴더를 삭제한다.사용중인 IDE의 cache를 삭제한다.해당 프로젝트를 다시 import 한다.( intellij 기준 ) Reload from disk, Repair IDE on file을 실행한다.4가지 방법을 모두 해봤으나 필자는 ..
·백준
개요위 문제는 최대 연산의 수(M)가 3,000,000이기 때문에 반복문을 사용하면 안될 것 같아 HashMap 자료구조를 사용하여 문제를 해결하였다. 해당 문제를 해결한 후 다른 사람들이 어떤 방식으로 풀었는지 확인할 결과 비트마스크 알고리즘을 사용하여 푼 방식이 존재하여 필자는 아래 2가지 방법으로 문제를 풀어보았다. 성공소스1. HashMap 사용add: map의 containsKey와 put 메서드를 사용하여 x값을 추가한다.remove: map의 remove 메서드를 사용하여 x값을 제거한다.toggle: map의 containsKey 메서드와 put, remove 메서드를 활용한다.all: 반복문을 사용하여 1 ~ 20을 map에 put한다.empty: map의 clear 메서드를 사용한다.참..
·Spring Batch
chunk 방식의 Step을 사용하여 batch 소스를 작성하던 중 Step 간 데이터 공유가 필요한 상황이 생겨 해당 문제를 처리한 방법을 작성한다. // 배치 버전spring-batch-core:5.1.0spring-boot-starter-batch:3.2.0  Spring 공식 문서에서는 Step ExecutionContext에 데이터를 저장 후 꺼내어 사용하라고 권장하고 있고 내가 작업한 순서는 다음과 같다. 1. StepExecutionListener 구현 및 StepExecution 세팅나는 Step ExecutionContext 객체를 사용하기 위해 StepExecution 객체가 필요했고 해당 객체를 가져오기 위해 스텝 작업 전후를 확인할 수 있는 StepExecutionListener 인..
·MSA
Spring Cloud Gateway(SCG)란?Spring Cloud Gateway는 Spring 기반의 API Gateway이며 클라이언트와 마이크로서비스 사이의 중계기 역할을 한다. API 게이트웨이는 마이크로서비스의 앞에서 클라이언트로부터 모든 요청을 일괄적으로 전달받아 처리하기 때문에 엔드포인트를 단일화할 수 있다는 장점이 있다.  위 이미지를 보면 마이크서비스가 현재는 3개가 있지만 새로운 마이크로서비스가 추가되거나 어떤 마이크로서비스에 주소가 변경되었다고 하면  클라이언트 애플리케이션 측에서도 수정하고 배포하는 과정이 추가적으로 필요하다.이렇다 보니 단일 진입점 형태의 개발이 필요해서 API Gateway를 사용하게 되었다고 한다.   API 게이트웨이를 사용하면 각각의 마이크로서비스로 요청..
masjeong
나자바바라쿠배