전체 글 59

Rotate Array

배열 회전 Rotate Array - LeetCode Can you solve this real interview question? Rotate Array - Given an integer array nums, rotate the array to the right by k steps, where k is non-negative. Example 1: Input: nums = [1,2,3,4,5,6,7], k = 3 Output: [5,6,7,1,2,3,4] Explanation: rotate 1 step leetcode.com 정수 배열이 주어지면 nums배열을 단계적으로 오른쪽으로 회전합니다 k. 여기서 k는 음수가 아닙니다. 예시 1: 입력: nums = [1,2,3,4,5,6,7], k = 3 출력:..

알고리즘 2023.08.25

Remove Duplicates from Sorted Array

정렬된 배열에서 중복 제거 Remove Duplicates from Sorted Array - LeetCode Can you solve this real interview question? Remove Duplicates from Sorted Array - Given an integer array nums sorted in non-decreasing order, remove the duplicates in-place [https://en.wikipedia.org/wiki/In-place_algorithm] such that each unique element ap leetcode.com 비내림차순nums 으로 정렬된 정수 배열이 주어 지면 각 고유 요소가 한 번만 나타나도록 중복 항목을 제자리에서 제거합..

알고리즘 2023.08.24

Best Time to Buy and Sell Stock

주식을 사고 파는 가장 좋은 시기 Best Time to Buy and Sell Stock - LeetCode Can you solve this real interview question? Best Time to Buy and Sell Stock - You are given an array prices where prices[i] is the price of a given stock on the ith day. You want to maximize your profit by choosing a single day to buy one stock and choosin leetcode.com 해당 날짜의 특정 주식 가격을 나타내는 prices배열 이 제공됩니다 .prices[i]ith 특정 주식을 구매할 하루..

알고리즘 2023.08.23

Jump Game

점프 게임 Jump Game - LeetCode Can you solve this real interview question? Jump Game - You are given an integer array nums. You are initially positioned at the array's first index, and each element in the array represents your maximum jump length at that position. Return true if you can leetcode.com 정수 배열이 제공됩니다 nums. 처음에는 배열의 첫 번째 인덱스 에 위치하며 배열의 각 요소는 해당 위치에서의 최대 점프 길이를 나타냅니다. true마지막 인덱스에 도달할 수 있으..

알고리즘 2023.08.22

DB Connection pool을 사용해야하는 이유와 이점

Connection Pool 이란? Connection Pool 이 무엇인지 아주 쉽게 기억하는 방법은 단어 그대로 해석하는 것이다. 즉, Connection들의 pool(웅덩이)라는 것이다. 먼저 Connection Pool 을 사용하지 않는 웹 애플리케이션의 처리과정을 살펴보자. 웹 애플리케이션은 클라이언트의 HTTP 요청이 들어오면 쓰레드를 생성한다. 대부분의 비지니스 로직에서는 DB서버로부터 데이터를 얻어서 그 요청을 처리하게 된다. DB서버로부터 데이터를 얻기 위해서는 물리적으로 DB서버에 지속적으로 접근하는 작업이 필요하다. String driverPath = "shop.pointman.jdbc.Driver"; String address = "jdbc:jtds:sqlserver:127.0.0...

Java 2023.05.03

@PostConstruct와 @Value 그리고 bean life cycle 관하여

@Value의경우 appilcation.property의 값을 의존성 주입단계에서 필드주입방식으로 값을 할당한다 아래와 같이 생성자를 통하여 headers에 값을 주려고하면 빈생성 단계에서 해당된 값을 아직 주입 받지 않아서 null값이 할당 되고 그후 @Value를 통해 필드 주입이 되기 때문에 의도한 대로 작동하지 않는다. @Component @Getter @Setter @ToString public class HeadersDto { @Value("${headers.remote_token}") private String remote_token; @Value("${headers.Cookie}") private String Cookie; private String timestamp; @Value("${h..

Spring 2023.04.03

[node.js]커넥션 수에 따른 속도차이 (속도개선,createPool)

서비스 중 속도가 느리다는 요청을 받았다. Spring의 Tomcat을 포함한 대다수의 웹 서버는 멀티 스레드 방식을 따르고 Client의 요청이 있을 때마다 Thread를 생성하여 해당 요청을 처리한다고 한다. 하지만 node에 경우 싱글 스레드 방식을 따르고 그렇기 때문에 하나의 스레드가 모든 요청을 처리하기 위해 비동기 방식을 지원한다. 이미지와 같이 동시에 요청이 들어오면 요청1이 끝나고 요청2가 실행되는 방식이 아닌 모든 요청을 일단은 실행후 완료된 순서대로 응답을 한다. 여기서 속도가 느린 원인을 발견했다. 현재 서비스의 커넥션은 1개로 운영하고 있는데 1개의 커넥션이 실행되는 동안 다른 요청이 들어오면 커넥션이 반납 시기까지 대기 후 실행하게 되어 시간지연이 발생하는 것이었다. 이미지와 같이..

트러블슈팅 2023.03.29

[node.js]PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR 에러 원인 및 해결

서비스 중 인증이 안된다는 요청이 들어왔습니다. 그리하여 로그 확인 결과 노드 서버에서 PROTOCOL_ENQUEUE_AFTER_FATAL_ERROR 라는 로그가 찍혀있었고 검색 결과 DB커넥션이 끊겨있는 상태에서 query요청을 하여 발생한 에러로 확인하였습니다. 그리하여 DB서버에서 현재 연결된 커넥션을 조회(SHOW processlist;) 결과 총 7개의 커넥션이 있어야하는데 2개의 커넥션만 연결되어 있는 것을 확인하였습니다. 리눅스 WAS서버에서 node서버를 재시작하기 위해 pm2 restart all을 하여 서버를 재시작 하였습니다. 재시작 후 DB 커넥션 조회를 하였을때 7개의 커넥션이 연결되어 있는 것을 확인하였고 pm2 restart 후 서비스가 정상적으로 작동하는 것까지 확인하였습니다..

트러블슈팅 2023.03.29

[spring]@Value와 빈 생명주기(Bean LifeCycle)

API 개발 프로젝트를 진행하는 도중 application.properties를 이용하여 상수관리를 하였다. API마다의 header객체를 하나로 만들어 공유하도록 설계를 진행했다. @ToString public class Header { private Map header; public Header(String remote_token, String Cookie, String client_id, String swap_key) { this.header = new HashMap(); this.header.put("remote_token",remote_token); this.header.put("Cookie",Cookie); this.header.put("client_id",client_id); this.hea..

트러블슈팅 2023.03.02

[php]UTF-8 BOM 이슈 원인 및 해결

프로젝트를 진행하며 php api를 만들었습니다. 결과값을 확인하기 위해 POSTMAN을 이용하여 테스트를 진행 하고 있었습니다 값은 의도한 대로 json으로 리턴한 것을 확인하였습니다. 하지만 javascript에서 ajax로 호출하였는데 json parse 에러가 발생했습니다. 응답 header도 로그로 찍어서 확인결과 content-type: application/json 인것을 확인 하였습니다. 왜 json을 파싱을 못하는 것일까... 그래서 직접 url로 직접 접근해서 json을 받아서 json validation 체크를 해보았습니다. https://jsonformatter.curiousconcept.com/# JSON Formatter & Validator Format and validate ..

트러블슈팅 2023.02.23