전체 글

테크 블로그입니다. https://github.com/heebum99
[Programmers] 문제 풀이Programmers 기초 문제 Day5, 6코드 처리하기(level 0)문제 설명 :문자열 code가 주어집니다. code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다. mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다. mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 code[idx]의 값에 따라 다음과 같이 행동합니다.mode가 0일 때 - code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다. - code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다.mode가 1일 때 - code[idx]가 "1"이 아니면 idx가 홀수일..
·Spring/기타
Spring Security OAuth2 클라이언트 JWT예제 목표구현 방식인증 : 네이버/구글 소셜 로그인 (코드 방식) 후 JWT 발급인가 : JWT를 통한 경로별 접근 권한인증 정보 DB 저장 후 추가 정보 기입 버전 및 의존성Spring boot 3.xxSpring Security 6.2.2OAuth2 ClientJWT 0.12.3 등 OAuth2.0 코드 방식 인증을 활용하고 JWT는 단일 토큰으로 진행관리를 하지 않고 인증만 받고 사용하는 경우 추가적인 사용자 정보나 어떠한 사용자가 우리의 서비스를 활용하는지 확인할 수 없기에 소셜 로그인을 통해 인증 받은 데이터는 DB에 저장을 한 뒤 관리해야 한다. 예제에서 사용되는 JWT는 2가지백엔드 소셜 로그인 제공 서비스(구글, 네이버) OAut..
[Programmers] 문제 풀이Programmers 기초 문제 Day3, 4, level 1 문제들더 크게 합치기 (level0)문제 설명: 연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.12 ⊕ 3 = 123  3 ⊕ 12 = 312양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.제한사항: 1 ≤ a, b //처음 코드class Solution { public int solution(int a, int b) { int answer = 0; String abStr =..
[Programmers] 문제 풀이Programmers 기초 문제 Day1, Day2 문제 풀이대소문자 바꿔서 출력하기(level 0)문제 설명 :영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.제한사항 :1 ≤ str의 길이 ≤ 20str은 알파벳으로 이루어진 문자열입니다.//처음 코드import java.util.Scanner;public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = sc.next(); int aLen = a..
알고리즘 문제풀이 사이트 : Baekjoon 약 350문제 해결티어 골드2교재 : Do it! 알고리즘 코딩테스트 자바편문제점 : 문제풀이 사이트에서 많은 문제를 풀어봤지만 티어와 해결한 문제 수에 비해서 너무 저조한 실력 이전 공부 방식과 문제풀이 문제점IDE를 사용해서 문제를 풀었기에 실전 코딩테스트 환경과 다르다.실전 코딩테스트에서는 IDE에서 제공하는 자동 완성, 자동 import 등..문제 풀이 시 오래 고민하거나 생각하지 않았다.조금만 어려운 문제에 부딫히면 포기하거나 다른 사람들 / 알고리즘 교재 풀이를 보고 이해해서 풀려고 시도-> 그러다보니 나중에는 스스로 생각을 거의 하지 않고 남들 풀이 과정을 보고 배우려고 함 앞으로의 코딩테스트 문제풀이 목표IDE를 사용하지 않고 최대한 실전 코딩테..
모니터링 메트릭 활용메트릭 등록 - 예제 만들기공통으로 사용되는 기술 메트릭(CPU, 메모리 사용량, 쓰레드...)은 이미 등록되어 있기에 사용해서 모니터링 할 수 있다.비지니스에 특화된 부분들(재고량, 취소수...)과 관련된 비지니스 메트릭이 있으면 비지니스와 관련된 문제들을 빠르게 인지할 수 있다.비지니스 메트릭은 직접 등록하고 확인해야 한다. 비지니스 메트릭을 위한 예제와 정의주문수 / 취소수상품 주문 시 주문수가 증가상품 취소 시 주문수는 유지되지만 취소수가 증가재고 수량상품 주문 시 재고 수량 감소상품 주문 취소 시 재고 수량 증가재고 물량이 들어오면 재고 수량 증가주문수, 취소수는 계속 증가하기에 카운터를 사용재고 수량은 증가하거나 감소하므로 게이지를 사용 public interface Ord..
마이크로미터, 프로메테우스, 그라파나마이크로미터기존에는 사용하던 모니터링 툴을 변경하면 코드까지 모두 변경해야하는 문제가 발생했다.이런 문제를 해결하는 것이 마이크로미터라는 라이브러리이다.개발자는 마이크로미터 표준 측정 방식만 알고 있으면 변환해서 전달해준다. 마이크로미터 : 애플리케이션 메트릭 파사드라고 불리며 애플리케이션의 메트릭(측정 지표)을 마이크로미터가 정한 표준 방법을 모아서 제공해준다.추상화를 통해서 구현체를 쉽게 갈아끼울 수 있도록 해뒀다.스프링 부트 액츄에이터는 마이크로미터를 기본으로 내장해서 사용한다.개발자는 마이크로미터가 정한 표준 방법으로 메트릭을 전달하고 모니터링 툴에 맞는 구현체를 선택하면 된다.모니터링 툴이 변경되어도 구현체만 변경하면 된다.메트릭 확인하기스프링 부트는 마이크로..
액츄에이터프로덕션 준비 기능프로덕션 준비 기능 : 운영 환경에서 서비스할 때 필요한 기능들프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적 요소들을 의미지표(metric), 추적(trace), 감사(auditing), 모니터링ex) 애플리케이션이 살아있는지, 로그 정보는 정상 출력되는지, 커넥션 풀 사용 현황 등.. 엑츄에이터 : 프로덕션 준비 기능을 편리하게 사용할 수 있도록 스프링 부트가 제공하는 기능마이크로미터, 프로메테우스, 그라파나 같은 모니터링 시스템과 쉽게 연동하는 기능도 제공액츄에이터 시작implementation 'org.springframework.boot:spring-boot-starter-actuator' //actuator 추가build.gradle 의존성 추가액츄에이터가 제공..
외부설정과 프로필외부 설정 사용 - Environment스프링은 Environment를 활용해서 더 편리하게 외부 설정을 읽는 방법을 제공한다.스프링이 지원하는 다양한 외부 설정 조회 방법Environment@Value - 값 주입@ConfigurationProperties - 타입 안전한 설정 속성 @Slf4jpublic class MyDataSource { private String url; private String username; private String password; private int maxConnection; private Duration timeout; private List options; public MyDataSource(String ur..
외부설정과 프로필외부 설정이란하나의 애플리케이션을 여러 다른  환경에서 사용해야할 때가 있다.개발 환경 : 개발이 잘 진행되고 있는지 내부에서 확인하는 용도개발 서버 -> 개발 DB운영 환경 : 실제 고객에게 서비스하는 용도운영 서버 -> 운영 DB각 환경에 따라서 다른 설정 값이 존재한다.ex) 서로 다른 DB를 사용하기에 DB 설정 값(url ...)이 존재한다. 환경에 따라 값을 설정하는 방법환경에 따라 변하는 설정 값을 내부에 포함하는 방법환경에 따라 빌드를 여러번 해야한다.빌드 결과물이 서로 다르고 유연성이 떨어진다.실행 시점에 외부 설정값을 주입하는 방법 (주로 사용하는 방식)환경과 무관하게 하나의 빌드 결과물을 생성설정 값은 각 환경에 맞게 실행 시점에 외부에서 주입한다.  실행 시점에 외부..
h2boom
희스토리