본문 바로가기

전체 글27

[백준] 힙, 해시 테이블 (19638, 1927, 14235, 9375) 자동목차센티와 마법의 뿅망치(19638)import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int n = Integer.parseInt(st.next.. 2024. 9. 26.
[백준] 스택, 큐 문제들 (10828, 1406, 1966, 1158) 자동목차스택(10828)import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); Stack stack = new Stack(); while (n-- > 0) { String[] command = b.. 2024. 9. 25.
쿼리 최적화 및 MultipleBagFetchException 해결하기 자동목차배경예전에 했었던 팀 프로젝트 코드를 복기하기 위해 로컬에서 프로젝트를 돌려봤습니다.먼저 서버를 구동시키고 포스트맨으로 회원가입, 로그인부터 시작해서 일정 생성, 조회 등등을 해봤습니다.그런데 일정 한 건을 조회하는 api를 포스트맨으로 돌려보고 서버 로그를 보니 무려 5번의 쿼리가 작동 했습니다.해당 api는 팀 프로젝트 당시 제가 맡은 구현파트가 아니라 다른 팀원분께서 구현을 하셨었습니다.일정 한 건을 조회하는데 5개의 쿼리가 작동하는 것을 개선할 수 있지 않을까 생각하여팀원분이 작성하신 코드를 보며 리팩토링을 해보기로 결심했습니다.본론일정 테이블과 이에 연관된 테이블들은 아래와 같이 설계되어있습니다.계획 - 세부일정 1:N세부일정 - 장소 1:N장소 - 장소 세부정보 1:1각 테이블들을 설명.. 2024. 9. 20.
[Spring] OAuth Client로 네이버 로그인 구현하기 자동목차OAuth 2.0OAuth 2.0은 표준화된 규칙과 절차를 정의한 프로토콜입니다.애플리케이션 간의 인증 및 권한 부여를 위한 상호 작용을 명확하게 규정하고 클라이언트(사용자가 이용하는 서비스 애플리케이션)가 자원 소유자(사용자)의 자원에 접근할 수 있도록 허용하는 방법을 정의합니다.주로 간편 로그인을 할 때 사용됩니다.(ex. 카카오 로그인, 네이버 로그인 등)역할Resource Owner - 자원을 소유하고 있는 사람입니다. 서비스 애플리케이션을 사용하는 실제 사용자입니다.Client - 서비스 애플리케이션 서버입니다. 리소스 서버(구글, 네이버 등)로 Resource Owner의 인증 인가를 요청 하기때문에 리소스 서버의 입장에서 보는 관점으로 클라이언트입니다.Resource Server & .. 2024. 9. 3.
API Versioning 자동목차API Versioning 의 필요성하위 호환성 유지API를 사용하는 사용자는 특정 API 인터페이스에 의존하게 됩니다. 만약 API가 변경되거나 새로운 기능이 추가되면서 기존의 인터페이스가 변경된다면 하위 호환성을 유지하지 않으면 기존 클라이언트에서 오류가 발생할 수 있습니다.버전 관리를 통해 이전 버전의 API를 유지하면서 새로운 기능을 추가한 버전을 제공할 수 있습니다.점진적인 기능 개선API는 시간이 지남에 따라 개선되고 확장됩니다. 새로운 기능을 추가하거나 성능을 개선하거나 보안을 강화하는 등의 작업이 필요할 때 버전 관리를 통해 단계적으로 새로운 버전을 릴리스할 수 있습니다. 이를 통해 클라이언트는 자신에게 필요한 시점에 새 버전을 선택적으로 사용할 수 있습니다.기존 클라이언트 지원다양.. 2024. 9. 2.
[트러블슈팅] 유효성 검증 테스트 중에 오류 개인 프로젝트를 진행중, 유저의 전화번호 필드 검증 테스트를 하는데 오류가 발생했다.@Import(ValidationConfig.class)class UserRepositoryTest extends TestcontainersConfiguration { @Autowired private UserRepository userRepository; @Autowired Validator validator; @BeforeEach void setUp() { userRepository.deleteAll(); } @Test @DisplayName("DB에 유저 save 실패 - 전화번호 기입 시 \"-\" 기호 미기입") void saveFailByWron.. 2024. 7. 26.