본문 바로가기

전체 글150

스프링 부트 커넥션 풀로 인한 서비스 장애 Jmeter와 서비스 성능테스트를 설명하기 앞서, 해당 툴과 테스트를 진행하게 된 계기에 대한 설명을 하고자 한다!! 최근, 사내 서비스를 개발/운영하는 도중에 갑작스럽게 장애가 발생한 적이 있다. 서비스 인프라 구축은 아래와 같이 3개의 WAS서버가 1개의 DB서버와 통신하고 있다. 그런데, 갑자기 웹과 모바일에서는 DB와의 통신이 잘 이루어지는데 갑자기 백오피스 WAS가 DB와의 커넥션이 안되는 것이다ㅠㅠ... 부리나케 팀에서는 백오피스 에러 로그를 뒤지기 시작했고... 에러 로그는 다음과 같았다. org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is j.. 2024. 3. 7.
IntelliJ 단축키 자주 쓰는 IntelliJ 단축키 Main Method Shift + F10 : 메인 메서드 실행 수정 Ctrl + D : 선택 영역 복사 후 붙여넣기 Ctrl + X : 잘라내기 Ctrl + / : 한 줄 단위 주석 처리 Ctrl + Shift + 방향키 : 블록 단위 코드 이동 Ctrl + Alt + L : 자동 코드 포맷팅 Ctrl + Alt + O : Import 정리(정렬 및 미사용 import 삭제) Shift + F6 : 변수명 전체 변경 검색 Shift + Shift : 전체 파일 및 코드 조회 자동완성 Alt + Enter : 자동 Import 및 Quick Fix Ctrl + Alt + V : 반환 타입 및 변수 자동 생성 Ctrl + Alt + M : Extract Method 자동 .. 2024. 2. 1.
MyBatis - <![CDATA[]]>란 무엇인가?? 이번에 새롭게, 프로젝트 유지보수를 담당하게 되어서, 코드를 해석하던 중에 MyBatis의 쿼리문이 라는 태그로 감싸져 있는 것을 발견하였다. 필자는, 마이바티스 자체를 프로덕트 레벨에서 사용한 것이 아니라, 간단하게 미니 게시판 프로젝트 정도에 이용해본 경험만 있어서 그리 해당 기술에 대한 이해도가 높지 않았다.. :) (한 마디로 그냥 진짜 찍먹만 해봤다.. 라는 뜻..) 그래서 해당 소스코드를 보고 궁금해서 인터넷에 찾아보고 알아보니 아주 중요한 부분이라 블로그로 남긴다.  의 의미 는 간단히 말해서, 해당 태그 내부의 값들을 문자열로 인식한다는 의미이다. 사용 이유 아래의 마이바티스 예제 코드를 한번 살펴보자. SELECT * FROM MEMBER WHERE age >= 30 위의 예제 코드는 .. 2023. 12. 4.
[백준] 17087-숨바꼭질 6-Java ❓문제 [백준] 17087-숨바꼭질 6-Java 🖊️풀이법 실버 2 문제이긴 하나, 간단하게 풀 수 있다. 입력 값들의 정보와 정답이 되어야 하는 값을 살펴보면 쉽게 어떻게 풀어야 할 지 유추할 수 있다. int N = 숨어있는 동생의 명수 int S = 수빈이의 위치 int[] aArr = 동생들이 숨어 있는 위치 여기서, 수빈이가 동생을 찾기 위해서 S + D(이동거리), S-D(이동거리) 로 이동할 수 있다. D의 값은 (수빈이의 위치 - 동생들의 위치)의 최소 공약수 가 될 것이다. 그렇다면, (동생들의 위치 - S(수빈이의 위치))의 절대 값을 구한 뒤에, 값들을 순회하며, 최소공약수를 구해주면 될 것이다.! 정답 코드 import java.io.*; import java.util.*; pub.. 2023. 11. 21.
10월 회고 11월 중순이 지나서야 쓰게 되는 10월 회고이다 :) 오늘 회고글에서는 지난 10월동안 한것과 성장한 점, 아쉬운 점 정도를 스스로 회고하는 시간을 가져볼 예정이다. 10월 간 한 것 동생과 진행한 팀 프로젝트인 DropIn의 프로토타입(?) 정도를 완성했다. 기존에는 도메인이 회원, 게시판, 박스 까지를 프로토타입으로 정의하고 완성하고 싶었지만, 프론트엔드 팀원이 현업이 바쁜 관계로 실제 서비스 구현은 회원, 게시판까지만 완료되었고, 실질적으로 박스 도메인은 백엔드 서버 API만 개발이 완료되었다. 하지만 해당 서비스는 계속해서 고도화나 기획을 통해서 꼭 실제 이용자들이 사용하는 커뮤니티 서비스를 만들 것이다 ㅎㅎ 성장한 점 10월간 공부 및 프로젝트를 하며 성장한 점은 가장 크게 시야가 넓어졌다는 .. 2023. 11. 17.
[백준] 1406-에디터-Java ❓문제 [백준] 1406-에디터-Java 🖊️풀이법 오늘의 문제는 자료구조와 관련되어져 있는 문제 이다. 문제만 놓고 봤을때는 매우 간단한 문제이지만, 설정되어있는 시간 제한과 주어진 테스트 케이스의 최대 값을 보면 해결방법에 관한 컨셉을 잡는데 꽤나 애를 먹었다. 처음 도전할 때는 데이터 중간 삽입 및 수정에 유리한 LinkedList를 사용하여서 별도의 cursor인덱스를 두어 커서 인덱스를 변경하여서 데이터를 수정하는 방식으로 사용하였다. 하지만 이와 같은 방법을 사용하면 시간초과가 난다. 이유는 LinkedList의 add, remove 메서드의 원리 때문이다. LinkedList의 add, remove는 데이터 입출력에 prev와 next의 값을 변경하여 기존의 데이터를 다시 복사해서 입력하.. 2023. 11. 13.